Пример #1
0
def addContent(request):
    if request.method == "POST":
        code = 0
        req = request.POST
        message = None
        try:
            contentForm = ContentsForm(req)
            if contentForm.is_valid():
                logging.info("add content start")
                content = ContentsForm(req,
                                       instance=Contents(
                                           createAt=getTimeStamp(),
                                           updateAt=getTimeStamp()))
                result = content.save()
                logging.info("add content success ,id is %d", result.id)
                pass
            else:
                message = contentForm.errors
                code = -10
        except Exception as e:
            logging.error(e)
            code = -10000
            pass
        finally:
            return set_response(code, message, {})
        pass
    else:
        return
Пример #2
0
def addModule(request):
    if request.method == 'POST':
        req = request.POST
        code = 0
        message = None
        try:
            moduleForm = ModuleForm(req)
            if moduleForm.is_valid():
                module = ModuleForm(req,
                                    instance=Module(createAt=getTimeStamp(),
                                                    updateAt=getTimeStamp()))
                module.save()
                logging.info("add module success")
                pass
            else:
                code = -10
                message = moduleForm.errors
                pass
            pass
        except Exception as e:
            logging.error(e)
            traceback.print_exc()
            code = -10000
            pass
        finally:
            return set_response(code, message, {})

    else:
        return
Пример #3
0
def addRole(request):
    if request.method == 'POST':
        req = request.POST
        code = 0
        message = None
        try:
            currentManager = json.loads(request.__getattribute__('manager'))
            roleForm = RoleForm(req)
            if roleForm.is_valid():
                role = RoleForm(req,
                                instance=Role(
                                    createAt=getTimeStamp(),
                                    updateAt=getTimeStamp(),
                                    createBy=currentManager.get('name'),
                                    updateBy=currentManager.get('name')))
                role.save()
                logging.info("add role success")
                pass
            else:
                code = -10
                message = roleForm.errors
                pass
            pass
        except Exception as e:
            logging.error(e)
            traceback.print_exc()
            code = -10000
            pass
        finally:
            return set_response(code, message, {})

    else:
        return
Пример #4
0
def insertBanner(request):
    logging.info("create banner start")

    if request.method == 'POST':
        message = None
        code = 0
        bid = 0
        req = request.POST
        try:
            banner = Banner(createAt=getTimeStamp(), updateAt=getTimeStamp())
            bannerForm = BannerForm(req)
            if not bannerForm.is_valid():
                code = -10
                message = bannerForm.errors
            else:
                banner = BannerForm(req, instance=banner)
                result = banner.save()
                bid = result.id
                logging.info("banner create success ,id is %d", bid)
        except Exception as e:
            logging.error(e)
            code = -10000
        finally:
            return set_response(code, message, bid)
    else:
        return
Пример #5
0
def insertMediumLink(request):
    logging.info('API is /admin/u/link ,insert medium_link begin :')
    code = 0
    linkId = 0
    if request.method == 'POST':
        try:
            req = request.POST
            mediumId = req.get('mediumId')
            logging.info("mediumId is %s", mediumId)
            # 皮肤
            template = req.get('template', '01')
            # 前端路由url
            login = ""
            if not template:
                template = '1'
                pass
            else:
                login = template
                pass
            # 取媒介
            medium = Medium.objects.filter(id=mediumId).first()
            if not medium:
                code = -30
                return set_response(code, None, {})
            else:
                pass
            url = HOME_HOST_ONLINE + login + PARAMS
            if TEST_MODEL:
                url = HOME_HOST + login + PARAMS
            newLink = MediumLink(createAt=getTimeStamp(),updateAt=getTimeStamp(),mediumId=mediumId,type=mediumId, link=url)
            newLink.save()
            linkId = newLink.id
            logging.info("create a new link ,medium id is %s , link id is  %s", mediumId, linkId)

            # 链接生成
            if TEST_MODEL:
                url = HOME_HOST + login + PARAMS.replace('{source}', mediumId).replace('{sub}', str(linkId)).replace(
                    '{template}', template)
            else:
                url = HOME_HOST_ONLINE + login + PARAMS.replace('{source}', mediumId).replace('{sub}', str(linkId)).replace(
                    '{template}', template)

            logging.info(url)
            MediumLink.objects.filter(id=linkId).update(link=url)
            if newLink:
                # 更新媒介数量
                logging.info('update medium link count: %d --> %d:', medium.linkCount, medium.linkCount + 1)
                medium.linkCount = medium.linkCount + 1
                medium.save()


        except Exception as e:
            logging.error(e)
            traceback.print_exc()
            code = -10000
        finally:
            return set_response(code, None, linkId)
    else:
        return
Пример #6
0
def updateBannerStatus(request, bannerId, status):
    message = None
    code = 0
    logging.info("update bannerId start")
    logging.info("productId is %s status is %s", bannerId, status)

    if request.method == 'POST':
        try:
            # 校验数据是否存在
            banner = Banner.objects.get(id=bannerId)
            if not banner:
                code = -30
                return set_response(code, message, {})

            banner.updateAt = getTimeStamp()
            banner.status = status
            banner.save()
            logging.info('update product status success')
        except Exception as e:
            code = -10000
            logging.error(e)
        finally:
            return set_response(code, message, bannerId)
    else:
        return
