From c67a2d59e881e3d1df1a4142983e76e8fb5db24a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 28 十二月 2018 21:26:28 +0800
Subject: [PATCH] 5424 【后端】【1.4】跨服竞技场开发(匹配规则优化,优先匹配同段位的,同段位不足两个人的支持按段位区间匹配)
---
Tool/WebCenter/Coupon/webapp.py | 373 +++++++++++++++++-----------------------------------
1 files changed, 124 insertions(+), 249 deletions(-)
diff --git a/Tool/WebCenter/Coupon/webapp.py b/Tool/WebCenter/Coupon/webapp.py
index 227bfe5..aaea0f0 100644
--- a/Tool/WebCenter/Coupon/webapp.py
+++ b/Tool/WebCenter/Coupon/webapp.py
@@ -211,42 +211,6 @@
return json.dumps({"success":couponid}, ensure_ascii=False)
-#/api/Coupon/index.php?couponBatchId=%s&agentName=%s"
-# 涓嬭浇鎸囧畾绀煎寘鎵规
-@myapp.route('/Coupon/CouponLoad.php')
-def LoadCouponBatch():
- dataDict = request.GET
- appid = dataDict.get("channel", "") # 杩愯惀鎻愪緵鐨凙PPID锛屽嵆娓犻亾
- if not appid:
- mylog.debug("no appid")
- return json.dumps({"error":"param appid"}, ensure_ascii=False)
- couponid = dataDict.get("couponid", "")
- if not couponid:
- return json.dumps({"error":"param couponid"}, ensure_ascii=False)
-
- downFile = r".\download\%s.zip"%couponid
- if os.path.isfile(downFile):
- return static_file("%s.zip"%couponid, r".\download", download=True)
-
- dbController = CouponDB.GetDBEventCon()
- if not dbController:
- # 鏃犳硶鑾峰彇鏁版嵁搴�
- mylog.debug("no dbController")
- return json.dumps({"error":"db"}, ensure_ascii=False)
- result, data = dbController.find(CouponDB.CouponCodeColName + "_" + appid, {'channel':appid, 'couponid':couponid})
- if not data:
- return json.dumps({"error":"no couponid"}, ensure_ascii=False)
-
- fileIO = open(r".\download\%s.txt"%couponid, 'w')
-
- for codeInfo in data:
- fileIO.write(codeInfo["code"] + "\n")
- fileIO.close()
-
- f = zipfile.ZipFile(downFile, 'w', zipfile.ZIP_DEFLATED)
- f.write(r".\download\%s.txt"%couponid)
- f.close()
- return static_file("%s.zip"%couponid, r".\download", download=True)
# 鏌ヨ鍗′娇鐢ㄦ儏鍐�
@myapp.route('/Coupon/QueryCouponCode.php')
@@ -271,219 +235,6 @@
return json.dumps(data, ensure_ascii=False)
-# 鍗$被鍨� 寮�澶村瓧姣嶅仛鏍囪瘑濡� g1~999浠h〃姝ゅ崱鍙兘浣跨敤涓�娆� h1~999鍗″彲浠ラ噸澶嶄娇鐢� z寮�澶翠唬琛ㄥ浐瀹氱爜
-# 鐜╁浣跨敤鍗″彿 鍙傛暟 骞冲彴 鍖烘湇 璐﹀彿 鍖烘湇閾炬帴锛圙M鐢級鍗″彿
-# http://center.xxx.com:53003/Coupon/CouponCode.php?channel=appid&code=XXX&accid=YYY&sid=222&pushurl=s222.xxx.com
-@myapp.route('/Coupon/CouponCode.php')
-def CouponCode():
- dataDict = request.GET
-
- for key, value in dataDict.items():
- mylog.debug("CouponCode key:%s value:%s"%(key, value))
-
- agentName = dataDict.get("channel", "") # 杩愯惀鎻愪緵鐨凙PPID锛屽嵆娓犻亾
- if not agentName:
- mylog.debug("no appid")
- return
- codeStr = dataDict.get("code", "")
- if not codeStr:
- return
-
- accid = dataDict.get("accid", "")
- if not accid:
- return
-
- sid = CommFunc.ToIntDef(dataDict.get("sid", 0), 0)
- if not sid:
- return
- pushurl = dataDict.get("pushurl", "")
- if not pushurl:
- return
-
- # 杞寲涓烘父鎴忚处鍙�
- accid = "%s@%s@s%s"%(accid, agentName, sid)
-
- dbController = CouponDB.GetDBEventCon()
- if not dbController:
- # 鏃犳硶鑾峰彇鏁版嵁搴�
- mylog.debug("no dbController")
- return
-
- #閫氳繃GM鎺ュ彛鍛婄煡鐜╁浣跨敤鎯呭喌
- gmresult = {'accID':accid, 'sid':sid, 'channel':agentName}
-
- #-----------缁熶竴鍥哄畾鐮佸鐞�----------------------
- if codeStr in CommonCards:
- # 涓嶅悓鍥哄畾鐮佸悇鑷彧鑳介涓�娆�
- result, commondata = dbController.find_one(CouponDB.CouponCodeColName + "_Common", {"code":codeStr, "accid":accid})
- if commondata:
- # 宸蹭娇鐢�
- gmresult['status'] = 2
- mylog.debug("common status=2")
- return SendGm(gmresult, pushurl)
-
- gmresult['status'] = 1
- gmresult['code'] = codeStr
- gmresult['coupontype'] = codeStr # 缁熶竴鏍煎紡锛屾湇鍔″櫒涓嶄竴瀹氭湁鐢紝鍥哄畾鐮佹牴鎹� codeStr 鍙戝鍔�
-
- dbController.insert(CouponDB.CouponCodeColName + "_Common", {"code":codeStr, "accid":accid})
- mylog.debug("common ok")
- return SendGm(gmresult, pushurl)
-
- 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)
- #鍐嶆煡涓�娆℃槸鍚︾敤杩囨鎵规鐨勫叾浠栧崱,
- 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)
-
- 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)
-
-
-
-def SendGm(gmresult, pushurl):
- try:
- # GM鎺ㄩ�佸湴鍧�
- #GMToolPage = http://s1.yhlz.09ge.com:30001/Server/Tool.php
- gmurl = "http://%s:%s/Server/Tool.php"%(pushurl, PushPort)
- gmkey = PushKey
- if not gmkey or not gmurl:
- return
-
- useStatus = gmresult['status']
-
- gmresult['notifyMsg'] = Def_CardMsg.get(useStatus, "CodeRewardSys2")
-
-
- if useStatus != 1:
- #澶辫触绯荤粺鎻愮ず
- pack_data = {};
- pack_data["queryType"] = "accID"
- pack_data["playerFind"] = gmresult["accID"]
- pack_data["pack_type"] = "GMT_MediaCard"
- pack_data["notifyMsg"] = gmresult['notifyMsg']
-
- pack_data["key"] = gmkey;
- pack_data['coding'] = "utf8";
-
- #浣跨敤key鍔犲瘑
- pack_data_dict = json.dumps(pack_data)
- sign = md5.md5(pack_data_dict+gmkey).hexdigest()
- post = {}
- post['pack'] = pack_data_dict;
- post['sign'] = sign;
- urllib2.urlopen(gmurl, urllib.urlencode(post), 3)
- return
-
- mylog.debug("SendGm:%s"%gmurl)
- pack_data = {};
- pack_data["queryType"] = "accID"
- pack_data["playerList"] = gmresult["accID"]
- pack_data["Title"] = ConfigIO.GetValue(gmresult["coupontype"], "MailTitle").decode("gbk")
- pack_data["Text"] = ConfigIO.GetValue(gmresult["coupontype"], "MailText").decode("gbk")
- pack_data["EndTime"] = str(datetime.datetime.today() + datetime.timedelta(days=15)).split('.')[0]
- pack_data["Sender"] = ConfigIO.GetValue(gmresult["coupontype"], "MailSender").decode("gbk")
-
-
- Items = eval(ConfigIO.GetValue(gmresult["coupontype"], "Items"))
- pack_data["itemNums"] = ','.join([str(i) for i in range(len(Items))])
- i = 0
- for itemList in Items:
- pack_data["ItemID%s"%i] = str(itemList[0])
- pack_data["ItemCnt%s"%i] = str(itemList[1])
- pack_data["IsBind%s"%i] = '1'
- i += 1
-
- pack_data["pack_type"] = "GMT_AddPersonalCompensation"
- pack_data["Detail"] = "cardCode:" + gmresult["code"]
-
- pack_data["key"] = gmkey;
- pack_data['coding'] = "utf8";
-
- #浣跨敤key鍔犲瘑
- pack_data_dict = json.dumps(pack_data)
- sign = md5.md5(pack_data_dict+gmkey).hexdigest()
- post = {}
- post['pack'] = pack_data_dict;
- post['sign'] = sign;
- result = urllib2.urlopen(gmurl, urllib.urlencode(post), 10)
-
- content = result.read()
- result.close()
-
- # 鎴愬姛鎻愮ず
- pack_data = {};
- pack_data["queryType"] = "accID"
- pack_data["playerFind"] = gmresult["accID"]
- pack_data["pack_type"] = "GMT_MediaCard"
- pack_data["notifyMsg"] = gmresult['notifyMsg']
-
- pack_data["key"] = gmkey;
- pack_data['coding'] = "utf8";
-
- #浣跨敤key鍔犲瘑
- pack_data_dict = json.dumps(pack_data)
- sign = md5.md5(pack_data_dict+gmkey).hexdigest()
- post = {}
- post['pack'] = pack_data_dict;
- post['sign'] = sign;
- urllib2.urlopen(gmurl, urllib.urlencode(post), 3)
-
- return content
- except Exception, e:
- mylog.debug("gm error %s"%e)
- return
-
def GetDateTimeByStr(timeStr, timeFomat="%Y-%m-%d"):
try:
@@ -494,3 +245,127 @@
return
+
+
+#=================娓告垙鏈嶅姟鍣ㄨ褰�==========================================================
+# $arrayInsert=array( '_id'=>$orderID, 'ServerID'=>$getServer_id,
+# 'AccID'=>$qid, 'OrderAmount'=>$nOrderAmount,
+# 'OrderID'=>$orderID, 'Sign'=>$recvSign,
+# 'BeginOrderTime'=>date("Y-m-d H:i:s"), 'EndOrderTime'=>0,
+# 'IsProcess'=>0, "OrderInfo"=>$DataArray['OrderInfo']);
+#===========================================================================
+
+#=================鍚庡彴鏁版嵁璁板綍==========================================================
+# appid 鏄� string 寰俊鍟嗗煄鐢ㄦ埛閫夋嫨鐨勫钩鍙癮ppid
+# regionid 鏄� string 鍖烘湇ID: s8001
+# orderid 鏄� string 寰俊鍟嗗煄璁㈠崟鍙蜂笉鑳戒笌鍏呭�艰鍗曢噸澶�
+# passport 鏄� string 鐜╁娓告垙甯愬彿
+# roleid 鏄� string 瑙掕壊鍚嶇О
+# ordertitle 鏄� string 璁㈠崟鏍囬,渚嬪: 128鍏冪ぜ鍖�
+# orderinfo 鏄� string 璁㈠崟淇℃伅, 渚嬪: snxxz.18
+# money 鏄� float 浠樻鏁颁繚鐣欎袱浣嶅皬鏁�
+# ip 鏄� string 鐜╁IP,鍙┖鍊�
+# level 鏄� string 绛夌骇
+# viplevel 鏄� string VIP绛夌骇
+# time 鏄� string 鍏呭�兼椂闂存埑 渚嬪: 1539447585
+# sign 鏄� string 绛惧悕
+#===========================================================================
+
+#http://center.2460web.com:53002/Coupon/CouponWXBill.php
+#寰俊鍟嗗煄 鍙傛暟 ordertitle orderinfo orderid count money锛堜繚鐣欎袱浣嶅皬鏁帮級sign ip time锛堣ˉ鍙戜笉鏇存柊鏃堕棿锛�
+@myapp.route('/Coupon/CouponWXBill.php', method='POST')
+def CouponWXBill():
+ dataDict = request.POST
+ for key, value in dataDict.items():
+ mylog.debug("key:%s value:%s"%(key, value))
+
+ channel = "zyxh" # 闇�鏀寔澶氫釜appid锛屼竴涓鍗曚竴涓縺娲荤爜
+ orderID = dataDict.get("orderid", "") # 璁㈠崟锛屾牴鎹暟閲忓垎鏀嚭澶氫釜璁㈠崟瀵瑰簲涓�涓縺娲荤爜
+ if not orderID:
+ return json.dumps({"error":"param orderid"}, ensure_ascii=False)
+
+ orderInfo = dataDict.get("orderinfo", "") # 鍟嗗搧缂栧彿
+ if not orderInfo:
+ return json.dumps({"error":"param orderInfo"}, ensure_ascii=False)
+
+ count = int(dataDict.get("count", 0)) # 绀煎寘鏁伴噺
+ if count <= 0:
+ return json.dumps({"error":"param count"}, ensure_ascii=False)
+
+ money = float(dataDict.get("money", 0)) # 浠锋牸
+ if money <= 0:
+ return json.dumps({"error":"param money"}, ensure_ascii=False)
+
+
+ timeStr = dataDict.get("time", "") # 鍏呭�兼椂闂达紝琛ュ彂涓嶆洿鏂版椂闂�
+ if not timeStr:
+ return json.dumps({"error":"param time"}, ensure_ascii=False)
+
+ sign = dataDict.get("sign", "") # 鍏呭�兼椂闂达紝琛ュ彂涓嶆洿鏂版椂闂�
+ if not sign:
+ return json.dumps({"error":"param sign"}, ensure_ascii=False)
+
+ key = ConfigIO.GetValue("Coupon", channel + "_wxkey")
+ calcSign = md5.md5(str(count) + orderID + timeStr + key).hexdigest()
+ if calcSign != sign:
+ mylog.debug("error sign=%s"%calcSign)
+ return json.dumps({"error":"sign"}, ensure_ascii=False)
+
+
+ dbController = CouponDB.GetDBEventCon()
+ if not dbController:
+ # 鏃犳硶鑾峰彇鏁版嵁搴�
+ mylog.debug("no dbController")
+ return json.dumps({"error":"db"}, ensure_ascii=False)
+
+ # 楠岃瘉鏄惁閲嶅璁㈠崟
+ result = dbController.find(CouponDB.CouponWXColName, {"realorderid":orderID})
+ if result[1]:
+ codeList = []
+ for cardInfo in result[1]:
+ codeList.append(cardInfo['code'])
+ #return json.dumps({"error":"orderid repeat"}, ensure_ascii=False)
+ mylog.debug("orderid repeat")
+ return json.dumps({orderID:codeList}, ensure_ascii=False)
+
+ #鎵归噺鎻掑叆鍗″彿
+ tmpCodeList = [] # 鍗′俊鎭�
+ codeList = [] # 鍗″彿
+ for i in xrange(count):
+ tmpCodeDoc = {}
+ # 鍓�3浣嶄负绫诲瀷鏍囪瘑
+ tmpCodeDoc['code'] = "wx" + md5.md5( channel + str(i) + orderID + timeStr + str(i) + \
+ str(random.randint(1000, 2000000))).hexdigest()[5:17] + \
+ random.choice('1234567890abcdefghijklmnopqrstuvwxyz') +\
+ random.choice('1234567890abcdefghijklmnopqrstuvwxyz')
+ tmpCodeDoc['operateid'] = channel # appid缁勫悎鏍囪瘑 涓�瀹惰繍钀ュ晢鍙兘鏈夊涓猘ppid
+ tmpCodeDoc['status'] = 0
+ tmpCodeDoc['usetime'] = ""
+
+ tmpCodeDoc['count'] = count
+
+ tmpCodeDoc['appid'] = "" # 璁板綍鐢�
+ tmpCodeDoc['serverid'] = "" # 璁板綍鐢�
+ tmpCodeDoc['realorderid'] = orderID # 璐墿鐨刼rderID锛屼細鏍规嵁鏁伴噺鎷嗚В
+ tmpCodeDoc['orderid'] = orderID + "_" + str(i+1) # 鎷嗚В鐨刼rderID锛屼細鏍规嵁鏁伴噺鎷嗚В
+ tmpCodeDoc['accid'] = ""
+ tmpCodeDoc['roleid'] = ""
+ tmpCodeDoc['ordertitle'] = dataDict.get("ordertitle", "")
+ tmpCodeDoc['orderinfo'] = orderInfo
+ tmpCodeDoc['money'] = money
+ tmpCodeDoc['ip'] = dataDict.get("ip", "")
+ tmpCodeDoc['level'] = ""
+ tmpCodeDoc['viplevel'] = ""
+ tmpCodeDoc['createtime'] = timeStr
+
+ tmpCodeList.append(tmpCodeDoc)
+ codeList.append(tmpCodeDoc['code'])
+
+
+ result = dbController.insert(CouponDB.CouponWXColName, tmpCodeList)
+ if not result:
+ return json.dumps({"error":"insert card"}, ensure_ascii=False)
+
+ mylog.debug("鎻掑叆鎴愬姛%s鏉¤鍗�"%len(tmpCodeList))
+
+ return json.dumps({orderID:codeList}, ensure_ascii=False)
--
Gitblit v1.8.0