six_002
This commit is contained in:
+99
@@ -0,0 +1,99 @@
|
||||
# Generated by Django 6.0.2 on 2026-08-04 01:28
|
||||
|
||||
import ulid
|
||||
import wechat_数据库.雪花算法.雪花算法工具
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('django_app', '0053_alter_goods商品_id_str_alter_lucky拼团_idkey_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='wei客服账号',
|
||||
fields=[
|
||||
('kefu_id', models.UUIDField(default=ulid.ULID, primary_key=True, serialize=False)),
|
||||
('extInfo_推广员账号链接', models.CharField(db_comment='企微客服账号链接', max_length=128)),
|
||||
('extInfo_企微员工绑定的UNIONID', models.CharField(db_comment='企微客服绑定的小程序unionid', max_length=128)),
|
||||
('extInfo_企微员工的名称', models.CharField(blank=True, max_length=128, null=True)),
|
||||
('dateAndTime', models.DateTimeField(auto_now_add=True, db_comment='创建时间')),
|
||||
('updateTime', models.DateTimeField(auto_now=True, db_comment='更新时间')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'wei客服账号',
|
||||
},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='goods商品',
|
||||
name='id_str',
|
||||
field=models.CharField(default=wechat_数据库.雪花算法.雪花算法工具.SnowflakeIDGenerator.generate_str, max_length=128),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='lucky拼团',
|
||||
name='idKey',
|
||||
field=models.CharField(default=wechat_数据库.雪花算法.雪花算法工具.SnowflakeIDGenerator.generate_str, primary_key=True, serialize=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='lucky拼团订单',
|
||||
name='idKey',
|
||||
field=models.CharField(default=wechat_数据库.雪花算法.雪花算法工具.SnowflakeIDGenerator.generate_str, primary_key=True, serialize=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='map地图ip转地址',
|
||||
name='id_str',
|
||||
field=models.CharField(default=wechat_数据库.雪花算法.雪花算法工具.SnowflakeIDGenerator.generate_str, max_length=128),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='minisub订阅消息模板',
|
||||
name='idKey',
|
||||
field=models.CharField(default=wechat_数据库.雪花算法.雪花算法工具.SnowflakeIDGenerator.generate_str, primary_key=True, serialize=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='order订单',
|
||||
name='id_str',
|
||||
field=models.CharField(default=wechat_数据库.雪花算法.雪花算法工具.SnowflakeIDGenerator.generate_str, max_length=128),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='order订单商品数据',
|
||||
name='order_id_str',
|
||||
field=models.CharField(default=wechat_数据库.雪花算法.雪花算法工具.SnowflakeIDGenerator.generate_str, max_length=128),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='order订单商品数据',
|
||||
name='order_id商品',
|
||||
field=models.CharField(default=wechat_数据库.雪花算法.雪花算法工具.SnowflakeIDGenerator.generate_str, max_length=128),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='wechattransferorder',
|
||||
name='id_str',
|
||||
field=models.CharField(default=wechat_数据库.雪花算法.雪花算法工具.SnowflakeIDGenerator.generate_str, max_length=128),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='wecom企微用户',
|
||||
name='idKeyWecom企微用户',
|
||||
field=models.CharField(default=wechat_数据库.雪花算法.雪花算法工具.SnowflakeIDGenerator.generate_str, primary_key=True, serialize=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='wecom企微群',
|
||||
name='idKeyWecom企微群',
|
||||
field=models.CharField(default=wechat_数据库.雪花算法.雪花算法工具.SnowflakeIDGenerator.generate_str, primary_key=True, serialize=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='wecom推广码',
|
||||
name='id_str',
|
||||
field=models.CharField(default=wechat_数据库.雪花算法.雪花算法工具.SnowflakeIDGenerator.generate_str, max_length=128),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='weiuser地图定位',
|
||||
name='id_str',
|
||||
field=models.CharField(default=wechat_数据库.雪花算法.雪花算法工具.SnowflakeIDGenerator.generate_str, max_length=128),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='weiuser微信用户地址',
|
||||
name='id_str',
|
||||
field=models.CharField(default=wechat_数据库.雪花算法.雪花算法工具.SnowflakeIDGenerator.generate_str, max_length=128),
|
||||
),
|
||||
]
|
||||
@@ -1,14 +1,12 @@
|
||||
from django.db import models
|
||||
|
||||
from django_定时器 import 幸运拼团数据库
|
||||
from wechat_wecom_企业微信管理.企微通讯录管理.企微通讯录管理数据库 import 企微员工数据
|
||||
from wechat_数据库.企业微信数据库 import 推广二维码数据表, 企微用户表, 企微群数据库
|
||||
from wechat_token import token数据库
|
||||
from wechat_数据库.地图定位 import 用户定位数据库, 腾讯地图解析数据库
|
||||
from wechat_数据库.小程序后端数据库 import 订阅消息
|
||||
from wechat_数据库.支付数据库 import 商家转账数据库
|
||||
from wechat_数据库.支付订单数据库 import 商品订单数据
|
||||
from wechat_数据库.洗衣液商品数据库 import 六果洗衣液商品
|
||||
from wechat_数据库.测试数据库 import 测试数据表
|
||||
from wechat_数据库.用户数据库 import 小程序登陆用户, 小程序用户地址, 小程序积分数据库
|
||||
from wechat_数据库.用户数据库 import 小程序登陆用户, 小程序用户地址, 小程序积分数据库,企微客服数据库
|
||||
# Create your models here.
|
||||
+40
-4
@@ -1,3 +1,6 @@
|
||||
import threading
|
||||
from functools import wraps
|
||||
|
||||
import emoji
|
||||
import orjson
|
||||
import pydash
|
||||
@@ -18,7 +21,20 @@ from wechat_项目工具包.微信支付工具包.微信支付类 import payment
|
||||
from wechat_项目工具包.数据库的工具包.更新用户积分 import miniUser用户角色, miniUser积分
|
||||
|
||||
|
||||
def sync_lock_接口线程锁(lock):
|
||||
def decorator(fn):
|
||||
@wraps(fn)
|
||||
def wrapper(*args, **kwargs):
|
||||
with lock:
|
||||
return fn(*args, **kwargs)
|
||||
|
||||
return wrapper
|
||||
|
||||
return decorator
|
||||
|
||||
|
||||
class 业务订单接口ViewSets(ViewSet):
|
||||
lock_接口线程锁 = threading.Lock() # 所有请求 共享这一个 lock对象
|
||||
|
||||
def 处理积分方法(self, 商家订单号):
|
||||
pass
|
||||
@@ -30,7 +46,6 @@ class 业务订单接口ViewSets(ViewSet):
|
||||
def 首单自动注册成为推广员(self, out_trade_no):
|
||||
pass
|
||||
order对象 = order订单.objects.get(order支付商家侧订单号=out_trade_no)
|
||||
|
||||
user用户对象 = weiuser.objects.get(unionid=order对象.order支付者unionid)
|
||||
six绑定的企微员工对象, sixBool = weiuser.objects.get_or_create(unionid=user用户对象.user_绑定企微UNIONID)
|
||||
# 判断用户成为推广员的标准 成为的条件,当前用户绑定的企微员工账号, 必须是同一个区县的
|
||||
@@ -40,6 +55,21 @@ class 业务订单接口ViewSets(ViewSet):
|
||||
user用户对象.user_角色权限 = miniUser用户角色().推广员
|
||||
user用户对象.save()
|
||||
|
||||
def 生成单品优惠券的数据(self, order购物车商品数据: list[dict]):
|
||||
pass
|
||||
准备一个空列表 = []
|
||||
# 循环传递进来的数据
|
||||
for item in order购物车商品数据:
|
||||
# 创建对象
|
||||
data_dict = {
|
||||
"merchant_goods_id": "01KYNDT2KKKPZCR5G1TVG9GZ7G",
|
||||
"goods_name": emoji.replace_emoji(pydash.get(obj=item, path="goods_商品标题")),
|
||||
"quantity": pydash.get(obj=item, path="单个商品订单数量"),
|
||||
"unit_price": pydash.get(obj=item, path="单个商品实际支付价格")
|
||||
}
|
||||
准备一个空列表.append(data_dict)
|
||||
return 准备一个空列表
|
||||
|
||||
@action(detail=False, methods=["post"], url_path="mall")
|
||||
def 商城订单支付接口(self, request: Request) -> Response:
|
||||
"""前端小程序的用户: 发起支付订单的请求接口"""
|
||||
@@ -53,13 +83,15 @@ class 业务订单接口ViewSets(ViewSet):
|
||||
share订单分享者ID = request.data.get("share订单分享者ID", "六果") # 当前是否有上级对象
|
||||
order订单类型 = request.data.get("order订单类型", None)
|
||||
goods标题 = emoji.replace_emoji(pydash.get(obj=pydash.head(order购物车商品数据), path="goods_商品标题"))
|
||||
goods_detail_支付优惠券的数据 = self.生成单品优惠券的数据(order购物车商品数据=order购物车商品数据)
|
||||
print("打印一下哪里出问题了", order购物车商品数据)
|
||||
out_trade_no商家侧的订单号 = f"OAT{ULID()}" # 生成商家侧的订单号
|
||||
body = {
|
||||
"mchid": paymentCategory.mchid, # 【直连商户号】 直连商户号
|
||||
"out_trade_no": out_trade_no商家侧的订单号, # 【商户订单号】 商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一。
|
||||
"appid": paymentCategory.appid, # 【公众号 或者 小程序ID】
|
||||
"description": goods标题, # 【商品描述】 商品描述要
|
||||
"notify_url": "https://six.sixgou.com/six/mall_callbakc/", # 回调地址要
|
||||
"notify_url": "https://xiao.sixgou.com/six/mall_callbakc/", # 回调地址要
|
||||
"amount": {
|
||||
# "total": order购物车商品总价, # 【总金额】 订单总金额,单位为分。
|
||||
"total": 1, # 【总金额】 订单总金额,单位为分。
|
||||
@@ -71,6 +103,11 @@ class 业务订单接口ViewSets(ViewSet):
|
||||
# "openid": "ohQkD7A-N93kljcFmkCyG6e_D9vg", # 【用户标识】 用户在普通商户AppID下的唯一标识。 下单前需获取到用户的OpenID,详见OpenID获取
|
||||
"openid": self_mini_openid, # 【用户标识】 用户在普通商户AppID下的唯一标识。 下单前需获取到用户的OpenID,详见OpenID获取
|
||||
},
|
||||
"detail": {
|
||||
# 【商品详情】 商品详情描述,该结构去除多余空格换行压缩后,总长度不能超过6144字节。
|
||||
"goods_detail": goods_detail_支付优惠券的数据
|
||||
},
|
||||
"support_fapiao": True, # 【电子发票入口开放标识】 传入true时,支付成功消息和支付详情页将出现开票入口。需要在微信支付商户平台或微信公众平台开通电子发票功能,传此字段才可生效。
|
||||
} # 请求的数据
|
||||
wechat_data = wechatPay(payment=sixpay六果科技公司).getpay_jsapi(uri=url_pay, body_data=body, method="POST")
|
||||
payData = pydash.get(obj=wechat_data, path="response")
|
||||
@@ -88,13 +125,13 @@ class 业务订单接口ViewSets(ViewSet):
|
||||
# httpResData = BaseResponse(resData=ResData(listData=[""], dictData={}), ).model_dump()
|
||||
return Response(data=httpResData, status=status.HTTP_200_OK)
|
||||
|
||||
@sync_lock_接口线程锁(lock=lock_接口线程锁) # 锁住这个接口所有并发请求,
|
||||
@action(detail=False, methods=["post"], url_path="mall_callbakc")
|
||||
def jsapi支付回调测试接口(self, request: Request) -> Response:
|
||||
""" 微信支付成功后的回调接口 """
|
||||
dict_body = request.data
|
||||
wechat_data支付回调数据 = wechatPay(payment=paymentCategory).callBack回调解密(headers=request.headers,
|
||||
response_body=dict_body, )
|
||||
print("\n 🍎 🍏 🍊 🍎 🍏 \n", wechat_data支付回调数据, )
|
||||
out_trade_no商家侧支付订单号 = pydash.get(obj=wechat_data支付回调数据, path="out_trade_no") # 商家侧的订单号
|
||||
trade_state_desc = pydash.get(obj=wechat_data支付回调数据, path="trade_state_desc") # 支付回调的支付状态
|
||||
transaction_id = pydash.get(obj=wechat_data支付回调数据, path="transaction_id")
|
||||
@@ -106,7 +143,6 @@ class 业务订单接口ViewSets(ViewSet):
|
||||
order物流订单号=生成商家侧物流的订单号,
|
||||
order支付微信官方订单号=transaction_id,
|
||||
)
|
||||
print("打印一下商家的订单号", out_trade_no商家侧支付订单号, transaction_id)
|
||||
(miniUser积分(share分享者unionidID="", click点击者unionidID="")
|
||||
.add添加好友助力下单返利积分(order支付商家侧订单号=out_trade_no商家侧支付订单号, share积分类型="好友下单"))
|
||||
ems邮政物流工具().生成运单(out_trade_no商家侧支付订单号=out_trade_no商家侧支付订单号) # 调用方法,生成真实的物流订单号码;
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
from typing import cast
|
||||
|
||||
import pydash
|
||||
from channels.layers import BaseChannelLayer, get_channel_layer
|
||||
from django.http.response import HttpResponse
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.request import Request
|
||||
from rest_framework.viewsets import ViewSet
|
||||
|
||||
from wechat_微信支付证书.江苏六果科技有限公司支付证书.江苏六果科技有限公司支付参数 import sixpay六果科技公司
|
||||
from wechat_项目工具包.微信支付工具包.微信支付类 import wechatPay
|
||||
|
||||
default_channel_layer = cast(BaseChannelLayer, get_channel_layer(alias="default"))
|
||||
|
||||
from functools import wraps
|
||||
import threading
|
||||
|
||||
|
||||
def sync_lock(lock):
|
||||
def decorator(fn):
|
||||
@wraps(fn)
|
||||
def wrapper(*args, **kwargs):
|
||||
with lock:
|
||||
return fn(*args, **kwargs)
|
||||
|
||||
return wrapper
|
||||
|
||||
return decorator
|
||||
|
||||
|
||||
class 电子发票管理接口ViewSets(ViewSet):
|
||||
lock = threading.Lock() # 所有请求 共享这一个 lock对象
|
||||
|
||||
@sync_lock(lock=lock) # 锁住这个接口所有并发请求,
|
||||
@action(detail=False, methods=["get", "post", "put", "delete"], url_path="callback")
|
||||
def 电子发票回调接口(self, request: Request):
|
||||
""""""
|
||||
print("电子发票请求进来了没有")
|
||||
print(request.data)
|
||||
print(request.query_params)
|
||||
电子发票回调解密后的数据 = wechatPay(payment=sixpay六果科技公司).callBack回调解密(headers=request.headers, response_body=request.data)
|
||||
|
||||
print(电子发票回调解密后的数据, "=======================")
|
||||
fapiao_apply_id = pydash.get(obj=电子发票回调解密后的数据, path="fapiao_apply_id")
|
||||
return HttpResponse(content="OK")
|
||||
@@ -38,6 +38,6 @@ class 实时更新物流数据ViewSets(ViewSet):
|
||||
order物流公司订单编号 = request.data.get("order物流公司订单编号", None)
|
||||
order物流订单号 = request.data.get("order物流订单号", None)
|
||||
print("实时更新数据请求进来了吗")
|
||||
ems邮政物流工具().更新物流快递数据(order物流公司订单编号=order物流公司订单编号, order物流订单号=order物流订单号)
|
||||
ems邮政物流工具().更新物流快递数据(order物流公司订单编号=order物流公司订单编号, )
|
||||
httpResData = BaseResponse(resData=ResData(listData=[""], dictData={}), ).model_dump()
|
||||
return Response(data=httpResData, status=status.HTTP_200_OK)
|
||||
|
||||
@@ -32,7 +32,8 @@ class 小程序发优惠券到钱包接口ViewSets(ViewSet):
|
||||
@action(detail=False, methods=["get", "post", "put", "delete"], url_path="生成优惠券")
|
||||
def 生成优惠券(self, request: Request):
|
||||
""""""
|
||||
stock发券数据 = stock发送代金券功能(stock_id_代金券批次号="22512292").send发券并返回前端需要的数据()
|
||||
# stock发券数据 = stock发送代金券功能(stock_id_代金券批次号="22512292").send发券并返回前端需要的数据()
|
||||
stock发券数据 = stock发送代金券功能(stock_id_代金券批次号="22625737").send发券并返回前端需要的数据()
|
||||
# 4. 生成签名
|
||||
return Response(data=stock发券数据)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user