Files
F6--/F6系统常用脚本/恒泰多门店批量退卡.ipynb
2026-01-30 11:28:35 +08:00

197 lines
9.1 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"import time\n",
"import requests\n",
"import json\n",
"import xlrd\n",
"# 生成 token,参数不需要修改\n",
"def generateToken() -> str:\n",
"\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",
"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",
"def ceshi(formData)-> str:\n",
" \"\"\" 处理流程开始 \"\"\"\n",
" TOKEN = generateToken()\n",
"\n",
" \"\"\" 通过实例id 获取表单内容 \"\"\"\n",
"\n",
" api = f'https://api.dingtalk.com//v1.0/yida/processes/instances/start'\n",
"\n",
" headers = {\n",
" \"Content-Type\": \"application/json\",\n",
" \"x-acs-dingtalk-access-token\": TOKEN\n",
" }\n",
" payload = {\n",
" \"appType\" : \"APP_TNVBVZ3K8G56HG03Z45Q\",\n",
" \"systemToken\" : \"CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1\",\n",
" \"userId\" : \"2268275546837446\",\n",
" \"language\" : \"zh_CN\",\n",
" \"formUuid\" : \"FORM-UP96637151Q3XIFU9NNW9BKFUVHU2XWN0EF9L84\",\n",
" \"formDataJson\" :json.dumps(formData, cls=NpEncoder),\n",
" \"processCode\" : \"TPROC--UP96637151Q3XIFU9NNW9BKFUVHU2YWN0EF9L94\",\n",
" \"departmentId\" : \"574140511\" # 560526483 2706271\n",
" }\n",
"\n",
" res = requests.post(api, headers=headers, json=payload)\n",
" res_new = res.json()\n",
" print(\"生成失败预警!\")\n",
"\n",
"cookies_str ='financialSESSIONID=e2b2d95e-3a50-4175-9e52-a0b18856ec15; sensorsdata2015jssdkcross={\"distinct_id\":\"10691192243902595917\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; erpLanguage=zh-CN; prodOrg=11240984669917823109; unp=15730317166966239268; un=15730317166966239268; _up=-NillNN-qyBEJ--t3vnSknvoOF54zvGOscoE1X02XOFfVfjDoZHQjaZJ9Q3d-WrAAGgt60MgQHajH2BEMqCxjECoWyNjxpYEXk7xGLY883HkEvEUoY0h1gQJ-e1f6PpAWPXU62De3ZiyFHCpqOtcj-0Yk1_BOBt98xac7BTv9bbzPA..; tmall=false; sensorsdata2015jssdkcross={\"distinct_id\":\"15730317166966239268\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}'\n",
"\n",
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
"\n",
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
" for item in cookies_str.split('; ')}\n",
"\n",
"headers = {\n",
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
" \"Content-Type\": \"application/json\",\n",
" 'origin': 'https://yunxiu.f6car.cn'\n",
"}\n",
"#读取excel文件\n",
"data = xlrd.open_workbook(r\"C:\\Users\\admin\\Desktop\\新建XLS 工作表 (2).xls\")\n",
"\n",
"table = data.sheet_by_index(0) # 通过索引顺序获取\n",
"\n",
"h = table.nrows\n",
"\n",
"l = table.ncols\n",
"\n",
"print(u\"表数据的行数为%s,列数为%s\"%(h,l))\n",
"\n",
"for i in range(1,h):\n",
" try:\n",
" idMember =table.cell(i, 0).value #卡id\n",
" idMember1 =table.cell(i, 1).value #退款金额\n",
" idMember2 =table.cell(i, 2).value #退款金额\n",
" idOwnOrg =table.cell(i, 3).value #门店ID\n",
" employeeId =table.cell(i, 4).value #退卡服务顾问ID\n",
" #读取cardVersion信息并配置退卡data\n",
" url = 'https://yunxiu.f6car.cn/marketing/tkdBill/baseInfo?pkId={}'.format(idMember)\n",
" resget = requests.get(url,cookies=cookie_dict)\n",
" resget = json.loads(resget.text)\n",
" cardVersion = resget['data']['cardVersion']\n",
" data = {\n",
" \"cardId\": idMember, # 退卡实体id\n",
" \"cardVersion\": cardVersion,\n",
" \"employeeId\": employeeId, # 退卡服务顾问ID 手动更新\n",
" \"idOwnOrg\": idOwnOrg, # 门店ID 手动更新\n",
" \"refundAmount\": idMember1, # 退卡金额\n",
" \"remark\": \"过期保险代金券清理\" # 备注\n",
" }\n",
" #生成退卡单\n",
" res = requests.post(f'https://yunxiu.f6car.cn/marketing/tkdBill/add',\n",
" headers=headers,cookies=cookie_dict, json=data)\n",
" resdata = res.json().get('data')\n",
" #print(data)\n",
" \n",
"\n",
" #读取Version信息并配置退卡data\n",
" url1 = 'https://yunxiu.f6car.cn/marketing/tkdBill/detail/{}'.format(resdata)\n",
" resget1 = requests.get(url1,cookies=cookie_dict)\n",
" resget1 = json.loads(resget1.text)\n",
" cardVersion1 = resget1['data']['version']\n",
" #完成收款\n",
" if idMember1 != \"0\":\n",
" data = {\n",
" \"idOwnOrg\": idOwnOrg,# 门店ID 手动更新\n",
" \"idOperationOrg\": idOwnOrg,# 退卡门店ID 手动更新\n",
" \"idSourceBill\": resdata,# 退卡单ID\n",
" \"sourceBillType\": \"TKD\",#类型\n",
" \"receiptMemo\": \"过期保险代金券清理\",# 备注\n",
" \"version\": cardVersion1,\n",
" \"favourableList\": [],\n",
" \"gatheringFavourable\": 0,\n",
" \"paymentTypeGroupId\": \"\",\n",
" \"czkList\": [],\n",
" \"paymentList\": [\n",
" {\n",
" \"paymentTypeId\": \"113071\",# 各门店不同 手动更新\n",
" \"paymentType\": \"内部结算\",\n",
" \"paymentAmount\": idMember2,\n",
" \"gatheringType\": 0,\n",
" \"kind\": \"normal\"\n",
" }\n",
" ],\n",
" \"pkId\": 0,\n",
" \"billType\": \"YSF\",\n",
" \"domainCode\": \"SAAS\"\n",
" }\n",
" else:\n",
" data = {\n",
" \"idOwnOrg\": idOwnOrg,# 门店ID 手动更新\n",
" \"idOperationOrg\": idOwnOrg,# 退卡门店ID 手动更新\n",
" \"idSourceBill\": resdata,# 退卡单ID\n",
" \"sourceBillType\": \"TKD\",#类型\n",
" \"receiptMemo\": \"过期保险代金券清理\",# 备注\n",
" \"version\": cardVersion1,\n",
" \"favourableList\": [],\n",
" \"gatheringFavourable\": 0,\n",
" \"paymentTypeGroupId\": \"\",\n",
" \"czkList\": [],\n",
" \"paymentList\": [\n",
" {\n",
" \"status\": 0,\n",
" \"paymentAmount\": 0\n",
" }\n",
" ],\n",
" \"pkId\": 0,\n",
" \"billType\": \"YSF\",\n",
" \"domainCode\": \"SAAS\"\n",
" }\n",
" #print(data)\n",
" res = requests.post(f'https://yunxiu.f6car.cn/financial/advance/payment/singleGathering', \n",
" headers=headers,cookies=cookie_dict, json=data)\n",
" print(\"打印出响应信息:\",i,cardVersion,cardVersion1,resdata,idMember,res.text)\n",
" except:\n",
" formData = {\n",
" \"textField_l9fe0uiw\": idMember,\n",
" \"textField_l9fe0uiv\": '恒泰退卡异常!!'\n",
" } \n",
" ceshi(formData)\n",
" continue"
]
}
],
"metadata": {
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 2
}