{ "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 }