def applyBeautyCertify(cls, gameId, userId): status = cls.getBeautyCertifyStatus(userId) if status.state > BeautyCertifyStatus.STATE_VERIFYING: status.state = BeautyCertifyStatus.STATE_IDLE status.gameId = 0 if status.state != BeautyCertifyStatus.STATE_IDLE: raise TyContext.FreetimeException(ERR_INVALID_STATE, '错误的状态') userCustomHead = UserPhotoService.getUserPhoto( userId, UserPhoto.PHOTO_TYPE_AVATAR) if not userCustomHead: raise TyContext.FreetimeException(ERR_NO_CUSTOM_HEAD, '没有自定义头像') cls.marginCollector.collect(gameId, userId) status.gameId = gameId userLifeHead = UserPhotoService.getUserPhoto(userId, UserPhoto.PHOTO_TYPE_LIFE) if userLifeHead: newState = BeautyCertifyStatus.STATE_PHOTOED else: newState = BeautyCertifyStatus.STATE_APPLIED cls.updateState(status, newState) cls.beautyCertifyStatusDao.save(status) return status
def checkHeadUpload(cls, checkAuthCode=True): gameId, userId = HttpUtils.checkGameRequest(checkAuthCode) base64Content = TyContext.RunHttp.getRequestParam('photoContent') if base64Content is None: raise TyContext.FreetimeException(1, 'Bad photoContent param') try: content = base64.b64decode(base64Content) except: raise TyContext.FreetimeException(1, 'Bad photoContent param') return gameId, userId, content
def revoke(cls, userId): status = cls.beautyCertifyStatusDao.load(userId) if status is None: raise TyContext.FreetimeException(ERR_REMOVED, '记录已被删除') if BeautyCertifyStatus.STATE_ACCEPTED != status.state: raise TyContext.FreetimeException(ERR_INVALID_STATE, '通过的才能撤销') TyContext.ftlog.info('BeautyCertifyService.revoke userId=', userId) cls._remove(status) beauty = cls.beautySignDao.getBeauty(status.userId) beauty &= ~BeautySignDao.BEAUTY_BIT cls.beautySignDao.setBeauty(userId, beauty)
def reject(cls, userId, reason=''): status = cls.beautyCertifyStatusDao.load(userId) if status is None: raise TyContext.FreetimeException(ERR_REMOVED, '记录已被删除') if BeautyCertifyStatus.STATE_VERIFYING != status.state: raise TyContext.FreetimeException(ERR_INVALID_STATE, '审核中的才能拒绝') TyContext.ftlog.info('BeautyCertifyService.reject userId=', userId) cls.updateState(status, BeautyCertifyStatus.STATE_REJECTED) cls.beautyCertifyStatusDao.save(status) return status
def requestVerify(cls, userId): status = cls.beautyCertifyStatusDao.load(userId) if status is None: raise TyContext.FreetimeException(ERR_REMOVED, '记录已被删除') if BeautyCertifyStatus.STATE_PHOTOED != status.state: raise TyContext.FreetimeException(ERR_INVALID_STATE, '还没有上传生活照') TyContext.ftlog.info('BeautyCertifyService.requestVerify accept=', userId) cls.updateState(status, BeautyCertifyStatus.STATE_VERIFYING, '') cls.beautyCertifyStatusDao.save(status) return status
def checkGameRequest(cls, checkAuthorCode=True): userId = TyContext.RunHttp.getRequestParamInt('userId') gameId = TyContext.RunHttp.getRequestParamInt('gameId') if userId <= 0: raise TyContext.FreetimeException(1, 'Bad userId') if gameId <= 0: gameId = TyContext.RunHttp.getRequestParamInt('appId') if gameId <= 0: raise TyContext.FreetimeException(1, 'Bad gameId') if checkAuthorCode: authorCode = TyContext.RunHttp.getRequestParam('authorCode') if not TyContext.AuthorCode.checkUserAuthorCode( userId, authorCode): raise TyContext.FreetimeException(1, 'Bad authorCode') return gameId, userId
def searchUser(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() mo.setCmd('searchUser') search_uid = TyContext.RunHttp.getRequestParam('search_uid') if search_uid is None or search_uid == '' or not str( search_uid).isdigit(): mo.setResult('code', 2) mo.setResult('info', '请输入正确ID') return cls.onResponse(mo, params) search_list = [] user = Friend.getUserInfo(params['appId'], search_uid) if not user is None: search_list.append(user) Friend.setup_friends_game_info(search_list) # for user in search_list: # user['level'] = 1 # user['level_game'] = '麻将' if len(search_list) == 0: mo.setResult('code', 2) mo.setResult('info', '请输入正确ID') else: mo.setResult('code', 0) mo.setResult('info', 'ok') mo.setResult('search_list', search_list) return cls.onResponse(mo, params)
def addFriendRequest(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() mo.setCmd('addFriend') friend_uid = TyContext.RunHttp.getRequestParam('friend_uid') if friend_uid is None or friend_uid == '': mo.setResult('code', 2) mo.setResult('info', u"好友ID为空!") return cls.onResponse(mo, params) uid = params['userId'] normal_user = cls._checkNormalAccount(uid) if normal_user == 0: mo.setResult('code', 109) mo.setResult('info', Friend.err_codes[109]) # return mo todo friend_uids = friend_uid.split(',') TyContext.ftlog.debug('friend_uids', friend_uids) if len(friend_uids) == 1: Friend.addFriendRequest(params['appId'], params['clientId'], params['userId'], friend_uid, mo) else: for fid in friend_uids: Friend.addFriendRequest(params['appId'], params['clientId'], params['userId'], fid, None) TyContext.ftlog.debug('friend_uids....') mo.setResult('code', 0) mo.setResult('info', u"好友请求发送成功!") return cls.onResponse(mo, params)
def confirmFriendRequest(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() mo.setCmd('confirmFriendRequest') friend_uid = TyContext.RunHttp.getRequestParam('friend_uid') isAgree = TyContext.RunHttp.getRequestParamInt('is_agree', 0) if friend_uid is None or friend_uid == '': mo.setResult('code', 2) mo.setResult('info', u"好友ID为空!") return cls.onResponse(mo, params) friend_uids = friend_uid.split(',') if len(friend_uids) == 1: Friend.confirmFriendRequest(params['appId'], params['userId'], friend_uid, isAgree, mo) return cls.onResponse(mo, params) for friend_uid in friend_uids: ret = Friend.confirmFriendRequest(params['appId'], params['userId'], friend_uid, isAgree, mo) if not ret: break mo.setResult('code', 0) mo.setResult('info', "ok") return cls.onResponse(mo, params)
def doPayRequestCard(self, mi): chargeInfo = self.get_charge_info(mi) mo = TyContext.Cls_MsgPack() status = TuYouPayYeeV4.doPayRequestCard(chargeInfo, mi, mo) mo.setResult('chargeinfo', chargeInfo) mo.setResult('code', status) return self.return_mo(0, chargeInfo=chargeInfo)
def readyInviteFriend(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() invite_type = TyContext.RunHttp.getRequestParam('invite_type') productName = TyContext.RunHttp.getRequestParam('productName') uid = params['userId'] gameId = params['appId'] # todo subGameId = TyContext.RunHttp.getRequestParamInt('subGameId', 6) gameName, url = Friend.getGameNameAndUrl(subGameId, params['clientId']) if not productName: productName = gameName normal_user = 1 if invite_type == 'sms': msg = "我在玩 " + productName + ",等你哦,不见不散!点此下载:" + url normal_user = cls._checkNormalAccount(uid) else: msg = "我在玩 " + productName + ",等你哦,不见不散!我的id是" + str(uid) + ", " \ "在游戏中添加我为好友,一起玩吧~ 点击下载" code = 0 if normal_user == 0: code = 1 mo.setResult('code', code) mo.setResult('url', url) mo.setResult('content', msg) mo.setResult('info', "ok") return cls.onResponse(mo, params)
def getPayResult(self, ret, datas): r0_Cmd = ""; # 业务类型 r1_Code = ""; # 支付结果 r2_TrxId = ""; # 易宝支付交易流水号 r6_Order = ""; # 商户订单号 rq_ReturnMsg = ""; # 返回信息 rethmac = ""; # 签名数据 unkonw = ""; # 未知错误 result = ret.split("\n") for data in result: dsp = data.split('=') if len(dsp) != 2: continue sKey, Svalue = dsp if sKey == 'r0_Cmd': r0_Cmd = Svalue elif sKey == 'r1_Code': r1_Code = Svalue elif sKey == 'r2_TrxId': r2_TrxId = Svalue elif sKey == 'r6_Order': r6_Order = Svalue elif sKey == 'rq_ReturnMsg': rq_ReturnMsg = Svalue elif sKey == 'hmac': rethmac = Svalue else: unkonw = Svalue mo = TyContext.Cls_MsgPack() mo.setResult('r0_Cmd', r0_Cmd) mo.setResult('r1_Code', r1_Code) mo.setResult('r2_TrxId', r2_TrxId) mo.setResult('r6_Order', r6_Order) mo.setResult('rq_ReturnMsg', rq_ReturnMsg) mo.setResult('unkonw', unkonw) sbOld = str(r0_Cmd) + str(r1_Code) + str(r6_Order) + str(rq_ReturnMsg) hmacStr = self.getHmacString(sbOld) if (rethmac == hmacStr): if r1_Code == '1': info = '提交成功!' from tysdk.entity.pay.pay import TuyouPay TuyouPay.makeBuyChargeMessage(mo, datas) elif r1_Code == '2': info = '充值交易失败,卡密成功处理过或者提交卡号过于频繁' elif r1_Code == '11': info = '充值交易失败,订单号重复' elif r1_Code == '66': info = '充值交易失败,支付金额有误' else: info = '充值交易失败,请检查后重新测试支付' else: info = '充值交易失败,' + rq_ReturnMsg info = info.decode('utf-8') mo.setResult('info', info) return mo
def doGetUserInfo(cls, rpath): isReturn, params = AccountCheck.normal_check(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() AccountInfo.doGetUserInfo(params, mo) return mo
def convertToMsgPack(self, keys): msg = TyContext.MsgPack() for key in keys: value = self.getRequestParam(key) if value != None: msg.setParam(key, value) return msg
def doNicai(cls, rpath): code = TyContext.RunHttp.getRequestParam('code', '0') rcode = TyContext.strutil.tydes_encode(code) mo = TyContext.Cls_MsgPack() mo.setCmd('nicai') mo.setResult('code', rcode) return mo
def doLoginByMobile(cls, rpath): isReturn, params = AccountCheck.login_check(rpath, 2) if isReturn: return params mo = TyContext.Cls_MsgPack() AccountLogin.doLoginByMobile(params, mo) return mo
def payCardRequest(self, rparam, datas): cardUrl = TuyouPayTuyou.szf_url + '?' + self.createLinkString4Get( rparam) TyContext.ftlog.info('TuYouPayTuyou->requestUrl=', cardUrl) response, cardUrl = TyContext.WebPage.webget(cardUrl) TyContext.ftlog.info('TuYouPayTuyou->requestUrl=', cardUrl, 'response=', response) status = 0 try: status = int(response) except: status = 0 mo = TyContext.Cls_MsgPack() from tysdk.entity.pay.pay import TuyouPay if status == 200: TuyouPay.makeBuyChargeMessage(mo, datas) else: mo.setResult('code', 1) mo.setResult('tuyou.card.code', status) info = '' if status in TuyouPayTuyou.szf_request_code: info = TuyouPayTuyou.szf_request_code[status] else: info = '充值卡支付失败' info = info.decode('utf-8') mo.setResult('info', info) return mo
def doSetForbidden(cls, rpath): '''设置禁止登录用户''' mo = TyContext.Cls_MsgPack() lock_users = TyContext.RunHttp.getRequestParam('lock_users', '[]') unlock_users = TyContext.RunHttp.getRequestParam('unlock_users', '[]') try: locked = json.loads(lock_users) unlocked = json.loads(unlock_users) except: mo.setResult('code', 1) mo.setResult('info', 'error args') return mo byid = TyContext.RunHttp.getRequestParam('byid', 'userId') TyContext.ftlog.debug('doSetForbidden byid', byid, 'locked', locked, 'unlocked', unlocked) if byid == 'userId': return cls._set_forbidden_ids('forbidden:uid:', locked, unlocked, locked, mo, 100) elif byid == 'clientId': return cls._set_forbidden_ids('forbidden:cid:', locked, unlocked, locked, mo) elif byid == 'deviceId': lock_users = [] for devid in locked: userid = AccountLogin.__find_userid_by_devid_map_v3__(devid) if userid > 0: lock_users.append(userid) return cls._set_forbidden_ids('forbidden:devid:', locked, unlocked, lock_users, mo)
def doSetPasswd(cls, rpath): isReturn, params = AccountCheck.normal_check(rpath) if isReturn: return params # 获取玩家修改密码次数 userId = params['userId'] changePwdCount = TyContext.RedisUser.execute(userId, 'HGET', 'user:'******'changePwdCount') # TyContext.ftlog.info(cls.__name__, 'doSetPasswd->changePwdCount=', changePwdCount) if changePwdCount == None: changePwdCount = 0 if int(changePwdCount) > 0: isReturn, oldpasswd = AccountCheck.check_param_password(rpath, 'oldpasswd') if isReturn: return oldpasswd params['oldpasswd'] = oldpasswd isReturn, newpasswd = AccountCheck.check_param_password(rpath, 'newpasswd', isSet=True) if isReturn: return newpasswd params['newpasswd'] = newpasswd mo = TyContext.Cls_MsgPack() AccountInfo.doSetPasswd(params, mo) return mo
def doSetUserAvatar(cls, rpath): isReturn, params = AccountCheck.normal_check(rpath) if isReturn: return params url = TyContext.RunHttp.getRequestParam('url', '').strip() data = TyContext.RunHttp.getRequestParam('data', '') mo = TyContext.Cls_MsgPack() is_url_error = len(url) > 0 and (len(url) > 125 or url.find('"') >= 0 or url.find("'") >= 0) if (len(url) == 0 and len(data) == 0) or is_url_error: mo.setResult('code', 1) mo.setResult('info', '输入参数错误') return mo if len(data) > 0: try: data = base64.b64decode(data) except: mo.setResult('code', 1) mo.setResult('info', '图像数据错误') return mo params['url'] = url params['data'] = data AccountInfo.doSetUserAvatar(params, mo) return mo
def setScore(cls, rpath): appId = TyContext.RunHttp.getRequestParamInt('appId', 0) score = TyContext.RunHttp.getRequestParamInt('score', 0) userId = TyContext.RunHttp.getRequestParamInt('userId', 0) infos = TyContext.RunHttp.getRequestParam( 'infos', '') # user extra infos json string mo = TyContext.Cls_MsgPack() mo.setCmd('setScore') if score == 0: mo.setResult('code', 1) mo.setResult('info', 'score is zero') return mo rankName = TyContext.RunHttp.getRequestParam('rank_name', 'week_score') key = 'rank_scores:' + str(appId) + ":" + str(rankName) + ':' + str( userId) ret = TyContext.RedisUser.execute(userId, 'hmset', key, 'score', str(score), 'infos', infos) if ret: td = datetime.datetime.today() seconds = (7 - td.weekday() ) * 86400 - td.hour * 3600 - td.minute * 60 - td.second TyContext.RedisUser.execute(userId, 'EXPIRE', key, seconds) mo.setResult('code', 0) mo.setResult('info', 'success') else: mo.setResult('code', 1) mo.setResult('info', 'fail') # TyContext.ftlog.info(cls.__name__, 'mo->', mo.packJson()) return mo
def doRenewAuthorCodeByTyId(cls, rpath): isReturn, params = AccountCheck.login_check(rpath, 3) if isReturn: return params mo = TyContext.Cls_MsgPack() AccountLogin.doRenewAuthorCodeByTyId(params, mo) return mo
def crossReward(cls, rpath): userId = TyContext.RunHttp.getRequestParam('userId') appId = TyContext.RunHttp.getRequestParam('appId') Cross.reward(userId, appId) mo = TyContext.Cls_MsgPack() mo.setResult('code', 0) return mo
def _default_charge_data_func(cls, chargeinfo): userId = chargeinfo['uid'] buttonId = chargeinfo['buttonId'] clientId = chargeinfo['clientId'] chargetype = chargeinfo['chargeType'] clientip = TyContext.UserSession.get_session_client_ip(userId) from tysdk.entity.pay_common.fengkong import Fengkong if Fengkong.is_ip_limited(clientip, clientId, chargetype): raise TyContext.FreetimeException( 1, '对不起,您已超出支付限制,请联系客服4008-098-000') paycodes = TyContext.Configure.get_global_item_json('paycodes', clientid=clientId) try: pdata = paycodes[chargetype]['paydata'] except Exception as e: TyContext.ftlog.error('paycodes', paycodes, 'config error for', clientId, 'buttonId', buttonId) raise for data in pdata: if data['prodid'] == buttonId: break else: raise Exception('product %s not found in paycodes(%s) config' % (buttonId, clientId)) cdata = copy.deepcopy(data) del cdata['prodid'] chargeinfo['chargeData'] = cdata
def notifyItemListChange(self, gameId, userId): mo = TyContext.MsgPack() mo.setCmd('item_list') mo.setParam('userId', userId) mo.setParam('gameId', gameId) self.msg = mo self.sendUdpToServerType(mo, userId, 3)
def doCreateAccount(cls, rpath): isReturn, params = AccountCheck.login_check(rpath, 7) if isReturn: return params mo = TyContext.Cls_MsgPack() AccountLogin.doCreateAccount(params, mo) return mo
def doGetUpdataInfo(cls, rpath): gameid = TyContext.RunHttp.getRequestParamInt('gameId') clientid = TyContext.RunHttp.getRequestParam('clientId') upversion = TyContext.RunHttp.getRequestParamInt('updateVersion') mo = TyContext.Cls_MsgPack() mo.setCmd('getUpdateInfo') if gameid == 0 or clientid == None: mo.setError(2, '参数错误') return mo TyContext.ftlog.debug('doGetUpdataInfo', gameid, clientid, upversion) verinfo = GameIncUpdate.instance().getNeedUpdateVersion(gameid, clientid, upversion) if verinfo: mo.setResult('gameId', gameid) mo.setResult('clientId', clientid) mo.setResult('updateVersion', verinfo._id) if verinfo._force == '1': mo.setResult('updateType', 'force') else: mo.setResult('updateType', 'optional') mo.setResult('updateSize', verinfo._size) mo.setResult('updateUrl', verinfo._path) mo.setResult('updateDes', verinfo._des) mo.setResult('jsMD5', verinfo._md5) else: mo.setError(1, '无可用更新') return mo
def _check_prod_price(mi): try: prodId = mi.getParamStr('prodId') prodPrice = mi.getParamFloat('prodPrice') defPrice = -1 if prodId.startswith("TY"): lpid = len(prodId) if lpid >= 12: if prodId[6] == 'D' or prodId[6] == 'R': defPrice = float(prodId[7:12]) if defPrice >= 0: if prodPrice < defPrice * 0.8: TyContext.ftlog.info('CHECK_PROD_PRICE ERROR prodId=', prodId, 'defPrice=', defPrice, 'prodPrice=', prodPrice, mi) mo = TyContext.Cls_MsgPack() mo.setCmd('consume') mo.setError(2, '商品信息错误,请重新购买') return mo else: TyContext.ftlog.info('CHECK_PROD_PRICE OK prodId=', prodId, 'defPrice=', defPrice, 'prodPrice=', prodPrice, mi) else: TyContext.ftlog.info('CHECK_PROD_PRICE NG prodId=', prodId, 'defPrice=', defPrice, 'prodPrice=', prodPrice, mi) except Exception, e: TyContext.ftlog.error('CHECK_PROD_PRICE', e)
def doAddVersion(cls, rpath): gameId = TyContext.RunHttp.getRequestParamInt('gameId') md5 = TyContext.RunHttp.getRequestParam('md5') size = TyContext.RunHttp.getRequestParam('size') path = TyContext.RunHttp.getRequestParam('path') des = TyContext.RunHttp.getRequestParam('des') force = TyContext.RunHttp.getRequestParam('force') mo = TyContext.Cls_MsgPack() if not (md5 and size and path and des and force): mo.setResult('code', 1) mo.setResult('info', 'args error') return mo vermnr = GameIncUpdateConfiger.instance().find_vers_mnr(gameId) if vermnr == None: mo.setResult('code', 2) mo.setResult('info', 'error gameId') return mo id = vermnr.generateId() ver = Version(id, md5, size, path, des, force) if vermnr.addVersion(ver): mo.setResult('version', ver.generateToManager()) vermnr.save() else: mo.setResult('code', 3) mo.setResult('info', 'add error') return mo
def doYoukuVipCallback(cls, rpath): mo = TyContext.Cls_MsgPack() config = TyContext.Configure.get_global_item_json('youkuh5_config', {}) paykey = config.get('payKey') # qid=50469470&grade=1&vip_center_id=youkutest1011&sign=7439fb6fa5f82104c107648e9ac77d76 qid = TyContext.RunHttp.getRequestParam('qid', '') grade = TyContext.RunHttp.getRequestParam('grade', '') vip_center_id = TyContext.RunHttp.getRequestParam('vip_center_id', '') sign = TyContext.RunHttp.getRequestParam('sign', '') if qid == '' or grade == '' or vip_center_id == '': return 0 TyContext.ftlog.info('youku_vip_charge_callback', qid, grade, vip_center_id, sign) sign_str = "%s%s%s%s" % (qid, grade, vip_center_id, paykey) from hashlib import md5 m = md5() m.update(sign_str) my_sign = m.hexdigest() TyContext.ftlog.debug('youku_vip_charge_callback my_sign', my_sign, sign) if not my_sign or my_sign != sign: mo.setResult('code', 1) mo.setResult('info', 'sign error') return 0 sns_id = 'youkuh5:' + str(qid) uid = TyContext.RedisUserKeys.execute('GET', 'snsidmap:' + sns_id) cls.notify_game_server_on_vip_change(uid, vip_center_id, grade) return 1