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
Exemple #2
0
    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
Exemple #4
0
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
Exemple #6
0
 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
Exemple #7
0
    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
Exemple #8
0
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
Exemple #9
0
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'])
Exemple #10
0
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
Exemple #11
0
 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)
Exemple #12
0
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))
Exemple #13
0
 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
Exemple #14
0
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
Exemple #16
0
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})
Exemple #17
0
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
Exemple #18
0
    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
Exemple #19
0
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
Exemple #20
0
 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)
Exemple #21
0
    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
Exemple #22
0
    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
Exemple #23
0
    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
Exemple #24
0
    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
Exemple #26
0
    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
Exemple #27
0
    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
Exemple #28
0
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
Exemple #30
0
    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