Exemple #1
0
def get_ent_info(user_id, appid=None):
    print('---------# 获取用户 企业的 appid等信息-------------> ', user_id)
    if appid:
        ent_obj = models.Enterprise.objects.get(appid=appid)
        name = ''
        set_avator = ''
        openid = ''

    else:
        if not user_id:
            user_id = 1
        user_obj = models.Userprofile.objects.get(id=user_id)
        name = b64decode(user_obj.name)
        set_avator = user_obj.set_avator
        openid = user_obj.openid
        ent_obj = models.Enterprise.objects.get(id=user_obj.enterprise_id)

    data = {
        'id': ent_obj.id,
        'APPID': ent_obj.appid,
        'APPSECRET': ent_obj.appsecret,
        'access_token': ent_obj.access_token,
        'create_datetime': ent_obj.create_datetime,
        'user_name': name,
        'user_set_avator': set_avator,
        'openid': openid,
    }
    return data
Exemple #2
0
def wechat_login(request):
    response = Response.ResponseObj()
    if request.method == "POST":
        login_timestamp = request.POST.get('login_timestamp')
        objs = models.UserProfile.objects.filter(
            login_timestamp=login_timestamp)
        if objs:
            obj = objs[0]
            inviter = 0
            if obj.inviter:
                inviter = 1
            response.code = 200
            role_obj = models.Role.objects.filter(id=obj.role_id)
            data_list = []
            for i in role_obj[0].permissions.all():
                data_list.append(i.name)

            response.data = {
                'token': obj.token,
                'id': obj.id,
                'role_id': obj.role_id,
                'number_child_users': obj.number_child_users,
                'small_program_number': obj.small_program_number,
                'role_name': obj.role.name,
                'name': base64_encryption.b64decode(obj.name),
                'head_portrait': obj.head_portrait,
                'permissions_list': data_list,
                'inviter': inviter
            }
            obj.last_login_datetime = datetime.datetime.now()
            obj.save()
    else:
        response.code = 402
        response.msg = "请求异常"
    return JsonResponse(response.__dict__)
def goods_classify(request):
    response = Response.ResponseObj()
    user_id = request.GET.get('user_id')
    if request.method == "GET":
        forms_obj = SelectForm(request.GET)
        if forms_obj.is_valid():
            current_page = forms_obj.cleaned_data['current_page']
            length = forms_obj.cleaned_data['length']
            order = request.GET.get('order', '-create_datetime')
            field_dict = {}
            q = conditionCom(request, field_dict)
            objs = models.GoodsClassify.objects.filter(
                q, oper_user_id=user_id).order_by(order)

            if length != 0:
                start_line = (current_page - 1) * length
                stop_line = start_line + length
                objs = objs[start_line:stop_line]
            data_count = objs.count()

            data_list = []
            for obj in objs:
                is_good = False
                if obj.goods_set.all():
                    is_good = True
                data_list.append({
                    'id':
                    obj.id,
                    'goods_classify':
                    obj.goods_classify,
                    'oper_user_id':
                    obj.oper_user_id,
                    'oper_user':
                    b64decode(obj.oper_user.name),
                    'create_datetime':
                    obj.create_datetime.strftime('%Y-%m-%d %H:%M:%S'),
                    'is_good':
                    is_good,
                })

            response.code = 200
            response.msg = '查询成功'
            response.data = {
                'ret_data': data_list,
                'count': data_count,
            }
            response.note = {
                'id': '商品分类ID',
                'goods_classify': '商品分类名称',
                'is_good': '该分类中是否有商品',
                'create_datetime': '该商品分类创建时间',
            }
        else:
            response.code = 301
            response.msg = json.loads(forms_obj.errors.as_json())
    else:
        response.code = 402
        response.msg = "请求异常"
    return JsonResponse(response.__dict__)
Exemple #4
0
def summary_message_reminder_celery(request):
    response = Response.ResponseObj()
    try:
        user_objs = models.Userprofile.objects.exclude(
            message_remind=4
        )
        for user_obj in user_objs:
            if is_send_msg(user_obj.id): # 如果此用户可以发送 消息
                objs = models.summary_message_reminder.objects.select_related('user').filter(
                    is_send=0,
                    user_id=user_obj.id,
                )

                title_str = ''
                for obj in objs:
                    title_str += '《{}》--{}查看{}次\n'.format(
                        obj.title,
                        b64decode(obj.customer.name),
                        obj.select_num
                    )
                    obj.is_send = 1
                    obj.save()

                if title_str: # 如果有文字发送

                    # 区分普通用户和 会员用户 会员用户发送查看人名称
                    if user_obj.overdue_date >= datetime.date.today():
                        msg = '有人看了您多篇文章\n\n{}\n查看点击下方【天眼】\n{}'.format(title_str, xiajiantou)  # 充值用户显示所有文章标题
                    else:
                        msg = '有人看了您多篇文章\n\n赶快点击下方【天眼】查看\n{}'.format(xiajiantou) # 未充值

                    user_info = get_ent_info(user_obj.id)
                    weixin_objs = WeChatApi(user_info)
                    post_data = {
                        "touser": user_info.get('openid'),
                        "msgtype": "text",
                        "text": {
                            "content": msg
                        }
                    }

                    # 发送客服消息
                    post_data = bytes(json.dumps(post_data, ensure_ascii=False), encoding='utf-8')
                    weixin_objs.news_service(post_data)
                    user_obj.last_message_remind_time = datetime.datetime.now()
                    user_obj.save()

                    response.code = 200
            else:
                continue
    except Exception as e:
        msg = '警告:{}, \n错误:{}, \n时间:{}'.format(
            'celery_汇总消息 发送---警告',
            e,
            datetime.datetime.today()
        )
        celery_error_warning(msg)
    return JsonResponse(response.__dict__)
def my_business_card(request):
    response = Response.ResponseObj()
    user_id = request.GET.get('user_id')

    if request.method == "GET":
        obj = models.Userprofile.objects.get(id=user_id)
        name = b64decode(obj.name)
        if not obj.introduction:
            introduction = '我是{}, 热烈欢迎来到我的名片'.format(name)
        else:
            introduction = obj.introduction

        article_list = []
        article_objs = models.Article.objects.filter(create_user_id=user_id).order_by('-create_datetime')
        article_count = article_objs.count()
        if article_count > 3:
            article_objs = article_objs[: 3]
        for article_obj in article_objs:
            article_list.append({
                'article_id': article_obj.id,
                'title': article_obj.title,
                'cover_img': article_obj.cover_img + '?imageView2/2/w/200',
            })


        goods_list = []
        goods_objs = models.Goods.objects.filter(goods_classify__oper_user_id=user_id).order_by('-create_datetime')
        goods_objs_count = goods_objs.count()
        if goods_objs_count > 3:
            goods_objs = goods_objs[:3]
        for goods_obj in goods_objs:
            goods_list.append({
                'goods_id': goods_obj.id,
                'cover_img': goods_obj.cover_img + '?imageView2/2/w/200',
                'goods_name': goods_obj.goods_name,
                'price': goods_obj.price,
            })


        data_list = {
            'user_id': obj.id,
            'introduction':introduction,
            'user_name': name,
            'set_avator': obj.set_avator + '?imageView2/2/w/100',
            'article_list': article_list,
            'goods_list': goods_list,
        }

        response.code = 200
        response.msg = '查询成功'
        response.data = data_list

    else:
        response.code = 402
        response.msg = "请求异常"
    return JsonResponse(response.__dict__)
def purchase_membership(objs):
    renewal_list = []
    for obj in objs:
        renewal_list.append({
            'consumption_type':
            '充值会员',
            'consumer_user':
            b64decode(obj.create_user.name),
            'create_date':
            obj.create_date.strftime('%Y-%m-%d %H:%M:%S'),
            'price':
            obj.price,
            'order_number':
            obj.pay_order_no
        })
    return renewal_list
def withdrawal(objs):
    withdrawal_amount_list = []
    for obj in objs:
        withdrawal_amount_list.append({
            'consumption_type':
            '提现',
            'consumer_user':
            b64decode(obj.user.name),
            'create_date':
            obj.create_date.strftime('%Y-%m-%d %H:%M:%S'),
            'price':
            obj.withdrawal_amount,
            'order_number':
            obj.dingdanhao
        })
    return withdrawal_amount_list
Exemple #8
0
def user_oper(request, oper_type, o_id):
    response = Response.ResponseObj()
    user_id = request.GET.get('user_id')
    if request.method == "POST":

        # 修改用户角色    (即将废弃,被update取代)
        if oper_type == 'update_role':
            form_data = {
                'role_id': request.POST.get('role_id'),
                'user_id': user_id,
                'o_id': o_id
            }

            form_obj = UpdateRoleForm(form_data)
            if form_obj.is_valid():
                role_id = form_obj.cleaned_data.get('role_id')
                o_id = form_obj.cleaned_data.get('o_id')
                models.UserProfile.objects.filter(id=o_id).update(
                    role_id=role_id)
                response.code = 200
                response.msg = '修改成功'

            else:
                response.code = 301
                response.msg = json.loads(form_obj.errors.as_json())

        elif oper_type == "update":
            # 获取需要修改的信息
            form_data = {
                'o_id': o_id,
                'role_id': request.POST.get('role_id'),  # 角色id
                'company_name': request.POST.get('company_name'),  # 公司名称
                'remark': request.POST.get('remark'),  # 备注信息
                'small_program_number':
                request.POST.get('small_program_number'),  # 小程序数量
                'number_child_users':
                request.POST.get('number_child_users'),  # 子账号数量
            }

            forms_obj = UpdateForm(form_data)
            if forms_obj.is_valid():
                o_id = forms_obj.cleaned_data['o_id']
                role_id = forms_obj.cleaned_data['role_id']  # 角色id
                company_name = forms_obj.cleaned_data['company_name']  # 公司名称
                remark = forms_obj.cleaned_data['remark']  # 备注信息
                small_program_number = forms_obj.cleaned_data[
                    'small_program_number']  # 小程序数量
                number_child_users = forms_obj.cleaned_data[
                    'number_child_users']  # 子账号数量
                #  查询数据库  用户id
                objs = models.UserProfile.objects.filter(id=o_id)
                #  更新 数据
                if objs:
                    objs.update(
                        role_id=role_id,
                        company_name=company_name,
                        remark=remark,
                        small_program_number=small_program_number,
                        number_child_users=number_child_users,
                    )

                    response.code = 200
                    response.msg = "修改成功"
                else:
                    response.code = 303
                    response.msg = '不存在的数据'

            else:
                response.code = 301
                response.msg = json.loads(forms_obj.errors.as_json())

        # 转接 用户所有信息
        elif oper_type == 'transfer_all_user_information':
            cancel_transfer = request.POST.get('cancel_transfer')  # 拒绝交接
            form_data = {
                'user_id': user_id,
                'o_id': o_id,
                # 'transfer_template_id': request.POST.get('transfer_template_id'),
            }
            transfer_objs = models.Transfer.objects.filter(
                speak_to_people_id=user_id,
                by_connecting_people_id=o_id,
                whether_transfer_successful=2).order_by('-create_datetime')
            if transfer_objs:
                transfer_obj = transfer_objs[0]
                if cancel_transfer:
                    transfer_obj.whether_transfer_successful = 5
                    code = 200
                    msg = '已拒绝交接'

                else:
                    form_obj = TransferAllUserInformation(form_data)
                    if form_obj.is_valid():
                        o_id = form_obj.cleaned_data.get('o_id')
                        user_id = form_obj.cleaned_data.get('user_id')

                        applet_objs = models.ClientApplet.objects.filter(
                            user_id=user_id)  # 小程序
                        models.CustomerOfficialNumber.objects.filter(
                            user_id=user_id).update(user_id=o_id)  # 小程序版本
                        applet_objs.update(user_id=o_id)

                        models.TemplateClass.objects.filter(
                            create_user_id=user_id).update(
                                create_user_id=o_id)  # 模板分类表
                        models.Template.objects.filter(
                            create_user_id=user_id).update(
                                create_user_id=o_id)  # 模板表

                        models.PhotoLibraryGroup.objects.filter(
                            create_user_id=user_id).update(
                                create_user_id=o_id)  # 图片分类
                        models.PhotoLibrary.objects.filter(
                            create_user_id=user_id).update(
                                create_user_id=o_id)  # 图片

                        models.PageGroup.objects.filter(
                            create_user_id=user_id).update(
                                create_user_id=o_id)  # 页面分组表
                        models.Page.objects.filter(
                            create_user_id=user_id).update(
                                create_user_id=o_id)  # 页面表

                        models.CompomentLibraryClass.objects.filter(
                            create_user_id=user_id).update(
                                create_user_id=o_id)  # 组件库分类
                        models.CompomentLibrary.objects.filter(
                            create_user_id=user_id).update(
                                create_user_id=o_id)  # 组件库

                        code = 200
                        msg = '转接成功'
                        transfer_obj.whether_transfer_successful = 4

                    else:
                        code = 301
                        msg = json.loads(form_obj.errors.as_json())
                transfer_obj.save()
            else:
                code = 301
                msg = '已过期, 请重新获取二维码'
            response.code = code
            response.msg = msg

        # 是否接受 团队邀请
        elif oper_type == 'accept_team_invitationss':
            new_user_id = request.POST.get('new_user_id')  # 受邀请人ID
            parent_id = request.POST.get('parent_id')  # 父级用户ID
            timestamp = request.POST.get('time_stamp')  # 时间戳
            refused_invite = request.POST.get('refused_invite')  # 拒绝邀请

            objs = models.InviteTheChild.objects.filter(
                parent_id=parent_id, child_id=new_user_id,
                timestamp=timestamp).order_by('-create_datetime')
            obj = objs[0]
            if objs:
                if refused_invite:
                    obj.whether_transfer_successful = 5  # 拒绝
                    msg = '已拒绝'

                else:
                    user_is_exists = request.POST.get(
                        'user_is_exists')  # 是否已有用户 如果有 则删除所有数据

                    models.UserProfile.objects.filter(id=new_user_id).update(
                        inviter_id=parent_id)

                    if user_is_exists:  # 删除所有数据
                        models.CustomerOfficialNumber.objects.filter(
                            user_id=new_user_id).delete()
                        models.ClientApplet.objects.filter(
                            user_id=new_user_id).delete()
                        models.PhotoLibrary.objects.filter(
                            create_user_id=new_user_id).delete()
                        models.PhotoLibraryGroup.objects.filter(
                            create_user_id=new_user_id).delete()
                        models.Page.objects.filter(
                            create_user_id=new_user_id).delete()
                        models.PageGroup.objects.filter(
                            create_user_id=new_user_id).delete()
                        models.Template.objects.filter(
                            create_user_id=new_user_id).delete()
                        models.TemplateClass.objects.filter(
                            create_user_id=new_user_id).delete()
                        models.CompomentLibrary.objects.filter(
                            create_user_id=new_user_id).delete()
                        models.CompomentLibraryClass.objects.filter(
                            create_user_id=new_user_id).delete()
                    msg = '已接受'
                    obj.whether_transfer_successful = 4

                obj.save()
                code = 200
            else:
                code = 301
                msg = '已过期, 请重新扫描二维码'

            response.code = code
            response.msg = msg

        # 删除团队成员
        elif oper_type == 'delete_team_members':
            form_data = {'o_id': o_id, 'user_id': user_id}
            form_obj = DeleteTeamMembers(form_data)
            if form_obj.is_valid():
                user_id = form_obj.cleaned_data.get('user_id')
                o_id = form_obj.cleaned_data.get('o_id')

                models.UserProfile.objects.filter(id=o_id).update(
                    inviter_id=None)
                response.code = 200
                response.msg = '删除成功'

            else:
                response.code = 301
                response.msg = json.loads(form_obj.errors.as_json())

        # 修改企业名称
        elif oper_type == 'modify_enterprise_name':
            template_id = request.POST.get('template_id')
            enterprise_name = request.POST.get('enterprise_name')
            models.Template.objects.filter(id=template_id).update(
                enterprise_name=enterprise_name)
            response.code = 200
            response.msg = '修改成功'

    else:

        # 获取团队成员
        if oper_type == 'acquire_team_members':
            forms_obj = SelectForm(request.GET)
            if forms_obj.is_valid():
                current_page = forms_obj.cleaned_data['current_page']
                length = forms_obj.cleaned_data['length']
                order = request.GET.get('order', '-create_datetime')
                field_dict = {
                    'id': '',
                    'name': '__contains',
                }

                q = conditionCom(request, field_dict)
                objs = models.UserProfile.objects.filter(
                    q, inviter_id=user_id).order_by(order)
                count = objs.count()

                if length != 0:
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    objs = objs[start_line:stop_line]

                ret_data = []
                for obj in objs:
                    ret_data.append({
                        'id':
                        obj.id,
                        'name':
                        base64_encryption.b64decode(obj.name),
                        'role_id':
                        obj.role_id,
                        'role_name':
                        obj.role.name,
                        'head_portrait':
                        obj.head_portrait,
                        'sex_id':
                        obj.sex,
                        'sex':
                        obj.get_sex_display(),
                        'create_datetime':
                        obj.create_datetime.strftime('%Y-%m-%d %H:%M:%S'),
                    })

                #  查询成功 返回200 状态码
                response.code = 200
                response.msg = '查询成功'
                response.data = {
                    'ret_data': ret_data,
                    'data_count': count,
                }

            else:
                response.code = 301
                response.msg = json.loads(forms_obj.errors.as_json())

        else:
            response.code = 402
            response.msg = '请求异常'

    return JsonResponse(response.__dict__)
