コード例 #1
0
    def _post(self):
        if self.admin.level < 2:
            return self.render_html('admin/error.html', msg="no permission!")

        express_name = self.get_argument("express_name")
        express_no = self.get_argument("express_no")
        order_id = self.get_argument("order_id")
        if not all([express_name, express_no, order_id]):
            return self.render_html('admin/error.html',
                                    msg="fields is required!")

        ugs = UserGoodsService(UserGoods)
        ug = ugs.get(id=order_id)

        deliver_info = DeliverInfo()
        deliver_info.user_goods_id = order_id
        deliver_info.user_id = ug.user_id
        deliver_info.goods_id = ug.goods_id
        deliver_info.goods_name = ug.goods_name
        deliver_info.number = ug.number
        deliver_info.express_name = express_name
        deliver_info.express_no = express_no
        deliver_info.deliver_address_id = ug.deliver_address_id
        deliver_info.status = 0

        ugs.deliver(deliver_info, {'status': 2}, **{'id': order_id})

        self.redirect('/admin/delivered_list')
コード例 #2
0
 def _get(self):
     
     service = UserGoodsService(UserGoods)  
     feeding, delivered = service.get_count()
     
     d = {}
     for item in feeding:
         fd = {}
         fd['goods_id'] = item.goods_id
         fd['goods_name'] = item.goods_name
         fd['goods_sum'] = item.sum
         fd['user_number'] = item.count            
         fd['feeding_num'] = item.count
         fd['deliver_num'] = 0
         d[item.goods_id] = fd
         
     for item in delivered:
         if item.goods_id in d:
             d[item.goods_id]['goods_sum'] += item.sum
             d[item.goods_id]['user_number'] += item.count
             d[item.goods_id]['deliver_num'] = item.count
         else:
             dd = {}
             dd['goods_id'] = item.goods_id
             dd['goods_name'] = item.goods_name
             dd['goods_sum'] = item.sum
             dd['user_number'] = item.count
             dd['deliver_num'] = item.count
             dd['feeding_num'] = 0
             d[item.goods_id] = dd     
     
     return self.render_html('admin/main.html',name=self.admin.name, li=map(Odict,d.itervalues()))       
コード例 #3
0
    def _post(self):
        status = int(self.get_argument('status', -1))
        status_list = [status] if status in [1, 2] else [1, 2, 3]

        user_goods_service = UserGoodsService(UserGoods)
        orders = user_goods_service.gets(user_id=self.user.id)

        order_list = []
        for order in orders:
            if order.status not in status_list:
                continue

            d = {}
            d['order_id'] = order.id
            d['user_id'] = order.user_id
            d['goods_id'] = order.goods_id
            d['goods_name'] = order.goods_name
            d['number'] = order.number
            d['feed_day'] = order.feed_day
            d['deliver_date'] = str(order.deliver_date).split()[0]
            #             d['create_date'] = order.create_date
            d['status'] = order.status

            goods = GoodsService(GoodsInfo).get(id=order.goods_id)
            d['brief'] = goods.brief
            d['type'] = goods.type

            d['avatar'] = ''
            if goods.avatar_id:
                avatar = AvatarService(AvatarInfo).get(id=goods.avatar_id)
                d['avatar'] = os.path.join(settings.AVATAR_URL,
                                           avatar.filename) if avatar else ''

            if order.status != 1:
                di = DeliverService(DeliverInfo).get(user_goods_id=order.id)
                if di:
                    d['deliver_date'] = str(di.create_date).split()[0]

            ftext, stext, after = self.get_text(order, d['deliver_date'],
                                                goods.type)
            d['ftext'] = ftext
            d['stext'] = stext
            d['after'] = after

            order_list.append(d)

        return Result(alert.SUCCESS, data=order_list[::-1])()