Пример #7
0
def updateProductConfig(request, productId, isConfig):
    message = None
    code = 0
    logging.info("update product isConfig start")
    logging.info("productId is %s isConfig is %s", productId, isConfig)

    if request.method == 'POST':
        try:

            # 校验数据是否存在
            product = Product.objects.get(id=productId)
            if not product:
                code = -30
                return set_response(code, message, {})
            # 设置未配置,自动下架
            if isConfig == 1 or isConfig == 0:
                if isConfig == 0:
                    product.status = 0
                pass
            else:
                code = -10
                return set_response(code, message, {})

            product.updateAt = getTimeStamp()
            product.isConfig = isConfig
            product.save()
            logging.info('update product isConfig success')
        except Exception as e:
            logging.error(e)
            code = -10000
        finally:
            return set_response(code, message, productId)
    else:
        return
Пример #8
0
def updateProductStatus(request, productId, status):
    message = None
    code = 0
    logging.info("update product start")
    logging.info("productId is %s status is %s", productId, status)

    if request.method == 'POST':
        try:
            # 校验数据是否存在
            product = Product.objects.get(id=productId)
            if not product:
                code = -30
                return set_response(code, message, {})
            # 校验分单客户是否配置,未配置可下架,不可上架
            else:
                if status == 1 and product.type == 1 and product.isConfig == 0:
                    code = -1044
                    return set_response(code, message, {})
            product.updateAt = getTimeStamp()
            product.status = status
            product.save()
            logging.info('update product status success')
        except Exception as e:
            code = -10000
            logging.error(e)
        finally:
            return set_response(code, message, productId)
    else:
        return
Пример #9
0
def createManager(request):
    code = -1
    message = None
    if request.method == "POST":
        req = request.POST
        try:
            currentManager = json.loads(request.__getattribute__('manager'))
            manager = Manager(createAt=getTimeStamp(),
                              updateAt=getTimeStamp(),
                              createBy=currentManager.get('name'),
                              updateBy=currentManager.get('name'))
            obj = CreateForm(request.POST, instance=manager)
            if obj.is_valid():
                pwd = req.get('pwd', None)
                name = req.get('name')
                # 名字检查
                oManager = Manager.objects.filter(name=name).first()
                if oManager:
                    code = -40
                    return set_response(code, message, {})

                # 检查角色是否存在
                role = Role.objects.filter(id=req.get('role', 0)).first()
                if not role:
                    code = -30
                    return set_response(code, message, {})
                logging.info("pwd id %s", pwd)
                manager.pwd = make_password(pwd)

                manager.save()
                logging.info("create manager success ")
                code = 0
                pass
            else:
                message = obj.errors
            return set_response(code, message, {})
        except Exception as e:
            logging.error(e)
            traceback.print_exc()
            code = -10000
            return set_response(code, None, {})
    else:
        return
Пример #10
0
def insertMedium(request):
    if request.method == 'POST':
        logging.info('API is /admin/u/medium ,insert medium begin :')
        code = 0
        message = None
        req = request.POST
        mediumId = None
        try:
            obj = MediumForm(req)
            if not obj.is_valid():
                code = -10
                message = obj.errors
                return set_response(code, message, mediumId)
            else:
                pass

            # 检查是否有重名元素
            name = req.get('name')
            logging.info("name is %s", name)
            checkNameMedium = Medium.objects.filter(name=name)
            if checkNameMedium.exists():
                code = -1041
                return set_response(code, None, {})
            else:
                pass
            medium = Medium(name=name, createAt=getTimeStamp(), updateAt=getTimeStamp())
            medium.save()
            logging.info('create success')
            mediumId = medium.id
            medium.type = mediumId
            medium.save()
            logging.info('medium id is %s', mediumId)

        except Exception as e:
            code = -10000
            logging.error(e)
        finally:
            return set_response(code, message, mediumId)
    else:
        return
Пример #11
0
def editBanner(request, bannerId):
    code = 0
    message = None
    try:
        # 数据有效性验证
        banner = Banner.objects.filter(id=bannerId)
        if not banner.exists():
            code = -30
            return set_response(code, None, {})
        else:
            banner = banner.first()
            pass
        # 修改
        if request.method == 'POST' or request.method == 'PUT':
            req = request.POST
            logging.info("update banner start, id is %d", bannerId)
            banner.updateAt = getTimeStamp()
            bannerForm = BannerForm(req, instance=banner)
            if not bannerForm.is_valid():
                code = -10
                message = bannerForm.errors
            else:
                bannerForm.save()
                logging.info('update banner end')
                banner.url = request.POST.get('url')
        # 删除
        elif request.method == 'DELETE':
            logging.info("delete banner start,id is %d", bannerId)
            banner.delete()
            logging.info("delete end")
        else:
            return
    except Exception as e:
        logging.error(e)
        code = -10000
    finally:
        return set_response(code, message, bannerId)
Пример #12
0
def updateMedium(request, mediumId):
    logging.info('API is /admin/u/medium/{id} ,update medium begin :')
    code = 0
    message = None
    if request.method == 'POST':
        req = request.POST
        try:
            medium = Medium.objects.filter(id=mediumId)
            if not medium.exists():
                code = -30
                return set_response(code, None, {})
            else:
                medium = medium.first()
                medium.updateAt = getTimeStamp()
                pass
            obj = MediumForm(req)
            if not obj.is_valid():
                code = -10
                message = obj.errors
            else:
                name = req.get('name')
                # 检查是否有重名元素
                checkNameMedium = Medium.objects.filter(name=name)
                if checkNameMedium.exists() and checkNameMedium.first().id != mediumId:
                    code = -1041
                    return set_response(code, None, {})
                else:
                    medium = MediumForm(req, instance=medium)
                    medium.save()
                    logging.info('update medium success')
        except Exception as e:
            code = -10000
            logging.error(e)
        finally:
            return set_response(code, message, mediumId)
    else:
        return
Пример #13
0
def updateMediumStatus(request, mediumId, status):
    logging.info('API is /admin/u/medium/{mediumId}/{status} ,update medium status  begin :')
    code = 0
    message = None
    if request.method == 'POST':
        try:
            # result 返回的是受影响的记录条数
            result = Medium.objects.filter(id=mediumId).update(status=status,updateAt=getTimeStamp())
            logging.info('result is : ' + str(result))
            if result == 1:
                pass
            else:
                code = -1050
        except Exception as e:
            logging.error(e)
            code = -10000
        finally:
            return set_response(code, message, mediumId)
    else:
        return
Пример #14
0
def sendCode(request):
    logging.info("get validCode start")
    code = 0
    response = {
        # 'validCode': None
    }
    obj = validCodeForm(request.GET)
    if obj.is_valid():
        mobile = request.GET.get('mobile', None)
        logging.info("mobile is " + mobile)
        if mobile:
            # 查短信记录
            # 开始时间
            start = getTodayZeroTime()
            end = getTodayZeroTime() + 86400000 - 1
            smsList = Sms.objects.filter(
                mobile=mobile, sendAt__range=(start, end)).order_by('-sendAt')
            logging.info('size is ' + smsList.count().__str__())
            if smsList.count() >= 5:
                code = -1002
            else:
                # 获取上一条短信发送时间
                if smsList.exists():
                    lastSms = smsList.first()
                    logging.info("last sms id is " + lastSms.id.__str__() +
                                 " send at " + lastSms.sendAt.__str__() +
                                 'now is ' + getTimeStamp().__str__())
                    # 发送时间不能小于1分钟
                    if getTimeStamp() - lastSms.sendAt < 60000:
                        code = -1003
                        return set_response(code, None, response)
                    else:
                        pass
                # 获取随机码
                randomCode = getRandomNumber(6)
                if TEST_MODEL:
                    # 本地测试用
                    # 本地测试用

                    xml = '<?xml version="1.0" encoding="gb2312"?><Root><Result>1</Result><CtuId>01805231841490003630</CtuId><SendNum>1</SendNum><MobileNum>1</MobileNum></Root>'
                else:
                    # 发送验证码
                    ret = sendSms(mobile, smsTemplate(randomCode))
                    logging.info('ret is ' + ret.url)
                    logging.info('ret is ' + ret.text)
                    # 解析xml结果
                    xml = ret.text

                logging.info("xml is " + xml)
                root = getXmlEle(xml)
                result = root.findall('Result')

                for note in result:
                    logging.info("key is " + note.tag.__str__())
                    logging.info("value is " + note.text.__str__())
                    # 不为1则发送失败
                    if note.text != '1':
                        # if False:
                        code = -1001
                    else:
                        sms = Sms(mobile=mobile,
                                  msg=randomCode,
                                  createAt=getTimeStamp(),
                                  updateAt=getTimeStamp(),
                                  sendAt=getTimeStamp())
                        sms.save()
                        logging.info("sms save success")

        else:
            code = -1000
    else:
        code = -1000
    return set_response(code, None, response)
Пример #15
0
def editUserInfo(request, uid):
    if request.method == 'POST':
        code = 0
        message = None
        req = request.POST
        try:
            logging.info("edit user info start")
            logging.info("uid is " + uid.__str__())

            # 验证用户身份
            checkForm = RegisterForm(request.POST)
            if uid.__str__() == getRequestUid(request):
                if checkForm.is_valid():
                    logging.info("update user start")
                    user = User.objects.get(id=uid)
                    # 职业验证
                    profession = req.get('profession', None)
                    income = req.get('income', 0)
                    workExp = req.get('workExp', 0)
                    provident = req.get('provident', 0)
                    flag = income + workExp + provident
                    logging.info("flag is %s,", flag)
                    if profession == '2':
                        logging.info("this user is not student")
                        pass
                    elif not income or not provident or not workExp:
                        code = -10
                        return set_response(code, message, {})
                    # 新用户记录填表时间
                    if user.isDone == 0:
                        user.isDone = 1
                        user.doneAt = getTimeStamp()
                        # 用户转变统计
                        linkId = user.linkId
                        mediumId = user.source
                        logging.info("create a new register data")
                        updateMediumStatistics(mediumId, linkId, uid, 'old')
                        pass
                    else:
                        logging.info("this user is old")
                        pass
                    user.updateAt = getTimeStamp()
                    user_form_obj = RegisterForm(request.POST, instance=user)
                    user_form_obj.save()
                    logging.info("update user end")
                else:
                    code = -30
                    message = checkForm.errors
                    pass
            else:
                code = -10
                pass
        except Exception as e:
            logging.error(e)
            traceback.print_exc()
            code = -10000
            pass
        finally:
            return set_response(code, message, {})
    else:
        return
Пример #16
0
def updateMediumStatistics(mediumId, linkId, uid, type):
    try:
        if mediumId and linkId:

            mediumStatistics = Medium_Statistics.objects.filter(
                createAt__range=(getTodayZeroTime(),
                                 getTimeStamp() + 86399999),
                mediumId=mediumId,
                linkId=linkId).first()
            if mediumStatistics:
                logging.info("update today register data")
                mediumStatistics.updateAt = getTimeStamp()
                # 记录新用户数量
                if type == 'new':
                    logging.info("a new user")
                    newIds = json.loads(mediumStatistics.newIds)
                    newIds.append(uid)
                    mediumStatistics.newIds = json.dumps(newIds)
                    mediumStatistics.newCount = mediumStatistics.newCount + 1
                else:
                    logging.info("a old user")
                    oldIds = json.loads(mediumStatistics.oldIds)
                    oldIds.append(uid)
                    mediumStatistics.oldIds = json.dumps(oldIds)
                    mediumStatistics.oldCount = mediumStatistics.oldCount + 1

                    # 检查今天新用户有没有这个人,有的话清掉
                    newIds = json.loads(mediumStatistics.newIds)
                    if newIds.__contains__(uid):
                        logging.info("remove this uid ,uid is %s", uid)
                        newIds.remove(uid)
                        mediumStatistics.newIds = json.dumps(newIds)
                        mediumStatistics.newCount = mediumStatistics.newCount - 1
                        pass
                    else:
                        logging.info(
                            "the statistics new ids is not found this uid")
                        pass
                mediumStatistics.save()
            else:
                logging.info("create a new register data")
                medium = Medium.objects.get(id=mediumId)
                link = MediumLink.objects.get(id=linkId)
                if medium and link:
                    mediumStatistics = Medium_Statistics(
                        updateAt=getTimeStamp(),
                        createAt=getTimeStamp(),
                        mediumId=mediumId,
                        mediumName=medium.name,
                        linkId=linkId,
                        link=link.link)
                    if type == 'new':
                        logging.info("a new user")
                        mediumStatistics.newIds = json.dumps([uid])
                        mediumStatistics.newCount = 1

                        mediumStatistics.oldIds = json.dumps([])
                        mediumStatistics.oldCount = 0

                    else:
                        logging.info("a old user")
                        mediumStatistics.oldIds = json.dumps([uid])
                        mediumStatistics.oldCount = 1
                        mediumStatistics.newIds = json.dumps([0])
                        mediumStatistics.newCount = 0
                    mediumStatistics.save()
                    pass
                else:
                    logging.info("this medium id or link id not found")
                    pass
                pass
            pass
        else:
            logging.info("this user's mediumId is not found")
            pass
    except Exception as e:
        logging.error(e)
        traceback.print_exc()
        pass
    finally:
        pass
Пример #17
0
def login(request):
    user = {}
    userInfo = {}
    message = None
    code = -1
    logging.info("login start")
    try:
        if request.method == 'POST':
            obj = LoginForm(request.POST)
            ret = obj.is_valid()
            if ret:
                mobile = request.POST.get('mobile', None)
                amount = request.POST.get('amount', None)
                validCode = request.POST.get('validCode', None)
                # 媒介
                mediumId = request.POST.get('source', 0)
                # 处理传空字符串问题
                if not mediumId:
                    mediumId = 0
                # 处理传空字符串问题
                linkId = request.POST.get('sub', None)
                if not linkId:
                    linkId = None
                url = request.POST.get('url', None)
                # 完整的链接
                host = request.get_host()
                path = request.get_full_path()
                referer = request.META.get('HTTP_REFERER ', '')
                logging.info("host is %s ,path is %s ,referer is  %s", host,
                             path, referer)
                logging.info(
                    "mobile is %s ,amount is %s ,validCode is %s , mediumId is %s, linkId is %s,url is %s",
                    mobile, amount, validCode, mediumId, linkId, url)

                # 验证手机
                if checkMobile(mobile):
                    code = 0
                    # 验证码
                    # 获取验证码

                    sms = Sms.objects.filter(
                        mobile=mobile,
                        msg=validCode).order_by('-sendAt')[0:1].first()
                    logging.info("TEST_MODEL is %s", TEST_MODEL)

                    if TEST_MODEL and validCode == '555555':
                        pass
                    else:
                        if sms:
                            logging.info("last sms id is " + sms.id.__str__() +
                                         " code is " + sms.msg)
                            if sms and (getTimeStamp() -
                                        sms.createAt) <= 600000:
                                pass
                            else:
                                logging.info("this sms sent at %s ,now is %s ",
                                             sms.createAt, getTimeStamp())
                                code = -1005
                                return set_response(code, None, {})
                        else:
                            logging.info("sms is not found")
                            code = -1004
                            return set_response(code, None, {})

                    # 判断手机号是否注册
                    users = User.objects.filter(mobile=mobile)
                    if users.exists():
                        user = users.first()
                        # 设置用户当前已看过的产品数量
                        logging.info("update user productIndex")
                        user.productIndex = user.productIndex + 3
                        user.save()
                        logging.info("this user id is " + user.id.__str__() +
                                     ",isDone is " + user.isDone.__str__())
                        # 已注册用户验证是否填写表单
                        if user.isDone == 0:
                            code = -1
                        user = user.to_dire()

                    else:
                        logging.info("mobile is not register")
                        nUser = User(mobile=mobile,
                                     nick='新用户',
                                     amount=amount,
                                     createAt=getTimeStamp(),
                                     updateAt=getTimeStamp(),
                                     source=mediumId,
                                     linkId=linkId,
                                     sourceLink=url)
                        nUser.save()
                        logging.info("create mew user success ,id is " +
                                     nUser.id.__str__())
                        # 媒介用户统计
                        if mediumId != 0:
                            updateMediumStatistics(mediumId, linkId, nUser.id,
                                                   'new')

                        code = -1
                        user = nUser.to_dire()
                        pass
                    # 设置简单token
                    userInfo = setToken(user.get('id').__str__(), mobile)
                else:
                    code = -1000
            else:
                message = obj.errors
        else:
            return
        # 加密用户信息
        response = HttpResponse(set_response(code, message, user),
                                content_type='application/json')
        response.set_cookie('user', userInfo, max_age=24 * 60 * 60)
        return response
    except Exception as e:
        logging.error(e)
        traceback.print_exc()
        code = -10000
        return set_response(code, message, {})
    finally:
        pass
Пример #18
0
def getOrUpdateManager(request, managerId):
    message = None
    if request.method == "PUT":
        req = request.PUT
        logging.info("update manager start")
        try:
            currentManager = json.loads(request.__getattribute__('manager'))
            if currentManager.get('id') == managerId or currentManager.get(
                    'role') == 1:
                pass
            else:
                code = -50
                return set_response(code, message, {})
            manager = Manager.objects.filter(id=managerId).first()
            if not manager:
                code = -30
                return set_response(code, message, {})
            else:
                pass
            password = req.get('pwd', None)
            if password:
                logging.info("change pwd")
                manager.pwd = make_password(password)
                pass
            else:
                pass

            # 检查角色是否存在
            role = Role.objects.filter(id=req.get('role', 0)).first()
            logging.info("role id is %s", req.get('role', 0))
            if not role:
                code = -30
                return set_response(code, message, {})
            else:
                manager.role = role.id

            manager.updateAt = getTimeStamp()
            manager.updateBy = currentManager.get('name')
            manager.save()
            logging.info("update manager password success ")
            code = 0
            pass

            return set_response(code, message, {})
        except Exception as e:
            logging.info(e)
            traceback.print_exc()
            code = -10000
            return set_response(code, None, {})
    elif request.method == 'GET':
        req = request.GET
        code = 0
        message = None
        manager = {}
        logging.info("manager id is %d", managerId)
        try:
            manager = Manager.objects.filter(id=managerId).first()
            if manager:
                manager.pwd = ''
                manager = manager.to_dire()
                pass
            else:
                logging.info("manager is not found")
        except Exception as e:
            logging.error(e)
            traceback.print_exc()
            code = -10000
            pass
        finally:
            return set_response(code, message, manager)
    elif request.method == 'DELETE':
        code = 0
        message = None
        manager = {}
        logging.info("delete manager id is %d", managerId)
        try:
            manager = Manager.objects.filter(id=managerId).first()
            if manager:
                manager.delete()
                pass
            else:
                logging.info("manager is not found")
        except Exception as e:
            logging.error(e)
            traceback.print_exc()
            code = -10000
            pass
        finally:
            return set_response(code, message, manager)
    else:
        return
Пример #19
0
def recommendStatistics(request):
    logging.info("recommend product statistics")
    code = 0
    if request.method == 'POST':
        req = request.POST
        try:
            productId = req.get("productId", None)
            if not productId:
                code = -10
                return set_response(code, None, None)
            else:
                logging.info("productId is %s", productId)
            user = json.loads(request.__getattribute__("user"))
            uid = user.get("id")
            mediumId = user.get('source')
            linkId = user.get('linkId')
            if not mediumId or not linkId:
                logging.info("this user's medium or linkId is not found")
                pass
            else:
                logging.info("this user's medium is %s, linkId is %s",
                             mediumId, linkId)
                medium = Medium.objects.filter(id=mediumId).first()
                product = Product.objects.filter(id=productId).first()
                # 查询这名用户是否有这个推荐产品的访问记录
                logging.info("product is %s", product.to_dire())
                oRecord = Record.objects.filter(
                    userId=uid,
                    productId=productId,
                    createAt__gte=getTodayZeroTime(),
                    createAt__lte=getTimeStamp()).first()

                # 生成访问记录,每条记录都保存
                record = Record(createAt=getTimeStamp(),
                                updateAt=getTimeStamp(),
                                userId=uid,
                                mediumId=mediumId,
                                linkId=linkId,
                                productId=productId)
                record.save()
                logging.info("add record success")
                '''
                统计数据,如果该媒介链接相关统计数据存在,则进行修改,否则进行新增
                '''
                recommendStatistics = Recommend_Statistics.objects.filter(
                    linkId=linkId,
                    productId=productId,
                    createAt__range=(getTodayZeroTime(),
                                     getTimeStamp() + 86399999)).first()
                # 数据存在,进行修改
                if recommendStatistics:
                    recommendStatistics.pv = recommendStatistics.pv + 1
                    # 根据访问记录是否存在判断是否更新uv
                    if not oRecord:
                        recommendStatistics.uv = recommendStatistics.uv + 1
                        pass
                    recommendStatistics.save()
                    pass
                # 数据不存在,进行新增
                else:
                    Recommend_Statistics(mediumId=mediumId,
                                         linkId=linkId,
                                         createAt=getTimeStamp(),
                                         updateAt=getTimeStamp(),
                                         productId=productId,
                                         pv=1,
                                         uv=1,
                                         mediumName=medium.name,
                                         productName=product.name).save()
                    pass
        except Exception as e:
            logging.error(e)
            traceback.print_exc()
            code = -10000
        finally:
            return set_response(code, None, None)
    else:
        return
Пример #20
0
def distributionOrder(request, uid, productList: list):
    logging.info("distributionOrder start:uid is %d,ids is %s", uid,
                 productList)
    try:
        for product in productList:
            logging.info("product id is %d", product.id)
            # 查分单记录
            relation = Product_User_Relation.objects.filter(
                userId=uid, productId=product.id)
            # 没有记录则执行分单推送操作,推送成功,则生成分单关系
            if not relation.exists():
                # 给分单客户发用户信息
                # 查token是否存在,不存在直接跳过这条数据
                if product.token:
                    logging.info("this product token is %s", product.token)
                    pass
                else:
                    logging.error("this product token is not found")
                    continue
                # 查用户信息
                user = User.objects.filter(id=uid).first()
                if user:
                    logging.info("sendUserData start")
                    result = sendUserData(product.token, product, user)
                    sec_result = secure(request, user)
                    if eval(sec_result._content.decode('utf-8')).get(
                            "error_code"
                    ) == 0:  # eval(sec_result._content.decode('utf-8')).get("error_code")
                        user.secure = eval(
                            sec_result._content.decode('utf-8')).get("company")
                        user.save()
                    logging.info('sendUserData response is  %s', result.text)
                    if result.status_code == 200:
                        result = result.json()
                        if result.get('errorCode') != 0:
                            # 推送不成功直接跳过数据
                            logging.error("sendUserData error ,message is %s",
                                          result.get('errMsg'))
                            continue
                        else:
                            logging.info("sendUserData success")
                            pass
                        pass
                    else:
                        # 推送不成功直接跳过数据
                        logging.error(
                            "sendUserData error,result.status_code is %s",
                            result.status_code)
                        continue
                    pass
                else:
                    # 推送不成功直接跳过数据
                    logging.info("user data error or user medium is null")
                    continue
                # 到这里已经说明信息推送客户成功了
                # 建立用户客户关系-记录名称为归属信息
                relation = Product_User_Relation(
                    userId=uid,
                    productId=product.id,
                    createAt=getTimeStamp(),
                    updateAt=getTimeStamp(),
                    productName=product.belongName)
                relation.save()
                logging.info("create relation success")

                # 分单统计
                # productStatistics = Product_Statistics.objects.filter(productId=product.id, createAt__range=(
                productStatistics = Product_Statistics.objects.filter(
                    productName=product.belongName,
                    createAt__range=(getTodayZeroTime(),
                                     getTimeStamp() + 86399999)).first()
                if productStatistics:
                    logging.info("update today statistics data")
                    productStatistics.updateAt = getTimeStamp()
                    # 记录新分单用户
                    logging.info("a new order")
                    productStatistics.orderCount = productStatistics.orderCount + 1
                    productStatistics.save()
                else:
                    logging.info("create a new statistics data")
                    product = Product.objects.get(id=product.id)
                    if product:
                        productStatistics = Product_Statistics(
                            updateAt=getTimeStamp(),
                            createAt=getTimeStamp(),
                            productId=product.id,
                            orderCount=1,
                            productName=product.belongName)
                        productStatistics.save()
                        pass
                    else:
                        logging.info("this product not found")
                        pass
                    pass
                pass
            else:
                logging.info("this relation is exists")
                pass
            pass
        pass
    except Exception as e:
        logging.error(e)
        pass
    finally:
        pass
Пример #21
0
def getRecommendProductStatistics(request):
    if request.method == "GET" or request.method == "POST":
        code = 0
        req = request.GET
        page = int(req.get('page', 1))
        size = int(req.get('size', 10))
        start = (page - 1) * size
        end = start + size
        total = 0
        statisticsList = []
        message = None
        try:
            startTime = str(req.get("startTime", getTodayZeroTime()))
            endTime = str(req.get("endTime", getTimeStamp()))
            productId = req.get("productId", None)
            logging.info("startTime is %s, endTime is %s, productId is %s",
                         startTime, endTime, productId)
            sql = "1"
            if startTime:
                sql += " and rs.create_at >= " + str(startTime)
            if endTime:
                sql += " and rs.create_at <= " + str(endTime)
            if productId:
                sql += " and rs.product_id = " + productId

            logging.info("sql is %s", sql)
            result = Recommend_Statistics.objects.raw(
                "select rs.id,rs.medium_id,rs.medium_name,rs.product_id,rs.product_name,rs.link_id,"
                "(select count(distinct(loan_record.user_id)) from loan_record where rs.product_id=loan_record.product_id and rs.link_id=loan_record.link_id) uv,"
                "sum(rs.pv) as pv,rs.update_at,rs.create_at "
                "from loan_recommend_statistics as rs where " + sql +
                " group by rs.product_id,rs.link_id")
            total = len(list(result))
            logging.info('result size is %d', total)
            statisticsList = list(result[start:end])

            if req.get('output') == '1':
                # 指定返回为excel文件
                response = HttpResponse(
                    content_type='application/vnd.ms-excel')
                response[
                    'Content-Disposition'] = 'attachment;filename=statistics.xls'
                # 创建工作簿
                workbook = xlwt.Workbook(encoding='utf-8')
                # 创建工作页
                sheet = workbook.add_sheet("sheet1")
                row0 = [
                    u'序号', u'日期', u'推荐客户名称', u'媒介名称', u'链接ID', u'UV', u'PV'
                ]
                for i in range(0, len(row0)):
                    sheet.write(0, i, row0[i])
                num = 1
                logging.info(
                    "date is %s",
                    timeStampFormatDate(int(startTime), '%Y-%m-%d') + "~" +
                    timeStampFormatDate(int(endTime), '%Y-%m-%d'))
                for d in list(result):
                    sheet.write(num, 0, num)
                    sheet.write(
                        num, 1,
                        timeStampFormatDate(int(startTime), '%Y-%m-%d') + "~" +
                        timeStampFormatDate(int(endTime), '%Y-%m-%d'))
                    sheet.write(num, 2, d.productName)
                    sheet.write(num, 3, d.mediumName)
                    sheet.write(num, 4, d.linkId)
                    sheet.write(num, 5, d.uv)
                    sheet.write(num, 6, d.pv)
                    num = num + 1
                workbook.save(response)
                return response
            else:
                sup = {'startTime': startTime, 'endTime': endTime}
                return set_list_response(code, message, statisticsList, page,
                                         size, total, **sup)
        except Exception as e:
            logging.error(e)
            traceback.print_exc()
            code = -10000
            logging.info("startTime = getTimeStamp() %s", startTime)
            sup = {'startTime': startTime, 'endTime': endTime}
            return set_list_response(code, message, statisticsList, page, size,
                                     total, **sup)
            pass
    else:
        return
Пример #22
0
def updateProductSort(request):
    message = None
    code = 0
    logging.info("update product start")
    if request.method == 'POST':
        try:
            #
            req = request.body
            jsonObj = json.loads(req)
            logging.info("json is %s", jsonObj)
            # 取排序id
            ids = jsonObj.get('ids', [])
            logging.info("ids size is %d", len(ids))
            # 取数据
            productList = Product.objects.filter(id__in=ids)
            logging.info("productList size is %s", productList.count())
            # 取排序类型
            sortType = jsonObj.get('type', 1)
            # 取客户类型
            productType = jsonObj.get('productType', None)
            if sortType != 1 and not productType:
                code = -1043
                return set_response(code, None, {})
            medium = None
            if sortType == 1:
                logging.info("sort type is product")
                # 按 id 入参顺序进行排序
                productList = dict([(product.id, product)
                                    for product in productList])
                productList = [productList[productId] for productId in ids]

                i = 1
                for product in productList:
                    product.sort = i
                    product.save()
                    i += 1
            # 媒介下排序

            elif sortType == 2:
                logging.info("sort type is medium")
                mediumId = jsonObj.get('mediumId')
                if not mediumId:
                    code = -10
                    return set_response(code, None, {})
                else:
                    medium = Medium.objects.filter(id=mediumId).first()
                    pass
                # 获取媒介下链接未排序列表
                if productType == 1:
                    # 结果保存在媒介上
                    logging.info("update medium product sort,type is 1")
                    medium.productSort1 = json.dumps(ids)
                    medium.save()
                    linkList = MediumLink.objects.filter(
                        productSort1__isnull=True, mediumId=mediumId)

                elif productType == 2:
                    logging.info("update medium product sort,type is 2")
                    medium.productSort2 = json.dumps(ids)
                    medium.save()
                    linkList = MediumLink.objects.filter(
                        productSort2__isnull=True, mediumId=mediumId)
                else:
                    code = -30
                    message = 'productType is request'
                    return set_response(code, message, {})
                logging.info("sort link size is %s", linkList.count())
                if productType == 1:
                    linkList.update(productSort1=json.dumps(ids),
                                    updateAt=getTimeStamp())
                else:
                    linkList.update(productSort2=json.dumps(ids),
                                    updateAt=getTimeStamp())

            # 链接下排序
            elif sortType == 3:
                logging.info("sort type is link")
                linkId = jsonObj.get('linkId')
                if not linkId:
                    code = -10
                    return set_response(code, None, {})
                else:
                    pass
                # 获取链接
                link = MediumLink.objects.filter(id=linkId).first()
                if link:
                    link.productSort = json.dumps(ids)
                    link.updateAt = getTimeStamp()
                    if productType == 1:
                        link.productSort1 = json.dumps(ids)
                    else:
                        link.productSort2 = json.dumps(ids)

                    link.save()
                else:
                    code = -30
                    return set_response(code, None, {})
        except Exception as e:
            logging.error(e)
            traceback.print_exc()
            code = -10000
        finally:
            return set_response(code, message, {})
    else:
        return
Пример #23
0
def createProduct(request):
    message = None
    code = 0
    pid = 0
    logging.info("create product start")
    if request.method == 'POST':
        try:

            req = request.POST
            obj = ProductForm(req)
            if obj.is_valid():
                pType = req.get('type', None)

                # 检查是否有重名元素
                product = Product.objects.filter(
                    name=obj.cleaned_data.get('name'),
                    type=obj.cleaned_data.get('type'))
                if product.exists():
                    code = -1041
                    return set_response(code, message, {})
                else:
                    product = Product(updateAt=getTimeStamp(),
                                      createAt=getTimeStamp())
                    pass

                # 表单元素转model
                # product = formToModel(Product(updateAt=getTimeStamp(), createAt=getTimeStamp()), obj)
                logging.info("type is " + pType)
                if pType == '1':
                    # 简介必填
                    introduce = req.get('introduce', None)
                    if introduce:
                        logging.info("introduce is %s", introduce)
                        product.introduce = introduce
                    else:
                        code = -1040
                        return set_response(code, message, {})
                elif pType == '2':
                    # url、利率必填
                    url = req.get('url', None)
                    rateStart = req.get('rateStart', None)
                    rateEnd = req.get('rateEnd', None)
                    if url and rateStart and rateEnd:
                        logging.info(
                            "url is %s ,rateStart is %s ,ratEnd is %s", url,
                            rateStart, rateEnd)
                        product.url = url
                        product.rateStart = rateStart
                        product.rateEnd = rateEnd
                    else:
                        code = -1042
                        return set_response(code, message, {})
                else:
                    code = -10
                    return set_response(code, message, {})

                productObj = ProductForm(req, instance=product)
                result = productObj.save()
                logging.info('create product success')
                pid = result.id
            else:
                code = -10
                message = obj.errors
        except Exception as e:
            logging.error(e)
            code = -10000
        finally:
            return set_response(code, message, pid)
    else:
        return
Пример #24
0
def updateProduct(request, productId):
    message = None
    code = 0
    logging.info("update product start")

    if request.method == 'POST':
        try:
            # 校验数据是否存在
            product = Product.objects.get(id=productId)
            if not product:
                code = -30
                return set_response(code, message, {})
            else:
                pass

            req = request.POST
            product.updateAt = getTimeStamp()
            obj = ProductForm(req, instance=product)
            if obj.is_valid():
                pType = req.get('type', None)
                logging.info("type is %s", pType)

                # 检查是否有重名元素
                checkNameProduct = Product.objects.filter(name=req.get('name'),
                                                          type=pType)
                if checkNameProduct.exists():
                    if checkNameProduct.first().id != productId:
                        code = -1041
                        return set_response(code, message, {})
                    else:
                        pass
                else:
                    pass

                if pType == '1':
                    # 简介必填
                    introduce = obj.cleaned_data.get('introduce')
                    if introduce:
                        logging.info("introduce is %s", introduce)
                    else:
                        code = -1040
                        return set_response(code, message, {})
                elif pType == '2':
                    # url、利率必填
                    url = obj.cleaned_data.get('url')
                    rateStart = req.get('rateStart', None)
                    rateEnd = req.get('rateEnd', None)
                    if url and rateStart and rateEnd:
                        logging.info(
                            "url is %s ,rateStart is %s ,ratEnd is %s", url,
                            rateStart, rateEnd)
                        product.url = url
                        product.rateStart = rateStart
                        product.rateEnd = rateEnd
                    else:
                        code = -1042
                        return set_response(code, message, {})
                else:
                    code = -10
                    return set_response(code, message, {})

                obj.save()
                logging.info('create product success')

            else:
                code = -10
                message = obj.errors
        except Exception as e:
            logging.error(e)
            code = -10000
        finally:
            return set_response(code, message, productId)
    else:
        return