示例#1
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)
        request = msgReq.request.registerRequest

        msgResp = msg_pb2.Msg()
        msgResp.type = msg_pb2.EnumMsg.Value('registerresponse')
        response = msgResp.response.registerResponse
        user = Dal_User().getValueByAttr('name', request.sName)
        if len(user) != 0:
            response.nErrorCode = config_error['userinvaild']
        else:
            um = User(id=None,
                      name=request.sName,
                      password=request.sPassWord,
                      nick=None,
                      exp=None,
                      gold=None,
                      money=None,
                      headimg=None,
                      phone=None,
                      records=None,
                      assets=None,
                      room=None,
                      parent=None,
                      parentaward=None,
                      invitetime=None)
            Dal_User().addUser(um)
            response.nErrorCode = config_error['success']
            response.nUserID = um.id

        data = msgResp.SerializeToString()
        self.write(data)
示例#2
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)

        msgResp = msg_pb2.Msg()
        msgResp.type = msg_pb2.EnumMsg.Value('irookieresponse')
        user = Dal_User().getUser(msgReq.request.irookieRequest.nUserID)
        if user == None:
            msgResp.response.irookieResponse.nErrorCode = config_error[
                'userinvaild']
        else:
            #先检测是否已经领过新手奖励
            if user.parent == 0:
                msgResp.response.irookieResponse.nErrorCode = config_error[
                    'notrookie']
            else:
                awards = msgReq.request.irookieRequest.nAwards
                assetlist = Utils().decodeMutilFormat(user.assets, ';', ':')
                for k, v in config_game['rookieIAward'].iteritems():
                    if assetlist.has_key(k):
                        assetlist[k] = assetlist[k] + v * awards
                    else:
                        assetlist[k] = v * awards
                user.assets = Utils().encodeMutilFormat(assetlist, ';', ':')
                msgResp.response.irookieResponse.newAssets = user.assets
                kwargs = {"assets": user.assets}
                Dal_User().uqdateUser(user.id, **kwargs)

        dataR = msgResp.SerializeToString()
        self.write(dataR)
示例#3
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)

        msgResp = msg_pb2.Msg()
        msgResp.type = msg_pb2.EnumMsg.Value('mailresponse')
        user = Dal_User().getUser(msgReq.request.mailRequest.nUserID)
        if user == None:
            msgResp.response.mailResponse.nErrorCode = config_error[
                'userinvaild']
        else:
            msgResp.response.mailResponse.nErrorCode = config_error['success']

            mails = Utils().decodeIDFormat(user.mails)
            for k, v in enumerate(mails):
                mail = Dal_Mail().getMail(int(v))
                if mail == None: continue
                addMail = msgResp.response.mailResponse.mails.add()
                addMail.nID = mail.id
                addMail.nUID = mail.uid
                addMail.nType = mail.type
                addMail.sContent = mail.content
                if isinstance(mail.time, str):
                    addMail.sTime = mail.time
                else:
                    addMail.sTime = Utils().dateTime2String(mail.time)

        dataR = msgResp.SerializeToString()
        self.write(dataR)
示例#4
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)

        msgResp = msg_pb2.Msg()
        msgResp.type = msg_pb2.EnumMsg.Value('welfareresponse')
        user = Dal_User().getUser(msgReq.request.welfareRequest.nUserID)
        if user == None:
            msgResp.response.welfareResponse.nErrorCode = config_error['userinvaild']
        elif  user.welfaretime and Utils().dbTime2Number(user.welfaretime) >= Utils().LastDayEndTime():
            msgResp.response.welfareResponse.nErrorCode = config_error['luckytimeerror']
        elif user.gold >=  configs_default['welfare']:
            msgResp.response.welfareResponse.nErrorCode = config_error['welfareerror']
        else:
            msgResp.response.welfareResponse.nErrorCode = config_error['success']

            #发福利逻辑
            user.gold = user.gold + configs_default['welfare']

            user.welfaretime = Utils().dbTimeCreate()
            msgResp.response.welfareResponse.newAssets.nUserID = user.id
            msgResp.response.welfareResponse.newAssets.nGold = user.gold
            kwargs = {"gold": user.gold,"welfaretime":user.welfaretime}
            Dal_User().uqdateUser(user.id, **kwargs)


        dataR = msgResp.SerializeToString()
        self.write(dataR)