def weixin_pay(request, oper_type, o_id):
    response = Response.ResponseObj()
    weixin_pay_api_obj = weixin_pay_api()  # 实例 公共函数
    user_id = request.GET.get('user_id')

    if request.method == 'POST':
        # 预支付
        if oper_type == 'yuZhiFu':
            pay_type = request.GET.get('pay_type')  # 支付方式 余额支付/微信支付
            try:
                fee_objs = models.renewal_management.objects.filter(id=o_id)
                if fee_objs:
                    models.renewal_log.objects.filter(
                        create_user_id=user_id,
                        isSuccess=0).delete()  # 删除未付款的订单

                    userObjs = models.Userprofile.objects.filter(id=user_id)
                    user_obj = userObjs[0]
                    fee_obj = fee_objs[0]

                    price = int(fee_obj.price)  # 支付钱数
                    get_the_length_display = fee_obj.get_the_length_display(
                    )  # 续费时长 (几个月/几年)
                    renewal_number_days = fee_obj.renewal_number_days  # 续费天数
                    overdue_date = (
                        user_obj.overdue_date +
                        datetime.timedelta(days=renewal_number_days)
                    )  # 续费后 到期时间
                    dingdanhao = weixin_pay_api_obj.shengcheng_dingdanhao(
                    )  # 订单号

                    order_objs = models.renewal_log.objects.filter(
                        pay_order_no=dingdanhao)  # 查询订单日志
                    if not order_objs:

                        # 余额支付
                        if pay_type == 'balance_payment':
                            # 创建订单
                            ren_obj = models.renewal_log.objects.create(
                                pay_order_no=dingdanhao,
                                the_length=get_the_length_display,  # 续费时长
                                renewal_number_days=renewal_number_days,
                                create_user_id=user_id,
                                price=price,
                                original_price=fee_obj.original_price,  # 原价
                                overdue_date=overdue_date,
                                status=2,
                            )
                            if float(user_obj.make_money) >= price:
                                userObjs.update(make_money=F('make_money') -
                                                price)
                                # 修改到期时间
                                userObjs.update(
                                    overdue_date=overdue_date,
                                    vip_type=2,  # 更改为高级会员
                                )
                                ren_obj.isSuccess = 1
                                response.code = 200
                                response.msg = '支付成功'
                            else:
                                ren_obj.isSuccess = 0
                                response.code = 301
                                response.msg = '余额不足'
                            ren_obj.save()

                        # 微信支付
                        else:
                            data = get_ent_info(user_id)  # 获取用户信息
                            weixin_obj = WeChatApi(data)  # 获取用户公众号信息
                            appid = weixin_obj.APPID  # appid
                            APPSECRET = weixin_obj.APPSECRET  # 商户号
                            data = {
                                'total_fee': price,  # 金额(分 为单位)
                                'openid': user_obj.openid,  # 微信用户唯一标识
                                'appid': appid,  # appid
                                'dingdanhao': dingdanhao  # 生成订单号
                            }

                            # price = price * 100                       # 单位 分
                            result = weixin_pay_api_obj.yuzhifu(data)  # 预支付
                            return_code = result.get('return_code')
                            return_msg = result.get('return_msg')
                            prepay_id = result.get('prepay_id')['prepay_id']

                            if return_code == 'SUCCESS':  # 判断预支付返回参数 是否正确
                                models.renewal_log.objects.create(
                                    pay_order_no=dingdanhao,
                                    the_length=get_the_length_display,  # 续费时长
                                    renewal_number_days=renewal_number_days,
                                    create_user_id=user_id,
                                    price=price,
                                    original_price=fee_obj.
                                    original_price,  # 原价
                                    overdue_date=overdue_date,
                                    status=1)

                                # 返回数据
                                data_dict = {
                                    'appId':
                                    appid,
                                    'timeStamp':
                                    int(time.time()),
                                    'nonceStr':
                                    weixin_pay_api_obj.generateRandomStamping(
                                    ),
                                    'package':
                                    'prepay_id=' + prepay_id,
                                    'signType':
                                    'MD5'
                                }
                                SHANGHUKEY = weixin_pay_api_obj.SHANGHUKEY
                                stringSignTemp = weixin_pay_api_obj.shengchengsign(
                                    data_dict, SHANGHUKEY)
                                data_dict['paySign'] = weixin_pay_api_obj.md5(
                                    stringSignTemp).upper()  # upper转换为大写

                                response.data = data_dict
                                response.code = 200
                                response.msg = '预支付请求成功'
                            else:
                                response.code = 301
                                response.msg = '支付失败, 原因:{}'.format(return_msg)

                else:
                    response.code = 301
                    response.msg = '请选择一项会员'
            except Exception as e:
                if pay_type == 'balance_payment':
                    text = '余额支付'
                else:
                    text = '微信支付'

                msg = '警告:{}, \n错误:{}, \n时间:{}'.format(
                    '用户支付报错--->用户ID{}-充值ID{}-充值方式'.format(user_id, o_id, text),
                    e, datetime.datetime.today())
                celery_error_warning(msg)

        # 提现功能
        elif oper_type == 'withdrawal':
            try:
                form_data = {
                    'user_id': user_id,
                    'withdrawal_amount':
                    request.GET.get('withdrawal_amount'),  # 提现金额
                }
                form_objs = WithdrawalForm(form_data)
                if form_objs.is_valid():

                    data = get_ent_info(user_id)  # 获取用户信息
                    weixin_obj = WeChatApi(data)  # 获取用户公众号信息
                    appid = weixin_obj.APPID  # appid
                    APPSECRET = weixin_obj.APPSECRET  # 商户号

                    print(request.META)
                    # 当前路径
                    os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
                    # 获取访问用户IP
                    if request.META.get('HTTP_X_FORWARDED_FOR'):
                        ip = request.META['HTTP_X_FORWARDED_FOR']
                    else:
                        ip = request.META['REMOTE_ADDR']

                    user_obj, withdrawal_amount = form_objs.cleaned_data.get(
                        'withdrawal_amount')
                    dingdanhao = weixin_pay_api_obj.shengcheng_dingdanhao()
                    data = {
                        'withdrawal_amount': withdrawal_amount,  # 提现金额
                        'dingdanhao': dingdanhao,  # 订单号
                        'appid': appid,  # appid
                        'openid': user_obj.openid,  # openid
                        'user_id': user_id,  # user_id
                        'user_name': b64decode(user_obj.name),
                        'make_money': user_obj.make_money,
                        'ip': ip,
                    }
                    response_data = weixin_pay_api_obj.withdrawal(data)  # 提现

                    code = response_data.get('code')
                    return_msg = response_data.get('return_msg')

                    make_money = float(user_obj.make_money)  # 用户待提钱数
                    withdrawal_amount = withdrawal_amount  # 用户提现钱数
                    withdrawal_after = make_money - withdrawal_amount  # 待提钱数减去提现钱数

                    if code == 200:
                        is_success = 1  # 是否提现成功
                        response.code = 200
                        # 减去提现的钱数
                        user_money_obj = models.Userprofile.objects.get(
                            id=user_id)
                        user_money_obj.make_money = F(
                            'make_money') - withdrawal_amount
                        user_money_obj.save()

                    else:
                        is_success = 0
                        response.code = 301

                    models.withdrawal_log.objects.create(  # 创建提现记录
                        user_id=user_id,
                        withdrawal_befor=make_money,  # 提现前 待提钱数
                        withdrawal_amount=withdrawal_amount,  # 提现金额
                        withdrawal_after=withdrawal_after,  # 提现后 待提钱数
                        is_success=is_success,
                        wechat_returns_data=return_msg,
                        dingdanhao=dingdanhao)

                    response.msg = return_msg
                else:
                    response.code = 301
                    response.msg = json.loads(form_objs.errors.as_json())
            except Exception as e:
                msg = '警告:{}, \n错误:{}, \n时间:{}'.format(
                    '用户提现报错--->用户ID{}, 提现钱数{} '.format(
                        user_id, request.GET.get('withdrawal_amount')), e,
                    datetime.datetime.today())
                celery_error_warning(msg)

    else:

        # 提现记录
        if oper_type == 'withdrawal_record':
            form_objs = SelectForm(request.GET)
            if form_objs.is_valid():
                current_page = form_objs.cleaned_data['current_page']
                length = form_objs.cleaned_data['length']
                user_obj = models.Userprofile.objects.get(id=user_id)

                objs = models.withdrawal_log.objects.filter(
                    user_id=user_id).order_by('-create_date')

                withdrawal_amount_sum_obj = objs.filter(
                    is_success=1).aggregate(nums=Sum('withdrawal_amount'))

                data_count = objs.count()
                if length != 0:
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    objs = objs[start_line:stop_line]
                data_list = []
                for obj in objs:
                    data_list.append({
                        'dingdanhao':
                        obj.dingdanhao,  # 提现订单号
                        'withdrawal_amount':
                        obj.withdrawal_amount,  # 提现金额
                        'create_date':
                        obj.create_date.strftime('%Y-%m-%d %H:%M:%S'),  # 提现时间
                        'is_success':
                        obj.is_success,  # 提现是否成功
                        'wechat_returns_data':
                        obj.wechat_returns_data,  # 失败原因
                    })

                withdrawal_amount_sum = 0
                if withdrawal_amount_sum_obj:
                    withdrawal_amount_sum = withdrawal_amount_sum_obj.get(
                        'nums')

                response.code = 200
                response.msg = '查询成功'
                response.data = {
                    'data_count': data_count,
                    'withdrawal_amount_sum': withdrawal_amount_sum,
                    'cumulative_amount': user_obj.cumulative_amount,
                    'make_money': user_obj.make_money,
                    'data_list': data_list,
                }
                response.note = {
                    'withdrawal_amount_sum': '已提现钱数',
                    'cumulative_amount': '累计现金',
                    'make_money': '当前待提余额',
                    'data_list': {
                        'dingdanhao': '提现订单号',
                        'withdrawal_amount': '提现金额',
                        'create_date': '提现时间',
                        'is_success': '提现是否成功',
                        'wechat_returns_data': '失败原因'
                    }
                }
            else:
                response.code = 301
                response.msg = json.loads(form_objs.errors.as_json())

        # 支付记录
        elif oper_type == 'payment_records':
            form_objs = SelectForm(request.GET)
            if form_objs.is_valid():
                current_page = form_objs.cleaned_data['current_page']
                length = form_objs.cleaned_data['length']

                # user_obj = models.Userprofile.objects.get(id=user_id)

                objs = models.renewal_log.objects.filter(
                    create_user_id=user_id,
                    isSuccess=1).order_by('-create_date')

                data_count = objs.count()
                if length != 0:
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    objs = objs[start_line:stop_line]
                data_list = []
                for obj in objs:
                    data_list.append({
                        'pay_order_no':
                        obj.pay_order_no,  # 订单号
                        'price':
                        obj.price,  # 价钱
                        'status_id':
                        obj.status,  # 支付方式ID
                        'status':
                        obj.get_status_display(),  # 支付方式
                        'the_length':
                        obj.the_length,  # 时长
                        # 'overdue_date':obj.overdue_date.strftime('%Y-%m-%d %H:%M:%S'),  # 过期时间
                        'create_date':
                        obj.create_date.strftime('%Y-%m-%d %H:%M:%S'),  # 创建时间
                    })

                response.code = 200
                response.msg = '查询成功'
                response.data = {
                    'data_count': data_count,
                    'data_list': data_list,
                }
                response.note = {
                    'data_list': {
                        'pay_order_no': '订单号',
                        'price': '支付金额',
                        'the_length': '时长',
                        'create_date': '下单时间',
                    }
                }
            else:
                response.code = 301
                response.msg = json.loads(form_objs.errors.as_json())

        else:
            response.code = 402
            response.msg = '请求异常'

    return JsonResponse(response.__dict__)
Exemple #10
0
def day_eye_data(request):
    response = Response.ResponseObj()
    try:
        for i in models.Userprofile.objects.all():
            user_id = i.id
            objs = models.SelectArticleLog.objects.filter(
                inviter_id=user_id
            ).select_related(
                'customer'
            ).values(
                'customer_id', 'customer__name', 'customer__set_avator'
            ).annotate(Count('customer_id')).exclude(customer_id__isnull=True).distinct()

            # 返回的数据
            data_list = []
            for obj in objs:
                customer_id = obj.get('customer_id')
                customer__name = ''
                if obj.get('customer__name'):
                    customer__name = b64decode(obj.get('customer__name'))

                article_objs = models.SelectArticleLog.objects.filter(
                    customer_id=customer_id,
                    inviter_id=user_id,
                )


                article_count = article_objs.values(
                    'customer_id',
                    'article_id',
                    'inviter_id'
                ).distinct().count()

                data_list.append({
                    'customer_id': customer_id,
                    'customer__name': customer__name,
                    'customer__set_avator': obj.get('customer__set_avator'),

                    'text': '看了{}篇文章, 总共查看{}次'.format(
                        article_count,  # 总共查看几篇文章
                        obj.get('customer_id__count')  # # 总共查看几次
                    ),
                    'status': 1,  # 代表文章
                    'create_date': article_objs.order_by('-create_datetime')[0].create_datetime.strftime('%Y-%m-%d %H:%M:%S')  # 代表文章
                })

            objs = models.customer_look_goods_log.objects.filter(
                user_id=user_id
            ).select_related(
                'customer'
            ).values(
                'customer_id', 'customer__name', 'customer__set_avator'
            ).annotate(Count('customer_id')).exclude(customer_id__isnull=True).distinct()
            for obj in objs:
                customer_id = obj.get('customer_id')
                customer__name = ''
                if obj.get('customer__name'):
                    customer__name = b64decode(obj.get('customer__name'))

                goods_objs = models.customer_look_goods_log.objects.filter(
                    customer_id=customer_id,
                    user_id=user_id,
                )
                goods_count = goods_objs.values(
                    'customer_id',
                    'goods_id',
                    'user_id',
                ).distinct().count()
                data_list.append({
                    'customer_id': customer_id,
                    'customer__name': customer__name,
                    'customer__set_avator': obj.get('customer__set_avator'),

                    'text': '看了{}件商品, 总共查看{}次'.format(
                        goods_count,  # 总共查看几篇文章
                        obj.get('customer_id__count')  # # 总共查看几次
                    ),
                    'status': 2,  # 代表商品
                    'create_date': goods_objs.order_by('-create_datetime')[0].create_datetime.strftime('%Y-%m-%d %H:%M:%S')  # 代表文章
                })

            for i in data_list:  # 加入数据库
                eye_objs = models.day_eye_celery.objects.filter(
                    user_id=user_id,
                    status=i.get('status'),
                    customer_id=i.get('customer_id'),
                )

                create_date = i.get('create_date')

                if eye_objs:
                    if eye_objs[0].last_click_customer:

                        # 如果 查看时间 大于 用户最后一次点击 该客户时间  为新消息
                        if datetime.datetime.strptime(create_date, '%Y-%m-%d %H:%M:%S') >= eye_objs[0].last_click_customer:
                            is_new_msg = True
                        else:
                            is_new_msg = eye_objs[0].is_new_msg
                    else:
                        is_new_msg = True

                    eye_objs.update(
                        text = i.get('text'),
                        create_date = create_date,
                        is_new_msg = is_new_msg,
                    )
                else:
                    models.day_eye_celery.objects.create(
                        user_id=user_id,
                        status=i.get('status'),
                        customer_id=i.get('customer_id'),
                        text=i.get('text'),
                        create_date=create_date,
                        is_new_msg=True, # 新查看消息提示
                    )


        response.code = 200
    except Exception as e:
        msg = '警告:{}, \n错误:{}, \n时间:{}'.format(
            'celery_天眼功能统计数据报错 warning警告!!!',
            e,
            datetime.datetime.today()
        )
        celery_error_warning(msg)
    return JsonResponse(response.__dict__)
Exemple #11
0
def view_log_oper(request, oper_type):
    response = Response.ResponseObj()
    user_id = request.GET.get('user_id')
    if request.method == "POST":
        pass

    else:

        # 查询日志
        if oper_type == "get_view_data":
            form_objs = SelectForm(request.GET)
            if form_objs.is_valid():
                current_page = form_objs.cleaned_data['current_page']
                length = form_objs.cleaned_data['length']
                order = request.GET.get('order', '-create_datetime')
                field_dict = {
                    'id': '',
                    'client_applet_id': '',
                    'source': '',
                }
                q = conditionCom(request, field_dict)
                objs = models.ViewCustomerSmallApplet.objects.select_related(
                    'customer').filter(q).values(
                        'customer_id', 'customer__name', 'source',
                        'customer__phone',
                        'customer__ip_address').annotate(Count('id'))

                if length != 0:
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    objs = objs[start_line:stop_line]

                ret_data = []
                for obj in objs:
                    customer_id = obj.get('customer_id')
                    source = obj.get('source')
                    objs_detail = models.ViewCustomerSmallApplet.objects.filter(
                        customer_id=customer_id,
                        source=source).order_by('create_datetime')

                    ret_data.append({
                        'intention_degree':
                        0,  # 意向度
                        'access_permissions':
                        '',  # 访问权限
                        'visitors_id':
                        customer_id,  # 访客ID
                        'visitors':
                        b64decode(obj.get('customer__name')),  # 访客
                        'terminal':
                        obj.get('customer__ip_address'),  # 终端
                        'mobile_phone':
                        obj.get('customer__phone'),  # 手机
                        'source_id':
                        source,  # 来源ID
                        'source':
                        objs_detail[0].get_source_display(),  # 来源
                        'first_visit_to':
                        objs_detail[0].create_datetime.strftime(
                            '%Y-%m-%d %H:%M:%S'),  # 首次访问时间
                        'last_active_time':
                        objs_detail.order_by('-create_datetime')
                        [0].create_datetime.strftime(
                            '%Y-%m-%d %H:%M:%S'),  # 最近活跃时间
                    })

                response.code = 200
                response.msg = '查询成功'
                response.data = {'count': '', 'ret_data': ret_data}
                response.note = {
                    'intention_degree': '意向度',
                    'access_permissions': '访问权限',
                    'visitors_id': '访客ID',
                    'visitors': '访客',
                    'terminal': '终端',
                    'mobile_phone': '手机',
                    'source_id': '来源ID',
                    'source': '来源',
                    'first_visit_to': '首次访问时间',
                    'last_active_time': '最近活跃时间',
                }

            else:
                response.code = 301
                response.msg = form_objs.errors.as_json()

        else:
            response.code = 402
            response.msg = "请求异常"
    return JsonResponse(response.__dict__)
Exemple #12
0
def wechat(request):
    rc = redis.StrictRedis(host='redis_host',
                           port=6379,
                           db=7,
                           decode_responses=True)

    signature = request.GET.get("signature")
    timestamp = request.GET.get("timestamp")
    nonce = request.GET.get("nonce")
    echostr = request.GET.get("echostr")
    appid = request.GET.get("appid")
    # 该值做消息解密使用,当前未使用加密模式,参考微信开发文档 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319
    # EncodingAESKey = 'LFYzOBp42g5kwgSUWhGC9uRugSmpyetKfAsJa5FdFHX'

    check_result = checkSignature(timestamp, nonce, signature)
    print('check_result -->', check_result)

    if check_result:

        if request.method == "GET":
            return HttpResponse(echostr)
        else:
            body_text = str(request.body, encoding="utf8")
            print('body_text -->', body_text)

            # 使用minidom解析器打开 XML 文档
            DOMTree = xml.dom.minidom.parseString(body_text)
            collection = DOMTree.documentElement

            # 用户的 openid
            openid = collection.getElementsByTagName(
                "FromUserName")[0].childNodes[0].data

            is_timestamp = rc.get(
                openid)  # 查询redis 这个用户 是否回调过 如果有 判断时间戳是否一致 有效期 30秒
            if is_timestamp and is_timestamp == timestamp:  # 重复回调
                return HttpResponse('')

            rc.set(openid, timestamp)  # 插入数据
            rc.expire(openid, 30)  # 设置过期时间 30 秒

            # 事件类型
            msg_type = collection.getElementsByTagName(
                "MsgType")[0].childNodes[0].data

            # 发送消息时候时间戳
            CreateTime = collection.getElementsByTagName(
                "CreateTime")[0].childNodes[0].data

            ent_obj = models.Enterprise.objects.get(appid=appid)  # 获取该公众号信息
            data = {
                'id': ent_obj.id,
                'APPID': ent_obj.appid,
                'APPSECRET': ent_obj.appsecret,
                'access_token': ent_obj.access_token,
                'create_datetime': ent_obj.create_datetime,
            }

            inviter_user_id = ''
            # 事件类型 关注/取关
            if msg_type == 'event':
                event = collection.getElementsByTagName(
                    "Event")[0].childNodes[0].data
                # 扫描带参数的二维码
                if event in ["subscribe", "SCAN"]:
                    # subscribe = 首次关注
                    # SCAN = 已关注
                    # 事件 Key 值
                    models.Customer.objects.filter(openid=openid).update(
                        subscribe=1)  # 更改客户 是否关注

                    if collection.getElementsByTagName(
                            "EventKey")[0].childNodes:
                        event_key = collection.getElementsByTagName(
                            "EventKey")[0].childNodes[0].data
                        if event == "subscribe":
                            event_key = event_key.split("qrscene_")[-1]
                        event_key = json.loads(event_key)
                        inviter_user_id = event_key.get(
                            'inviter_user_id')  # 邀请人id
                        print('event_key -->', event_key)
                        data = get_ent_info(
                            inviter_user_id)  # 获取该用户 token appid等

                    weichat_api_obj = WeChatApi(data)
                    ret_obj = weichat_api_obj.get_user_info(openid=openid)

                    flag = False  # 是否点过修改 成 我的名片 如果有创建文章 推送给用户
                    article_id = ''
                    if not inviter_user_id:  # 如果没有推荐人 则查询 是否查看过文章  最后一次查看 该公司的用户
                        select_article_objs = models.SelectArticleLog.objects.filter(
                            inviter__enterprise__appid=appid,
                            customer__openid=openid).order_by(
                                '-create_datetime')
                        if select_article_objs:
                            select_article_obj = select_article_objs[0]
                            if select_article_obj.click_modify:
                                flag = True

                                select_article_obj.click_modify = 0  # 避免下次判断
                                select_article_obj.save()

                                article_id = select_article_obj.article_id
                                inviter_user_id = select_article_obj.inviter_id

                    user_id = updateUserInfo(openid,
                                             inviter_user_id,
                                             ret_obj,
                                             msg='关注公众号',
                                             enterprise_id=data.get('id'))

                    user_obj = models.Userprofile.objects.get(id=user_id)
                    if event == 'subscribe':  # 首次关注
                        nickname = ret_obj.get('nickname')  # 关注人名称
                        sex_obj = ret_obj.get('sex')  # 性别
                        if sex_obj and int(sex_obj) == 2:  # 女
                            sex = '美女'
                        else:  # 男 未知
                            sex = '靓仔'

                        text = '点击下方【天眼】{emj_3}'.format(emj_3=xiajiantou)
                        if flag:  # 客户未关注公众号情况下 点击了 修改成我的名片文章  关注公众号后 发送点击的文章
                            text = '您要修改的名片文章{emj_3}点击修改吧!'.format(
                                emj_3=xiajiantou)

                        post_data = {
                            "touser": openid,
                            "msgtype": "text",
                            "text": {
                                "content":
                                '欢迎关注{user_name}公众号!\n\n<{sex}-{name}>你终于来了!天眼已经在此等候多时!{emj_1}\n\n'
                                '分享文章后我会告诉您谁看了您的文章, 精准追踪客户\n\n'
                                '快进入天眼客户追踪神器吧!{emj_2}\n\n'
                                '{text}'.format(
                                    user_name=user_obj.enterprise.name,
                                    name=nickname,
                                    emj_1=baiyan,
                                    emj_2=zhayan,
                                    text=text,
                                    sex=sex)
                            }
                        }

                        post_data = bytes(json.dumps(post_data,
                                                     ensure_ascii=False),
                                          encoding='utf-8')
                        weichat_api_obj.news_service(post_data)

                    if flag:  # 查看了别人的文章
                        article_objs = models.Article.objects.filter(
                            id=article_id)
                        if article_objs:
                            article_obj = article_objs[0]
                            create_article_obj = models.Article.objects.create(
                                title=article_obj.title,
                                summary=article_obj.summary,
                                content=article_obj.content,
                                create_user_id=user_obj.id,
                                source_link=article_obj.source_link,
                                cover_img=article_obj.cover_img,
                                style=article_obj.style,
                                original_link=article_obj.original_link,
                            )
                            create_article_obj.classify = [39]
                            create_article_obj.save()
                            url = 'http://zhugeleida.zhugeyingxiao.com/tianyan/#/Article/Article_Detail?id={}&token={}&user_id={}&classify_type=1'.format(
                                create_article_obj.id, user_obj.token,
                                user_obj.id)
                            post_data = {
                                "touser": openid,
                                "msgtype":
                                "news",  # 图文消息 图文消息条数限制在1条以内,注意,如果图文数超过1,则将会返回错误码45008。
                                "news": {
                                    "articles": [{
                                        "title":
                                        create_article_obj.title,
                                        "description":
                                        b64decode(create_article_obj.summary),
                                        "url":
                                        url,
                                        "picurl":
                                        create_article_obj.cover_img +
                                        '?imageView2/2/w/200'
                                    }]
                                }
                            }
                            post_data = bytes(json.dumps(post_data,
                                                         ensure_ascii=False),
                                              encoding='utf-8')
                            weichat_api_obj.news_service(post_data)

                # 取消关注
                elif event == "unsubscribe":
                    print('-------------取关')
                    models.Userprofile.objects.filter(openid=openid).update(
                        subscribe=False)
                    models.Customer.objects.filter(openid=openid).update(
                        subscribe=False)
                    # we_chat_public_send_msg_obj.sendTempMsg(post_data)

            # 客户发送消息
            elif msg_type == 'text':
                Content = collection.getElementsByTagName(
                    "Content")[0].childNodes[0].data

                user_objs = models.Userprofile.objects.filter(
                    openid=openid)  # 获取用户ID

                if not user_objs:  # 如果没有这个用户
                    weichat_api_obj = WeChatApi(data)
                    ret_obj = weichat_api_obj.get_user_info(openid=openid)
                    updateUserInfo(openid, inviter_user_id, ret_obj)
                    user_obj = models.Userprofile.objects.get(
                        openid=openid)  # 获取用户ID
                else:
                    user_obj = user_objs[0]

                user_obj.last_active_time = datetime.datetime.today()  # 最后活跃时间
                user_id = user_obj.id
                pub_log_access(user_id,
                               msg='用户给公众号发送消息:{}'.format(Content))  # 记录访问日志
                token = user_obj.token
                data = get_ent_info(user_id)  # 获取该用户appid等
                weichat_api_obj = WeChatApi(data)  # 实例化公众号操作

                # 判断该人在同一时刻 发送多条只接受一条
                send_msg_duplicate_obj = models.send_msg_duplicate.objects.filter(
                    user_id=user_id, create_date_time=CreateTime)
                if not send_msg_duplicate_obj:
                    models.send_msg_duplicate.objects.create(
                        user_id=user_id, create_date_time=CreateTime)
                else:
                    return HttpResponse('')

                if 'http' in Content:  # 获取文章内容 返回文章
                    print('Content=-===========》', Content)
                    # 判断 链接是否正常
                    post_data = {
                        "touser": openid,
                        "msgtype": "text",
                        "text": {
                            "content": '解码中,请稍等······'
                        }
                    }
                    weichat_api_obj.news_service(
                        bytes(json.dumps(post_data, ensure_ascii=False),
                              encoding='utf-8'))  # 发送客服消息
                    try:
                        ret = requests.get(Content, timeout=5)
                        status_code = ret.status_code
                    except Exception:
                        post_data = {
                            "touser": openid,
                            "msgtype": "text",
                            "text": {
                                "content":
                                '链接请求不到了······{}'.format(b64decode('4p2V4p2X'))
                            }
                        }
                        weichat_api_obj.news_service(
                            bytes(json.dumps(post_data, ensure_ascii=False),
                                  encoding='utf-8'))  # 发送客服消息
                        return HttpResponse('')

                    if status_code != 200:
                        post_data = {
                            "touser": openid,
                            "msgtype": "text",
                            "text": {
                                "content":
                                '该链接存在异常请求状态码>{}'.format(status_code)
                            }
                        }

                    else:
                        # try:
                        #     ret = requests.get(Content, timeout=5)
                        #     ret.encoding = 'utf-8'
                        # except Exception:
                        #     post_data = {
                        #         "touser": openid,
                        #         "msgtype": "text",
                        #         "text": {
                        #             "content": '这个链接没有文章{}'.format(b64decode('4p2X'))
                        #         }
                        #     }
                        #     weichat_api_obj.news_service(bytes(json.dumps(post_data, ensure_ascii=False), encoding='utf-8'))  # 发送客服消息
                        #     return HttpResponse('')

                        title = re.compile(r'var msg_title = (.*);').findall(
                            ret.text)[0].replace('"', '')  # 标题

                        article_objs = models.Article.objects.filter(
                            title=title, create_user_id=user_id)

                        if not article_objs:  # 判断数据库是否有 该文章
                            data_dict = get_article(Content)  # 获取文章
                            summary = data_dict.get('summary')  # 摘要
                            data_dict['create_user_id'] = user_id  # 增加创建人
                            id = add_article_public(
                                data_dict, 39)  # 创建文章 第二个参数为 classify_id 默认为其他
                            cover_img = data_dict.get('cover_img')  # 封面

                        else:
                            article_obj = article_objs[0]
                            id = article_obj.id
                            summary = article_obj.summary
                            cover_img = article_obj.cover_img

                        url = 'http://zhugeleida.zhugeyingxiao.com/tianyan/#/Article/Article_Detail?id={}&token={}&user_id={}&classify_type=1'.format(
                            id, token, user_id)

                        post_data = {
                            "touser": openid,
                            "msgtype":
                            "news",  # 图文消息 图文消息条数限制在1条以内,注意,如果图文数超过1,则将会返回错误码45008。
                            "news": {
                                "articles": [{
                                    "title":
                                    title,
                                    "description":
                                    b64decode(summary),
                                    "url":
                                    url,
                                    "picurl":
                                    cover_img + '?imageView2/2/w/200'
                                }]
                            }
                        }

                else:  # 收到其他文字 发送随机五篇文章
                    timestamp = str(int(time.time()))
                    rand_str = str_encrypt(timestamp + token)
                    share_url = 'http://zhugeleida.zhugeyingxiao.com/tianyan/api/article/popula_articles/0?length=5&rand_str={}&timestamp={}&user_id={}'.format(
                        rand_str, timestamp, user_id)
                    ret = requests.get(share_url)  # 请求随机文章五篇
                    ret.encoding = 'utf8'
                    ret_json = ret.json().get('data')
                    content = ''
                    for i in ret_json.get('ret_data'):  # 循环出推荐文章 链接为文章详情链接
                        url = 'http://zhugeleida.zhugeyingxiao.com/tianyan/#/Article/Article_Detail?id={}&token={}&user_id={}&classify_type=1'.format(
                            i.get('id'), token, user_id)
                        pinjie_content = '{}<a href="{url}">{title}</a>'.format(
                            b64decode('4p6h'),  # emoji解码  →箭头
                            title=i.get('title'),
                            url=url)
                        content += ' \n{} \n'.format(
                            pinjie_content)  # 拼接A标签 跳转链接

                    post_data = {
                        "touser": openid,
                        "msgtype": "text",
                        "text": {
                            "content":
                            '天眼将一直为您推送消息 \n{} \n点击下方天眼,更多内容等你哦!'.format(
                                content)
                        }
                    }
                print('--------------------post_data-----> ', post_data)
                # 发送客服消息
                post_data = bytes(json.dumps(post_data, ensure_ascii=False),
                                  encoding='utf-8')
                weichat_api_obj.news_service(post_data)

            return HttpResponse("")

    else:
        return HttpResponse(False)
