def handle_configs(): """ 获取系统信息接口 :return: json """ res = ResMsg() id = request.args.get("id", 1) sysid = 1 sys_configs = db.session.query(EtGlobalConfig).filter( EtGlobalConfig.id == sysid).first() res_data = dict() if sys_configs: res_data['data'] = helpers.model_to_dict(sys_configs) # logger.error(Redis.hgetall(redis_key_sys)) if Redis.hgetall(redis_key_sys) == {}: del res_data['data']['update_time'] cache_data = helpers.rmnullkeys(res_data['data']) logger.error(res_data['data']) ret = Redis.hmset(redis_key_sys, cache_data) logger.error(ret) res.update(code=ResponseCode.Success, data=res_data, msg='系统信息获取成功') return res.data else: res.update(code=ResponseCode.Success, data={}, msg='系统信息数据异常') return res.data
def handle_info(): """ 查询任务详情 :return: json """ res = ResMsg() page_index = int(request.args.get("page", 1)) page_size = int(request.args.get("limit", 10)) act_id = int(request.args.get("id", 10)) p_i, p_num = (page_index - 1) * page_size, page_size act_info = db.session.query(EtActivity).filter( EtActivity.id == act_id).first() res_data = dict() if feedlist: res_data['data'] = helpers.model_to_dict(act_info) res.update(code=ResponseCode.Success, data=res_data, msg='活动获取成功') return res.data else: res.update(code=ResponseCode.Success, data={}, msg='活动数据为空or异常') return res.data
def handle_applist(): """ 获取app发布列表 :return: json """ res = ResMsg() page_index = int(request.args.get("page", 1)) page_size = int(request.args.get("limit", 10)) applist = db.session.query(EtAppsPubHistory).limit(page_size).offset( (page_index - 1) * page_size).all() counts = db.session.execute( "SELECT count(*) FROM et_apps_pub_history").first() res_data = dict() if applist: res_data['list'] = helpers.model_to_dict(applist) res_data['length'] = counts[0] res.update(code=ResponseCode.Success, data=res_data, msg='app发布列表获取成功') return res.data else: res.update(code=ResponseCode.Success, data={}, msg='app发布列信息数据为空or异常') return res.data
def handle_lists(): """ 获取用户列表 :return: json """ res = ResMsg() page_index = int(request.args.get("page", 1)) page_size = int(request.args.get("limit", 10)) users = db.session.query(EtAccount).limit(page_size).offset( (page_index - 1) * page_size).all() counts = db.session.execute("SELECT count(*) FROM et_accounts").first() res_data = dict() if users: res_data['list'] = helpers.model_to_dict(users) res_data['length'] = counts[0] res.update(code=ResponseCode.Success, data=res_data, msg=f'{type(users)}获取成功') return res.data else: res.update(code=ResponseCode.Success, data={}, msg='数据获取异常') return res.data
def handle_drpconfig_edit(): """ 分销设置修改接口 :return: json """ res = ResMsg() req = request.get_json(force=True) now_timestr = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) sysid = 1 drp_layers = req.get("drp_layers", 1) profit_percentage = req.get("profit_percentage", '') need_setreal = req.get("need_setreal", 1) daily_max = int(req.get("daily_max", 1)) handling_fee = req.get("handling_fee", 1) min_money = int(req.get("min_money", 1)) withdrawal_condition = req.get("withdrawal_condition", '') daily_withdrawal = req.get("daily_withdrawal", 9) update_dict = { "drp_layers": drp_layers, "profit_percentage": profit_percentage, "need_setreal": need_setreal, "daily_max": daily_max, "handling_fee": handling_fee, "min_money": min_money, "withdrawal_condition": withdrawal_condition, "daily_withdrawal": daily_withdrawal, "update_time": now_timestr } update_dict_ready = helpers.rmnullkeys(update_dict) drpconfigs = db.session.query(EtDrpConfig).filter( EtDrpConfig.id == sysid).first() if drpconfigs: db.session.query(EtDrpConfig).filter( EtDrpConfig.id == sysid).update(update_dict_ready) try: db.session.commit() Redis.delete(redis_key_drp) r_data = helpers.model_to_dict(drpconfigs) del r_data['update_time'] Redis.hmset(redis_key_drp, r_data) res.update(code=ResponseCode.Success, data={}, msg=f'分销设置配置成功') return res.data except Exception as why: res.update(code=ResponseCode.Success, data={}, msg=f'修改失败,请稍后再试{why}') return res.data else: res.update(code=ResponseCode.Success, data={}, msg='修改失败,请稍后再试') return res.data
def handle_appconfigs(): """ 获取APP信息接口 :return: json """ res = ResMsg() sysid = 1 sys_configs = db.session.query(EtAppConfig).filter().first() res_data = dict() if sys_configs: res_data['data'] = helpers.model_to_dict(sys_configs) res.update(code=ResponseCode.Success, data=res_data, msg='APP信息获取成功') return res.data else: res.update(code=ResponseCode.Success, data={}, msg='APP信息数据为空or异常') return res.data
def handle_info_task(): """ 查询任务详情 :return: json """ res = ResMsg() taskid = request.args.get("id") res_data = dict() task = db.session.query(EtTask).filter(EtTask.id == taskid).first() if task: res_data.update(dict(helpers.model_to_dict(task))) res.update(code=ResponseCode.Success, data=res_data, msg=f'任务详情获取成功') return res.data else: res.update(code=ResponseCode.Success, data={}, msg='任务数据异常') return res.data
def handle_task_order_stat(): """ 获取每个订单的二维码推广效果数据 :return: json """ res = ResMsg() order_id = request.args.get("id") res_data = dict() task_order = db.session.query(EtTaskOrder).filter( EtTaskOrder.id == order_id).first() if task_order: task_order_dict = dict(helpers.model_to_dict(task_order)) task_id = task_order_dict['task_id'] member_id = task_order_dict['member_id'] ipcounts_redis_key = f'enterip_from_task_{member_id}_{task_id}' try: stats = Redis.zrange(ipcounts_redis_key, 0, -1, desc=True, withscores=True) res_data['stats_list'] = stats res_data['stats_len'] = len(stats) res_data['order_info'] = task_order_dict res.update(code=ResponseCode.Success, data=res_data, msg=f'数据获取成功') return res.data except Exception as why: res.update(code=ResponseCode.Success, data={}, msg=f'二维码数据异常{why}') return res.data else: res.update(code=ResponseCode.Success, data={}, msg='订单数据异常') return res.data
def handle_orderinfo(): """ 查询某条流水详情 :return: json """ res = ResMsg() order_id = int(request.args.get("id")) res_data = dict() task = db.session.query(EtMemberEarning).filter( EtMemberEarning.id == order_id).first() if task: res_data.update(dict(helpers.model_to_dict(task))) res.update(code=ResponseCode.Success, data=res_data, msg=f'收益详情获取成功') return res.data else: res.update(code=ResponseCode.Success, data={}, msg='收益数据异常') return res.data
def handle_drpconfigs(): """ 获取系统分销配置信息接口 :return: json """ res = ResMsg() sysid = 1 drp_configs = db.session.query(EtDrpConfig).filter( EtDrpConfig.id == sysid).first() res_data = dict() if drp_configs: res_data['data'] = helpers.model_to_dict(drp_configs) del res_data['data']['update_time'] Redis.hmset(redis_key_drp, res_data['data']) res.update(code=ResponseCode.Success, data=res_data, msg=f'分销信息获取成功') return res.data else: res.update(code=ResponseCode.Success, data={}, msg='分销信息数据异常') return res.data
def handle_copytask(): """ 复制一条任务 :return: json """ res = ResMsg() taskid = request.args.get("id") res_data = dict() task = db.session.query(EtTask).filter(EtTask.id == taskid).first() if task: task_dict = dict(helpers.model_to_dict(task)) del task_dict["id"] copy_task = EtTask(**task_dict) copy_task.count_tasks = 0 copy_task.edit_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) db.session.add(copy_task) try: db.session.commit() Redis.delete(task_info_key) Redis.delete(task_detail_key + str(taskid)) Redis.delete(tasks_high_info_key) res_data = dict() res.update(code=ResponseCode.Success, data=res_data, msg=f'复制任务成功') return res.data except Exception as why: res.update(code=ResponseCode.Success, data={}, msg=f'任务数据异常{why}') return res.data else: res.update(code=ResponseCode.Success, data={}, msg='任务数据异常') return res.data
def handle_getuserlists(): """ 获取用户列表 :return: json """ res = ResMsg() page_index = int(request.args.get("page", 1)) page_size = int(request.args.get("limit", 10)) start_time = request.args.get("tstart", '') end_time = request.args.get("end", '') nickname = request.args.get("nickname",'') realname = request.args.get("realname",'') mobile = request.args.get("mobile",'') id_numbers = request.args.get("id_numbers",'') status = request.args.get("status",'') IIUV = request.args.get("IIUV",'') setreal = request.args.get("setreal", '') alipay_id = request.args.get("alipay_id", '') m_class= request.args.get("m_class", '') query_dict = { "nickname": nickname, "realname": realname, "mobile": mobile, "status": status, "m_class": m_class, "IIUV": IIUV, 'setreal': setreal, 'alipay_id': alipay_id } filters = helpers.rmnullkeys( query_dict ) p_i, p_num = (page_index-1) * page_size, page_size if start_time and end_time: if not IIUV: members = db.session.query(EtMember).filter(EtMember.reg_time >= start_time, EtMember.reg_time <= end_time).filter_by(**filters).order_by(EtMember.reg_time.desc()).limit(page_size).offset((page_index-1)*page_size).all() count_members = db.session.query(EtMember).filter(EtMember.reg_time >= start_time, EtMember.reg_time <= end_time).filter_by(**filters).all() mlists= helpers.model_to_dict(members) else: del filters['IIUV'] where_cond='' if filters: where_cond +='AND ' where_cond += 'AND '.join("m.{!s}={!r}".format(key, val) for (key, val) in filters.items()) where_cond +=f' AND m.reg_time>{start_time} AND m.reg_time<={end_time} ' members = db.session.query(EtMember).filter(EtMember.IIUV == IIUV).first() mem_sql= f'SELECT * FROM `et_member_relations` as dr LEFT JOIN et_members as m on dr.member_id=m.id WHERE dr.parent_id={members.id} {where_cond} ORDER BY m.reg_time DESC LIMIT {p_i},{p_num}' members_more = db.session.execute(mem_sql).fetchall() mlists=[{k: v for (k, v) in row.items()} for row in members_more] count_members=mlists else: if not IIUV: members = db.session.query(EtMember).filter_by(**filters).order_by(EtMember.reg_time.desc()).limit(page_size).offset((page_index-1)*page_size).all() count_members = db.session.query(EtMember).filter_by(**filters).all() mlists= helpers.model_to_dict(members) else: del filters['IIUV'] where_cond='' if filters: where_cond +='AND ' where_cond += 'AND '.join("m.{!s}={!r}".format(key, val) for (key, val) in filters.items()) members = db.session.query(EtMember).filter(EtMember.IIUV == IIUV).first() if not members: res.update(code=ResponseCode.Success, data={}, msg='数据获取异常') return res.data mem_sql= f'SELECT * FROM `et_member_relations` as dr LEFT JOIN et_members as m on dr.member_id=m.id WHERE dr.parent_id={members.id} {where_cond} ORDER BY m.reg_time DESC LIMIT {p_i},{p_num}' members_more = db.session.execute(mem_sql).fetchall() mlists=[{k: v for (k, v) in row.items()} for row in members_more] count_members=mlists res_data= dict() if members: res_data['list'] = mlists res_data['length'] = len(count_members) res.update(code=ResponseCode.Success, data=res_data, msg=f'{len(count_members)}获取成功') return res.data else: res.update(code=ResponseCode.Success, data={}, msg='数据获取异常') return res.data
def calculating_earnings(task_order:dict, task_id:int, type_set:int =1): ''' 计算该用户收益 同时异步完成该用户 所有上级 收益更新 #type_set 收益来源:1:任务收益 2:分销佣金3:新手红包奖励 ''' res = ResMsg() if isinstance(task_order, dict): task = db.session.query(EtTask).filter(EtTask.id == task_id).first() logger.info('发放父亲节点收益') if task: task_dict= dict(helpers.model_to_dict(task)) logger.info(task_dict) if task_dict['task_class']==3: type_set = 3 task_earning_money= float(task_dict['task_reward']) earning_dict ={ "member_id": task_order['member_id'], "task_id": task_id, "amounts": task_earning_money, "task_order_id": task_order['id'], "amount_type": type_set } logger.info(earning_dict) new_earning = EtMemberEarning(**earning_dict) isearn_sended= user = db.session.query(EtMemberEarning).filter( EtMemberEarning.task_order_id == task_order['id']).first() if isearn_sended: logger.info("该用户订单收益已发放") return "该用户订单收益已发放'" db.session.add(new_earning) user = db.session.query(EtMember).filter( EtMember.id == task_order['member_id']).first() if user.status==2: res.update(dict(code=ResponseCode.Success, data={}, msg=f'该用户已禁用,无法获得收益')) return res if user: try: update_dict = { "balance": task_earning_money*100 + user.balance, "balance_version": int(time.time()) } db.session.query(EtMember).filter( EtMember.id == task_order['member_id'], EtMember.balance_version == user.balance_version).update(update_dict) db.session.commit() # update user cache Redis.delete(user_center_key + str(user.id)) Redis.delete(user_info_key + str(user.mobile)) Redis.delete(user_task_earnings_key + str(user.id)) #缓存获取分销比例参数 drp_config = Redis.hgetall(redis_key_drp) per_sets = json.loads(drp_config[b'profit_percentage'].decode('utf8')) logger.info(per_sets) # get各级分销比例 profit_percentage_arr=[] for i in range(len(per_sets)): profit_percentage_arr.append (per_sets[i]['per']) logger.info("比例设置:") # logger.info(profit_percentage_arr) # get当前用户关系树 rel_from_relations = db.session.execute(f"SELECT * FROM et_member_relations WHERE member_id={task_order['member_id']}").first() root_id= None if rel_from_relations['parent_id']: root_id= rel_from_relations['parent_id'] if rel_from_relations['top_parent_id']: root_id= rel_from_relations['top_parent_id'] realtion_tree_key_m = realtion_tree_key + str(root_id) logger.info("tree:") tree_node = Redis.hget(realtion_tree_key_m, 0) logger.info(str(tree_node)) realtion_tree_fromuser = json.loads(tree_node) logger.info(str(realtion_tree_fromuser)) importer = DictImporter() parents=[] realtion_tree = importer.import_(realtion_tree_fromuser) cur_node_tuple = realtionlib.findall_by_attr(realtion_tree, task_order['member_id']) cur_node = cur_node_tuple[0] logger.info('ancestors:') logger.info(str(cur_node.ancestors)) if cur_node.ancestors: # async-task: for all parents : drp_earnings for i,k in enumerate(cur_node.ancestors): parents.append(k.name) parentid= k.name drp_level = i+1 logger.info('k-name:'+str(k.name)) logger.info('drp_level:'+str(drp_level)) if drp_level<4: result = async_calculating_earnings.delay(parentid, drp_level, earning_dict, task_id, task_order['id'], type_set=2 ) logger.info(parents) res.update(code=ResponseCode.Success, data={},msg=f'用户交单任务收益更新成功') logger.info(res.data) except Exception as why: res.update(code=ResponseCode.Success, data={},msg=f'用户交单任务收益数据添加失败{why}') logger.info(res.data) else: res.update(code=ResponseCode.Success, data={},msg=f'用户信息异常{user}')
def handle_list(): """ 任务列表接口 :return: json """ res = ResMsg() page_index = int(request.args.get("page", 1)) page_size = int(request.args.get("limit", 10)) task_id = request.args.get("id",'') taskname = request.args.get("name",'') status = request.args.get("status",'') task_class = request.args.get("task_class", '') start_time = request.args.get("tstart", '') end_time = request.args.get("end", '') task_cats= request.args.get("task_cats", '') sys_tags= request.args.get("sys_tags", '') tags= request.args.get("tags", '') query_dict = { "id": task_id, "name": taskname, "status": status, "task_class": task_class, "task_cats": task_cats, } filters = helpers.rmnullkeys( query_dict ) tasks_counts = None if start_time and end_time: tasks = db.session.query(EtTask).filter(EtTask.edit_time >= start_time, EtTask.edit_time <= end_time, EtTask.id>1, EtTask.mer_id==None).filter_by(**filters).order_by(EtTask.edit_time.desc()).limit(page_size).offset((page_index-1)*page_size).all() tasks_counts=db.session.query(EtTask).filter(EtTask.edit_time >= start_time, EtTask.edit_time <= end_time, EtTask.mer_id==None).filter_by(**filters).all() else: if not filters: tasks = db.session.query(EtTask).filter(EtTask.status<3, EtTask.id>1, EtTask.mer_id==None).filter_by(**filters).order_by(EtTask.edit_time.desc()).limit(page_size).offset((page_index-1)*page_size).all() tasks_counts= db.session.query(EtTask).filter(EtTask.status<3, EtTask.mer_id==None).filter_by(**filters).all() else: tasks = db.session.query(EtTask).filter(EtTask.id>1, EtTask.mer_id==None).filter_by(**filters).order_by(EtTask.edit_time.desc()).limit(page_size).offset((page_index-1)*page_size).all() tasks_counts= db.session.query(EtTask).filter(EtTask.status<3, EtTask.mer_id==None).filter_by(**filters).all() if tasks_counts: counts= (len(tasks_counts), 0) else: counts = db.session.execute("SELECT count(*) FROM et_tasks").first() res_data= dict() if tasks: res_data['list'] = helpers.model_to_dict(tasks) res_data['length']= counts[0] res.update(code=ResponseCode.Success, data= res_data, msg=f'任务获取成功') return res.data else: res.update(code=ResponseCode.Success, data={}, msg=f'任务数据异常or空') return res.data