示例#5
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)

        msgResp = msg_pb2.Msg()
        msgResp.type = msg_pb2.EnumMsg.Value('luckyresponse')
        user = Dal_User().getUser(msgReq.request.luckyRequest.nUserID)
        if user == None:
            msgResp.response.luckyResponse.nErrorCode = config_error[
                'userinvaild']
        elif user.luckytime and Utils().dbTime2Number(
                user.luckytime) >= Utils().LastDayEndTime():
            msgResp.response.luckyResponse.nErrorCode = config_error[
                'luckytimeerror']
        else:
            msgResp.response.luckyResponse.nErrorCode = config_error['success']

            #抽奖逻辑
            randNum = Utils().random_index(configs_default['luckysRate'])
            msgResp.response.luckyResponse.nLucky = randNum
            luckGood = configs_default['luckys'][randNum]

            if luckGood['type'] == configs_default['goodType']['money']:
                user.money = user.money + luckGood['extra']
            elif luckGood['type'] == configs_default['goodType']['gold']:
                user.gold = user.gold + luckGood['extra']

            user.luckytime = Utils().dbTimeCreate()
            msgResp.response.luckyResponse.newAssets.nUserID = user.id
            msgResp.response.luckyResponse.newAssets.nGold = user.gold
            msgResp.response.luckyResponse.newAssets.nMoney = user.money
            kwargs = {
                "gold": user.gold,
                "money": user.money,
                "luckytime": user.luckytime
            }
            Dal_User().uqdateUser(user.id, **kwargs)

            # 邮件记录
            mail = Mail()
            mail.uid = user.id
            mail.type = configs_default['mail']['type']['luckyaward']
            mail.content = str(luckGood['type']) + ':' + str(luckGood['extra'])
            mail.time = Utils().dbTimeCreate()
            Dal_Mail().addMail(mail)
            Dal_User().addMails(mail.uid, mail.id)

        dataR = msgResp.SerializeToString()
        self.write(dataR)
示例#6
0
    def on_create_dele_room(self, message):
        uID = message.nUserID
        gP = message.gamePlay
        cardType = message.sCardType
        user = Dal_User().getUser(uID)
        if user.room != '': return
        # 检查资产
        cardConfig = configs_default['goods'][cardType]
        if user.gold < cardConfig['gold'] or user.money < cardConfig['money']:
            msg = msg_pb2.Msg()
            msg.type = msg_pb2.EnumMsg.Value('createdeleroomresponse')
            msg.response.createRoomResponse.nErrorCode = config_error[
                'moneyerror']
            return msg
        newRoom = None
        if gP.nType == config_game['gameplay']['common']['id']:
            newRoom = Room()
        elif gP.nType == config_game['gameplay']['dongbei']['id']:
            newRoom = DongBei_Room()
        if gP.nType == config_game['gameplay']['haerbin_common']['id'] or \
                gP.nType == config_game['gameplay']['haerbin_jiahu']['id']:
            newRoom = HaErBin_Room()
        elif gP.nType == config_game['gameplay']['mudanjiang_common']['id'] or \
                gP.nType == config_game['gameplay']['mudanjiang_jiahu']['id']:
            newRoom = MuDanJiang_Room()
        else:  # 默认是通用玩法
            newRoom = Room()

        GameHandler.add_room(newRoom)
        return newRoom.initDeleRoom(message, self)
示例#7
0
    def on_create_room(self, message):
        uID = message.nUserID
        gP = message.gamePlay
        cardType = message.sCardType

        user = Dal_User().getUser(uID)
        if user.room != '': return

        # 检查资产
        cardConfig = configs_default['goods'][cardType]
        if user.gold < cardConfig['gold'] or user.money < cardConfig['money']:
            msg = msg_pb2.Msg()
            msg.type = msg_pb2.EnumMsg.Value('createroomresponse')
            msg.response.createRoomResponse.nErrorCode = config_error[
                'moneyerror']
            data = msg.SerializeToString()
            self.write_message(data, True)
            return

        newRoom = None
        if gP.nType == config_game['gameplay']['type']['common']:
            newRoom = ZK_Room()
        elif gP.nType == config_game['gameplay']['type']['hunzi']:
            newRoom = Hui_Room()
        elif gP.nType == config_game['gameplay']['type']['happy']:
            self.on_create_happy_room(message)
            return
        else:  # 默认是通用玩法
            newRoom = Room()

        newRoom.initRoom(message, GameHandler.waiters[uID], self)
        GameHandler.add_room(newRoom)
示例#8
0
    def recv(self):
        try:
            total_len = self.mySocket.recv(2)
            total_len_recv = struct.unpack('>H', total_len)[0]
            message = self.mySocket.recv(total_len_recv)

            message_body = msg_pb2.Msg()
            message_body.ParseFromString(message)
            if message_body.head.msgType == 1001:
                response_time = (time.time() - self.start_time) * 1000
                status = json.loads(message_body.head.extend)
                events.request_success.fire(
                    request_type='StormIMClient',
                    name='RESPONSE HANDSHAKE',
                    response_time=response_time,
                    response_length=total_len_recv,
                )
                print("接受到握手消息消息报告状态:", status["status"])
            elif message_body.head.msgType == 1002:
                response_time = (time.time() - self.start_time) * 1000
                events.request_success.fire(
                    request_type='StormIMClient',
                    name='RESPONSE HEARTBEAT',
                    response_time=response_time,
                    response_length=total_len_recv,
                )
                print("接受到心跳消息报告:")
        except Exception as e:
            total_time = int((time.time() - self.start_time) * 1000)
            events.request_failure.fire(request_type="StormIMClient",
                                        name="RESPONSE MSG",
                                        response_time=total_time,
                                        exception=e)
            self.start_time = time.time()
