def authUrl(request, code, email, stype='register'): if stype == 'register': url = "{}/auth/active/{}/?email={}".format(settings.HTTP_HOST, code, email) else: url = "{}/auth/auth_retrieve/?email={}&auto={}".format( settings.HTTP_HOST, email, code) url, salt = AtomSig(request, url, stype='lock') print('重置验证码,生成Sign数据库验证', salt, email) salts = bytes.decode(salt) M = models.Md5Salt.objects.filter(email=email) print('重置验证码,生成Sign数据库验证', M) if M: for i in M: i.salt = salts i.save() pass else: models.Md5Salt(email=email, salt=salts, key=models.User.objects.get(email=email), time_add=datetimenow(), time_now=datetimenow()).save() return url
def add_user(request): ''' 创建用户 :return: ''' email = request.POST.get('email') username = request.POST.get('username') password = request.POST.get('password') groupname = request.POST.get('groupname') # vipgroup = request.POST.get('password') froms = add_user_From(request.POST) if froms.is_valid(): t = datetimenow.datetimenow() User.objects.create_user(username=username, email=email, password=password).save() try: u = User.objects.get(username=username, email=email) G = Group.objects.get(id=groupname) u.groups.add(G) UserProfix(email=email, username=username, send_type='register', defaule=False, timedate=t, addtime=t, oneKey=u).save() except Exception as e: content = {'error': '创建用户失败', 'state': 'error', 'code': '500'} return HttpResponse(json.dumps(content)) content = {'state': 'success', 'code': '200'} return HttpResponse(json.dumps(content))
def get(self, request): data = datetimenow.datetimenow() logger.i('index', '{}-{}-{}'.format(data.year, data.month, data.day)) info = Order.objects.filter(createtime__gt='{}-{}-{}'.format( data.year, data.month, data.day), ) # 今日下单人数 deal = Order.objects.filter( createtime__gt='{}-{}-{}'.format(data.year, data.month, data.day), state__in=[0, 3, 4]).exclude(state__in=[1, 2, 5, -1, -2]) # 今日成交订单 dealAll = Order.objects.filter(createtime__gt='{}-{}-{}'.format( int(data.year) - 1, data.month, data.day), # ispaid=1, ).exclude(state__in=[1, 2, 5, -1, -2]) # 今年成交总订单 content = { 'info': len(info), 'deal': len(deal), 'dealAll': len(dealAll) } return render(request, 'defaule/admin/order/index.html', content) pass
def nu(t): ''' 计算以过去多少秒 :param t: 起点时间 :return: 过去时间秒 ''' datetime = str(t).split('.')[0] datetime = datetime.split('-')[0] + datetime.split('-')[1] + datetime.split('-')[2].split(' ')[0] + \ datetime.split(':')[1] + datetime.split(':')[2] time = int(str(datetime).split('+')[0]) print('time1', time) datetime = datetimenow() datetime = str(datetime).split('.')[0] datetime = datetime.split('-')[0] + datetime.split('-')[1] + datetime.split('-')[2].split(' ')[0] + \ datetime.split(':')[1] + datetime.split(':')[2] datetime = int(datetime) print('time2', datetime) datetime = (int(datetime) - int(time)) print('time3', datetime) return datetime pass
def buildFileName(filename): from managestage.utli.datetimenow import datetimenow dt = datetimenow() name, ext = os.path.splitext(filename) return "%s" % (dt.strftime("%Y-%m-%d-%M-%H-%S-{0}{1}".format( random.randint(1, 999999), ext)))
def set_maintain(request): ''' 站点设置-站点维护模式 :return: ''' inta_info = request.POST.get('inta_info') inta_datatime = request.POST.get('inia_time') inta_allwo = request.POST.get('inta_allwo') if inta_allwo: inta_allwo = True else: inta_allwo = False # inta_datatime = date_new(str(inta_datatime)) maintain = models.maintain.objects.filter() if maintain: print(inta_datatime) for i in maintain: i.inta_info = inta_info if i.inta_allwo == False: print('保存时间', inta_datatime) i.inta_datatime = inta_datatime i.inta_allwo = inta_allwo i.save() else: models.maintain(inta_info=inta_info, inta_datatime=inta_datatime, inta_allwo=inta_allwo, inta_time_now=datetimenow.datetimenow()).save() content = {'state': 'success', 'code': '200'} return HttpResponse(json.dumps(content)) pass
def user_directory_path(self, filename): import os filename = '{}.{}'.format( str(datetimenow()).split('+')[0], filename.split('.')[-1]) path = os.path.join("images", filename) return path
def order_delete(self, stype=0): ''' 取消整个订单(生成验收单之前) 根据验收单是否生成 而采取 取消验收单还是作废验收单操作 :return: ''' if not self.usercode or self.usercode == '': log.i(globals(), '非国采用户,跳过取消整个订单(生成验收单之前)') return False if self.ordispaid == 0: data = { 'user': { 'username': self.username, 'code': self.sign() }, 'param': { 'orderid': self.orderid, 'type': stype # '请求类型' } } html = requests.post(url='{}/api/order_update'.format(self.ApiUrl), data=json.dumps(data), headers=self.headers) dicts = json.loads(html.text) log.i(globals(), '国采用户,取消整个订单(生成验收单之前)', json.loads(html.text)) elif self.ordispaid == 2: data = { 'user': { 'username': self.username, 'code': self.sign() }, 'param': { 'orderid': self.orderid, 'type': 7 # 作废整个订单(退货,生成验收单之后) } } html = requests.post(url='{}/api/order_update'.format(self.ApiUrl), data=json.dumps(data), headers=self.headers) dicts = json.loads(html.text) if dicts['returnmessage']['code'] == 1: log.i(globals(), '国采用户,取消整个订单(生成验收单之前)', json.loads(html.text)) else: # 验收单创建失败 # 后续处理 models.Error_Order( info=1, mess='[orderid={}],[total={}],[return={}]'.format( self.orderid, self.total, json.loads(html.text)), key=self.orderModel, time=datetimenow()).save() log.i(globals(), '【失败】国采用户,取消整个订单(生成验收单之前) ', json.loads(html.text)) pass return dicts pass
def order_PaymentCompletion(self): ''' 更新订单-更新支付信息 以完成支付 0 没付款 1 款结了 :return: ''' if not self.usercode or self.usercode == '': log.i(globals(), '非国采用户,跳过更新订单-更新支付信息 以完成支付') return False if self.ispaid == 0: # 没付款 data = { 'user': { 'username': self.username, 'code': self.sign() }, 'param': { 'orderid': self.orderid, 'type': 2, # 更新支付信息,需附带paymethod、ispaid参数 'paymethod': self.paymethod, 'ispaid': 1 # 款结了 } } html = requests.post(url='{}/api/order_update'.format(self.ApiUrl), data=json.dumps(data), headers=self.headers) if html: self.orderModel.ispaid = 1 self.orderModel.save() pass dicts = json.loads(html.text) if dicts['returnmessage']['code'] == 1: log.i(globals(), '国采用户,更新订单-更新支付信息 以完成支付', json.loads(html.text)) else: # 验收单创建失败 # 后续处理 models.Error_Order( info=1, mess='[orderid={}],[total={}],[return={}]'.format( self.orderid, self.total, dicts), key=self.orderModel, time=datetimenow()).save() log.i(globals(), '【失败】国采用户,更新订单-更新支付信息 以完成支付 ', json.loads(html.text)) pass return dicts pass else: # 以付款 log.i(globals(), '国采用户,以付款,不更新订单信息', self.ispaid) pass return False pass
def user_directory_path(self, filename): import os filename = '{}.{}'.format( str(datetimenow()).split('+')[0], filename.split('.')[-1]) path = os.path.join("images", self.key.unix, "head", filename) logger.i('os.path.join ', path) return path
def order_knot(self): ''' 更新订单-如果数据库ispaid为1 则申请生成验收单 0 没付款 1 款结了 :return: ''' if not self.usercode or self.usercode == '': log.i(globals(), '非国采用户,跳过更新订单-如果数据库ispaid为1 则申请生成验收单') return False if self.ispaid == 1: # 款结了 申请生成验收单 data = { 'user': { 'username': self.username, 'code': self.sign() }, 'param': { 'orderid': self.orderid, 'type': 1, # 已验收完成(申请生成验收单) 'paymethod': self.paymethod, 'ispaid': self.ispaid } } html = requests.post(url='{}/api/order_update'.format(self.ApiUrl), data=json.dumps(data), headers=self.headers) dicts = json.loads(html.text) if dicts['returnmessage']['code'] == 1: log.i(globals(), '国采用户,款结了 申请生成验收单', dicts, dicts['returnmessage']['ysd_code']) acc = Acceptance.objects.get(orderid=self.orderid) acc.state = 0 acc.ysd_code = dicts['returnmessage']['ysd_code'] acc.save() else: # 验收单创建失败 # 后续处理 models.Error_Order( info=1, mess='[orderid={}],[total={}],[return={}]'.format( self.orderid, self.total, dicts), key=self.orderModel, time=datetimenow()).save() log.i(globals(), '【失败】国采用户,款结了 申请生成验收单 ', json.loads(html.text)) pass return json.loads(html.text) pass else: # 没付款 log.i(globals(), '国采用户,没付款,不更新订单信息', self.ispaid) pass return False pass
def set_system(request): ''' 站点设置-设置站点属性 :return: ''' site_name = request.POST.get('site_name') site_tags = request.POST.get('site_tags') site_url = request.POST.get('site_url') site_email = request.POST.get('site_email') site_icp = request.POST.get('site_icp') site_can_register = request.POST.get('site_can_register') site_allow_sending_statistics = request.POST.get( 'site_allow_sending_statistics') if site_can_register: site_can_register = True else: site_can_register = False if site_allow_sending_statistics: site_allow_sending_statistics = True else: site_allow_sending_statistics = False try: system = models.systemSetup.objects.filter() if system: print('SystemModels', system, site_allow_sending_statistics) for i in system: i.site_name = site_name i.site_tags = site_tags i.site_email = site_email i.site_icp = site_icp i.site_url = site_url i.site_can_register = site_can_register i.site_allow_sending_statistics = site_allow_sending_statistics i.save() else: print('SystemModelsNo', system) models.systemSetup( site_name=site_name, site_tags=site_tags, site_email=site_email, site_icp=site_icp, site_url=site_url, site_can_register=site_can_register, site_allow_sending_statistics=site_allow_sending_statistics, site_time_now=datetimenow.datetimenow()).save() except Exception as e: content = {'error': '不知道什么错误', 'state': 'error', 'code': '403'} return HttpResponse(json.dumps(content)) content = {'state': 'success', 'code': '200'} return HttpResponse(json.dumps(content)) pass
def __init__(self, usercode, orderid): self.ApiUrl = 'http://mall-api.zycg.gov.cn' self.priKey = '''-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQCsAiCNz0SMIhMoQtxmgphUqxYSW+wXz9Ub9EuRKXrFVPUc0Dm9 6Mn/zwNkmsiqfjw1UOVhnm6lKERSXUZ/1y+Xfhn16zsj6uBVtRa+G4g+S/sDNBvM GjHxqba7AtihEVslmrNfEmb0T6T0QbV80gqnb9idCCFpsMroGJtDCMXFrQIDAQAB AoGAS0avCoCfxhgPfDoujGow0jUBds1luFILOK2j+IZHpV512sNB0duzs1DcckXO 9dZC8S5TBHK6h2rk44rQlJgOyi0GvIpaIKKPDii7PcOIm8ortmuKvDb/9iNonSsX QqAVr/aSHstE2TWgx5r1rVQC3UDqSNAKJJZvyWMq13o16wECQQDT6jmY7rnDxiex lB7HQiLhe+6PAuR1bqyu6rAsuNJ1yCv1sMJOAh/kLU83gn5Bu46urOoZtF1nBMmZ vhaL8IpBAkEAz8qg3XH+BRR6i4/q19z3snFLQmmfbXUGYURf2RxNQJvbG3IMHyCk O/bqR4RHX7388+itgrE8O3Qg6jQGUhDobQJASc7opLVxChj4NkdquOf2EicCHdla DPSxPHMNTWZKFy/S783SvyzKQsTtNF5E70wOFBSxrKY/aeQm+19TpwXugQJBAIfY I7TCGlx91+O3scNvzWuWT6paXQT1FbevOK46p3KOsf7OX4hWEai2MtGQdAzuqxlW S2D+t67yq7YRTvSF4z0CQALqqK/SArm3qsAc4XcAhoIPzgELzcqBF2Xsqlp0pEx2 IivDCEwCkCL6CXwa5qoEHXrskarZuhDe3yZhRnuKj80= -----END RSA PRIVATE KEY-----''' self.time = datetimenowS() self.username = '******' self.passwd = '6i2hvvpvv2wmrvt9' self.passwd = '{}{}'.format(self.passwd, self.time).encode(encoding="utf-8") self.datatime = str(datetimenow()).split('.')[0] self.headers = {'Content-Type': 'application/json;charset=utf-8'} self.usercode = usercode self.orderid = orderid # 订单ID ''' 订单基本信息 :return: ''' try: self.orderModel = Order.objects.get(orderid=self.orderid) self.total = float(self.orderModel.total) # '总订单 成交总价' self.province = self.orderModel.province # '北京' self.city = self.orderModel.city # '北京' self.deliveryaddress = self.orderModel.deliveryaddress # '详细地址' self.name = self.orderModel.linkman # '名字' self.phone = self.orderModel.linkmobile # '电话号' self.remark = self.orderModel.remark # '订单备注' self.paymethod = int(self.orderModel.paymethod) # 付款方式 self.ispaid = int(self.orderModel.ispaid) # 是否完成支付、结清账期 self.ordispaid = int(self.orderModel.ordispaid) self.suborder = Suborderlist.objects.get(key=self.orderModel) self.subtotal = float(self.suborder.total) # '子订单总金额 不可大于总订单金额' ''' 子订单基本信息 ''' self.good = Goodslist.objects.filter(key=self.suborder) '''物流订单信息''' self.istics = Logistics.objects.filter(key=self.orderModel) except: log.i(globals(), '没有获取到Order订单信息,跳过') pass
def order_logistics(self): ''' 物流推送接口, 全量推送 只推送数据库里面的物流信息 :return: ''' if not self.usercode or self.usercode == '': log.i(globals(), '非国采用户,跳过物流推送接口, 全量推送') return False logisticslist = [] for i in self.istics: logisticslist.append({ 'time': str(i.time.astimezone()).split('+')[0], 'info': i.info, 'username': i.username }) pass data = { 'user': { 'username': self.username, 'code': self.sign() }, 'param': { 'orderid': self.orderid, 'suborderid': self.orderid, # '子订单号(卖场)', 'logisticslist': logisticslist } } html = requests.post(url='{}/api/order_logistics'.format(self.ApiUrl), data=json.dumps(data), headers=self.headers) dicts = json.loads(html.text) if dicts['returnmessage']['code'] == 1: log.i(globals(), '国采用户,物流推送接口, 全量推送', json.loads(html.text)) else: # 验收单创建失败 # 后续处理 models.Error_Order( info=1, mess='[orderid={}],[total={}],[return={}]'.format( self.orderid, self.total, json.loads(html.text)), key=self.orderModel, time=datetimenow()).save() log.i(globals(), '【失败】国采用户,物流推送接口, 全量推送 ', json.loads(html.text)) pass return json.loads(html.text) pass
def save(self, *args, **kwargs): warePrefix = self.key.wareappprefix_set.get() try: self.productType = warePrefix.classifythere_key.name except AttributeError: self.productType = '' logger.i('productType', self.productType) if not self.time_add: self.time_add = datetimenow() pass super(parameter, self).save(*args, **kwargs) pass
def order_delete_on(self): ''' 作废整个订单(生成验收单之后) :return: ''' # if not self.usercode or self.usercode == '': # log.i(globals(), '非国采用户,跳过作废整个订单(生成验收单之后)') # return False data = { 'user': { 'username': self.username, 'code': self.sign() }, 'param': { 'orderid': self.orderid, 'type': 7 # 作废整个订单(退货,生成验收单之后) } } html = requests.post(url='{}/api/order_update'.format(self.ApiUrl), data=json.dumps(data), headers=self.headers) dicts = json.loads(html.text) if dicts['returnmessage']['code'] == 1: log.i(globals(), '国采用户,作废整个订单(生成验收单之前)', json.loads(html.text)) acc = Acceptance.objects.get(orderid=self.orderid) acc.state = -1 acc.save() # 订单中的验收单状态 self.orderModel.ordispaid = -1 self.orderModel.save() else: # 验收单创建失败 # 后续处理 models.Error_Order( info=1, mess='[orderid={}],[total={}],[return={}]'.format( self.orderid, self.total, json.loads(html.text)), key=self.orderModel, time=datetimenow()).save() log.i(globals(), '【失败】国采用户,作废整个订单(生成验收单之前) ', json.loads(html.text)) return False pass return dicts pass
def save(self, *args, **kwargs): if not self.time_add: self.time_add = datetimenow() super(WareAppPrefix, self).save(*args, **kwargs) info = self.wareApp_key.parameter_set.filter() if info.exists(): info = info.get(key=self.wareApp_key) info.productType = self.classifythere_key.name info.save() else: parameter.objects.create(key=self.wareApp_key) # try: # self.wareApp_key.parameter_set.filter() # except parameter.DoesNotExist: # parameter.objects.create(key=self.wareApp_key) # except Exception as e: # logger.e('WareAppPrefix save', e.args) pass
def dirHead(self, dirc, disUrl, path_image): ''' 商品展示图 :param url: :param dirc: :return: ''' name = '' for i in '{}-{}.{}'.format( str(datetimenow.datetimenow()).split('.')[0], random.randint(1000, 9000), str(dirc).split('.')[1]).split(':'): name += i pass a = self.get_absloute_url(BASE_DIR, self.url, dirc) b = self.get_absloute_url(disUrl, 'head', name) path_image_b = self.get_absloute_url(path_image, 'head', name) log.i(globals(), '商品展示图: ', dirc.split('.')[0], '->', path_image_b) if not self.images: self.images = self.get_absloute_url('/', path_image_b) print('商品展示图 self.images', self.images) self.HeadList.append( (dirc.split('.')[0], self.get_absloute_url('/', path_image_b))) self.HeadList.sort(key=lambda k: k[0]) log.i(globals(), 'HeadList', self.HeadList) b = self.get_absloute_url(BASE_DIR, b) shutil.copyfile(a, b) pass
def set_addSector(request): ''' 商品-板块管理-添加商品 :return: ''' ware_id = request.POST.get('ware_id') temp_id = request.POST.get('temp') url = '' # request.POST.get('url') ware = models.WareApp.objects.get(id=ware_id) Mt = models.MiddleTop.objects.get(id=temp_id) images = '/static/ware/ware-404.jpg' try: image = models.images.objects.filter(key=ware)[:1].get() images = '{}'.format(image.image) except: images = '/static/ware/ware-404.jpg' pass if models.commodity.objects.filter(title=ware.name, money=ware.money): content = {'state': 'warning', 'warning': '商品以在其他板块添加', 'code': '200'} pass else: models.commodity(title=ware.name, money=ware.money, image=images, url=url, ware_key=ware, key=Mt, time_add=datetimenow()).save() content = {'state': 'success', 'code': '200'} return HttpResponse(json.dumps(content)) pass
def addModelsObjects(self): c = self.content for i in c: head = i['a'] cont = i['b'] name = i['n'] money = i['m'] unix = i['u'] text = '' for i in cont: text += ''' <p> <img src="{}"/> </p> '''.format(i[1]) log.i(globals(), '类型cont', i, i[1], unix, text) pass t = datetimenow.datetimenow() ware = models.WareApp(name=name, money=money, connet=text, image=self.images, unix=unix, time_add=t, time_now=t) ware.save() for image in head: log.i(globals(), '类型head', image, image[1]) models.images(image=image[1], key=ware).save() models.parameter(model=name, key=ware).save() pass
def save(self, *args, **kwargs): if self.time is not None: self.time = datetimenow() super(Cart, self).save(*args, **kwargs)
def save(self, *args, **kwargs): self.datetime = datetimenow() super(UserInfo, self).save(*args, **kwargs)
def save(self, *args, **kwargs): if not self.time_add: self.time_add = datetimenow() super(RegisterState, self).save(*args, **kwargs)
def create(self, request, *args, **kwargs): if not self.request.user.usercode: return Response({'detail': '非央采用户,不允许申请合同'}, status=403) data = request.data serializer = self.get_serializer(data=data) serializer.is_valid(raise_exception=True) # userinfo = UserInfo.objects.get(key=self.request.user) uninfo = AccountModels.UnitInfo.objects.get(key=self.request.user) o = HomeModels.Order.objects.get(id=data['key_order']) try: acc = HomeModels.Acceptance.objects.get(orderid=o.orderid).ysd_code if not acc: acc = '-' except HomeModels.Acceptance.DoesNotExist: acc = '-' pass if o.area and o.city and o.deliveryaddress: adder = '{} {} {} {}'.format(o.province, o.city, o.area, o.deliveryaddress) else: adder = '{} {} {}'.format(o.province, o.city, o.deliveryaddress) pass createtime = o.createtime.astimezone() timelist = str(createtime).split(' ') tlist = timelist[0] # 2018-06-25 tlist_all = tlist.split('-') # ['2018', '06', '25'] tlist_0 = tlist_all[0] # 2018 tlist_1 = tlist_all[1] # 06 tlist_2 = tlist_all[2] # 25 tlist_2 = int(tlist_2) + 2 newtime = '{}年{}月{}日'.format(tlist_0, tlist_1, str(tlist_2)) logger.i('订单送货时间+2天', newtime) HomeModels.Contracts( Acceptance=acc, # 验收单编号 Done DAXTOTAL=capitalizationPrice.price(o.total), phlone=o.linkmobile, # 电话号 createtime=o.createtime, # 订单创建时间 username=o.linkman, # 收货人 unit=uninfo.name, # 单位 service='0.00', # 服务费 usercode=o.usercode, # 采购人唯一识别码 orderid=o.orderid, # 合同编号 total=o.total, # 合计[商品总价] DeliveryTime=newtime, # 送货时间[这个时间前到达目的地] DeliverylaceP=adder, # 送货地点 price=11, # gso.price, # 商品单价成交价 number=1, # gso.qty, # 数量 name='', # o.name, # 产品名称[商品名称] brands='', # gso.goodsbrandname, # 品牌 model='', # gso.model, # 产品型号 content='', # gso.sku, # 技术规格合主要配置 images=o.images, # 订单首页图片 url=o.url, # 订单链接 time=datetimenow(), key_order=o, key=self.request.user).save() o.ordContract = -1 o.save() headers = self.get_success_headers(serializer.data) return Response(serializer.data, status=201, headers=headers)
def update(self, request, *args, **kwargs): from home.models import Logistics from OAuth2.util.autograph import AutoRsaGraph instance = self.get_object() if 'isgotuaddress' in request.data: if instance.state == 5 or \ instance.state == 3 or \ instance.state == 4 or \ instance.state == 0 or \ instance.state == -2 or \ not request.data['isgotuaddress'] or \ instance.isgotuaddress: context = {'detail': '此订单状态不可操作。可能订单已完成,或以被取消!'} return Response(data=context, status=403) return super(OrderViewSet, self).update(request, *args, **kwargs) if 'type' in request.data: '''驳回用户取消订单''' if request.data['type'] == 'reject': return self.reject(instance) '''批准用户取消订单''' if request.data['type'] == 'approval': return self.approval(instance) return super(OrderViewSet, self).update(request, *args, **kwargs) if 'ordtype' in request.data: ''' 发货处理 推送央采接口信息 Shipping Handler Push logistics information ''' if request.data['ordtype'] == 0: Logistics(username='******', info='系统以确认订单,商品正在出库', time=datetimenow(), key=instance).save() if instance.usercode: AutoRsa = AutoRsaGraph(usercode=instance.usercode, orderid=instance.orderid) ''' 生成验收单 Generating acceptance sheet ''' if instance.ordispaid == 0: instance.ordispaid = 2 instance.save() # AutoRsa.order_knot() AutoRsa.order_update() logger.i('生成验收单') pass AutoRsa.order_logistics() ''' 合同转正 Contract renewal ''' from home.models import Contracts try: ins = instance.contracts_set.get() except Contracts.DoesNotExist: ContractUtils.Contract(instance).getpulContract() ins = instance.contracts_set.get() pass ins.stype = 0 ins.save() pass return self.respone({ 'state': 2, 'ordispaid': 2, 'ordContract': 1, 'ordtype': 0 }) ''' 收货处理 推送央采接口信息 ''' if request.data['ordtype'] == 1: instance.state = 0 instance.save() Logistics(username='******', info='您的订单已签收。感谢您在未来办公网购物,欢迎再次光临。', time=datetimenow(), key=instance).save() if instance.usercode: au = AutoRsaGraph(usercode=instance.usercode, orderid=instance.orderid) au.order_logistics() pass return self.respone({'state': 0, 'ordtype': 1}) if 'ispaid' in request.data: ''' 完成支付处理 推送央采接口信息 ''' if request.data['ispaid'] == 1: if instance.usercode: au = AutoRsaGraph(usercode=instance.usercode, orderid=instance.orderid) au.order_PaymentCompletion() pass return self.respone({'ispaid': 1}) return super(OrderViewSet, self).update(request, *args, **kwargs)
def send_auth_email(request, send_type="register", Users=None): ''' :param request: :param email: :param send_type: register[注册账号]/retrieve[找回密码] :return: ''' if Users == None: username = request.user.username else: username = Users[0].username user = models.User.objects.filter(username=username) code = random_str(128) print(user[0].username) if user: username = user[0] email_record = models.UserProfix.objects.filter(email=username.email) if email_record: for i in email_record: i.code = code i.email = username.email i.oneKey = username i.send_type = send_type i.addtime = datetimenow() if send_type == "register": i.defaule = False if send_type == 'retrieve': i.code_default = True i.save() pass else: email_record = models.UserProfix() email_record.username = username.username email_record.email = username.email email_record.oneKey = username email_record.code = code email_record.send_type = send_type email_record.addtime = datetimenow() if send_type == "register": email_record.defaule = False if send_type == 'retrieve': email_record.code_default = True email_record.save() email_record = models.UserProfix.objects.filter( username=username.username) email_title, email_body = None, None # 如果为注册类型 if send_type == "register": url = authUrl(request, code, email_record[0].email, stype='register') email_title = "注册激活链接" email_body = "请点击下面的链接激活你的账号: {}".format(url) print(email_title) if send_type == 'retrieve': url = authUrl(request, code, email_record[0].email, stype='retrieve') email_title = '找回密码验证' email_body = "请点击下面的链接跳转到您将要找回密码的地址: {}".format(url) print(email_title) mail(username.email, email_title, email_body)
def dirContent(self, dirc, disUrl): ''' 商品详情页 :param url: :param dirc: :return: ''' urls = self.get_absloute_url(self.url, dirc) if os.path.exists(urls): for dircs in os.listdir(urls): if not 'Thumbs.db' in dircs: a = self.get_absloute_url(BASE_DIR, self.url, dirc, dircs) if os.path.isdir(a): for root, dirnames, filenames in os.walk(a): for filepath in filenames: name = '' for i in '{}-{}.{}'.format( str(datetimenow.datetimenow()).split( '.')[0], random.randint(1000, 9000), str(filepath).split('.')[1]).split( ':'): name += i pass b = self.get_absloute_url(disUrl, name) self.ConList.append( (filepath.split('.')[0], self.get_absloute_url('/', b))) self.ConList.sort(key=lambda k: k[0]) log.i(globals(), 'ConList', self.ConList) b = self.get_absloute_url(BASE_DIR, b) shutil.copyfile( self.get_absloute_url(a, filepath), b) # log.i(globals(), '商品详情页: ', os.path.join(a, filepath), '->', b) pass pass else: name = '' for i in '{}-{}.{}'.format( str(datetimenow.datetimenow()).split('.')[0], random.randint(1000, 9000), str(dircs).split('.')[1]).split(':'): name += i pass b = self.get_absloute_url(disUrl, name) self.ConList.append((dircs.split('.')[0], self.get_absloute_url('/', b))) self.ConList.sort(key=lambda k: k[0]) log.i(globals(), 'ConList', self.ConList) b = self.get_absloute_url(BASE_DIR, b) shutil.copyfile(a, b) log.i(globals(), '商品详情页: ', a, '->', b) pass pass pass pass
def order_create(self): ''' 创建订单 :return: ''' if not self.usercode or self.usercode == '': log.i(globals(), '非国采用户,跳过创建订单') return False url = settings.HTTP_HOST goodslist = [] for i in self.good: goodslist.append({ 'goodsname': i.goodsname, 'goodsid': i.goodsid, 'spu': i.spu, 'sku': i.sku, 'model': i.model, 'goodsclassguid': int(i.goodsclassguid), 'goodsclassname': i.goodsclassname, 'goodsbrandname': i.goodsbrandname, 'qty': int(i.qty), 'total': float(i.total), 'price': float(i.price), 'originalprice': float(i.originalprice), 'imgurl': i.get_image_url(), 'goodsurl': '{}{}'.format(url, i.goodsurl) }) pass data = { 'user': { 'username': self.username, 'code': self.sign() }, 'param': { 'orderid': self.orderid, 'province': self.province, 'city': self.city, 'total': float(self.total), 'linkman': self.name, 'linkmobile': self.phone, 'deliveryaddress': self.deliveryaddress, 'paymethod': self.paymethod, 'ispaid': self.ispaid, 'remark': self.remark, 'usercode': self.usercode, 'createtime': self.datatime, 'suborderlist': [{ 'suborderid': self.orderid, # 后期可能需要修改 'total': float(self.subtotal), 'goodslist': goodslist }] } } log.i(globals(), 'DATE ', data) html = requests.post(url='{}/api/order_create'.format(self.ApiUrl), data=json.dumps(data), headers=self.headers) dicts = json.loads(html.text) if dicts['returnmessage']['code'] == 1: log.i(globals(), '国采用户,创建订单', json.loads(html.text)) Acceptance(orderid=self.orderid, usercode=self.usercode, time=datetimenow()).save() else: # 验收单创建失败 # 后续处理 models.Error_Order( info=1, mess='[orderid={}],[total={}],[return={}]'.format( self.orderid, self.total, dicts), key=self.orderModel, time=datetimenow()).save() log.i(globals(), '【失败】国采用户,创建订单 ', json.loads(html.text)) pass return dicts pass
def getOrder(self, cart): self.orderid = _order_num(package_id=cart[0].key.id, user_id=self.user.id) # '创建主订单号' money_aggregate = self.get_money(cart) o = Order.objects.create( orderid=self.orderid, province=self.province, city=self.city, total=money_aggregate['total'], linkman=self.linkman, linkmobile=self.linkmobile, deliveryaddress=self.deliveryaddress, paymethod=self.paymethod, remark=self.remark, usercode=self.user.usercode, createtime=datetimenow(), area=self.area, invoice=self.invoices_stype, key_inv=self.invoices, key=self.user, state=2 ) subware = Suborderlist.objects.create( suborderid=o.orderid, total=o.total, key=o ) for i in cart: try: per = i.key.parameter_set.get() except MultipleObjectsReturned: del_par = i.key.parameter_set.filter() per = del_par[0] del_par[1].delete() logger.e('以清理多余parameter数据 WareApp-ID', i.key.id) classify = i.key.wareappprefix_set.get() try: goodsclassguid = classify.rate_classg_key.uid # '商品目录ID 枚举值对照表' goodsclassname = classify.rate_classg_key.get_uid_display() # '商品类别名' except Exception as e: goodsclassguid = 0 # '商品目录ID 枚举值对照表' goodsclassname = '其他' # '商品类别名' logger.e(e.args, '商品目录ID不完整') pass goodsbrandname = per.brands # '品牌名称' if not goodsbrandname: self.error = '发现这个商品Prefix[ID={}],goodsbrandname参数为None, 可能是该商品参数品牌未设置, 商品名称:{}'.format(classify.id, i.key.name) return None suborderid = _order_num(package_id=i.key.id, user_id=self.user.id) # 子订单号 name = '{}'.format(i.name) spu = '{} {}'.format(i.name, i.meal) sku = '{} {} {}'.format(per.model, per.productType, per.colorType) # '细化到规格、型号' logger.i('image', '{}{}'.format(settings.HTTP_HOST, i.key.get_image_url_200x200())) Goodslist( goodsname=name, goodsid='{}-{}-{}'.format(i.id, i.key.id, suborderid), spu=spu, sku=sku, model='{} {}'.format(per.model, per.productType), goodsclassguid=goodsclassguid, goodsclassname=goodsclassname, goodsbrandname=goodsbrandname, qty=i.numb, total=i.yc_money, price=i.yc_price, originalprice=i.price, imgurl='{}{}'.format(settings.HTTP_HOST, i.key.get_image_url_200x200()), goodsurl=i.key.get_absolute_url(), key=subware, taoc=i.key_meal.name ).save() pass Logistics( info='您提交了订单,请等待卖家系统确认', time=datetimenow(), username='******', key=o ).save() logger.i('订单成功创建') # 创建验收单 if self.user.usercode: auto = AutoRsaGraph(usercode=self.user.usercode, orderid=self.orderid) order_create = auto.order_create() order_logistics = auto.order_logistics() logger.i('order_create', order_create) logger.i('order_logistics', order_logistics) else: logger.i('没有usercode') pass return True pass
def save(self, *args, **kwargs): if not self.time_add: self.time_add = datetimenow() super(UserToken, self).save(*args, **kwargs)