#!/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"]: if sid == rec["ServerID"]: #ͬ·þÒÑÁìÈ¡µÄ·µ»ØÏàͬ SendGm(gameAccID, rec["Gold"]) return # ²»Í¬·þÒÑÁìÈ¡£¬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]