示例#9
0
    def send_heartbeat_msg(self):
        msg = msg_pb2.Msg()
        head = msg.head
        msg_id_str = str(uuid.uuid4())
        head.msgId = msg_id_str
        head.msgType = 1002
        head.fromId = self.my_id
        head.timestamp = int(time.time())

        total_len = len(msg.SerializeToString())
        pack1 = struct.pack('>H', total_len)
        self.start_time = time.time()
        try:
            self.mySocket.send(pack1)
            self.mySocket.sendall(msg.SerializeToString())
        except Exception as e:
            total_time = int((time.time() - self.start_time) * 1000)
            events.request_failure.fire(request_type="StormIMClient",
                                        name="send_heartbeat_msg",
                                        response_time=total_time,
                                        exception=e)
            self.start_time = time.time()
        else:
            total_time = int((time.time() - self.start_time) * 1000)
            events.request_success.fire(request_type="StormIMClient",
                                        name="send_heartbeat_msg",
                                        response_time=total_time,
                                        response_length=0)
            self.start_time = time.time()
            self.recv()
示例#10
0
 def post(self):
     msgReq = msg_pb2.Msg()
     msgReq.ParseFromString(self.request.body)
     request = msgReq.request.clientLogRequest
     Utils().logMainDebug("玩家" + str(request.nUserID) + "在" +
                          Utils().dbTimeCreate() + "出错: " +
                          str(request.sContent))
示例#11
0
 def onConnect(self, id, conn):  ##玩家掉线重连,复用玩家加入房间协议
     self.sendConnectMessage(id, conn)
     # 网络协议,发送宝牌协议
     msg = msg_pb2.Msg()
     msg.type = msg_pb2.EnumMsg.Value('baopaishownotify')
     msg.notify.baopaiShowNotify.nUserID = 1
     msg.notify.baopaiShowNotify.baopai.nType = self.m_cmjManager.m_baoPai.m_Type
     msg.notify.baopaiShowNotify.baopai.nValue = self.m_cmjManager.m_baoPai.m_Value
     self.sendMessage(id, msg)
示例#12
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)

        msgResp = msg_pb2.Msg()
        msgResp.type = msg_pb2.EnumMsg.Value('loginoutresponse')

        request = msgReq.request.loginOutRequest
        response = msgResp.response.loginOutResponse
        user = Dal_User().getUser(request.nUserID)
        if user == None:
            response.nErrorCode = config_error['userinvaild']
        else:
            response.nErrorCode = config_error['success']
            Dal_User().delLoginer(user.id)

        data = msgResp.SerializeToString()
        self.write(data)
示例#13
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)

        msgResp = msg_pb2.Msg()
        msgResp.type = msg_pb2.EnumMsg.Value('rankawardresponse')
        user = Dal_User().getUser(msgReq.request.rankAwardRequest.nUserID)
        if user == None:
            msgResp.response.rankAwardResponse.nErrorCode = config_error[
                'userinvaild']
        elif Dal_User().getRankedFlag(
                user.id, msgReq.request.rankAwardRequest.nRankType):
            msgResp.response.rankAwardResponse.nErrorCode = config_error[
                'rankawarderror']
        else:
            msgResp.response.rankAwardResponse.nErrorCode = config_error[
                'success']
            #这里取排名
            rankOrder = Dal_Record().getRankOrder(
                user.id, msgReq.request.rankAwardRequest.nRankType)
            rankAwardConfig = Dal_Record().getRankAward(
                rankOrder, msgReq.request.rankAwardRequest.nRankType)
            if rankAwardConfig == None:
                msgResp.response.rankAwardResponse.nErrorCode = config_error[
                    'rankawarderror']
            else:
                if rankAwardConfig['aType'] == configs_default['goodType'][
                        'money']:
                    user.money = user.money + rankAwardConfig['award']
                elif rankAwardConfig['aType'] == configs_default['goodType'][
                        'gold']:
                    user.gold = user.gold + rankAwardConfig['award']

                msgResp.response.rankAwardResponse.newAssets.nUserID = user.id
                msgResp.response.rankAwardResponse.newAssets.nGold = user.gold
                msgResp.response.rankAwardResponse.newAssets.nMoney = user.money
                kwargs = {"gold": user.gold, "money": user.money}
                Dal_User().uqdateUser(user.id, **kwargs)

                Dal_User().updateRankFlag(
                    user.id, msgReq.request.rankAwardRequest.nRankType)

        dataR = msgResp.SerializeToString()
        self.write(dataR)
示例#14
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)

        msgResp = msg_pb2.Msg()
        msgResp.type = msg_pb2.EnumMsg.Value('authresponse')
        user = Dal_User().getUser(msgReq.request.authRequest.nUserID)
        if user == None:
            msgResp.response.authResponse.nErrorCode = config_error[
                'userinvaild']
        else:
            msgResp.response.authResponse.nErrorCode = config_error['success']
            sPhone = msgReq.request.authRequest.sPhone
            sVCode = msgReq.request.authRequest.sVCode
            sRealName = msgReq.request.authRequest.sRealName
            sSFZ = msgReq.request.authRequest.sSFZ

            if sVCode != user.vcode:
                msgResp.response.authResponse.nErrorCode = config_error[
                    'autherror']
            else:
                assetlist = Utils().decodeMutilFormat(user.assets, ';', ':')
                for k, v in config_game['authAward'].iteritems():
                    if assetlist.has_key(k):
                        assetlist[k] = assetlist[k] + v
                    else:
                        assetlist[k] = v
                user.assets = Utils().encodeMutilFormat(assetlist, ';', ':')
                msgResp.response.authResponse.newasset = user.assets

                kwargs = {
                    "phone": sPhone,
                    "realname": sRealName,
                    "sfz": sSFZ,
                    "assets": user.assets
                }
                Dal_User().uqdateUser(user.id, **kwargs)
                Utils().sendTelMsg(sVCode, sPhone)

        dataR = msgResp.SerializeToString()
        self.write(dataR)