Exemple #13
0
def team_oper(request, oper_type, o_id):
    # print('oper_type -->', oper_type)
    response = Response.ResponseObj()
    user_id = request.GET.get('user_id')
    if request.method == "POST":
        # 添加团队
        if oper_type == "add":
            form_data = {
                'create_user_id': user_id,
                'name': request.POST.get('name'),
            }
            #  创建 form验证 实例(参数默认转成字典)
            forms_obj = AddForm(form_data)
            if forms_obj.is_valid():
                print("验证通过")
                # print(forms_obj.cleaned_data)
                #  添加数据库
                # print('forms_obj.cleaned_data-->',forms_obj.cleaned_data)
                obj = models.Team.objects.create(**forms_obj.cleaned_data)
                obj.userprofileteam_set.create(user_id=user_id,
                                               team_id=obj.id,
                                               type=2)
                response.code = 200
                response.msg = "添加成功"
                response.data = {'id': obj.id}
            else:
                response.code = 301
                response.msg = json.loads(forms_obj.errors.as_json())

        # 修改团队名称
        elif oper_type == "update":
            # 获取需要修改的信息
            form_data = {
                'o_id': o_id,  # 团队id
                'user_id': user_id,
                'name': request.POST.get('name'),
            }

            forms_obj = UpdateForm(form_data)
            if forms_obj.is_valid():
                # print("验证通过")
                # print(forms_obj.cleaned_data)
                o_id = forms_obj.cleaned_data['o_id']
                name = forms_obj.cleaned_data['name']

                #  查询更新 数据
                models.Team.objects.filter(id=o_id).update(name=name, )

                response.code = 200
                response.msg = "修改成功"

            else:
                print("验证不通过")
                # print(forms_obj.errors)
                response.code = 301
                # print(forms_obj.errors.as_json())
                #  字符串转换 json 字符串
                response.msg = json.loads(forms_obj.errors.as_json())

        # 删除团队成员
        elif oper_type == "delete_member":
            delete_user_id = request.POST.get('delete_user_id')  # 要移除的成员id
            form_data = {
                'o_id': o_id,  # 团队id
                'user_id': user_id,
                'delete_user_id': delete_user_id,
            }

            forms_obj = DeleteMemberForm(form_data)
            if forms_obj.is_valid():
                # print("验证通过")
                # print(forms_obj.cleaned_data)
                team_id = forms_obj.cleaned_data['o_id']
                delete_user_id_list = forms_obj.cleaned_data['delete_user_id']
                print('team_id -->', team_id)
                print('delete_user_id -->', delete_user_id)
                # 删除团队中的成员
                models.UserprofileTeam.objects.filter(
                    team_id=team_id, type=1,
                    user_id__in=delete_user_id_list).delete()

                response.code = 200
                response.msg = "删除成功"

            else:
                print("验证不通过")
                response.code = 301
                response.msg = json.loads(forms_obj.errors.as_json())

        # 设置普通成员成为管理员
        elif oper_type == "set_management":
            print('request.POST -->', request.POST)
            print('request.GET -->', request.GET)
            set_user_id = request.POST.get('set_user_id')
            print('set_user_id -->', set_user_id)
            form_data = {
                'o_id': o_id,  # 团队id
                'user_id': user_id,
                'set_user_id': set_user_id,
            }

            forms_obj = SetManagementForm(form_data)
            if forms_obj.is_valid():
                set_user_id_list = forms_obj.cleaned_data.get('set_user_id')
                team_id = forms_obj.cleaned_data.get('o_id')

                # 先将所有成员改成普通用户
                models.UserprofileTeam.objects.filter(team_id=team_id).update(
                    type=1)

                # 修改成员类型为管理员
                models.UserprofileTeam.objects.filter(
                    team_id=team_id,
                    user_id__in=set_user_id_list).update(type=2)

                response.code = 200
                response.msg = "修改成功"
            else:
                response.code = 301
                response.data = json.loads(forms_obj.errors.as_json())

        # 删除团队
        elif oper_type == 'delete':
            member_objs = models.UserprofileTeam.objects.filter(team_id=o_id)
            user_id_list = [
                i.get('user_id')
                for i in member_objs.filter(type=2).values('user_id')
            ]
            user_list = [
                i.get('user_id')
                for i in member_objs.filter(type=1).values('user_id')
            ]  # 普通用户
            if int(user_id) in user_id_list:  # 该团队管理员列表
                models.Article.objects.filter(ownership_team_id=o_id).update(
                    ownership_team_id=None)
                member_objs.delete()
                models.Team.objects.filter(id=o_id).delete()
                response.code = 200
                response.msg = '删除团队成功'
            else:
                if int(user_id) in user_list:
                    member_objs.filter(user_id=user_id).delete()
                    response.code = 200
                    response.msg = '退出团队成功'
                else:
                    response.code = 301
                    response.msg = '权限不足'

    else:
        # 查看团队人员列表
        if oper_type == "select_user_list":
            form_data = {
                'team_id': o_id,
                'current_page': request.GET.get('current_page', 1),
                'length': request.GET.get('length', 10),
            }
            forms_obj = SelectUserListForm(form_data)
            if forms_obj.is_valid():
                print('forms_obj.cleaned_data -->', forms_obj.cleaned_data)
                current_page = forms_obj.cleaned_data['current_page']
                length = forms_obj.cleaned_data['length']
                team_id = forms_obj.cleaned_data['team_id']
                order = request.GET.get('order', 'create_datetime')
                field_dict = {
                    'id': '',
                    'type': '',
                    # 'user__name': '__contains',
                    'create_datetime': '',
                }
                q = conditionCom(request, field_dict)

                print('q -->', q)
                objs = models.UserprofileTeam.objects.select_related(
                    'user').filter(q).filter(team_id=team_id).order_by(order)
                count = objs.count()

                if length != 0:
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    objs = objs[start_line:stop_line]

                # 返回的数据
                ret_data = []

                for obj in objs:
                    #  将查询出来的数据 加入列表
                    print('base64_encryption.b64encode(obj.user.name) -->',
                          base64_encryption.b64encode(obj.user.name))
                    ret_data.append({
                        'id':
                        obj.user_id,
                        'user_type_name':
                        obj.get_type_display(),
                        'user_type':
                        obj.type,
                        'name':
                        base64_encryption.b64decode(obj.user.name),
                        'set_avator':
                        obj.user.set_avator,
                        'create_datetime':
                        obj.create_datetime.strftime('%Y-%m-%d %H:%M:%S'),
                    })
                #  查询成功 返回200 状态码
                response.code = 200
                response.msg = '查询成功'
                response.data = {
                    'ret_data': ret_data,
                    'data_count': count,
                }

                response.note = {
                    'id': "用户id",
                    'name': "用户名称",
                    'user_type': "用户在团队中的类型/角色id,  1 ==> 普通用户   2 ==> 管理员",
                    'user_type_name': "用户在团队中的类型/角色名称",
                    'set_avator': "用户头像",
                    'create_datetime': "用户加入时间",
                }
            else:
                response.code = 301
                response.data = json.loads(forms_obj.errors.as_json())

    return JsonResponse(response.__dict__)
Exemple #14
0
def user(request):
    response = Response.ResponseObj()
    if request.method == "GET":
        forms_obj = SelectForm(request.GET)
        if forms_obj.is_valid():
            user_id = request.GET.get('user_id')
            current_page = forms_obj.cleaned_data['current_page']
            length = forms_obj.cleaned_data['length']
            print('forms_obj.cleaned_data -->', forms_obj.cleaned_data)
            order = request.GET.get('order', '-create_datetime')
            field_dict = {
                'id': '',
                'name': '__contains',
                'create_datetime': '',
            }

            q = conditionCom(request, field_dict)

            print('q -->', q)
            objs = models.Userprofile.objects.filter(q).order_by(order)
            count = objs.count()

            if length != 0:
                start_line = (current_page - 1) * length
                stop_line = start_line + length
                objs = objs[start_line:stop_line]

            ret_data = []
            for obj in objs:
                # 返回的数据
                team_list = []
                team_objs = models.UserprofileTeam.objects.filter(
                    user_id=obj.id)
                for team_obj in team_objs:
                    team_list.append(team_obj.team_id)
                brand_list = [
                    i['name'] for i in obj.brand_classify.values('name')
                ]
                qr_code = ''
                if obj.qr_code:
                    qr_code = obj.qr_code + '?imageView2/2/w/100'

                set_avator = ''
                inviter_id = ''
                inviter_name = ''
                if obj.inviter:
                    inviter_name = b64decode(obj.inviter.name)
                    inviter_id = obj.inviter_id
                    set_avator = obj.inviter.set_avator + '?imageView2/2/w/100'

                #  将查询出来的数据 加入列表
                ret_data.append({
                    'id':
                    obj.id,
                    'name':
                    b64decode(obj.name),
                    'phone_number':
                    obj.phone_number,
                    'signature':
                    obj.signature,
                    'show_product':
                    obj.show_product,
                    'register_date':
                    obj.register_date.strftime('%Y-%m-%d'),
                    'overdue_date':
                    obj.overdue_date.strftime('%Y-%m-%d'),
                    'set_avator':
                    obj.set_avator,
                    'qr_code':
                    qr_code,
                    'brand_list':
                    brand_list,
                    'team_list':
                    team_list,
                    'vip_type':
                    obj.get_vip_type_display(),
                    'my_references_id':
                    inviter_id,  # 邀请人ID
                    'my_references_name':
                    inviter_name,  # 我的推荐人名称
                    'my_references_set':
                    set_avator  # 我的推荐人头像
                })
            #  查询成功 返回200 状态码
            response.code = 200
            response.msg = '查询成功'
            response.data = {
                'ret_data': ret_data,
                'data_count': count,
            }
            response.note = {
                'id': "用户id",
                'name': "姓名",
                'phone_number': "手机号",
                'signature': "个性签名",
                'show_product': "文章底部是否显示产品",
                'register_date': "注册时间",
                'overdue_date': "过期时间",
                'set_avator': "头像",
                'qr_code': "微信二维码",
                'vip_type': "会员类型",
                'brand_list': "公司/品牌列表",
                'team_list': "团队ID数组",
                'my_references_id': '邀请人ID',
                'my_references_name': '我的推荐人名称',
                'my_references_set': '我的推荐人头像',
            }
        else:
            print("forms_obj.errors -->", forms_obj.errors)
            response.code = 402
            response.msg = "请求异常"
            response.data = json.loads(forms_obj.errors.as_json())
    return JsonResponse(response.__dict__)
