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
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
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
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
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
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
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
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
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
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
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)
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
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
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)
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
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
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
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
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
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
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
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
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
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