示例#15
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)

        msgResp = msg_pb2.Msg()
        msgResp.type = msg_pb2.EnumMsg.Value('vcoderesponse')
        user = Dal_User().getUser(msgReq.request.vCodeRequest.nUserID)
        if user == None:
            msgResp.response.vCodeResponse.nErrorCode = config_error[
                'userinvaild']
        else:
            msgResp.response.vCodeResponse.nErrorCode = config_error['success']
            sPhone = msgReq.request.vCodeRequest.sPhone
            sVCode = Utils().createPhoneCode()
            msgResp.response.vCodeResponse.sVCode = sVCode
            kwargs = {"vcode": sVCode}
            Dal_User().uqdateUser(user.id, **kwargs)
            Utils().sendTelMsg(sVCode, sPhone)

        dataR = msgResp.SerializeToString()
        self.write(dataR)
示例#16
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)
        request = msgReq.request.loginHeartRequest

        user = Dal_User().getUser(request.nUserID)
        if user:
            loginuser = Dal_User().getLoginer(request.nUserID)
            msgResp = msg_pb2.Msg()
            msgResp.type = msg_pb2.EnumMsg.Value('loginheartresponse')
            response = msgResp.response.loginHeartResponse
            # if loginuser and user.sToken == request.sToken:
            #     Dal_User().onHeartBeat(user.id)
            #     response.nErrorCode = config_error['success']
            #     response.nHappyNum = GameHandler.get_happy_users()
            # else:
            #     response.nErrorCode = config_error['loginExpires']
            response.nErrorCode = config_error['success']
            response.nHappyNum = GameHandler.get_happy_users()
            data = msgResp.SerializeToString()
            self.write(data)
示例#17
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)

        msgResp = msg_pb2.Msg()
        msgResp.type = msg_pb2.EnumMsg.Value('boardcastresponse')
        user = Dal_User().getUser(msgReq.request.boardcastRequest.nUserID)
        if user == None:
            msgResp.response.boardcastResponse.nErrorCode = config_error[
                'userinvaild']
        else:
            pool = Dal_BoardCast().getAll()
            for k, v in pool.iteritems():
                bc = msgResp.response.boardcastResponse.bPool.add()
                bc.nID = k
                bc.sTitle = v.title
                bc.sDetail = v.detail
                bc.sDate = v.time

        dataR = msgResp.SerializeToString()
        self.write(dataR)
示例#18
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)

        msgResp = msg_pb2.Msg()
        msgResp.type = msg_pb2.EnumMsg.Value('suggestresponse')
        user = Dal_User().getUser(msgReq.request.suggestRequest.nUserID)
        if user == None:
            msgResp.response.suggestResponse.nErrorCode = config_error['userinvaild']
        else:
            msgResp.response.suggestResponse.nErrorCode = config_error['success']
            newSugg = Suggest()
            newSugg.phone = msgReq.request.suggestRequest.sPhone
            newSugg.detail =  msgReq.request.suggestRequest.sSuggest
            now = datetime.now()
            now = now.strftime("%Y-%m-%d %H:%M:%S")
            newSugg.time = now
            Dal_Suggest().addSuggest(newSugg)

        dataR = msgResp.SerializeToString()
        self.write(dataR)
示例#19
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)

        msgResp = msg_pb2.Msg()
        msgResp.type = msg_pb2.EnumMsg.Value('buyresponse')
        user = Dal_User().getUser(msgReq.request.buyRequest.nUserID)
        if user == None:
            msgResp.response.buyResponse.nErrorCode = config_error['userinvaild']
        else:
              msgResp.response.buyResponse.nErrorCode = config_error['success']
              totalG = 0
              totalM = 0
              for i,v in enumerate(msgReq.request.buyRequest.goods):
                   gID = v.nID
                   gConfig = configs_default['goods'][str(gID)]
                   gType = gConfig['type']
                   #这里只能用钻石购买金币
                   if gType != configs_default['goodType']['gold']:continue
                   gMoney = gConfig['money']#需要花费的钻石数量
                   gExtra = gConfig['extra']#能兑换的金币数量
                   totalG = totalG + gExtra
                   totalM = totalM + gMoney


              if user.money < totalM:
                  msgResp.response.buyResponse.nErrorCode = config_error['moneyerror']
              else:
                  user.gold = user.gold  + totalG
                  user.money = user.money  - totalM
                  msgResp.response.buyResponse.newAssets.nUserID = user.id
                  msgResp.response.buyResponse.newAssets.nGold = user.gold
                  msgResp.response.buyResponse.newAssets.nMoney = user.money
                  kwargs = {"gold": user.gold,"money": user.money}
                  Dal_User().uqdateUser(user.id,**kwargs)


        dataR = msgResp.SerializeToString()
        self.write(dataR)
