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 add_settlement(): """ 结算审核接口 :return: json """ res = ResMsg() req = request.get_json(force=True) mer_id = req.get("mer_id") task_id = req.get("task_id") # 查询当前任务锁定金额 s_sql = f"SELECT balance,et.lock_balance as task_lockbalance, etm.lock_balance from et_merchants as etm LEFT JOIN et_mertask_withdrawal as et on et.mer_id = etm.id where etm.id = {mer_id} and et.task_id = {task_id}" data_list = db.session.execute(s_sql).first() json_data = dict(data_list) # bugcheck data_list 可能查询为空 task_b = json_data["task_lockbalance"] lock_b = json_data["lock_balance"] - task_b balance = json_data["balance"] + task_b # 更新当前任务锁定金额 up_b = f"UPDATE et_merchants set balance={balance}, lock_balance={lock_b} WHERE id = {mer_id}" up_b_ex = db.session.execute(up_b) # 加入流水表 t = time.time() add_w_sql = f"INSERT INTO et_recharge_withdrawal (withdrawal_num, mer_id, balance, type_id, business_id) \ VALUE ({int(t)}, {mer_id}, {task_b}, 1, 3)" add_w_ex = db.session.execute(add_w_sql) try: db.session.commit() except Exception as why: res.update(code=ResponseCode.Success, data={}, msg=f"修改失败{why}") return res.data task_sql = f"UPDATE et_tasks set status=10 WHERE id={task_id}" db.session.execute(task_sql) db.session.commit() res.update(code=ResponseCode.Success, data={}, msg="修改成功") return res.data
def handle_account_edit(): """ 账户修改接口 :return: json """ res = ResMsg() req = request.get_json(force=True) userid = req.get("userid") username = req.get("username") password = req.get("password") password_hash = hash_password(password) role_id = req.get("role") status = req.get("status") update_dict = { "name": username, "password": password_hash, "role_id": role_id, "status": status } update_dict_ready = helpers.rmnullkeys(update_dict) user = db.session.query(EtAccount).filter(EtAccount.id == userid).first() if user: db.session.query(EtAccount).filter( EtAccount.id == userid).update(update_dict_ready) try: db.session.commit() res.update(code=ResponseCode.Success, data={}, msg='修改成功') 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 registered(): """ 商户注册接口 :return:json """ res = ResMsg() req = request.get_json(force=True) username = req.get("username") password = req.get("password") mobile = req.get("mobile") industry = req.get("industry") account_name = session.get("user_name") if not all([username, password, mobile, industry]): res.update(code=ResponseCode.Success, data={}, msg="参数异常") return res.data password_hash = hash_password(password) # 获取用户ip信息,todo反向代理可能要设置X-Forwarded-For这个Key才能拿到 # ip = request.headers.get('X-Forwarded-For').split(',')[0] ip = request.remote_addr user = db.session.query(ETMerchants).filter( ETMerchants.username == username).first() if user: res.update(code=ResponseCode.Success, data={}, msg="账户已存在,无需重复注册") return res.data else: new_user = ETMerchants(username=username, password=password_hash, mobile=mobile, industry=industry, ip=ip, accounts_name=account_name) db.session.add(new_user) try: db_res = db.session.commit() res.update(code=ResponseCode.Success, data={}, msg='账户注册成功') return res.data except Exception as why: res.update(code=ResponseCode.Success, data={}, msg=f"数据添加失败{why}") return res.data
def mertasks(): """ 商户任务明细接口 :retrun: json """ res = ResMsg() page_index = int(request.args.get("page", 1)) page_size = int(request.args.get("limit", 10)) p_i, p_num = (page_index - 1) * page_size, page_size mer_id = request.args.get('id', ) if mer_id: m = f'SELECT t1.TASK_COMPLETES, t1.task_id, t1.TASK_VERIFYING, t1.TASK_REJECTED, et.NAME, et.task_reward, em.id \ FROM ( SELECT SUM( IF ( STATUS = 4, 1, 0 ) ) AS TASK_COMPLETES,\ SUM( IF ( STATUS = 2, 1, 0 ) ) AS TASK_VERIFYING, \ SUM( IF ( STATUS = 5, 1, 0 ) ) AS TASK_REJECTED,\ task_id FROM et_task_orders GROUP BY ( task_id ) ) AS t1 \ LEFT JOIN et_tasks AS et ON t1.task_id = et.id \ LEFT JOIN et_merchants AS em ON em.id = et.mer_id \ WHERE em.`status` = 1 AND em.id = {mer_id} \ ORDER BY addtime DESC LIMIT {p_i}, {p_num}' us_sql = f"SELECT id,username,industry,balance,lock_balance,addtime FROM et_merchants \ ORDER BY addtime DESC LIMIT {p_i}, {p_num}" u_lists = db.session.execute(us_sql).fetchall() res_data = dict() if u_lists: wi_list = [{k: v for (k, v) in row.items()} for row in u_lists] count_wi = wi_list res_data['list'] = wi_list res_data['length'] = len(count_wi) res.update(code=ResponseCode.Success, data=res_data, msg=f"{len(count_wi)}获取成功") return res.data else: res.update(code=ResponseCode.Success, data={}, msg="数据获取异常") return res.data
def teacher_list(): """ 获取教师列表 :return: """ res = ResMsg() obj = request.args name = obj.get("name") or None filters = {or_(Teacher.name == name, name == None)} # current_app.logger.debug(db.session.query(Teacher.id.label('iduu'), Teacher.name).filter(*filters).order_by(Teacher.id)) # db_teacher = db.session.query(Teacher.id.label('iduu'), Teacher.name).filter(*filters).order_by(Teacher.id).all() # for o in db_teacher: # current_app.logger.debug(o[0]) db_teacher = db.session.query(Teacher).filter(*filters).order_by( Teacher.id).all() teacher_list = [] for o in db_teacher: teacher_list.append({"id": o.id, "name": o.name}) data = {"teachers": teacher_list} # current_app.logger.debug(type(db_teacher)) res.update(data=data) 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 mertasks(): """ 商户任务明细接口 :retrun: json """ res = ResMsg() page_index = int(request.args.get("page", 1)) page_size = int(request.args.get("limit", 10)) p_i, p_num = (page_index - 1) * page_size, page_size mer_id = request.args.get('id', ) if mer_id: m = f'SELECT et.name,et.task_reward,et.tasks_counts,t1.task_rejected,t1.task_completes \ FROM \ (SELECT \ SUM( IF (status = 4, 1, 0) ) AS task_completes, \ SUM( IF (status = 5, 1, 0) ) AS task_rejected, \ task_id \ FROM \ et_task_orders \ GROUP BY \ ( task_id ) \ ) AS t1 \ LEFT JOIN et_tasks AS et ON t1.task_id = et.id \ LEFT JOIN et_merchants AS etm on etm.id = et.mer_id \ WHERE etm.username is not NULL and etm.id = {mer_id} \ LIMIT {p_i}, {p_num}' u_lists = db.session.execute(m).fetchall() res_data = dict() if u_lists: wi_list = [{k: v for (k, v) in row.items()} for row in u_lists] count_wi = wi_list res_data['list'] = wi_list res_data['length'] = len(count_wi) res.update(code=ResponseCode.Success, data=res_data, msg=f"{len(count_wi)}获取成功") return res.data else: res.update(code=ResponseCode.Success, data={}, msg="数据获取异常") return res.data
def create_wxuser(): ''' 功能:登录或者注册一个新用户 参数:user { code: data.code, username: userResult.encryptedData, password: userResult.iv, grant_type: 'password', auth_approach: 'wxapp' } 返回格式:{'access_token': token, 'nickname': account['nickName'], 'openid': str(account['openId']), 'avatarUrl':account['avatarUrl']} ''' # 创建返回内容模板 res = ResMsg() user = request.get_json() if not user: code = ResponseCode.InvalidParameter res.update(code=code, data='没有收到微信小程序用户数据') return res.data is_validate, token = create_token(user, db) if not is_validate: code = ResponseCode.InvalidParameter res.update(code=code, data='用户认证环节出错') return res.data # user = User() # user.from_dict(data, new_user=True) # db.session.add(user) # db.session.commit() code = ResponseCode.Success # HTTP协议要求201响应包含一个值为新资源URL的Location头部 # response.headers['Location'] = url_for('api.cretae_wxuser', id=token["openid"]) return token
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_reward_setting(): """ 发放排行榜活动奖励 :return: json """ res = ResMsg() req = request.get_json(force=True) rank_id = req.get("id", '') bonus = req.get("bonus", '') member_id = req.get("member_id", '') invite_count = req.get("invite_count", '') rank_num = req.get("rank_num", '') activity_id = req.get("activity_id", '') avatar = req.get("avatar", '') update_dict = { "invite_count": invite_count, "bonus": int(bonus), "rank_num": rank_num, "activity_id": activity_id, "avatar": avatar, } update_dict_ready = helpers.rmnullkeys(update_dict) db.session.query(ActivityRewards).filter( ActivityRewards.id == rank_id).update(update_dict_ready) try: db.session.commit() 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
def handle_list_stat(): """ 活动数据统计列表接口 :return: json """ res = ResMsg() page_index = int(request.args.get("page", 1)) page_size = int(request.args.get("limit", 10)) name = request.args.get("act_name", '') act_id = 1 if name: the_act= db.session.execute(f"SELECT id FROM et_activity WHERE act_name='{name}'").first() if the_act: act_id= the_act[0] else: res.update(code=ResponseCode.Success, data={}, msg='活动数据统计数据为空or异常') return res.data p_i, p_num = (page_index-1) * page_size, page_size feedlist = db.session.execute(f"SELECT a.id,a.member_id,a.invite_count,a.activity_id,a.rank_num,a.avatar,a.bonus,a.pay_status,a.fake,m.avatar as avatar2,m.status,m.IIUV,m.realname,m.mobile,act.act_name,act.act_type,act.status as act_status FROM activity_rewards as a LEFT JOIN et_members as m on a.member_id =m.id LEFT JOIN et_activity as act on act.id=a.activity_id WHERE a.activity_id={act_id} ORDER BY a.rank_num ASC LIMIT {p_i},{p_num}").fetchall() counts = db.session.execute( "SELECT count(*) FROM activity_rewards").first() res_data= dict() if feedlist: res_data['list'] = [{key: value for (key, value) in row.items()} for row in feedlist] res_data['length'] = counts[0] 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_edituser(): """ 用户信息修改接口 :return: json """ res = ResMsg() req = request.get_json(force=True) memberid = req.get("id") status = req.get("status") username = req.get("username") update_dict = { "name": username, "status": status, } update_dict_ready = helpers.rmnullkeys( update_dict ) user = db.session.query(EtMember).filter(EtMember.id == memberid).first() if user: db.session.query(EtMember).filter(EtMember.id == memberid).update(update_dict_ready) try: db.session.commit() Redis.delete(user_center_key + str(user.id)) Redis.delete(user_info_key + str(user.mobile)) res.update(code=ResponseCode.Success, data={},msg='修改成功') 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_addappubs(): """ 新增发布APP信息 :return: json """ res = ResMsg() req = request.get_json(force=True) now_timestr = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) version = req.get("version", '1.0') osversion = req.get("osversion", 'android') update_status = int(req.get("update_status", 1)) down_url = req.get("down_url", 'XXXX') up_logs = req.get("up_logs", '') account_name = session.get("user_name") update_dict = { "version": version, "osversion": osversion, "update_status": update_status, "down_url": down_url, "up_logs": up_logs, "update_time": now_timestr, } update_dict_ready = helpers.rmnullkeys(update_dict) new_user = EtAppsPubHistory(**update_dict_ready) db.session.add(new_user) try: db.session.commit() res_data = dict() res.update(code=ResponseCode.Success, data=res_data, msg=f'新增APP成功') return res.data except Exception as why: res.update(code=ResponseCode.Success, data={}, msg=f'任务数据异常{why}') return res.data
def wrapper(*args, **kwargs): rv = f(*args, **kwargs) # 响应函数返回整数和浮点型 if isinstance(rv, (int, float)): res = ResMsg() res.update(data=rv) return jsonify(res.data) # 响应函数返回元组 elif isinstance(rv, tuple): # 判断是否为多个参数 if len(rv) >= 3: return jsonify(rv[0]), rv[1], rv[2] else: return jsonify(rv[0]), rv[1] # 响应函数返回字典 elif isinstance(rv, dict): return jsonify(rv) # 响应函数返回字节 elif isinstance(rv, bytes): rv = rv.decode('utf-8') return jsonify(rv) else: return jsonify(rv)
def login(): """登陆成功获取到数据获取token和刷新token""" res = ResMsg() obj = request.get_json(force=True) name = obj.get("name") if not all([obj, name, obj.get("password")]): res.update(code=ResponseCode.InvalidParameter) return res.data user_obj = User.query.filter(User.name == name).first() if user_obj and user_obj.password == obj.get("password"): access_token, refresh_token = Auth.encode_auth_token(user_id=name) data = { "access_token": access_token.decode("utf-8"), "refresh_token": refresh_token.decode("utf-8"), "user": model_to_dict(user_obj) } res.update(data=data) else: res.update(code=ResponseCode.AccountOrPassWordErr) return res.data
def register(): res = ResMsg() obj = request.get_json(force=True) if not obj or not all(key in obj for key in ("name", "email", "password")): res.update(code=ResponseCode.InvalidParameter) return res.data valid_email = EmailTool.check_email(obj.get("email")) if not valid_email: res.update(code=ResponseCode.InvalidEmail) return res.data uniq_name = User.query.filter(User.name == obj.get("name")).count() == 0 if not uniq_name: res.update(code=ResponseCode.RepeatUserName) return res.data user_obj = User(**obj) db.session.add(user_obj) db.session.commit() return res.data
def heandel_add_channel(): """ 渠道数据添加接口 :return: json """ res = ResMsg() req = request.get_json(force=True) ch_name = req.get("ch_name") if not ch_name: res.update(code=ResponseCode.Success, data={},msg="渠道名称不能为空") return res.data account_name = session.get("user_name") insert_sql = f"INSERT INTO et_channels (`ch_name`, `ch_type` `account`) VALUES ('{ch_name}', 1, '{account_name}');" db.session.execute(insert_sql) db.session.commit() res.update(code=ResponseCode.Success, data={},msg="列表数据添加成功") return res.data
def get_departments(): """ 返回部门合集,分页显示 --- tags: - 部门相关接口 description: 部门信息接口,json格式 parameters: - name: page in: path type: integer description: 第几页 - name: per_page in: path type: integer description: 每页多少个 - name: timestamp in: path type: string description: 部门创建时间升序(不写) 降序descending responses: 200: description: """ page = request.args.get('page', 1, type=int) timestamp = request.args.get('timestamp') per_page = min( request.args.get('per_page', current_app.config['DEPARTMENTS_PER_PAGE'], type=int), 100) query = Department.query if timestamp == 'descending': query = query.order_by(Department.timestamp.desc()) data = Department.to_collection_dict(query, page, per_page, \ 'api.get_departments',timestamp=timestamp) return ResMsg(data=data).data
def class_verify(): """ 销课 :return: """ res = ResMsg() obj = request.json student_ids = obj['studentIds'] hour = int(obj['hour']) remark = obj['remark'] class_id = obj['classId'] teacher_id = obj['teacherId'] n_class = db.session.query(Class).filter(Class.id == class_id).first() for id in student_ids: student = db.session.query(Student).filter(Student.id == id).first() if student.left_hour < hour: res.update(code=ResponseCode.Fail, msg='某学生剩余课时已不足以销课,请检查后再操作') break for id in student_ids: student = db.session.query(Student).filter(Student.id == id).first() student.used_hour += hour student.left_hour -= hour student.update_time = datetime.now() user = db.session.query(User).filter( User.name == session["user_name"]).first() try: add_log( 3, user.id, id, teacher_id, class_id, '在班级:' + n_class.class_name + ' 消耗课时:' + str(hour) + '课时,销课备注为:' + remark) db.session.add(student) db.session.commit() except: db.session.rollback() return res.data
def recover_password(): res = ResMsg() email = request.args.get("email") if not email: res.update(code=ResponseCode.InvalidParameter) return res.data user_obj = User.query.filter(User.email == email).first() if not user_obj: res.update(code=ResponseCode.NoResourceFound) return res.data subject = "客户管理系统(CMS)用户密码恢复" body = (f"用户{user_obj.name}:\n\n" f"您好!您的密码是:{user_obj.password}。\n\n" f"如果此用户密码恢复请求并非由您本人提出,请尽快联系管理员更改密码。谢谢!\n\n" f"祝好,\n客户管理系统(CMS)") result = EmailSender.send_email(user_obj.email, subject, body) if not result: res.update(code=ResponseCode.SendEmailFailed) return res.data return res.data
def get_articles_by_tag(): data = request.get_json() # page = request.args.get('page', 1, type=int) page = data['page'] name = data['tag'] per_page = min( request.args.get('per_page', current_app.config['POSTS_PER_PAGE'], type=int), 100) tag = Tag.query.filter_by(name=name).first() # Haowen.query.order_by(Haowen.timestamp.desc()).filter(Haowen.down==True) # haowen = Haowen.query.order_by(Haowen.top.desc(),Haowen.timestamp.desc()) if tag: data = Haowen.to_web_dict(tag.haowens, \ page, per_page,'api.get_articles_by_tag', name=name) ret = { "current_page": data["_meta"]["page"], "from": 1, "per_page": 6, "to": 6, "total": data["_meta"]["total_items"], "data": data["items"] } else: ret = { "current_page": 1, "from": 1, "per_page": 6, "to": 6, "total": 0, "data": [] } return ResMsg(data=ret).data
def handle_loginout(): """ 账号登出接口 :return: """ res = ResMsg() header_token = request.headers.get("xtoken") access_token = request.args.get("token",header_token) if not access_token: res.update(code=ResponseCode.InvalidParameter) return res.data payload = Auth.decode_auth_token(access_token) if not payload: res.update(code=ResponseCode.PleaseSignIn) return res.data if "user_id" not in payload: res.update(code=ResponseCode.PleaseSignIn) return res.data # @todo 移除accesstoken access_token = None data = {"access_token": None} res.update(code=ResponseCode.Success, data=data, msg='logout success!') return res.data
def get_user(id): """ 返回用户具体信息 --- tags: - 用户相关接口 description: 用户信息接口 parameters: - name: id in: path type: integer description: 用户id responses: 200: description: """ user = User.query.get_or_404(id) # if g.current_user == user: # return jsonify(user.to_dict(include_email=True)) # 如果是查询其它用户,添加 是否已关注过该用户 的标志位 data = user.to_dict() data["jwt"] = user.get_jwt() return ResMsg(data=data).data
def register(): """ 注册 :return: """ res = ResMsg() obj = request.get_json(force=True) user_name = obj.get("username") user_email = obj.get("email") if not obj or not user_name or not user_email: res.update(code=ResponseCode.InvalidParameter) return res.data email_qualify = EmailTool.check_email(user_email) if not email_qualify: res.update(code=ResponseCode.InvalidEmail) return res.data same_user_count = db.session.query(User).filter( User.username == user_name).count() if same_user_count != 0: res.update(code=ResponseCode.RepeatUserName) return res.data register_user = User(username=user_name, password=obj.get("password"), phone=obj.get("phone"), email=obj.get("email"), address=obj.get("address")) db.session.add(register_user) db.session.commit() user_json = model_to_dict(register_user) res.update(data=user_json) return res.data
def merrecharge(): """ 商户充值 :retrun: json """ res = ResMsg() req = request.get_json(force=True) money = req.get("money") user_id = req.get("id") account_name = session.get("user_name") # 使用乐观锁修改用户余额 user_sql = f"SELECT balance,balance_version FROM et_merchants WHERE id={user_id}" user = db.session.execute(user_sql).first() user_data = dict(user) # 生成20位随机字符串 salt = ''.join(random.sample(string.ascii_letters + string.digits, 20)) version_time = str(time.time()) + salt amount = money * 100 all_amount = user_data['balance'] + amount logging.error(user_data) try: add_sql = f"UPDATE et_merchants SET balance={all_amount}, balance_version='{version_time}' WHERE balance_version='{user_data['balance_version']}' and id={user_id}" db.session.execute(add_sql) db.session.commit() # 生成时间戳流水号 t = time.time() # 加入流水表 add_w_sql = f"INSERT INTO et_recharge_withdrawal (accounts_name, withdrawal_num, mer_id, balance) VALUE ('{account_name}', {int(t)}, {user_id}, {money})" db.session.execute(add_w_sql) db.session.commit() 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
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_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 test_tree(): """ 测试无限层级目录树 :return: """ res = ResMsg() data = [ { "id": 1, "father_id": None, "name": "01" }, { "id": 2, "father_id": 1, "name": "0101" }, { "id": 3, "father_id": 1, "name": "0102" }, { "id": 4, "father_id": 1, "name": "0103" }, { "id": 5, "father_id": 2, "name": "010101" }, { "id": 6, "father_id": 2, "name": "010102" }, { "id": 7, "father_id": 2, "name": "010103" }, { "id": 8, "father_id": 3, "name": "010201" }, { "id": 9, "father_id": 4, "name": "010301" }, { "id": 10, "father_id": 9, "name": "01030101" }, { "id": 11, "father_id": 9, "name": "01030102" }, ] new_tree = Tree(data=data) data = new_tree.build_tree() res.update(data=data) 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