| | |
| | |
|
| | | Def_CardMsg = {
|
| | | 0:"CodeRewardSys2", # 兑换码无效
|
| | | 1: "CodeRewardSys1", # 兑换卡奖励已发至邮件
|
| | | 1:"CodeRewardSys1", # 兑换卡奖励已发至邮件
|
| | | 2:"CodeRewardSys3", # 兑换码已使用过
|
| | | 3:"CodeRewardSys4", # 同类型兑换码只能使用一次
|
| | | 4:"LvErr", # 等级不足
|
| | | 5:"VipLevel", # VIP等级不足
|
| | | }
|
| | |
|
| | |
|
| | |
| | | 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 发奖励
|
| | |
| | | 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
|
| | |
| | | #已使用,同卡号记录默认可用,避免断线发送失败的情况(未返回结果验证情况下)
|
| | | 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"]})
|
| | |
| | | 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())
|
| | |
| | | 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:
|