示例#20
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)

        message = msgReq.request.createRoomRequest

        uID = message.nUserID
        gP = message.gamePlay
        cardType = message.sCardType
        user = Dal_User().getUser(uID)
        if user.room != '': return
        # 检查资产
        cardConfig = configs_default['goods'][cardType]
        if user.gold < cardConfig['gold'] or user.money < cardConfig['money']:
            msg = msg_pb2.Msg()
            msg.type = msg_pb2.EnumMsg.Value('createdeleroomresponse')
            msg.response.createRoomResponse.nErrorCode = config_error[
                'moneyerror']
            return msg
        newRoom = None
        if gP.nType == config_game['gameplay']['common']['id']:
            newRoom = Room()
        elif gP.nType == config_game['gameplay']['dongbei']['id']:
            newRoom = DongBei_Room()
        if gP.nType == config_game['gameplay']['haerbin_common']['id'] or \
                gP.nType == config_game['gameplay']['haerbin_jiahu']['id']:
            newRoom = HaErBin_Room()
        elif gP.nType == config_game['gameplay']['mudanjiang_common']['id'] or \
                gP.nType == config_game['gameplay']['mudanjiang_jiahu']['id']:
            newRoom = MuDanJiang_Room()
        else:  # 默认是通用玩法
            newRoom = Room()

        msgResp = newRoom.initDeleRoom(message, self)

        GameHandler.add_room(newRoom)

        dataR = msgResp.SerializeToString()
        self.write(dataR)
示例#21
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)

        msgResp = msg_pb2.Msg()
        msgResp.type = msg_pb2.EnumMsg.Value('rookieresponse')
        user = Dal_User().getUser(msgReq.request.rookieRequest.nUserID)
        if user == None:
            msgResp.response.rookieResponse.nErrorCode = config_error[
                'userinvaild']
        else:
            #先检测是否已经领过新手奖励
            if user.parent == 0:
                msgResp.response.rookieResponse.nErrorCode = config_error[
                    'notrookie']
            else:
                sICode = msgReq.request.rookieRequest.sICode  #邀请码
                nI = (int)(Utils().decodeRandomCode(sICode))  #获取邀请者
                inviter = Dal_User().getUser(nI)
                if inviter != None:
                    # 发放新手奖励
                    assetlist = Utils().decodeMutilFormat(
                        user.assets, ';', ':')
                    for k, v in config_game['rookieAward'].iteritems():
                        if assetlist.has_key(k):
                            assetlist[k] = assetlist[k] + v
                        else:
                            assetlist[k] = v
                    user.assets = Utils().encodeMutilFormat(
                        assetlist, ';', ':')
                    kwargs = {"parent": nI, "assets": user.assets}
                    Dal_User().uqdateUser(user.id, **kwargs)

                else:
                    msgResp.response.rookieResponse.nErrorCode = config_error[
                        'userinvaild']

        dataR = msgResp.SerializeToString()
        self.write(dataR)
示例#22
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)

        msgResp = msg_pb2.Msg()
        msgResp.type = msg_pb2.EnumMsg.Value('irookieshowresponse')
        user = Dal_User().getUser(msgReq.request.irookieShowRequest.nUserID)
        if user == None:
            msgResp.response.irookieShowResponse.nErrorCode = config_error[
                'userinvaild']
        else:
            msgResp.response.irookieShowResponse.nErrorCode = config_error[
                'success']
            rookies = Dal_User().getValueByAttr('parent', user.id)
            msgResp.response.irookieShowResponse.nAwardCount = len(rookies)
            for k, v in enumerate(rookies):
                record = msgResp.response.records.add()
                record.nUserID = record.id
                record.nUserNick = record.name
                record.nInviteTime = record.invitetime

        dataR = msgResp.SerializeToString()
        self.write(dataR)
示例#23
0
    def on_message(self, message):
        # logging.info("got message %r", message)
        # msgR = msg_pb2.Msg()
        # msgR.ParseFromString(message)

        # msg = msg_pb2.Msg()
        # msg.type = msg_pb2.EnumMsg.Value('createroomresponse')
        # # msg.response.createRoomResponse.nErrorCode = 0
        # # msg.response.createRoomResponse.nType = 0
        # # msg.response.createRoomResponse.sRoomID = "asda"
        # #
        # # data = msg.SerializeToString()
        # # GameHandler.waiters[12345].write_message(data)
        # msg = test_pb2.testMessage()
        # msg.id = 123456
        #
        # msg1 = test_pb2.testMessage()
        # msg1.id = 123
        #
        # data = msg.SerializeToString()
        # data1 = msg1.SerializeToString()
        # GameHandler.testconn.write_message(data1)
        # # GameHandler.waiters[234].write_message(data)
        # # return
        msgRequest = msg_pb2.Msg()
        msgRequest.ParseFromString(message)
        if msgRequest.type == msg_pb2.EnumMsg.Value('createroomrequest'):
            self.on_create_room(msgRequest.request.createRoomRequest)
        elif msgRequest.type == msg_pb2.EnumMsg.Value('joinroomrequest'):
            self.on_join_room(msgRequest.request.joinRoomRequest)
        elif msgRequest.type == msg_pb2.EnumMsg.Value('leaveroomrequest'):
            self.on_leave_room(msgRequest.request.leaveRoomRequest)
        elif msgRequest.type == msg_pb2.EnumMsg.Value('getpairequest'):
            self.on_get_pai(msgRequest.request.getPaiRequest)
        elif msgRequest.type == msg_pb2.EnumMsg.Value('putpairequest'):
            self.on_put_pai(msgRequest.request.putPaiRequest)
        elif msgRequest.type == msg_pb2.EnumMsg.Value('dochipairequest'):
            self.on_do_chi_pai(msgRequest.request.doChiPaiRequest)
        elif msgRequest.type == msg_pb2.EnumMsg.Value('dogangpairequest'):
            self.on_do_gang_pai(msgRequest.request.doGangPaiRequest)
        elif msgRequest.type == msg_pb2.EnumMsg.Value('dohupairequest'):
            self.on_do_hu_pai(msgRequest.request.doHuPaiRequest)
        elif msgRequest.type == msg_pb2.EnumMsg.Value('dopengpairequest'):
            self.on_do_peng_pai(msgRequest.request.doPengPaiRequest)
        elif msgRequest.type == msg_pb2.EnumMsg.Value('dotingpairequest'):
            self.on_do_ting_pai(msgRequest.request.doTingPaiRequest)
        elif msgRequest.type == msg_pb2.EnumMsg.Value('guopairequest'):
            self.on_guo_pai(msgRequest.request.doTingPaiRequest)
