def update_member_coin(self, member: Member, amount: int) -> bool: newValue = member.coin + amount if (newValue < 0): return False member.coin = newValue member.save() return True
def test_after_remove_ignore_increaseExp(self): self.database.remove_ignore_xp_channel(3, 5) self.database.set_ignore_xp_channel(3, 5) self.database.remove_ignore_xp_channel(3, 5) self.database.increase_exp(3, 5, default_user_id, 10) member = Member.get_by_id(default_user_id) assert member.exp == 10
def get_leader_board(self, max_limit: int): query = Member.select().order_by(Member.exp.desc()).limit(max_limit) result = [] if query.exists(): for member in query.iterator(): result.append(member) return result
def increase_coin(self, guild_id: int, member_id: int, coin: int): query = Member.select().where(Member.member_id == member_id) if not query.exists(): return member: Member = query.get() member.coin += coin member.save()
def add_coin(member_id: int, amount: int): query = Member.select().where(Member.member_id == member_id) if query.exists(): member = query.get() else: member = MemberUtil.add_member(member_id) member.coin += amount member.save()
def set_exp(self, member_id: int, new_exp: int): query = Member.select().where(Member.member_id == member_id) if not query.exists(): return -1 member = query.get() member.exp = new_exp member.rank = 1 member.save() return self.__update_rank_if_qualified(member_id)
def __update_rank_if_qualified(self, member_id: int): member = Member.get_by_id(member_id) new_rank = member.rank while (member.exp > Util.get_rank_exp(new_rank + 1)): new_rank += 1 if new_rank != member.rank: member.rank = new_rank member.save() return member.rank
async def reset_everyone_rank(self, ctx: commands.Context, rank=0): member_id_list = Member.select( Member.member_id).where(Member.rank >= rank) for member_id in member_id_list: member: Member = self.db.get_member(member_id) try: user = await ctx.guild.fetch_member(member_id) except NotFound as e: continue await self.__updateUserRole(ctx.guild, user, member, member.rank, None, True)
def increase_exp(self, guild_id: int, channel_id: int, member_id: int, new_exp: int): if channel_id in self.__ignoreXpChannel.get(guild_id, []): return query = Member.select().where(Member.member_id == member_id) if not query.exists(): return -1 member = query.get() member.exp = member.exp + new_exp member.save() return self.__update_rank_if_qualified(member_id)
def login(): resp = {'code': 200, 'msg': "操作成功", "data": {}} req = request.values code = req['code'] app.logger.info(len(code)) app.logger.info(code) if code == None or len(code) < 10: resp['code'] = -1 resp['msg'] = "需要code" app.logger.info("need code") return jsonify(resp) openid = MemberService.getWeChatOpenId(code) if openid == None: resp['code'] = -1 resp['msg'] = "微信调用登录接口失败" app.logger.info("微信调用登录接口失败") return jsonify(resp) resp["openid"] = openid nickname = req['nickName'] sex = req['gender'] avatar = req['avatarUrl'] bind_info = OauthMemberBind.query.filter_by(openid=openid, type=1).first() app.logger.debug("bind_info") app.logger.debug(bind_info) if not bind_info: model_member = Member() model_member.nickname = nickname model_member.sex = sex model_member.avatar = avatar model_member.salt = MemberService.genSalt() model_member.created_time = model_member.updated_time = getCurrentDate( ) db.session.add(model_member) db.session.commit() model_bind = OauthMemberBind() model_bind.member_id = model_member.id model_bind.type = 1 model_bind.extra = '' model_bind.openid = openid model_bind.updated_time = model_bind.created_time = getCurrentDate() db.session.add(model_bind) db.session.commit() db.session.flush() bind_info = model_bind member_info = Member.query.filter_by(id=bind_info.member_id).first() token = "%s#%s" % (MemberService.geneAuthCode(member_info), member_info.id) resp['data'] = {'token': token} return jsonify(resp)
def login(): resp = {'code': 200, 'msg': '操作成功~', 'data': {}} req = request.values # app.logger.info( req ) code = req['code'] if 'code' in req else '' if not code or len(code) < 1: resp['code'] = -1 resp['msg'] = "需要code" return jsonify(resp) openid = MemberService.getWeChatOpenId(code) if openid is None: resp['code'] = -1 resp['msg'] = "调用微信出错" return jsonify(resp) nickname = req['nickname'] if 'nickname' in req else '' sex = req['gender'] if 'gender' in req else '' avatar = req['avatarUrl'] if 'avatarUrl' in req else '' # app.logger.info( req ) bind_info = OauthMemberBind.query.filter_by(openid=openid, type=1).first() if not bind_info: model_member = Member() model_member.nickname = nickname model_member.sex = sex model_member.avatar = avatar model_member.salt = MemberService.geneSalt() model_member.updated_time = model_member.created_time = getCurrentDate( ) db.session.add(model_member) db.session.commit() model_bind = OauthMemberBind() model_bind.member_id = model_member.id model_bind.type = 1 model_bind.openid = openid model_bind.extra = '' model_bind.updated_time = model_bind.created_time = getCurrentDate() db.session.add(model_bind) db.session.commit() bind_info = model_bind member_info = Member.query.filter_by(id=bind_info.member_id).first() token = "%s#%s" % (MemberService.geneAuthCode(member_info), member_info.id) resp['data'] = {'token': token} return jsonify(resp)
def login(): prompt = {'code': 200, "msg": "登陆成功", "data": {}} req = request.values code = req['code'] if 'code' in req else '' if not code or len(code) < 1: prompt['code'] = -1 prompt['msg'] = "未接收到code!" return jsonify(prompt) url = "https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code" \ .format(app.config['MINA']['appid'], app.config['MINA']['appkey'], code) r = requests.get(url) res = json.loads(r.text) openid = res['openid'] nickname = req['nickName'] if 'nickName' in req else '' sex = req['gender'] if 'gender' in req else 0 avatar = req['avatarUrl'] if 'avatarUrl' in req else '' member_info = Member.query.filter_by(openid=openid).first() if member_info: if member_info.status != 1: prompt['code'] = -1 prompt['msg'] = "用户已失效!" return jsonify(prompt) token = "%s-%s" % (member_info.id, member_info.status) prompt['data'] = {"token": token} return jsonify(prompt) model_member = Member() model_member.nickname = nickname model_member.sex = sex model_member.avatar = avatar model_member.openid = openid model_member.purview = 1 db.session.add(model_member) db.session.commit() token = "%s-%s" % (member_info.id, member_info.status) prompt['data'] = {"token": token} return jsonify(prompt)
def add_member(member_id:int): member = Member.create(member_id=member_id) member.save() return member
def get_member_count(): query = Member.select(fn.Count()) if query.exists(): return query.scalar() return 0
def add_members(self, member_ids): data = [] for member_id in member_ids: data.append({'member_id': member_id}) Member.insert_many(data).execute()
def reset_everyone_token(self): member_id_list = Member.select(Member.member_id) for member_id in member_id_list: Member.update(token=100).where( Member.member_id == member_id).execute()
def test_addMultipleMembers(self): member_ids = [1, 2, 3, 4, 5, 6, 7, 8] self.database.add_members(member_ids) for member_id in member_ids: member = Member.get_by_id(member_id) assert member.member_id == member_id
async def updateUserKfpRoles(self, message: Message, rank: int, channelToUse: GuildChannel): member = Member.select().where(Member.member_id == message.author.id) user = message.author await self.__updateUserRole(message.guild, user, member, rank, channelToUse, False)
def get_member(member_id:int): query = Member.select().where(Member.member_id == member_id) if query.exists(): return query.get() return None
def test_increaseExp(self): self.database.increase_exp(0, 0, default_user_id, 10) member = Member.get_by_id(default_user_id) assert member.exp == 10
def test_rankUp(self): member = Member.get_by_id(default_user_id) assert member.rank == 0 self.database.increase_exp(0, 0, default_user_id, 100) member = Member.get_by_id(default_user_id) assert member.rank == 1
def add_coin(self, member_id: int, amount: int): query = Member.select().where(Member.member_id == member_id) if not query.exists(): return False member = query.get() return self.update_member_coin(member, amount)
def get_total_coin(): query = Member.select(fn.SUM(Member.coin)) if query.exists(): return query.scalar() return 0
def force_update_rank(self, member_id: int, new_rank: int): member = Member.get_by_id(member_id) member.rank = new_rank member.save() return member.rank
def get_or_add_member(member_id:int): query = Member.select().where(Member.member_id == member_id) if query.exists(): return query.get() return MemberUtil.add_member(member_id)
def get_member_rank_order(self, member_id: int): target_exp = Member.get_by_id(member_id).exp return Member.select().where((Member.exp > target_exp)).count() + 1