Files
F6--/其它系统脚本/宜搭自动发券批量V4.ipynb
T
2026-01-30 11:28:35 +08:00

3516 lines
159 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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<ipython-input-27-c0c2700b5dc4>\u001b[0m in \u001b[0;36m<module>\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": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>index</th>\n",
" <th>date_id</th>\n",
" <th>date_fmt</th>\n",
" <th>id_own_group</th>\n",
" <th>group_name</th>\n",
" <th>id_own_org</th>\n",
" <th>org_name</th>\n",
" <th>org_code</th>\n",
" <th>group_grade</th>\n",
" <th>org_type</th>\n",
" <th>...</th>\n",
" <th>org_size</th>\n",
" <th>qualification_type_fmt</th>\n",
" <th>business_scope_fmt</th>\n",
" <th>store_type_fmt</th>\n",
" <th>area</th>\n",
" <th>station_number</th>\n",
" <th>header_type_fmt</th>\n",
" <th>org_stage</th>\n",
" <th>g_count_this_month</th>\n",
" <th>saas_customer_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>5030</td>\n",
" <td>20230730</td>\n",
" <td>2023-07-30</td>\n",
" <td>11240984669916891021</td>\n",
" <td>弘升汽车养护中心</td>\n",
" <td>11240984669916896021</td>\n",
" <td>弘升汽车养护中心</td>\n",
" <td>CHS202104160121089</td>\n",
" <td>普通客户(VIP</td>\n",
" <td>一般</td>\n",
" <td>...</td>\n",
" <td>小</td>\n",
" <td>三类资格</td>\n",
" <td>保养,洗车,维修,美容,装潢精品,轮胎,钣喷</td>\n",
" <td>快修快保店</td>\n",
" <td>162.00</td>\n",
" <td>4</td>\n",
" <td>自有单店-无需选图片</td>\n",
" <td>续约</td>\n",
" <td>30</td>\n",
" <td>C</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1 rows × 140 columns</p>\n",
"</div>"
],
"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<ipython-input-88-57a13a01e67b>\u001b[0m in \u001b[0;36m<module>\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<ipython-input-57-ec8d633fbd45>\u001b[0m in \u001b[0;36m<module>\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": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>index</th>\n",
" <th>date_id</th>\n",
" <th>date_fmt</th>\n",
" <th>id_own_group</th>\n",
" <th>group_name</th>\n",
" <th>id_own_org</th>\n",
" <th>org_name</th>\n",
" <th>org_code</th>\n",
" <th>group_grade</th>\n",
" <th>org_type</th>\n",
" <th>...</th>\n",
" <th>org_size</th>\n",
" <th>qualification_type_fmt</th>\n",
" <th>business_scope_fmt</th>\n",
" <th>store_type_fmt</th>\n",
" <th>area</th>\n",
" <th>station_number</th>\n",
" <th>header_type_fmt</th>\n",
" <th>org_stage</th>\n",
" <th>g_count_this_month</th>\n",
" <th>saas_customer_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>23934</td>\n",
" <td>20230709</td>\n",
" <td>2023-07-09</td>\n",
" <td>11240984669917396094</td>\n",
" <td>嘀嗒名车维修服务中心</td>\n",
" <td>11240984669917403098</td>\n",
" <td>嘀嗒名车维修服务中心</td>\n",
" <td>CHS202207140184433</td>\n",
" <td>普通客户(VIP</td>\n",
" <td>一般</td>\n",
" <td>...</td>\n",
" <td>中</td>\n",
" <td>三类资格</td>\n",
" <td>保养,改装,洗车,维修,美容,轮胎,钣喷</td>\n",
" <td>综合修理厂</td>\n",
" <td>600.00</td>\n",
" <td>10</td>\n",
" <td>自有单店-无需选图片</td>\n",
" <td>续约</td>\n",
" <td>9</td>\n",
" <td>D</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1 rows × 140 columns</p>\n",
"</div>"
],
"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
}