示例#24
0
    def initPai(self):  ##初始化玩家牌
        self.m_cmjManager.InitPai(0)  # 默认黄庄的剩余牌0张
        self.GenBaoPai()  #生成宝牌
        # self.m_cmjManager.m_baoPai.m_Type=4
        # self.m_cmjManager.m_baoPai.m_Value = 5
        self.GraspPai()  # 发牌

        # 网络协议,发送宝牌协议
        msg = msg_pb2.Msg()
        msg.type = msg_pb2.EnumMsg.Value('baopaishownotify')
        msg.notify.baopaiShowNotify.nUserID = 1
        msg.notify.baopaiShowNotify.baopai.nType = self.m_cmjManager.m_baoPai.m_Type
        msg.notify.baopaiShowNotify.baopai.nValue = self.m_cmjManager.m_baoPai.m_Value
        self.sendAllMessage(msg)
        # 通知玩家起牌,之前检查暗杠
        self.getPai(self.m_boss)
示例#25
0
 def on_join_room(self, message):
     uid = message.nUserID
     rid = message.sRoomID
     user = Dal_User().getUser(uid)
     if user.room != '':
         return
     room = self.get_room(rid)
     if room == None:
         # 网络协议,响应
         msg = msg_pb2.Msg()
         msg.type = msg_pb2.EnumMsg.Value('joinroomresponse')
         msg.response.joinRoomResponse.nErrorCode = config_error[
             'roominvalid']
         data = msg.SerializeToString()
         conn = GameHandler.waiters[uid]
         if conn != None:
             conn.write_message(data, True)
         return
     room.onJoin(uid, GameHandler.waiters[uid])
示例#26
0
 def on_message(self, message):
     # logging.info("got message %r", message)
     try:
         msgRequest = msg_pb2.Msg()
         msgRequest.ParseFromString(message)
         if msgRequest.type == msg_pb2.EnumMsg.Value('createroomrequest'):
             self.on_create_room(msgRequest.request.createRoomRequest)
         elif msgRequest.type == msg_pb2.EnumMsg.Value('joinroomrequest'):
             self.on_join_room(msgRequest.request.joinRoomRequest)
         elif msgRequest.type == msg_pb2.EnumMsg.Value('leaveroomrequest'):
             self.on_leave_room(msgRequest.request.leaveRoomRequest)
         elif msgRequest.type == msg_pb2.EnumMsg.Value('dissroomrequest'):
             self.on_diss_room(msgRequest.request.dissRoomRequest)
         elif msgRequest.type == msg_pb2.EnumMsg.Value('putpairequest'):
             self.on_put_pai(msgRequest.request.putPaiRequest)
         elif msgRequest.type == msg_pb2.EnumMsg.Value('dochipairequest'):
             self.on_do_chi_pai(msgRequest.request.doChiPaiRequest)
         elif msgRequest.type == msg_pb2.EnumMsg.Value('dogangpairequest'):
             self.on_do_gang_pai(msgRequest.request.doGangPaiRequest)
         elif msgRequest.type == msg_pb2.EnumMsg.Value('dohupairequest'):
             self.on_do_hu_pai(msgRequest.request.doHuPaiRequest)
         elif msgRequest.type == msg_pb2.EnumMsg.Value('dopengpairequest'):
             self.on_do_peng_pai(msgRequest.request.doPengPaiRequest)
         elif msgRequest.type == msg_pb2.EnumMsg.Value('guopairequest'):
             self.on_guo_pai(msgRequest.request.guoPaiRequest)
         elif msgRequest.type == msg_pb2.EnumMsg.Value(
                 'doqiangtingpairequest'):
             self.on_do_qiang_ting_pai(
                 msgRequest.request.doQiangTingPaiRequest)
         elif msgRequest.type == msg_pb2.EnumMsg.Value('dotingpairequest'):
             self.on_do_ting_pai(msgRequest.request.doTingPaiRequest)
         elif msgRequest.type == msg_pb2.EnumMsg.Value('readygamerequest'):
             self.on_ready_game(msgRequest.request.readyGameRequest)
         elif msgRequest.type == msg_pb2.EnumMsg.Value('chatrequest'):
             self.on_chat(msgRequest.request.chatRequest)
         elif msgRequest.type == msg_pb2.EnumMsg.Value('delegaterequest'):
             self.on_delegate(msgRequest.request.delegateRequest)
     except Exception, e:
         msg = traceback.format_exc()  # 方式1
         Utils().logMainDebug(msg)
