#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#
|
##@package
|
#
|
# @todo:
|
#
|
# @author: Alee
|
# @date 2019-1-22 ÉÏÎç11:50:11
|
# @version 1.0
|
#
|
# @note:
|
#
|
#---------------------------------------------------------------------
|
|
from bottle import Bottle, request
|
import md5
|
import urllib2
|
import urllib
|
import json
|
from lib import mylog
|
import DoubleBillDB
|
|
myapp = Bottle()
|
|
DoubleBillColName = 'tagDoubleBill'
|
GMPort = 80
|
|
|
@myapp.route('/DoublieBill.php')
|
def OnDoubleBill():
|
# Íæ¼ÒµÇ¼´Ó·þÎñÆ÷ÇëÇó¶Ò»»·µÀû£¬±ØÐë¼Ç¼¶Ò»»½á¹û£¬ÓÃÓÚ¸´²é;ͨ¹ý·ÃÎÊIP£¬²éÕÒGMͨµÀ·µ»Ø½á¹û30001
|
# ²ÎÊý£ºÍæ¼ÒÕ˺ţ¬²éѯÊÇ·ñÓгäÖµ·µÀû
|
# ·µ»Ø1£ºÎÞ³äÖµ£¬2£ºÒѶһ»£¨Ö»ÄÜÒ»¸ö·þ£©£¬ÆäËû¶î¶ÈΪÏÉÓñ
|
# Êý¾Ý¿â×Ö¶Î ÇþµÀSpID Õ˺ÅAccID ÏÉÓñGold ¶Ò»»ËùÔÚ·þServerID
|
dataDict = request.GET
|
|
gameAccID = dataDict.get("AccID", "") # ÔËÓªÌṩµÄAPPID£¬¼´ÇþµÀ
|
if not gameAccID:
|
print "accID Error", gameAccID
|
return
|
|
try:
|
accID, spID, sid = gameAccID.split("@")
|
except:
|
print "accID Error", gameAccID
|
return
|
|
if not sid:
|
return
|
|
dbController = DoubleBillDB.GetDBEventCon()
|
if not dbController:
|
# ÎÞ·¨»ñÈ¡Êý¾Ý¿â
|
mylog.debug("no dbController")
|
return
|
result, data = dbController.find(DoubleBillColName, {"SpID":spID, "AccID":accID})
|
if not data:
|
# Î޼Ǽ²»ÄÜÁìÈ¡£¬GM·µ»Ø1, ¼õÉÙ·´¸´²éѯ
|
SendGm(gameAccID, 1)
|
return
|
|
rec = data[0]
|
if not rec["Gold"]:
|
# ÎÞÏÉÓñ
|
return
|
|
if rec["ServerID"]:
|
# ÒÑÁìÈ¡£¬GM·µ»Ø2, ¼õÉÙ·´¸´²éѯ
|
SendGm(gameAccID, 2)
|
return
|
|
updateDoc = {"SpID":spID, "AccID":accID, "Gold":rec["Gold"], "ServerID":sid}
|
dbController.update(DoubleBillColName, {"SpID":spID, "AccID":accID}, updateDoc)
|
|
mylog.info("OnDoubleBill:%s-%s"%(gameAccID, updateDoc))
|
SendGm(gameAccID, rec["Gold"])
|
return
|
|
def SendGm(gameAccID, dbState):
|
try:
|
serverIP = request.environ.get("REMOTE_ADDR", "0.0.0.0")
|
# GMÍÆË͵ØÖ·
|
#GMToolPage = http://s1.yhlz.09ge.com:30001/Server/Tool.php
|
gmurl = "http://%s:%s/Server/Tool.php"%(serverIP, GMPort)
|
gmkey = "Y25GVFoyOVFjbWtyTDJJckt5OU1OQ3RtUFQxPV"
|
if not gmkey or not gmurl:
|
return
|
|
pack_data = {}
|
pack_data["AccID"] = gameAccID
|
# ·µ»Ø1£ºÎÞ³äÖµ£¬2£ºÒѶһ»£¨Ö»ÄÜÒ»¸ö·þ£©£¬ÆäËû¶î¶ÈΪÏÉÓñ
|
pack_data["GoldState"] = str(dbState)
|
|
pack_data["pack_type"] = "GMT_QDFLDoubleBill"
|
pack_data["key"] = gmkey;
|
pack_data['coding'] = "utf8"
|
|
#ʹÓÃkey¼ÓÃÜ
|
pack_data_dict = json.dumps(pack_data)
|
|
mylog.debug("OnDoubleBill SendGm:%s-%s"%(gmurl, pack_data_dict))
|
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()
|
|
mylog.info("ÍÆËͽá¹û GMT_QDFLDoubleBill:%s"%(content))
|
return content
|
except Exception, e:
|
mylog.debug("gm error %s"%e)
|
return
|
|
|
# ²éѯËùÓеÄÊý¾Ý£¬Ö»ÔÚµÚÒ»ÕŵØÍ¼´¦Àí£¬»º´æ±ÜÃâÇëÇó¹ýÓÚÆµ·±
|
@myapp.route('/QueryAllDoubleBill.php')
|
def QueryAllDoubleBill():
|
dataDict = request.GET
|
|
checkInfo = dataDict.get("ccccc", "")
|
if not checkInfo:
|
return
|
if checkInfo != "fanggongji":
|
return
|
|
dbController = DoubleBillDB.GetDBEventCon()
|
if not dbController:
|
# ÎÞ·¨»ñÈ¡Êý¾Ý¿â
|
mylog.debug("no dbController")
|
return
|
# ·µ»ØÎ´ÁìÈ¡µÄ
|
result, data = dbController.find(DoubleBillColName, {"ServerID":""})
|
if not data:
|
return
|
|
recDict = {}
|
for rec in data:
|
spID = rec["SpID"]
|
if spID not in recDict:
|
recDict[spID] = [rec["AccID"]]
|
else:
|
recDict[spID].append(rec["AccID"])
|
|
if not recDict:
|
return
|
try:
|
serverIP = request.environ.get("REMOTE_ADDR", "0.0.0.0")
|
# GMÍÆË͵ØÖ·
|
#GMToolPage = http://s1.yhlz.09ge.com:30001/Server/Tool.php
|
gmurl = "http://%s:%s/Server/Tool.php"%(serverIP, GMPort)
|
gmkey = "Y25GVFoyOVFjbWtyTDJJckt5OU1OQ3RtUFQxPV"
|
if not gmkey or not gmurl:
|
return
|
|
mylog.debug("SendGm:%s"%gmurl)
|
pack_data = {}
|
pack_data["tomap"] = json.dumps(recDict)
|
pack_data["pack_type"] = "GMT_AllDoubleBill"
|
pack_data["key"] = gmkey;
|
pack_data['coding'] = "utf8"
|
|
#ʹÓÃkey¼ÓÃÜ
|
pack_data_dict = json.dumps(pack_data)
|
|
mylog.debug("QueryAllDoubleBill SendGm:%s-%s"%(gmurl, pack_data_dict))
|
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)
|
|
result.close()
|
|
except Exception, e:
|
mylog.debug("gm error %s"%e)
|
|
|
# 1.²éѯ
|
@myapp.route('/QueryDoubleBill.php')
|
def QueryDoubleBill():
|
# Íæ¼ÒµÇ¼´Ó·þÎñÆ÷ÇëÇó¶Ò»»·µÀû£¬±ØÐë¼Ç¼¶Ò»»½á¹û£¬ÓÃÓÚ¸´²é;ͨ¹ý·ÃÎÊIP£¬²éÕÒGMͨµÀ·µ»Ø½á¹û30001
|
# ²ÎÊý£ºÍæ¼ÒÕ˺ţ¬²éѯÊÇ·ñÓгäÖµ·µÀû
|
# ·µ»Ø1£ºÎÞ³äÖµ£¬2£ºÒѶһ»£¨Ö»ÄÜÒ»¸ö·þ£©£¬ÆäËû¶î¶ÈΪÏÉÓñ
|
# Êý¾Ý¿â×Ö¶Î ÇþµÀSpID Õ˺ÅAccID ÏÉÓñGold ¶Ò»»ËùÔÚ·þServerID
|
dataDict = request.GET
|
|
gameAccID = dataDict.get("AccID", "") # ÔËÓªÌṩµÄAPPID£¬¼´ÇþµÀ
|
if not gameAccID:
|
print "accID Error", gameAccID
|
return
|
|
try:
|
accID, spID, sid = gameAccID.split("@")
|
except:
|
print "accID Error", gameAccID
|
return
|
|
if not sid:
|
return
|
|
dbController = DoubleBillDB.GetDBEventCon()
|
if not dbController:
|
# ÎÞ·¨»ñÈ¡Êý¾Ý¿â
|
mylog.debug("no dbController")
|
return
|
result, data = dbController.find(DoubleBillColName, {"SpID":spID, "AccID":accID})
|
if not data:
|
# Î޼Ǽ²»ÄÜÁìÈ¡£¬GM·µ»Ø1, ¼õÉÙ·´¸´²éѯ
|
return
|
|
return data[0]
|