コード例 #1
0
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
コード例 #2
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
コード例 #3
0
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
コード例 #4
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
コード例 #5
0
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
コード例 #6
0
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
コード例 #7
0
ファイル: oem_service.py プロジェクト: FreeGodCode/easytask
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
コード例 #8
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
コード例 #9
0
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
コード例 #10
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
コード例 #11
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
コード例 #12
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
コード例 #13
0
ファイル: task_service.py プロジェクト: FreeGodCode/easytask
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}')
コード例 #14
0
ファイル: task_service.py プロジェクト: FreeGodCode/easytask
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