示例#27
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)

        msgResp = msg_pb2.Msg()
        msgResp.type = msg_pb2.EnumMsg.Value('loginresponse')

        request = msgReq.request.loginRquest
        response = msgResp.response.loginResponse
        user = Dal_User().getLoginUser(request.sName, request.sPassWord)
        if user == None:
            response.nErrorCode = config_error['userinvaild']
        else:
            if user.gamestate == configs_default['gameState']['forbid']:
                response.nErrorCode = config_error['userforbid']
            elif Dal_User().getLoginer(user.id) and user.room == "":
                response.nErrorCode = config_error['userlogined']
            else:
                sToken = Utils().createToken()  # 生成token
                user.sToken = sToken
                # //设置位置信息
                user.location = request.location
                response.nErrorCode = config_error['success']
                response.requester.nUserID = user.id
                response.requester.sToken = sToken
                if user.name:
                    response.requester.sName = user.name
                if user.nick:
                    response.requester.sNick = user.nick
                if user.exp:
                    response.requester.nExp = user.exp
                if user.gold != None:
                    response.requester.nGold = user.gold
                if user.money != None:
                    response.requester.nMoney = user.money
                if user.headimg:
                    response.requester.sHeadimg = user.headimg
                if user.phone:
                    response.requester.sPhone = user.phone
                if user.records:
                    response.requester.sRecords = user.records
                if user.assets:
                    response.requester.sAssets = user.assets
                if user.room:
                    response.requester.sRoom = user.room
                if user.gender != None:
                    response.requester.nGender = user.gender
                if user.luckytime:
                    response.requester.bLuckyToday = (Utils().dbTime2Number(
                        user.luckytime) >= Utils().LastDayEndTime())
                else:
                    response.requester.bLuckyToday = False
                if user.welfaretime:
                    response.requester.bWelfareToday = (Utils().dbTime2Number(
                        user.welfaretime) >= Utils().LastDayEndTime())
                else:
                    response.requester.bWelfareToday = False

                if user.sharetime:
                    response.requester.bShareAwardWeek = (
                        Utils().dbTime2Number(
                            user.sharetime) >= Utils().LastWeekEndTime())
                else:
                    response.requester.bShareAwardWeek = False

                if user.rankaward:
                    rkAwardFlags = user.rankaward.split(';')
                    for flag in rkAwardFlags:
                        response.requester.bRkAwardFlags.append((flag == '1'))

                # response.requester.nWinCount = user.wincount
                # response.requester.nTotalCount =  user.totalcount
                # response.requester.sIP = self.request.remote_ip

                delegater = Dal_Delegate().getDelegate(user.id)
                response.requester.sICode = delegater.icode

                # 登录记录
                Dal_User().addLoginer(user.id)
                # //更新登录时间
                Dal_User().updateLoginTime(user.id)

        data = msgResp.SerializeToString()
        self.write(data)
示例#28
0
    def post(self):
        try:
            msgReq = msg_pb2.Msg()
            msgReq.ParseFromString(self.request.body)

            msgResp = msg_pb2.Msg()
            msgResp.type = msg_pb2.EnumMsg.Value('rankresponse')
            user = Dal_User().getUser(msgReq.request.rankRequest.nUserID)
            if user == None:
                msgResp.response.rankResponse.nErrorCode = config_error['userinvaild']
            else:
                msgResp.response.rankResponse.nErrorCode = config_error['success']
                #这里取排名
                rankCache = Dal_Record().getRankCache()
                for k,rankList in rankCache.iteritems():
                    index = 0
                    respRD = None
                    if k == config_game['gamerRank']['day']:
                        respRD = msgResp.response.rankResponse.rankDayRecords
                    elif k == config_game['gamerRank']['week']:
                        respRD = msgResp.response.rankResponse.rankWeekRecords
                    elif k == config_game['gamerRank']['month']:
                        respRD = msgResp.response.rankResponse.rankMonthRecords
                    elif k == config_game['gamerRank']['year']:
                        respRD = msgResp.response.rankResponse.rankYearRecords

                    rd = Dal_Record().getRankData(user.id,k)
                    if rd:
                        respRD.rankRequster.nWinCount = (int)(rd.m_nWinCount)
                        respRD.rankRequster.nScore = (int)(rd.m_nScore)
                    else:
                        respRD.rankRequster.nWinCount = 0
                        respRD.rankRequster.nScore = 0
                    respRD.rankRequster.nUserID = (int)(user.id)
                    rankUser = Dal_User().getUser(user.id)
                    respRD.rankRequster.sName = rankUser.nick
                    respRD.rankRequster.sHeadimg = rankUser.headimg
                    respRD.rankRequster.nRank =  Dal_Record().getRankOrder(user.id,k)
                    respRD.rankRequster.bCanAward =  not Dal_User().getRankedFlag(user.id,k)

                    for rank,rd in enumerate(rankList):
                        index = index + 1
                        if index > config_game['gamerRankCount']:break
                        uid = (int)(rd.m_nID)
                        if uid<0:continue
                        respRDCell = respRD.rankRecords.add()
                        respRDCell.nUserID = (int)(rd.m_nID)
                        respRDCell.nWinCount = (int)(rd.m_nWinCount)
                        respRDCell.nScore = (int)(rd.m_nScore)
                        rankUser = Dal_User().getUser(respRDCell.nUserID)
                        respRDCell.sName =   rankUser.nick
                        respRDCell.sHeadimg = rankUser.headimg
                        rankAwardConfig = Dal_Record().getRankAward(rank+1, k)
                        if rankAwardConfig:
                            respRDCell.nRankAwardType = rankAwardConfig['aType']
                            respRDCell.nRankAward = rankAwardConfig['award']

            dataR = msgResp.SerializeToString()
            self.write(dataR)
        except Exception, e:
            msg = traceback.format_exc()  # 方式1
            Utils().logMainDebug(msg)
