def add_dataset(): req_json = request.get_json(force=True) res = ResMsg() result = es.index(index='news', doc_type='politics', body=req_json) res.update(data=result) return res.data
def log_list(): """ 获取日志列表 :return: """ current_app.logger.debug('aodifoads') res = ResMsg() obj = request.args n_user = db.session.query(User).all() n_teacher = db.session.query(Teacher).all() n_student = db.session.query(Student).all() n_class = db.session.query(Class).all() n_log = db.session.query(Log).filter(Log.student_id == obj['sid']).all() dataList = [] for log in n_log: logObj = log for user in n_user: if user.id == log.operator_id: logObj.operator_name = user.nick_name for teacher in n_teacher: if teacher.id == log.teacher_id: logObj.teacher_name = teacher.name for student in n_student: if student.id == log.student_id: logObj.student_name = student.name for cls in n_class: if cls.id == log.class_id: logObj.class_name = cls.class_name dataList.append(logObj) data = {dataList: dataList} res.update(data=data) return res.data
def add_customer(): """ 添加客户 :return: """ res = ResMsg() try: customer = request.get_json(force=True) user_name = session["user_name"] user = db.session.query(User).filter( User.username == user_name).first() if not customer or not user: res.update(code=ResponseCode.InvalidParameter) return res.data customer_count = db.session.query(Customer).filter( Customer.name == customer.get("name")).count() if customer_count != 0: res.update(code=ResponseCode.RepeatUserName) return res.data customer_obj = Customer() customer_obj.name = customer.get("name") customer_obj.email = customer.get("email") customer_obj.users.append(user) db.session.add(customer_obj) db.session.commit() res.update(data=model_to_dict(customer_obj)) except Exception as ex: logging.error(ex) res.update(code=ResponseCode.Fail) return res.data
def edit_order(id): ''' 功能: 小程序订单状态修改 参数: <int:id> 订单的id { "status": "状态", // complete, checking "result": "生成文件的地址" //绝对路径 } 返回格式: { "status": "complete", // 已完成 "company": '上海思华科技股份有限公司', "create": "2000-08-15 00:00:00.0", "complete": "2000-08-15 00:00:00.0", "id": 234, "price": 39.9, "code": "sdasdasdsadsadsadasd" // 订单号, } ''' data = request.get_json() if not data: code = ResponseCode.InvalidParameter data = 'You must post JSON data.' return ResMsg(code=code, data=data).data order = Order.query.get_or_404(id) order.from_dict(data) db.session.commit() # 制作返回内容 return ResMsg(data=data).data
def test_refresh_token(): """ 刷新token,获取新的数据获取token :return: """ res = ResMsg() refresh_token = request.args.get("refresh_token") if not refresh_token: res.update(code=ResponseCode.InvalidParameter) return res.data payload = Auth.decode_auth_token(refresh_token) # token被串改或过期 if not payload: res.update(code=ResponseCode.PleaseSignIn) return res.data # 判断token正确性 if "user_id" not in payload: res.update(code=ResponseCode.PleaseSignIn) return res.data # 获取新的token access_token = Auth.generate_access_token(user_id=payload["user_id"]) data = { "access_token": access_token.decode("utf-8"), "refresh_token": refresh_token } res.update(data=data) return res.data
def send_order(): ''' 功能: 小程序下单 参数: { "status": "complete", // 已完成 "company": '上海思华科技股份有限公司', "price": 39.9, } 返回格式: { "status": "complete", // 已完成 "company": '上海思华科技股份有限公司', "create": "2000-08-15 00:00:00.0", "id": 234, "price": 39.9, "code": "sdasdasdsadsadsadasd" // 订单号, } ''' data = request.get_json() if not data: code = ResponseCode.InvalidParameter data = 'You must post JSON data.' return ResMsg(code=code, data=data).data order = Order() data["wxuser_openid"] = g.current_user.to_dict()["openid"] data["code"] = get_order_code() order.from_dict(data) db.session.add(order) db.session.commit() # 制作返回内容 return ResMsg(data=data).data
def handle_stats_dashborad(): """ 基本业务统计 今日新用户 et_members 今日任务提交 et_task_orders 今日分销数 et_member_drps 今日提现 et_member_withdrawal DAU -7days :return: json """ res = ResMsg() id = request.args.get("id", 1) member_sql = 'select count(id) as num from et_members where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(reg_time);' task_orders_sql = 'select count(id) as num from et_task_orders where status>1 and DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(add_time);' member_drps_sql = 'select count(id) as num from et_member_drps where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(add_time);' member_wd_sql = 'select count(id) as num from et_member_withdrawal where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(start_time);' new_mems = db.session.execute(member_sql).first() new_task_orders = db.session.execute(task_orders_sql).first() member_drps = db.session.execute(member_drps_sql).first() member_wds = db.session.execute(member_wd_sql).first() res_data = dict() stats = {} stats['m'] = new_mems[0] stats['o'] = new_task_orders[0] stats['d'] = member_drps[0] stats['w'] = member_wds[0] res_data['infos'] = stats res.update(code=ResponseCode.Success, data=res_data, msg=f'获取成功') return res.data
def course_list(): """ 获取课程列表 :return: """ res = ResMsg() obj = request.args stu_cls = db.session.query(StuCls).filter(StuCls.student_id == obj['sid']).all() classid_arr = [] for sc in stu_cls: classid_arr.append(sc.class_id) cls_wd = db.session.query(ClsWd).filter(ClsWd.class_id.in_(classid_arr)).all() n_class = db.session.query(Class).filter(Class.id.in_(classid_arr)).all() weekSet = set([]) for sw in cls_wd: weekSet.add(sw.weekday) course_list = {} for wd in weekSet: week_cls = [] # 获取每周几的班级id列表 for clswd in cls_wd: if clswd.weekday == wd: week_cls.append(clswd.class_id) cls_arr = [] for wc in week_cls: for nc in n_class: if wc == nc.id: cls_arr.append(nc) course_list[wd] = cls_arr res.update(data = { 'course_list': course_list }) 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 get_incomes(): res = ResMsg() client_id = request.args.get("id") if not client_id: res.update(ResponseCode.InvalidParameter) return res.data client_obj = Client.query.filter(Client.id == client_id).first() if not client_obj: res.update(code=ResponseCode.NoResourceFound) return res.data user_obj = User.query.filter(User.name == session["user_name"]).first() if user_obj not in client_obj.users: res.update(code=ResponseCode.AccessNotAuthorized) return res.data incomes_obj = Income.query.filter(Income.client_id == client_id).order_by( Income.date) income_json = model_to_dict(incomes_obj) res.update(data={ key: [pair[key] for pair in income_json] for key in ('date', 'value') }) return res.data
def email_client(): res = ResMsg() user_name = session["user_name"] client_id = request.form.get("id") if not user_name or not client_id: res.update(code=ResponseCode.InvalidParameter) return res.data user_obj = User.query.filter(User.name == user_name).first() client_obj = Client.query.filter(Client.id == client_id).first() if not client_obj: res.update(code=ResponseCode.NoResourceFound) return res.data if user_obj not in client_obj.users: res.update(code=ResponseCode.AccessNotAuthorized) return res.data subject = request.form.get("subject", "") body = request.form.get("body", "") file = request.files.get('file', None) logger.info(type(file)) if file: result = EmailSender.send_email(client_obj.email, subject, body, file.stream.read(), file.filename) else: result = EmailSender.send_email(client_obj.email, subject, body) if not result: res.update(code=ResponseCode.SendEmailFailed) return res.data
def test_phone_login_or_register(): """ 用户验证码登录或注册 :return: """ res = ResMsg() obj = request.get_json(force=True) phone = obj.get('account', None) code = obj.get('code', None) if phone is None or code is None: res.update(code=ResponseCode.InvalidParameter) return res.data # 验证手机号和验证码是否正确 flag = PhoneTool.check_phone_code(phone, code) if not flag: res.update(code=ResponseCode.InvalidOrExpired) return res.data # 登陆或注册 data = phone_login_or_register(phone) if data is None: res.update(code=ResponseCode.Fail) return res.data res.update(data=data) return res.data
def get_clients(): res = ResMsg() name = session["user_name"] user_obj = User.query.filter(User.name == name).first() res.update(data=model_to_dict(user_obj.clients)) return res.data
def test_get_verification_code(): """ 获取手机验证码 :return: """ now = datetime.now() res = ResMsg() category = request.args.get("category", None) # category 参数如下: # authentication: 身份验证 # login_confirmation: 登陆验证 # login_exception: 登陆异常 # user_registration: 用户注册 # change_password: 修改密码 # information_change: 信息修改 phone = request.args.get('phone', None) # 验证手机号码正确性 re_phone = PhoneTool.check_phone(phone) if phone is None or re_phone is None: res.update(code=ResponseCode.MobileNumberError) return res.data if category is None: res.update(code=ResponseCode.InvalidParameter) return res.data try: # 获取手机验证码设置时间 flag = Redis.hget(re_phone, 'expire_time') if flag is not None: flag = datetime.strptime(flag, '%Y-%m-%d %H:%M:%S') # 判断是否重复操作 if (flag - now).total_seconds() < 60: res.update(code=ResponseCode.FrequentOperation) return res.data # 获取随机验证码 code = "".join([str(random.randint(0, 9)) for _ in range(6)]) template_param = {"code": code} # 发送验证码 sms = SendSms(phone=re_phone, category=category, template_param=template_param) sms.send_sms() # 将验证码存入redis,方便接下来的验证 Redis.hset(re_phone, "code", code) # 设置重复操作屏障 Redis.hset(re_phone, "expire_time", (now + timedelta(minutes=1)).strftime('%Y-%m-%d %H:%M:%S')) # 设置验证码过去时间 Redis.expire(re_phone, 60 * 3) return res.data except Exception as e: logger.exception(e) res.update(code=ResponseCode.Fail) return res.data
def test_unified_response(): """ 测试统一返回消息 :return: """ res = ResMsg() test_dict = dict(name="zhang", age=18) res.update(code=ResponseCode.Success, data=test_dict) return jsonify(res.data)
def test_get_data(): """ 测试登陆保护下获取数据 :return: """ res = ResMsg() name = session.get("user_name") data = "{},你好!!".format(name) res.update(data=data) return res.data
def get_info(): res = ResMsg() name = session["user_name"] user_obj = User.query.filter(User.name == name).first() user_json = model_to_dict(user_obj) user_json['n_clients'] = len(user_obj.clients) res.update(data=user_json) return res.data
def delete_dataset(): req_json = request.get_json(force=True) id = req_json.get("id") if not id: res.update(code=ResponseCode.InvalidParameter) return res.data res = ResMsg() result = es.delete(index='news', doc_type='politics', id=id) res.update(data=result) return res.data
def user_info(): """ 获取用户信息 :return: """ res = ResMsg() name = session.get("user_name") current_app.logger.debug(session) data = {"name": name, "nick_name": session.get("user_nickname")} res.update(data=data) return res.data
def test_get_captcha(): """ 获取图形验证码 :return: """ res = ResMsg() new_captcha = CaptchaTool() img, code = new_captcha.get_verify_code() res.update(data=img) session["code"] = code return res.data
def get_qrcode(): res = ResMsg() # 创建flag wechat_flag = create_flag() # 创建微信带参二维码 # 创建一天有效期的二维码, 参数使用字符串而不是数字id res_qrcode = make_qrcode(client, scene_str=wechat_flag) # 创建二维码地址 url = client.qrcode.get_url(res_qrcode['ticket']) res.update(data=dict(qrcode_url=url, wechat_flag=wechat_flag)) return res.data
def create_user(): """ 用户注册 --- tags: - 用户相关接口 description: 用户注册接口,json格式 parameters: - name: body description: 用户注册接口的body数据 in: body type: object required: true schema: id: 用户 required: - username - password properties: username: type: string description: 用户账号. name: type: string description: 用户名字. password: type: string description: 密码. email: type: string description: 邮箱. remark: type: string description: 备注. department_id: type: integer description: 部门id. responses: 200: description: """ data = request.get_json() if not data: code = ResponseCode.InvalidParameter return ResMsg(code=code, data='You must post JSON data.').data user = User() user.from_dict(data, new_user=True) db.session.add(user) db.session.commit() return ResMsg(data='用户创建成功').data
def test_packed_response(): """ 测试响应封装 :return: """ res = ResMsg() test_dict = dict(name="zhang", age=18) # 此处只需要填入响应状态码,即可获取到对应的响应消息 res.update(code=ResponseCode.Success, data=test_dict) # 此处不再需要用jsonify,如果需要定制返回头或者http响应如下所示 # return res.data,200,{"token":"111"} return res.data
def update_department(id): """ 更新某个部门 --- tags: - 部门相关接口 description: 部门信息接口 parameters: - name: id in: path type: integer description: 用户id - name: body description: 部门的数据格式 in: body type: string required: true schema: id: 部门 required: - name - describe - members - active - permissions properties: name: type: string description: 部门名称. describe: type: string description: 部门描述. permissions: type: string description: 权限设置. active: type: boolean description: 是否启用. responses: 200: description: """ department = Department.query.get_or_404(id) data = request.get_json() if not data: code = ResponseCode.InvalidParameter return ResMsg(code=code, data='You must post JSON data.').data department.from_dict(data) db.session.commit() return ResMsg(data=department.to_dict()).data
def test_pdf(): """ 测试pdf报表输出 :return: """ res = ResMsg() report_path = current_app.config.get("REPORT_PATH", "./report") file_name = "{}.pdf".format(uuid.uuid4().hex) path = os.path.join(report_path, file_name) path = pdf_write(path) path = path.lstrip(".") res.update(data=path) return res.data
def delete_tags(): '''删除一个tag''' id = request.get_json()["id"] tag = Tag.query.get_or_404(id) # db.session.delete(haowen) if tag.haowens.all(): code = ResponseCode.TagHasArticles data = 'Tag 还有相关文章!' return ResMsg(code=code, data=data).data tag.delete_tag = 1 db.session.commit() return ResMsg(message='Tag删除成功!').data
def get_all_customers(): res = ResMsg() customers = db.session.query(Customer).filter().all() customers_json = [] for customer in customers: incomes_dic = model_to_dict(customer.incomes) customer_dic = model_to_dict(customer) customer_dic["incomes"] = incomes_dic customers_json.append(customer_dic) res.update(data=customers_json) return res.data
def student_list(): """ 获取学员列表 :return: """ res = ResMsg() # obj = request.get_json(force=True) obj = request.args name = obj.get("name") or None phone = obj.get("phone") or None type = obj.get("type") or None page_index = int(obj.get("page")) page_size = int(obj.get("count")) filters = { or_(Student.name == name, name == None), or_(Student.phone == phone, phone == None), or_(Student.type == type, type == None), } # current_app.logger.debug(db.session.query(Student).filter(*filters).order_by(Student.id).limit(page_size).offset((page_index-1)*page_size)) db_student = db.session.query(Student).filter(*filters).order_by(Student.id).limit(page_size).offset((page_index-1)*page_size).all() total_count = db.session.query(Student).filter(*filters).count() all_class = db.session.query(Class).all() student_list = [] for stu in db_student: class_id = [] n_stu_cls = db.session.query(StuCls).filter(StuCls.student_id == stu.id).all() for nstu in n_stu_cls: for cla in all_class: if nstu.class_id == cla.id: class_id.append(cla) student_list.append({ 'id': stu.id, 'name': stu.name, 'type': stu.type, 'phone': stu.phone, 'birthday': stu.birthday, 'age': stu.age, 'class_id': class_id, 'used_hour': stu.used_hour, 'left_hour': stu.left_hour, 'remark': stu.remark }) data = { "students": student_list, "page": page_index, "count": page_size, "total": total_count } res.update(data=data) return res.data
def user_login(): """ 登陆成功获取到数据获取token和刷新token :return: """ res = ResMsg() obj = request.get_json(force=True) user_name = obj.get("username") user_password = obj.get("password") db_user = db.session.query(User).filter(User.name == user_name).first() # 未获取到参数或参数不存在 if not obj or not user_name or not user_password or not db_user: res.update(code=ResponseCode.InvalidParameter) return res.data if user_name == db_user.name and user_password == db_user.password: # 生成数据获取token和刷新token access_token, refresh_token = Auth.encode_auth_token(user_id=user_name) data = { "access_token": access_token.decode("utf-8"), # "refresh_token": refresh_token.decode("utf-8") } res.update(data=data) return res.data else: res.update(code=ResponseCode.AccountOrPassWordErr) return res.data
def test_login(): """ 登陆成功获取到数据获取token和刷新token :return: """ res = ResMsg() obj = request.get_json(force=True) user_name = obj.get("name") # 未获取到参数或参数不存在 if not obj or not user_name: res.update(code=ResponseCode.InvalidParameter) return res.data if user_name == "qin": # 生成数据获取token和刷新token access_token, refresh_token = Auth.encode_auth_token(user_id=user_name) data = { "access_token": access_token.decode("utf-8"), "refresh_token": refresh_token.decode("utf-8") } res.update(data=data) return res.data else: res.update(code=ResponseCode.AccountOrPassWordErr) return res.data