Exemple #15
0
def day_eye_oper(request, oper_type, o_id):
    response = Response.ResponseObj()
    user_id = request.GET.get('user_id')
    forms_obj = SelectForm(request.GET)
    if forms_obj.is_valid():
        current_page = forms_obj.cleaned_data['current_page']
        length = forms_obj.cleaned_data['length']
        order = request.GET.get('order', '-create_datetime')
        if request.method == "POST":
            form_data = {
                'o_id': o_id,
                'user_id': user_id,
                'customer_id': request.POST.get('customer_id'),
                'remote_type': request.POST.get('remote_type'),
                'title': request.POST.get('title'),
                'create_date': request.POST.get('create_date'),
                'remote': request.POST.get('remote')
            }

            # 添加客户信息备注
            if oper_type == "add":
                form_obj = AddForm(form_data)
                if form_obj.is_valid():
                    remote = form_obj.cleaned_data.get('remote')
                    customer_id = form_obj.cleaned_data.get('customer_id')

                    data = {
                        'user_id': user_id,
                        'customer_id': customer_id,
                        'remote': remote
                    }
                    models.customer_information_the_user.objects.create(**data)
                    response.code = 200
                    response.msg = '保存成功'

                else:
                    response.code = 301
                    response.msg = json.loads(form_obj.errors.as_json())

            # 修改客户信息备注
            elif oper_type == 'update':
                form_obj = UpdateForm(form_data)
                if form_obj.is_valid():
                    o_id = form_obj.cleaned_data.get('o_id')
                    remote = form_obj.cleaned_data.get('remote')

                    models.customer_information_the_user.objects.filter(
                        id=o_id).update(remote=remote)
                    response.code = 200
                    response.msg = '保存成功'

                else:
                    response.code = 301
                    response.msg = json.loads(form_obj.errors.as_json())

            # 删除客户信息备注
            elif oper_type == 'delete':
                customer_id = request.POST.get('customer_id')

                if customer_id:
                    objs = models.customer_information_the_user.objects.filter(
                        user_id=user_id, customer_id=customer_id)
                else:
                    objs = models.customer_information_the_user.objects.filter(
                        id=o_id)

                if not objs:
                    response.code = 301
                    response.msg = '刪除数据不存在'
                else:
                    objs.delete()
                    response.code = 200
                    response.msg = '删除成功'

            # 添加客户资料
            elif oper_type == 'add_customer_info':
                pass

            # 修改客户资料 个人信息等
            elif oper_type == 'update_customer_info':
                print(
                    'request.POST=============================000000000-=-------------> ',
                    request.POST)
                customer_info = request.POST.get('customer_info')
                objs = models.user_comments_customer_information.objects.filter(
                    user_id=user_id, customer_id=o_id)
                print(
                    'request.POST=============================000000000-=-------------> ',
                    type(customer_info), customer_info)
                customer_info = eval(customer_info)

                if objs:
                    objs.update(customer_info=json.dumps(customer_info))
                else:
                    objs.create(customer_info=customer_info,
                                user_id=user_id,
                                customer_id=o_id)
                response.code = 200
                response.msg = '保存成功'
                response.note = {
                    'customer_info': '用户所有信息',
                    'customer_sex': '用户性别 默认微信性别',
                    'customer_set_avator': '用户头像 默认微信头像',
                    'customer_name': '用户姓名 备注 默认微信名称',
                    'customer_wechat': '用户微信名称',
                    'customer_phone': '用户电话',
                    'customer_professional': '用户职业',
                    'customer_birthday': '用户生日',
                    'customer_remake': '用户备注',
                    'customer_demand': '用户需求',
                    'customer_label': {
                        'xueli': '学历ID',
                        'diqu': '地区名称',
                        'guanxi': '关系',
                        'qinmidu': '亲密度',
                        'yingxiangli': '影响力',
                        'qituxin': '企图心',
                        'shiyetaidu': '事业态度',
                        'renmaiquan': '人脉圈',
                        'jingjinengli': '经济能力',
                    },
                }

        else:

            # 查询客户信息备注
            if oper_type == 'get_customer_note':
                field_dict = {
                    'id': '',
                    'customer_id': '',
                    'user_id': '',
                }

                q = conditionCom(request, field_dict)
                objs = models.customer_information_the_user.objects.filter(
                    q).order_by(order)

                if length != 0:
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    objs = objs[start_line:stop_line]
                count = objs.count()

                ret_data = []
                num = 0
                for obj in objs:
                    create_datetime = obj.create_datetime.strftime(
                        '%Y-%m-%d %H:%M:%S')
                    ret_data.append({'create_datetime': create_datetime})
                    ret_data[num]['remote'] = obj.remote
                    ret_data[num]['id'] = obj.id
                    num += 1

                response.code = 200
                response.msg = '查询成功'
                response.data = {
                    'count': count,
                    'ret_data': ret_data,
                }

                response.note = {
                    'create_datetime': '创建时间',
                    'remote': '备注',
                }

            # 谁看了我 (文章详情)
            elif oper_type == 'day_eye_detail':
                user_id = forms_obj.cleaned_data['user_id']

                # 更新 用户点击客户详情时间
                day_celery_objs = models.day_eye_celery.objects.filter(
                    status=1, user_id=user_id, customer_id=o_id)
                if day_celery_objs:
                    day_celery_objs.update(
                        last_click_customer=datetime.datetime.today(),
                        is_new_msg=False)

                article_objs = models.SelectArticleLog.objects.filter(
                    inviter_id=user_id, customer_id=o_id)
                info_objs = article_objs.order_by(order)

                objs = article_objs.values('article_id', 'article__title',
                                           'article__cover_img').annotate(
                                               Count('id'))
                count = objs.count()

                ret_data = []
                for obj in objs:
                    article_id = obj.get('article_id')
                    article_obj = article_objs.filter(
                        article_id=article_id).order_by(order)[:1]

                    time_detail = []  # 查看时长及时间
                    for info_obj in info_objs:
                        if int(info_obj.article_id) == int(article_id):
                            time_length = '1秒'
                            create_datetime = info_obj.create_datetime
                            if info_obj.close_datetime:
                                time_length = get_min_s(
                                    create_datetime, info_obj.close_datetime)
                            time_detail.append({
                                'time_length':
                                time_length,
                                'select_datetime':
                                create_datetime.strftime('%Y-%m-%d %H:%M:%S'),
                            })

                    create_datetime = article_obj[0].create_datetime
                    after_time = get_min_s(create_datetime,
                                           datetime.datetime.today(),
                                           ms=1)

                    ret_data.append({
                        'article_id':
                        article_id,
                        'article__title':
                        obj.get('article__title'),
                        'article_info':
                        '看了' + str(obj.get('id__count')) + '次-' + after_time +
                        '前',
                        'time_detail':
                        time_detail,
                        'article__cover_img':
                        obj.get('article__cover_img'),
                        'create_datetime':
                        create_datetime,  # 排序用
                    })
                data_list = sorted(ret_data,
                                   key=lambda x: x['create_datetime'],
                                   reverse=True)

                is_new_goods_msg = False
                goods_objs = models.day_eye_celery.objects.filter(
                    status=2, user_id=user_id, customer_id=o_id)
                if goods_objs:
                    if goods_objs[0].is_new_msg:
                        is_new_goods_msg = True

                response.code = 200
                response.msg = '查询成功'
                response.data = {
                    'ret_data': data_list,
                    'data_count': count,
                    'is_new_goods_msg': is_new_goods_msg,
                }
                response.note = {
                    'article_id': "文章ID",
                    'article__title': "文章标题",
                    'article_info': "看了几次 最后一次查看时间",
                    'time_length': "时长",
                    'select_datetime': "查看时间",
                    'article__cover_img': "文章图片",
                    'create_datetime': "创建时间",
                    'is_new_goods_msg': "是否有商品新消息",
                }

            # 按文章查看(天眼功能)列表页
            elif oper_type == 'view_by_article':
                user_id, message = forms_obj.cleaned_data['user_id']
                objs = models.SelectArticleLog.objects.filter(
                    inviter_id=user_id).values(
                        'article_id', 'article__title').distinct().annotate(
                            Count('id')).exclude(customer_id__isnull=True)
                count = objs.count()

                ret_data = []
                for obj in objs:
                    article_obj = models.SelectArticleLog.objects.filter(
                        article_id=obj['article_id']).order_by(order)
                    cover_img = article_obj[0].article.cover_img  # 文章封面
                    create_datetime = article_obj[0].create_datetime
                    after_time = get_min_s(create_datetime,
                                           datetime.datetime.today(),
                                           ms=1)

                    ret_data.append({
                        'article_id': obj['article_id'],
                        'article__title': obj['article__title'],
                        'id__count': obj['id__count'],
                        'after_time': after_time + '前',
                        'cover_img': cover_img + '?imageView2/2/w/200',
                        'create_datetime': create_datetime,
                    })

                ret_data = sorted(ret_data,
                                  key=lambda x: x['create_datetime'],
                                  reverse=True)
                if length != 0:
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    ret_data = ret_data[start_line:stop_line]

                response.code = 200
                response.msg = '查询成功'
                response.data = {
                    'ret_data': ret_data,
                    'count': count,
                    'message': message,
                }
                response.note = {
                    'article_id': '文章ID',
                    'article__title': '文章标题',
                    'id__count': '查看该文章人 总数',
                    'cover_img': '文章封面',
                    'after_time': '最后查看日期',
                }

            # 按文章查看(详情)
            elif oper_type == 'view_by_article_detail':
                article_obj = models.SelectArticleLog.objects.filter(
                    inviter_id=user_id,
                    article_id=o_id,
                    customer_id__isnull=False)
                objs = article_obj.values(
                    'customer_id', 'customer__name',
                    'customer__set_avator').distinct().annotate(Count('id'))

                if length != 0:
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    objs = objs[start_line:stop_line]
                count = objs.count()
                ret_data = []
                for obj in objs:
                    objs = article_obj.filter(
                        customer_id=obj['customer_id'])[:1]
                    create_datetime = objs[0].create_datetime
                    after_time = get_min_s(create_datetime,
                                           datetime.datetime.today(),
                                           ms=1)
                    ret_data.append({
                        'customer_id':
                        obj['customer_id'],
                        'customer__set_avator':
                        obj['customer__set_avator'] + '?imageView2/2/w/200',
                        'customer__name':
                        b64decode(obj['customer__name']),
                        'article_info':
                        '看了' + str(obj['id__count']) + '次-' + after_time + '前',
                    })

                response.code = 200
                response.msg = '查询成功'
                response.data = {
                    'ret_data': ret_data,
                    'count': count,
                }
                response.note = {
                    'customer_id': '客户ID',
                    'customer__name': '客户名称',
                    'article_info': '该人查看该文章 总数/ 时长',
                }

            # 查询客户资料
            elif oper_type == 'get_customer_info':
                objs = models.user_comments_customer_information.objects.filter(
                    user_id=user_id, customer_id=o_id)

                if not objs:
                    customer_info = {
                        'customer_sex': '',
                        'customer_set_avator': '',
                        'customer_name': '',
                        'customer_wechat': '',
                        'customer_phone': '',
                        'customer_professional': '',
                        'customer_birthday': '',
                        'customer_remake': '',
                        'customer_demand': [],
                        'customer_label': {
                            'xueli': '初中',
                            'diqu': '北京',
                            'guanxi': '朋友',
                            'qinmidu': 1,
                            'yingxiangli': 1,
                            'qituxin': 1,
                            'shiyetaidu': 1,
                            'renmaiquan': 1,
                            'jingjinengli': 1,
                        },
                    }
                    models.user_comments_customer_information.objects.create(
                        user_id=user_id,
                        customer_id=o_id,
                        customer_info=customer_info)

                    objs = models.user_comments_customer_information.objects.filter(
                        user_id=user_id, customer_id=o_id)

                obj = objs[0]
                info = eval(obj.customer_info)

                customer_sex = obj.customer.sex
                if info.get('customer_sex'):
                    customer_sex = info.get('customer_sex')

                customer_set_avator = obj.customer.set_avator
                if info.get('customer_set_avator'):
                    customer_set_avator = info.get('customer_set_avator')

                customer = b64decode(obj.customer.name)
                customer_name = customer
                if info.get('customer_name'):
                    customer_name = info.get('customer_name')

                customer_label = info.get('customer_label')
                print('customer_label-------> ', customer_label)
                try:
                    customer_demand = eval(info.get('customer_demand'))
                except Exception:
                    customer_demand = info.get('customer_demand')

                ret_data = {
                    'customer_sex':
                    customer_sex,
                    'customer_set_avator':
                    customer_set_avator,
                    'customer_name':
                    customer_name,
                    'customer_wechat':
                    customer,
                    'customer_phone':
                    info.get('customer_phone'),
                    'customer_professional':
                    info.get('customer_professional'),
                    'customer_birthday':
                    info.get('customer_birthday'),
                    'customer_remake':
                    info.get('customer_remake'),
                    'customer_demand':
                    customer_demand,
                    'customer_label': {
                        'xueli': customer_label.get('xueli'),
                        'diqu': customer_label.get('diqu'),
                        'guanxi': customer_label.get('guanxi'),
                        'qinmidu': customer_label.get('qinmidu'),
                        'yingxiangli': customer_label.get('yingxiangli'),
                        'qituxin': customer_label.get('qituxin'),
                        'shiyetaidu': customer_label.get('shiyetaidu'),
                        'renmaiquan': customer_label.get('renmaiquan'),
                        'jingjinengli': customer_label.get('jingjinengli'),
                    },
                    'create_datetime':
                    obj.create_datetime.strftime('%Y-%m-%d %H:%M:%S')
                }

                response.code = 200
                response.msg = '查询成功'
                response.data = {'ret_data': ret_data}
                response.note = {
                    'customer_sex': '用户性别 默认微信性别',
                    'customer_set_avator': '用户头像 默认微信头像',
                    'customer_name': '用户姓名 备注 默认微信名称',
                    'customer_wechat': '用户微信名称',
                    'customer_phone': '用户电话',
                    'customer_professional': '用户职业',
                    'customer_birthday': '用户生日',
                    'customer_remake': '用户备注',
                    'customer_demand': '用户需求',
                    'customer_label': {
                        'xueli': '学历ID',
                        'diqu': '地区名称',
                        'guanxi': '关系',
                        'qinmidu': '亲密度',
                        'yingxiangli': '影响力',
                        'qituxin': '企图心',
                        'shiyetaidu': '事业态度',
                        'renmaiquan': '人脉圈',
                        'jingjinengli': '经济能力',
                    }
                }

            # 查看客户详情(客户信息)
            elif oper_type == 'info_detail':
                # info_objs = models.SelectArticleLog.objects.filter(inviter_id=user_id, customer_id=o_id).order_by(order)
                # 谁看了我详情 右上角星星数据
                info_data = {
                    'xueli': '初中',
                    'diqu': '北京',
                    'guanxi': '朋友',
                    'qinmidu': 1,
                    'yingxiangli': 1,
                    'qituxin': 1,
                    'shiyetaidu': 1,
                    'renmaiquan': 1,
                    'jingjinengli': 1,
                    'customer_demand': []
                }
                information_objs = models.user_comments_customer_information.objects.filter(
                    user_id=user_id, customer_id=o_id)
                if information_objs:
                    information_obj = information_objs[0]
                    try:
                        customer_info = eval(information_obj.customer_info)
                    except Exception:
                        customer_info = information_obj.customer_info
                    customer_label = customer_info.get('customer_label')

                    try:
                        customer_demand = json.loads(
                            customer_info.get('customer_demand'))
                    except Exception:
                        customer_demand = customer_info.get('customer_demand')

                    info_data = {
                        'xueli': customer_label.get('xueli'),
                        'diqu': customer_label.get('diqu'),
                        'guanxi': customer_label.get('guanxi'),
                        'qinmidu': customer_label.get('qinmidu'),
                        'yingxiangli': customer_label.get('yingxiangli'),
                        'qituxin': customer_label.get('qituxin'),
                        'shiyetaidu': customer_label.get('shiyetaidu'),
                        'renmaiquan': customer_label.get('renmaiquan'),
                        'jingjinengli': customer_label.get('jingjinengli'),
                        'customer_demand': customer_demand,
                    }
                avg_stars_list = []
                for k, v in info_data.items():
                    if k in [
                            'qinmidu', 'yingxiangli', 'qituxin', 'shiyetaidu',
                            'renmaiquan', 'jingjinengli'
                    ]:
                        avg_stars_list.append(int(v))
                avg_stars = sum(avg_stars_list) / 6  # 右上角星星 平均值

                obj = models.Customer.objects.get(id=o_id)
                # 客户基本信息
                customer_info = {
                    'customer_id': obj.id,
                    'customer__name': b64decode(obj.name),
                    'customer__set_avator': obj.set_avator,
                    'info_data': info_data,
                    'avg_stars': avg_stars,
                }

                is_remake_count = models.customer_information_the_user.objects.filter(
                    user_id=user_id, customer_id=o_id).count()
                is_remake = False
                if is_remake_count >= 1:
                    is_remake = True

                response.code = 200
                response.msg = '查询成功'
                response.data = {
                    'customer_info': customer_info,
                    'is_remake': is_remake
                }
                response.note = {
                    'customer_id': "客户id",
                    'customer__name': "客户姓名",
                    'customer__set_avator': "客户头像",
                    'is_remake': "该客户是否有备注(如果有那么可删除)",
                    'qinmidu': '亲密度',
                    'yingxiangli': '影响力',
                    'qituxin': '企图心',
                    'shiyetaidu': '事业态度',
                    'renmaiquan': '人脉圈',
                    'jingjinengli': '经济能力',
                    'avg_stars': '星星平均值',
                }

            # 谁看了我(商品详情)
            elif oper_type == 'day_eye_goods_detail':
                # 更新 用户点击客户详情时间
                day_celery_objs = models.day_eye_celery.objects.filter(
                    status=2, user_id=user_id, customer_id=o_id)
                if day_celery_objs:
                    day_celery_objs.update(
                        last_click_customer=datetime.datetime.today(),
                        is_new_msg=False)

                objs = models.customer_look_goods_log.objects.filter(
                    user_id=user_id,
                    customer_id=o_id).select_related('goods').values(
                        'goods_id',
                        'goods__cover_img',
                        'goods__goods_name',
                    ).annotate(Count('id'))

                data_list = []
                for obj in objs:
                    goods_id = obj.get('goods_id')
                    detail_objs = models.customer_look_goods_log.objects.filter(
                        user_id=user_id, customer_id=o_id,
                        goods_id=goods_id).order_by('-create_datetime')

                    time_detail = []
                    for detail_obj in detail_objs:  # 详情
                        time_length = '1秒'
                        if detail_obj.close_datetime:
                            time_length = get_min_s(detail_obj.create_datetime,
                                                    detail_obj.close_datetime)

                        time_detail.append({
                            'create_datetime':
                            detail_obj.create_datetime.strftime(
                                '%Y-%m-%d %H:%M:%S'),
                            'time_length':
                            time_length
                        })
                    create_datetime = detail_objs[0].create_datetime
                    time_length = get_min_s(create_datetime,
                                            datetime.datetime.today())
                    data_list.append({
                        'goods_id':
                        goods_id,
                        'goods__cover_img':
                        obj.get('goods__cover_img'),
                        'goods__goods_name':
                        obj.get('goods__goods_name'),
                        'text':
                        '看了{}次-{}前'.format(obj.get('id__count'), time_length),
                        'time_detail':
                        time_detail,
                        'create_datetime':
                        create_datetime
                    })
                    data_list = sorted(data_list,
                                       key=lambda x: x['create_datetime'],
                                       reverse=True)
                response.code = 200
                response.msg = '查询成功'
                response.data = {'data_list': data_list}

            else:
                response.code = 402
                response.msg = '请求异常'

    else:
        response.code = 301
        response.msg = json.loads(forms_obj.errors.as_json())

    return JsonResponse(response.__dict__)
Exemple #16
0
def user_oper(request, oper_type, o_id):
    response = Response.ResponseObj()
    user_id = request.GET.get('user_id')
    print('request.POST -->', request.POST)
    if request.method == "POST":
        # 设置推荐分类
        if oper_type == "update_recommend_classify":
            classify_id = request.POST.get('classify_id[]')
            if classify_id:
                recommend_classify_list = [
                    int(i) for i in json.loads(classify_id)
                ]
                print("recommend_classify_list -->", recommend_classify_list)
                user_obj = models.Userprofile.objects.get(id=user_id)
                user_obj.recommend_classify = recommend_classify_list
                response.code = 200
                response.msg = "设置成功"
            else:
                response.code = 301
                response.msg = "分类id传参异常"

        # 修改头像
        elif oper_type == "update_head_portrait":
            img_path = request.POST.get('img_path')
            if img_path:
                models.Userprofile.objects.filter(id=user_id).update(
                    set_avator=img_path)
                response.code = 200
                response.msg = "修改成功"
            else:
                response.code = 301
                response.msg = "头像不能传参异常"

        # 修改姓名
        elif oper_type == "update_name":
            name = request.POST.get('name')
            if name:
                if len(name) <= 9:
                    name = b64encode(name)
                    models.Userprofile.objects.filter(id=user_id).update(
                        name=name)
                    response.code = 200
                    response.msg = "修改成功"
                else:
                    response.code = 301
                    response.msg = '名字最大长度为8'
            else:
                response.code = 301
                response.msg = "姓名传参异常"

        # 修改手机号
        elif oper_type == "update_phone_number":
            phone_number = request.POST.get('phone_number')
            if verify_mobile_phone_number(phone_number):
                models.Userprofile.objects.filter(id=user_id).update(
                    phone_number=phone_number)
                response.code = 200
                response.msg = "修改成功"

            else:
                response.code = 301
                response.msg = "请填写正确手机号"

        # 修改微信二维码
        elif oper_type == "update_qr_code":
            qr_code = request.POST.get('qr_code')
            if qr_code:
                models.Userprofile.objects.filter(id=user_id).update(
                    qr_code=qr_code)
                response.code = 200
                response.msg = "修改成功"
            else:
                response.code = 301
                response.msg = "微信二维码传参异常"

        # 修改个性签名
        elif oper_type == "update_signature":
            signature = request.POST.get('signature')
            if signature:
                models.Userprofile.objects.filter(id=user_id).update(
                    signature=signature)
                response.code = 200
                response.msg = "修改成功"
            else:
                response.code = 301
                response.msg = "个性签名传参异常"

        # 修改文章底部是否显示产品
        elif oper_type == "update_show_product":
            show_product = request.POST.get('show_product')
            flag = re.match(r"^[01]$", show_product)

            if show_product and flag:
                models.Userprofile.objects.filter(id=user_id).update(
                    show_product=int(show_product))
                response.code = 200
                response.msg = "修改成功"
            else:
                response.code = 301
                response.msg = "是否显示产品传参异常"

        # 设置消息提醒
        elif oper_type == 'message_remind_setting':
            objs = models.Userprofile.objects.filter(id=user_id)
            objs.update(message_remind=o_id)
            response.code = 200
            response.msg = '修改成功'

    else:
        # 查询我的会员 有效期 和剩余天数/会员类型
        if oper_type == "member_info":
            obj = models.Userprofile.objects.get(id=user_id)

            # vip 类型
            vip_type = obj.get_vip_type_display()

            # 时间对象 - 年月日时分秒
            now_datetime_obj = datetime.datetime.now()

            # 时间对象 - 年月日
            now_date_obj = datetime.date(now_datetime_obj.year,
                                         now_datetime_obj.month,
                                         now_datetime_obj.day)

            # 计算剩余天数
            remaining_days = (obj.overdue_date - now_date_obj).days

            # 如果已经过期,则剩余过期时间为0,vip类型为vip已过期
            if remaining_days <= 0:

                if remaining_days == 0:
                    remaining_days = '今'
                else:
                    remaining_days = 0
                    obj.vip_type = 0
                    obj.save()
                    obj = models.Userprofile.objects.get(id=user_id)
                vip_type = obj.get_vip_type_display()

            response.code = 200
            response.data = {
                'vip_type': vip_type,
                'overdue_date': obj.overdue_date.strftime('%Y-%m-%d'),
                'remaining_days': str(remaining_days) + '天'
            }

            response.note = {
                'vip_type': "vip类型",
                'overdue_date': "有效期至",
                'remaining_days': "剩余天数"
            }

        # 使用微信头像
        elif oper_type == 'use_wechat_avatar':
            objs = models.Userprofile.objects.filter(id=user_id)
            path = requests_img_download(objs[0].headimgurl)
            set_avator = update_qiniu(path)
            objs.update(set_avator=set_avator)
            response.code = 200
            response.msg = '修改成功'

        # 推广赚钱 展示数据
        elif oper_type == 'affiliate':
            user_pub_objs = models.Userprofile.objects
            response_data = {}
            user_obj = user_pub_objs.get(id=user_id)

            response_data[
                'cumulative_amount'] = user_obj.cumulative_amount  # 累计钱数
            response_data['make_money'] = user_obj.make_money  # 待提钱数

            invite_objs = user_pub_objs.filter(inviter_id=user_id)
            invite_friend_list = [
                i.get('id') for i in invite_objs.values('id')
            ]  # 该邀请人 邀请的好友ID

            print('invite_friend_list----------> ', invite_friend_list)
            # data_list = []
            # for i in invite_friend_list:
            #     data_list.insert(0, i)
            #     data_list.extend([i.get('id') for i in models.Userprofile.objects.filter(inviter_id=i).values('id')])
            # print('data_list--------------> ', data_list)

            invite_objs = models.Userprofile.objects.filter(
                id__in=invite_friend_list)
            response_data['invite_number_count'] = invite_objs.count()  # 邀请人数量

            # 查询充值自己分销的钱数
            number_clinch_deal_objs = models.distribute_money_log.objects.filter(
                inviter_id=user_id).order_by('-create_date')

            response_data[
                'number_clinch_count'] = number_clinch_deal_objs.count(
                )  # 成交人数

            if o_id and int(o_id) == 1:  # 邀请人数详情
                invite_number_list = []
                for invite_number_obj in invite_objs:

                    # 该用户未充值展示的话
                    prepaid_text = '用户未开通会员, 邀请付款有现金奖励{}!'.format(qian)
                    if invite_number_obj.renewal_log_set.count(
                    ) >= 1:  # 判断该用户是否充值
                        money_objs = models.distribute_money_log.objects.filter(
                            inviter_id=user_id, user_id=invite_number_obj.id)
                        if money_objs:
                            money = money_objs[0].money
                            prepaid_text = '成为会员, 加入账户{}元!{}'.format(
                                money, qian)

                    invite_number_list.append({
                        'create_user__set_avator':
                        invite_number_obj.set_avator,
                        'name':
                        b64decode(invite_number_obj.name),
                        'prepaid_text':
                        prepaid_text,
                    })
                response_data['invite_number_list'] = invite_number_list

            elif o_id and int(o_id) == 2:  # 成交人数
                number_clinch_deal_list = []
                for number_clinch_deal_obj in number_clinch_deal_objs:
                    number_clinch_deal_list.append({
                        'user_set_avator':
                        number_clinch_deal_obj.user.set_avator,
                        'user_name':
                        b64decode(number_clinch_deal_obj.user.name),
                        'price':
                        number_clinch_deal_obj.price,
                        'money':
                        number_clinch_deal_obj.money,
                    })
                response_data[
                    'number_clinch_deal_list'] = number_clinch_deal_list

            response.code = 200
            response.msg = '查询成功'
            response.data = response_data
            response.note = {
                'number_clinch_deal_list': {
                    'user_set_avator': '充值人头像',
                    'user_name': '充值人名称',
                    'price': '充值钱数',
                    'money': '应得钱数',
                },
                "invite_number_count": '邀请人数量',
                "cumulative_amount": '累计钱数',
                "make_money": '待提钱数',
                "number_clinch_count": '成交人数',
                "invite_number_list": '邀请人详情',
            }

        # 推广赚钱 二维码截图
        elif oper_type == 'affiliate_screenshots':
            user_obj = models.Userprofile.objects.get(id=user_id)
            img_path = user_obj.promote_earning_qr_code_pictures
            expire_date = user_obj.generate_models_qr_code_pictures_time
            if img_path and expire_date > datetime.date.today():  # 如果有 图片
                pass
            else:
                if img_path:
                    os.remove(img_path)  # 删除原图
                img_path, expire_date = tuiguang(user_id)
                user_obj.promote_earning_qr_code_pictures = img_path
                user_obj.generate_models_qr_code_pictures_time = expire_date
                user_obj.save()

            response.code = 200
            response.msg = '生成成功'
            response.data = {'path': img_path}

        # 查询消息提醒设置
        elif oper_type == 'get_message_remind':
            user_obj = models.Userprofile.objects.get(id=user_id)

            objs = models.Userprofile.message_remind_status
            data_list = []

            for obj in objs:
                is_choose = False
                if obj[0] == user_obj.message_remind:
                    is_choose = True

                data_list.append({
                    'id': obj[0],
                    'name': obj[1],
                    'is_choose': is_choose
                })
            response.code = 200
            response.msg = '查询成功'
            response.data = {'data_list': data_list}

        # 复制昵称
        elif oper_type == 'copy_nickname':
            obj = models.Customer.objects.get(id=o_id)
            response.code = 200
            response.msg = '查询成功'
            response.data = {'nickname': b64decode(obj.name)}

        # 判断该用户是否到期 (到期后不能转发任何东西)
        elif oper_type == 'is_whether':
            obj = models.Userprofile.objects.get(id=user_id)
            now = datetime.date.today()
            flag = False
            if obj.overdue_date >= now:
                flag = True
            response.code = 200
            response.data = {'flag': flag}

        # 判断是否有手机号
        elif oper_type == 'is_phone':
            obj = models.Userprofile.objects.get(id=user_id)
            flag = False
            if obj.phone_number:
                flag = True

            response.code = 200
            response.msg = '查询成功'
            response.data = {'phone': flag}

        else:
            response.code = 402
            response.msg = '请求异常'

    return JsonResponse(response.__dict__)
