def post(self): player_base = self.get_player_base() if player_base is None: return self.send_faild(error.ERROR_NO_USER) try: data = self.get_post_data() phone = data['phone'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) report_list = [] # 要查的使用记录的id列表 player_id_list = [] # 通过关联手机号查id player_by_phone = Data.select('player_member', [('phone', '=', phone)]) if player_by_phone != None: for player in player_by_phone: player_id_list.append(player['id']) if len(player_id_list) > 0: # 遍历所有id for id in player_id_list: # 一个人可能多条记录 test_report_list = Data.select('user_test_result', [('user_id', '=', id)]) if test_report_list == None: continue player_info = Data.find('player_member', [('id', '=', id)]) if player_info == None: continue group = Data.find('player_group', [('id', '=', player_info['group_id'])]) if group == None: continue for test_report in test_report_list: params = {} params['name'] = player_info['name'] params['group'] = group['name'] params['group_id'] = group['group_id'] params['imei'] = test_report['imei'] params['test_time'] = test_report['test_time'] params['left_eye'] = test_report['left_eye'] params['astigmatism_left'] = test_report[ 'astigmatism_left'] params['right_eye'] = test_report['right_eye'] params['astigmatism_right'] = test_report[ 'astigmatism_right'] params['comment'] = test_report['comment'] report_list.append(params) reply = {'report_list': report_list} self.send_ok(reply) return
def init(server): Relay.server = server # 创建初始用户 all_admin = Data.select('admin', [('id', '!=', 0)]) if all_admin != None: for line in all_admin: Relay.admin_token_dict[line['id']] = '' all_player = Data.select('player', [('id', '!=', 0)]) if all_player != None: for line in all_player: Relay.player_token_dict[line['id']] = ''
def post(self): player_base = self.get_player_base() if player_base is None: return self.send_faild(error.ERROR_NO_USER) try: data = self.get_post_data() name = data['member_name'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) player_list = [] res = [] group = Data.select('player_group', [('player_id', '=', player_base['id'])]) if group != None: for row in group: group_id = row['id'] players = Data.select('player_member', [('group_id', '=', group_id)]) if players != None: for player in players: params = {} use_times = 0 params['member_name'] = player['name'] params['member_id'] = player['id'] params['member_phone'] = player['phone'] params['group_name'] = row['name'] test_result = Data.select( 'user_test_result', [('user_id', '=', player['id'])]) if test_result != None: use_times = len(test_result) params['use_times'] = use_times res.append(params) if len(res) > 0: for i in res: if name != '': if name in i['name']: player_list.append(i) else: player_list.append(i) reply = {'result': player_list} self.send_ok(reply) return
def add_agent_reward(shop_id, service_id): distr_info = Data.find('distr_relation', [('user_id', '=', shop_id)]) if distr_info is not None: distr_id = distr_info['upper_id'] if distr_id != 0: shop_machines = Data.select('shop_machines', [('shop_id', '=', shop_id), ('distr_reward', '=', 0), ('status', '=', 0)], order=('add_time', '')) print(shop_machines) print(shop_machines[0]) if shop_machines[0]: if shop_machines[0]['paid_pg'] != 0: params = { 'user_id': distr_id, 'share': 50000, 'withdraw_status': config.withdraw_status_no, 'withdraw_type': config.distr_reward, 'buy_time': int(time.time()), 'withdraw_id': service_id, } Data.insert('withdraw_record', params) Data.update('shop_machines', [('id', '=', shop_machines[0]['id'])], { 'status': 1, 'distr_reward': 1 })
def post(self): player_base = self.get_player_base() if player_base is None: return self.send_faild(error.ERROR_NO_USER) try: data = self.get_post_data() group_id = data['group_id'] name = data['group_name'] comment = data['group_desc'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) group = Data.select('player_group', [('id', '=', group_id)]) if group == None: return self.send_faild(error.ERROR_DATA_NOT_FOUND) Data.update('player_group', [('id', '=', group_id)], { 'name': name, 'comment': comment }) reply = {'commit': 1} self.send_ok(reply) return
def append_lines(self, table): last_id = self.data_all[table][-1]['id'] res = Data.select(table, [('id', '>', last_id)]) if res != None: if len(res) != 0: self.data_all[table] = self.data_all[table] + res return
def get_post_items(case_id): # 获取案子相关附件 result = [] res = Data.select('case_post_item', [('case_id', '=', case_id)]) if res != None: for line in res: result.append(line['post_item']) return result
def get_zone_distr_shop(shop_zone): distr_line = Data.select('zone_root', [('zone_code', '=', shop_zone)]) if distr_line is None: return res = [] for line in distr_line: res.append(line['user_id']) # zone_distr_id = distr_line['user_id'] return res
def return_pg(shop_id, service_info): total_pg = 0 if_return = Data.select('shop_machines', [('shop_id', '=', shop_id), ('paid_pg', '!=', 0), ('had_return_pg', '=', 0)]) if if_return: for info in if_return: total_pg += info['paid_pg'] machine_setting = Data.find('shop_machine_setting', [('shop_id', '=', shop_id)]) if total_pg != 0: params = {'bought_rt_times': machine_setting['bought_rt_times'] + 1} Data.update('shop_machine_setting', [('shop_id', '=', shop_id)], params) machine_setting['bought_rt_times'] += 1 # 保证金不等于的情况下才能统计次数 # 获取当前可退质保金店铺的次数 can_upgrade = Data.find('shop_distr', [('user_id', '=', shop_id)])['return_pg_times'] return_pg_rec = Data.select('withdraw_record', [('user_id', '=', shop_id), ('withdraw_type', '=', config.pg_return)]) if return_pg_rec is None: length = 0 else: length = len(return_pg_rec) # 记录返还过几次保证金 # can_return_times = int(machine_setting['bought_rt_times'] / int(can_upgrade)) if can_return_times > length: # can_return_pg = Data.select('shop_machines', # [('shop_id', '=', shop_id), ('paid_pg', '!=', 0), ('had_return_pg', '=', 0)]) # if can_return_pg: Data.update('shop_machines', [('id', '=', int(if_return[0]['id']))], {'had_return_pg': 1}) insert_return_pg_rec(shop_id, if_return[0]['paid_pg'], service_info['id'])
def create_coupon_num(): res = Data.select('coupon_main', [('id', '!=', 0)]) num_list = [] if res is not None: for line in res: num_list.append(line['c_number']) while 1: code = create_rand_string(12) if code not in num_list: return code
def add_init_inviters_info(invite_dict): all_player = Data.select(Relay.player, [], fields=('id', 'username')) for user in all_player: if user['id'] not in invite_dict: invite_code = Relay.create_invite_code() params = { 'user_id': user['id'], 'invite_code': invite_code, 'inviter_id': 0 } Data.insert(Relay.player, params)
def create_verify_code(table_tail=''): all_code = list(range(100000, 1000000)) res_1 = Data.select('tel_verify' + table_tail, [('id', '!=', 0), ('status', '=', 0)]) res = [] if res_1 is not None: for i in res: all_code.remove(int(i['code'])) return str(random.choice(all_code))
def server_init(server): Relay.server = server _initial_split_word = list(jieba.cut_for_search('server_execute')) print('init split word execute') # 创建初始用户 for character in Relay.token_dict_collection: all_user = Data.select(character, [('id', '!=', 0)]) if all_user != None: for line in all_user: Relay.token_dict_collection[character][line['id']] = '' return
def create_invite_code(table_tail=''): # 创建邀请码 res = Data.select('invite_code' + table_tail, [('id', '!=', 0)]) inv_code_list = [] if res is not None: for line in res: inv_code_list.append(line['inv_code']) while 1: code = create_rand_string(8) if code not in inv_code_list: return code
def post(self): player_base = self.get_player_base() if player_base is None: return self.send_faild(error.ERROR_NO_USER) try: data = self.get_post_data() name = data['group_name'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) res_list = [] group_list = [] group = Data.select('player_group', [('player_id', '=', player_base['id'])]) if group != None: for row in group: params = {} number = 0 params['id'] = row['id'] params['name'] = row['name'] group_member = Data.select('player_member', [('group_id', '=', row['id'])]) if group_member != None: number = len(group_member) params['group_number'] = number res_list.append(params) if len(res_list) > 0: for i in res_list: if name != '': if name in i['name']: group_list.append(i) else: group_list.append(i) reply = {'result': group_list} self.send_ok(reply) return
def kill_md(): all_info = Data.select('case_info', [('id', '!=', 0)]) for line in all_info: res = common.decode_base64(line['title']) # print(res) case_title_list = res.split('.') if len(case_title_list) >= 2: if case_title_list[1] == 'md': print(case_title_list[0]) new_title = common.get_base64( case_title_list[0].encode('utf-8')) Data.update('case_info', [('id', '=', line['id'])], {'title': new_title})
def create_son_cnum(coupon_id): main_number = Data.find('coupon_main', [('id', '=', coupon_id)])['c_number'] res = Data.select('coupon_player', [('coupon_id', '=', coupon_id)]) num_list = [] if res is not None: for line in res: num_list.append(line['coupon_num']) while 1: code = create_rand_string(8) if main_number + code not in num_list: return main_number + code
def post(self): data = self.get_post_data() keyword_list = data['keyword_list'] if self.get_user_base(Relay.admin) != None: cond = [] else: cond = [('is_show','=',status_can_show ),('is_verified','=',status_verified)] if keyword_list == []: self.send_faild(error.ERROR_PARAM) return case_id_list = [] for keyword in keyword_list: keyword_md5 = common.get_md5(keyword) res = Data.select('case_search_index',[('keyword_md5','=',keyword_md5)]) if res == None: continue else: for case in res: case_id_list.append(case['case_id']) continue case_id_list = list(set(case_id_list)) print(case_id_list) title_list = [] for case_id in case_id_list: res = Data.find('case_info',[('id','=',case_id)]+cond) # 需要能显示的才可以看 if res == None: continue else: case_info = { 'case_id':res['id'], 'title':common.decode_base64(res['title']) } title_list.append(case_info) continue title_list = list(reversed(title_list)) result = { 'keyword_list':keyword_list, 'result':title_list } # 关键词搜索 self.send_ok(result) return
def get_all_data(): start_time = time.time() table_list = Data.get_tables() data_strct = {} for table in table_list: ctime = time.time() print('reading', table, '...') data_strct[table] = Data.select(table, []) print('read', table, 'done! spend', time.time() - ctime, 'seconds') print('read database done!') print('spend', time.time() - start_time, 'seconds') return data_strct
def get_init_invite_code(): all_code = list(range(100000, 999999)) all_inviter_info = Data.select('invite_info', [], fields=('invite_code', 'user_id')) invite_dict = {} for line in all_inviter_info: if line['user_id'] in invite_dict: invite_dict[line['user_id']] = line['invite_code'] for i in invite_dict.values(): if i in all_code: all_code.remove(i) Relay.all_invite_code = all_code # 清除掉已经存在的邀请码 # 初始化邀请码 Relay.add_init_inviters_info(invite_dict)
def get_case_list_by_cond(cond): result_list = [] res = Data.select('case_info', cond) if res == None: return # 没有结果就返回none for line in res: info_line = { 'c_time': common_tools.time_to_str(line['c_time']).split()[0], 'title': common_tools.decode_base64(line['title']), 'case_id': line['id'] } result_list.append(info_line) result_list = list(reversed(result_list)) return result_list
def post(self): print('get_auth_template') admin_base = self.get_admin_base() if admin_base is None: return self.send_faild(error.ERROR_NO_LOGIN) if self.is_god() is False: return self.send_faild(error.ERROR_AUTH_PERMISSION) data = self.get_post_data() try: admin_temp_name = data['admin_temp_name'] start_time = data['start_time'] end_time = data['end_time'] status = data['status'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) if admin_temp_name == '': admin_temp_name = "%" if start_time != '': start_time += ' 00:00:00' start_time = str_to_time(start_time) else: start_time = 0 if end_time != '': end_time += ' 00:00:00' end_time = str_to_time(end_time) else: end_time = int(time.time()) res = Data.select('admin_temp', [('name', 'like', '%{}%'.format(admin_temp_name)), ('status', '=', 0)]) admin_temp_list = [] if res: for temp in res: if start_time <= int(temp['ctime']) <= end_time: if status == temp['status']: temp['ctime'] = time_to_str(int(temp['ctime'])) admin_temp_list.append(temp) result = {'auth_temp_list': admin_temp_list} self.send_ok(result) return
def post(self): print('get_device_detail') admin_base = self.get_admin_base() if admin_base is None: return self.send_faild(error.ERROR_NO_LOGIN) if self.is_god() is False: return self.send_faild(error.ERROR_AUTH_PERMISSION) try: data = self.get_post_data() imei = data['imei'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) test_list = [] test_info_list = Data.select('user_test_result', [('imei', '=', imei)]) if test_info_list != None: for test_info in test_info_list: params = {} player_id = test_info['user_id'] player_info = Data.find('player_member', [('id', '=', player_id)]) if player_info == None: continue params['player_name'] = player_info['name'] params['phone'] = player_info['phone'] params['comment'] = test_info['comment'] params['left_eye'] = test_info['left_eye'] params['right_eye'] = test_info['right_eye'] if test_info['astigmatism_left'] + test_info[ 'astigmatism_left'] > 0: params['astigmatism'] = 1 else: params['astigmatism'] = 0 test_list.append(params) result = {'test_list': test_list} self.send_ok(result) write_admin_record(operate_id=admin_base['id'], operate_desc='获取设备测试记录', device_id=device_id) return
def post(self): data = self.get_post_data() if self.get_user_base('admin') != None: cond = [] else: cond = [('is_show', '=', 1), ('is_verified', '=', 1)] search_time = data['limit_year_time'] if search_time != '': search_time_stamp_start = common.str_to_time( str(search_time) + '-01-01 00:00:00') search_time_stamp_end = common.str_to_time( str(search_time) + '-12-31 23:59:59') else: search_time_stamp_start = 0 search_time_stamp_end = 999999999 condition = [ ('event_time', '>', search_time_stamp_start), ('event_time', '<', search_time_stamp_end), ] + cond res = Data.select('case_info', condition) result_list = [] if res == None: self.send_faild(error.ERROR_NO_RESULT) return for line in res: info_line = { 'c_time': common.time_to_str(line['c_time']).split()[0], 'title': common.decode_base64(line['title']), 'case_id': line['id'] } result_list.append(info_line) result_list = list(reversed(result_list)) result = {'result_list': result_list} # print(result) self.send_ok(result) return
def get(self): player_base = self.get_player_base() if player_base is None: return self.send_faild(error.ERROR_NO_USER) devices_list = [] devices = Data.select('devices', [('user_id', '=', player_base['id'])]) if devices != None: for device in devices: params = {} params['imei'] = device['imei'] params['bind_time'] = device['ctime'] devices_list.append(params) # 返回最后一条测试记录 test_params = {} test_info = Data.find_last('user_test_result', [('player_id', '=', player_base['id'])], info='test_time', limit=1) if test_info != None: player_id = test_info['user_id'] player_info = Data.find('player_member', [('id', '=', player_id)]) if player_info == None: return self.send_faild(error.ERROR_NO_USER) group_id = player_info['group_id'] group_info = Data.find('player_group', [('id', '=', group_id)]) if group_info == None: return self.send_faild(error.ERROR_DATA_NOT_FOUND) imei_info = Data.find('dev_main', [('imei', '=', test_info['imei'])]) if imei_info == None: return self.send_faild(error.ERROR_INVALIDATE_IMEI) test_params['imei'] = test_info['imei'] test_params['player_name'] = player_info['name'] test_params['group_name'] = group_info['name'] test_params['left_eye'] = test_info['left_eye'] test_params['astigmatism_left'] = test_info['astigmatism_left'] test_params['right_eye'] = test_info['right_eye'] test_params['astigmatism_right'] = test_info['astigmatism_right'] reply = {'devices_list': devices_list, 'test_info': test_params} self.send_ok(reply) return
def update(self, table, conditions, params): if table in self.data_all: table_content = self.data_all[table] table_id_list = [] tmp = [] if conditions == []: for line in table_content: table_id_list.append(line['id']) tmp.append(line) else: for line in table_content: if judge(line, conditions) == True: table_id_list.append(line['id']) tmp.append(line) Data.update(table, conditions, params) for line in tmp: self.data_all[table].remove(line) for i in table_id_list: res = Data.find(table, [('id', '=', i)]) for line in table_content: if line['id'] > res['id']: line_index = table_content.index(line) if line_index == 0: tail = [res] + table_content else: tail = table_content[:line_index] + [ res ] + table_content[line_index:] break table_content = tail self.data_all[table] = table_content else: Data.update(table, conditions, params) self.data_all[table] = Data.select(table, []) return
def delete(self, table, conditions): if table in self.data_all: table_content = self.data_all[table] del_line = [] for line in table_content: if judge(line, conditions) == True: del_line.append(line) for i in del_line: table_content.remove(i) Data.delete(table, conditions) else: Data.delete(table, conditions) self.data_all[table] = Data.select(table, []) return
def get_city_distr_shop(shop_zone): region = Data.find('region', [('code', '=', shop_zone)]) city = region['parent_code'] distr_line = Data.select('city_root', [('city_code', '=', city)]) if distr_line is None: city_distr_id = None else: city_distr_id = [] for line in distr_line: city_distr_id.append(line['user_id']) # city_distr_id 应该是一个列表 region = Data.find('region', [('code', '=', city)]) province = region['parent_code'] distr_line = Data.find('province_root', [('province_code', '=', province)]) if distr_line is None: province_distr_id = None else: province_distr_id = distr_line['user_id'] return (city_distr_id, province_distr_id)
def get(self): player_base = self.get_player_base() if player_base is None: return self.send_faild(error.ERROR_NO_USER) devices_list = [] devices = Data.select('devices', [('user_id', '=', player_base['id'])]) if devices != None: for device in devices: params = {} params['imei'] = device['imei'] device_info = Data.find_last('user_test_result', [('imei', '=', device['imei'])], info='test_time', limit="1") if device_info != None: test_time = device_info['test_time'] else: test_time = device['ctime'] params['last_use_time'] = test_time devices_list.append(params) reply = {'devices_list': devices_list} self.send_ok(reply) return
def post(self): print('get_player_list') admin_base = self.get_admin_base() if admin_base is None: return self.send_faild(error.ERROR_NO_LOGIN) if not self.is_god(): return self.send_faild(error.ERROR_AUTH_PERMISSION) try: data = self.get_post_data() player_name = data['player_name'] player_phone = data['player_phone'] start_time = data['start_time'] end_time = data['end_time'] status = data['status'] # 0代表用户账户正常,1代表冻结 except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) if player_phone == '': player_phone = "%" if start_time != '': start_time += ' 00:00:00' start_time = str_to_time(start_time) else: start_time = 0 if end_time != '': end_time += ' 00:00:00' end_time = str_to_time(end_time) else: end_time = int(time.time()) players = [] player_list = Data.select( 'player', [('phone', 'like', '%{}%'.format(player_phone))], order=('join_time', 'desc')) if player_list: for player in player_list: if start_time <= int(player['join_time']) <= end_time: players.append(player) res_list = list(map(admin_tools.get_player_list, players)) else: res_list = [] res = [] for i in res_list: if i == None: continue if player_name != '': if player_name in i['name']: res.append(i) else: res.append(i) res1 = [] for i in res: if int(status) == i['status']: res1.append(i) result = {'player_info_list': res1} self.send_ok(result) write_admin_record(operate_id=admin_base['id'], operate_desc='会员管理首页') return