コード例 #4
0
ファイル: user.py プロジェクト: nxgycf/app-breeding
    def _post(self):
        user_id =  self.get_argument("uid", '')
        account = self.get_argument("account", '')
        user_info = None
        if len(user_id) > 0:
            user_info = UserInfoService(UserInfo).get(id=int(user_id))
        elif len(account) > 0:
            user_info = UserInfoService(UserInfo).get(account=account)
        else:
            return self.render_html('admin/look_user.html', uid='',account='',msg=u'请输入用户ID或用户账号!')      
            
        if user_info:
            uinfo = {}
            uinfo['user_id'] = user_info.id
            uinfo['account'] = user_info.account
            uinfo['nickname'] = user_info.nickname
            uinfo['phone'] = user_info.phone
            uinfo['deliver_address_id'] = user_info.deliver_address_id

            user_id = user_info.id
            user_adress = UserDeliverAddressService(UserDeliverAddress).gets(user_id=user_id, status=1)
            user_goods = UserGoodsService(UserGoods).gets(user_id=user_id)
                        
            ugl = []
            if user_goods:
                for item in user_goods:
                    d = {}
                    d['goods_id'] = item.goods_id
                    d['goods_name'] = item.goods_name
                    d['number'] = item.number
                    d['deliver_date'] = item.deliver_date
                    d['status'] = {1:u'待发货',2:u'已发货',3:u'已完成'}.get(item.status)
                    ugl.append(Odict(d))
                
            udal = []  
            if user_adress:
                for item in  user_adress:
                    d = {} 
                    d['name'] = item.name
                    d['phone'] = item.phone
                    d['address'] = u'{0}{1}'.format(item.region_name, item.address)
                    d['region_name'] = item.region_name
                    d['region_id'] = item.region_id
                    udal.append(Odict(d))
                
            uinfo['goods'] = ugl
            uinfo['address'] = udal    
    
            return self.render_html('admin/look_user.html',uid=user_id,msg=None,**uinfo) 
            
        return self.render_html('admin/look_user.html', uid=user_id,account=account,msg=u'该用户不存在!') 
コード例 #5
0
ファイル: goods.py プロジェクト: nxgycf/app-breeding
 def __init__(self, *args, **kwargs):
     super(GoodsList, self).__init__(*args, **kwargs)  
     self.order_service = UserGoodsService(UserGoods)
コード例 #6
0
ファイル: goods.py プロジェクト: nxgycf/app-breeding
class PayResult(TornadoHttpHandler):
    '''
    支付结果处理
    '''    
    
    def __init__(self, *args, **kwargs):
        super(GoodsList, self).__init__(*args, **kwargs)  
        self.order_service = UserGoodsService(UserGoods)
    
    @returns(need_login=True, rjson=True)
    def _get(self):
        order_code = self.get_argument("order_code", '')
        if order_code:
            order = self.order_service.get_by_code(code=order_code)
            if order:
                return self.look_unifiedorder(order)()
        return Result(alert.FAIL, message=u"订单不存在!")()
         
    def look_unifiedorder(self, order):
        '''
        微信统一订单查询
        '''
        orderquery = {
            'appid': constant.WBC['APPID'],
            'mch_id': constant.WBC['MCHID'],
            'nonce_str': check.get_nonce_str(),
            'out_trade_no': order.code
        }
        xml = self.get_xml(orderquery)

        resp = requests.post(constant.WECHAT_QUERY_ORDER, data=xml.encode('utf-8'), 
                             headers={'Content-Type': 'text/xml'})
        msg = resp.text.encode('ISO-8859-1').decode('utf-8')
        xmlresp = xmltodict.parse(msg)
        xmlresp = xmlresp['xml']

        if xmlresp['return_code'] == 'SUCCESS':
            if xmlresp['result_code'] == 'SUCCESS':
                if xmlresp['trade_state'] == 'SUCCESS':
                    transaction_id = xmlresp['transaction_id']
                    cash_fee = xmlresp['cash_fee']

                    user_pay = UserPay()
                    user_pay.user_goods_id = order.id
                    user_pay.transaction_id = transaction_id
                    user_pay.user_id = self.user.id
                    user_pay.goods_id = order.goods_id
                    user_pay.amount = cash_fee
                    user_pay.status = 1
                    
                    self.order_service.pay(user_pay, {'status':1, 'transaction_id':transaction_id}, id=order.id)
                    return Result(alert.SUCCESS)
                else:
                    msg = xmlresp['trade_state_desc']
                    return Result(alert.FAIL, message=msg)
            else:
                msg = xmlresp['err_code_des']
                return Result(alert.FAIL, message=msg)
        else:
            msg = xmlresp['return_msg']
            return Result(alert.FAIL, message=msg)
コード例 #7
0
    def _post(self):
        goods_id = int(self.get_argument("goods_id", 0))
        p = int(self.get_argument("p", 1))
        sign = self.get_argument("sign", "0")

        now = time.time()
        startdate = self.get_argument("startdate",
                                      time_util.to_str(now, ft="%Y-%m-%d"))
        if sign == "1":
            enddate = self.get_argument(
                "enddate", time_util.to_str(now + 3600 * 24 * 7,
                                            ft="%Y-%m-%d"))
            query_filed = 'deliver_date'
            status = 1
        else:
            enddate = self.get_argument("enddate",
                                        time_util.to_str(now, ft="%Y-%m-%d"))
            query_filed = 'create_date'
            status = 0

        service = UserGoodsService(UserGoods)
        address_service = UserDeliverAddressService(UserDeliverAddress)
        li, num = service.get_by_date(goods_id, query_filed, status, startdate,
                                      enddate, p, constants.NUM_PER_PAGE)
        nl = []
        for item in li:
            d = {}
            d['order_id'] = item.id
            d['user_id'] = item.user_id
            d['goods_id'] = item.goods_id
            d['goods_name'] = item.goods_name
            d['number'] = item.number
            d['deliver_date'] = item.deliver_date
            d['create_date'] = item.create_date
            d['status'] = item.status
            d['status_text'] = {
                0: u"待支付",
                1: u'待发货',
                2: u'已发货',
                3: u'已完成'
            }.get(item.status)

            address = (
                address_service.get(id=item.deliver_address_id, status=1)
                or address_service.get(id=item.deliver_address_id, status=0))
            d['name'] = address.name
            d['phone'] = address.phone
            d['address'] = u'{0}{1}'.format(address.region_name,
                                            address.address)
            d['zip_code'] = address.zip_code
            nl.append(Odict(d))

        tp = int(math.ceil(num * 1.0 / constants.NUM_PER_PAGE))
        return self.render_html('admin/deliver_list.html',
                                li=nl,
                                enddate=enddate,
                                startdate=startdate,
                                goods_id=goods_id,
                                cp=p,
                                pages=range(1, tp + 1) if tp > 0 else [1],
                                sign=sign,
                                today=time.strftime("%Y-%m-%d"))