示例#29
0
    def post(self):
        msgReq = msg_pb2.Msg()
        msgReq.ParseFromString(self.request.body)

        msgResp = msg_pb2.Msg()
        msgResp.type = msg_pb2.EnumMsg.Value('loginresponse')

        request = msgReq.request.loginWXRequest
        response = msgResp.response.loginResponse
        icode =  request.iCode
        user = Dal_User().getLoginUser(request.sOpenID,"")
        if user == None:
             response.nErrorCode = config_error['success']
             user = User(id=None, name=request.sOpenID, password="",
                                  nick=request.sNick, exp=0, gold=0,
                                  money=0, headimg=request.sHeadImage, phone='',
                                  records='', assets='', room='',
                                  rookie = 0,invitetime=None,
                                  luckytime=None,welfaretime=None,
                                  gender=request.nGender,rankaward="0;0;0;0",
                                  logintime=Utils().dbTimeCreate(),
                                  gamestate = configs_default['gameState']['normal'],
                                  totalmoney=0,totalrmb=0,sharetime=None,
                                  wincount =0,totalcount=0,mails='',actawards='')

             Dal_User().addUser(user)
             icode = self.registDelegate(user,icode)

        rooikeAwardType = self.handleICode(user,icode)

        if user.gamestate == configs_default['gameState']['forbid']:
                response.nErrorCode = config_error['userforbid']
        elif Dal_User().getLoginer(user.id) and user.room == "":
                response.nErrorCode = config_error['userlogined']
        else:
                sToken = Utils().createToken() #生成token
                user.sToken = sToken
                #//设置位置信息
                user.location = request.location
                #//更新头像
                if request.sHeadImage != "" and request.sHeadImage != user.headimg:
                    user.headimg = request.sHeadImage
                    kwargs = {"headimg": request.sHeadImage}
                    Dal_User().uqdateUser(user.id, **kwargs)
                #更新昵称
                if request.sNick != "" and request.sNick != user.nick:
                    user.sNick = request.sNick
                    kwargs = {"nick": request.sNick}
                    Dal_User().uqdateUser(user.id, **kwargs)

                response.nErrorCode = config_error['success']
                response.rookieAward = rooikeAwardType
                response.requester.nUserID = user.id
                response.requester.sToken = sToken
                if user.name:
                    response.requester.sName = user.name
                if user.nick:
                    response.requester.sNick = user.nick
                if user.exp:
                    response.requester.nExp = user.exp
                if user.gold!= None:
                    response.requester.nGold = user.gold
                if user.money!= None:
                    response.requester.nMoney = user.money
                if user.headimg:
                    response.requester.sHeadimg = user.headimg
                if user.phone:
                    response.requester.sPhone = user.phone
                if user.records:
                    response.requester.sRecords = user.records
                if user.assets:
                    response.requester.sAssets = user.assets
                if user.room:
                    response.requester.sRoom = user.room
                if user.gender != None:
                    response.requester.nGender = user.gender
                if user.luckytime:
                    response.requester.bLuckyToday = (Utils().dbTime2Number(user.luckytime) >= Utils().LastDayEndTime())
                else:
                    response.requester.bLuckyToday = False
                if user.welfaretime:
                    response.requester.bWelfareToday = (Utils().dbTime2Number(user.welfaretime) >= Utils().LastDayEndTime())
                else:
                    response.requester.bWelfareToday = False

                if user.sharetime:
                    response.requester.bShareAwardWeek = (
                    Utils().dbTime2Number(user.sharetime) >= Utils().LastWeekEndTime())
                else:
                    response.requester.bShareAwardWeek = False

                if user.rankaward:
                    rkAwardFlags = user.rankaward.split(';')
                    for flag in rkAwardFlags:
                        response.requester.bRkAwardFlags.append((flag == '1'))

                # response.requester.nWinCount = user.wincount
                # response.requester.nTotalCount =  user.totalcount
                #response.requester.sIP = self.request.remote_ip


                delegater = Dal_Delegate().getDelegate(user.id)
                response.requester.sICode = delegater.icode

                # 登录记录
                Dal_User().addLoginer(user.id)
                #//更新登录时间
                Dal_User().updateLoginTime(user.id)

        data = msgResp.SerializeToString()
        self.write(data)