{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 配置分区" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:\n", "c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas.EL2C6PLE4ZYW3ECEVIV3OXXGRN2NRFM2.gfortran-win_amd64.dll\n", "c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas64__v0.3.21-gcc_10_3_0.dll\n", " warnings.warn(\"loaded more than 1 DLL from .libs:\"\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "' textField_ku0wvx8n ': data[ \"服务单号\" ][i],# \"服务单号\"\n", "' selectField_ku0wvx8q ': data[ \"服务单评价状态\" ][i],# \"服务单评价状态\"\n", "' orderId ': data[ \"订单编码\" ][i],# \"订单编码\"\n", "' orderPayTime ': data[ \"订单支付时间\" ][i],# \"订单支付时间\"\n", "' orderCellphone ': data[ \"订单手机号码\" ][i],# \"订单手机号码\"\n", "' impPrincipal ': data[ \"培训负责人\" ][i],# \"培训负责人\"\n", "' employeeField_kyi1dqth ': data[ \"专属运营顾问\" ][i],# \"专属运营顾问\"\n", "' saasEdition ': data[ \"购买版本\" ][i],# \"购买版本\"\n", "' selectField_ku6juya0 ': data[ \"ERP操作模式\" ][i],# \"ERP操作模式\"\n", "' relatedInstances ': data[ \"关联服务单\" ][i],# \"关联服务单\"\n", "' orgCode ': data[ \"门店编码\" ][i],# \"门店编码\"\n", "' orgName ': data[ \"门店名称\" ][i],# \"门店名称\"\n", "' openTime ': data[ \"开户时间\" ][i],# \"开户时间\"\n", "' groupName ': data[ \"公司名称\" ][i],# \"公司名称\"\n", "' textField_kyi1dqtj ': data[ \"客户等级\" ][i],# \"客户等级\"\n", "' orgNumber ': data[ \"门店数量\" ][i],# \"门店数量\"\n", "' orgLevel ': data[ \"门店类型\" ][i],# \"门店类型\"\n", "' canConnect ': data[ \"是否联系上客户\" ][i],# \"是否联系上客户\"\n", "' canNotConnectReason ': data[ \"无法联系上的原因\" ][i],# \"无法联系上的原因\"\n", "' canNotConnectRemark ': data[ \"联系不上其他原因备注\" ][i],# \"联系不上其他原因备注\"\n", "' connectUserName ': data[ \"系统对接人姓名\" ][i],# \"系统对接人姓名\"\n", "' connectUserCellphone ': data[ \"系统对接人电话\" ][i],# \"系统对接人电话\"\n", "' bossName ': data[ \"老板姓名\" ][i],# \"老板姓名\"\n", "' bossCellphone ': data[ \"老板电话\" ][i],# \"老板电话\"\n", "' needTraining ': data[ \"是否需要培训\" ][i],# \"是否需要培训\"\n", "' needNotTrainingReason ': data[ \"不需要培训原因\" ][i],# \"不需要培训原因\"\n", "' needNotTrainingRemark ': data[ \"不培训其他原因备注\" ][i],# \"不培训其他原因备注\"\n", "' traningTime ': data[ \"预计培训时间\" ][i],# \"预计培训时间\"\n", "' overtimeTrainingReason ': data[ \"7天后培训原因\" ][i],# \"7天后培训原因\"\n", "' overtimeTrainingRemark ': data[ \"超期培训其他原因说明\" ][i],# \"超期培训其他原因说明\"\n", "' radioField_l1mxwjvv ': data[ \"是否需要处理数据\" ][i],# \"是否需要处理数据\"\n", "' radioField_l1mxwjvw ': data[ \"不需要处理原因\" ][i],# \"不需要处理原因\"\n", "' textField_l1mxwjvx ': data[ \"期初不需要导入其他原因\" ][i],# \"期初不需要导入其他原因\"\n", "' needMigrate ': data[ \"是否需要他人协助处理数据\" ][i],# \"是否需要他人协助处理数据\"\n", "' employeeField_kycexk2w ': data[ \"数据处理人\" ][i],# \"数据处理人\"\n", "' radioField_l343kc2a ': data[ \"是否使用推荐材料包?\" ][i],# \"是否使用推荐材料包?\"\n", "' radioField_l343kc2b ': data[ \"不推荐使用材料包的原因\" ][i],# \"不推荐使用材料包的原因\"\n", "' textField_l343hemd ': data[ \"不推荐使用材料包其他原因\" ][i],# \"不推荐使用材料包其他原因\"\n", "' chain ': data[ \"本次上线是否为连锁\" ][i],# \"本次上线是否为连锁\"\n", "' radioField_l9ns7o3j ': data[ \"是否引导客户在全配中下单\" ][i],# \"是否引导客户在全配中下单\"\n", "' textField_l9nsqj7y ': data[ \"未下单原因\" ][i],# \"未下单原因\"\n", "' attachmentField_l9ns7o3k ': data[ \"订单截图\" ][i],# \"订单截图\"\n", "' radioField_kzhqbukp ': data[ \"是否有意向开通企业钱包\" ][i],# \"是否有意向开通企业钱包\"\n", "' dateField_l1mxplyy ': data[ \"预计企业钱包开通时间\" ][i],# \"预计企业钱包开通时间\"\n", "' radioField_l1mxplyz ': data[ \"未开通企业钱包原因\" ][i],# \"未开通企业钱包原因\"\n", "' textField_l1mxplz0 ': data[ \"未开通企业钱包其他原因\" ][i],# \"未开通企业钱包其他原因\"\n", "' researchTable ': data[ \"调研计划表\" ][i],# \"调研计划表\"\n", "' smallUsers ': data[ \"小店系统人员\" ][i],# \"小店系统人员\"\n", "' bigUsers ': data[ \"中大店人员岗位\" ][i],# \"中大店人员岗位\"\n", "' hqUsers ': data[ \"总部人员岗位\" ][i],# \"总部人员岗位\"\n", "' businessScopeList ': data[ \"门店经营范围\" ][i],# \"门店经营范围\"\n", "' maintainProcess ': data[ \"维保流程\" ][i],# \"维保流程\"\n", "' diyProcess ': data[ \"自定义流程\" ][i],# \"自定义流程\"\n", "' watchProcess ': data[ \"洗美流程\" ][i],# \"洗美流程\"\n", "' memberManagement ': data[ \"会员管理业务\" ][i],# \"会员管理业务\"\n", "' financialManagement ': data[ \"财务管理业务\" ][i],# \"财务管理业务\"\n", "' achievementManagement ': data[ \"员工业绩管理\" ][i],# \"员工业绩管理\"\n", "' biManagement ': data[ \"数据统计需求\" ][i],# \"数据统计需求\"\n", "' radioField_kv60wxu1 ': data[ \"技术专家是否支持\" ][i],# \"技术专家是否支持\"\n", "' technician ': data[ \"技术专家\" ][i],# \"技术专家\"\n", "' adminTraining ': data[ \"管理员培训内容\" ][i],# \"管理员培训内容\"\n", "' aVersionTraining ': data[ \"A版本岗位培训\" ][i],# \"A版本岗位培训\"\n", "' managerTraining ': data[ \"店长培训\" ][i],# \"店长培训\"\n", "' saTraning ': data[ \"SA培训内容\" ][i],# \"SA培训内容\"\n", "' stockTraining ': data[ \"库管培训内容\" ][i],# \"库管培训内容\"\n", "' cashTraining ': data[ \"收银培训内容\" ][i],# \"收银培训内容\"\n", "' mechanicTraining ': data[ \"技师培训内容\" ][i],# \"技师培训内容\"\n", "' orgOperator ': data[ \"门店运营\" ][i],# \"门店运营\"\n", "' supplyChain ': data[ \"供应链\" ][i],# \"供应链\"\n", "' marketing ': data[ \"市场营销\" ][i],# \"市场营销\"\n", "' customerService ': data[ \"客服\" ][i],# \"客服\"\n", "' financial ': data[ \"财务\" ][i],# \"财务\"\n", "' basicSetting ': data[ \"基础设置\" ][i],# \"基础设置\"\n", "' radioField_kw4byqii ': data[ \"材料编码是否允许自动生成\" ][i],# \"材料编码是否允许自动生成\"\n", "' paramSetting ': data[ \"参数设置\" ][i],# \"参数设置\"\n", "' authSetting ': data[ \"员工权限设置\" ][i],# \"员工权限设置\"\n", "' achievementSetting ': data[ \"业绩规则是否已设置\" ][i],# \"业绩规则是否已设置\"\n", "' tagRuleSetting ': data[ \"标签规则设置\" ][i],# \"标签规则设置\"\n", "' vipTemplateSetting ': data[ \"会员卡模板设置\" ][i],# \"会员卡模板设置\"\n", "' remindRuleSetting ': data[ \"服务提醒规则设置\" ][i],# \"服务提醒规则设置\"\n", "' returnVisitRuleSetting ': data[ \"客户回访规则设置\" ][i],# \"客户回访规则设置\"\n", "' wechatSetting ': data[ \"公众号是否已配置\" ][i],# \"公众号是否已配置\"\n", "' wechatMallSetting ': data[ \"微信商城配置\" ][i],# \"微信商城配置\"\n", "' groupId ': data[ \"公司id\" ][i],# \"公司id\"\n", "' orgId ': data[ \"门店id\" ][i],# \"门店id\"\n", "' manager ': data[ \"区域经理\" ][i],# \"区域经理\"\n", "' numberField_kwmxkjav ': data[ \"距培训完成时间天数\" ][i],# \"距培训完成时间天数\"\n", "' connectTime ': data[ \"调研完成时间\" ][i],# \"调研完成时间\"\n", "' trainFinishTime ': data[ \"培训完成时间\" ][i],# \"培训完成时间\"\n", "' predictResearchDays ': data[ \"距调研时间天数\" ][i],# \"距调研时间天数\"\n", "' beforeTrainDays ': data[ \"距预计培训时间的天数\" ][i],# \"距预计培训时间的天数\"\n", "' region ': data[ \"大区\" ][i],# \"大区\"\n", "' subRegion ': data[ \"小区\" ][i],# \"小区\"\n", "' province ': data[ \"省\" ][i],# \"省\"\n", "' city ': data[ \"市\" ][i],# \"市\"\n", "' dateField_ku0wvx8l ': data[ \"服务单跟进时间\" ][i],# \"服务单跟进时间\"\n", "' radioField_ku0wvx8m ': data[ \"是否超期未评价\" ][i],# \"是否超期未评价\"\n", "' textField_l09ckhey ': data[ \"实付金额\" ][i],# \"实付金额\"\n", "' textField_l43uqhhz ': data[ \"跟进记录\" ][i],# \"跟进记录\"\n" ] } ], "source": [ "# 基础信息\n", "import pandas as pd\n", "import numpy as np\n", "import requests\n", "import json\n", "import time\n", "import re\n", "import sys\n", "from datetime import datetime\n", "from dateutil.relativedelta import relativedelta\n", "from pathlib import Path\n", "from urllib.parse import quote\n", "from datetime import date, timedelta\n", "import datetime\n", "from io import BytesIO\n", "\n", "\n", "ROOT = Path('.').absolute() # 当前工作目录\n", "\n", "def generateToken() -> str:\n", " \"\"\" 生成 token \"\"\"\n", "\n", " token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'\n", "\n", " # 该信息在钉钉开放应用中\n", " data = {\n", " \"appKey\": \"ding5kqocon5s9oph5uq\",\n", " \"appSecret\": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'\n", " }\n", "\n", " res = requests.post(token_api, json=data)\n", " token = res.json()['accessToken']\n", "\n", " return token\n", "\n", "def read_processes_instances(token, formUuid, page, n):\n", " \"\"\" 函数功能:读取流程表单的所有数据 \"\"\"\n", "\n", " api = f'https://api.dingtalk.com/v1.0/yida/processes/instances?pageNumber={page}&pageSize={n}'\n", "\n", " headers = {\n", " \"Content-Type\": \"application/json\",\n", " \"x-acs-dingtalk-access-token\": token\n", " }\n", "\n", " formData = {\n", " \"appType\": \"APP_UYZ0KG6L0CCNV80GZ66O\",\n", " \"systemToken\": \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n", " \"userId\": \"yida_pub_account\", # 超级管理员账号\n", " \"language\": \"zh_CN\",\n", " \"formUuid\": formUuid,\n", " # \"searchFieldJson\": json.dumps(searchField), # 如果增加上这一项会要求升级宜搭存储\n", " \"instanceStatus\": \"RUNNING\" # 运行中\n", " }\n", "\n", " res = requests.post(api, headers=headers, json=formData)\n", " return res.json()\n", "\n", "def queryLastSaasInfo(cellPhone):\n", " \"\"\" 函数功能:手机号查询最近一次购买saas明细 \"\"\"\n", "\n", " api = 'http://manage.f6yc.com/hive-admin/yida/order/queryLastSaasInfo?cellPhone=' + cellPhone\n", "\n", " headers = {\n", " \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n", " }\n", " res = requests.post(api,headers=headers)\n", " return res.json()\n", "\n", "def get_approval_records(token: str, processInstanceId: str):\n", " \"\"\" 函数功能:获取流程表单的审批记录 \"\"\"\n", " appType = \"APP_UYZ0KG6L0CCNV80GZ66O\"\n", " systemToken = \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\"\n", " userId = \"yida_pub_account\"\n", "\n", " api = f'https://api.dingtalk.com/v1.0/yida/processes/operationRecords?appType={appType}&systemToken={systemToken}&userId={userId}&language=zh_CN&processInstanceId={processInstanceId}'\n", "\n", " headers = {\n", " \"Content-Type\": \"application/json\",\n", " \"x-acs-dingtalk-access-token\": token\n", " }\n", "\n", " res = requests.get(api, headers=headers)\n", " # print('获取流程表单的审批记录')\n", " return res.json()\n", "\n", "\n", "def aggree_approval(token: str, taskId: str, processInstanceId: str,res_new,formDataJson):\n", " \"\"\" 函数功能:同意审批节点 \"\"\"\n", " api = f'https://api.dingtalk.com/v1.0/yida/tasks/execute'\n", "\n", " headers = {\n", " \"Content-Type\": \"application/json\",\n", " \"x-acs-dingtalk-access-token\": token\n", " }\n", "\n", " payload = {\n", " \"outResult\": \"AGREE\",\n", " \"appType\": \"APP_UYZ0KG6L0CCNV80GZ66O\",\n", " \"systemToken\": \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n", " \"remark\": \"同意(接口自动)\",\n", " \"formDataJson\": json.dumps(formDataJson),\n", " \"processInstanceId\": processInstanceId,\n", " # \"userId\": \"yida_pub_account\",\n", " \"userId\": res_new, \n", " \"language\": \"zh_CN\",\n", " \"taskId\": int(taskId)\n", " }\n", "\n", " res = requests.post(api, headers=headers, json=payload)\n", " # print('同意审批节点')\n", " return res\n", "\n", "def read_instances(token, formUuid, page, n):\n", " \"\"\" 函数功能:读取普通表单的所有数据 \"\"\"\n", "\n", " api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'\n", "\n", " headers = {\n", " \"Content-Type\": \"application/json\",\n", " \"x-acs-dingtalk-access-token\": token\n", " }\n", "\n", " formData = {\n", " \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n", " \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n", " \"userId\" : \"yida_pub_account\",\n", " \"language\" : \"zh_CN\",\n", " \"formUuid\" : formUuid,\n", " \"currentPage\" : page,\n", " \"pageSize\" : n\n", " }\n", "\n", " res = requests.post(api, headers=headers, json=formData)\n", " return res.json()\n", "\n", "def queryCompanies(cellPhone):\n", " \"\"\" 函数功能:自动发券查询手机号所处公司 \"\"\"\n", "\n", " api = 'http://manage.f6yc.com/hive-admin/yida/account/query?cellPhone=' + cellPhone\n", "\n", " headers = {\n", " \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n", " }\n", " res = requests.post(api,headers=headers)\n", " return res.json()\n", "def queryDetailByOrgId(orgId):\n", " \"\"\" 函数功能:自动发券查询门店上次成交价 \"\"\"\n", "\n", " api = 'http://manage.f6yc.com/hive-admin/yida/org/queryDetailByOrgId?orgId=' + orgId\n", "\n", " headers = {\n", " \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n", " }\n", " res = requests.post(api,headers=headers)\n", " return res.json()\n", "\n", "def component(FORMID,TOKEN):\n", " \"\"\" 获取组件信息 \"\"\"\n", " api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'\n", "\n", " headers = {\n", " \"Content-Type\": \"application/json\",\n", " \"x-acs-dingtalk-access-token\": TOKEN\n", " }\n", " payload = {\n", " \"formUuid\" : FORMID,\n", " \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n", " # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n", " \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n", " # \"language\" : \"zh_CN\",\n", " \"userId\" : \"yida_pub_account\"\n", " }\n", "\n", " res = requests.get(api, headers=headers, json=payload)\n", "\n", " return res.json()\n", "\n", "def Batch_creation(FORMID,TOKEN,ALL_formData):\n", " \"\"\" 获取组件信息 \"\"\"\n", " api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'\n", "\n", " headers = {\n", " \"Content-Type\": \"application/json\",\n", " \"x-acs-dingtalk-access-token\": TOKEN\n", " }\n", " payload = {\n", " # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n", " \"noExecuteExpression\" : \"false\",\n", " \"formUuid\" : FORMID,\n", " \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n", " \"asynchronousExecution\" : \"false\",\n", " \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n", " \"keepRunningAfterException\" : \"true\",\n", " \"userId\" : \"yida_pub_account\",\n", " \"formDataJsonList\" : ALL_formData,\n", " # \"formDataJsonList\" : json.dumps(ALL_formData, cls=NpEncoder),\n", " }\n", "\n", " res = requests.post(api, headers=headers, json=payload)\n", " return res.json()\n", "\n", "def queryskuList():\n", " \"\"\" 函数功能:按照商品分类查询商品列表接口 \"\"\"\n", "\n", " api = 'http://manage.f6yc.com/hive-admin/yida/sku/category/query?category=4'\n", "\n", " headers = {\n", " \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n", " }\n", "\n", " res = requests.post(api,headers=headers)\n", " return res.json()\n", "\n", "def couponAvailableQuery(cellPhone,groupId,skuList,passportId):\n", " \"\"\" 函数功能:在当前选择场景下查询手机号可以使用的优惠券 http://manage.f6yc.com/hive-admin/ \"\"\"\n", "\n", " api = f'http://manage.f6yc.com/hive-admin/yida/coupon/available/query?passportId={passportId}&cellPhone={cellPhone}&groupId={groupId}&skuList' + str(skuList)\n", "\n", " headers = {\n", " \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n", " }\n", "\n", " res = requests.post(api,headers=headers)\n", " return res.json()\n", "\n", "def queryPriceInfoBySkuId(orgId,skuId,saasUpdate):\n", " \"\"\" 函数功能:商品价格查询\"\"\"\n", "\n", " api = f'http://manage.f6yc.com/hive-admin/yida/sku/queryPriceInfoBySkuId?orgId={orgId}&skuId={skuId}&saasUpdate={saasUpdate}'\n", "\n", " headers = {\n", " \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n", " }\n", "\n", " res = requests.post(api,headers=headers)\n", " return res.json()\n", "\n", "def read_instances_new(token, formUuid, page, n,CREATE_FROM, CREATE_TO):\n", " \"\"\" 函数功能:读取流程表单的所有数据 \"\"\"\n", "\n", " api = f'https://api.dingtalk.com//v1.0/yida/processes/instances?pageNumber={page}&pageSize={n}'\n", "\n", " headers = {\n", " \"Content-Type\": \"application/json\",\n", " \"x-acs-dingtalk-access-token\": token\n", " }\n", "\n", " formData = {\n", " \"appType\": \"APP_RTPWHV37ENXPQUZHTL25\",\n", " \"systemToken\": \"IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6\",\n", " \"userId\": \"yida_pub_account\", # 超级管理员账号\n", " \"language\": \"zh_CN\",\n", " \"formUuid\": formUuid,\n", " \"createFromTimeGMT\":CREATE_FROM,\n", " \"createToTimeGMT\":CREATE_TO\n", " # \"searchFieldJson\": json.dumps(searchField), # 如果增加上这一项会要求升级宜搭存储\n", " # \"instanceStatus\": \"RUNNING\"\n", " }\n", "\n", " res = requests.post(api, headers=headers, json=formData)\n", " return res.json()\n", "\n", "def updateFormDataJson (token, formUuid, updateFormDataJson):\n", " \"\"\" 函数功能:更新表单数据 \"\"\"\n", "\n", " api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'\n", "\n", " headers = {\n", " \"Content-Type\": \"application/json\",\n", " \"x-acs-dingtalk-access-token\": token\n", " }\n", "\n", " formData = {\n", " \"appType\": \"APP_RTPWHV37ENXPQUZHTL25\",\n", " \"systemToken\": \"IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6\",\n", " \"userId\": \"yida_pub_account\", # 超级管理员账号\n", " \"language\": \"zh_CN\",\n", " \"formInstanceId\": formUuid,\n", " \"updateFormDataJson\":updateFormDataJson\n", " }\n", "\n", " res = requests.put(api, headers=headers, json=formData)\n", " return res.json()\n", "\n", "from datetime import datetime\n", "import time\n", "def get_time_range_minute(n):\n", " \"\"\" 获取近n分钟的时间戳(单位是毫秒)\"\"\"\n", "\n", " def delay_time(time_str, years=0, months=0, days=0, hours=0, minutes=0, seconds=0):\n", " if type(time_str) == str:\n", " time_str = datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')\n", " ret = time_str + relativedelta(years=years, months=months, days=days, hours=hours, minutes=minutes, seconds=seconds)\n", " return ret\n", "\n", " # 获得当前时间\n", " now_time = datetime.now()\n", " endTime = int(time.mktime(time.strptime(now_time.strftime('%Y/%m/%d %H:%M:%S'), '%Y/%m/%d %H:%M:%S'))) * 1000 - 1000\n", " # n小时前的时间\n", " ret2 = delay_time(now_time, minutes=-n)\n", " startTime = int(time.mktime(time.strptime(ret2.strftime('%Y/%m/%d %H:%M:%S'), '%Y/%m/%d %H:%M:%S'))) * 1000\n", "\n", " # print(f'时间区间:[{startTime}-{endTime}]')\n", " return startTime, endTime\n", "\n", "def timeStamp(timeNum):\n", " \"\"\" 函数功能:将时间戳(毫秒) 转化为时间日期格式\"\"\"\n", " timeStamp = float(timeNum/1000)\n", " timeArray = time.localtime(timeStamp)\n", " otherStyleTime = time.strftime(\"%Y-%m-%d %H:%M:%S\", timeArray)\n", " return otherStyleTime\n", "# 4320分钟时间间隔\n", "CREATE_FROM, CREATE_TO = [timeStamp(t) for t in get_time_range_minute(4320)]\n", "class NpEncoder(json.JSONEncoder):\n", " def default(self, obj):\n", " if isinstance(obj, np.integer):\n", " return int(obj)\n", " elif isinstance(obj, np.floating):\n", " return float(obj)\n", " elif isinstance(obj, np.ndarray):\n", " return obj.tolist()\n", " else:\n", " return super(NpEncoder, self).default(obj)\n", " \n", "'''获取表内控件信息 '''\n", "TOKEN = generateToken()\n", "FORMID_NEW = \"FORM-9X766NA1SOATBRSH2K42D8BJCX7L326HI64TKG5\"\n", "component_list = component(FORMID_NEW,TOKEN)\n", "for i in range(len(component_list['result'])):\n", " componentName = component_list['result'][i]['componentName']\n", " name_value = component_list['result'][i]['label']['value']\n", " fieldId = component_list['result'][i]['fieldId']\n", " print(\"'\",fieldId,\"':\",\"data[\",name_value,\"][i],#\",name_value)\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# CHECK" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "开始处理!\n", "08bce5e9-6523-421b-a3d7-43c2281a3475 {}\n" ] } ], "source": [ "\"\"\" 处理流程开始 \"\"\"\n", "FORMID = \"FORM-0A966I81N40CV1B48U18UBZAA8R92STJC7IJL9\" # 【测试版本】批量自动发券\n", "# 读取续约流程表单\n", "form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n", "PAGES = form_data.get('totalCount')//100 + 1\n", "\"\"\" 获取全量数据 \"\"\"\n", "for i in range(1, PAGES+1):\n", " form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)\n", " for v in range(0,len(form_data.get('data'))):\n", " # 获取当前所处节点\n", " res_new = get_approval_records(token=TOKEN, processInstanceId=form_data['data'][v]['processInstanceId'])\n", " records_new = res_new.get('result')\n", " # 获取审批节点的 taskId\n", " records_new = [item for item in records_new if item.get('type') == \"TODO\"]\n", " taskId_new = records_new[0]['activityId']\n", " taskId = records_new[0]['taskId']\n", " if taskId_new==\"sid-6470221a-82ec-4bdd-a873-245ee47a5605\": # check\n", " print(\"开始处理!\")\n", " # 读取NGV明细\n", " import psycopg2\n", " import pandas as pd\n", " # 获得连接\n", " conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n", " # 获得游标对象,一个游标对象可以对数据库进行执行操作\n", " cursor = conn.cursor()\n", " import datetime\n", " now_time = datetime.datetime.now()\n", " yes_time = now_time + datetime.timedelta(days=-1)\n", " yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n", " # sql语句 建表\n", " sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{yes_time_nyr}';\"\"\"\n", " # 执行语句\n", " cursor.execute(sql)\n", " # 获取结果集的每一行\n", " rows = cursor.fetchall()\n", " # 获取所有字段名\n", " all_fields = cursor.description\n", " #执行结果转化为dataframe\n", " col = []\n", " for i in all_fields:\n", " col.append(i[0])\n", " data_NGV = pd.DataFrame(list(rows),columns=col)\n", " # 关闭数据库连接\n", " cursor.close()\n", " conn.close()\n", " \n", " '''读取商品和券信息'''\n", " FORMID_TWO = \"FORM-6L966171O3RB70TJDB75R6RBI31V2NNACKCJLF1\" # 商品ID券ID关系表\n", " all_skuId = {}\n", " all_couponTemplateId = {}\n", " textField_ljwon3vt = {}\n", " textField_ljxv26ip = {}\n", " list_new = 0\n", " tableField_data_new = {}\n", " form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=1, n=100)\n", " PAGES_TWO = form_data_TWO.get('totalCount')//100 + 1\n", " for a in range(1, PAGES_TWO+1):\n", " form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=a, n=100)\n", " for data_TWO in form_data_TWO.get('data'):\n", " all_skuId[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_nt0h72h']\n", " all_couponTemplateId[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_47og525']\n", " textField_ljwon3vt[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_ljwon3vt']\n", " textField_ljxv26ip[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_ljxv26ip']\n", " \"\"\" 开始分别读取数据并填充数据进行创建 \"\"\"\n", " for data in form_data['data'][v]['data']['tableField_ljcfpjg4']:\n", " # 基础字段预设\n", " data_new = {}\n", " data_new['textField_ljibuzgd'] = \"\"\n", " data_new['textField_ljibuzge'] = \"\"\n", " try:\n", " # 获取门店编码对应的信息\n", " result = data_NGV[data_NGV['org_code'] == data['textField_ljcfpjg6']]\n", " result = result.reset_index()\n", " # 获取手机号+判断手机号是否在公司名下\n", " # 获取手机号+判断手机号是否在公司名下\n", " if data[\"textField_ljcfpjg8\"] ==\"\": # 手机号未填写,默认填充ngv中对应的手机号\n", " data_new['textField_ljibuzgl'] = result['contact_mobile'][0]\n", " else:\n", " data_new['textField_ljibuzgl'] = data[\"textField_ljcfpjg8\"]\n", " cellPhone_group_name = queryCompanies(data_new['textField_ljibuzgl'])\n", " groupName_all = {}\n", " for data_two in cellPhone_group_name['data']['groupList']:\n", " groupName_all[data_two[\"groupName\"]]=data_two[\"groupId\"]\n", " try:\n", " if len(cellPhone_group_name['data']['groupList']) > 0:\n", " pass\n", " else:\n", " data_new['textField_ljibuzgl'] = data[\"textField_ljcfpjg8\"] \n", " data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"F6中不存在该手机号;\"\n", " except:\n", " data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"F6中不存在该手机号;\"\n", " \n", " if result['group_name'][0] not in groupName_all:\n", " data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"联系电话与门店编码关系错误;\"\n", " # # 本次成交年限(1、2、3) selectField_ljicmdwn\n", " # if data[\"selectField_ljicmdwn\"] ==\"1\" or data[\"selectField_ljicmdwn\"] ==\"2\" or data[\"selectField_ljicmdwn\"] ==\"3\":\n", " # data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"本次成交年限填写错误,请填写【1、2、3】;\"\n", " # 获取公司名称+门店名称+门店版本+到期日+门店编码\n", " data_new['textField_ljibuzgm'] = result['group_name'][0]\n", " data_new['textField_ljibuzgh'] = result['org_name'][0]\n", " data_new['textField_ljibuzgi'] = result['saas_edition_fmt'][0]\n", " data_new['textField_ljibuzgf'] = result['expiry_time'][0]\n", " data_new['textField_ljibuzgn'] = result['org_code'][0]\n", " # 获取上次成交价 textField_ljibuzgg\n", " OrgId_list = queryDetailByOrgId(result['id_own_org'][0])\n", " data_new['textField_ljibuzgg'] = OrgId_list['data']['lastSaasOrderPrice']/OrgId_list['data']['lastTransactionYear']\n", " # 获取提前续约立减额 textField_ljibuzgj\n", " try:\n", " queryPriceInfoBySkuIdnew = queryPriceInfoBySkuId(result['id_own_org'][0],all_skuId[result['saas_edition_fmt'][0] + \"1\"],\"false\")\n", " data_new['textField_ljibuzgj'] = queryPriceInfoBySkuIdnew['data']['renewalDiscountAmount']\n", " except:\n", " data_new['textField_ljibuzgj'] = \"0\"\n", " # 版本续约金额\n", " data_new['textField_lk6g6e2l'] = textField_ljwon3vt[result['saas_edition_fmt'][0] + \"1\"] # 版本续约金额\n", " # 申请优惠券金额 numberField_ljwn6n7w_value 判断优惠券申请金额是否填写,如果没有填写则进行填充\n", " # 本次成交价 numberField_ljwn6n7w_value 判断本次成交价是否填写,如果没有填写则进行填充 \n", " if data[\"numberField_ljwn6n7w_value\"] != \"\":\n", " data_new['textField_ljibuzgk'] = data[\"numberField_ljwn6n7w_value\"]\n", " if int(data[\"numberField_ljwn6n7w_value\"]) <= 0:\n", " data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"本次成交价需要大于0,或者为空;\"\n", " elif data[\"numberField_ljwn6n7w_value\"] == \"\": # 判断本次成交价是否填写,如果没有填写则进行填充 默认取 上次成交价\n", " data_new['textField_ljibuzgk'] = data_new['textField_ljibuzgg']\n", " else:\n", " data_new['textField_ljibuzgk'] =data[\"numberField_ljwn6n7w_value\"]\n", " \n", " # 获取申请优惠券金额 textField_ljibuzgp 申请优惠券金额= 版本价格-提前立减额-本次成交价\n", " data_new['textField_ljibuzgp'] = int(data_new['textField_lk6g6e2l']) - int(data_new['textField_ljibuzgj']) - int(data_new['textField_ljibuzgk'])\n", "\n", " # # 获取本次成交价格 textField_ljibuzgk\n", " # if data[\"numberField_ljwn6n7w_value\"] ==\"\":\n", " # data_new['textField_ljibuzgk'] = int(textField_ljwon3vt[result['saas_edition_fmt'][0] + \"1\"]) - int(data_new['textField_ljibuzgp'])- int(data_new['textField_ljibuzgj'])\n", " # else:\n", " # data_new['textField_ljibuzgk'] = int(textField_ljwon3vt[result['saas_edition_fmt'][0] + \"1\"]) - int(data_new['textField_ljibuzgp']) - int(data_new['textField_ljibuzgj'])\n", " # 获取已有优惠券\n", " passportId=int(cellPhone_group_name['data']['passportId'])\n", " cellPhone=int(data_new['textField_ljibuzgl'])\n", " groupId = int(result['id_own_group'][0])\n", " skuList = queryskuList()\n", " couponAvailableQuery_list = couponAvailableQuery(cellPhone,groupId,skuList,passportId)\n", " for data_ONE in couponAvailableQuery_list['data']:\n", " data_new['textField_ljibuzge'] = data_new['textField_ljibuzge'] + data_ONE ['couponName'] + \":\"+ str(data_ONE ['couponValue']) +\";\"\n", " if \"续费优惠券\" in data_ONE ['couponName']:\n", " data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] +\"存在未使用的续约优惠券;\"\n", " # 是否低于限价 radioField_ljxz9ho5 是否发券 radioField_ljibuzgc 版本限价 textField_lk6hj6sw\n", " data_new['textField_lk6hj6sw'] = textField_ljxv26ip[result['saas_edition_fmt'][0] + \"1\"]\n", " if int(data_new['textField_ljibuzgk']) < int(textField_ljxv26ip[result['saas_edition_fmt'][0] + \"1\"]):\n", " data_new['radioField_ljxz9ho5'] = \"是\"\n", " # data_new['radioField_ljibuzgc'] = \"否\"\n", " else:\n", " data_new['radioField_ljxz9ho5'] = \"否\"\n", " # 是否的低于上次成交价 radioField_ljxz9ho6 是否发券 radioField_ljibuzgc\n", " if int(data_new['textField_ljibuzgk']) < int(data_new['textField_ljibuzgg']):\n", " data_new['radioField_ljxz9ho6'] = \"是\"\n", " # data_new['radioField_ljibuzgc'] = \"否\"\n", " else:\n", " data_new['radioField_ljxz9ho6'] = \"否\"\n", " if int(data_new['textField_ljibuzgj']) > 0:\n", " data_new['textField_ljibuzgd'] = \"存在提前续约立减额,不是30天内过期客户!\"\n", " if int(data_new['textField_ljibuzgp']) <= 0:\n", " data_new['textField_ljibuzgd'] = \"申请优惠金额需要大于0元!\"\n", " # # 集合 textField_ljy172na\n", " # data_new['textField_ljy172na'] = str({\n", " # \"cellPhone\":data_new[\"textField_ljibuzgl\"], # 收劵人手机号码\n", " # \"dingDingId\":form_data['data'][v]['originator']['userId'], # 申请人钉钉ID\n", " # \"stage\":2, # 所属阶段(新签:1,续约:2)\n", " # \"couponApplyType\":1, # 优惠券申请类型;新签:saas优惠劵申请:1,短信优惠劵申请:2,人工服务优惠劵申请:3;续约:saas续约优惠劵申请:1,saas升级优惠劵申请:2,短信优惠劵申请:3,人工服务优惠劵申请:4(暂不支持)\n", " # \"detailList\":[{ # 发劵明细列表\n", " # \"couponTemplateId\":all_couponTemplateId[result['saas_edition_fmt'][0] + \"1\"], # 劵模板ID\n", " # \"couponAmount\":int(data_new[\"textField_ljibuzgp\"]), # 劵金额,>0\n", " # \"grantGroup\":1, # 1:发送到公司+人,0:发送到人\n", " # \"groupId\":result['id_own_group'][0], # 发放公司ID,发在公司下=true是有值\n", " # \"skuId\":all_skuId[result['saas_edition_fmt'][0] + \"1\"], # 商品id \n", " # \"orgId\":result['id_own_org'][0], # 门店ID,(申请续约劵并且降级时必填)\n", " # \"demotion\":0, # 降级(是:1,否:0)\n", " # \"demotionSaaSEdition\":0 # 降级版本,门店降级时必填\n", " # }]\n", " # })\n", " # data_new['textField_ljy172na'] = data_new['textField_ljy172na'].replace(\"'\", '\"')\n", "\n", " # data_new['textField_ljy172na'] = data_new['textField_ljy172na'].replace(\" \", \"\")\n", " except:\n", " data_new['textField_ljibuzgd'] = \"数据读取异常:\" + data_new['textField_ljibuzgd']\n", " # CHECK结果校验 textField_ljibuzgd\n", " if data_new['textField_ljibuzgd'] == \"\":\n", " data_new['textField_ljibuzgd'] = \"正确\"\n", " list_new = list_new + 1\n", " # 回传结果\n", " if list_new == 1:\n", " tableField_data_new['tableField_ljibuzgq'] = [data_new]\n", " else:\n", " tableField_data_new['tableField_ljibuzgq'].append(data_new)\n", " res=aggree_approval(token=TOKEN, taskId=taskId, processInstanceId=form_data['data'][v]['processInstanceId'],res_new =\"2268275546837446\",formDataJson=tableField_data_new)\n", " print(form_data['data'][v]['processInstanceId'],res.json())\n", " time.sleep(2)\n", " elif taskId_new==\"sid-23822834-234a-b12a-dfea-a6ad1acc8c1b\": # API自动发券\n", " print(\"开始处理发券!\")\n", " # 读取NGV明细\n", " import psycopg2\n", " import pandas as pd\n", " # 获得连接\n", " conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n", " # 获得游标对象,一个游标对象可以对数据库进行执行操作\n", " cursor = conn.cursor()\n", " import datetime\n", " now_time = datetime.datetime.now()\n", " yes_time = now_time + datetime.timedelta(days=-1)\n", " yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n", " # sql语句 建表\n", " sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{yes_time_nyr}';\"\"\"\n", " # 执行语句\n", " cursor.execute(sql)\n", " # 获取结果集的每一行\n", " rows = cursor.fetchall()\n", " # 获取所有字段名\n", " all_fields = cursor.description\n", " #执行结果转化为dataframe\n", " col = []\n", " for i in all_fields:\n", " col.append(i[0])\n", " data_NGV = pd.DataFrame(list(rows),columns=col)\n", " # 关闭数据库连接\n", " cursor.close()\n", " conn.close()\n", " '''读取商品和券信息'''\n", " FORMID_TWO = \"FORM-6L966171O3RB70TJDB75R6RBI31V2NNACKCJLF1\" # 商品ID券ID关系表\n", " all_skuId = {}\n", " all_couponTemplateId = {}\n", " textField_ljwon3vt = {}\n", " textField_ljxv26ip = {}\n", " list_new = 0\n", " succeed_all = 0\n", " all_all= 0\n", " tableField_data_new = {}\n", " data_new = {}\n", " data_check = {}\n", " formDataJson_check = {}\n", " code_new = \"\"\n", " formDataJson_check['textField_ljcfpjgd'] = \"\"\n", " form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=1, n=100)\n", " PAGES_TWO = form_data_TWO.get('totalCount')//100 + 1\n", " for a in range(1, PAGES_TWO+1):\n", " form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=a, n=100)\n", " for data_TWO in form_data_TWO.get('data'):\n", " all_skuId[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_nt0h72h']\n", " all_couponTemplateId[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_47og525']\n", " textField_ljwon3vt[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_ljwon3vt']\n", " textField_ljxv26ip[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_ljxv26ip']\n", " FORMID = \"FORM-XHA66881FHMAR0F07GT4Y59GGA972DD6B5OHLB\" # [流程]自动化优惠券(+多年)\n", " # 读取[流程]自动化优惠券(+多年)\n", " form_data_new = read_instances_new(token=TOKEN, formUuid=FORMID, page=1, n=100,CREATE_FROM=CREATE_FROM, CREATE_TO=CREATE_TO)\n", " PAGES = form_data_new.get('totalCount')//100 + 1\n", " ALL_DATA_code = []\n", " \"\"\" 获取全量数据 \"\"\"\n", " for i in range(1, PAGES+1):\n", " form_data_new = read_instances_new(token=TOKEN, formUuid=FORMID, page=i, n=100,CREATE_FROM=CREATE_FROM, CREATE_TO=CREATE_TO)\n", " for data_one in form_data_new.get('data'):\n", " try:\n", " for j in range(0,len(data_one['data']['tableField_l1w05znp'])):\n", " ALL_DATA_code.append(str(data_one['data']['tableField_l1w05znp'][j]['selectField_l1wxjd8l']) + \"+\" + str(data_one['data']['tableField_l1w05znp'][j]['textField_l5j0ym23']))\n", " except:\n", " pass\n", " print(f'读取到 [[流程]自动化优惠券(+多年)表中 {len(ALL_DATA_code)} 条数据!')\n", " for data in form_data['data'][v]['data']['tableField_ljibuzgq']: # -----------------------------------------------\n", " updateFormDataJson_check = {}\n", " # 获取门店编码对应的信息\n", " result = data_NGV[data_NGV['org_code'] == data['textField_ljibuzgn']]\n", " result = result.reset_index()\n", " # 读取[流程]自动化优惠券(+多年)中存在该门店发券流程,避免重复发券\n", " if str(data['textField_ljibuzgn']) + \"+\" + str(all_couponTemplateId[result['saas_edition_fmt'][0] + \"1\"]) in ALL_DATA_code:\n", " # updateFormDataJson_check['textField_ljibuzgd'] = data['textField_ljibuzgd'] + \"[流程]自动化优惠券(+多年)中存在该门店发券流程!;\"\n", " # updateFormDataJson_check['radioField_ljxz9ho5'] = \"否\"\n", " # FORMID = \"FORM-0A966I81N40CV1B48U18UBZAA8R92STJC7IJL9\" # 【测试版本】批量自动发券\n", " # res=updateFormDataJson(TOKEN, FORMID, updateFormDataJson_check)\n", " # print(res.json)\n", " code_new = code_new + data[\"textField_ljibuzgl\"] + \";\"\n", " else:\n", " # res=aggree_approval(token=TOKEN, taskId=taskId, processInstanceId=form_data['data'][v]['processInstanceId'],res_new =\"2268275546837446\",formDataJson=tableField_data_new)\n", " # print(form_data['data'][v]['processInstanceId'],res.json())\n", " # for data_ONE in couponAvailableQuery_list['data']:\n", " # if \"续约优惠券\" in data_ONE ['couponName']:\n", " # data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] +\"存在未使用的续约优惠券;\"\n", " # data_new['textField_ljibuzge'] = data_new['textField_ljibuzge'] + data_ONE ['couponName'] + \":\"+ str(data_ONE ['couponValue']) +\";\"\n", " # check_all = check_all + 1\n", " \n", " data_new['textField_ljy172na'] = str({\n", " \"cellPhone\":data[\"textField_ljibuzgl\"], # 收劵人手机号码\n", " \"dingDingId\":form_data['data'][v]['originator']['userId'], # 申请人钉钉ID\n", " \"stage\":2, # 所属阶段(新签:1,续约:2)\n", " \"couponApplyType\":1, # 优惠券申请类型;新签:saas优惠劵申请:1,短信优惠劵申请:2,人工服务优惠劵申请:3;续约:saas续约优惠劵申请:1,saas升级优惠劵申请:2,短信优惠劵申请:3,人工服务优惠劵申请:4(暂不支持)\n", " \"detailList\":[{ # 发劵明细列表\n", " \"couponTemplateId\":all_couponTemplateId[result['saas_edition_fmt'][0] + \"1\"], # 劵模板ID\n", " \"couponAmount\":int(float(data[\"textField_ljibuzgp\"])), # 劵金额,>0\n", " \"grantGroup\":1, # 1:发送到公司+人,0:发送到人\n", " \"groupId\":result['id_own_group'][0], # 发放公司ID,发在公司下=true是有值\n", " \"skuId\":all_skuId[result['saas_edition_fmt'][0] + \"1\"], # 商品id \n", " \"orgId\":result['id_own_org'][0], # 门店ID,(申请续约劵并且降级时必填)\n", " \"demotion\":0, # 降级(是:1,否:0)\n", " \"demotionSaaSEdition\":0 # 降级版本,门店降级时必填\n", " }]\n", " })\n", " data_list = {\n", " 'textField_ljchgz1f':data['textField_ljibuzgn'], # 门店编码\n", " 'textField_ljchgz1i':data_new['textField_ljy172na'], # 数据集\n", " 'textField_ljchgz1h':data['textField_ljibuzgd'], # check结果\n", " 'textField_ljy1x9kb':form_data['data'][v]['processInstanceId'], # 关联表单id\n", " 'textField_ljf6nf7s':data['radioField_ljibuzgc'] # 是否发券\n", " }\n", " ALL_formData = []\n", " ALL_formData.append(json.dumps(data_list, cls=NpEncoder)) \n", " FORMID_NEW = \"FORM-JD8668C1MFBC3ND4BWO736T7G5Q7318IC0YJLA\" # 【测试版本】自动触发明细表\n", " res = Batch_creation(FORMID_NEW,TOKEN,ALL_formData)\n", " print(res)\n", " time.sleep(2)\n", " all_all = all_all + 1\n", " if data['textField_ljibuzgd'] == \"正确\" and data['radioField_ljibuzgc'] == \"是\":\n", " succeed_all = succeed_all + 1\n", " fail_all = all_all - succeed_all\n", " if len(code_new)>0:\n", " txt_all = f\"发送成功:{succeed_all}条;发送失败:{fail_all}条;{code_new}在[流程]自动化优惠券(+多年)中有申请记录!\"\n", " else:\n", " txt_all = f\"发送成功:{succeed_all}条;发送失败:{fail_all}条;\"\n", " formDataJson_check = {\n", " 'textField_ljcfpjgd':txt_all\n", " }\n", " res=aggree_approval(token=TOKEN, taskId=taskId, processInstanceId=form_data['data'][v]['processInstanceId'],res_new =\"2268275546837446\",formDataJson=formDataJson_check)\n", " print(form_data['data'][v]['processInstanceId'],res.json())\n", " time.sleep(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 测试区" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'10546172455180032032'" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cellPhone_group_name['data']['passportId']" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'15291885674'" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_new['textField_ljibuzgl']" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'10546172455161434282'" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result['id_own_group'][0]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'applyOrg': '10546172455161434282',\n", " 'applySkuList': ['14582097882934061696'],\n", " 'conditionType': 0,\n", " 'conditionValue': None,\n", " 'couponName': '旗舰版1年续费优惠券',\n", " 'couponTemplateId': '146566',\n", " 'couponValue': 600.0,\n", " 'customerId': '10546172455180032032',\n", " 'goodsRangeType': 0,\n", " 'groupName': '靖边县汇鑫机动车交易有限公司',\n", " 'id': '11450155',\n", " 'validityBegin': 1690905600000,\n", " 'validityBeginStr': '2023-08-02',\n", " 'validityEnd': 1693411199000,\n", " 'validityEndStr': '2023-08-30'}]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "couponAvailableQuery_list['data']" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "passportId=int(cellPhone_group_name['data']['passportId'])\n", "cellPhone=int(data_new['textField_ljibuzgl'])\n", "groupId = int(result['id_own_group'][0])\n", "skuList = queryskuList()\n", "couponAvailableQuery_list = couponAvailableQuery(cellPhone,groupId,skuList,passportId)\n", "for data_ONE in couponAvailableQuery_list['data']:\n", " if \"续约优惠券\" in data_ONE ['couponName']:\n", " data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] +\"存在未使用的续约优惠券;\"\n", " data_new['textField_ljibuzge'] = data_new['textField_ljibuzge'] + data_ONE ['couponName'] + \":\"+ str(data_ONE ['couponValue']) +\";\"" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "ename": "KeyError", "evalue": "'textField_ljibuzgl'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m data_new['textField_ljy172na'] = str({\n\u001b[1;32m----> 2\u001b[1;33m \u001b[1;34m\"cellPhone\"\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"textField_ljibuzgl\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;31m# 收劵人手机号码\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[1;34m\"dingDingId\"\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mform_data\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'data'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mv\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'originator'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'userId'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;31m# 申请人钉钉ID\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;34m\"stage\"\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;31m# 所属阶段(新签:1,续约:2)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;34m\"couponApplyType\"\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;31m# 优惠券申请类型;新签:saas优惠劵申请:1,短信优惠劵申请:2,人工服务优惠劵申请:3;续约:saas续约优惠劵申请:1,saas升级优惠劵申请:2,短信优惠劵申请:3,人工服务优惠劵申请:4(暂不支持)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mKeyError\u001b[0m: 'textField_ljibuzgl'" ] } ], "source": [ "data_new['textField_ljy172na'] = str({\n", " \"cellPhone\":data[\"textField_ljibuzgl\"], # 收劵人手机号码\n", " \"dingDingId\":form_data['data'][v]['originator']['userId'], # 申请人钉钉ID\n", " \"stage\":2, # 所属阶段(新签:1,续约:2)\n", " \"couponApplyType\":1, # 优惠券申请类型;新签:saas优惠劵申请:1,短信优惠劵申请:2,人工服务优惠劵申请:3;续约:saas续约优惠劵申请:1,saas升级优惠劵申请:2,短信优惠劵申请:3,人工服务优惠劵申请:4(暂不支持)\n", " \"detailList\":[{ # 发劵明细列表\n", " \"couponTemplateId\":all_couponTemplateId[result['saas_edition_fmt'][0] + \"1\"], # 劵模板ID\n", " \"couponAmount\":int(float(data[\"textField_ljibuzgp\"])), # 劵金额,>0\n", " \"grantGroup\":1, # 1:发送到公司+人,0:发送到人\n", " \"groupId\":result['id_own_group'][0], # 发放公司ID,发在公司下=true是有值\n", " \"skuId\":all_skuId[result['saas_edition_fmt'][0] + \"1\"], # 商品id \n", " \"orgId\":result['id_own_org'][0], # 门店ID,(申请续约劵并且降级时必填)\n", " \"demotion\":0, # 降级(是:1,否:0)\n", " \"demotionSaaSEdition\":0 # 降级版本,门店降级时必填\n", " }]\n", " })" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
indexdate_iddate_fmtid_own_groupgroup_nameid_own_orgorg_nameorg_codegroup_gradeorg_type...org_sizequalification_type_fmtbusiness_scope_fmtstore_type_fmtareastation_numberheader_type_fmtorg_stageg_count_this_monthsaas_customer_type
05030202307302023-07-3011240984669916891021弘升汽车养护中心11240984669916896021弘升汽车养护中心CHS202104160121089普通客户(VIP)一般...三类资格保养,洗车,维修,美容,装潢精品,轮胎,钣喷快修快保店162.004自有单店-无需选图片续约30C
\n", "

1 rows × 140 columns

\n", "
" ], "text/plain": [ " index date_id date_fmt id_own_group group_name \n", "0 5030 20230730 2023-07-30 11240984669916891021 弘升汽车养护中心 \\\n", "\n", " id_own_org org_name org_code group_grade org_type \n", "0 11240984669916896021 弘升汽车养护中心 CHS202104160121089 普通客户(VIP) 一般 \\\n", "\n", " ... org_size qualification_type_fmt business_scope_fmt \n", "0 ... 小 三类资格 保养,洗车,维修,美容,装潢精品,轮胎,钣喷 \\\n", "\n", " store_type_fmt area station_number header_type_fmt org_stage \n", "0 快修快保店 162.00 4 自有单店-无需选图片 续约 \\\n", "\n", " g_count_this_month saas_customer_type \n", "0 30 C \n", "\n", "[1 rows x 140 columns]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "49" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(form_data['data'][v]['data']['tableField_ljcfpjg4'])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "for data in form_data['data'][v]['data']['tableField_ljcfpjg4']:\n", " " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# 获取门店编码对应的信息\n", "result = data_NGV[data_NGV['org_code'] == data['textField_ljcfpjg6']]\n", "result = result.reset_index()\n", "# 获取手机号+判断手机号是否在公司名下\n", "# 获取手机号+判断手机号是否在公司名下\n", "if data[\"textField_ljcfpjg8\"] ==\"\": # 手机号未填写,默认填充ngv中对应的手机号\n", " data_new['textField_ljibuzgl'] = result['contact_mobile'][0]\n", "else:\n", " data_new['textField_ljibuzgl'] = data[\"textField_ljcfpjg8\"]\n", "cellPhone_group_name = queryCompanies(data_new['textField_ljibuzgl'])\n", "groupName_all = {}\n", "for data_two in cellPhone_group_name['data']['groupList']:\n", " groupName_all[data_two[\"groupName\"]]=data_two[\"groupId\"]\n", "try:\n", " if len(cellPhone_group_name['data']['groupList']) > 0:\n", " pass\n", " else:\n", " data_new['textField_ljibuzgl'] = data[\"textField_ljcfpjg8\"] \n", " data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"F6中不存在该手机号;\"\n", "except:\n", " data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"F6中不存在该手机号;\"\n", " \n", "if result['group_name'][0] not in groupName_all:\n", " data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"联系电话与门店编码关系错误;\"\n", "# # 本次成交年限(1、2、3) selectField_ljicmdwn\n", "# if data[\"selectField_ljicmdwn\"] ==\"1\" or data[\"selectField_ljicmdwn\"] ==\"2\" or data[\"selectField_ljicmdwn\"] ==\"3\":\n", "# data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"本次成交年限填写错误,请填写【1、2、3】;\"\n", "# 获取公司名称+门店名称+门店版本+到期日+门店编码\n", "data_new['textField_ljibuzgm'] = result['group_name'][0]\n", "data_new['textField_ljibuzgh'] = result['org_name'][0]\n", "data_new['textField_ljibuzgi'] = result['saas_edition_fmt'][0]\n", "data_new['textField_ljibuzgf'] = result['expiry_time'][0]\n", "data_new['textField_ljibuzgn'] = result['org_code'][0]\n", "# 获取上次成交价 textField_ljibuzgg\n", "OrgId_list = queryDetailByOrgId(result['id_own_org'][0])\n", "data_new['textField_ljibuzgg'] = OrgId_list['data']['lastSaasOrderPrice']/OrgId_list['data']['lastTransactionYear']\n", "# 获取提前续约立减额 textField_ljibuzgj\n", "try:\n", " queryPriceInfoBySkuIdnew = queryPriceInfoBySkuId(result['id_own_org'][0],all_skuId[result['saas_edition_fmt'][0] + \"1\"],\"false\")\n", " data_new['textField_ljibuzgj'] = queryPriceInfoBySkuIdnew['data']['renewalDiscountAmount']\n", "except:\n", " data_new['textField_ljibuzgj'] = \"0\"\n", "# 版本续约金额\n", "data_new['textField_lk6g6e2l'] = textField_ljwon3vt[result['saas_edition_fmt'][0] + \"1\"] # 版本续约金额\n", "# 申请优惠券金额 numberField_ljwn6n7w_value 判断优惠券申请金额是否填写,如果没有填写则进行填充\n", "# 本次成交价 numberField_ljwn6n7w_value 判断本次成交价是否填写,如果没有填写则进行填充 \n", "if data[\"numberField_ljwn6n7w_value\"] != \"\":\n", " data_new['textField_ljibuzgk'] = data[\"numberField_ljwn6n7w_value\"]\n", " if int(data[\"numberField_ljwn6n7w_value\"]) <= 0:\n", " data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"本次成交价需要大于0,或者为空;\"\n", "elif data[\"numberField_ljwn6n7w_value\"] == \"\": # 判断本次成交价是否填写,如果没有填写则进行填充 默认取 上次成交价\n", " data_new['textField_ljibuzgk'] = data_new['textField_ljibuzgg']\n", "else:\n", " data_new['textField_ljibuzgk'] =data[\"numberField_ljwn6n7w_value\"]\n", "\n", "# 获取申请优惠券金额 textField_ljibuzgp 申请优惠券金额= 版本价格-提前立减额-本次成交价\n", "data_new['textField_ljibuzgp'] = int(data_new['textField_lk6g6e2l']) - int(data_new['textField_ljibuzgj']) - int(data_new['textField_ljibuzgk'])\n", "\n", "# # 获取本次成交价格 textField_ljibuzgk\n", "# if data[\"numberField_ljwn6n7w_value\"] ==\"\":\n", "# data_new['textField_ljibuzgk'] = int(textField_ljwon3vt[result['saas_edition_fmt'][0] + \"1\"]) - int(data_new['textField_ljibuzgp'])- int(data_new['textField_ljibuzgj'])\n", "# else:\n", "# data_new['textField_ljibuzgk'] = int(textField_ljwon3vt[result['saas_edition_fmt'][0] + \"1\"]) - int(data_new['textField_ljibuzgp']) - int(data_new['textField_ljibuzgj'])\n", "# 获取已有优惠券\n", "passportId=int(cellPhone_group_name['data']['passportId'])\n", "cellPhone=int(data_new['textField_ljibuzgl'])\n", "groupId = int(result['id_own_group'][0])\n", "skuList = queryskuList()\n", "couponAvailableQuery_list = couponAvailableQuery(cellPhone,groupId,skuList,passportId)\n", "for data_ONE in couponAvailableQuery_list['data']:\n", " if \"续约优惠券\" in data_ONE ['couponName']:\n", " data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] +\"存在未使用的续约优惠券;\"\n", " data_new['textField_ljibuzge'] = data_new['textField_ljibuzge'] + data_ONE ['couponName'] + \":\"+ str(data_ONE ['couponValue']) +\";\"\n", "# 是否低于限价 radioField_ljxz9ho5 是否发券 radioField_ljibuzgc 版本限价 textField_lk6hj6sw\n", "data_new['textField_lk6hj6sw'] = textField_ljxv26ip[result['saas_edition_fmt'][0] + \"1\"]\n", "if int(data_new['textField_ljibuzgk']) < int(textField_ljxv26ip[result['saas_edition_fmt'][0] + \"1\"]):\n", " data_new['radioField_ljxz9ho5'] = \"是\"\n", " # data_new['radioField_ljibuzgc'] = \"否\"\n", "else:\n", " data_new['radioField_ljxz9ho5'] = \"否\"\n", "# 是否的低于上次成交价 radioField_ljxz9ho6 是否发券 radioField_ljibuzgc\n", "if int(data_new['textField_ljibuzgk']) < int(data_new['textField_ljibuzgg']):\n", " data_new['radioField_ljxz9ho6'] = \"是\"\n", " # data_new['radioField_ljibuzgc'] = \"否\"\n", "else:\n", " data_new['radioField_ljxz9ho6'] = \"否\"" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'textField_ljibuzgd': '数据读取异常:',\n", " 'textField_ljibuzge': '',\n", " 'textField_ljibuzgl': '13776365989',\n", " 'textField_ljibuzgm': '卡威一站式汽车服务',\n", " 'textField_ljibuzgh': '卡威汽车一站式',\n", " 'textField_ljibuzgi': '基础版',\n", " 'textField_ljibuzgf': '2023-08-18 00:00:00',\n", " 'textField_ljibuzgn': 'CHS202006240092987',\n", " 'textField_ljibuzgg': 999.0,\n", " 'textField_ljibuzgj': 0,\n", " 'textField_lk6g6e2l': '1599',\n", " 'textField_ljibuzgk': '999',\n", " 'textField_ljibuzgp': 600,\n", " 'textField_lk6hj6sw': '999',\n", " 'radioField_ljxz9ho5': '否',\n", " 'radioField_ljxz9ho6': '否'}" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_new" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{}" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "if str(data['textField_ljibuzgn']) + \"+\" + str(all_couponTemplateId[result['saas_edition_fmt'][0] + \"1\"]) in ALL_DATA_code:\n", " updateFormDataJson_check['textField_ljibuzgd'] = data['textField_ljibuzgd'] + \"[流程]自动化优惠券(+多年)中存在该门店发券流程!;\"\n", " updateFormDataJson_check['radioField_ljxz9ho5'] = \"否\"\n", " FORMID = \"FORM-0A966I81N40CV1B48U18UBZAA8R92STJC7IJL9\" # 【测试版本】批量自动发券\n", " res=updateFormDataJson(TOKEN, FORMID, updateFormDataJson_check)\n", " print(res.json)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'CHS202105170125107+125514'" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "str(data['textField_ljibuzgn']) + \"+\" + str(all_couponTemplateId[result['saas_edition_fmt'][0] + \"1\"])" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "str(data['textField_ljibuzgn']) + \"+\" + str(all_couponTemplateId[result['saas_edition_fmt'][0] + \"1\"]) in ALL_DATA_code" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['CHS202006240092773+125520',\n", " 'CHS202008180104378+125514',\n", " 'CHS202005190083287+125514',\n", " 'CHS201903010011793+125514',\n", " 'CHS202107240133770+125514',\n", " 'CHS202106220130318+125514',\n", " 'CHS201902180005701+125520',\n", " 'CHS201903230024157+125514',\n", " 'CHS201903240024630+125514',\n", " 'CHS202106250130808+125514',\n", " 'CHS201911150041799+125514',\n", " 'CHS202107260133865+125517',\n", " 'CHS202007040095022+125514',\n", " 'CHS201904230027646+125514',\n", " 'CHS201902280009167+125514',\n", " 'CHS201902190005709+125514',\n", " 'CHS202106280130998+125520',\n", " 'CHS202107210133565+125517',\n", " 'CHS201908060034994+125514',\n", " 'CHS202005100080943+125517',\n", " 'CHS202006090088093+125514',\n", " 'CHS202208160186739+125517',\n", " 'CHS202206230182911+125514',\n", " 'CHS202107150132984+125514',\n", " 'CHS202106290131161+125520',\n", " 'CHS202003160055768+125514',\n", " 'CHS201811123709+125517',\n", " 'CHS202006180090962+125520',\n", " 'CHS202109260141890+125516',\n", " 'CHS202207280185379+125520',\n", " 'CHS202005210083580+125514',\n", " 'CHS202106290131160+125514']" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ALL_DATA_code" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "def updateFormDataJson (token, formUuid, updateFormDataJson):\n", " \"\"\" 函数功能:更新表单数据 \"\"\"\n", "\n", " api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'\n", "\n", " headers = {\n", " \"Content-Type\": \"application/json\",\n", " \"x-acs-dingtalk-access-token\": token\n", " }\n", "\n", " formData = {\n", " \"appType\": \"APP_RTPWHV37ENXPQUZHTL25\",\n", " \"systemToken\": \"IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6\",\n", " \"userId\": \"yida_pub_account\", # 超级管理员账号\n", " \"language\": \"zh_CN\",\n", " \"formInstanceId\": formUuid,\n", " \"updateFormDataJson\":updateFormDataJson\n", " }\n", "\n", " res = requests.put(api, headers=headers, json=formData)\n", " return res.json()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'125517'" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_couponTemplateId[result['saas_edition_fmt'][0] + \"1\"]" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "str(data['textField_ljibuzgn']) + \"+\" + str(all_couponTemplateId[result['saas_edition_fmt'][0] + \"1\"]) in ALL_DATA_code" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'textField_ljcfpjgd': ''}" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "formDataJson_check" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['CHS202107260133865+125517',\n", " 'CHS202007040095022+125514',\n", " 'CHS201904230027646+125514',\n", " 'CHS201902280009167+125514',\n", " 'CHS201902190005709+125514',\n", " 'CHS202106280130998+125520',\n", " 'CHS202107210133565+125517',\n", " 'CHS201908060034994+125514',\n", " 'CHS202005100080943+125517',\n", " 'CHS202006090088093+125514',\n", " 'CHS202208160186739+125517',\n", " 'CHS202206230182911+125514',\n", " 'CHS202107150132984+125514',\n", " 'CHS202106290131161+125520',\n", " 'CHS202003160055768+125514',\n", " 'CHS201811123709+125517',\n", " 'CHS202006180090962+125520',\n", " 'CHS202109260141890+125516',\n", " 'CHS202207280185379+125520',\n", " 'CHS202005210083580+125514',\n", " 'CHS202106290131160+125514',\n", " 'CHS201912310049748+125514',\n", " 'CHS202007270100699+125514',\n", " 'CHS202208130186557+125520',\n", " 'CHS201809293393+125514',\n", " 'CHS201912300049346+125517']" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ALL_DATA_code" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['CHS202206230182911+125514',\n", " 'CHS202107150132984+125514',\n", " 'CHS202106290131161+125520',\n", " 'CHS202003160055768+125514',\n", " 'CHS201811123709+125517',\n", " 'CHS202006180090962+125520',\n", " 'CHS202109260141890+125516',\n", " 'CHS202207280185379+125520',\n", " 'CHS202005210083580+125514',\n", " 'CHS202106290131160+125514',\n", " 'CHS201912310049748+125514',\n", " 'CHS202007270100699+125514',\n", " 'CHS202208130186557+125520',\n", " 'CHS201809293393+125514',\n", " 'CHS201912300049346+125517',\n", " 'CHS201909180037541+125520',\n", " 'CHS201612031106+125520',\n", " 'CHS202108050134845+125530',\n", " 'CHS202006120089307+125520',\n", " 'CHS202006180090980+125514',\n", " 'CHS201811133732+125514',\n", " 'CHS202106020128124+125514',\n", " 'CHS202207290185496+125524',\n", " 'CHS201909210038061+125519',\n", " 'CHS202208020185721+125517']" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ALL_DATA_code" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'code': 200,\n", " 'data': {'businessType': 26,\n", " 'businessTypeDesc': 'Saas',\n", " 'category': 2,\n", " 'categoryDesc': 'Saas续约',\n", " 'couponPrice': 200.0,\n", " 'discountPrice': 600.0,\n", " 'number': 1.0,\n", " 'orderId': 90103253,\n", " 'orderPayFinishTime': 1651047426000,\n", " 'orderStatus': 6,\n", " 'orderStatusDesc': '已完成',\n", " 'price': 1799.0,\n", " 'projectname': '续约标准版-门店管理系统',\n", " 'renewalDiscountAmount': 400.0,\n", " 'reservationNumber': '1651047415446',\n", " 'serverDateDeductionPrice': 0.0,\n", " 'totalFee': 2399.0},\n", " 'message': 'SUCCESS'}" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "renewalDiscountAmount" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [], "source": [ "# 获取已有优惠券\n", "passportId=int(cellPhone_group_name['data']['passportId'])\n", "cellPhone=int(data_new['textField_ljibuzgl'])\n", "groupId = int(result['id_own_group'][0])\n", "skuList = queryskuList()\n", "couponAvailableQuery_list = couponAvailableQuery(cellPhone,groupId,skuList,passportId)\n", "for data_ONE in couponAvailableQuery_list['data']:\n", " if \"续约优惠券\" in data_ONE ['couponName']:\n", " data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] +\"存在未使用的续约优惠券;\"\n", " data_new['textField_ljibuzge'] = data_new['textField_ljibuzge'] + data_ONE ['couponName'] + \":\"+ str(data_ONE ['couponValue']) +\";\"" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'2499.0'" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "str(data_ONE ['couponValue']) " ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "def couponAvailableQuery(cellPhone,groupId,skuList,passportId):\n", " \"\"\" 函数功能:在当前选择场景下查询手机号可以使用的优惠券 http://manage.f6yc.com/hive-admin/ \"\"\"\n", "\n", " api = f'http://manage.f6yc.com/hive-admin/yida/coupon/available/query?passportId={passportId}&cellPhone={cellPhone}&groupId={groupId}&skuList' + str(skuList)\n", "\n", " headers = {\n", " \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n", " }\n", "\n", " res = requests.post(api,headers=headers)\n", " return res.json()" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [], "source": [ "def couponAvailableQuery(groupId,skuList,passportId):\n", " \"\"\" 函数功能:在当前选择场景下查询手机号可以使用的优惠券 http://manage.f6yc.com/hive-admin/ \"\"\"\n", "\n", " api = f'http://manage.f6yc.com/hive-admin/yida/coupon/available/query?passportId={passportId}&groupId={groupId}&skuList' + str(skuList)\n", "\n", " headers = {\n", " \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n", " }\n", "\n", " res = requests.post(api,headers=headers)\n", " return res.json()" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [], "source": [ "passportId=int(cellPhone_group_name['data']['passportId'])\n", "cellPhone=int(data_new['textField_ljibuzgl'])\n", "groupId = int(result['id_own_group'][0])\n", "skuList = queryskuList()\n", "couponAvailableQuery_list = couponAvailableQuery(cellPhone,groupId,skuList,passportId)" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'code': 200,\n", " 'data': [{'applyOrg': '10545511425556432399',\n", " 'applySkuList': ['14582097882934118703'],\n", " 'conditionType': 0,\n", " 'conditionValue': None,\n", " 'couponName': '至尊版1年续约优惠券',\n", " 'couponTemplateId': '125530',\n", " 'couponValue': 2499.0,\n", " 'customerId': '14365556958334901332',\n", " 'goodsRangeType': 0,\n", " 'groupName': '山东圣罗萨汽车维修养护有限公司',\n", " 'id': '11387979',\n", " 'validityBegin': 1689696000000,\n", " 'validityBeginStr': '2023-07-19',\n", " 'validityEnd': 1690300799000,\n", " 'validityEndStr': '2023-07-25'}],\n", " 'message': 'SUCCESS'}" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "couponAvailableQuery_list" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "couponAvailableQuery_list = couponAvailableQuery(passportId,groupId,skuList)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'code': 200,\n", " 'data': [{'applyOrg': '10545511425556432399',\n", " 'applySkuList': ['14582097882934118703'],\n", " 'conditionType': 0,\n", " 'conditionValue': None,\n", " 'couponName': '至尊版1年续约优惠券',\n", " 'couponTemplateId': '125530',\n", " 'couponValue': 2499.0,\n", " 'customerId': '14365556958334901332',\n", " 'goodsRangeType': 0,\n", " 'groupName': '山东圣罗萨汽车维修养护有限公司',\n", " 'id': '11387979',\n", " 'validityBegin': 1689696000000,\n", " 'validityBeginStr': '2023-07-19',\n", " 'validityEnd': 1690300799000,\n", " 'validityEndStr': '2023-07-25'}],\n", " 'message': 'SUCCESS'}" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "couponAvailableQuery_list" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'tableField_ljcfpjg4': [{'numberField_ljwn6n7w_value': '',\n", " 'textField_ljcfpjg8': '',\n", " 'textField_ljcfpjg6': 'CHS202106110129113'},\n", " {'numberField_ljwn6n7w_value': '',\n", " 'textField_ljcfpjg8': '18165351165',\n", " 'textField_ljcfpjg6': 'CHS201904170027447'},\n", " {'numberField_ljwn6n7w_value': '1',\n", " 'textField_ljcfpjg8': '15829920707',\n", " 'textField_ljcfpjg6': 'CHS202207090184044',\n", " 'numberField_ljwn6n7w': 1},\n", " {'numberField_ljwn6n7w_value': '',\n", " 'textField_ljcfpjg8': '13679207172',\n", " 'textField_ljcfpjg6': 'CHS202207140184433'}]}" ] }, "execution_count": 123, "metadata": {}, "output_type": "execute_result" } ], "source": [ "form_data['data'][v]['data']" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'textField_ljibuzgl': '18165351165',\n", " 'textField_ljibuzgm': '西安铂赛汽车维修服务有限责任公司',\n", " 'textField_ljibuzgh': '西安铂赛汽车维修服务有限责任公司',\n", " 'textField_ljibuzgi': '基础版',\n", " 'textField_ljibuzgf': '2023-07-13 16:47:00',\n", " 'textField_ljibuzgn': 'CHS201904170027447',\n", " 'textField_ljibuzgg': 999.0,\n", " 'textField_ljibuzgj': 0.0,\n", " 'textField_ljibuzgp': 600.0,\n", " 'textField_ljibuzgk': 999}" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "formDataJson_check = form_data['data'][v]['data']" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'code': 200,\n", " 'data': [{'infoId': '14582097882934062210',\n", " 'pkId': '15632863102804967489',\n", " 'saasEdition': 10,\n", " 'saasEditionName': '基础版',\n", " 'sellMode': 0,\n", " 'sellPrice': 1599.0,\n", " 'spuName': '续约基础版-门店管理系统',\n", " 'type': 2,\n", " 'validityPeriod': 12},\n", " {'infoId': '14582097882934062599',\n", " 'pkId': '15632864029540634690',\n", " 'saasEdition': 20,\n", " 'saasEditionName': '标准版',\n", " 'sellMode': 0,\n", " 'sellPrice': 2399.0,\n", " 'spuName': '续约标准版-门店管理系统',\n", " 'type': 2,\n", " 'validityPeriod': 12},\n", " {'infoId': '14582097882934062350',\n", " 'pkId': '15632863364235939894',\n", " 'saasEdition': 10,\n", " 'saasEditionName': '基础版',\n", " 'sellMode': 0,\n", " 'sellPrice': 2998.0,\n", " 'spuName': '续约基础版-门店管理系统2年',\n", " 'type': 2,\n", " 'validityPeriod': 24},\n", " {'infoId': '14582097882934061696',\n", " 'pkId': '15632864740751982653',\n", " 'saasEdition': 30,\n", " 'saasEditionName': '旗舰版',\n", " 'sellMode': 0,\n", " 'sellPrice': 3599.0,\n", " 'spuName': '续约旗舰版-门店管理系统',\n", " 'type': 2,\n", " 'validityPeriod': 12},\n", " {'infoId': '14582097882934062477',\n", " 'pkId': '15632863778524119101',\n", " 'saasEdition': 10,\n", " 'saasEditionName': '基础版',\n", " 'sellMode': 0,\n", " 'sellPrice': 4397.0,\n", " 'spuName': '续约基础版-门店管理系统3年',\n", " 'type': 2,\n", " 'validityPeriod': 36},\n", " {'infoId': '14582097882934061475',\n", " 'pkId': '15632864303034417220',\n", " 'saasEdition': 20,\n", " 'saasEditionName': '标准版',\n", " 'sellMode': 0,\n", " 'sellPrice': 4398.0,\n", " 'spuName': '续约标准版-门店管理系统2年',\n", " 'type': 2,\n", " 'validityPeriod': 24},\n", " {'infoId': '14582097882934119922',\n", " 'pkId': '15632866651362316368',\n", " 'saasEdition': 35,\n", " 'saasEditionName': '尊享版',\n", " 'sellMode': 0,\n", " 'sellPrice': 4999.0,\n", " 'spuName': '续约尊享版-门店管理系统',\n", " 'type': 2,\n", " 'validityPeriod': 12},\n", " {'infoId': '14582097882934118703',\n", " 'pkId': '15632865553121558537',\n", " 'saasEdition': 40,\n", " 'saasEditionName': '至尊版',\n", " 'sellMode': 0,\n", " 'sellPrice': 5999.0,\n", " 'spuName': '续约至尊版-门店管理系统',\n", " 'type': 2,\n", " 'validityPeriod': 12},\n", " {'infoId': '14582097882934061530',\n", " 'pkId': '15632864509033467924',\n", " 'saasEdition': 20,\n", " 'saasEditionName': '标准版',\n", " 'sellMode': 0,\n", " 'sellPrice': 6397.0,\n", " 'spuName': '续约标准版-门店管理系统3年',\n", " 'type': 2,\n", " 'validityPeriod': 36},\n", " {'infoId': '14582097882934062790',\n", " 'pkId': '15632864934621102091',\n", " 'saasEdition': 30,\n", " 'saasEditionName': '旗舰版',\n", " 'sellMode': 0,\n", " 'sellPrice': 6598.0,\n", " 'spuName': '续约旗舰版-门店管理系统2年',\n", " 'type': 2,\n", " 'validityPeriod': 24},\n", " {'infoId': '14582097882934120039',\n", " 'pkId': '15632866883714170973',\n", " 'saasEdition': 35,\n", " 'saasEditionName': '尊享版',\n", " 'sellMode': 0,\n", " 'sellPrice': 9198.0,\n", " 'spuName': '续约尊享版-门店管理系统2年',\n", " 'type': 2,\n", " 'validityPeriod': 24},\n", " {'infoId': '14582097882934062861',\n", " 'pkId': '15632865133871513626',\n", " 'saasEdition': 30,\n", " 'saasEditionName': '旗舰版',\n", " 'sellMode': 0,\n", " 'sellPrice': 9597.0,\n", " 'spuName': '续约旗舰版-门店管理系统3年',\n", " 'type': 2,\n", " 'validityPeriod': 36},\n", " {'infoId': '14582097882934120240',\n", " 'pkId': '15632867295586435075',\n", " 'saasEdition': 50,\n", " 'saasEditionName': '皇冠版',\n", " 'sellMode': 0,\n", " 'sellPrice': 9999.0,\n", " 'spuName': '续约皇冠版-门店管理系统',\n", " 'type': 2,\n", " 'validityPeriod': 12},\n", " {'infoId': '14582097882934118768',\n", " 'pkId': '15632866197765111902',\n", " 'saasEdition': 40,\n", " 'saasEditionName': '至尊版',\n", " 'sellMode': 0,\n", " 'sellPrice': 10998.0,\n", " 'spuName': '续约至尊版-门店管理系统2年',\n", " 'type': 2,\n", " 'validityPeriod': 24},\n", " {'infoId': '14582097882934120138',\n", " 'pkId': '15632867088366845997',\n", " 'saasEdition': 35,\n", " 'saasEditionName': '尊享版',\n", " 'sellMode': 0,\n", " 'sellPrice': 13397.0,\n", " 'spuName': '续约尊享版-门店管理系统3年',\n", " 'type': 2,\n", " 'validityPeriod': 36},\n", " {'infoId': '14582097882934119826',\n", " 'pkId': '15632866379017768961',\n", " 'saasEdition': 40,\n", " 'saasEditionName': '至尊版',\n", " 'sellMode': 0,\n", " 'sellPrice': 15997.0,\n", " 'spuName': '续约至尊版-门店管理系统3年',\n", " 'type': 2,\n", " 'validityPeriod': 36},\n", " {'infoId': '14582097882934120287',\n", " 'pkId': '15632867515841925177',\n", " 'saasEdition': 50,\n", " 'saasEditionName': '皇冠版',\n", " 'sellMode': 0,\n", " 'sellPrice': 18998.0,\n", " 'spuName': '续约皇冠版-门店管理系统2年',\n", " 'type': 2,\n", " 'validityPeriod': 24},\n", " {'infoId': '14582097882934119441',\n", " 'pkId': '15632867688550776879',\n", " 'saasEdition': 50,\n", " 'saasEditionName': '皇冠版',\n", " 'sellMode': 0,\n", " 'sellPrice': 27997.0,\n", " 'spuName': '续约皇冠版-门店管理系统3年',\n", " 'type': 2,\n", " 'validityPeriod': 36}],\n", " 'message': 'SUCCESS'}" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "skuList" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "11240984669917040519" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "groupId" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "14365556958331777365" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "passportId" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "'dict' object is not callable", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mcouponAvailableQuery_list\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcouponAvailableQuery\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpassportId\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mgroupId\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mskuList\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;31mTypeError\u001b[0m: 'dict' object is not callable" ] } ], "source": [ "couponAvailableQuery_list = couponAvailableQuery(passportId,groupId,skuList)" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [], "source": [ "cellPhone_group_name = queryCompanies(\"13679207172\")" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [], "source": [ "querysku_List = queryskuList()" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'code': 200,\n", " 'data': {'f6User': True,\n", " 'groupList': [{'groupId': '11240984669917396094',\n", " 'groupName': '嘀嗒名车维修服务中心'}],\n", " 'passportId': '14365556958331777365'},\n", " 'message': 'SUCCESS'}" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cellPhone_group_name" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'code': 200,\n", " 'data': [{'applyOrg': '0',\n", " 'applySkuList': ['10546443564011488721',\n", " '10546443564011489866',\n", " '10546443564011491837',\n", " '10546443564011487432',\n", " '10546443564011486031',\n", " '10546443564011484540'],\n", " 'conditionType': 1,\n", " 'conditionValue': 100.0,\n", " 'couponName': '邀请有礼-新客奖励(短信包)',\n", " 'couponTemplateId': '75455',\n", " 'couponValue': 50.0,\n", " 'customerId': '14365556958331777365',\n", " 'goodsRangeType': 0,\n", " 'groupName': '',\n", " 'id': '8562643',\n", " 'validityBegin': 1657728000000,\n", " 'validityBeginStr': '2022-07-14',\n", " 'validityEnd': 1689263999000,\n", " 'validityEndStr': '2023-07-13'},\n", " {'applyOrg': '11240984669917396094',\n", " 'applySkuList': ['14582097882934062210'],\n", " 'conditionType': 0,\n", " 'conditionValue': None,\n", " 'couponName': '基础版1年续约优惠券',\n", " 'couponTemplateId': '125514',\n", " 'couponValue': 600.0,\n", " 'customerId': '14365556958331777365',\n", " 'goodsRangeType': 0,\n", " 'groupName': '嘀嗒名车维修服务中心',\n", " 'id': '11325321',\n", " 'validityBegin': 1688486400000,\n", " 'validityBeginStr': '2023-07-05',\n", " 'validityEnd': 1689091199000,\n", " 'validityEndStr': '2023-07-11'}],\n", " 'message': 'SUCCESS'}" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "passportId=int(cellPhone_group_name['data']['passportId'])\n", "groupId = int(result['id_own_group'][0])\n", "skuList = queryskuList()\n", "couponAvailableQuery = couponAvailableQuery(passportId,groupId,skuList)\n", "for data_ONE in couponAvailableQuery['data']:\n", " if data_ONE ['couponName'] ==\"基础版1年续约优惠券\":\n", " data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + data_ONE ['couponName'] + \":\"+ data_ONE ['couponValue'] +\";\"" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'applyOrg': '0', 'applySkuList': ['10546443564011488721', '10546443564011489866', '10546443564011491837', '10546443564011487432', '10546443564011486031', '10546443564011484540'], 'conditionType': 1, 'conditionValue': 100.0, 'couponName': '邀请有礼-新客奖励(短信包)', 'couponTemplateId': '75455', 'couponValue': 50.0, 'customerId': '14365556958331777365', 'goodsRangeType': 0, 'groupName': '', 'id': '8562643', 'validityBegin': 1657728000000, 'validityBeginStr': '2022-07-14', 'validityEnd': 1689263999000, 'validityEndStr': '2023-07-13'}\n", "{'applyOrg': '11240984669917396094', 'applySkuList': ['14582097882934062210'], 'conditionType': 0, 'conditionValue': None, 'couponName': '基础版1年续约优惠券', 'couponTemplateId': '125514', 'couponValue': 600.0, 'customerId': '14365556958331777365', 'goodsRangeType': 0, 'groupName': '嘀嗒名车维修服务中心', 'id': '11325321', 'validityBegin': 1688486400000, 'validityBeginStr': '2023-07-05', 'validityEnd': 1689091199000, 'validityEndStr': '2023-07-11'}\n" ] } ], "source": [ "for data_ONE in couponAvailableQuery['data']:\n", " if data_ONE ['couponName'] ==\"基础版1年续约优惠券\":\n", " data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + data_ONE ['couponName'] + \":\"+ data_ONE ['couponValue'] +\";\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "OrgId_list1 = couponAvailableQuery(OrgId_list)" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1599" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "int(textField_ljwon3vt[result['saas_edition_fmt'][0] + \"1\"])" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_new['textField_ljibuzgj']" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'1'" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_new['textField_ljibuzgp']" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "unsupported operand type(s) for -: 'str' and 'float'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mtextField_ljwon3vt\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'saas_edition_fmt'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;34m\"1\"\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0mdata_new\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'textField_ljibuzgg'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;31mTypeError\u001b[0m: unsupported operand type(s) for -: 'str' and 'float'" ] } ], "source": [ "textField_ljwon3vt[result['saas_edition_fmt'][0] + \"1\"] - data_new['textField_ljibuzgg']" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "OrgId_list1 = couponAvailableQuery(OrgId_list)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'13679207172'" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_new['textField_ljibuzgl']" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "renewalDiscountAmount = queryLastSaasInfo(data_new['textField_ljibuzgl'])\n", "renewalDiscountAmount[\"data\"][\"renewalDiscountAmount\"]" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'1599'" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'''读取商品和券信息'''\n", "FORMID_TWO = \"FORM-6L966171O3RB70TJDB75R6RBI31V2NNACKCJLF1\" # 商品ID券ID关系表\n", "all_skuId = {}\n", "all_couponTemplateId = {}\n", "textField_ljwon3vt = {}\n", "form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=1, n=100)\n", "PAGES_TWO = form_data_TWO.get('totalCount')//100 + 1\n", "for a in range(1, PAGES_TWO+1):\n", " form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=a, n=100)\n", " for data in form_data_TWO.get('data'):\n", " all_skuId[data['formData']['textField_vmqmrm1'] + data['formData']['textField_cfm11ut']] = data['formData']['textField_nt0h72h']\n", " all_couponTemplateId[data['formData']['textField_vmqmrm1'] + data['formData']['textField_cfm11ut']] = data['formData']['textField_47og525']\n", " textField_ljwon3vt[data['formData']['textField_vmqmrm1'] + data['formData']['textField_cfm11ut']] = data['formData']['textField_ljwon3vt']\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'textField_47og525': '125538',\n", " 'textField_nt0h72h': '15632867688550776879',\n", " 'textField_cfm11ut': '3',\n", " 'textField_vmqmrm1': '皇冠版'}" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['formData']" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "999.0" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "OrgId_list = queryDetailByOrgId(result['id_own_org'][0])\n", "lastSaasOrderPrice = OrgId_list['data']['lastSaasOrderPrice']/OrgId_list['data']['lastTransactionYear']\n", "lastSaasOrderPrice" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "# 获取公司名称+门店名称+门店版本+到期日\n", "data_new['textField_ljibuzgm'] = result['group_name'][0]\n", "data_new['textField_ljibuzgh'] = result['org_name'][0]\n", "data_new['textField_ljibuzgi'] = result['saas_edition_fmt'][0]\n", "data_new['textField_ljibuzgf'] = result['expiry_time'][0]" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'textField_ljibuzgl': '13679207172',\n", " 'textField_ljibuzgm': '嘀嗒名车维修服务中心',\n", " 'textField_ljibuzgh': '嘀嗒名车维修服务中心',\n", " 'textField_ljibuzgi': '基础版',\n", " 'textField_ljibuzgf': '2023-07-14 00:00:00'}" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_new" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'textField_ljibuzgl': '17375726227'}\n", "{'textField_ljibuzgl': '18165351165'}\n", "{'textField_ljibuzgl': '15829920707'}\n", "{'textField_ljibuzgl': '13679207172'}\n" ] } ], "source": [ "for data in form_data['data'][v]['data']['tableField_ljcfpjg4']:\n", " # 获取门店编码对应的信息\n", " result = data_NGV[data_NGV['org_code'] == data['textField_ljcfpjg6']]\n", " result = result.reset_index()\n", " # 基础字段预设\n", " data_new = {}\n", " # 获取手机号+判断手机号是否在公司名下\n", " if data[\"textField_ljcfpjg8\"] ==\"\": # 手机号未填写,默认填充ngv中对应的手机号\n", " data_new['textField_ljibuzgl'] = result['contact_mobile'][0]\n", " else:\n", " try:\n", " cellPhone_group_name = queryCompanies(data[\"textField_ljcfpjg8\"])\n", " if len(cellPhone_group_name['data']['groupList']) > 0:\n", " data_new['textField_ljibuzgl'] = data[\"textField_ljcfpjg8\"] \n", " except:\n", " data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"F6中不存在该手机号;\"\n", "\n", " print(data_new)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'嘀嗒名车维修服务中心': '11240984669917396094'}" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "groupName_all" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(cellPhone_group_name['data']['groupList'])" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'13679207172'" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result = data_NGV[data_NGV['org_code'] == data['textField_ljcfpjg6']]\n", "result = result.reset_index()\n", "result['contact_mobile'][0]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
indexdate_iddate_fmtid_own_groupgroup_nameid_own_orgorg_nameorg_codegroup_gradeorg_type...org_sizequalification_type_fmtbusiness_scope_fmtstore_type_fmtareastation_numberheader_type_fmtorg_stageg_count_this_monthsaas_customer_type
023934202307092023-07-0911240984669917396094嘀嗒名车维修服务中心11240984669917403098嘀嗒名车维修服务中心CHS202207140184433普通客户(VIP)一般...三类资格保养,改装,洗车,维修,美容,轮胎,钣喷综合修理厂600.0010自有单店-无需选图片续约9D
\n", "

1 rows × 140 columns

\n", "
" ], "text/plain": [ " index date_id date_fmt id_own_group group_name \n", "0 23934 20230709 2023-07-09 11240984669917396094 嘀嗒名车维修服务中心 \\\n", "\n", " id_own_org org_name org_code group_grade org_type \n", "0 11240984669917403098 嘀嗒名车维修服务中心 CHS202207140184433 普通客户(VIP) 一般 \\\n", "\n", " ... org_size qualification_type_fmt business_scope_fmt store_type_fmt \n", "0 ... 中 三类资格 保养,改装,洗车,维修,美容,轮胎,钣喷 综合修理厂 \\\n", "\n", " area station_number header_type_fmt org_stage g_count_this_month \n", "0 600.00 10 自有单店-无需选图片 续约 9 \\\n", "\n", " saas_customer_type \n", "0 D \n", "\n", "[1 rows x 140 columns]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'selectField_ljicmdwn_id': '2',\n", " 'textField_ljcfpjg5': '',\n", " 'textField_ljcfpjg8': '13679207172',\n", " 'selectField_ljicmdwn': '2',\n", " 'textField_ljcfpjg6': 'CHS202207140184433'}" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 备份" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "\"\"\" 处理流程开始 \"\"\"\n", "FORMID = \"FORM-0A966I81N40CV1B48U18UBZAA8R92STJC7IJL9\" # 【测试版本】批量自动发券\n", "# 读取续约流程表单\n", "form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n", "PAGES = form_data.get('totalCount')//100 + 1\n", "\"\"\" 获取全量数据 \"\"\"\n", "for i in range(1, PAGES+1):\n", " form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)\n", " for v in range(0,len(form_data.get('data'))):\n", " # 获取当前所处节点\n", " res_new = get_approval_records(token=TOKEN, processInstanceId=form_data['data'][v]['processInstanceId'])\n", " records_new = res_new.get('result')\n", " # 获取审批节点的 taskId\n", " records_new = [item for item in records_new if item.get('type') == \"TODO\"]\n", " taskId_new = records_new[0]['activityId']\n", " taskId = records_new[0]['taskId']\n", " if taskId_new==\"sid-6470221a-82ec-4bdd-a873-245ee47a5605\": # check\n", " print(\"开始处理!\")\n", " \"\"\" 读取相关数据 \"\"\"\n", " '''读取商品和券信息'''\n", " FORMID_TWO = \"FORM-6L966171O3RB70TJDB75R6RBI31V2NNACKCJLF1\" # 商品ID券ID关系表\n", " all_skuId = {}\n", " all_couponTemplateId = {}\n", " form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=1, n=100)\n", " PAGES_TWO = form_data_TWO.get('totalCount')//100 + 1\n", " for a in range(1, PAGES_TWO+1):\n", " form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=a, n=100)\n", " for data in form_data_TWO.get('data'):\n", " all_skuId[data['formData']['textField_vmqmrm1'] + data['formData']['textField_cfm11ut']] = data['formData']['textField_nt0h72h']\n", " all_couponTemplateId[data['formData']['textField_vmqmrm1'] + data['formData']['textField_cfm11ut']] = data['formData']['textField_47og525']\n", " # print(len(all_skuId),len(all_couponTemplateId))\n", "\n", " import psycopg2\n", " import pandas as pd\n", " # 获得连接\n", " conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n", " # 获得游标对象,一个游标对象可以对数据库进行执行操作\n", " cursor = conn.cursor()\n", "\n", " import datetime\n", " now_time = datetime.datetime.now()\n", " yes_time = now_time + datetime.timedelta(days=-1)\n", " yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n", " # sql语句 建表\n", " sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{yes_time_nyr}';\"\"\"\n", " # 执行语句\n", " cursor.execute(sql)\n", " # 获取结果集的每一行\n", " rows = cursor.fetchall()\n", " # 获取所有字段名\n", " all_fields = cursor.description\n", " #执行结果转化为dataframe\n", " col = []\n", " for i in all_fields:\n", " col.append(i[0])\n", " data_NGV = pd.DataFrame(list(rows),columns=col)\n", " # 关闭数据库连接\n", " cursor.close()\n", " conn.close()\n", "\n", " FORMID_ONE = \"FORM-NO766591Q79CIKPVE1WY067WKS033L9YPHWJLL\" # 【禁止提交】自动触发明细表\n", " all_CODE = {}\n", " form_data_ONE = read_instances(token=TOKEN, formUuid=FORMID_ONE, page=1, n=100)\n", " PAGES_ONE = form_data_ONE.get('totalCount')//100 + 1\n", " for F in range(1, PAGES_ONE+1):\n", " form_data_ONE = read_instances(token=TOKEN, formUuid=FORMID_ONE, page=F, n=100)\n", " for data in form_data_ONE.get('data'):\n", " if data['formData']['textField_ljchgz1h'] ==\"同意\":\n", " all_CODE[data['formData']['textField_ljchgz1f']] = data['formData']['textField_ljchgz1f']\n", "\n", "\n", " \"\"\" 开始分别读取数据并填充数据进行创建 \"\"\"\n", " succeed_all = 0\n", " fail_all = 0\n", " txt_code_all = \"\"\n", " formDataJson_check = form_data['data'][v]['data']\n", " list_new = 0\n", " for data in form_data['data'][v]['data']['tableField_ljcfpjg4']:\n", " result = data_NGV[data_NGV['org_code'] == data['textField_ljcfpjg6']]\n", " result = result.reset_index()\n", " ALL_formData = []\n", " data_new = {}\n", " try:\n", " data_new = {\n", " 'textField_ljchgz12':data[\"textField_ljcfpjg8\"],#\"cellPhone\"\n", " 'textField_ljchgz16':\"2268275546837446\",#\"dingDingId\"\n", " 'textField_ljchgz17':2,#\"stage\"\n", " 'textField_ljchgz18':1,#\"couponApplyType\"\n", " 'textField_ljchgz19':all_couponTemplateId[result['saas_edition_fmt'][0] + data['textField_ljcgefye']],#\"couponTemplateId\"\n", " 'textField_ljchgz1a':data[\"textField_ljcfpjg5\"],#\"couponAmount\"\n", " 'textField_ljchgz1b':1,#\"grantGroup\"\n", " 'textField_ljchgz1c':result['id_own_group'][0],#\"groupId\"\n", " 'textField_ljchgz1d':all_skuId[result['saas_edition_fmt'][0] + data['textField_ljcgefye']],#\"skuId\"\n", " 'textField_ljchgz1e':result['id_own_org'][0],#\"orgId\"\n", " 'textField_ljchgz13':0,#\"demotion\"\n", " 'textField_ljchgz14':0,#\"demotionSaaSEdition\"\n", " 'textField_ljchgz15':data[\"textField_ljcfpjg7\"],#\"公司名称\"\n", " 'textField_ljchgz1f':data[\"textField_ljcfpjg6\"],#\"门店编码\"\n", " # 'textField_ljchgz1i':data[\"数据集\"][i],#\"数据集\"\n", " 'textField_ljchgz1h':\"同意\",#\"check结果\"\n", " }\n", " data_new['textField_ljchgz1i'] = str({\n", " \"cellPhone\":data[\"textField_ljcfpjg8\"], # 收劵人手机号码\n", " \"dingDingId\":\"2268275546837446\", # 申请人钉钉ID\n", " \"stage\":2, # 所属阶段(新签:1,续约:2)\n", " \"couponApplyType\":1, # 优惠券申请类型;新签:saas优惠劵申请:1,短信优惠劵申请:2,人工服务优惠劵申请:3;续约:saas续约优惠劵申请:1,saas升级优惠劵申请:2,短信优惠劵申请:3,人工服务优惠劵申请:4(暂不支持)\n", " \"detailList\":[{ # 发劵明细列表\n", " \"couponTemplateId\":all_couponTemplateId[result['saas_edition_fmt'][0] + data['textField_ljcgefye']], # 劵模板ID\n", " \"couponAmount\":int(data[\"textField_ljcfpjg5\"]), # 劵金额,>0\n", " \"grantGroup\":1, # 1:发送到公司+人,0:发送到人\n", " \"groupId\":result['id_own_group'][0], # 发放公司ID,发在公司下=true是有值\n", " \"skuId\":all_skuId[result['saas_edition_fmt'][0] + data['textField_ljcgefye']], # 商品id \n", " \"orgId\":result['id_own_org'][0], # 门店ID,(申请续约劵并且降级时必填)\n", " \"demotion\":0, # 降级(是:1,否:0)\n", " \"demotionSaaSEdition\":0 # 降级版本,门店降级时必填\n", " }]\n", " })\n", " data_new['textField_ljchgz1i'] = data_new['textField_ljchgz1i'].replace(\"'\", '\"')\n", " data_new['textField_ljchgz1i'] = data_new['textField_ljchgz1i'].replace(\" \", \"\")\n", " \n", " if data[\"textField_ljcfpjg7\"] != result['group_name'][0]:\n", " data_new['textField_ljchgz1h'] = data_new['textField_ljchgz1h'] + \"公司名称与门店编码对应的group_name关系错误!\"\n", " if data[\"textField_ljcfpjg7\"] not in groupName_all:\n", " data_new['textField_ljchgz1h'] = data_new['textField_ljchgz1h'] + \"联系电话与公司名称对应的contact_mobile关系错误!\"\n", " except:\n", " data_new['textField_ljchgz1h'] = \"数据异常无法创建集合数据!\"\n", " try:\n", " cellPhone_group_name = queryCompanies(data[\"textField_ljcfpjg8\"])\n", " groupName_all = {}\n", " for data_two in cellPhone_group_name['data']['groupList']:\n", " groupName_all[data_two[\"groupName\"]]=data_two[\"groupId\"]\n", " except:\n", " data_new['textField_ljchgz1h'] = data_new['textField_ljchgz1h'] + \"F6中不存在该手机号!\"\n", " try:\n", " OrgId_list = queryDetailByOrgId(result['id_own_org'][0])\n", " lastSaasOrderPrice = OrgId_list['data']['lastSaasOrderPrice']/OrgId_list['data']['lastTransactionYear']\n", " except:\n", " data_new['textField_ljchgz1h'] = data_new['textField_ljchgz1h'] + \"门店编码查询不到上次购买价\"\n", " \n", " if data[\"textField_ljcfpjg6\"] in all_CODE:\n", " data_new['textField_ljchgz1h'] = data_new['textField_ljchgz1h'] + \"已经发过券了,请勿重复发券!\"\n", " if data_new['textField_ljchgz1h'] == \"同意\":\n", " succeed_all = succeed_all + 1\n", " else:\n", " fail_all = succeed_all + 1\n", " data_new['textField_ljchgz1h'] = data_new['textField_ljchgz1h'].replace(\"同意\", \"\")\n", " try:\n", " txt_code_all = txt_code_all + data[\"textField_ljcfpjg7\"]\n", " except:\n", " pass\n", " # check结果回传\n", " \n", " formDataJson_check['tableField_ljcfpjg4'][list_new]['textField_lje1r7at'] = data_new['textField_ljchgz1h']\n", " if data_new['textField_ljchgz1h'] == \"同意\":\n", " formDataJson_check['tableField_ljcfpjg4'][list_new]['radioField_lje1r7au'] = \"是\"\n", " else:\n", " formDataJson_check['tableField_ljcfpjg4'][list_new]['radioField_lje1r7au'] = \"否\"\n", " list_new = list_new + 1\n", " ALL_formData.append(json.dumps(data_new, cls=NpEncoder)) \n", " FORMID_NEW = \"FORM-XHA66881AUMBJR6171OZXBSJD7F929XA7HCJLX\" # 【禁止提交】自动触发明细表\n", " res = Batch_creation(FORMID_NEW,TOKEN,ALL_formData)\n", " print(res)\n", " time.sleep(2)\n", " txt_all = f\"发送成功:{succeed_all}条;发送失败:{fail_all}条;{txt_code_all}\"\n", " res=aggree_approval(token=TOKEN, taskId=taskId, processInstanceId=form_data['data'][v]['processInstanceId'],res_new =\"2268275546837446\",formDataJson=formDataJson_check)\n", " print(form_data['data'][v]['processInstanceId'],res.json())\n", " time.sleep(2)\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 分割---------------------------------------------------------" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# 读取审批结果\n", "# 补充字段\n", "# check\n", "# 将数据创建到明细表中\n", "# 每2秒同意一条并调用集成自动化自动发券" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'code': 200,\n", " 'data': {'f6User': True,\n", " 'groupList': [],\n", " 'passportId': '10546172455180024665'},\n", " 'message': 'SUCCESS'}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "import time\n", "import requests\n", "import json\n", "\n", "url = 'http://manage.f6yc.com/hive-admin/yida/account/query?cellPhone=13572193083'\n", "\n", "headers = {\n", " \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n", "}\n", "\n", "res = requests.post(url,headers=headers)\n", "res.json()" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'code': 200,\n", " 'data': {'abbreviation': '恒鑫隆汽车服务',\n", " 'code': 'CHS202111160145737',\n", " 'endDate': '2023-06-08',\n", " 'lastSaasOrderPrice': 1199.0,\n", " 'lastTransactionYear': 1.0,\n", " 'name': '深圳市恒鑫隆汽车服务有限公司',\n", " 'orgStatus': 0,\n", " 'pkId': None,\n", " 'saas': True,\n", " 'saasEdition': 10,\n", " 'saasEditionName': '基础版',\n", " 'saasStatus': 3,\n", " 'serviceImplPrincipal': '严冬延'},\n", " 'message': 'SUCCESS'}" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def queryDetailByOrgId(orgId):\n", " \"\"\" 函数功能:自动发券查询门店上次成交价 \"\"\"\n", "\n", " api = 'http://manage.f6yc.com/hive-admin/yida/org/queryDetailByOrgId?orgId=' + orgId\n", "\n", " headers = {\n", " \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n", " }\n", " res = requests.post(api,headers=headers)\n", " return res.json()\n", "OrgId_list = queryDetailByOrgId(\"11240984669917181016\")\n", "lastSaasOrderPrice = OrgId_list['data']['lastSaasOrderPrice']/OrgId_list['data']['lastTransactionYear']" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "开始处理!\n", "29469fde-bdaf-4180-8d3a-3a4a8c596fcd {}\n" ] } ], "source": [ "# 基础信息\n", "import pandas as pd\n", "import numpy as np\n", "import requests\n", "import json\n", "import time\n", "import re\n", "import sys\n", "from datetime import datetime\n", "from dateutil.relativedelta import relativedelta\n", "from pathlib import Path\n", "from urllib.parse import quote\n", "from datetime import date, timedelta\n", "import datetime\n", "from io import BytesIO\n", "\n", "ROOT = Path('.').absolute() # 当前工作目录\n", "\n", "def generateToken() -> str:\n", " \"\"\" 生成 token \"\"\"\n", "\n", " token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'\n", "\n", " # 该信息在钉钉开放应用中\n", " data = {\n", " \"appKey\": \"ding5kqocon5s9oph5uq\",\n", " \"appSecret\": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'\n", " }\n", "\n", " res = requests.post(token_api, json=data)\n", " token = res.json()['accessToken']\n", "\n", " return token\n", "\n", "def read_processes_instances(token, formUuid, page, n):\n", " \"\"\" 函数功能:读取流程表单的所有数据 \"\"\"\n", "\n", " api = f'https://api.dingtalk.com/v1.0/yida/processes/instances?pageNumber={page}&pageSize={n}'\n", "\n", " headers = {\n", " \"Content-Type\": \"application/json\",\n", " \"x-acs-dingtalk-access-token\": token\n", " }\n", "\n", " formData = {\n", " \"appType\": \"APP_UYZ0KG6L0CCNV80GZ66O\",\n", " \"systemToken\": \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n", " \"userId\": \"yida_pub_account\", # 超级管理员账号\n", " \"language\": \"zh_CN\",\n", " \"formUuid\": formUuid,\n", " # \"searchFieldJson\": json.dumps(searchField), # 如果增加上这一项会要求升级宜搭存储\n", " \"instanceStatus\": \"RUNNING\" # 运行中\n", " }\n", "\n", " res = requests.post(api, headers=headers, json=formData)\n", " return res.json()\n", "\n", "\n", "def get_approval_records(token: str, processInstanceId: str):\n", " \"\"\" 函数功能:获取流程表单的审批记录 \"\"\"\n", " appType = \"APP_UYZ0KG6L0CCNV80GZ66O\"\n", " systemToken = \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\"\n", " userId = \"yida_pub_account\"\n", "\n", " api = f'https://api.dingtalk.com/v1.0/yida/processes/operationRecords?appType={appType}&systemToken={systemToken}&userId={userId}&language=zh_CN&processInstanceId={processInstanceId}'\n", "\n", " headers = {\n", " \"Content-Type\": \"application/json\",\n", " \"x-acs-dingtalk-access-token\": token\n", " }\n", "\n", " res = requests.get(api, headers=headers)\n", " # print('获取流程表单的审批记录')\n", " return res.json()\n", "\n", "\n", "def aggree_approval(token: str, taskId: str, processInstanceId: str,res_new,formDataJson):\n", " \"\"\" 函数功能:同意审批节点 \"\"\"\n", " api = f'https://api.dingtalk.com/v1.0/yida/tasks/execute'\n", "\n", " headers = {\n", " \"Content-Type\": \"application/json\",\n", " \"x-acs-dingtalk-access-token\": token\n", " }\n", "\n", " payload = {\n", " \"outResult\": \"AGREE\",\n", " \"appType\": \"APP_UYZ0KG6L0CCNV80GZ66O\",\n", " \"systemToken\": \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n", " \"remark\": \"同意(接口自动)\",\n", " \"formDataJson\": json.dumps(formDataJson),\n", " \"processInstanceId\": processInstanceId,\n", " # \"userId\": \"yida_pub_account\",\n", " \"userId\": res_new, \n", " \"language\": \"zh_CN\",\n", " \"taskId\": int(taskId)\n", " }\n", "\n", " res = requests.post(api, headers=headers, json=payload)\n", " # print('同意审批节点')\n", " return res\n", "\n", "def read_instances(token, formUuid, page, n):\n", " \"\"\" 函数功能:读取普通表单的所有数据 \"\"\"\n", "\n", " api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'\n", "\n", " headers = {\n", " \"Content-Type\": \"application/json\",\n", " \"x-acs-dingtalk-access-token\": token\n", " }\n", "\n", " formData = {\n", " \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n", " \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n", " \"userId\" : \"yida_pub_account\",\n", " \"language\" : \"zh_CN\",\n", " \"formUuid\" : formUuid,\n", " \"currentPage\" : page,\n", " \"pageSize\" : n\n", " }\n", "\n", " res = requests.post(api, headers=headers, json=formData)\n", " return res.json()\n", "\n", "def queryCompanies(cellPhone):\n", " \"\"\" 函数功能:自动发券查询手机号所处公司 \"\"\"\n", "\n", " api = 'http://manage.f6yc.com/hive-admin/yida/account/query?cellPhone=' + cellPhone\n", "\n", " headers = {\n", " \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n", " }\n", " res = requests.post(api,headers=headers)\n", " return res.json()\n", "def queryDetailByOrgId(orgId):\n", " \"\"\" 函数功能:自动发券查询门店上次成交价 \"\"\"\n", "\n", " api = 'http://manage.f6yc.com/hive-admin/yida/org/queryDetailByOrgId?orgId=' + orgId\n", "\n", " headers = {\n", " \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n", " }\n", " res = requests.post(api,headers=headers)\n", " return res.json()\n", "def component(FORMID,TOKEN):\n", " \"\"\" 获取组件信息 \"\"\"\n", " api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'\n", "\n", " headers = {\n", " \"Content-Type\": \"application/json\",\n", " \"x-acs-dingtalk-access-token\": TOKEN\n", " }\n", " payload = {\n", " \"formUuid\" : FORMID,\n", " \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n", " # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n", " \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n", " # \"language\" : \"zh_CN\",\n", " \"userId\" : \"yida_pub_account\"\n", " }\n", "\n", " res = requests.get(api, headers=headers, json=payload)\n", "\n", " return res.json()\n", "\n", "def Batch_creation(FORMID,TOKEN,ALL_formData):\n", " \"\"\" 批量创建表单实例 \"\"\"\n", " api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'\n", "\n", " headers = {\n", " \"Content-Type\": \"application/json\",\n", " \"x-acs-dingtalk-access-token\": TOKEN\n", " }\n", " payload = {\n", " # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n", " \"noExecuteExpression\" : \"false\",\n", " \"formUuid\" : FORMID,\n", " \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n", " \"asynchronousExecution\" : \"false\",\n", " \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n", " \"keepRunningAfterException\" : \"true\",\n", " \"userId\" : \"yida_pub_account\",\n", " \"formDataJsonList\" : ALL_formData,\n", " # \"formDataJsonList\" : json.dumps(ALL_formData, cls=NpEncoder),\n", " }\n", "\n", " res = requests.post(api, headers=headers, json=payload)\n", " return res.json()\n", "\n", "class NpEncoder(json.JSONEncoder):\n", " def default(self, obj):\n", " if isinstance(obj, np.integer):\n", " return int(obj)\n", " elif isinstance(obj, np.floating):\n", " return float(obj)\n", " elif isinstance(obj, np.ndarray):\n", " return obj.tolist()\n", " else:\n", " return super(NpEncoder, self).default(obj)\n", " \n", "# '''获取表内控件信息 '''\n", "# FORMID_NEW = \"FORM-XHA66881AUMBJR6171OZXBSJD7F929XA7HCJLX\"\n", "# component_list = component(FORMID_NEW,TOKEN)\n", "# for i in range(len(component_list['result'])):\n", "# componentName = component_list['result'][i]['componentName']\n", "# name_value = component_list['result'][i]['label']['value']\n", "# fieldId = component_list['result'][i]['fieldId']\n", "# print(\"'\",fieldId,\"':\",\"data[\",name_value,\"][i],#\",name_value)\n", "\n", "\"\"\" 处理流程开始 \"\"\"\n", "TOKEN = generateToken()\n", "FORMID = \"FORM-MFA66S91S4YBY5D36RN1JB2SD8V13CX4OFCJL3\" # 【客成专用】批量自动发券\n", "# 读取续约流程表单\n", "form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n", "PAGES = form_data.get('totalCount')//100 + 1\n", "\"\"\" 获取全量数据 \"\"\"\n", "for i in range(1, PAGES+1):\n", " form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)\n", " for v in range(0,len(form_data.get('data'))):\n", " # 获取当前所处节点\n", " res_new = get_approval_records(token=TOKEN, processInstanceId=form_data['data'][v]['processInstanceId'])\n", " records_new = res_new.get('result')\n", " # 获取审批节点的 taskId\n", " records_new = [item for item in records_new if item.get('type') == \"TODO\"]\n", " taskId_new = records_new[0]['activityId']\n", " taskId = records_new[0]['taskId']\n", " if taskId_new==\"sid-398ea39a-7eec-a6ee-5ff6-eb5c8664de63\": # check\n", " print(\"开始处理!\")\n", " \"\"\" 读取相关数据 \"\"\"\n", " '''读取商品和券信息'''\n", " FORMID_TWO = \"FORM-6L966171O3RB70TJDB75R6RBI31V2NNACKCJLF1\" # 商品ID券ID关系表\n", " all_skuId = {}\n", " all_couponTemplateId = {}\n", " form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=1, n=100)\n", " PAGES_TWO = form_data_TWO.get('totalCount')//100 + 1\n", " for a in range(1, PAGES_TWO+1):\n", " form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=a, n=100)\n", " for data in form_data_TWO.get('data'):\n", " all_skuId[data['formData']['textField_vmqmrm1'] + data['formData']['textField_cfm11ut']] = data['formData']['textField_nt0h72h']\n", " all_couponTemplateId[data['formData']['textField_vmqmrm1'] + data['formData']['textField_cfm11ut']] = data['formData']['textField_47og525']\n", " # print(len(all_skuId),len(all_couponTemplateId))\n", "\n", " import psycopg2\n", " import pandas as pd\n", " # 获得连接\n", " conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n", " # 获得游标对象,一个游标对象可以对数据库进行执行操作\n", " cursor = conn.cursor()\n", "\n", " import datetime\n", " now_time = datetime.datetime.now()\n", " yes_time = now_time + datetime.timedelta(days=-1)\n", " yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n", " # sql语句 建表\n", " sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{yes_time_nyr}';\"\"\"\n", " # 执行语句\n", " cursor.execute(sql)\n", " # 获取结果集的每一行\n", " rows = cursor.fetchall()\n", " # 获取所有字段名\n", " all_fields = cursor.description\n", " #执行结果转化为dataframe\n", " col = []\n", " for i in all_fields:\n", " col.append(i[0])\n", " data_NGV = pd.DataFrame(list(rows),columns=col)\n", " # 关闭数据库连接\n", " cursor.close()\n", " conn.close()\n", "\n", " FORMID_ONE = \"FORM-XHA66881AUMBJR6171OZXBSJD7F929XA7HCJLX\" # 【禁止提交】自动触发明细表\n", " all_CODE = {}\n", " form_data_ONE = read_instances(token=TOKEN, formUuid=FORMID_ONE, page=1, n=100)\n", " PAGES_ONE = form_data_ONE.get('totalCount')//100 + 1\n", " for F in range(1, PAGES_ONE+1):\n", " form_data_ONE = read_instances(token=TOKEN, formUuid=FORMID_ONE, page=F, n=100)\n", " for data in form_data_ONE.get('data'):\n", " if data['formData']['textField_ljchgz1h'] ==\"同意\":\n", " all_CODE[data['formData']['textField_ljchgz1f']] = data['formData']['textField_ljchgz1f']\n", "\n", "\n", " \"\"\" 开始分别读取数据并填充数据进行创建 \"\"\"\n", " succeed_all = 0\n", " fail_all = 0\n", " txt_code_all = \"\"\n", " formDataJson_check = form_data['data'][v]['data']\n", " list_new = 0\n", " for data in form_data['data'][v]['data']['tableField_ljcfpjg4']:\n", " result = data_NGV[data_NGV['org_code'] == data['textField_ljcfpjg6']]\n", " result = result.reset_index()\n", " ALL_formData = []\n", " data_new = {}\n", " try:\n", " data_new = {\n", " 'textField_ljchgz12':data[\"textField_ljcfpjg8\"],#\"cellPhone\"\n", " 'textField_ljchgz16':\"2268275546837446\",#\"dingDingId\"\n", " 'textField_ljchgz17':2,#\"stage\"\n", " 'textField_ljchgz18':1,#\"couponApplyType\"\n", " 'textField_ljchgz19':all_couponTemplateId[result['saas_edition_fmt'][0] + data['textField_ljcgefye']],#\"couponTemplateId\"\n", " 'textField_ljchgz1a':data[\"textField_ljcfpjg5\"],#\"couponAmount\"\n", " 'textField_ljchgz1b':1,#\"grantGroup\"\n", " 'textField_ljchgz1c':result['id_own_group'][0],#\"groupId\"\n", " 'textField_ljchgz1d':all_skuId[result['saas_edition_fmt'][0] + data['textField_ljcgefye']],#\"skuId\"\n", " 'textField_ljchgz1e':result['id_own_org'][0],#\"orgId\"\n", " 'textField_ljchgz13':0,#\"demotion\"\n", " 'textField_ljchgz14':0,#\"demotionSaaSEdition\"\n", " 'textField_ljchgz15':data[\"textField_ljcfpjg7\"],#\"公司名称\"\n", " 'textField_ljchgz1f':data[\"textField_ljcfpjg6\"],#\"门店编码\"\n", " # 'textField_ljchgz1i':data[\"数据集\"][i],#\"数据集\"\n", " 'textField_ljchgz1h':\"同意\",#\"check结果\"\n", " }\n", " data_new['textField_ljchgz1i'] = str({\n", " \"cellPhone\":data[\"textField_ljcfpjg8\"], # 收劵人手机号码\n", " \"dingDingId\":\"2268275546837446\", # 申请人钉钉ID\n", " \"stage\":2, # 所属阶段(新签:1,续约:2)\n", " \"couponApplyType\":1, # 优惠券申请类型;新签:saas优惠劵申请:1,短信优惠劵申请:2,人工服务优惠劵申请:3;续约:saas续约优惠劵申请:1,saas升级优惠劵申请:2,短信优惠劵申请:3,人工服务优惠劵申请:4(暂不支持)\n", " \"detailList\":[{ # 发劵明细列表\n", " \"couponTemplateId\":all_couponTemplateId[result['saas_edition_fmt'][0] + data['textField_ljcgefye']], # 劵模板ID\n", " \"couponAmount\":int(data[\"textField_ljcfpjg5\"]), # 劵金额,>0\n", " \"grantGroup\":1, # 1:发送到公司+人,0:发送到人\n", " \"groupId\":result['id_own_group'][0], # 发放公司ID,发在公司下=true是有值\n", " \"skuId\":all_skuId[result['saas_edition_fmt'][0] + data['textField_ljcgefye']], # 商品id \n", " \"orgId\":result['id_own_org'][0], # 门店ID,(申请续约劵并且降级时必填)\n", " \"demotion\":0, # 降级(是:1,否:0)\n", " \"demotionSaaSEdition\":0 # 降级版本,门店降级时必填\n", " }]\n", " })\n", " data_new['textField_ljchgz1i'] = data_new['textField_ljchgz1i'].replace(\"'\", '\"')\n", " data_new['textField_ljchgz1i'] = data_new['textField_ljchgz1i'].replace(\" \", \"\")\n", " \n", " if data[\"textField_ljcfpjg7\"] != result['group_name'][0]:\n", " data_new['textField_ljchgz1h'] = data_new['textField_ljchgz1h'] + \"公司名称与门店编码对应的group_name关系错误!\"\n", " if data[\"textField_ljcfpjg7\"] not in groupName_all:\n", " data_new['textField_ljchgz1h'] = data_new['textField_ljchgz1h'] + \"联系电话与公司名称对应的contact_mobile关系错误!\"\n", " except:\n", " data_new['textField_ljchgz1h'] = \"数据异常无法创建集合数据!\"\n", " try:\n", " cellPhone_group_name = queryCompanies(data[\"textField_ljcfpjg8\"])\n", " groupName_all = {}\n", " for data_two in cellPhone_group_name['data']['groupList']:\n", " groupName_all[data_two[\"groupName\"]]=data_two[\"groupId\"]\n", " except:\n", " data_new['textField_ljchgz1h'] = data_new['textField_ljchgz1h'] + \"F6中不存在该手机号!\"\n", " try:\n", " OrgId_list = queryDetailByOrgId(result['id_own_org'][0])\n", " lastSaasOrderPrice = OrgId_list['data']['lastSaasOrderPrice']/OrgId_list['data']['lastTransactionYear']\n", " except:\n", " data_new['textField_ljchgz1h'] = data_new['textField_ljchgz1h'] + \"门店编码查询不到上次购买价\"\n", " \n", " if data[\"textField_ljcfpjg6\"] in all_CODE:\n", " data_new['textField_ljchgz1h'] = data_new['textField_ljchgz1h'] + \"已经发过券了,请勿重复发券!\"\n", " if data_new['textField_ljchgz1h'] == \"同意\":\n", " succeed_all = succeed_all + 1\n", " else:\n", " fail_all = succeed_all + 1\n", " data_new['textField_ljchgz1h'] = data_new['textField_ljchgz1h'].replace(\"同意\", \"\")\n", " try:\n", " txt_code_all = txt_code_all + data[\"textField_ljcfpjg7\"]\n", " except:\n", " pass\n", " # check结果回传\n", " \n", " formDataJson_check['tableField_ljcfpjg4'][list_new]['textField_lje1r7at'] = data_new['textField_ljchgz1h']\n", " if data_new['textField_ljchgz1h'] == \"同意\":\n", " formDataJson_check['tableField_ljcfpjg4'][list_new]['radioField_lje1r7au'] = \"是\"\n", " else:\n", " formDataJson_check['tableField_ljcfpjg4'][list_new]['radioField_lje1r7au'] = \"否\"\n", " list_new = list_new + 1\n", " # ALL_formData.append(json.dumps(data_new, cls=NpEncoder)) \n", " # FORMID_NEW = \"FORM-XHA66881AUMBJR6171OZXBSJD7F929XA7HCJLX\" # 【禁止提交】自动触发明细表\n", " # res = Batch_creation(FORMID_NEW,TOKEN,ALL_formData)\n", " # print(res)\n", " # time.sleep(2)\n", " # txt_all = f\"发送成功:{succeed_all}条;发送失败:{fail_all}条;{txt_code_all}\"\n", " res=aggree_approval(token=TOKEN, taskId=taskId, processInstanceId=form_data['data'][v]['processInstanceId'],res_new =\"2268275546837446\",formDataJson=formDataJson_check)\n", " print(form_data['data'][v]['processInstanceId'],res.json())\n", " time.sleep(2)\n", " elif taskId_new==\"sid-1b527e18-2053-657f-cdfd-5530aefcc5b7\": # api自动发券\n", " print(\"开始处理!\")\n", " \"\"\" 读取相关数据 \"\"\"\n", " '''读取商品和券信息'''\n", " FORMID_TWO = \"FORM-6L966171O3RB70TJDB75R6RBI31V2NNACKCJLF1\" # 商品ID券ID关系表\n", " all_skuId = {}\n", " all_couponTemplateId = {}\n", " form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=1, n=100)\n", " PAGES_TWO = form_data_TWO.get('totalCount')//100 + 1\n", " for a in range(1, PAGES_TWO+1):\n", " form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=a, n=100)\n", " for data in form_data_TWO.get('data'):\n", " all_skuId[data['formData']['textField_vmqmrm1'] + data['formData']['textField_cfm11ut']] = data['formData']['textField_nt0h72h']\n", " all_couponTemplateId[data['formData']['textField_vmqmrm1'] + data['formData']['textField_cfm11ut']] = data['formData']['textField_47og525']\n", " # print(len(all_skuId),len(all_couponTemplateId))\n", "\n", " import psycopg2\n", " import pandas as pd\n", " # 获得连接\n", " conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n", " # 获得游标对象,一个游标对象可以对数据库进行执行操作\n", " cursor = conn.cursor()\n", "\n", " import datetime\n", " now_time = datetime.datetime.now()\n", " yes_time = now_time + datetime.timedelta(days=-1)\n", " yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n", " # sql语句 建表\n", " sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{yes_time_nyr}';\"\"\"\n", " # 执行语句\n", " cursor.execute(sql)\n", " # 获取结果集的每一行\n", " rows = cursor.fetchall()\n", " # 获取所有字段名\n", " all_fields = cursor.description\n", " #执行结果转化为dataframe\n", " col = []\n", " for i in all_fields:\n", " col.append(i[0])\n", " data_NGV = pd.DataFrame(list(rows),columns=col)\n", " # 关闭数据库连接\n", " cursor.close()\n", " conn.close()\n", "\n", " FORMID_ONE = \"FORM-XHA66881AUMBJR6171OZXBSJD7F929XA7HCJLX\" # 【禁止提交】自动触发明细表\n", " all_CODE = {}\n", " form_data_ONE = read_instances(token=TOKEN, formUuid=FORMID_ONE, page=1, n=100)\n", " PAGES_ONE = form_data_ONE.get('totalCount')//100 + 1\n", " for F in range(1, PAGES_ONE+1):\n", " form_data_ONE = read_instances(token=TOKEN, formUuid=FORMID_ONE, page=F, n=100)\n", " for data in form_data_ONE.get('data'):\n", " if data['formData']['textField_ljchgz1h'] ==\"同意\":\n", " all_CODE[data['formData']['textField_ljchgz1f']] = data['formData']['textField_ljchgz1f']\n", "\n", "\n", " \"\"\" 开始分别读取数据并填充数据进行创建 \"\"\"\n", " succeed_all = 0\n", " fail_all = 0\n", " txt_code_all = \"\"\n", " formDataJson_check = form_data['data'][v]['data']\n", " list_new = 0\n", " for data in form_data['data'][v]['data']['tableField_ljcfpjg4']:\n", " result = data_NGV[data_NGV['org_code'] == data['textField_ljcfpjg6']]\n", " result = result.reset_index()\n", " ALL_formData = []\n", " data_new = {}\n", " try:\n", " cellPhone_group_name = queryCompanies(data[\"textField_ljcfpjg8\"])\n", " groupName_all = {}\n", " for data_two in cellPhone_group_name['data']['groupList']:\n", " groupName_all[data_two[\"groupName\"]]=data_two[\"groupId\"]\n", " except:\n", " data_new['textField_ljchgz1h'] = \"F6中不存在该手机号!\"\n", " try:\n", " data_new = {\n", " 'textField_ljchgz12':data[\"textField_ljcfpjg8\"],#\"cellPhone\"\n", " 'textField_ljchgz16':\"2268275546837446\",#\"dingDingId\"\n", " 'textField_ljchgz17':2,#\"stage\"\n", " 'textField_ljchgz18':1,#\"couponApplyType\"\n", " 'textField_ljchgz19':all_couponTemplateId[result['saas_edition_fmt'][0] + data['textField_ljcgefye']],#\"couponTemplateId\"\n", " 'textField_ljchgz1a':data[\"textField_ljcfpjg5\"],#\"couponAmount\"\n", " 'textField_ljchgz1b':1,#\"grantGroup\"\n", " 'textField_ljchgz1c':result['id_own_group'][0],#\"groupId\"\n", " 'textField_ljchgz1d':all_skuId[result['saas_edition_fmt'][0] + data['textField_ljcgefye']],#\"skuId\"\n", " 'textField_ljchgz1e':result['id_own_org'][0],#\"orgId\"\n", " 'textField_ljchgz13':0,#\"demotion\"\n", " 'textField_ljchgz14':0,#\"demotionSaaSEdition\"\n", " 'textField_ljchgz15':data[\"textField_ljcfpjg7\"],#\"公司名称\"\n", " 'textField_ljchgz1f':data[\"textField_ljcfpjg6\"],#\"门店编码\"\n", " # 'textField_ljchgz1i':data[\"数据集\"][i],#\"数据集\"\n", " 'textField_ljchgz1h':\"同意\",#\"check结果\"\n", " 'textField_ljf6nf7s':data['radioField_lje1r7au'], #是否发券\n", " }\n", " data_new['textField_ljchgz1i'] = str({\n", " \"cellPhone\":data[\"textField_ljcfpjg8\"], # 收劵人手机号码\n", " \"dingDingId\":\"2268275546837446\", # 申请人钉钉ID\n", " \"stage\":2, # 所属阶段(新签:1,续约:2)\n", " \"couponApplyType\":1, # 优惠券申请类型;新签:saas优惠劵申请:1,短信优惠劵申请:2,人工服务优惠劵申请:3;续约:saas续约优惠劵申请:1,saas升级优惠劵申请:2,短信优惠劵申请:3,人工服务优惠劵申请:4(暂不支持)\n", " \"detailList\":[{ # 发劵明细列表\n", " \"couponTemplateId\":all_couponTemplateId[result['saas_edition_fmt'][0] + data['textField_ljcgefye']], # 劵模板ID\n", " \"couponAmount\":int(data[\"textField_ljcfpjg5\"]), # 劵金额,>0\n", " \"grantGroup\":1, # 1:发送到公司+人,0:发送到人\n", " \"groupId\":result['id_own_group'][0], # 发放公司ID,发在公司下=true是有值\n", " \"skuId\":all_skuId[result['saas_edition_fmt'][0] + data['textField_ljcgefye']], # 商品id \n", " \"orgId\":result['id_own_org'][0], # 门店ID,(申请续约劵并且降级时必填)\n", " \"demotion\":0, # 降级(是:1,否:0)\n", " \"demotionSaaSEdition\":0 # 降级版本,门店降级时必填\n", " }]\n", " })\n", " data_new['textField_ljchgz1i'] = data_new['textField_ljchgz1i'].replace(\"'\", '\"')\n", " data_new['textField_ljchgz1i'] = data_new['textField_ljchgz1i'].replace(\" \", \"\")\n", " if data[\"textField_ljcfpjg7\"] != result['group_name'][0]:\n", " data_new['textField_ljchgz1h'] = \"公司名称与门店编码对应的group_name关系错误!\"\n", " if data[\"textField_ljcfpjg7\"] not in groupName_all:\n", " data_new['textField_ljchgz1h'] = \"联系电话与公司名称对应的contact_mobile关系错误!\"\n", " except:\n", " data_new['textField_ljchgz1h'] = \"数据异常无法创建集合数据!\"\n", " if data[\"textField_ljcfpjg6\"] in all_CODE:\n", " data_new['textField_ljchgz1h'] = data_new['textField_ljchgz1h'] + \"已经发过券了,请勿重复发券!\"\n", " if data_new['textField_ljchgz1h'] == \"同意\" and data_new['radioField_lje1r7au'] == \"是\":\n", " succeed_all = succeed_all + 1\n", " else:\n", " fail_all = succeed_all + 1\n", " try:\n", " txt_code_all = txt_code_all + data[\"textField_ljcfpjg7\"]\n", " except:\n", " pass\n", " # check结果回传\n", " \n", " formDataJson_check['tableField_ljcfpjg4'][list_new]['textField_lje1r7at'] = data_new['textField_ljchgz1h']\n", " if data_new['textField_ljchgz1h'] == \"同意\":\n", " formDataJson_check['tableField_ljcfpjg4'][list_new]['radioField_lje1r7au'] = \"是\"\n", " else:\n", " formDataJson_check['tableField_ljcfpjg4'][list_new]['radioField_lje1r7au'] = \"否\"\n", " list_new = list_new + 1\n", " ALL_formData.append(json.dumps(data_new, cls=NpEncoder)) \n", " FORMID_NEW = \"FORM-XHA66881AUMBJR6171OZXBSJD7F929XA7HCJLX\" # 【禁止提交】自动触发明细表\n", " res = Batch_creation(FORMID_NEW,TOKEN,ALL_formData)\n", " print(res)\n", " time.sleep(2)\n", " txt_all = f\"发送成功:{succeed_all}条;发送失败:{fail_all}条;{txt_code_all}\"\n", " res=aggree_approval(token=TOKEN, taskId=taskId, processInstanceId=form_data['data'][v]['processInstanceId'],res_new =\"2268275546837446\",formDataJson=formDataJson_check)\n", " print(form_data['data'][v]['processInstanceId'],res.json())\n", " time.sleep(2)" ] } ], "metadata": { "kernelspec": { "display_name": "F6processing", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.4" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }