From 9dfdc36c968797624d3fe1fee6f897e2f5939147 Mon Sep 17 00:00:00 2001 From: jefferyzhao <375696853@qq.com> Date: Thu, 31 Jul 2025 15:48:55 +0800 Subject: [PATCH] first commit --- .DS_Store | Bin 0 -> 6148 bytes .idea/.gitignore | 8 + .idea/enterprise-wechat-payment-push.iml | 18 + .../inspectionProfiles/profiles_settings.xml | 6 + .idea/misc.xml | 4 + .idea/modules.xml | 8 + 1.py | 11 + README.md | 0 __pycache__/app.cpython-37.pyc | Bin 0 -> 3168 bytes __pycache__/config.cpython-37.pyc | Bin 0 -> 967 bytes __pycache__/glapp.cpython-37.pyc | Bin 0 -> 3126 bytes __pycache__/utils.cpython-37.pyc | Bin 0 -> 13194 bytes config.py | 48 ++ glapp.py | 123 ++++ utils.py | 667 ++++++++++++++++++ 15 files changed, 893 insertions(+) create mode 100644 .DS_Store create mode 100644 .idea/.gitignore create mode 100644 .idea/enterprise-wechat-payment-push.iml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 1.py create mode 100644 README.md create mode 100644 __pycache__/app.cpython-37.pyc create mode 100644 __pycache__/config.cpython-37.pyc create mode 100644 __pycache__/glapp.cpython-37.pyc create mode 100644 __pycache__/utils.cpython-37.pyc create mode 100644 config.py create mode 100644 glapp.py create mode 100644 utils.py diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a25e5132d1b687c919209306da8518e3d8ccfa7b GIT binary patch literal 6148 zcmeHK%Sr=55Ufc;9*PieUWEMt1D?FDF&?}L9`qJXj4>KbKm+Esckvhe1;57c(dwQd zZ1!;#(QfFec~sA%X4u&Q;JSY`jA!JABaRCr-ZBw&+~TfyCY3R{>6tXhT$ZvwGwdc7JgXC~`>ALqI3)i)HTSI) zzpv|<2aPhTt{&w^I>!Z0sgu_cWZ8Oa@R)mOS+iw5|678X7nm1SFYk6x*F>v$q?g!iAUDZ>_ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..a2e120d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..4adf23a --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/1.py b/1.py new file mode 100644 index 0000000..d134ffe --- /dev/null +++ b/1.py @@ -0,0 +1,11 @@ +from utils import * +import os, _thread, urllib + +# res = filter_jdy_ht("130128198607190013") +# print(res) +# +# data = {"pay_amount": 600, "id": "130128198607190013", +# "fs": res[1], "jg": res[0], "name": res[4], +# "fsfz": res[6],"shfid": res[7], +# "hphm": res[5]} +# add_payment(data,1) diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/__pycache__/app.cpython-37.pyc b/__pycache__/app.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d216b8007d1849b777be0f58d6d4da9a4b61f458 GIT binary patch literal 3168 zcmbVOTW=dh6rP#g^*xT`^x~A#7Rt?qB;^iOfzlEvAO%EHsa-{^ww|%QiM?xP*A!b$ zg;aO}fsjC=qD4w25aOvkR7g+|ul$C2g#_{g-~sW#IkUFwhLi_v?YA>$W@q=D?>lGa z_}Ey6!0)r4eym#Kg#3b?!Ow!mF}OlP3E_m(25C~8Hkr+uhHW%W+iY64MRANZ5{q~@ z8c92;?ZI*Y@nt zp5tTMUeNaZ&_2!!+CHJ}6TH}8XOi#G_M*1$9NKsB-P%5>?WLi8ito|(9U{YTTVe8V z7~jeF^4s}7zW)OQ{4*9v`M@T|rEDqd`Gy;=sH7Bcv_%-HloZ^Pq7o^~JsZeKB|{O0 zUf`FhqKD=;OYoS=EX@P|jAUoQW)Kud*Hkdx9H1dWn3_E>KFM z~Za@bM7q%XL#UmL-=-K zXss?go?i`=)smhcN%UH!=iaJ_R)irmWlk^1-N;pj6rrNxYa(}n@sBeAb4QlWc>YVC z>o0A7{O$Vn?>9cV`s?+J>sPnxiRwnKTdo0+mQ`H*6W!|BhqyggtEG0p?`Omyou=y!{=K;o-$c%BoH>osmD^d|RS zhuNK(fqR@?VXLG^)(mb8+TmTOGtjHnZQp4NoIc%mIu|8+TCIIOZgt+Ams9W-MgF1( z%E>JOzDZ4v)WBM?_A*vt>h~v$u}R#J}9V8|KH{Ge+|)$4qL10x(1= zD)+-^*P4y65SXvNvamQLpTWqG{FBhxj(kecSI9>s|2V_}ajYfk-vFJT2b^P7(u^~1Ap3o$!N$!g0)2~Hz&*$tcqTkCrFFoQak~e5z!U*YYD{a) zXv}KNX&jp(JbyX8%AnTuE8AKsO8>uAc&Z9IrSOIII0ZAn!k_)BSb*;x?;#UVBX3b5 z3-f&@lQ}L9sMvB1Uh6i6GOJ;=tIT?<-c;EdROW_vwhaYM z6-PSNc2`KSa?KS?!f9Jr!5`eN7RiTU{5iP7`v77sVvSAFjIOgqnxG}< z@pZj_RknSybtNYV3;@QK43>&{&`0e5|pf zpwaLfuz^}-HNJCDtIv1_RGCCI#!mpk3V^6z!co73gMNDq?s?rC*H{2ePh3v(Vys60 zr8k1if31C{??&txlhW>A1~> z_|1cw87nnLla)ZDMS3Sg1g*j@QADlclPcvnP1o}sr<*)HqyOFyaIjc}t=g;yxPP?p z^q6kRpaKU-5tet^Ru#{h68DlgQL#u!tPc_^g@Szmc4WnZP`jlPZP|e2$9G|6a2#d8 zaYiNE()D@JREbL9SG}6DWYC7J#*>TQ=k-3O3%|~*_=64E_D9YQ`UIg552>TgfVUgs fX{=izF0vQ$vt*=b!7PoJvZaYqzO<)wdy4)8Jcz{4 literal 0 HcmV?d00001 diff --git a/__pycache__/config.cpython-37.pyc b/__pycache__/config.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b577bd1f0a2aa120b438092f4fab92c633dd064f GIT binary patch literal 967 zcmYjQ&ube;6qe+bY{{{cxR+iECO1Gn6b)%)i_4_-ut=mcL27?wKJ*cH0xp5putF8$dV6ho*@bGr3J^6KY1YNjcICsDhcp zq0WS@VPqmX0oP3b%YTD5KzQ~z*tsiO+(5U$A(t^C~W4>h+`CuTsW>B+hBYO{e?I zGD=x?XIUD0M`Dy!oMh(8=y6gVBz<8;!65#nF!(@z+7$lkNY-w34n6;_ycnIU?|&O# zyq-Kgdw20{eD-Sc_^0<5=acVVUY?y#o;~i2pZ`Aj;k483*M%R8K{)UtQ6CEC(zq_? yJeJvdm_%-e1-|2T8{sHh`s6s^vh}C=?-$*Ype!gQrKl(p%aZ4+G{-y^mC`@%kuRM9 literal 0 HcmV?d00001 diff --git a/__pycache__/glapp.cpython-37.pyc b/__pycache__/glapp.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..04e0512771c15ec3ac58741dff5302186a1430ae GIT binary patch literal 3126 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 literal 0 HcmV?d00001 diff --git a/config.py b/config.py new file mode 100644 index 0000000..01f7ec4 --- /dev/null +++ b/config.py @@ -0,0 +1,48 @@ +''' +coding:utf-8 +@Time:2023/3/28 5:02 PM +@Author:dyq +''' + +# 调用域名 +base_path = 'https://www.jiyuankeshang.com' +# 企微应用id 应用ID +corpid = 'wwc276f7a0347c310b' +SECRET = '8jSj7EF1J6P1zzDeqzMxc-1c4EV3tTGyB5yljB2RWtk' +# 商户号 +#mchid = '1640957093' +# APIv3密钥 +v3_SECRET = '20230626yinjian13370189887jiyuan' +# 服务器IP +ip = '101.43.208.145' +# 商户号证书序列号 +#serial_no = '22E0F3EA849ABD1E687C82D43D26190C46DA5834' +# 未收付应用id +# pay_app = '628eeaace7f28c00089a60cc' +pay_app = "667cc6dbaa923599ad735201" +# 已收表单Id +#received_id = '645b617ee5c2b50009c9dbea' +received_id = '667cd24ceb38767eb218820b' +# 未收表单Id +#uncollected_id = '645b48ab5c72e30008fd9999' +uncollected_id = '667cd24a2e0bccca52d98851' +# 充值明细 +pay_details_id = '645b57e9f3523f0008ba6c23' +# 个人账户 +accout_id = '645b5af630488a0007259b55' +# 增减项app +# hz_app = '628eeaace7f28c00089a60cc' +hz_app = '667cc6dbaa923599ad735201' +# 增减项表单 +hz_id = '66a36c9fa47877121a7cee8b' +# 合同信息表单 +ht_id = '62b80148c6c1af0007f8a824' +# apikey +apikey = '82bl1lhsgjzhd9ahBYvaMNVAncYYRkbE' +# 辅助表单(查询驾驶员身份证号) +# fu_app = '628eeaace7f28c00089a60cc' +fu_app = '667cc6dbaa923599ad735201' +fu_id = '667ccd162e0bccca52d91e66' +# rule_sort = {"社保": 0, "承包金": 1, "调度费": 2, "保养费": 3} +rule_sort = {"社保": 1, "承包金": 1, "调度费": 1, "保养费": 1} + diff --git a/glapp.py b/glapp.py new file mode 100644 index 0000000..63bae94 --- /dev/null +++ b/glapp.py @@ -0,0 +1,123 @@ +from flask import Flask, request, redirect, abort, session +from utils import * +import os, _thread, urllib + + +app = Flask(__name__) +app.config['SECRET_KEY'] = os.urandom(24) + + + +@app.route('/queryUserId', methods=['GET']) +def queryUserId(): + # 获取支付明细 + try: + code = request.args.get('code') + data = query_wx_userid(code) + if len(data) <= 11: + res = query_wx_fj_info(data) + data = res + print(f'http://web.jiyuankeshang.com/?user={data}') + return redirect(f'http://web.jiyuankeshang.com/?user={data}') + except Exception as e: + return {} + + +@app.route('/queryUser', methods=['GET']) +def queryUserApi(): + # 获取支付明细 + try: + id = request.args.get('user') + data = queryUser(id) + return data + except Exception as e: + return {} + + +@app.route('/getPaymentDetails', methods=['GET']) +def getPaymentDetails(): + try: + id = request.args.get('user','') + + id = id.replace(" ", "") + + if not id: + return {} + data = query_pay_details(id) + return data + except Exception as e: + print(e) + return {} + + + +@app.route('/test', methods=['POST']) +def test(): + # 新增未收付明细 {"pay_amount": 20000, "id": "18515367096"} + try: + data = request.data.decode("utf-8") + print(data) + return {} + except Exception as e: + print(e) + return {} + + + + +@app.route('/addUnPayment', methods=['POST']) +def addUnPayment(): + # 新增未收付明细 {"pay_amount": 20000, "id": "18515367096"} + try: + data = request.data.decode("utf-8") + data = data.replace("null", "None") + data = eval(data) + data = data['data'] + print("开始========", data) + if data['shifoudikou'] != "是": + return {data} + res = filter_jdy_ht(data['sijishenfenzhenghao']) + data1 = {"pay_amount": 0, "id": data['sijishenfenzhenghao'], + "fs": data['fs'], "jg": data['company_jc'], "name": data['sijixingming'], + "fsfz": data['fs_p'],"shfid": data['shfid'], + "hphm": data['license_plate']} + print(data1) + _thread.start_new_thread(add_payment, (data1, 1)) + + return data + except Exception as e: + print("addUnPayment",e, res) + return {} + + +@app.route('/addPayment', methods=['POST']) +def addPayment(): + # 新增充值明细 {"pay_amount": 20000, "id": "18515367096"} + try: + data = request.data.decode("utf-8") + print(data) + data = data.replace("null", "None") + data = eval(data) + data = data['data'] + # res = filter_jdy_ht(data['id_card']) + if not data['price']: + data['price'] = 0 + # if not res: + # # 合同表单未有数据 + fsfz = data['fsfz']['dept_no'] if data['fsfz'] else "" + _thread.start_new_thread(add_payment, ({"pay_amount": data['price'], "id": data['id_card'], + "fs": data['fs'], "jg": data['jg'], "name": data['name'], + "fsfz": fsfz, "hphm": data['hphm']}, 1)) + # else: + # _thread.start_new_thread(add_payment, ({"pay_amount": data['price'], "id": data['id_card'], + # "fs": res[1], "jg": res[0], "name": res[4], + # "fsfz": res[6],"shfid": res[7], + # "hphm": res[5]}, 1)) + return {} + except Exception as e: + print("addPayment",e, data) + return {} + + +if __name__ == '__main__': + app.run(host="0.0.0.0", port=3007, processes=True) diff --git a/utils.py b/utils.py new file mode 100644 index 0000000..743856a --- /dev/null +++ b/utils.py @@ -0,0 +1,667 @@ +import requests, time, json, uuid, datetime +from config import * +from dateutil.relativedelta import relativedelta +import threading +import urllib3 +from Crypto.Cipher import AES +from base64 import b64encode, b64decode + +urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + +lock = threading.Lock() + + +def format_uct(origin_date_str): + origin_date_str = origin_date_str.split('.')[0] + utc_date = datetime.datetime.strptime(origin_date_str, "%Y-%m-%dT%H:%M:%S") + local_date = utc_date + datetime.timedelta(hours=8) + local_date_str = datetime.datetime.strftime(local_date, '%Y-%m-%d %H:%M:%S') + return local_date_str + + +def filter_jdy_ht(id): + """筛选简道云合同表单中驾驶员对应信息""" + url = f'{base_path}/api/v5/app/entry/data/list' + filter_data = { + "app_id": pay_app, + "entry_id": ht_id, + "limit": 100, + "filter": { + "rel": "and", + "cond": [ + { + "field": "shfzhh", + "method": "eq", + "value": [id] + } + ] + } + } + ht_detail = turn_page(url, filter_data) + if not ht_detail: + return [] + ht_detail = ht_detail[0] + # 机构 + jg = ht_detail['jg'] + # 分司 + fs = ht_detail['fs'] + # 商户号 + sh = ht_detail['sh'] + # 商户号证书 + shzs = ht_detail['shxl'] + # 姓名 + name = ht_detail['name'] + # 车牌号 + hphm = ht_detail['hphm'] + # 分司负责人 + fsfz = ht_detail['fsfz']['dept_no'] if ht_detail['fsfz'] else "" + # 身份ID + shfid = ht_detail['shfid'] + return [jg, fs, sh, shzs, name, hphm, fsfz, shfid] + + +def queryUser(id): + # 查询充值明细 + # user = get_user_info(id) + url = f'{base_path}/api/v5/app/entry/data/list' + filter_data = { + "app_id": fu_app, + "entry_id": pay_details_id, + "limit": 100, + "filter": { + "rel": "and", + "cond": [ + { + "field": "pay_type", + "method": "eq", + "value": ["微信支付"] + }, + { + "field": "id_card", + "method": "eq", + "value": [id] + } + ] + } + } + pay_detail = turn_page(url, filter_data) + for i in pay_detail: + i['time'] = format_uct(i['time']) + # 查询个人余额 + info = { + "app_id": pay_app, + "entry_id": accout_id, + "filter": {"rel": "and", + "cond": [ + { + "field": "id_card", + "method": "eq", + "value": [id] + }, + { + "field": "date", + "method": "empty", + + } + ]} + } + # 查询个人余额账户表 没有新增,有更新 + res = req_tool_jdy(url, info) + balance = 0 + if res['data']: + balance = res['data'][0]['balance'] + balance = float("%.2f" % balance) + return {"balance": balance, "pay_detail": pay_detail} + + +def get_last_8_hour(): + _time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time() - 8 * 60 * 60)) + return _time + + +def turn_page(url, data): + """翻页查询""" + info = [] + while 1: + try: + res = req_tool_jdy(url, data) + info += res['data'] + if len(res['data']) < 100: + return info + data["data_id"] = res["data"][-1]["_id"] + except Exception as e: + print("turn_page", e, res) + + +def get_user_info(id, type=None): + """获取用户信息""" + url = f'{base_path}/api/v5/app/entry/data/list' + if type: + filter_data = { + "app_id": fu_app, + "entry_id": fu_id, + "filter": { + "rel": "and", + "cond": [ + { + "field": "shfzhh", + "method": "eq", + "value": [id] + } + ] + } + } + else: + filter_data = { + "app_id": fu_app, + "entry_id": fu_id, + "filter": { + "rel": "and", + "cond": [ + { + "field": "shfzhh", + "method": "eq", + "value": [id] + } + ] + } + } + res = req_tool_jdy(url, filter_data) + if res['data']: + return res['data'][0] + return '' + + +def query_pay_details(id): + # 查询某人未收付明细 + url = f'{base_path}/api/v5/app/entry/data/list' + filter_data = { + "app_id": pay_app, + "entry_id": uncollected_id, + "limit": 100, + "filter": { + "rel": "and", + "cond": [ + { + "field": "sijishenfenzhenghao", + "method": "eq", + "value": [id] + }, + { + "field": "unpay", + "method": "eq", + "value": [id] + }, + ] + } + } + + uncollected_data = turn_page(url, filter_data) + #按业务编码后13位数字添加排序号 + def extract_and_sort(code): + extracted = int(code[-13:]) + return extracted + _data = [] + for i in uncollected_data: + # flag = False + # for j in ["承包金", "调度费", "保养费", "社保个人费额"]: + # if j == i['fukuanshiyou']: + # flag = True + # break + # if not flag: + # continue + + # flag = False + # if "预收承包金" not in i['fukuanshiyou'] and i['type'] == "收款" and "违约金" not in i['fukuanshiyou'] and "维修费" not in i['fukuanshiyou']: + # flag = True + # if not flag: + # continue + # if "保证金" in i['fukuanshiyou'] or i['type'] != "收款": + if i['type'] != "收款" or i['shifoudikou'] != "是": + continue + i['jine'] = float("%.2f" % i['jine']) if i['jine'] else 0 + i['pay'] = float("%.2f" % i['pay']) if i['pay'] != None and i['pay'] != '' else 0 + i['unpay'] = float("%.2f" % i['unpay']) if i['unpay'] != None and i['unpay'] != '' else 0 + i['sort'] = 9999 + # for j in rule_sort: + # if j in i['fukuanshiyou']: + i['sort'] = extract_and_sort(i['code']) + _data.append(i) + uncollected_data = _data + # uncollected_data = sorted(uncollected_data, key=lambda x: x['createTime'], reverse=True) + uncollected_data = sorted(uncollected_data, key=lambda x: x['sort'], reverse=False) + # 过滤已结清数据 + uncollected_data = [i for i in uncollected_data if i['jine'] != i['pay']] + undata = {} + # 按月份归类 uncollected_data + for un in uncollected_data: + if un['yuefen'] in undata.keys(): + undata[un['yuefen']]['data'].append(un) + else: + undata[un['yuefen']] = {"data": []} + undata[un['yuefen']]['data'] = [un] + # 按月查询增减项 flowState结束 + amount = 0 + for un in undata: + _th_amount = 0 + del_list = [] + filter_data = { + "app_id": hz_app, + "entry_id": hz_id, + "limit": 100, + "filter": { + "rel": "and", + "cond": [ + { + "field": "id_card", + "method": "eq", + "value": [id] + }, + { + "field": "month", + "method": "eq", + "value": [un] + }, + ] + } + } + hz_data_list = turn_page(url, filter_data) + # 应付总额 承包金定额=应收承包金-增减项 + zj_sum = sum(item['jine'] for item in hz_data_list) + for index, j in enumerate(undata[un]['data']): + j['unpay'] = j['unpay'] if j['unpay'] else j['jine'] + + if '费税' in j['fukuanshiyou'] and j['yewubiaodanmingcheng'] == '费税计划': + if j['pay'] - zj_sum == j['jine']: + del_list.append(index) + continue + # 定额 de = 表单中的金额-增减 + # 应付金额 jine = 表单中的金额 + # 未付金额 unpay = 应付金额-增减-已付金额 + j['pay'] = j['pay'] if j['pay'] else 0 + + undata[un]['de'] = j['jine'] - zj_sum + # j['jine'] = undata[un]['de'] + zj_sum + j['unpay'] = j['jine'] - j['pay'] + amount += j['unpay'] if j['unpay'] else j['jine'] + _th_amount += j['unpay'] if j['unpay'] else j['jine'] + undata[un]['_th_amount'] = _th_amount + undata[un]['hz'] = hz_data_list + for d in del_list: + undata[un]['data'].pop(d) + undata['amount'] = float("%.2f" % amount) + for i in list(undata.keys()): + if i != 'amount' and not undata[i]['data']: + del undata[i] + return undata + + +def req_tool_jdy(url, data): + headers = {"Authorization": f"Bearer {apikey}"} + while 1: + try: + res = requests.post(url, headers=headers, json=data, timeout=10, verify=False).json() + if "code" in res.keys(): + print("req_tool_jdy", res) + time.sleep(2) + continue + return res + except Exception as e: + print(e) + + +def req_tool_vx(url, data=None, flag=None): + while 1: + try: + if not flag: + res = requests.post(url, json=data, timeout=10, verify=False).json() + else: + res = requests.get(url, timeout=10, verify=False).json() + return res + except Exception as e: + print(e) + + +def update_unpay(data,now_time): + """更新未收付,添加已收付明细""" + url = f'{base_path}/api/v5/app/entry/data/update' + add_url = f'{base_path}/api/v5/app/entry/data/create' + del_url = f'{base_path}/api/v1/app/{pay_app}/entry/{uncollected_id}/data_delete' + for i in data: + if 'amount' == i: + continue + for j in data[i]['data']: + info = { + "app_id": pay_app, + "entry_id": uncollected_id, + "data_id": j['_id'], + "is_start_trigger": True, + "is_start_workflow": True, + "data": { + "pay": {"value": j['pay']}, + "unpay": {"value": j['unpay']}, + } + } + req_tool_jdy(url, info) + # 新增已收付明细 + if 'flag' in j.keys() and float(j['flag_m']): + if not j['flag_m'] or not float(j['flag_m']): + continue + fs_p = j['fs_p']['dept_no'] if j['fs_p'] else "" + add_info = { + "app_id": pay_app, + "entry_id": received_id, + "is_start_trigger": True, + "is_start_workflow": True, + "data": { + "code": {"value": j['code']}, "type": {"value": "收款"}, + "fukuanshiyou": {"value": j['fukuanshiyou']}, "month": {"value": j['yuefen']}, + "yewubiaodanmingcheng": {"value": j['yewubiaodanmingcheng']}, + "yewubiaodanbianma": {"value": j['yewubiaodanbianma']}, + "sijixingming": {"value": j['sijixingming']},"date": {"value": j['date']}, + "shfid": {"value": j['shfid']},"yyfs": {"value": j['yyfs']},"yyfs2": {"value": j['yyfs2']}, + "sijishenfenzhenghao": {"value": j['sijishenfenzhenghao']},"jc": {"value": j['jc']}, + "company_jc": {"value": j['company_jc']}, "xd": {"value": j['xd']}, + "sijisuozaigongsi": {"value": j['sijisuozaigongsi']}, "fs": {"value": j['fs']}, + "license_plate": {"value": j['license_plate']}, "jine": {"value": j['jine']}, + "pay": {"value": j['flag_m']}, "hz_month": {"value": j['hz_month']}, + "fs_p": {"value": fs_p}, "bj": {"value": j['bj']}, "status1": {"value": "已清缴"}, + "sy": {"value": "个人账户抵扣"}, "status": {"value": "已收款"}, + "ys": {"value": j['ys']},"pay_date": {"value": now_time} + } + } + req_tool_jdy(add_url, add_info) + print("shachu=========", j['pay'], j['jine']) + if j['sijixingming'] == '姓名': + print(j) + if j['pay'] == j['jine']: + # 未收付已清缴,删除未收付明细 + j['sy'] = "个人账户抵扣" + del_info = { + "data_id": j["_id"], + "is_start_trigger": True + } + req_tool_jdy(del_url, del_info) + + +def update_info(cz, _balcace, balance, user_info): + # 余额 = 累计充值金额-累计抵扣金额 + # 本次抵扣=本次充值+本次余额-剩余金额 + di = cz + balance - _balcace + """更新个人账户余额""" + # if pay_amount: + # # 支付完有剩余余额可直接更新 + # amount = pay_amount + # else: + # # 查询未收付历史数据 + # details = query_pay_details(user_info['user']['username']) + # amount = details['amount'] + # amount *= -1 + url = f'{base_path}/api/v5/app/entry/data/list' + info = { + "app_id": pay_app, + "entry_id": accout_id, + "filter": {"rel": "and", + "cond": [ + { + "field": "id_card", + "method": "eq", + "value": [user_info['id']] + }, + { + "field": "date", + "method": "empty" + }, + ]} + } + # 查询个人余额账户表 没有新增,有更新 + res = req_tool_jdy(url, info) + if res['data']: + # 更新 + url = f'{base_path}/api/v5/app/entry/data/update' + pay = res['data'][-1]['pay'] + cz + di = di + (res['data'][-1]['deduction'] if res['data'][-1]['deduction'] else 0) + amount = pay - di # 累计充值-累计抵扣 + info = { + "app_id": pay_app, + "entry_id": accout_id, + "data_id": res['data'][-1]["_id"], + "is_start_workflow": True, + "is_start_trigger": True, + "data": { + "pay": {"value": pay}, "balance": {"value": amount}, + "deduction": {"value": di} + } + } + else: + # 新增 + amount = cz - di # 本次充值-本次抵扣 + if 'name' in user_info.keys(): + name = user_info['name'] + else: + name = "" + url = f'{base_path}/api/v5/app/entry/data/create' + info = { + "app_id": pay_app, + "entry_id": accout_id, + "is_start_workflow": True, + "is_start_trigger": True, + "data": { + "id_card": {"value": user_info['id']}, + "name": {"value": name}, + "pay": {"value": cz}, + "deduction": {"value": di}, + "balance": {"value": amount}, + "jg": {"value": user_info['jg']}, + "fs": {"value": user_info['fs']}, + "fsfz": {"value": user_info['fsfz']}, + "shfid": {"value": user_info['shfid']}, + "hphm": {"value": user_info['hphm']} + } + } + req_tool_jdy(url, info) + + +def add_payment(data, type=None): + lock.acquire() + print("开始========", data) + print(data, type) + # user = get_user_info(data['id']) + # 充值成功后 回写充值明细 + now_month = datetime.datetime.now().strftime("%Y-%m") + now_time = get_last_8_hour() + url = f'{base_path}/api/v5/app/entry/data/create' + if not type: + info = { + "app_id": fu_app, + "entry_id": pay_details_id, + "is_start_workflow": True, + "is_start_trigger": True, + "data": { + "id_card": {"value": data['id']}, "name": {"value": data['name']}, + "price": {"value": data['pay_amount']}, "pay_type": {"value": "微信支付"}, + "coll_type": {"value": "网银"}, "month": {"value": now_month}, + "jg": {"value": data['jg']}, "fs": {"value": data['fs']}, + "hphm": {"value": data['hphm']},"shfid": {"value": data['shfid']}, + "time": {"value": now_time}, "transactionid": {"value": data['transaction_id']} + } + } + if data['fsfz']: + info['data']["fsfz"] = {"value": data['fsfz']} + req_tool_jdy(url, info) + + details = query_pay_details(data['id']) + dates = list(details.keys()) + dates.sort() + dates.remove('amount') + pay_amount = data['pay_amount'] + # 查询余额 + balance = queryUser(data['id']) + pay_amount += balance['balance'] + if pay_amount <= 0: + print("余额为0结束========", data) + lock.release() + return + print("执行add_payment", data) + # next_month = (datetime.datetime.now().date() - relativedelta(months=-1)).strftime("%Y-%m") + # 先抵扣承包金 + if now_month in dates: + _tmp = details[now_month]['data'] + _tmp = sorted(_tmp, key=lambda x: x['sort']) + for i in _tmp: + if pay_amount: + i['flag'] = 1 + if '保证金尾款' in i['fukuanshiyou']: + i['flag_m'] = 0 + continue + if '费税' in i['fukuanshiyou']: + # 承包金实际需要缴纳的 + if pay_amount < i['jine'] - i['pay']: + # 修改 i['pay'] 充值金额,推送修改 + i['pay'] += pay_amount + i['unpay'] = i['jine'] - i['pay'] + i['flag_m'] = pay_amount + pay_amount = 0 + else: + pay_amount -= (i['jine'] - i['pay']) + i['flag_m'] = (i['jine'] - i['pay']) + i['pay'] = i['jine'] + i['unpay'] = 0 + for i in dates: + if i == now_month: + continue + _tmp = details[i]['data'] + _tmp = sorted(_tmp, key=lambda x: x['sort']) + for j in _tmp: + if pay_amount: + j['flag'] = 1 + if '保证金尾款' in j['fukuanshiyou']: + j['flag_m'] = 0 + continue + if '费税' in j['fukuanshiyou']: + # 承包金实际需要缴纳的 + if pay_amount < j['jine'] - j['pay']: + # 修改 i['pay'] 充值金额,推送修改 + j['pay'] += pay_amount + j['unpay'] = j['jine'] - j['pay'] + j['flag_m'] = pay_amount + pay_amount = 0 + + else: + pay_amount -= (j['jine'] - j['pay']) + j['flag_m'] = (j['jine'] - j['pay']) + j['pay'] = j['jine'] + j['unpay'] = 0 + # 再抵扣其他 + if now_month in dates: + _tmp = details[now_month]['data'] + _tmp = sorted(_tmp, key=lambda x: x['sort']) + for i in _tmp: + if pay_amount: + i['flag'] = 1 + if '保证金尾款' in i['fukuanshiyou']: + i['flag_m'] = 0 + continue + if '费税' in i['fukuanshiyou']: + # 承包金实际需要缴纳的 + continue + else: + if i['jine'] != i['pay']: + # 根据未支付的金额,扣除总金额 + df = i['jine'] - i['pay'] + if pay_amount < df: + # 修改 i['pay'] 充值金额,推送修改 + i['pay'] += pay_amount + i['unpay'] = i['jine'] - i['pay'] + i['flag_m'] = pay_amount + pay_amount = 0 + else: + pay_amount -= df + i['pay'] = i['jine'] + i['unpay'] = 0 + i['flag_m'] = df + for i in dates: + if i == now_month: + continue + _tmp = details[i]['data'] + _tmp = sorted(_tmp, key=lambda x: x['sort']) + for j in _tmp: + if pay_amount: + j['flag'] = 1 + if '保证金尾款' in j['fukuanshiyou']: + j['flag_m'] = 0 + continue + if '费税' in j['fukuanshiyou']: + # 承包金实际需要缴纳的 + continue + + + else: + if j['jine'] != j['pay']: + # 根据未支付的金额,扣除总金额 + df = j['jine'] - j['pay'] + if pay_amount < df: + # 修改 i['pay'] 充值金额,推送修改 + j['pay'] += pay_amount + j['unpay'] = j['jine'] - j['pay'] + j['flag_m'] = pay_amount + pay_amount = 0 + + else: + pay_amount -= df + j['pay'] = j['jine'] + j['unpay'] = 0 + j['flag_m'] = df + # 根据抵扣规则,更新未支付的数据,将清缴数据新增至已收付明细 + print("更新未收付", details) + update_unpay(details,now_time) + # 未收付更新完后,更新个人账户余额update_info + print("更新个人账户余额update_info") + update_info(data['pay_amount'], pay_amount, balance['balance'], data) + lock.release() + print("结束========") + + +def decode_notify_data(res_json): + try: + ciphertext = res_json['resource']['ciphertext'] + nonce = res_json['resource']['nonce'] + associated_data = res_json['resource']['associated_data'] + cipher = AES.new(v3_SECRET.encode(), AES.MODE_GCM, nonce=nonce.encode()) + cipher.update(associated_data.encode()) + en_data = b64decode(ciphertext.encode('utf-8')) + auth_tag = en_data[-16:] + _en_data = en_data[:-16] + plaintext = cipher.decrypt_and_verify(_en_data, auth_tag) + decodejson = json.loads(plaintext.decode()) + except Exception as e: + print(f"解密回调失败:{e}") + return None + return decodejson + + +def get_wx_token(): + url = f'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpid}&corpsecret={SECRET}' + res = req_tool_vx(url, flag=1) + return res['access_token'] + + +def query_wx_fj_info(id): + """查询企微中的附加信息""" + token = get_wx_token() + url = f'https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token={token}&userid={id}' + res = req_tool_vx(url, flag=1) + val = "" + print("query_wx_fj_info", res, id) + for i in res['extattr']['attrs']: + if i['name'] == '附加信息': + val = i['value'] + return val + + +def query_wx_userid(code): + """查询企微中的userid""" + token = get_wx_token() + url = f'https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token={token}&code={code}' + res = req_tool_vx(url, flag=1) + return res['userid']