Exemple #17
0
def renewal(request):
    response = Response.ResponseObj()
    if request.method == "GET":
        forms_obj = SelectForm(request.GET)
        if forms_obj.is_valid():
            user_id = request.GET.get('user_id')
            current_page = forms_obj.cleaned_data['current_page']
            length = forms_obj.cleaned_data['length']
            print('forms_obj.cleaned_data -->', forms_obj.cleaned_data)
            order = request.GET.get('order', '-create_date')
            field_dict = {
                'id': '',
                'price': '__contains',
                'the_length': '',
                'renewal_number_days': '',
                'create_date': '',
                'create_user_id': '',
            }
            user_obj = models.Userprofile.objects.get(id=user_id)
            q = conditionCom(request, field_dict)

            print('q -->', q)
            objs = models.renewal_management.objects.filter(
                q, create_user_id=user_obj.enterprise_id).order_by(order)
            count = objs.count()

            if length != 0:
                start_line = (current_page - 1) * length
                stop_line = start_line + length
                objs = objs[start_line:stop_line]

            # 返回的数据
            ret_data = []

            for obj in objs:
                #  将查询出来的数据 加入列表
                ret_data.append({
                    'id':
                    obj.id,
                    'price':
                    obj.price,
                    'original_price':
                    obj.original_price,
                    'the_length_id':
                    obj.the_length,
                    'the_length':
                    obj.get_the_length_display(),
                    'create_user_id':
                    obj.create_user_id,
                    'create_user__name':
                    b64decode(obj.create_user.name),
                    'create_date':
                    obj.create_date.strftime('%Y-%m-%d %H:%M:%S')
                })
            #  查询成功 返回200 状态码
            response.code = 200
            response.msg = '查询成功'
            response.data = {
                'ret_data': ret_data,
                'data_count': count,
            }
            response.note = {
                'id': "id",
                'price': '钱数',
                'the_length_id': '时长ID(一个月, 一年....)',
                'the_length': '时长',
                'create_user_id': '创建人ID',
                'create_user__name': '创建人名字',
                'original_price': '原价',
                'create_date': '创建时间',
            }
        else:
            print("forms_obj.errors -->", forms_obj.errors)
            response.code = 402
            response.msg = "请求异常"
            response.data = json.loads(forms_obj.errors.as_json())
    return JsonResponse(response.__dict__)
Exemple #18
0
def template(request):
    response = Response.ResponseObj()
    if request.method == "GET":
        forms_obj = SelectForm(request.GET)
        if forms_obj.is_valid():
            current_page = forms_obj.cleaned_data['current_page']
            length = forms_obj.cleaned_data['length']
            print('forms_obj.cleaned_data -->', forms_obj.cleaned_data)
            is_all = request.GET.get('is_all')  #
            order = request.GET.get('order', '-create_datetime')
            field_dict = {
                'id': '',
                'name': '__contains',
                'template_class_id': '',
                'create_user_id': '',
                'create_datetime': '',
                'template_class__class_type': '',
            }
            q = conditionCom(request, field_dict)
            user_id = request.GET.get('user_id')
            user_obj = models.UserProfile.objects.get(id=user_id)
            if user_obj.inviter:
                user_id = user_obj.inviter_id

            obj = models.UserProfile.objects.get(id=user_id)

            if obj.role_id in [7, '7'] and not is_all:
                q.add(Q(create_user_id=user_id), Q.AND)
            else:
                # q.add(Q(create_user__role_id__in=admin_list), Q.AND)
                q.add(Q(create_user__role_id__in=[6, 8]), Q.AND)

            print('q----------> ', q)
            objs = models.Template.objects.select_related(
                'template_class', 'create_user').filter(q).order_by(order)
            count = objs.count()

            if length != 0 and not request.GET.get('id'):
                start_line = (current_page - 1) * length
                stop_line = start_line + length
                objs = objs[start_line:stop_line]

            # 返回的数据
            ret_data = []

            for obj in objs:
                template_class_id = ''
                template_class_name = ''
                template_class_type = ''
                if obj.template_class:
                    template_class_id = obj.template_class_id
                    template_class_name = obj.template_class.name
                    template_class_type = obj.template_class.class_type

                is_authorization = False
                apple_objs = obj.clientapplet_set.all()
                if apple_objs and apple_objs[0].is_authorization:
                    is_authorization = True

                xcx_appid = ''
                xcx_id = ''
                if apple_objs and apple_objs[0].template:
                    xcx_id = apple_objs[0].id
                    xcx_appid = apple_objs[0].appid

                # 将查询出来的数据 加入列表
                dict_data = {
                    'id':
                    obj.id,
                    'name':
                    obj.name,
                    'template_class_type':
                    template_class_type,
                    'is_authorization':
                    is_authorization,
                    'share_qr_code':
                    obj.share_qr_code,
                    'logo_img':
                    obj.logo_img,
                    'xcx_id':
                    xcx_id,
                    'qrcode':
                    obj.qrcode,
                    'xcx_qrcode':
                    obj.xcx_qrcode,
                    'baidu_xcx_qrcode':
                    obj.baidu_xcx_qrcode,
                    'xcx_appid':
                    xcx_appid,
                    'thumbnail':
                    obj.thumbnail,
                    'template_class_name':
                    template_class_name,
                    'template_class_id':
                    template_class_id,
                    'create_user__username':
                    base64_encryption.b64decode(obj.create_user.name),
                    'create_datetime':
                    obj.create_datetime.strftime('%Y-%m-%d %H:%M:%S'),
                }
                if request.GET.get('id'):
                    if user_obj.role_id in admin_list:  # 管理员角色的公共组件从redis中取出
                        # objs_two = models.Template.objects.select_related('create_user').filter(create_user__role_id__in=admin_list)
                        # data = []
                        # for i in objs_two:
                        #     if i.common_components:
                        #         data.extend(json.loads(i.common_components))
                        # dict_data['common_components'] = json.dumps(data)

                        redis_obj = get_redis_obj()
                        redis_key = "xcx::template::add_modify_common_components"

                        dict_data['common_components'] = redis_obj.get(
                            redis_key)

                    else:
                        dict_data['common_components'] = obj.common_components

                ret_data.append(dict_data)

            #  查询成功 返回200 状态码
            response.code = 200
            response.msg = '查询成功'
            response.data = {
                'ret_data': ret_data,
                'data_count': count,
            }
            response.note = {
                'id': "模板id",
                'name': '模板名称',
                'create_datetime': '创建时间',
                'share_qr_code': '分享二维码',
                'logo_img': 'logo图片',
                'is_authorization': '是否授权',
                "搜索条件": {
                    "name": "模板名称,支持模糊搜索",
                    "template_class_id": "模板分类id",
                    "create_user_id": "创建人id",
                }
            }
        else:
            response.code = 402
            response.msg = "请求异常"
            response.data = json.loads(forms_obj.errors.as_json())
    return JsonResponse(response.__dict__)
def fund_record_enquiry_oper(request, oper_type):
    response = Response.ResponseObj()
    user_id = request.GET.get('user_id')
    pub_user_obj = models.Enterprise.objects.get(id=user_id)
    role = int(pub_user_obj.role)

    if request.method == "GET":
        forms_obj = SelectForm(request.GET)
        if forms_obj.is_valid():
            current_page = forms_obj.cleaned_data['current_page']
            length = forms_obj.cleaned_data['length']

            # 总资金记录
            if oper_type == 'total_fund_record':
                # 一级分成钱数
                # one_division_money = models.distribute_money_log.objects.filter(
                #     inviter__enterprise_id=user_id,
                #     status=1
                # ).aggregate(Sum('money')).get('money__sum')
                #
                # # 二级分成钱数
                # two_division_money = models.distribute_money_log.objects.filter(
                #     inviter__enterprise_id=user_id,
                #     status=2
                # ).aggregate(Sum('money')).get('money__sum')

                status = request.GET.get('status')
                """
                status 区分 会员充值 和 提现记录 和 全部数据
                
                all 全部数据
                order 会员充值数据 (订单)
                withdrawal 提现数据
                """

                # 续费记录
                renewal_objs = models.renewal_log.objects.filter(
                    create_user__enterprise_id=user_id,
                    isSuccess=1).order_by('-create_date')

                # 提现记录
                withdrawal_amount_objs = models.withdrawal_log.objects.filter(
                    user__enterprise_id=user_id,
                    is_success=1).order_by('-create_date')

                total_amount_renewal = 0
                total_withdrawal_amount = 0
                total_amount_renewal_num = renewal_objs.aggregate(
                    Sum('price')).get('price__sum')  # 续费总金额
                total_withdrawal_amount_num = withdrawal_amount_objs.aggregate(
                    Sum('withdrawal_amount')).get(
                        'withdrawal_amount__sum')  # 提现总金额
                if total_amount_renewal_num:
                    total_amount_renewal = total_amount_renewal_num
                if total_withdrawal_amount_num:
                    total_withdrawal_amount = total_withdrawal_amount_num

                # 提现 数据
                if status == 'withdrawal':
                    total_amount_funds = total_withdrawal_amount
                    total_number_orders = withdrawal_amount_objs.count()
                    data_list = withdrawal(withdrawal_amount_objs)

                # 订单 数据
                elif status == 'order':
                    total_amount_funds = total_amount_renewal
                    total_number_orders = renewal_objs.count()
                    data_list = purchase_membership(renewal_objs)

                # 全部数据 (订单 提现)
                else:
                    total_amount_funds = total_amount_renewal - total_withdrawal_amount  # 资金总额
                    total_number_orders = renewal_objs.count(
                    ) + withdrawal_amount_objs.count()  # 订单总数
                    withdrawal_amount_list = purchase_membership(renewal_objs)
                    renewal_list = withdrawal(withdrawal_amount_objs)
                    renewal_list.extend(withdrawal_amount_list)
                    data_list = sorted(renewal_list,
                                       key=lambda x: x['create_date'],
                                       reverse=True)

                count = len(data_list)
                if length != 0:
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    data_list = data_list[start_line:stop_line]

                data_dict = {
                    'total_amount_funds': total_amount_funds,
                    'total_number_orders': total_number_orders,
                    'data_list': data_list,
                    'count': count,
                }

                ret_data = {}
                for k, v in data_dict.items():
                    if v is None:
                        v = 0
                    ret_data[k] = v

                response.code = 200
                response.msg = '查询成功'
                response.data = ret_data
                response.note = {
                    'total_amount_funds':
                    '资金总额',
                    'count':
                    '数据总数',
                    'total_number_orders':
                    '订单总数',
                    'data_list': [
                        {
                            'consumption_type': '消费类型',
                            'consumer_user': '******',
                            'create_date': '消费时间',
                            'price': '消费金额',
                            'order_number': '订单号',
                        },
                    ],
                }

            # 销售数据
            elif oper_type == 'sales_data':
                objs = models.distribute_money_log.objects.filter(
                    inviter__enterprise_id=user_id).order_by('-create_date')
                total_number_orders = objs.count()  # 总订单
                primary_distribution_orders = objs.filter(
                    status=1).count()  # 一级订单
                Secondary_distribution_orders = objs.filter(
                    status=2).count()  # 二级订单

                data_list = []
                for obj in objs:
                    data_list.append({
                        'distribution_level':
                        obj.get_status_display(),
                        'name':
                        b64decode(obj.user.name),
                        'inviter__name':
                        b64decode(obj.inviter.name),
                        'price':
                        obj.price,
                        'money':
                        obj.money,
                        'create_date':
                        obj.create_date.strftime('%Y-%m-%d %H:%M:%S'),
                    })
                count = len(data_list)
                if length != 0:
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    data_list = data_list[start_line:stop_line]

                ret_data = {
                    'total_number_orders': total_number_orders,
                    'primary_distribution_orders': primary_distribution_orders,
                    'Secondary_distribution_orders':
                    Secondary_distribution_orders,
                    'data_list': data_list,
                    'count': count,
                }

                response.code = 200
                response.msg = '查询成功'
                response.data = ret_data
                response.note = {
                    'total_number_orders':
                    '总订单',
                    'primary_distribution_orders':
                    '一级订单',
                    'Secondary_distribution_orders':
                    '二级订单',
                    'count':
                    '数据总数',
                    'data_list': [{
                        'distribution_level': '分销级别',
                        'name': '充值人名称',
                        'price': '充值金额',
                        'money': '分销金额',
                        'create_date': '创建时间',
                        'inviter__name': '分销人名称',
                    }],
                }

            # 提现数据
            elif oper_type == 'withdrawal_data':
                objs = models.withdrawal_log.objects.filter(
                    user__enterprise_id=user_id,
                    is_success=1).order_by('-create_date')
                total_amount_withdrawal = objs.count()

                data_list = []
                for obj in objs:
                    is_success = '提现失败'
                    if obj.is_success:
                        is_success = '提现成功'

                    data_list.append({
                        'create_date':
                        obj.create_date.strftime('%Y-%m-%d %H:%M:%S'),
                        'withdrawal_befor':
                        obj.withdrawal_befor,  # 提现前 余额
                        'withdrawal_amount':
                        obj.withdrawal_amount,  # 提现 金额
                        'withdrawal_after':
                        obj.withdrawal_after,  # 提现后 余额
                        'is_success':
                        is_success,
                        'wechat_returns_data':
                        obj.wechat_returns_data,
                        'name':
                        b64decode(obj.user.name),
                        'order_number':
                        obj.dingdanhao
                    })
                count = len(data_list)
                if length != 0:
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    data_list = data_list[start_line:stop_line]

                response.code = 200
                response.msg = '查询成功'
                response.data = {
                    'total_amount_withdrawal': total_amount_withdrawal,
                    'data_list': data_list,
                    'count': count,
                }
                response.note = {
                    'total_amount_withdrawal':
                    '销售总额',
                    'count':
                    '数据总数',
                    'data_list': [{
                        'create_date': '提现时间',
                        'withdrawal_befor': '提现前 余额',
                        'withdrawal_amount': '提现 金额',
                        'withdrawal_after': '提现后 余额',
                        'is_success': '是否成功',
                        'wechat_returns_data': '失败原因',
                        'name': '提现人名称',
                        'order_number': '提现订单号'
                    }]
                }

        else:
            response.code = 301
            response.msg = json.loads(forms_obj.error.as_json())

    else:
        if oper_type == '':
            print('--')

        else:
            response.code = 402
            response.msg = '请求异常'

    return JsonResponse(response.__dict__)
Exemple #20
0
def wechat_oper(request, oper_type):
    response = Response.ResponseObj()
    # print('request.GET---------------> ', request.GET)
    user_id = request.GET.get('user_id')
    if request.method == "POST":
        pass

    else:

        # 邀请成员页面展示信息
        if oper_type == "invite_members":
            # print('request.GET=====invite_members------------invite_members------------invite_members====', request.GET)
            team_id = request.GET.get('team_id')
            inviter_user_id = request.GET.get('inviter_user_id')  # 用户ID

            redirect_uri = '{host_url}api/invite_members/invitation_page/{o_id}'.format(
                host_url=host_url,
                o_id=team_id,  # 团队ID
            )

            if inviter_user_id:  # 多次转发
                redirect_url = forwarding_article(
                    pub=1,
                    redirect_uri=redirect_uri,
                    inviter_user_id=inviter_user_id)
                user_id = inviter_user_id

            else:  # 首次转发
                # 第一次链接 接收邀请页面
                redirect_url = forwarding_article(pub=1,
                                                  redirect_uri=redirect_uri,
                                                  user_id=user_id)

            obj = models.UserprofileTeam.objects.select_related(
                'team', 'user').get(team_id=team_id, user_id=user_id)
            team_name = obj.team.name  # 团队名称
            user_name = base64_encryption.b64decode(obj.user.name)  # 客户名称
            set_avator = obj.user.set_avator  # 客户头像
            response.code = 200
            response.data = {
                "open_weixin_url": redirect_url,
                "team_id": team_id,
                "team_name": team_name,
                "user_name": user_name,
                "set_avator": set_avator
            }

            response.note = {
                "open_weixin_url": "分享邀请成员URL",
                "team_name": "团队名称",
                "user_name": "邀请人名称",
                "set_avator": "邀请人头像"
            }

        # 用户分享文章①
        elif oper_type == 'forwarding_article':
            article_id = request.GET.get('article_id')
            inviter_user_id = request.GET.get(
                'inviter_user_id')  # 二级以上文章转发 需要传递用户ID
            pub = 'article_' + str(article_id)
            if inviter_user_id:  # 二次转发及以上
                open_weixin_url = forwarding_article(
                    pub=pub, inviter_user_id=inviter_user_id)
            else:  # 首次转发
                open_weixin_url = forwarding_article(
                    user_id=user_id,
                    pub=pub,
                )
            response.code = 200
            response.msg = '转发成功'
            response.data = {'open_weixin_url': open_weixin_url}

        # 用户分享微店宝贝①
        elif oper_type == 'share_micro_store':
            micro_store_baby = request.GET.get('micro_store_baby')  # 宝贝ID
            inviter_user_id = request.GET.get(
                'inviter_user_id')  # 二级以上微店宝贝转发 需要传递用户ID
            pub = 'micro_' + str(micro_store_baby)
            if inviter_user_id:
                open_weixin_url = forwarding_article(
                    inviter_user_id=inviter_user_id,
                    pub=pub,
                )
            else:
                open_weixin_url = forwarding_article(
                    user_id=user_id,
                    pub=pub,
                )
            response.code = 200
            response.msg = '转发成功'
            response.data = {'open_weixin_url': open_weixin_url}

        # 用户分享名片①
        elif oper_type == 'share_business_card':
            inviter_user_id = request.GET.get(
                'inviter_user_id')  # 二级以上微店宝贝转发 需要传递用户ID
            pub = 'card'
            if inviter_user_id:
                open_weixin_url = forwarding_article(
                    inviter_user_id=inviter_user_id,
                    pub=pub,
                )
            else:
                open_weixin_url = forwarding_article(
                    user_id=user_id,
                    pub=pub,
                )
            response.code = 200
            response.msg = '转发成功'
            response.data = {'open_weixin_url': open_weixin_url}

        # 分享的链接 跳转②
        elif oper_type == 'redirect_url':
            share_url = request.GET.get('share_url')
            redirect_uri = request.GET.get('redirect_uri')
            scope = request.GET.get('scope')
            state = request.GET.get('state')
            response_type = request.GET.get('response_type')

            if redirect_uri:
                redirect_url = str(share_url) + '&redirect_uri=' + str(
                    redirect_uri) + '&response_type=' + str(
                        response_type) + '&scope=' + str(
                            scope) + '&state=' + str(state)
            else:
                redirect_url = share_url
            return redirect(redirect_url)

    return JsonResponse(response.__dict__)
