Tool/WebCenter/CouponCode/webapp.py
@@ -50,9 +50,11 @@
        
Def_CardMsg = {
               0:"CodeRewardSys2", #  兑换码无效
               1: "CodeRewardSys1", #   兑换卡奖励已发至邮件
               1:"CodeRewardSys1", #   兑换卡奖励已发至邮件
               2:"CodeRewardSys3", #  兑换码已使用过
               3:"CodeRewardSys4",  # 同类型兑换码只能使用一次
               4:"LvErr", # 等级不足
               5:"VipLevel", # VIP等级不足
         }
                
                
@@ -191,6 +193,11 @@
            mylog.debug("common status=2")
            return SendGm(gmresult, pushurl)
        
        commCheckStatus = CommCheck(dataDict, codeStr)
        if commCheckStatus != None:
            gmresult['status'] = commCheckStatus
            return SendGm(gmresult, pushurl)
        gmresult['status'] = 1
        gmresult['code'] = codeStr
        gmresult['coupontype'] = codeStr  # 统一格式,服务器不一定有用,固定码根据 codeStr 发奖励
@@ -228,63 +235,11 @@
            dbController.update(CouponDB.CouponWXColName, {"code":codeStr, "operateid":operateID}, wxdata)
            # 通知后台记录
            SendDataCollectorBillInfo(wxdata, pushurl, operateID)
        return
        return
    
    #-----------批量兑换码处理,同类型可重复领取----------------------
    if codeStr.startswith('h'):
        result, data = dbController.find_one(CouponDB.CouponCodeColName + "_" + agentName, {"code":codeStr, "channel":agentName})
        if not data:
            #无此卡
            gmresult['status'] = 0
            mylog.debug("no card")
            return SendGm(gmresult, pushurl)
        if int(data['status']) == 1:
            #已使用,同卡号记录默认可用,避免断线发送失败的情况(未返回结果验证情况下)
            gmresult['status'] = 2
            mylog.debug("card used!")
            return SendGm(gmresult, pushurl)
        result, data2 = dbController.find_one(CouponDB.CouponBatchColName, {"couponid":data["couponid"]})
        if not data2:
            #此批次卡已删除
            gmresult['status'] = 0
            mylog.debug("no couponid")
            return SendGm(gmresult, pushurl)
        if int(data2['status']) == 1:
            #暂停使用该批次卡
            gmresult['status'] = 0
            mylog.debug("couponid frozed")
            return SendGm(gmresult, pushurl)
        if (data2["minserverno"] != 0 and data2["maxserverno"] != 0):
            if int(data2["minserverno"]) > sid or int(data2["maxserverno"]) < sid:
                #不在指定区
                gmresult['status'] = 0
                mylog.debug("no sid")
                return SendGm(gmresult, pushurl)
        if data2["expiretime"] != "" and datetime.datetime.today() > GetDateTimeByStr(data2["expiretime"]):
            #已过期
            gmresult['status'] = 0
            mylog.debug("time pass")
            return SendGm(gmresult, pushurl)
        #可重复领取则不验证同批次卡
        data['status'] = 1
        data['accid'] = accid
        data['usetime'] = str(datetime.datetime.today())
        dbController.update(CouponDB.CouponCodeColName + "_" + agentName, {"code":codeStr, "channel":agentName}, data)
        # 0 不可用,1.可用发放奖励 ,2.已使用 3.同类型卡不能使用两次
        gmresult['status'] = 1
        gmresult['code'] = codeStr
        gmresult['coupontype'] = data["coupontype"]
        mylog.debug("card ok!")
        return SendGm(gmresult, pushurl)
    #-----------批量兑换码处理,同类型只领取一次----------------------
    result, data = dbController.find_one(CouponDB.CouponCodeColName + "_" + agentName, {"code":codeStr, "channel":agentName})
    if not data:
        #无此卡
        gmresult['status'] = 0
@@ -294,6 +249,11 @@
        #已使用,同卡号记录默认可用,避免断线发送失败的情况(未返回结果验证情况下)
        gmresult['status'] = 2
        mylog.debug("card used!")
        return SendGm(gmresult, pushurl)
    commCheckStatus = CommCheck(dataDict, data["coupontype"])
    if commCheckStatus != None:
        gmresult['status'] = commCheckStatus
        return SendGm(gmresult, pushurl)
    
    result, data2 = dbController.find_one(CouponDB.CouponBatchColName, {"couponid":data["couponid"]})
@@ -318,17 +278,20 @@
        gmresult['status'] = 0
        mylog.debug("time pass")
        return SendGm(gmresult, pushurl)
    #再查一次是否用过此批次的其他卡,
    result, data3 = dbController.find_one(CouponDB.CouponCodeColName + "_" + agentName, \
                                          {"couponid":data["couponid"], "accid":accid})
    if data3:
        #用过同类卡,已记录过不再做新记录
        gmresult['status'] = 3
        gmresult['coupontype'] = data["coupontype"]
        gmresult['code'] = codeStr
        mylog.debug("use again")
        return SendGm(gmresult, pushurl)
    
    # h 开头的卡类型可重复使用
    if not codeStr.startswith('h'):
        #再查一次是否用过此批次的其他卡,
        result, data3 = dbController.find_one(CouponDB.CouponCodeColName + "_" + agentName, \
                                              {"coupontype":data["coupontype"], "accid":accid})
        if data3:
            #用过同类卡,已记录过不再做新记录
            gmresult['status'] = 3
            gmresult['coupontype'] = data["coupontype"]
            gmresult['code'] = codeStr
            mylog.debug("use again")
            return SendGm(gmresult, pushurl)
    data['status'] = 1
    data['accid'] = accid
    data['usetime'] = str(datetime.datetime.today())
@@ -342,7 +305,24 @@
    mylog.debug("card ok!")
    return SendGm(gmresult, pushurl)
def CommCheck(dataDict, coupontype):
    ## 通用常规检查
    # 使用等级
    lvLimit = ConfigIO.GetInt(coupontype, "LV")
    playerLV = CommFunc.ToIntDef(dataDict.get("level", 0))
    if lvLimit > 0 and playerLV < lvLimit:
        mylog.debug("playerLV(%s) < lvLimit(%s)" % (playerLV, lvLimit))
        return 4
    # vip等级相关
    vipLVLimit = ConfigIO.GetInt(coupontype, "VIPLV")
    playerVIPLV = CommFunc.ToIntDef(dataDict.get("viplevel", 0))
    if vipLVLimit > 0 and playerVIPLV < vipLVLimit:
        mylog.debug("playerVIPLV(%s) < vipLVLimit(%s)" % (playerVIPLV, vipLVLimit))
        return 5
    return
def SendGm(gmresult, pushurl):
    try: