Beispiel #1
0
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
Beispiel #2
0
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))
Beispiel #3
0
    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
Beispiel #4
0
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
Beispiel #5
0
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)))
Beispiel #6
0
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
Beispiel #7
0
 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
Beispiel #8
0
    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
Beispiel #9
0
    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
Beispiel #10
0
 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
Beispiel #11
0
    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
Beispiel #12
0
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
Beispiel #13
0
    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
Beispiel #14
0
    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
Beispiel #15
0
    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
Beispiel #16
0
    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
Beispiel #17
0
    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
Beispiel #18
0
    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
Beispiel #19
0
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
Beispiel #20
0
    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
Beispiel #21
0
    def save(self, *args, **kwargs):
        if self.time is not None:
            self.time = datetimenow()


        super(Cart, self).save(*args, **kwargs)
Beispiel #22
0
 def save(self, *args, **kwargs):
     self.datetime = datetimenow()
     super(UserInfo, self).save(*args, **kwargs)
Beispiel #23
0
 def save(self, *args, **kwargs):
     if not self.time_add:
         self.time_add = datetimenow()
     super(RegisterState, self).save(*args, **kwargs)
Beispiel #24
0
    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)
Beispiel #25
0
    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)
Beispiel #26
0
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)
Beispiel #27
0
    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
Beispiel #28
0
    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
Beispiel #29
0
    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
Beispiel #30
0
 def save(self, *args, **kwargs):
     if not self.time_add:
         self.time_add = datetimenow()
     super(UserToken, self).save(*args, **kwargs)