コード例 #8
0
    def _get(self):
        order_id = self.get_argument("order_id", '')
        code = self.get_argument("code", '')
        ug = None
        if len(order_id) > 0:
            ug = UserGoodsService(UserGoods).get(id=int(order_id))
        elif len(code) > 0:
            ug = UserGoodsService(UserGoods).get_by_code(code=code)
        else:
            return self.render_html('admin/deliver.html',
                                    order_id='',
                                    code=code,
                                    msg=u'请输入订单ID 或 订单编号!')

        if not ug:
            return self.render_html('admin/deliver.html',
                                    order_id='',
                                    code=code,
                                    msg=u'该订单不存在!')

        info = {}
        info['order_id'] = ug.id
        info['code'] = ug.code
        info['user_id'] = ug.user_id
        info['goods_id'] = ug.goods_id
        info['goods_name'] = ug.goods_name
        info['number'] = ug.number
        info['feed_day'] = ug.feed_day
        info['deliver_date'] = ug.deliver_date
        info['create_date'] = ug.create_date
        info['status'] = ug.status

        info['amount'] = ''
        info['pay_date'] = ''
        pay = UserPayService(UserPay).get(user_goods_id=order_id)
        if pay:
            info['amount'] = pay.amount
            info['pay_date'] = pay.create_date

        udas = UserDeliverAddressService(UserDeliverAddress)
        address = udas.get(id=ug.deliver_address_id, status=1) or udas.get(
            id=ug.deliver_address_id, status=0)

        info['name'] = address.name
        info['phone'] = address.phone
        info['address'] = u'{0}{1}'.format(address.region_name,
                                           address.address)

        info['express_name'] = ''
        info['express_no'] = ''
        info['li'] = []

        if ug.status == 1:
            info['li'] = [
                u'乐牧自送', u'顺丰快递', u'圆通快递', u'申通快递', u'中通快递', u'韵达快递', u'天天快递',
                u'邮政包裹'
            ]
        else:
            service = DeliverService(DeliverInfo)
            di = service.get(user_goods_id=ug.id)
            if di:
                info['deliver_date'] = di.create_date
                info['express_name'] = di.express_name
                info['express_no'] = di.express_no

        info['deliver_date'] = str(info['deliver_date']).split()[0]

        return self.render_html('admin/deliver.html',
                                msg=None,
                                today=time.strftime("%Y-%m-%d"),
                                **info)
コード例 #9
0
    def _get(self):
        order_id = int(self.get_argument('order_id', 0))
        if not order_id:
            return self.render_html('app/alert.html', msg=u"请选择订单!")

        user_goods_service = UserGoodsService(UserGoods)
        order = user_goods_service.get(id=order_id)
        if not order:
            return self.render_html('app/alert.html', msg=u"该订单不存在!")

        info = {}
        info['order_id'] = order.id
        info['code'] = order.code
        info['user_id'] = order.user_id
        info['goods_id'] = order.goods_id
        info['goods_name'] = order.goods_name
        info['number'] = order.number
        info['feed_day'] = order.feed_day
        info['deliver_date'] = str(order.deliver_date).split()[0]
        info['create_date'] = order.create_date
        info['status'] = order.status

        udas = UserDeliverAddressService(UserDeliverAddress)
        address = udas.get(id=order.deliver_address_id, status=1) or udas.get(
            id=order.deliver_address_id, status=0)

        info['name'] = address.name
        info['phone'] = address.phone
        info['address'] = u'{0}{1}'.format(address.region_name,
                                           address.address)
        info['zip_code'] = address.zip_code

        goods = GoodsService(GoodsInfo).get(id=order.goods_id)
        info['type'] = goods.type

        info['avatar'] = ''
        if goods.avatar_id:
            avatar = AvatarService(AvatarInfo).get(id=goods.avatar_id)
            info['avatar'] = os.path.join(settings.AVATAR_URL,
                                          avatar.filename) if avatar else ''

        info['goods_price'] = order.goods_price
        info['amount'] = 0
        info['pay_date'] = ''
        info['discount'] = 0
        pay = UserPayService(UserPay).get(user_goods_id=order_id)
        if pay:
            info['amount'] = pay.amount
            info['pay_date'] = pay.create_date
            info['discount'] = order.goods_price * order.number - pay.amount

        info['express_name'] = ''
        info['express_no'] = ''
        if order.status != 1:
            di = DeliverService(DeliverInfo).get(user_goods_id=order_id)
            if di:
                info['deliver_date'] = str(di.create_date).split()[0]
                info['express_name'] = di.express_name
                info['express_no'] = di.express_no

        ftext, stext, after = self.get_text(order, info['deliver_date'],
                                            goods.type)
        info['ftext'] = ftext
        info['stext'] = stext
        info['after'] = after

        return self.render_html('app/order_detail.html', **info)