def upload_case(data,user_base,uploader_type=case_constant.uploader_type_admin): content = common.get_base64(data['content'].encode('utf-8')) content_md5 = common.get_md5(content) user_id = user_base['id'] ctime = int(time.time()) event_time = common.str_to_time(data['event_time'] + ' 00:00:00') title = common.get_base64(data['title'].encode('utf-8')) if Data.find('case_info', [('title', '=', title)]) != None: return params = { 'user_id': user_id, 'c_time': ctime, # 'content': content, 'content_md5': content_md5, 'event_time': event_time, 'title': title, 'uploader_type':uploader_type } Data.insert('case_info', params) # 插入主体内容 cond = [ ('user_id', '=', user_id), ('c_time', '=', ctime), ('content_md5', '=', content_md5) ] res = Data.find('case_info', cond) params = { 'case_id': res['id'], 'content': content } Data.insert('case_content',params) # 取得id,插入内容到表中 res['content'] = content http_tools.split_case_info(res) return res
def post(self): print('get_adv_info') 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() adv_id = data['adv_id'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) adv = Data.find('adv', [('id', '=', adv_id)]) adv_info = {} if adv: adv_info['adv_name'] = adv['adv_name'] adv_info['postion'] = adv['postion'] adv_info['url'] = adv['url'] adv_info['ctime'] = adv['ctime'] adv_info['comment'] = adv['comment'] adv_info['status'] = adv['status'] img = Data.find('adv_photo', [('adv_id', '=', adv_id)]) adv_info['img'] = img['photo_url'] result = {'adv_info': adv_info} self.send_ok(result) write_admin_record(operate_id=admin_base['id'], operate_desc='广告详细信息', adv_id=adv_id) return
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 check_user(self,player_base): player_info = Data.find(Relay.player,[('open_id','=',player_base['open_id'])]) if player_info != None: Data.update(Relay.player,[('id','=',player_info['id'])],player_base) else: Data.insert(Relay.player,player_base) player_info = Data.find(Relay.player,[('open_id','=',player_base['open_id'])]) return player_info['id']
def get_dev_user(imei): res = Data.find('devices_using_rec', [('imei', '=', imei), ('playing_time', '>', int(time.time()) - (30 * 60))], order=['playing_time', 'desc']) if res == None: return '无' player_id = res['player_id'] return Data.find('player', [('id', '=', player_id)])['phone']
def post(self): print('update_admin_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() admin_id = data['admin_id'] status = data['status'] auth_temp = data['admin_temp_id'] comment = data['comment'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) if admin_id == 1: print('初始账号不能改信息') return self.send_faild(error.ERROR_AUTH_PERMISSION) admin_info = Data.find('admin_auth', [('admin_id', '=', admin_id)]) if admin_info is None: return self.send_faild(error.ERROR_NO_USER) god_info = Data.find('admin', [('id', '=', admin_id)]) if god_info is None: return self.send_faild(error.ERROR_NO_USER) # 更新模板 Data.update('admin_auth', [('id', '=', admin_id)], {'auth_id': auth_temp}) god_info = { 'utime': common.time_to_str(int(time.time())), 'status': status, 'comment': comment } try: Data.update('admin', [('id', '=', admin_id)], god_info) except Exception as e: print(e) return self.send_faild(error.ERROR_TIMEOUT) result = { 'commit': 1 } self.send_ok(result) write_admin_record(operate_id=admin_base['id'], operate_desc='更新管理员详情', admin_id=admin_id) return
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() imei = data['imei'] member_id = data['member_id'] type = data['type'] # 0视力检测 1 散光检测 65536 视力和散光 except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) commit = 0 devinfo = dev_v3.get_dev_info(imei) if devinfo == None: return self.send_faild(error.ERROR_DEV_NOY_CONNECT_YET) # 用户信息 bind_user = Data.find('devices', [('imei', '=', imei)]) if bind_user == None: return self.send_faild(error.ERROR_DATA_NOT_FOUND) bind_user_id = bind_user['id'] use_user = Data.find('player_member', [('id', '=', member_id)]) if use_user == None: return self.send_faild(error.ERROR_DATA_NOT_FOUND) member_name = use_user['name'] member_phone = use_user['phone'] group_id = use_user['group_id'] group_info = Data.find('player_group', [('id', '=', group_id)]) if group_info == None: return self.send_faild(error.ERROR_DATA_NOT_FOUND) member_group = group_info['comment'] user_info = { 'bind_user_id': bind_user_id, # 设备绑定者id 'member_id': member_id, # 使用者id 'member_name': member_name, # 使用者姓名 'member_group': member_group, # 使用者分组的comment 'member_phone': member_phone, # 使用者手机号 } dev_start = dev.dev_v3.get_dev_start(imei, type, user_info) if dev_start != None: commit = 1 reply = { 'commit': commit # 1为成功 0为失败 } self.send_ok(reply) return
def post(self): print('send_advphoto') admin_base = self.get_admin_base() if admin_base is None: 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() adv_id = data['adv_id'] pic_body = data['title'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) adv_info = Data.find('adv', [('id', '=', adv_id)]) if adv_info is None: return self.send_faild(error.ERROR_NO_USER) adv_id = adv_info['id'] img_data = pic_body.split(',')[1] img_data = base64.b64decode(img_data) path = 'pics/' + common.get_file_md5(img_data) + '_title' + '.jpg' open(path, 'wb').write(img_data) title_line = Data.find('adv_photo', [('adv_id', '=', adv_id), ('is_title', '=', 1)]) if title_line is None: params = { 'adv_id': adv_id, 'photo_url': config.logical_url + '/' + path.split('/')[-1], } Data.insert('adv_photo', params) else: params = { 'photo_url': config.logical_url + '/' + path.split('/')[-1], } Data.update('adv_photo', [('adv_id', '=', adv_id)], params) # 记录进数据库 reply = {'pic_done': 0} self.send_ok(reply) write_admin_record(operate_id=admin_base['id'], operate_desc='上传广告图片', adv_id=adv_id) return
def is_god(token): if token not in Relay.admin_token_dict: return False res = Data.find('openluat_user', [('token', '=', token)]) if res == None: return False res = Data.find('god', [('openluat_user_id', '=', res['id'])]) if res == None: return False return True
def get_user_base(token, character): token_dict = Relay.token_dict_collection[character] for user_id in token_dict: if token_dict[user_id] == token: res = Data.find(character, [('id', '=', user_id)]) return res # =============优先查找内存============= res = Data.find(character, [('token', '=', token)]) if res != None: return res # 之后查找token # Relay.update_admin_token_timeout(token) return
def get_player_base(token): # if config.update_token == True: # if token not in Relay.player_token_dict: # return None res = Data.find('player', [('token', '=', token)]) if res != None: return res for player_id in Relay.player_token_dict: if Relay.player_token_dict[player_id] == token: res = Data.find('player', [('id', '=', player_id)]) return res # Relay.update_player_token_timeout(token) return
def post(self): print('add_admin') 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() username = data['username'] pw = data['pswd'] status = data['status'] auth_temp = data['admin_temp_id'] comment = data['comment'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) if_user = Data.find('admin', [('username', '=', username)]) if if_user is not None: return self.send_faild(error.ERROR_INSERT_USER) admin_params = { 'username': username, 'password_hash': generate_password_hash(pw), 'status': status, 'comment': comment, 'ctime': common.time_to_str(int(time.time())), 'auth_id': auth_temp, } Data.insert('admin', admin_params) new_admin_info = Data.find('admin', [('username', '=', username)]) if new_admin_info is None: return self.send_faild(error.ERROR_DATA_NOT_FOUND) admin_id = new_admin_info['id'] admin_auth_info = { 'auth_id': auth_temp, 'god_id': admin_id } Data.insert('admin_auth', admin_auth_info) result = { 'commit': 1 } self.send_ok(result) write_admin_record(operate_id=admin_base['id'], operate_desc='添加管理员', admin_id=admin_id) return
def get_admin_base(token): # if config.update_token == True: # if token not in Relay.admin_token_dict: # print('admindict中没有这个token') # return None res = Data.find('admin', [('token', '=', token)]) if res != None: return res for admin_id in Relay.admin_token_dict: if Relay.admin_token_dict[admin_id] == token: res = Data.find('admin', [('id', '=', admin_id)]) return res # Relay.update_admin_token_timeout(token) return
def write_my_share(service_pac_rec, share_line): shop_info = Data.find('openluat_user', [('id', '=', service_pac_rec['buy_shop_id'])]) shop_share_info = Data.find( 'shop_distr', [('user_id', '=', service_pac_rec['buy_shop_id'])]) if service_pac_rec['can_upgrade'] == 1: params = {'upgrade_times': shop_share_info['upgrade_times'] + 1} Data.update('shop_distr', [('user_id', '=', service_pac_rec['buy_shop_id'])], params) # shop_share_info = Data.find('shop_distr', [('user_id', '=', service_pac_rec['buy_shop_id'])]) if shop_share_info['upgrade_times'] >= shop_share_info['max_upgrade_times']: shop_share = shop_share_info['shop_share_max'] - share_line[ 'arrival_share'] else: shop_share = shop_share_info['shop_share_min'] - share_line[ 'arrival_share'] # # arrival_share = (10000 - share_line['arrival_share']) / 10000 arrival_share = (share_line['arrival_share'] * service_pac_rec['cost']) / 10000 # 保存到店消费 print('arrival_share', arrival_share) shop_share_raw = (shop_share * service_pac_rec['cost']) / 10000 print('shop_share_raw', shop_share_raw) distr_agent_params = { 'user_id': service_pac_rec['buy_shop_id'], 'share': int(shop_share_raw), # 到店分润要处理 'withdraw_status': config.withdraw_status_no, 'withdraw_type': config.shop_share, # 分润类型,业务员还是店铺 'buy_time': service_pac_rec['buy_time'], # 分润时间 'withdraw_id': service_pac_rec['id'], # 对应的那条用户消费的id } Data.insert('withdraw_record', distr_agent_params) print('门店自己的分润', distr_agent_params['share']) write_arrival_share(service_pac_rec, shop_share_raw, arrival_share)
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) try: data = self.get_post_data() temp_id = data['temp_id'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) res = Data.find('admin_temp', [('id', '=', temp_id)]) if res is None: return self.send_faild(error.ERROR_DATA_NOT_FOUND) temp = { 'temp_name': res['name'], 'temp_auth': res['auth'], 'comment': res['comment'] } result = {'temp_info': temp} self.send_ok(result) return
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'] group = data['group_id'] comment = data['comment'] phone = data['phone'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) group_info = Data.find('player_group', [('id', '=', group)]) if group_info == None: return self.send_faild(error.ERROR_DATA_NOT_FOUND) params = { 'name': name, 'comment': comment, 'add_time': int(time.time()), 'status': 1, 'phone': phone, 'group_id': group } Data.insert('player_member', params) reply = {'add_success': 1} self.send_ok(reply) return
def post(self): print('delete_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) try: data = self.get_post_data() temp_id = data['temp_id'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) res = Data.find('admin_temp', [('id', '=', temp_id)]) if res is None: return self.send_faild(error.ERROR_DATA_NOT_FOUND) Data.update('admin_temp', [('id', '=', temp_id)], {'status': 1}) result = {'commit': 1} self.send_ok(result) write_admin_record(operate_id=admin_base['id'], operate_desc='删除权限模板', temp_id=data['temp_id']) 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() imei = data['imei'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) devinfo = dev_v3.get_dev_info(imei) if devinfo == None: return self.send_faild(error.ERROR_DEV_NOY_CONNECT_YET) device = Data.find('devices', [('imei', '=', imei)]) if device: if device['user_id'] == '': Data.update('devices', [('imei', '=', imei)], {'user_id': player_base['id']}) else: return self.send_faild(error.ERROR_DEVICE_EXISTS) dev_v3.send_bind_status(imei) reply = {'commit': 1} self.send_ok(reply) return
def post(self): print('del_adv') 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() adv_id = data['adv_id'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) info = Data.find('adv', [('id', '=', adv_id)]) if info is None: return self.send_faild(error.ERROR_DATA_NOT_FOUND) if info['status'] == 0: status = 1 else: status = 0 Data.update('adv', [('id', '=', adv_id)], {'status': status}) result = {'commit': 1} self.send_ok(result) write_admin_record(operate_id=admin_base['id'], operate_desc='启用/禁用广告', adv_id=adv_id) return
def get_uploader_info(user_id): # 获取上传者信息 res = Data.find('admin', [('id', '=', user_id)]) result = { 'nickname': res['username'], } return result
def get_device_status(imei): using_status = is_dev_using(imei) if using_status == True: return 65536 # 使用中 if using_status == 65536: return # 无法获取状态 device = Data.find('CWS_APP.devices', [('imei', '=', imei)]) if device is None: return None status = dbapi.get_cws_device_status(imei) online = -1 if status: online = status.get('online', -1) latest_report = dbapi.get_device_latestreport(imei) if not latest_report: return None # dbg((datetime.now().timestamp(), latest_report['time'].timestamp())) if datetime.now().timestamp() - latest_report['time'].timestamp() > 150: if online == 1: online = 0 return online
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() imei = data['imei'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) devinfo = dev_v3.get_dev_info(imei) if devinfo == None: return self.send_faild(error.ERROR_DEV_NOY_CONNECT_YET) dev = Data.find('devices', [('imei', '=', imei)]) if dev == None: return self.send_faild(error.ERROR_DEVICE_EXISTS) params = { 'imei': imei, 'ctime': int(time.time()), 'user_id': '', 'times': 0, 'status': 0 } Data.update('devices', [('imei', '=', imei)], params) dev_v3.send_bind_status(imei) reply = {'commit': 1} self.send_ok(reply) return
def post(self): print('get_player_info') 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_id = data['player_id'] except Exception as e: print(e) return self.send_faild(error.ERROR_PARAM) player = Data.find('player', [('id', '=', player_id)]) player_info = {} if player: player_info['nickname'] = player['nickname'] player_info['phone'] = player['phone'] player_info['sex'] = player['sex'] player_info['add_time'] = player['add_time'] player_info['open_id'] = player['open_id'] player_info['union_id'] = player['union_id'] result = {'player_info': player_info} self.send_ok(result) write_admin_record(operate_id=admin_base['id'], operate_desc='会员详细信息', player_id=player_id) return
def is_god(token): if token in Relay.admin_token_dict: return True res = Data.find(Relay.admin, [('token', '=', token)]) if res is None: return False return True
def machine_start(imei, pulse=12, high=100, low=100): # res = dev_v2.get_dev_status(imei) # if res != None: rep = Data.find('CWS_APP.latestreport', [('imei', '=', imei)]) if int(time.time()) - common.str_to_time(str( rep['time'])) < config.dev_heart_beat: v2 = dev_v2.get_dev_start(imei) if v2 != None: if v2 == 0: print(v2) return True if v2 == -1: print(v2) return False # 先走v2信号 if rep['status'] == 'heart': return False print('V2信号没有走通') imei = imei pulse = 12 money = pulse device_type = 1 duration = 5 high = high low = low topic = 'deveventreq' data = bytearray([0x54, device_type]) data += money.to_bytes(4, 'big') data += duration.to_bytes(4, 'big') data += high.to_bytes(4, 'big') data += low.to_bytes(4, 'big') data += pulse.to_bytes(4, 'big') dbg('发送的信号', data) mongodata = { 'imei': imei, 'datagram_type': 1, 'device_type': device_type, 'duration': duration, 'high': high, 'low': low, 'pulse': pulse } result = MQ.send_data(imei, topic, data) if result and result['result']: mongodata['result'] = 0 # 成功 dbapi.insert_datagram(mongodata) # device = dbapi.get_device(imei=imei) return True else: mongodata['result'] = 1 # 设备正在运行 dbapi.insert_datagram(mongodata) return False
def is_dev_using(imei): latest_rep = Data.find('CWS_APP.latestreport', [('imei', '=', imei)]) if latest_rep['status'] == 'heart': res = dev_v2.get_dev_status(imei) if res == None: return 65536 if res['dev_status'] == 4: return False return True res = Data.find('devices_using_rec', [('imei', '=', imei)], order=['playing_time', 'desc']) if res is None: return False if int(time.time()) - res['playing_time'] < 30 * 60: return True return False
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 check_db(client_id, data): imei = data['imei'] res = Data.find('CWS_APP.devices', [('imei', '=', imei)]) if res == None: result = {'client_in_base': 0} else: result = {'client_in_base': 1} Relay.send_ok(client_id, result) return
def upload(self, data): url = 'http://127.0.0.1:' + str( config.http_config['port']) + '/player/upload' header = {'token': Data.find(Relay.player, [('id', '=', 1)])['token']} res = common_tools.post(url, payload=data, headers=header, show_data=False, show_headers=False) return res