import os import django import pydash from sixGuoDjango.settings import base_dir_name os.environ.setdefault(key="DJANGO_SETTINGS_MODULE", value=f"{base_dir_name}.settings") django.setup() from wechat_数据库.支付订单数据库.商品订单数据 import order订单 from datetime import datetime from typing import Literal from zoneinfo import ZoneInfo from pydantic import BaseModel, Field from wechat_数据库.用户数据库.小程序登陆用户 import weiuser from wechat_数据库.用户数据库.小程序积分数据库 import share积分表 class miniUser提现状态(BaseModel): # demo_必填: int = Field(..., description="描述") # 必传属发生 # demo_可选: Optional[int] = None # 可选值 # demo_默认值: int = Field(default=100001, description="描述") # 有默认值 # demo_联合类型: Literal["xiao", "zizi"] = Field(..., description="描述") 不可提现: str = Field(default="不可提现", description="不可提现") 可提现: str = Field(default="可提现", description="可提现") 提现中: str = Field(default="提现中", description="提现中") class miniUser用户角色(BaseModel): # demo_必填: int = Field(..., description="描述") # 必传属发生 # demo_可选: Optional[int] = None # 可选值 # demo_默认值: int = Field(default=100001, description="描述") # 有默认值 # demo_联合类型: Literal["xiao", "zizi"] = Field(..., description="描述") 推广员: str = Field(default="推广员", description="推广员") 企微员工: str = Field(default="企微员工", description="企微员工") 代理商: str = Field(default="代理商", description="代理商") 普通会员: str = Field(default="普通会员", description="普通会员") 用工关系已绑定: str = Field(default="用工关系已绑定", description="用工关系已绑定") 新人红包首次添加企微积分值: int = Field(default=100, description="新人红包首次添加企微积分值") 发券奖励积分值: int = Field(default=10, description="添加通知好友积分") 每日积分积分值: int = Field(default=50, description="发券奖励积分值") 小程序分享积分值: int = Field(default=10, description="小程序分享积分值") class miniUser积分(BaseModel): share分享者unionidID: str = Field(..., description="分享者的unionid") click点击者unionidID: str = Field(..., description="点击者的的openid") bind绑定的企微unionidID: str = Field(default="", description="click绑定的企微unionidID") def add添加每日积分(self, share积分类型: Literal["每日签到"], share分享者积分值: int, ): pass # 注意,这里的每日签到: 分享者 同时 也是点击者 share分享者对象 = weiuser.objects.get(unionid=self.share分享者unionidID) click点击都对象 = weiuser.objects.get(unionid=self.click点击者unionidID) wecom绑定的企微ID的员工账号 = weiuser.objects.get(unionid=click点击都对象.user_绑定企微UNIONID) print("打印绑定了企微的对象", wecom绑定的企微ID的员工账号) print("---------", click点击都对象.user_绑定企微UNIONID) today当天的日期 = datetime.now(tz=ZoneInfo("Asia/Shanghai")).date() if wecom绑定的企微ID的员工账号.user_区县 == click点击都对象.user_区县: share对象, share布尔值 = share积分表.objects.update_or_create( share分享者unionid=self.share分享者unionidID, share分享者openid=share分享者对象.mini_openid, share点击者openid=click点击都对象.mini_openid, share点击者unionid=self.click点击者unionidID, share分享者积分值=share分享者积分值, share分享类型=share积分类型, share日期=today当天的日期, share积分是否可以提现的状态=miniUser提现状态().可提现, defaults={"share分享者头像": share分享者对象.user_头像, "share分享者昵称": share分享者对象.user_昵称, "share点击者头像": click点击都对象.user_头像, "share点击者昵称": click点击都对象.user_昵称 }, ) def add添加通知好友积分(self, share积分类型: Literal["通知好友", "发券奖励"], share分享者积分值: int = miniUser用户角色().发券奖励积分值, ): pass """这个积分对应的是 小程序主页面 分享3元券的图片 """ share分享者对象 = weiuser.objects.get(unionid=self.share分享者unionidID) click点击都对象 = weiuser.objects.get(unionid=self.click点击者unionidID) wecom绑定的企微ID的员工账号 = weiuser.objects.get(unionid=click点击都对象.user_绑定企微UNIONID) if share分享者对象.user_区县 == click点击都对象.user_区县 or click点击都对象.user_区县 == wecom绑定的企微ID的员工账号.user_区县: share对象, share布尔值 = share积分表.objects.update_or_create( share分享者unionid=self.share分享者unionidID, share分享者openid=share分享者对象.mini_openid, share点击者openid=click点击都对象.mini_openid, share点击者unionid=self.click点击者unionidID, share分享者积分值=share分享者积分值, share分享类型=share积分类型, share积分是否可以提现的状态=miniUser提现状态().可提现, defaults={"share分享者头像": share分享者对象.user_头像, "share分享者昵称": share分享者对象.user_昵称, "share点击者头像": click点击都对象.user_头像, "share点击者昵称": click点击都对象.user_昵称 }, ) if share布尔值: print("发券奖励积分 添加成功") else: print("发券奖励积分 已经存在领过的") def add添加用户分享商品推荐的积分(self, share积分类型: Literal["好物推荐"], share分享者积分值: int, share分享的商品ID: str): pass print("add添加用户商品详情页面分享积分调用了") share分享者对象 = weiuser.objects.get(unionid=self.share分享者unionidID) click点击都对象 = weiuser.objects.get(unionid=self.click点击者unionidID) six六果对象, sixBool = weiuser.objects.get_or_create(unionid="六果") wecom绑定的企微ID的员工账号 = weiuser.objects.get(unionid=click点击都对象.user_绑定企微UNIONID) if share分享者对象.user_区县 == click点击都对象.user_区县 or click点击都对象.user_区县 == wecom绑定的企微ID的员工账号.user_区县: share对象, share布尔值 = share积分表.objects.update_or_create( share分享者unionid=self.share分享者unionidID, share分享者openid=share分享者对象.mini_openid, share点击者openid=click点击都对象.mini_openid, share点击者unionid=self.click点击者unionidID, share分享者积分值=share分享者积分值, share分享类型=share积分类型, share分享的商品ID=share分享的商品ID, share积分是否可以提现的状态=miniUser提现状态().可提现, defaults={"share分享者头像": share分享者对象.user_头像, "share分享者昵称": share分享者对象.user_昵称, "share点击者头像": click点击都对象.user_头像, "share点击者昵称": click点击都对象.user_昵称 }, ) # 。更新需要的数据 def add添加小程序推荐积分(self, share积分类型: Literal["小程序推荐"], share分享者积分值: int = miniUser用户角色().小程序分享积分值, ): pass share分享者对象 = weiuser.objects.get(unionid=self.share分享者unionidID) click点击都对象 = weiuser.objects.get(unionid=self.click点击者unionidID) wecom绑定的企微ID的员工账号 = weiuser.objects.get(unionid=click点击都对象.user_绑定企微UNIONID) if share分享者对象.user_区县 == click点击都对象.user_区县 or click点击都对象.user_区县 == wecom绑定的企微ID的员工账号.user_区县: share对象, share布尔值 = share积分表.objects.update_or_create( share分享者unionid=share分享者对象.unionid, share分享者openid=share分享者对象.mini_openid, share点击者openid=click点击都对象.mini_openid, share点击者unionid=self.click点击者unionidID, share分享者积分值=share分享者积分值, share分享类型=share积分类型, share积分是否可以提现的状态=miniUser提现状态().可提现, defaults={"share分享者头像": share分享者对象.user_头像, "share分享者昵称": share分享者对象.user_昵称, "share点击者头像": click点击都对象.user_头像, "share点击者昵称": click点击都对象.user_昵称 }, ) def add添加好友助力下单返利积分(self, share积分类型: Literal["好友下单"], order支付商家侧订单号): pass # 方法被调用的时候 第一步,需要更新当前点击的状态, # 将字符串转为换字典 order对象 = order订单.objects.get(order支付商家侧订单号=order支付商家侧订单号) # 拿到当前订单的对象数据 share分享者unionidID = order对象.order分享者unionid click点击者unionidID = order对象.order支付者unionid share分享者对象 = weiuser.objects.get(unionid=share分享者unionidID) click点击都对象 = weiuser.objects.get(unionid=click点击者unionidID) six六果对象, sixBool = weiuser.objects.get_or_create(unionid="六果") # 通过订单号,拿到 第一个值: order购物车商品好友下单助力的推广员的积分值 = pydash.get(obj=pydash.head(order对象.order购物车商品数据), path="推荐积分.推广员") # 当前角色,对应的推广积分值 order购物车商品好友下单助力的企微员工的的积分值 = pydash.get(obj=pydash.head(order对象.order购物车商品数据), path="推荐积分.企微员工") # 当前角色,对应的推广积分值 order好友下单商品数量 = pydash.get(obj=pydash.head(order对象.order购物车商品数据), path="单个商品订单数量") order好友下单助力计算后的积分值 = int(order好友下单商品数量) * int(order购物车商品好友下单助力的推广员的积分值) order好友下单企微员工需要添加的积分值 = int(order好友下单商品数量) * int(order购物车商品好友下单助力的企微员工的的积分值) if share分享者unionidID == click点击者unionidID or share分享者对象.parent == six六果对象: print("自己点了自己,不需要添加积分了") return if share分享者对象.user_角色权限 == miniUser用户角色().推广员: pass # 如果是推广员则添加 share对象, share布尔值 = share积分表.objects.update_or_create( share分享者unionid=share分享者unionidID, share分享者openid=share分享者对象.mini_openid, share点击者unionid=click点击者unionidID, share点击者openid=click点击都对象.mini_openid, share分享者积分值=order好友下单助力计算后的积分值, share支付订单商家侧的订单号=order支付商家侧订单号, share分享类型=share积分类型, share积分是否可以提现的状态=miniUser提现状态().可提现, defaults={"share分享者头像": share分享者对象.user_头像, "share分享者昵称": share分享者对象.user_昵称, "share点击者头像": click点击都对象.user_头像, "share点击者昵称": click点击都对象.user_昵称 }, ) print("如果是推广员则添加如果是推广员则添加如果是推广员则添加如果是推广员则添加", share布尔值, share对象) else: share对象, share布尔值 = share积分表.objects.update_or_create( share分享者unionid=share分享者unionidID, share分享者openid=share分享者对象.mini_openid, share点击者unionid=click点击者unionidID, share点击者openid=click点击都对象.mini_openid, share分享者积分值=order好友下单助力计算后的积分值, share支付订单商家侧的订单号=order支付商家侧订单号, share分享类型=share积分类型, share积分是否可以提现的状态=miniUser提现状态().不可提现, defaults={"share分享者头像": share分享者对象.user_头像, "share分享者昵称": share分享者对象.user_昵称, "share点击者头像": click点击都对象.user_头像, "share点击者昵称": click点击都对象.user_昵称 }, ) print("如果是推广员则添加如果是推广员则添加如果是推广员则添加如果是推广员则添加", share布尔值, share对象) if share分享者对象.user_企微角色权限 == miniUser用户角色().企微员工: print("给企微员工添加了积分了") share对象, share布尔值 = share积分表.objects.update_or_create( share分享者unionid=share分享者unionidID, share分享者openid=share分享者对象.mini_openid, share点击者unionid=click点击者unionidID, share点击者openid=click点击都对象.mini_openid, share分享者积分值=order好友下单企微员工需要添加的积分值, share支付订单商家侧的订单号=order支付商家侧订单号, share分享类型=share积分类型, share积分是否可以提现的状态=miniUser提现状态().可提现, defaults={"share分享者头像": share分享者对象.user_头像, "share分享者昵称": share分享者对象.user_昵称, "share点击者头像": click点击都对象.user_头像, "share点击者昵称": click点击都对象.user_昵称 }, ) def add添加点击者添加企微员工双向红包积分(self, share积分类型: Literal["新人红包"], share分享者二维码state: str): pass # 必须要先处理一下当前用户的状态,有一种可能性: 就是当前用户直接进入了小程序,所以当前用户的上级用户就是six对象; six六果对象, sixBool = weiuser.objects.get_or_create(unionid="六果") # 添加逻辑为: 能调用则说明用户是首次,还可以再添加一个判断条件 share分享者对象 = weiuser.objects.get(unionid=self.share分享者unionidID) # 这里传递的是分享者,绑定的企微二维码state click点击都对象 = weiuser.objects.get(unionid=self.click点击者unionidID) bindRwecom企微员工对象 = weiuser.objects.get(unionid=self.bind绑定的企微unionidID) click点击者父元素 = click点击都对象.parent print("当前点击者的父元素是谁", click点击者父元素.unionid) print("添加企微客户的积分功能调用了啦") if click点击都对象.parent == six六果对象: print("===========这里判断生成了就需要更新当前用户的新状态了====处理的当前用户,进来的时候不是好友分享的状态,所以得更新,将当前用户的状态更到当前的企微用户名下============") click点击都对象.parent = bindRwecom企微员工对象 click点击都对象.user_绑定企微UNIONID = bindRwecom企微员工对象.user_绑定企微UNIONID click点击都对象.user_用户当前的等级 = bindRwecom企微员工对象.user_用户当前的等级 + 1 click点击都对象.codeRemark = bindRwecom企微员工对象.codeRemark click点击都对象.codeQrCode = bindRwecom企微员工对象.codeQrCode click点击都对象.codeConfigId = bindRwecom企微员工对象.codeConfigId click点击都对象.user_绑定企微usrID账号 = bindRwecom企微员工对象.user_绑定企微usrID账号 click点击都对象.save() # 第一个逻辑,先判断,当前这个添加企微的 用户,是否已经领过红包了,如果领了过了就直接返回了 is是否领过红包 = share积分表.objects.filter(share分享者unionid=click点击都对象.unionid, share分享类型="新人红包", share分享者积分值=100).exists() if is是否领过红包: print("当前添加者已经领过新人红包了,直接return") return # 添加条件,分享者必须是推广员: # 添加 积分的条件一: 必须要满足,跟绑定的企微是同城的用户,如果不是同城用户,则不给任何的奖励 if bindRwecom企微员工对象.user_区县 == click点击都对象.user_区县: # 这里是:给当前添加企微的用户 添加积分 share对象, share布尔值 = share积分表.objects.update_or_create( share分享者unionid=click点击都对象.unionid, share分享者openid=click点击都对象.mini_openid, share点击者openid=click点击都对象.mini_openid, share点击者unionid=click点击都对象.unionid, share分享者积分值=100, share分享类型="新人红包", share积分是否可以提现的状态=miniUser提现状态().可提现, defaults={"share分享者头像": share分享者对象.user_头像, "share分享者昵称": share分享者对象.user_昵称, "share点击者头像": click点击都对象.user_头像, "share点击者昵称": click点击都对象.user_昵称 }, ) print("添加企微者,并且是同城的情况下,可提现状态,积分添加成功了", share布尔值) # 接着还需要处理,推广员, 并且还得是同城的情况下, 才可以给推广员添加积分了 if click点击者父元素.user_角色权限 == miniUser用户角色().推广员 and bindRwecom企微员工对象.user_区县 == click点击者父元素.user_区县 == click点击都对象.user_区县: # 这里的状态为可以提现 share对象, share布尔值 = share积分表.objects.update_or_create( share分享者unionid=click点击者父元素.unionid, share分享者openid=click点击者父元素.mini_openid, share点击者openid=click点击都对象.mini_openid, share点击者unionid=self.click点击者unionidID, share分享者积分值=300, share分享类型="荐客积分", share积分是否可以提现的状态=miniUser提现状态().可提现, defaults={"share分享者头像": share分享者对象.user_头像, "share分享者昵称": share分享者对象.user_昵称, "share点击者头像": click点击都对象.user_头像, "share点击者昵称": click点击都对象.user_昵称 }, ) print("分享者,可提现状态 推广员,分享积分添加成功了", share布尔值) return # 在这里判断的是 给当前公司的企微推广员, 添加积分 if bindRwecom企微员工对象.user_企微角色权限 == miniUser用户角色().企微员工 and bindRwecom企微员工对象.user_区县 == click点击都对象.user_区县: # 这里的状态为可以提现 这里的积分是给企微员工添加的,这里处理的是: 当前用户的是企微员工时的 积分添加; share对象, share布尔值 = share积分表.objects.update_or_create( share分享者unionid=bindRwecom企微员工对象.unionid, share分享者openid=bindRwecom企微员工对象.mini_openid, share点击者openid=click点击都对象.mini_openid, share点击者unionid=self.click点击者unionidID, share分享者积分值=300, share分享类型="荐客积分", share积分是否可以提现的状态=miniUser提现状态().可提现, defaults={"share分享者头像": share分享者对象.user_头像, "share分享者昵称": share分享者对象.user_昵称, "share点击者头像": click点击都对象.user_头像, "share点击者昵称": click点击都对象.user_昵称 }, ) print("企微员工,积分添加成功", share布尔值) return if __name__ == "__main__": pass # (miniUser积分(share分享者unionidID="", click点击者unionidID="") # .add添加好友助力下单返利积分(order支付商家侧订单号="OAT01KYDESHM9ADEXGY7BW0AVHFSG", share积分类型="好友下单", )) (miniUser积分(share分享者unionidID="oy4Jw6P1FnuTNF-hSoJHNztSAoQ0", click点击者unionidID="oy4Jw6P1FnuTNF-hSoJHNztSAoQ0", bind绑定的企微unionidID="oy4Jw6A1T3WkKOOhMxcbQTDSM8rs") .add添加每日积分(share积分类型="每日签到", share分享者积分值=50))