美文网首页
路飞学城结算中心的POST接口, 其他请求方式同理

路飞学城结算中心的POST接口, 其他请求方式同理

作者: aq_wzj | 来源:发表于2018-12-29 17:57 被阅读0次

    请求格式

    {"course_list":[{"course_id":"1","policy_id":"1"},{"course_id":"2","policy_id":"2"}]}
    

    存储格式(结算中心和全局优惠券格式)

    结算中心
    {
        "1":{  #课程id
            "coupon":{ # 可用课程优惠券
                "7":{ # 可用课程优惠券id
                    "coupon_type":0,
                    "coupon_display":"立减券",
                    "money_equivalent_value":10
                },
                "8":{
                    "coupon_type":1,
                    "coupon_display":"满减券",
                    "money_equivalent_value":10,
                    "minimum_consume":100
                },
                "9":{
                    "coupon_type":2,
                    "coupon_display":"折扣券",
                    "off_percent":90
                }
            },
            "title":"Django从入门到放弃",
            "img":"django.png",
            "default_policy":"3",
             "default_coupon":"0", # 默认课程优惠券id
            "policy":{
                "1":{
                    "period":3,
                    "period_display":"3天",
                    "price":200
                },
                "3":{
                    "period":60,
                    "period_display":"2个月",
                    "price":1000
                },
                "4":{
                    "period":30,
                    "period_display":"1个月",
                    "price":500
                }
            }
        },
        "2":{
            "coupon":{
    
            },
            "title":"Git操作",
            "img":"git.png",
            "default_policy":"2",
            "policy":{
                "2":{
                    "period":30,
                    "period_display":"1个月",
                    "price":60
                },
                "5":{
                    "period":1,
                    "period_display":"1天",
                    "price":0
                },
                "6":{
                    "period":90,
                    "period_display":"3个月",
                    "price":50
                }
            }
        }
    }
    
    全局优惠券格式
    {
        "coupon":{
            "4":{ # 全站优惠券id
                "coupon_type":1,
                "coupon_display":"满减券",
                "money_equivalent_value":10,
                "minimum_consume":100
            },
            "5":{
                "coupon_type":0,
                "coupon_display":"立减券",
                "money_equivalent_value":10
            },
            "6":{
                "coupon_type":2,
                "coupon_display":"折扣券",
                "off_percent":80
            }
        },
        "default_coupon":0 # 默认全站优惠券id
    }
    

    结算中心逻辑分析:

    添加到结算中心--post---
    {"course_list":[{"course_id":"1","policy_id":"1"},{"course_id":"2","policy_id":"2"}]}
    1 定义结算中心的字典,定义全局优惠券的字典
            payment_dict_userid={}
            global_coupon_dict = {
                "coupon": {},
                "default_coupon": 0
            }
    2 拿到购物车,循环取出传入的课程id,判断是否在购物车中,不在直接抛异常
    3 构造单个课程详情的字典,把购物车中的当前课程,update到该字典中
       
    4 将该课程详情,加入到结算中心(现在里面没有优惠券相关信息)(为了效率,不在for循环中查询数据库,查出优惠券)
        
    5 一次性查出当前用户的所有优惠券信息(用户为当前用户,状态为未使用,优惠券起始时间小于当前时间,优惠券结束时间大于当前时间)
    
    6 循环所有优惠券
    7 构造出单个优惠券的空字典,拿到优惠券类型(0立减 1满减 2折扣),拿到优惠券id,拿到该优惠券绑定的课程id(有可能为空)
    
    8 构造单个优惠券字典,将数据填充进去,格式如下:
    
    9 判断是全站优惠券还是课程优惠券
    
    10 讲结算中心字典和全局优惠券字典,放入redis中
                            elf.conn.set('payment_dict_%s'%request.user.id,json.dumps(payment_dict_userid))
                            self.conn.set('global_coupon_dict_%s'%request.user.id,json.dumps(global_coupon_dict))
    11 返回成功
    
    
    

    相关文章

      网友评论

          本文标题:路飞学城结算中心的POST接口, 其他请求方式同理

          本文链接:https://www.haomeiwen.com/subject/nayplqtx.html