Exemple #21
0
def customer_invite_members(request, oper_type, o_id):
    response = Response.ResponseObj()
    print('rinvite_qrcodeequest.GET-----------> ', request.GET)
    print('rinvite_qrcodeequest.GET-----------> ', oper_type)
    print('reinvite_qrcodequest.POST-----------> ', o_id)

    # 客户点击确认邀请
    if oper_type == 'invite_members':
        code = request.GET.get('code')
        code_objs = models.save_code.objects.filter(save_code=code)
        if not code_objs:
            models.save_code.objects.create(save_code=code)

        team_id = o_id  # 团队id
        inviter_user_id = request.GET.get('state')  # 邀请人id
        data = get_ent_info(inviter_user_id)
        weichat_api_obj = weixin_gongzhonghao_api.WeChatApi(data)
        ret_obj = weichat_api_obj.get_openid(code)
        openid = ret_obj.get('openid')
        user_id = updateUserInfo(openid, inviter_user_id, ret_obj)

        # 添加该成员到团队中
        objs = models.UserprofileTeam.objects.filter(team_id=team_id,
                                                     user_id=user_id)
        if not objs:
            models.UserprofileTeam.objects.create(team_id=team_id,
                                                  user_id=user_id)

        obj = models.Userprofile.objects.get(id=user_id)
        # 此处跳转到天眼首页
        url = 'http://zhugeleida.zhugeyingxiao.com/tianyan/#/?token={token}&user_id={user_id}&classify_type=1'.format(
            token=obj.token, user_id=user_id)
        response.code = 200
        response.msg = "邀请成功"
        return redirect(url)

    # 邀请成员页面跳转 显示确认邀请页面
    elif oper_type == 'invitation_page':
        user_id = request.GET.get('state')
        obj = models.UserprofileTeam.objects.select_related(
            'team', 'user').get(team_id=o_id, user_id=user_id)

        team_name = obj.team.name  # 团队名称
        user_name = base64_encryption.b64decode(obj.user.name)  # 客户名称
        set_avator = obj.user.set_avator  # 客户头像

        url = '{host_url}api/invite_members/invite_members/{o_id}'.format(
            host_url=host_url,
            o_id=o_id,  # 团队ID
        )

        url = forwarding_article(pub=1, user_id=user_id, redirect_uri=url)
        redirect_url = '{host_url}#/share_invited_member?team_name={team_name}&user_name={user_name}&set_avator={set_avator}&inviter_user_id={inviter_user_id}&team_id={team_id}&open_weixin_url={open_weixin_url}'.format(
            host_url=host_url,
            team_name=team_name,
            user_name=user_name,
            set_avator=set_avator,
            open_weixin_url=url,
            team_id=o_id,
            inviter_user_id=user_id,
        )
        print('redirect_url============================> ', redirect_url)
        print('redirect_url============================> ',
              unquote(redirect_url))
        return redirect(redirect_url)

    return JsonResponse(response.__dict__)
Exemple #22
0
def posters_oper(request, oper_type, o_id):
    response = Response.ResponseObj()
    user_id = request.GET.get('user_id')

    if request.method == "POST":
        form_data = {
            'o_id': o_id,
            'create_user_id': user_id,
            'posters_url': request.POST.get('posters_url'),
            'posters_status': request.POST.get('posters_status', 1),
        }

        # 添加海报
        if oper_type == "add":
            forms_obj = AddForm(form_data)
            if forms_obj.is_valid():
                print("验证通过")
                obj = models.Posters.objects.create(**forms_obj.cleaned_data)
                response.code = 200
                response.msg = "添加成功"
                response.data = {'id': obj.id}
            else:
                print("验证不通过")
                response.code = 301
                response.msg = json.loads(forms_obj.errors.as_json())

        # 修改海报
        elif oper_type == "update":
            forms_obj = UpdateForm(form_data)
            if forms_obj.is_valid():
                print("验证通过")
                o_id, objs = forms_obj.cleaned_data['o_id']
                posters_url = forms_obj.cleaned_data['posters_url']
                posters_status = forms_obj.cleaned_data['posters_status']

                objs.update(posters_url=posters_url,
                            posters_status=posters_status)
                response.code = 200
                response.msg = "修改成功"

            else:
                print("验证不通过")
                response.code = 301
                response.msg = json.loads(forms_obj.errors.as_json())

        # 删除海报
        elif oper_type == "delete":
            # 删除 ID
            objs = models.Posters.objects.filter(id=o_id)
            if objs:
                objs.delete()
                response.code = 200
                response.msg = "删除成功"
            else:
                response.code = 302
                response.msg = '删除ID不存在'

        # 修改海报信息
        # elif oper_type == 'update_poster_info':
        #     form_data = {
        #         'title': request.POST.get('title'),  # 正标题
        #         'subtitle': request.POST.get('subtitle'),  # 副标题
        #         'name': request.POST.get('name'),  # 姓名
        #         'phone': request.POST.get('phone'),  # 电话
        #         'time': request.POST.get('time'),  # 时间
        #         'place': request.POST.get('place'),  # 地点
        #     }
        #
        #     PosterObj = UpdatePosterInfoForm(form_data)
        #     if PosterObj.is_valid():
        #         objs = models.Userprofile.objects.filter(id=user_id)
        #         objs.update(posters_info=PosterObj.data)
        #         response.code = 200
        #         response.msg = '修改成功'
        #     else:
        #         response.code = 301
        #         response.msg = json.loads(PosterObj.errors.as_json())

    else:

        # 海报打水印
        if oper_type == 'play_watermark':
            posters_status = request.GET.get('posters_status')  # 水印类型
            posters_objs = models.Posters.objects.filter(id=o_id)
            if posters_objs:
                img_path = posters_objs[0].posters_url  # 海报地址

                posters_status = int(posters_status)
                if posters_status == 1:
                    obj = models.Userprofile.objects.get(id=user_id)
                    data = {
                        'img_path': img_path,
                        'heading': obj.set_avator + '?imageView2/2/w/300',
                        'name': b64decode(obj.name),
                        'phone': obj.phone_number,
                        'posters_status': posters_status,
                    }
                    watermark_objs = watermark(data)  # 实例化
                    path = watermark_objs.posters_play_watermark()
                    response.code = 200
                    response.data = {'path': path}

                else:
                    place = request.GET.get('place')  # 地址
                    time = request.GET.get('time')  # 时间
                    fu_title = request.GET.get('subtitle')  # 副标题
                    zhu_title = request.GET.get('title')  # 主标题
                    name = request.GET.get('name')  # 姓名
                    phone = request.GET.get('phone')  # 电话

                    data = {
                        'posters_status': posters_status,
                        'img_path': img_path,
                        'name': name,
                        'phone': phone,
                        'zhu_title': zhu_title,
                        'fu_title': fu_title,
                        'time': time,
                        'place': place,
                    }
                    form = posterInfoForm(data)
                    if form.is_valid():
                        watermark_objs = watermark(data)  # 实例化
                        path = watermark_objs.posters_play_watermark()
                        response.code = 200
                        response.msg = '生成成功'
                        response.data = {'path': path}
                    else:
                        response.code = 301
                        response.msg = json.loads(form.errors.as_json())

            else:
                response.code = 301
                response.msg = '海报被删除'

        else:
            response.code = 402
            response.msg = "请求异常"

    return JsonResponse(response.__dict__)
def comment_management(request, oper_type):
    response = Response.ResponseObj()
    user_id = request.GET.get('user_id')
    if request.method == 'POST':


        # 手机端添加接口  (获取用户的评论内容提交到接口保存)③
        if oper_type == "mobile_phone_reviews":
            iccid = request.POST.get('iccid')
            imsi = request.POST.get('imsi')

            objs = models.XiaohongshuPhone.objects.filter(
                iccid=iccid,
                imsi=imsi
            )
            if not objs:
                response.code = 301
                response.msg = '该设备不存在'

            else:
                obj = objs[0]
                user_objs = obj.xiaohongshuuserprofile_set.all()
                if not user_objs:
                    response.code = 301
                    response.msg = '该设备 未关联小红书客户'
                else:
                    xhs_user_id = user_objs[0].id
                    form_data = {
                        'xhs_user_id': xhs_user_id, # 小红书用户
                        'head_portrait': request.POST.get('head_portrait'), # 头像
                        'nick_name': request.POST.get('nick_name'), # 昵称
                        'comments_status': request.POST.get('comments_status'), # 评论类型
                        'comments_content': request.POST.get('comments_content'), # 评论内容
                        'article_picture_address': request.POST.get('article_picture_address'), # 文章图片地址
                        'article_notes_id': request.POST.get('article_notes_id'), # 文章笔记
                        'screenshots_address': request.POST.get('screenshots_address'), # 截图地址
                    }
                    forms_obj = mobilePhoneReviews(form_data)
                    if forms_obj.is_valid():
                        forms_data = forms_obj.cleaned_data
                        article_picture_address = forms_data.get('article_picture_address')
                        nick_name = forms_data.get('nick_name')
                        comments_content = forms_data.get('comments_content')
                        response.code = 200



                        rule_not_message_flag = True # 是否创建
                        rule_not_message = ['通知消息', '已被删除', '违规', '收藏', '新增关注', '评记']
                        for i in rule_not_message:
                            if i in comments_content:
                                rule_not_message_flag = False
                                break
                        article_notes_id = forms_data.get('article_notes_id')
                        if rule_not_message_flag and article_picture_address: # 如果没有截图不记录
                            objs = models.littleRedBookReviewForm.objects.filter(
                                        xhs_user_id=xhs_user_id,
                                        nick_name=nick_name,
                                        comments_content=comments_content
                                    )
                            print("**forms_obj.cleaned_data -->", forms_obj.cleaned_data)

                            if not objs and forms_data.get('comments_content') != "该评论已被删除":
                                obj = models.littleRedBookReviewForm.objects.create(**forms_obj.cleaned_data)
                                # 异步传递给小红书后台
                                form_data['link'] = forms_data.get('screenshots_address')
                                form_data['name'] = forms_data.get('nick_name')
                                form_data['content'] = forms_data.get('comments_content')
                                form_data['head_portrait'] = forms_data.get('head_portrait')
                                form_data['comment_id'] = obj.id
                                form_data['id'] = article_notes_id
                                form_data['transfer_type'] = 1  # 传递到小红书后台
                                form_data['platform'] = obj.xhs_user.platform
                                asynchronous_transfer_data.delay(form_data)
                                response.msg = '创建成功'
                        else:
                            response.msg = '通知消息, 未收录'


                    else:
                        response.code = 301
                        response.msg = json.loads(forms_obj.errors.as_json())

            create_xhs_admin_response(request, response, 3) # 创建请求日志(手机)

        # 创建回复评论 小红书后台添加接口   (博主回复内容)④
        elif oper_type == 'reply_comment':
            form_data = {
                'comment_id': request.POST.get('comment_id'),               # 回复哪个评论ID
                'comment_type': request.POST.get('comment_type'),           # (回复评论类型 1回复评论 2 回复私信)
                'comment_response': request.POST.get('comment_response'),   # 回复评论内容
            }

            forms_obj = ReplyCommentForm(form_data)
            if forms_obj.is_valid():
                comment_type = forms_obj.cleaned_data.get('comment_type')

                is_perform = True
                # if comment_type in [2, '2']:
                #     is_perform = False

                data = {
                    'comment_id': forms_obj.cleaned_data.get('comment_id'),
                    'comment_response': forms_obj.cleaned_data.get('comment_response'),
                    'comment_type': comment_type,
                    'is_perform': is_perform,
                }
                print(data)
                obj = models.commentResponseForm.objects.create(**data)
                response.code = 200
                response.msg = '创建成功'
                response.data = obj.id

            else:
                response.code = 301
                response.msg = json.loads(forms_obj.errors.as_json())
            create_xhs_admin_response(request, response, 2) # 创建请求日志(小红书后台请求后台)

        # 刪除评论(小红书请求)
        elif oper_type == 'delete_comment':
            form_data = {
                'comment_id': request.POST.get('comment_id'),  # 删除哪个评论ID
            }
            form_obj = DeleteComment(form_data)
            if form_obj.is_valid():
                comment_id, objs = form_obj.cleaned_data.get('comment_id')
                delete = 2
                if objs[0].comments_content in ['该评论已被删除', '该评论违规']:
                    models.commentResponseForm.objects.filter(comment=objs).delete()
                    delete = 3
                    msg = '删除成功'
                    code = 0

                else:
                    code = 200
                    msg = '操作成功, 等待删除...'

                objs.update(delete=delete)
                response.code = code
                response.msg = msg

            else:
                response.code = 301
                response.msg = json.loads(form_obj.errors.as_json())
            create_xhs_admin_response(request, response, 2) # 创建请求日志(小红书后台请求后台)

        # 手机端 删除评论是否完成
        elif oper_type == 'reply_comment_is_delete':
            id = request.POST.get('comment_id')      # 删除的消息ID
            objs = models.littleRedBookReviewForm.objects.filter(
                id=id
            )
            if objs:
                models.commentResponseForm.objects.filter(comment_id=id).delete()
                objs.update(
                    delete=3
                )
                data = {
                    'transfer_type': 4,
                    'id': id
                }
                asynchronous_transfer_data.delay(data)
                create_xhs_admin_response(request, response, 3)  # 创建请求日志(手机端)
            response.code = 200
            response.msg = '操作完成'

        # 手机端 通知回复消息完成时间⑥
        elif oper_type == 'reply_comment_is_success':
            now = datetime.datetime.today()
            form_data = {
                'id': request.POST.get('comment_id'),  # 回复的消息ID
                'comment_completion_time': request.POST.get('comment_completion_time', now),  # 完成时间
            }

            form_objs = ReplyCommentIsSuccess(form_data)
            if form_objs.is_valid():
                comment_id = form_objs.cleaned_data.get('id')
                comment_completion_time = form_objs.cleaned_data.get('comment_completion_time')

                objs = models.commentResponseForm.objects.filter(id=comment_id)
                objs.update(
                    comment_completion_time=comment_completion_time
                )
                response.code = 200
                response.msg = '成功'

                # 异步传递给小红书后台
                form_data['transfer_type'] = 2
                form_data['platform'] = objs[0].comment.xhs_user.platform
                asynchronous_transfer_data.delay(form_data)

            else:
                response.code = 301
                response.msg = json.loads(form_objs.errors.as_json())
            create_xhs_admin_response(request, response, 3)  # 创建请求日志(手机端)

        # 关联 笔记链接 和 文章截图②
        elif oper_type == 'associated_screenshots':
            form_data = {
                'notes_url': request.POST.get('notes_url'),  # 笔记回链
                'screenshots': request.POST.get('screenshots')  # 文章截图
            }
            print('form_data-----------> ', form_data)
            code = 301
            form_obj = AssociatedScreenshots(form_data)
            if form_obj.is_valid():
                forms_data = form_obj.cleaned_data
                screenshots = forms_data.get('screenshots')
                screenshots = screenshots.split('?')[0]
                notes_url, biji_id = forms_data.get('notes_url')

                objs = models.noteAssociationScreenshot.objects.filter(
                    screenshots=screenshots,
                    notes_id=biji_id
                )
                if not objs:

                    models.noteAssociationScreenshot.objects.create(
                        screenshots=screenshots,
                        notes_id=biji_id
                    )

                    code = 200
                    msg = '关联成功'
                    response.data = biji_id
                else:
                    code = 200
                    msg = '重复关联'
                    response.data = biji_id

            else:
                iccid = request.POST.get('iccid')
                imsi = request.POST.get('imsi')
                phone_objs = models.XiaohongshuPhone.objects.filter(iccid=iccid, imsi=imsi)
                device_number = '设备不存在, iccid:{}, imsi:{}'.format(iccid, imsi)
                if phone_objs:
                    device_number = phone_objs[0].name
                content = '{datetime}关联笔记截图异常, \n设备号:{device_number}, \n笔记回链:{notes_url}'.format(
                    datetime=datetime.datetime.today(),
                    device_number=device_number,
                    notes_url=form_data.get('notes_url')
                )
                send_error_msg(content, 2)
                msg = json.loads(form_obj.errors.as_json())

            response.code = code
            response.msg = msg
            create_xhs_admin_response(request, response, 3)  # 创建请求日志(手机端)

        # 修改 回复(管理/私信) 是否开放
        elif oper_type == 'whether_the_modification_open':
            comment_id = request.POST.get('comment_id')
            objs = models.commentResponseForm.objects.filter(id=comment_id)
            if objs:
                obj = objs[0]
                obj.is_perform = bool(1-obj.is_perform)
                obj.save()
                response.code = 200
                response.msg = '修改成功'

            else:
                response.code = 301
                response.msg = '修改的任务不存在'



        # 回复评论管理 发布异常(手机)
        elif oper_type == 'comment_management_changed_publish_exceptions':
            comment_id = request.POST.get('comment_id')
            objs = models.commentResponseForm.objects.filter(
                id=comment_id,
                comment_completion_time__isnull=True
            )
            if objs:
                objs.update(
                    is_error=True,
                    comment_completion_time=datetime.datetime.today()
                )
                response.code = 200
                response.msg = '发布异常成功'
            else:
                response.code = 301
                response.msg = '该任务不存在或已发布'

        # 回复评论管理 发布正常(后台)
        elif oper_type == 'reply_comment_management_release_normal':
            comment_id = request.POST.get('comment_id')
            objs = models.commentResponseForm.objects.filter(id=comment_id)
            if objs:
                objs.update(
                    is_error=False,
                    comment_completion_time=None,
                )
                response.code = 200
                response.msg = '重新发布成功'

            else:
                response.code = 301
                response.msg = '该任务不存在'

        # 评论改为删除异常 (手机)
        elif oper_type == 'comment_post_exception_instead':
            comment_id = request.POST.get('comment_id')
            objs = models.littleRedBookReviewForm.objects.filter(id=comment_id)
            if objs and objs[0].is_error == False:
                objs.update(is_error=True)
                response.code = 200
                response.msg = '删除异常成功'

            else:
                if objs:
                    response.msg = '该评论不存在'
                else:
                    response.msg = '该评论已经为删除异常'
                response.code = 301


        """当 手机找不到 评论 和 回复评论 时 改为发布异常"""

    else:

        order = request.GET.get('order', '-create_datetime')

        # 查询 截图和 笔记是否关联①
        if oper_type == 'determine_correlation':

            flag = False
            iccid = request.GET.get('iccid')
            imsi = request.GET.get('imsi')
            screenshots = request.GET.get('screenshots') # 文章截图
            # notes_url = request.GET.get('notes_url') # 笔记回链
            biji_id = ''
            if screenshots:
                objs = models.noteAssociationScreenshot.objects.filter(
                    screenshots=screenshots,
                    notes__user_id__phone_id__iccid=iccid,
                    notes__user_id__phone_id__imsi=imsi,
                )
                if objs:
                    obj = objs[0]
                    biji_id = obj.notes_id
                    flag = True

                response.code = 200
                response.msg = '查询完成'
                response.data = {
                    'flag': flag,
                    'biji_id': biji_id
                }

            else:
                response.code = 301
                response.msg = '参数异常'
            create_xhs_admin_response(request, response, 3)  # 创建请求日志(手机端)

        # 查询回复任务(手机)⑤
        elif oper_type == 'query_reply_task':
            form_data = {
                'imsi': request.GET.get('imsi'),
                'iccid': request.GET.get('iccid'),
                'platform': request.GET.get('platform', 1),
            }
            form_obj = QueryReplyTask(form_data)
            if form_obj.is_valid():
                iccid = form_obj.cleaned_data.get('iccid')
                platform = form_obj.cleaned_data.get('platform')

                objs = models.commentResponseForm.objects.select_related('comment').filter(
                    comment__xhs_user__phone_id_id=iccid,
                    comment_completion_time__isnull=True,
                    comment__isnull=False,
                    comment_response__isnull=False,
                    is_perform=True,
                    is_error=False,
                    comment__xhs_user__platform=platform
                ).order_by('create_datetime')

                if objs:
                    obj = objs[0]
                    comment_response = obj.comment_response

                    ret_data = {
                        'comment_type': obj.comment_type,
                        'comments_content': obj.comment.comments_content,
                        'nick_name': obj.comment.nick_name,
                        'article_picture_address': obj.comment.article_picture_address,
                        'screenshots_address': obj.comment.screenshots_address,
                        'id': obj.id,
                        'platform': obj.comment.xhs_user.platform,
                        'comment_response': comment_response,
                        'create_datetime': obj.create_datetime.strftime('%Y-%m-%d %H:%M:%S'),
                    }

                    response.msg = '查询成功'
                    response.data = ret_data
                    response.note = {
                        'id': '回复评论ID',
                        'comment_response': '回复评论内容',
                        'create_datetime': '创建时间',
                        'screenshots_address': '文章截图',
                        'nick_name': '昵称',
                        'comments_content': '评论内容',
                        'comment_type': '评论类型 1为回复评论 2为回复私信',
                    }

                else:
                    response.msg = '无任务'

                response.code = 200
            else:
                response.code = 301
                response.msg = json.loads(form_obj.errors.as_json())
            create_xhs_admin_response(request, response, 3)  # 创建请求日志(手机端)

        # 查询删除评论任务(手机)
        elif oper_type == 'query_delete_comment':
            form_data = {
                'imsi': request.GET.get('imsi'),
                'iccid': request.GET.get('iccid'),
                'platform': request.GET.get('platform'),
            }
            form_obj = QueryDeleteComment(form_data)
            if form_obj.is_valid():
                iccid = form_obj.cleaned_data.get('iccid')
                platform = form_obj.cleaned_data.get('platform')

                objs = models.littleRedBookReviewForm.objects.filter(
                    xhs_user__phone_id_id=iccid,
                    delete=2,
                    is_error=False,
                    xhs_user__platform=platform
                )
                data = {}
                if objs:
                    obj = objs[0]
                    data = {
                        'id': obj.id,
                        'comments_content':obj.comments_content,
                        'screenshots_address':obj.screenshots_address,
                        'phone_name':obj.xhs_user.phone_id.name,
                        'user_name':obj.nick_name,
                        'platform':obj.xhs_user.platform,
                    }

                else:
                    response.msg = '无任务'
                response.code = 200
                response.data = data
                response.note = {
                    'id': '删除评论ID',
                    'comments_content': '删除评论',
                    'screenshots_address': '截图',
                    'phone_name': '设备名称',
                    'user_name': '小红书博主名称',
                }

            else:
                response.code = 301
                response.msg = json.loads(form_obj.errors.as_json())
            create_xhs_admin_response(request, response, 3)  # 创建请求日志(手机端)

        # 查询评论(胡蓉后台)
        elif oper_type == 'query_comments':
            forms_obj = SelectForm(request.GET)
            if forms_obj.is_valid():
                current_page = forms_obj.cleaned_data['current_page']
                length = forms_obj.cleaned_data['length']
                field_dict = {
                    'id': '',
                    'comments_status': '',
                    'xhs_user_id': '',
                    'xhs_user__phone_id__name': '__contains',
                    'delete': '',
                    'xhs_user__name': '__contains',
                    'comments_content': '__contains',
                    'article_notes__isnull': '',
                }

                q = conditionCom(request, field_dict)

                objs = models.littleRedBookReviewForm.objects.filter(q).order_by(order)

                count = objs.count()

                if length != 0:
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    objs = objs[start_line: stop_line]

                ret_data = []
                for obj in objs:
                    article_notes_title = ''
                    article_notes_id = ''
                    if obj.article_notes:
                        article_notes_id = obj.article_notes_id
                        article_notes_title = b64decode(obj.article_notes.title)

                    ret_data.append({
                        'id': obj.id,
                        'phone_name': obj.xhs_user.phone_id.name,
                        'phone_id': obj.xhs_user.phone_id_id,
                        'phone_number': obj.xhs_user.phone_id.phone_num,
                        'xhs_user_id': obj.xhs_user_id,
                        'xhs_user_name': obj.xhs_user.name,
                        'head_portrait': obj.head_portrait,
                        'screenshots_address': obj.screenshots_address,
                        'nick_name': obj.nick_name,
                        'comments_status_id': obj.comments_status,
                        'comments_status': obj.get_comments_status_display(),
                        'comments_content': obj.comments_content,
                        'article_picture_address': obj.article_picture_address,
                        'delete_id': obj.delete,
                        'delete': obj.get_delete_display(),
                        'article_notes_id': article_notes_id,
                        'article_notes_title': article_notes_title,
                        'create_datetime': obj.create_datetime.strftime('%Y-%m-%d %H:%M:%S'),
                    })
                response.note = {
                    'xhs_user_id': '小红书用户ID',
                    'xhs_user_name': '小红书用户名称',
                    'head_portrait': '头像',
                    'nick_name': '昵称',
                    'comments_status_id': '评论类型ID',
                    'screenshots_address': '截图地址',
                    'comments_status': '评论类型',
                    'comments_content': '评论内容',
                    'article_picture_address': '文章图片地址',
                    'article_notes_id': '笔记ID',
                    'create_datetime': '创建时间',
                }
                response.code = 200
                response.msg = '查询成功'
                response.data = {
                    'ret_data':ret_data,
                    'count':count,
                    'comments_choices': [{'id':i[0], 'name':i[1]} for i in models.littleRedBookReviewForm.comments_choices],
                    'delete_choices': [{'id':i[0], 'name':i[1]} for i in models.littleRedBookReviewForm.delete_choices],
                }

            else:
                response.code = 301
                response.msg = json.loads(forms_obj.errors.as_json())

        # 查询回复评论(胡蓉后台)
        elif oper_type == 'query_reply_comment':
            forms_obj = SelectForm(request.GET)
            if forms_obj.is_valid():
                current_page = forms_obj.cleaned_data['current_page']
                length = forms_obj.cleaned_data['length']
                field_dict = {
                    'id': '',
                    'comment_id': '',
                    'comment_type': '',
                    'comment_response': '',
                    'comment_completion_time': '__isnull',
                    'comment__xhs_user__name': '__contains',
                    'comment__xhs_user__phone_id__name': '__contains',
                }

                q = conditionCom(request, field_dict)
                objs = models.commentResponseForm.objects.filter(q).order_by(order)

                count = objs.count()
                if length != 0:
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    objs = objs[start_line: stop_line]
                ret_data = []
                for obj in objs:
                    comment_completion_time = obj.comment_completion_time
                    if comment_completion_time:
                        comment_completion_time = obj.comment_completion_time.strftime('%Y-%m-%d %H:%M:%S')

                    phone_id = ''
                    phone_name = ''
                    phone_number = ''
                    if obj.comment.xhs_user.phone_id:
                        phone_id = obj.comment.xhs_user.phone_id_id
                        phone_name = obj.comment.xhs_user.phone_id.name
                        phone_number = obj.comment.xhs_user.phone_id.phone_num

                    try:
                        comment_response =  str(base64.b64decode(obj.comment_response), 'utf8')
                    except Exception:
                        comment_response = obj.comment_response

                    ret_data.append({
                        'id': obj.id,
                        'phone_id': phone_id,
                        'phone_name': phone_name,
                        'phone_number': phone_number,
                        'xhs_user_name': obj.comment.xhs_user.name,
                        'nick_name': obj.comment.nick_name,
                        'head_portrait': obj.comment.head_portrait,
                        'comments_content': obj.comment.comments_content,
                        'comment_id': obj.comment_id,
                        'comment_response':comment_response,
                        'comment_type_id':obj.comment_type,
                        'comment_type':obj.get_comment_type_display(),
                        'is_perform':obj.is_perform,
                        'is_error':obj.is_error,
                        'comment_completion_time': comment_completion_time,
                        'create_datetime':obj.create_datetime.strftime('%Y-%m-%d %H:%M:%S')
                    })
                response.code = 200
                response.msg = '查询成功'
                response.data = {
                    'ret_data': ret_data,
                    'count': count,
                    'comment_type_choices': [{'id':i[0], 'name':i[1]} for i in models.commentResponseForm.comment_type_choices]
                }

        # 查询评论最后一次更新时间
        elif oper_type == 'query_when_comments_were_last_updated':
            form_data = {
                'iccid':request.GET.get('iccid'),
                'imsi': request.GET.get('imsi')
            }
            objs = models.XiaohongshuPhone.objects.filter(**form_data)
            if objs:
                obj = objs[0]
                comment_last_updated = obj.comment_last_updated
                deletionTime = (datetime.datetime.today() - datetime.timedelta(hours=12))  # 当前时间减去12小时
                more_than_12_hours = False
                if comment_last_updated:
                    comment_last_updated = comment_last_updated.strftime('%Y-%m-%d %H:%M:%S')
                    if deletionTime > obj.comment_last_updated:
                        more_than_12_hours = True
                else:
                    more_than_12_hours = True

                response.data = {
                    'comment_last_updated': comment_last_updated,
                    'more_than_12_hours': more_than_12_hours,
                }
                response.note = {
                    'comment_last_updated': '最后一次提交评论时间',
                    'more_than_12_hours': '最后一次提交评论时间 是否超过12小时 True已超过 False未超过',
                }
            response.code = 200

        # 手动关联评论/笔记 (胡蓉后台)
        elif oper_type == 'manually_associate_comments_notes':
            article_notes_id = request.GET.get('article_notes_id')
            comment_id = request.GET.get('comment_id')
            code = 301

            objs = models.littleRedBookReviewForm.objects.filter(id=comment_id)
            if objs:
                if not models.XiaohongshuBiji.objects.filter(id=article_notes_id):
                    msg = '笔记不存在'

                else:
                    objs.update(article_notes_id=article_notes_id)
                    code = 200
                    msg = '修改成功'
                    form_data = {
                        'transfer_type': 7,
                        'id': article_notes_id,
                        'comment_id': comment_id,
                    }
                    asynchronous_transfer_data.delay(form_data)

            else:
                msg = '评论不存在'

            response.code = code
            response.msg = msg

        else:
            response.code = 402
            response.msg = '请求异常'

    return JsonResponse(response.__dict__)
