コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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
コード例 #4
0
ファイル: oem_service.py プロジェクト: FreeGodCode/easytask
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
コード例 #5
0
ファイル: oem_service.py プロジェクト: FreeGodCode/easytask
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
コード例 #6
0
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
コード例 #7
0
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
コード例 #8
0
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
コード例 #9
0
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
コード例 #10
0
ファイル: task_service.py プロジェクト: FreeGodCode/easytask
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
コード例 #11
0
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
コード例 #12
0
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
コード例 #13
0
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
コード例 #14
0
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
コード例 #15
0
ファイル: util.py プロジェクト: huanbia/flask-resful-example
 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)
コード例 #16
0
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
コード例 #17
0
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
コード例 #18
0
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
コード例 #19
0
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
コード例 #20
0
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
コード例 #21
0
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
コード例 #22
0
ファイル: article.py プロジェクト: etscript/vue-flask
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
コード例 #23
0
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
コード例 #24
0
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
コード例 #25
0
ファイル: user.py プロジェクト: KunyuHe/flask-antd-ui
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
コード例 #26
0
ファイル: oem_service.py プロジェクト: FreeGodCode/easytask
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
コード例 #27
0
ファイル: task_service.py プロジェクト: FreeGodCode/easytask
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
コード例 #28
0
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
コード例 #29
0
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
コード例 #30
0
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