Exemple #24
0
def external_login(request):
    response = Response.ResponseObj()
    external_token = request.GET.get('token')  # 平台token
    source = request.GET.get('source')  # 来自哪个平台
    userId = request.GET.get('userId')  # 来自哪个平台

    login_type = 2

    is_login_flag = True
    if source == 'dingdong':  # 叮咚营销宝
        pass

    else:
        is_login_flag = False
        response.code = 402
        response.msg = '请求错误'

    if is_login_flag:  # 验证通过
        user_data = {
            'role_id': 7,  # 默认普通用户
            'token': external_token,
            'login_type': login_type,
            'ding_dong_marketing_treasure_user_id': userId,
        }
        objs = models.UserProfile.objects.filter(token=external_token)
        if objs:
            obj = objs[0]

        else:
            get_user_info_url = 'http://a.yingxiaobao.org.cn/api/user/info/{}?token={}&user_id={}'.format(
                userId, external_token, userId)
            ret = requests.get(get_user_info_url)
            info_data = ret.json().get('data')
            user_data['username'] = base64_encryption.b64encode(
                info_data.get('username'))
            user_data['head_portrait'] = info_data.get('head_portrait')
            obj = models.UserProfile.objects.create(**user_data)

        role_obj = models.Role.objects.filter(id=obj.role_id)
        data_list = []
        for i in role_obj[0].permissions.all():
            data_list.append(i.name)

        inviter = 0
        if obj.inviter:
            inviter = 1

        try:
            username = base64_encryption.b64decode(obj.username)
        except Exception:
            username = obj.username

        response.code = 200
        response.msg = '登录成功'
        response.data = {
            'username': username,
            'token': obj.token,
            'id': obj.id,
            'role_id': obj.role_id,
            'role_name': obj.role.name,
            'head_portrait': obj.head_portrait,
            'permissions_list': data_list,
            'inviter': inviter,
        }

    return JsonResponse(response.__dict__)
Exemple #25
0
def customer_view_articles_send_msg(request):
    response = Response.ResponseObj()
    try:
        check_type = request.POST.get('check_type')
        title = request.POST.get('title')
        customer_id = request.POST.get('customer_id')
        user_id = request.POST.get('user_id')

        if is_send_msg(user_id):
            user_obj = models.Userprofile.objects.get(id=user_id)
            customer_obj = models.Customer.objects.get(id=customer_id)

            # 区分普通用户和 会员用户 会员用户发送查看人名称
            if user_obj.overdue_date >= datetime.date.today():
                msg = '有人看了您的{}\n\n《{}》\n查看人:{}\n\n查看点击下方【天眼】\n{}'.format(
                    check_type, title, b64decode(customer_obj.name), xiajiantou
                )
            else:
                msg = '有人看了您的{}\n\n《{}》\n\n查看点击下方【天眼】\n{}'.format(
                    check_type, title, xiajiantou
                )

            user_info = get_ent_info(user_id)
            weixin_objs = WeChatApi(user_info)
            post_data = {
                        "touser": user_info.get('openid'),
                        "msgtype": "text",
                        "text": {
                            "content":msg
                        }
                }

            # 发送客服消息
            print('-------------记录最后一次发送时间')
            post_data = bytes(json.dumps(post_data, ensure_ascii=False), encoding='utf-8')
            weixin_objs.news_service(post_data)
            user_obj.last_message_remind_time = datetime.datetime.now()
            user_obj.save()
            response.code = 200
        else:
            send_msg_objs = models.summary_message_reminder.objects.filter(
                user_id=user_id,
                customer_id=customer_id,
                title=title,
                check_type=check_type,
                is_send=0
            )
            if send_msg_objs:
                send_msg_objs.update(
                    select_num = F('select_num') + 1
                )
            else:
                models.summary_message_reminder.objects.create(
                    user_id=user_id,
                    customer_id=customer_id,
                    title=title,
                    check_type=check_type,
                )
    except Exception as e:
        msg = '警告:{}, \n错误:{}, \n时间:{}'.format(
            'celery_客户查看 文章/微店 给用户发送消息---警告',
            e,
            datetime.datetime.today()
        )
        celery_error_warning(msg)
    return JsonResponse(response.__dict__)
Exemple #26
0
def article(request):
    response = Response.ResponseObj()
    user_id = request.GET.get('user_id')
    team_list = request.GET.get('team_list')
    if request.method == "GET":
        forms_obj = SelectForm(request.GET)
        if forms_obj.is_valid():
            redis_key = 'tianyan_article_fixed_{}'.format(user_id)
            rc = redis.StrictRedis(host='redis_host',
                                   port=6379,
                                   db=7,
                                   decode_responses=True)

            current_page = forms_obj.cleaned_data['current_page']
            length = forms_obj.cleaned_data['length']

            field_dict = {
                'id': '',
                'title': '__contains',
                'classify': '',
                'create_user_id': '__in',
                'create_datetime': '',
                'source_link': '',
            }
            q = conditionCom(request, field_dict)
            user_obj = models.Userprofile.objects.get(id=user_id)
            """
            用户查看文章页面时 点击别的操作 会刷新页面  需求: 点击别的操作不刷新页面 数据还是原来的 只有点击刷新 才变页面数据
            解决方法:{
                每个人一个ID 如:article_fixed_{user_id},
                每次查询 未传 fixed_content 参数情况下 推荐查询 记录本次数据 返回查询码,
                传递 fixed_content 参数 查询上次数据,
                传递 fixed_content 参数 且 传递add_fixed_content参数 单做查询 插入原有固定数据 证明翻页 
                redis-hash数据  name:tianyan_article_fixed_content  key:tianyan_article_fixed_{user_id}
            }            
            """

            fixed_content = request.GET.get(
                'fixed_content')  # 固定内容键  查询上次查询过的数据
            add_fixed_content = request.GET.get(
                'add_fixed_content')  # 下拉固定内容 添加固定内容

            if fixed_content and not add_fixed_content:  # 查询上次内容  且未下拉
                data = rc.hget('tianyan_article_fixed_content', redis_key)
                ret_data = eval(data)
                count = len(ret_data)
                if length != 0:
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    ret_data = ret_data[start_line:stop_line]

            else:
                classify_type = forms_obj.cleaned_data.get(
                    'classify_type')  # 分类类型,1 => 推荐, 2 => 品牌
                classify_id_list = []
                if classify_type:
                    classify_objs = None
                    if classify_type == 1:  # 推荐分类
                        classify_objs = user_obj.recommend_classify.all()
                        classify_id_list = [obj.id for obj in classify_objs]
                        if len(classify_id_list) > 0:
                            q.add(Q(**{'classify__in': classify_id_list}),
                                  Q.AND)

                    elif classify_type == 2:  # 品牌分类
                        classify_objs = user_obj.brand_classify.all()
                        classify_id_list = [obj.id for obj in classify_objs]
                        q.add(Q(**{'classify__in': classify_id_list}), Q.AND)

                # 团队
                if team_list and len(team_list) >= 1:
                    article_list = []
                    team_objs = models.UserprofileTeam.objects.filter(
                        user_id=user_id)  # 查询出该用户所有团队
                    team_id_list = []
                    for i in team_objs:
                        team_id_list.append(i.team_id)

                    # 查询出该团队所有用户 去重
                    team_objs = models.UserprofileTeam.objects.filter(
                        team_id__in=team_id_list).values('user_id').distinct()
                    team_user_list = []
                    for team_obj in team_objs:
                        team_user_list.append(team_obj['user_id'])

                    # 查询 该团队所有用户文章
                    team_user_objs = models.Article.objects.filter(
                        create_user_id__in=team_user_list,
                        ownership_team_id__in=team_id_list)  # 查询该团队 所有文章
                    for i in team_user_objs:
                        article_list.append(i.id)

                    q.add(Q(**{'id__in': article_list}), Q.AND)

                is_use_redis = False  # 是否进行redis操作

                if classify_type and classify_type == 2:  # 我的品牌
                    order_by = '-create_datetime'

                elif classify_type and classify_type == 1 and len(
                        classify_id_list) <= 0:  # 推荐为空
                    q.add(
                        Q(classify__create_user__isnull=True)
                        & Q(classify__isnull=False),
                        Q.AND)  # 没有选择推荐的用户默认 推荐系统标签的
                    order_by = '?'
                    is_use_redis = True

                elif team_list:  # 团队
                    # q.add(Q(create_user_id=user_id), Q.OR)
                    order_by = '-like_num'

                else:
                    is_use_redis = True
                    order_by = '?'

                objs = models.Article.objects.filter(q, ).order_by(order_by)

                print('q -->', q, order_by)

                count = objs.count()

                if length != 0:
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    objs = objs[start_line:stop_line]

                ret_data = []

                id = request.GET.get('id')

                # 返回的数据
                for obj in objs:
                    is_like = False  # 是否点赞
                    log_obj = models.SelectClickArticleLog.objects.filter(
                        article_id=obj.id, user_id=user_id)
                    if log_obj:
                        is_like = True

                    classify_id_list = []
                    classify_name_list = []
                    if obj.classify:
                        classify_id_list = [
                            obj.get('id') for obj in obj.classify.values('id')
                        ]
                        classify_name_list = [
                            obj.get('name')
                            for obj in obj.classify.values('name')
                        ]

                    summary = obj.summary
                    if obj.summary:
                        summary = b64decode(obj.summary)

                    result_data = {
                        'id':
                        obj.id,
                        'title':
                        obj.title,
                        'summary':
                        summary,
                        'look_num':
                        obj.look_num,
                        'like_num':
                        obj.like_num,
                        'classify_id_list':
                        classify_id_list,
                        'classify_name_list':
                        classify_name_list,
                        'create_user_id':
                        obj.create_user_id,
                        'cover_img':
                        obj.cover_img,
                        'is_like':
                        is_like,  # 是否点赞
                        'create_datetime':
                        obj.create_datetime.strftime('%Y-%m-%d %H:%M:%S'),
                    }
                    if id:  # 如果查询详情 返回文章内容  查询全部不返回 否则数据过大
                        result_data[
                            'top_advertising'] = user_obj.top_advertising  # 头部广告
                        result_data[
                            'end_advertising'] = user_obj.end_advertising  # 底部广告
                        is_oneself_article = False
                        if user_id == obj.create_user_id:
                            is_oneself_article = True

                        result_data['is_oneself_article'] = is_oneself_article
                        result_data['content'] = json.loads(obj.content)
                        result_data['style'] = obj.style
                        # 个人信息
                        result_data['name'] = b64decode(user_obj.name)  # 用户名称
                        result_data[
                            'phone_number'] = user_obj.phone_number  # 用户电话
                        result_data['signature'] = user_obj.signature  # 用户签名
                        result_data['set_avator'] = user_obj.set_avator  # 用户头像
                        brand_name_list = []
                        for i in user_obj.brand_classify.all():
                            brand_name_list.append(i.name)
                        result_data['brand_name'] = brand_name_list  # 用户品牌
                        result_data['qr_code'] = user_obj.qr_code  # 用户微信二维码

                        # 用户查看文章 客户字段为空 判断今天是否看过此文章 看过不记录
                        now = datetime.datetime.today().strftime(
                            '%Y-%m-%d') + ' 00:00:00'
                        log_objs = models.SelectArticleLog.objects.filter(
                            article_id=id,
                            inviter_id=user_id,
                            create_datetime__gte=now)
                        if not log_objs:
                            models.SelectArticleLog.objects.create(
                                article_id=id, inviter_id=user_id)
                            # 记录查看次数
                            obj.look_num = F('look_num') + 1
                            obj.save()
                        # 热卖商品 我的里面设置是否展示
                        goods_list = []
                        if user_obj.show_product:
                            good_objs = models.Goods.objects.filter(
                                goods_classify__oper_user_id=user_id)

                            good_count = good_objs.count()
                            if good_count >= 2:
                                good_objs = good_objs[0:2]
                            elif good_count <= 0:
                                good_objs = good_objs
                            else:
                                good_objs = good_objs[0:1]

                            for good_obj in good_objs:
                                goods_list.append({
                                    'id':
                                    good_obj.id,
                                    # 'goods_describe': good_obj.goods_describe,  # 商品描述
                                    'price':
                                    good_obj.price,  # 商品价格
                                    'goods_name':
                                    good_obj.goods_name,  # 商品名称
                                    'cover_img':
                                    good_obj.cover_img,  # 封面图
                                })
                        result_data['goods_list'] = goods_list

                    if team_list and len(
                            team_list) >= 1:  # 如果查询 团队 则返回 文章创建人头像和名称
                        result_data['create_user__name'] = obj.create_user.name
                        result_data[
                            'create_user__set_avator'] = obj.create_user.set_avator
                        team_list_name = []
                        # if obj.ownership_team:
                        team_list_name.append(obj.ownership_team.name)
                        # else:
                        #     team_list_name.append('创建')

                        result_data['team_list_name'] = team_list_name

                    #  将查询出来的数据 加入列表
                    ret_data.append(result_data)

                if is_use_redis:  # 进行redis缓存
                    if not add_fixed_content:  # 加入redis
                        rc.hset('tianyan_article_fixed_content', redis_key,
                                str(ret_data))

                    else:
                        data = rc.hget('tianyan_article_fixed_content',
                                       redis_key)  # 查询出所有缓存数据
                        rc_data = eval(data)
                        for i in ret_data:  # 判断缓存是否有该数据  没有插入
                            if i not in rc_data:
                                rc_data.append(i)
                        rc.hset('tianyan_article_fixed_content', redis_key,
                                str(rc_data))  # 最终数据缓存进 redis
                        ret_data = eval(
                            rc.hget('tianyan_article_fixed_content',
                                    redis_key))  # 查询数据

                        if length != 0:
                            start_line = (current_page - 1) * length
                            stop_line = start_line + length
                            ret_data = ret_data[start_line:stop_line]

            response.code = 200
            response.msg = '查询成功'
            response.data = {
                'ret_data': ret_data,
                'data_count': count,
                'rc': redis_key,  # redis_key
            }

            response.note = {
                'id': "文章id",
                'title': "文章标题",
                'content': "文章内容",
                'look_num': "查看次数",
                'like_num': "点赞(喜欢)次数",
                'classify_id_list': "所属分类id",
                'classify_name_list': "所属分类名称",
                'create_datetime': "创建时间",
                'cover_img': "封面图",
                'create_user_id': "创建人ID",
                'create_user__name': "创建人姓名",
                'create_user__set_avator': "创建人头像",
                'name': "用户名称",
                'phone_number': "用户电话",
                'signature': "用户个性签名",
                'set_avator': "用户头像",
                'brand_name': "用户品牌名称",
                'qr_code': "用户微信二维码",
                'is_oneself_article': "是否是自己的文章",
            }
        else:
            response.code = 301
            response.data = json.loads(forms_obj.errors.as_json())

    else:
        response.code = 402
        response.msg = "请求异常"
    return JsonResponse(response.__dict__)
Exemple #27
0
def user(request):
    response = Response.ResponseObj()
    if request.method == "GET":
        forms_obj = SelectForm(request.GET)
        if forms_obj.is_valid():
            user_id = request.GET.get('user_id')

            current_page = forms_obj.cleaned_data['current_page']
            length = forms_obj.cleaned_data['length']
            print('forms_obj.cleaned_data -->', forms_obj.cleaned_data)
            order = request.GET.get('order', '-create_datetime')
            field_dict = {
                'id': '',
            }

            q = conditionCom(request, field_dict)

            print('q -->', q)
            objs = models.UserProfile.objects.select_related('role').filter(
                q, openid__isnull=False)

            exclude_role_admin = request.GET.get('exclude_role_admin',
                                                 False)  # 是否排除管理员角色
            if exclude_role_admin:
                role_admin_id_list = [6, 8]  # 管理员角色id
                objs = objs.exclude(role_id__in=role_admin_id_list)

            exclude_role_client = request.GET.get('exclude_role_client',
                                                  False)  # 是否排除普通用户角色
            if exclude_role_client:
                role_client_id_list = [7]  # 普通用户角色id
                objs = objs.exclude(role_id__in=role_client_id_list)

            inviter_id_is_null = request.GET.get('inviter_id_is_null', False)
            if inviter_id_is_null:
                objs = objs.filter(inviter_id__isnull=True)

            objs = objs.order_by(order)
            count = objs.count()

            if length != 0:
                start_line = (current_page - 1) * length
                stop_line = start_line + length
                objs = objs[start_line:stop_line]

            ret_data = []

            for obj in objs:
                inviter = 0
                if obj.inviter:
                    inviter = 1

                role_obj = models.Role.objects.filter(id=obj.role_id)
                data_list = []
                for i in role_obj[0].permissions.all():
                    data_list.append(i.name)

                last_login_datetime = ''
                if obj.last_login_datetime:
                    last_login_datetime = obj.last_login_datetime.strftime(
                        '%Y-%m-%d %H:%M:%S')

                ret_data.append({
                    'id':
                    obj.id,
                    'name':
                    base64_encryption.b64decode(obj.name),
                    'role_id':
                    obj.role_id,
                    'role_name':
                    obj.role.name,
                    'head_portrait':
                    obj.head_portrait,
                    'token':
                    obj.token,
                    'sex_id':
                    obj.sex,
                    'sex':
                    obj.get_sex_display(),
                    'company_name':
                    obj.company_name,
                    'permissions_list':
                    data_list,
                    'inviter':
                    inviter,
                    'remark':
                    obj.remark,
                    'small_program_number':
                    obj.small_program_number,
                    'number_child_users':
                    obj.number_child_users,
                    'last_login_datetime':
                    last_login_datetime,
                    'create_datetime':
                    obj.create_datetime.strftime('%Y-%m-%d %H:%M:%S'),
                })

            #  查询成功 返回200 状态码
            response.code = 200
            response.msg = '查询成功'
            response.data = {
                'ret_data': ret_data,
                'data_count': count,
            }
            response.note = {
                'id': "用户id",
                'name': "微信昵称",
                'role_id': "角色id",
                'role_name': "角色名称",
                'head_portrait': "头像",
                'sex_id': "性别id",
                'sex': "性别",
                'company_name': "公司名称",
                'remark': "备注",
                'last_login_datetime': "最后登录时间",
                'create_datetime': "创建时间",
                'number_child_users': "可创建子账号数量",
                'small_program_number': "可创建小程序数量",
            }

        else:
            print("forms_obj.errors -->", forms_obj.errors)
            response.code = 402
            response.msg = "请求异常"
            response.data = json.loads(forms_obj.errors.as_json())
    return JsonResponse(response.__dict__)
Exemple #28
0
def article_customer_oper(request, oper_type):
    response = Response.ResponseObj()
    inviter_user_id = request.GET.get('inviter_user_id')  # 用户ID
    customer_id = request.GET.get('user_id')  # 客户ID
    if request.method == 'GET':

        # 客户查询文章详情
        if oper_type == 'article':
            id = request.GET.get('id')  # 文章ID
            objs = models.Article.objects.filter(id=id)
            if objs:
                obj = objs[0]
                user_obj = models.Userprofile.objects.get(id=inviter_user_id)

                is_like = False  # 是否点赞
                log_obj = models.SelectClickArticleLog.objects.filter(
                    article_id=obj.id, customer_id=customer_id)
                if log_obj:
                    is_like = True

                result_data = {
                    'id':
                    obj.id,
                    'title':
                    obj.title,
                    'summary':
                    obj.summary,
                    'look_num':
                    obj.look_num,
                    'like_num':
                    obj.like_num,
                    'create_user_id':
                    obj.create_user_id,
                    'cover_img':
                    obj.cover_img,
                    'create_datetime':
                    obj.create_datetime.strftime('%Y-%m-%d %H:%M:%S'),
                }
                result_data['content'] = json.loads(obj.content)
                result_data['style'] = obj.style
                result_data['top_advertising'] = user_obj.top_advertising
                result_data['end_advertising'] = user_obj.end_advertising
                # 个人信息
                result_data['name'] = b64decode(user_obj.name)  # 用户名称
                result_data['phone_number'] = user_obj.phone_number  # 用户电话
                result_data['signature'] = user_obj.signature  # 用户签名
                result_data[
                    'set_avator'] = user_obj.set_avator + '?imageView2/2/w/100'  # 用户头像
                brand_name_list = []
                for i in user_obj.brand_classify.all():
                    brand_name_list.append(i.name)
                result_data['brand_name'] = brand_name_list  # 用户品牌
                qr_code = ''
                if user_obj.qr_code:
                    qr_code = user_obj.qr_code + '?imageView2/2/w/100'
                result_data['qr_code'] = qr_code  # 用户微信二维码
                result_data['is_like'] = is_like  # 是否点赞

                # 随机获取三篇文章
                popula_articles_list = randomly_query_three_articles(
                    inviter_user_id, id)

                # 查询最热商品=======================
                goods_list = []
                if user_obj.show_product:  # 如果客户 打开文章底部显示热卖
                    goods_list = get_hot_commodity(inviter_user_id)

                article_log_obj = models.SelectArticleLog.objects.create(
                    customer_id=customer_id,
                    article_id=id,
                    inviter_id=inviter_user_id)
                # 记录查看次数
                obj.look_num = F('look_num') + 1
                obj.save()

                # 给用户发送消息
                customer_view_articles_send_msg.delay({
                    'check_type':
                    '文章',
                    'user_id':
                    inviter_user_id,
                    'title':
                    obj.title,
                    'customer_id':
                    customer_id,
                })

                is_own_article = False
                # 判断是否是自己的文章
                customer_openid = article_log_obj.customer.openid
                user_objs = models.Userprofile.objects.filter(
                    openid=customer_openid)
                if user_objs:
                    if int(user_objs[0].id) == int(inviter_user_id):
                        is_own_article = True

                response.code = 200
                response.msg = '查询成功'
                response.data = {
                    'goods_list': goods_list,
                    'popula_articles': popula_articles_list,
                    'result_data': result_data,
                    'is_own_article': is_own_article,
                }
                response.note = {
                    'popula_articles热门文章': {
                        'title': '标题',
                        'cover_img': '封面',
                        'url': '链接'
                    },
                    'result_data_文章内容': {
                        'id': '文章ID',
                        'title': '文章标题',
                        'summary': '文章摘要',
                        'look_num': '文章查看人数',
                        'like_num': '文章点赞人数',
                        'create_user_id': '文章创建人ID',
                        'cover_img': '文章封面',
                        'create_datetime': '文章创建时间',
                        'content': '文章内容',
                        'style': '文章样式',
                        'top_advertising': '顶部内容',
                        'end_advertising': '底部内容',
                        'name': '用户名称',
                        'phone_number': '用户电话',
                        'signature': '用户签名',
                        'set_avator': '用户头像',
                        'brand_name': '用户品牌',
                        'qr_code': '用户微信二维码',
                        'is_like': '是否点赞',
                    },
                    'goods_list_热门商品': {
                        # 'goods_describe': '商品描述',
                        'price': '商品价格',
                        'goods_name': '商品名称',
                        'cover_img': '封面图',
                        'url': '跳转链接'
                    },
                    'is_own_article': '是否为自己的文章',
                }

            else:
                response.code = 400
                response.msg = '页面丢失'

        # 客户查询微店分类
        elif oper_type == 'goods_classify':
            objs = models.GoodsClassify.objects.filter(
                oper_user_id=inviter_user_id).order_by('-create_datetime')
            data_list = []
            for obj in objs:
                is_good = False
                if obj.goods_set.all():
                    is_good = True
                data_list.append({
                    'id':
                    obj.id,
                    'goods_classify':
                    obj.goods_classify,
                    'oper_user_id':
                    obj.oper_user_id,
                    'oper_user':
                    b64decode(obj.oper_user.name),
                    'create_datetime':
                    obj.create_datetime.strftime('%Y-%m-%d %H:%M:%S'),
                    'is_good':
                    is_good,
                })
            response.code = 200
            response.msg = '查询成功'
            response.data = {
                'ret_data': data_list,
                'count': objs.count(),
            }
            response.note = {
                'id': '分类ID',
                'goods_classify': '分类名称',
                'oper_user_id': '分类归属人ID',
                'oper_user': '******',
                'create_datetime': '创建时间',
                'is_good': '该分类下是否有商品',
            }

            # 客户查询商品

        # 查询微店
        elif oper_type == 'small_shop':
            forms_obj = select_form(request.GET)
            if forms_obj.is_valid():
                current_page = forms_obj.cleaned_data['current_page']
                length = forms_obj.cleaned_data['length']
                field_dict = {
                    'id': '',
                    'goods_classify_id': '',
                    'goods_name': '__contains',
                }
                q = conditionCom(request, field_dict)

                objs = models.Goods.objects.filter(
                    q, goods_classify__oper_user_id=inviter_user_id)
                count = objs.count()

                if length != 0:
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    objs = objs[start_line:stop_line]
                ret_data = []
                for obj in objs:
                    try:
                        goods_describe = eval(obj.goods_describe)
                    except Exception:
                        goods_describe = obj.goods_describe

                        #  将查询出来的数据 加入列表
                    ret_data.append({
                        'id':
                        obj.id,
                        'goods_classify_id':
                        obj.goods_classify_id,  # 分类ID
                        'goods_classify':
                        obj.goods_classify.goods_classify,  # 分类名称
                        'goods_name':
                        obj.goods_name,  # 商品名称
                        'price':
                        obj.price,  # 商品价格
                        'inventory':
                        obj.inventory,  # 商品库存
                        'freight':
                        obj.freight,  # 商品运费
                        'goods_describe':
                        goods_describe,  # 商品描述
                        'point_origin':
                        obj.point_origin,  # 商品发货地
                        'goods_status_id':
                        obj.goods_status,  # 商品状态ID
                        'goods_status':
                        obj.get_goods_status_display(),  # 商品状态
                        'cover_img':
                        obj.cover_img,  # 商品封面图片
                        'create_datetime':
                        obj.create_datetime.strftime('%Y-%m-%d %H:%M:%S'),
                    })

                # 查询详情记录
                id = request.GET.get('id')
                if id:
                    goods_obj = models.Goods.objects.get(id=id)
                    models.customer_look_goods_log.objects.create(
                        goods_id=id,
                        customer_id=customer_id,
                        user_id=inviter_user_id)

                    # 给用户发送消息
                    customer_view_articles_send_msg.delay({
                        'check_type':
                        '商品',
                        'user_id':
                        inviter_user_id,
                        'title':
                        goods_obj.goods_name,
                        'customer_id':
                        customer_id,
                    })

                response.code = 200
                response.msg = '查询成功'
                response.data = {'ret_data': ret_data, 'count': count}
                response.note = {
                    'id': "文章id",
                    'goods_classify': '商品分类',
                    'goods_name': '分类名称',
                    'price': '商品价格',
                    'inventory': '商品库存',
                    'freight': '商品运费',
                    'goods_describe': '商品描述',
                    'point_origin': '商品发货地',
                    'goods_status': '商品状态',
                    'create_datetime': '商品创建时间',
                }
            else:
                response.code = 301
                response.msg = json.loads(forms_obj.errors.as_json())

        # 客户记录 文章查看时长/商城查看时长
        elif oper_type == 'record_length':
            status = request.GET.get('status')
            public_id = request.GET.get('public_id')
            # close_date = request.GET.get('close_date')
            """
            inviter_user_id  为分享人ID
            status == 1 为记录文章日志 
            status == 2 为记录微店日志
            user_id 为客户ID
            close_date 最后一次时间 每几秒请求一次 以最后一次请求为关闭时间
            """
            form_data = {
                'status': status,
                'public_id': public_id,
                'user_id': customer_id,
                'inviter_user_id': inviter_user_id,
                'close_date': datetime.datetime.now(),
            }
            form_objs = RecordLengthForm(form_data)
            if form_objs.is_valid():
                response.code = 200
                response.msg = '日志记录成功'

            else:
                response.code = 301
                response.msg = json.loads(form_objs.errors.as_json())

        # 客户查询 用户名片
        elif oper_type == 'business_card':
            obj = models.Userprofile.objects.get(id=inviter_user_id)
            name = b64decode(obj.name)
            if not obj.introduction:
                introduction = '我是{}, 欢迎来到我的名片'.format(name)
            else:
                introduction = obj.introduction

            article_list = randomly_query_three_articles(inviter_user_id)
            goods_list = get_hot_commodity(inviter_user_id)

            data_list = {
                'user_id': obj.id,
                'introduction': introduction,
                'user_name': name,
                'set_avator': obj.set_avator + '?imageView2/2/w/100',
                'article_list': article_list,
                'goods_list': goods_list,
            }
            response.code = 200
            response.msg = '查询成功'
            response.data = data_list

    else:

        # 客户点赞
        if oper_type == 'give_like':
            form_data = {
                'article_id': request.POST.get('article_id'),
                'customer_id': request.GET.get('user_id')
            }

            form_obj = GiveALike(form_data)
            if form_obj.is_valid():
                customer_id = form_obj.cleaned_data.get('customer_id')
                article_id = form_obj.cleaned_data.get('article_id')
                response = give_like(customer_id=customer_id,
                                     article_id=article_id)  # 点赞
            else:
                response.code = 301
                response.msg = json.loads(form_obj.errors.as_json())

        # 客户 点击 更换成我的名片
        elif oper_type == 'change_my_business_card':
            obj = models.Customer.objects.get(id=customer_id)
            article_id = request.POST.get('article_id')
            article_objs = models.Article.objects.filter(id=article_id)
            if article_objs:
                article_obj = article_objs[0]

                if obj.subscribe:  # 已关注公众号

                    user_obj = models.Userprofile.objects.get(
                        openid=obj.openid)

                    if_article_objs = models.Article.objects.filter(
                        create_user_id=user_obj.id, title=article_obj.title)

                    if not if_article_objs:  # 没有创建
                        create_article_obj = models.Article.objects.create(
                            title=article_obj.title,
                            summary=article_obj.summary,
                            content=article_obj.content,
                            create_user_id=user_obj.id,
                            source_link=article_obj.source_link,
                            cover_img=article_obj.cover_img,
                            style=article_obj.style,
                            original_link=article_obj.original_link,
                        )
                        create_article_obj.classify = [39]
                        create_article_obj.save()

                        article_id = create_article_obj.id
                    else:
                        if_article_obj = if_article_objs[0]
                        article_id = if_article_obj.id

                    msg = '跳转页面'
                    code = 200
                    response.data = {
                        'article_id': article_id,
                        'user_id': user_obj.id,
                        'token': user_obj.token,
                    }

                else:  # 未关注公众号
                    select_article_objs = models.SelectArticleLog.objects.filter(
                        customer_id=customer_id,
                        article_id=article_id).order_by('-create_datetime')
                    if select_article_objs:
                        select_article_obj = select_article_objs[0]
                        select_article_obj.click_modify = 1
                        select_article_obj.save()
                        weChat_qr_code = select_article_obj.inviter.enterprise.weChat_qr_code
                    else:
                        weChat_qr_code = article_obj.create_user.enterprise.weChat_qr_code
                    msg = '未关注公众号'
                    code = 301
                    response.data = {'weChat_qr_code': weChat_qr_code}

            else:
                code = 301
                msg = '该文章已被删除'

            response.code = code
            response.msg = msg

        # 获取自己 用户 的 token (以客户身份进入自己分享的文章 可直接修改 点击修改 获取自己用户token 登录天眼)
        elif oper_type == 'get_my_token':
            obj = models.Customer.objects.get(id=customer_id)
            user_objs = models.Userprofile.objects.filter(openid=obj.openid)
            if user_objs:
                user_obj = user_objs[0]
                data = {
                    'id': user_obj.id,
                    'token': user_obj.token,
                }
                response.code = 200
                response.msg = '查询成功'
                response.data = {'ret_data': data}

            else:
                response.code = 301
                response.msg = '修改失败'

        else:
            response.code = 402
            response.msg = '请求异常'

    return JsonResponse(response.__dict__)
def team_management_oper(request, oper_type):
    response = Response.ResponseObj()
    user_id = request.GET.get('user_id')
    if request.method == "POST":

        # 更改团队权限
        if oper_type == 'update_team':
            players_id = request.POST.get('players_id')  # 队员ID
            template_list = request.POST.get('template_list')  # 权限模板列表
            objs = models.UserProfile.objects.filter(id=players_id)
            if objs:
                objs.update(select_template_list=template_list)
                response.code = 200
                response.msg = '修改成功'

            else:
                response.code = 301
                response.msg = '队员错误'

        # 踢出团员
        elif oper_type == 'delete_team':
            players_id = request.POST.get('players_id')  # 队员ID
            objs = models.UserProfile.objects.filter(id=players_id)
            if objs:
                obj = objs[0]

                if int(obj.inviter_id) == int(user_id):
                    obj.inviter_id = None
                    obj.select_template_list = []
                    obj.save()
                    response.code = 200
                    response.msg = '操作成功'

                else:
                    response.code = 301
                    response.msg = '权限不足'

            else:
                response.code = 301
                response.msg = '队员错误'

    else:
        # 获取角色对应的权限
        if oper_type == "get_team_data":
            forms_obj = SelectForm(request.GET)
            if forms_obj.is_valid():
                current_page = forms_obj.cleaned_data['current_page']
                length = forms_obj.cleaned_data['length']
                order = request.GET.get('order', '-create_datetime')
                field_dict = {
                    'id': '',
                }
                q = conditionCom(request, field_dict)

                objs = models.UserProfile.objects.filter(
                    q, inviter_id=user_id).order_by(order)
                count = objs.count()
                if length != 0 and not request.GET.get('id'):
                    start_line = (current_page - 1) * length
                    stop_line = start_line + length
                    objs = objs[start_line:stop_line]
                ret_data = []
                for obj in objs:
                    data = {
                        'id': obj.id,
                        'name': b64decode(obj.name),
                        'head_portrait': obj.head_portrait,
                    }

                    if request.GET.get('id'):
                        template_objs = models.Template.objects.filter(
                            id__in=json.loads(obj.select_template_list))
                        template_list = []
                        for template_obj in template_objs:
                            template_list.append({
                                'id': template_obj.id,
                                'name': template_obj.name,
                            })
                        data['template_list'] = template_list

                    ret_data.append(data)

                response.code = 200
                response.msg = '查询成功'
                response.data = {'count': count, 'ret_data': ret_data}

            else:
                response.code = 301
                response.msg = json.loads(forms_obj.errors.as_json())

        else:
            response.code = 402
            response.msg = "请求异常"

    return JsonResponse(response.__dict__)
Exemple #30
0
def day_eye(request):
    response = Response.ResponseObj()
    if request.method == "GET":
        forms_obj = SelectForm(request.GET)
        if forms_obj.is_valid():
            current_page = forms_obj.cleaned_data['current_page']
            length = forms_obj.cleaned_data['length']
            user_id, message = forms_obj.cleaned_data['user_id']

            objs = models.day_eye_celery.objects.filter(
                user_id=user_id).order_by('-create_date')
            count = objs.count()

            if length != 0:
                start_line = (current_page - 1) * length
                stop_line = start_line + length
                objs = objs[start_line:stop_line]

            ret_data = []
            data_list = []
            for obj in objs:
                if obj.customer_id not in data_list:
                    data_list.append(obj.customer_id)
            for customer_id in data_list:
                eye_objs = models.day_eye_celery.objects.filter(
                    user_id=user_id,
                    customer_id=customer_id).order_by('-create_date')
                flag = False
                for eye_obj in eye_objs:
                    if eye_obj.is_new_msg:
                        flag = True

                obj = eye_objs[0]
                ret_data.append({
                    'customer_id': obj.customer_id,
                    'customer__name': b64decode(obj.customer.name),
                    'customer__set_avator': obj.customer.set_avator,
                    'text': obj.text,
                    'status': obj.status,
                    'is_new_msg': flag,
                })

            #  查询成功 返回200 状态码
            response.code = 200
            response.msg = '查询成功'
            response.data = {
                'ret_data': ret_data,
                'count': count,
                'message': message,
            }
            response.note = {
                'customer_id': "查看人ID",
                'customer__name': "查看人姓名",
                'customer__set_avator': '客户头像',
                'text': '显示的文字',
                'status': '区分 文章还是商品',
                'message': '展示的文字/判断是否为空 为空不显示',
            }
        else:
            print("forms_obj.errors -->", forms_obj.errors)
            response.code = 301
            response.data = json.loads(forms_obj.errors.as_json())
    return JsonResponse(response.__dict__)