Beispiel #1
0
    def get(self):
        iscatched = False
        if self.current_user:
            beginvalue = time.mktime(time.strptime('2015-01-12', "%Y-%m-%d"))
            endvalue = time.mktime(time.strptime('2015-01-31', "%Y-%m-%d"))

            q = Order.select(Order.currentprice).where(
                (Order.user == self.current_user)
                & (Order.ordered >= beginvalue) & (Order.status < 5)
                & (Order.ordered < endvalue) & (Order.payment < 9)
                & (((Order.status > -1) & (Order.payment == 0)) | (
                    (Order.status > 0) & (Order.payment > 0)))).dicts()

            price = sum([n['currentprice'] for n in q])
            cpcount = int(price / 50.0)
            activities = UserActivity.select().where(
                UserActivity.user == self.current_user.id)
            if activities.count() > 0:
                iscatched = True
        else:
            price = 0.0
            cpcount = 0
        list = ProductStandard.select(ProductStandard).join(Product). \
            where((ProductStandard.id << [268,215,128,279,38,37,84,86]) & (Product.status == 1))
        self.render('activity/new_year.html',
                    user=self.current_user,
                    price=price,
                    cpcount=cpcount,
                    iscatched=iscatched,
                    list=list)
Beispiel #2
0
    def get(self):
        user = self.get_current_user()
        status = self.get_argument("status", None)

        ft = (Order.uid == user.id)

        if status:
            ft = ft & (Order.status == status)

        page = int(self.get_argument("page", 1))
        pagesize = self.settings['admin_pagesize']

        oq = Order.select().where(ft)
        total = oq.count()

        orders = []
        for order in oq.paginate(page, pagesize).dicts():
            order['orderitems'] = []

            for orderitem in OrderItem.select().where(
                    OrderItem.oid == order['id']).dicts():

                try:
                    orderitem['shop'] = Shop.get(id=orderitem['sid'])
                    if orderitem['said'] > 0:
                        orderitem['shopattr'] = ShopAttr.get(
                            id=orderitem['said'])
                except:
                    break

                order['orderitems'].append(orderitem)

            if order['orderitems']:
                orders.append(order)

            else:
                Order.delete().where(Order.id == order['id']).execute()

                try:
                    user = User.get(id=user.id)

                    if user.order > 0:
                        user.order = user.order - 1
                        user.save()
                        self.session['user'] = user
                        self.session.save()
                except:
                    pass

        self.render('user/order.html',
                    orders=orders,
                    total=total,
                    page=page,
                    pagesize=pagesize)
Beispiel #3
0
 def get(self):
     user = self.get_current_user()
     status = self.get_argument("status", None)
     
     ft = (Order.uid == user.id)
     
     if status:
         ft = ft & (Order.status == status)
     
     page = int(self.get_argument("page", 1))
     pagesize = self.settings['admin_pagesize']
     
     oq = Order.select().where(ft)
     total = oq.count()
     
     orders = []
     for order in oq.paginate(page, pagesize).dicts():
         order['orderitems'] = []
         
         for orderitem in OrderItem.select().where(OrderItem.oid == order['id']).dicts():
             
             try:
                 orderitem['shop'] = Shop.get(id = orderitem['sid'])
                 if orderitem['said'] > 0:
                     orderitem['shopattr'] = ShopAttr.get(id = orderitem['said'])
             except:
                 break
             
             order['orderitems'].append(orderitem)
         
         if order['orderitems']:
             orders.append(order)
             
         else:
             Order.delete().where(Order.id == order['id']).execute()
             
             try:
                 user = User.get(id = user.id)
                 
                 if user.order > 0:
                     user.order = user.order - 1
                     user.save()
                     self.session['user'] = user
                     self.session.save()
             except:
                 pass
             
     
     self.render('user/order.html', orders = orders, total = total, page = page, pagesize = pagesize)
Beispiel #4
0
    def get(self):
        status = self.get_argument("status", None)
        ft = (Order.status >= 0)
        if status:
            ft = ft & (Order.status == status)

        page = int(self.get_argument("page", 1))
        pagesize = self.settings['admin_pagesize']

        oq = Order.select().where(ft)
        total = oq.count()

        orders = []
        for order in oq.paginate(page, pagesize).order_by(
                Order.ordered.desc()).dicts():
            order['orderitems'] = []
            try:
                order['ua'] = UserAddr.get(id=order['uaid'])
            except:
                order['ua'] = UserAddr()

            try:
                order['distr'] = Distribution.get(id=order['distrid'])
            except:
                order['distr'] = Distribution()

            for orderitem in OrderItem.select().where(
                    OrderItem.oid == order['id']).dicts():

                try:
                    orderitem['shop'] = Shop.get(id=orderitem['sid'])
                    if orderitem['said'] > 0:
                        orderitem['shopattr'] = ShopAttr.get(
                            id=orderitem['said'])

                    order['orderitems'].append(orderitem)
                except:
                    orderitem['shop'] = Shop()

            if order['orderitems']:
                orders.append(order)

        self.render('admin/order.html',
                    orders=orders,
                    total=total,
                    page=page,
                    pagesize=pagesize)
Beispiel #5
0
def new_user_order_coupon(order):
    msg = ''
    oc = Order.select().where((Order.user == order.user) & (Order.status > 1)
                              & (Order.status < 5)
                              & (Order.ordered <= order.ordered))
    if oc.count() == 1:
        log = u'首单返50%优惠券活动,系统自动赠送'
        if (oc[0].currentprice >= 20) & (oc[0].currentprice < 80):
            cpcount = int(oc[0].currentprice / 10.0)
            cps = CouponTotal.select().where((CouponTotal.name == '满50减5元') & (
                CouponTotal.status == 0)).limit(1)
            if cps.count() < 1:
                msg = u'用户' + order.user.username + u'首单返券失败,请检查“满50减5元”优惠券是否存在或已被禁用'
            else:
                count = 0
                while count < cpcount:
                    create_coupon(order.user, cps[0].id, log)
                    count += 1
                msg += u'首单返卷成功,用户获得' + str(cpcount) + u'张5元优惠券'
        if (oc[0].currentprice >= 80):
            cpcount5 = int(oc[0].currentprice / 10.0 / 2)
            cpcount10 = int(oc[0].currentprice / 10.0 / 4)
            cps5 = CouponTotal.select().where(
                (CouponTotal.name == '满50减5元')
                & (CouponTotal.status == 0)).limit(1)
            cps10 = CouponTotal.select().where(
                (CouponTotal.name == '满100减10元')
                & (CouponTotal.status == 0)).limit(1)
            if cps5.count() < 1:
                msg = u'用户' + order.user.username + u'首单返卷失败,请检查“满50减5元”优惠券是否存在或已被禁用'
            else:
                count = 0
                while count < cpcount5:
                    create_coupon(order.user, cps5[0].id, log)
                    count += 1
                msg += u'首单返卷成功,用户获得 ' + str(cpcount5) + u' 张5元优惠券'
            if cps10.count() < 1:
                msg = u'用户' + order.user.username + u'首单返卷失败,请检查“满100减10元”优惠券是否存在或已被禁用'
            else:
                count = 0
                while count < cpcount10:
                    create_coupon(order.user, cps10[0].id, log)
                    count += 1
                msg += u'和 ' + str(cpcount10) + u' 张10元优惠券'
    return msg
Beispiel #6
0
 def get(self):
     status = self.get_argument("status", None)
     ft = (Order.status >= 0)
     if status:
         ft = ft & (Order.status == status)
     
     page = int(self.get_argument("page", 1))
     pagesize = self.settings['admin_pagesize']
     
     oq = Order.select().where(ft)
     total = oq.count()
             
     orders = []
     for order in oq.paginate(page, pagesize).order_by(Order.ordered.desc()).dicts():
         order['orderitems'] = []
         try:
             order['ua'] = UserAddr.get(id = order['uaid'])
         except:
             order['ua'] = UserAddr()
         
         try:
             order['distr'] = Distribution.get(id = order['distrid'])
         except:
             order['distr'] = Distribution()
             
         for orderitem in OrderItem.select().where(OrderItem.oid == order['id']).dicts():
             
             try:
                 orderitem['shop'] = Shop.get(id = orderitem['sid'])
                 if orderitem['said'] > 0:
                     orderitem['shopattr'] = ShopAttr.get(id = orderitem['said'])
                 
                 order['orderitems'].append(orderitem)
             except:
                 orderitem['shop'] = Shop()
         
         if order['orderitems']:
             orders.append(order)
     
     self.render('admin/order.html', orders = orders, total = total, page = page, pagesize = pagesize)
Beispiel #7
0
def old_new_user_balance(order):
    try:
        rate = float(setting.Old_New_User_Rate)  #首单返利利率
        max_price = float(setting.Old_New_Max_Price)  #首单返利最大金额
        oc = Order.select().where((Order.user == order.user)
                                  & (Order.status == 4)
                                  & (Order.ordered <= order.ordered))
        if oc.count() == 1:
            fl_price = oc[0].currentprice - oc[
                0].shippingprice  #商品金额 = 订单实际支付金额 - 订单运费
            if (fl_price >= 0):
                return_balance = round((fl_price * rate), 2)
                if return_balance > max_price:
                    return_balance = max_price
                up = User_Promote.get(User_Promote.new_user == order.user)
                if up:
                    balance = Balance()
                    balance.user = up.old_user
                    balance.balance = return_balance
                    balance.created = int(time.time())
                    balance.stype = 0
                    balance.log = u'老推新首单返利。'
                    balance.save()
                    msg = u'恭喜您,您推荐的好友'+order.user.username+u'首次订单已经完成,您获得'+str(return_balance)+\
                          u'元余额返利,请登录车装甲查收。'
                    sms = {
                        'mobile': up.old_user.username,
                        'body': msg,
                        'signtype': '1',
                        'isyzm': '1'
                    }
                    create_msg(simplejson.dumps(sms), 'sms')

                    up.first_order_gift = 1
                    up.first_order_time = int(time.time())
                    up.first_order_content = msg
                    up.save()
    except:
        pass
Beispiel #8
0
    def get(self):
        alipay = Alipay(**self.settings)

        params = {}
        ks = self.request.arguments.keys()

        for k in ks:
            params[k] = self.get_argument(k)
        msg = ""
        if alipay.notify_verify(params):
            tn = self.get_argument("out_trade_no", None)
            trade_no = self.get_argument("trade_no", None)
            trade_status = self.get_argument("trade_status", None)
            logging.info("return:%s - %s - %s" % (tn, trade_no, trade_status))

            try:
                order = None
                tn1 = tn.split(',')
                for n in tn1:
                    orders = Order.select().where(Order.ordernum == n)
                    if orders.count() > 0:
                        order = orders[0]
                    if order and order.status == 0:
                        order.status = 1
                        order.save()

                        order_Item = ''
                        cartProducts = OrderItem.select().where(
                            OrderItem.order == order)
                        for cartproduct in cartProducts:
                            order_Item += u'名称:' + cartproduct.product.name + u' X ' + str(
                                cartproduct.quantity) + u'份;'
                            if cartproduct.item_type == 5:
                                pr = Product_Reserve.get(
                                    Product_Reserve.product ==
                                    cartproduct.product)
                                old_quantity = pr.quantity
                                pr.quantity += cartproduct.quantity
                                pr.save()
                                if (old_quantity < pr.quantity_stage1) & (
                                        pr.quantity >= pr.quantity_stage1):
                                    return_reserve_balance(
                                        cartproduct.product.id)
                                elif (old_quantity < pr.quantity_stage2) & (
                                        pr.quantity >= pr.quantity_stage2):
                                    return_reserve_balance(
                                        cartproduct.product.id)
                        for n in cartProducts:
                            if n.product.categoryfront.type == '2':
                                sn = 1
                                for s in range(n.quantity):
                                    sn = sn + s
                                    seed = "1234567890"
                                    sa = []
                                    for i in range(12):
                                        sa.append(random.choice(seed))
                                        salt = ''.join(sa)
                                    OrderItemService.create(order_item=n.id,
                                                            sn=sn,
                                                            service_code=salt,
                                                            service_used=0,
                                                            store=order.store,
                                                            user=order.user)
                        try:
                            admins = AdminUser.select().where(AdminUser.roles %
                                                              '%Y%')
                            receivers = [
                                n.email for n in admins if len(n.email) > 0
                            ]
                            email = {
                                u'receiver':
                                receivers,
                                u'subject':
                                u'用户下单成功',
                                u'body':
                                u"支付方式:在线支付;<br/>订单编号为:" + n + u";<br>订单金额:" +
                                str(order.currentprice) + u";<br>订单详情:" +
                                order_Item
                            }
                            create_msg(simplejson.dumps(email), 'email')
                        except Exception, e:
                            print e

                alipay.send_goods_confirm_by_platform(trade_no)
                msg = "success"
                self.redirect("/cart/pay?result=" + msg + "&tn=" + tn +
                              "&price=" + str(order.currentprice) + "&ptype=1")
            except Exception, ex:
                logging.error(ex)
Beispiel #9
0
    def post(self):
        alipay = Alipay(**self.settings)

        params = {}
        ks = self.request.arguments.keys()

        for k in ks:
            params[k] = self.get_argument(k)

        if alipay.notify_verify(params):
            tn = self.get_argument("out_trade_no", None)  #订单编号
            trade_no = self.get_argument("trade_no", None)  #支付宝交易号
            trade_status = self.get_argument("trade_status", None)  #交易状态
            logging.info("notify:%s - %s - %s" % (tn, trade_no, trade_status))

            buyer_email = self.get_argument("buyer_email", None)  #买家支付宝帐号
            notify_time = self.get_argument("notify_time", None)  #通知时间
            subject = self.get_argument("subject", None)  #商品名称
            payment_type = self.get_argument("payment_type", None)  #支付类型
            gmt_create = self.get_argument("gmt_create", None)  #交易创建时间
            gmt_payment = self.get_argument("gmt_payment", None)  #交易付款时间
            gmt_close = self.get_argument("gmt_close", None)  #交易关闭时间
            refund_status = self.get_argument("refund_status", None)  #退款状态
            gmt_refund = self.get_argument("gmt_refund", None)  #退款时间
            seller_email = self.get_argument("seller_email", None)  #卖家支付宝账号
            seller_id = self.get_argument("seller_id", None)  #卖家支付宝账户号
            buyer_id = self.get_argument("buyer_id", None)  #买家支付宝账户号
            price = self.get_argument("price", None)  #商品单价
            total_fee = self.get_argument("total_fee", None)  #Number
            quantity = self.get_argument("quantity", None)  #购买数量
            body = self.get_argument("body", None)  #商品描述
            is_total_fee_adjust = self.get_argument("is_total_fee_adjust",
                                                    None)  #是否调整总价
            use_coupon = self.get_argument("use_coupon", None)  #是否使用红包买家
            error_code = self.get_argument("error_code", None)  #错误代码
            bank_seq_no = self.get_argument("bank_seq_no", None)  #网银流水
            out_channel_inst = self.get_argument("out_channel_inst",
                                                 None)  #实际支付渠道

            pay_response = {
                'out_trade_no': tn,
                'trade_no': trade_no,
                'trade_status': trade_status,
                'buyer_email': buyer_email,
                'notify_time': notify_time,
                'subject': subject,
                'payment_type': payment_type,
                'gmt_create': gmt_create,
                'gmt_payment': gmt_payment,
                'gmt_close': gmt_close,
                'refund_status': refund_status,
                'gmt_refund': gmt_refund,
                'seller_email': seller_email,
                'seller_id': seller_id,
                'buyer_id': buyer_id,
                'price': price,
                'total_fee': total_fee,
                'quantity': quantity,
                'body': body,
                'is_total_fee_adjust': is_total_fee_adjust,
                'use_coupon': use_coupon,
                'error_code': error_code,
                'bank_seq_no': bank_seq_no,
                'out_channel_inst': out_channel_inst
            }

            try:
                order = None
                tn = tn.split(',')
                for n in tn:
                    orders = Order.select().where(Order.ordernum == n)
                    if orders.count() > 0:
                        order = orders[0]
                    if order and order.status == 0:
                        order.status = 1
                        order.pay_account = buyer_email
                        order.trade_no = trade_no
                        order.pay_response = simplejson.dumps(pay_response)
                        order.save()

                        order_Item = ''
                        cartProducts = OrderItem.select().where(
                            OrderItem.order == order)
                        for cartproduct in cartProducts:
                            order_Item += u'名称:' + cartproduct.product.name + u' X ' + str(
                                cartproduct.quantity) + u'份;'
                            if cartproduct.item_type == 5:
                                pr = Product_Reserve.get(
                                    Product_Reserve.product ==
                                    cartproduct.product)
                                old_quantity = pr.quantity
                                pr.quantity += cartproduct.quantity
                                pr.save()
                                if (old_quantity < pr.quantity_stage1) & (
                                        pr.quantity >= pr.quantity_stage1):
                                    return_reserve_balance(
                                        cartproduct.product.id)
                                elif (old_quantity < pr.quantity_stage2) & (
                                        pr.quantity >= pr.quantity_stage2):
                                    return_reserve_balance(
                                        cartproduct.product.id)
                        for n in cartProducts:
                            if n.product.categoryfront.type == '2':
                                sn = 1
                                for s in range(n.quantity):
                                    sn = sn + s
                                    seed = "1234567890"
                                    sa = []
                                    for i in range(12):
                                        sa.append(random.choice(seed))
                                        salt = ''.join(sa)
                                    OrderItemService.create(order_item=n.id,
                                                            sn=sn,
                                                            service_code=salt,
                                                            service_used=0,
                                                            store=order.store,
                                                            user=order.user)
                        try:
                            admins = AdminUser.select().where(AdminUser.roles %
                                                              '%Y%')
                            receivers = [
                                n.email for n in admins if len(n.email) > 0
                            ]
                            email = {
                                u'receiver':
                                receivers,
                                u'subject':
                                u'用户下单成功',
                                u'body':
                                u"支付方式:在线支付;<br/>订单编号为:" + n + u";<br>订单金额:" +
                                str(order.currentprice) + u";<br>订单详情:" +
                                order_Item
                            }
                            create_msg(simplejson.dumps(email), 'email')
                        except Exception, e:
                            print e

            except Exception, ex:
                logging.error(ex)

            if trade_status == 'WAIT_SELLER_SEND_GOODS':
                alipay.send_goods_confirm_by_platform(trade_no)

            self.write("success")
Beispiel #10
0
    def get(self):
        userid = self.get_argument('userid', None)

        if userid:
            user = User.get(id=userid)
            if user:
                activities = UserActivity.select().where(
                    UserActivity.user == user)
                if activities.count() == 0:
                    beginvalue = time.mktime(
                        time.strptime('2015-01-12', "%Y-%m-%d"))
                    endvalue = time.mktime(
                        time.strptime('2015-01-31', "%Y-%m-%d"))
                    q = Order.select(Order.currentprice).where(
                        (Order.user == self.current_user)
                        & (Order.ordered >= beginvalue) & (Order.status < 5)
                        & (Order.ordered < endvalue) & (Order.payment < 9)
                        & (((Order.status > -1) & (Order.payment == 0)) | (
                            (Order.status > 0) &
                            (Order.payment > 0)))).dicts()

                    price = sum([n['currentprice'] for n in q])
                    cpcount = int(price / 50.0)
                    if cpcount > 0:
                        cps = Coupon.select(Coupon).join(CouponTotal).where(
                            (CouponTotal.name == '满50减5元')
                            & (Coupon.status == 0)).limit(cpcount)
                        if cps.count() < cpcount:
                            msg = '领取优惠券失败,管理员会立即处理,请谅解,给您带来的不便'
                            admins = AdminUser.select()
                            receivers = [
                                n.email for n in admins if len(n.email) > 0
                            ]
                            email = {
                                u'receiver': receivers,
                                u'subject': u'5元优惠券库存不够了',
                                u'body':
                                u'用户:' + str(userid) + u'领取优惠券失败,库存不足。'
                            }
                            try:
                                create_msg(simplejson.dumps(email), 'email')
                            except:
                                pass
                        else:
                            for cp in cps:
                                cp.user = user
                                cp.status = 1
                                cp.save()

                                cp.coupontotal.quantity += 1
                                cp.coupontotal.save()
                            UserActivity.create(user=user,
                                                catchtime=int(time.time()),
                                                status=1)
                            msg = '成功领取' + str(
                                cpcount
                            ) + '张优惠券。您可以在 [个人中心]-[我的优惠券] 中查看详情,感谢您的关注'
                            try:

                                content = '作为车装甲最最重视的用户,非常感谢您对车装甲的支持。送您' + str(
                                    cpcount * 5) + '元优惠券,请笑纳。'
                                sms = {
                                    'mobile': user.mobile,
                                    'body': content,
                                    'signtype': '1',
                                    'isyzm': '1'
                                }
                                create_msg(simplejson.dumps(sms), 'sms')
                            except:
                                pass
                    else:
                        msg = '您累计消费不足50元,无法领取优惠券,感谢您的关注'
                else:
                    msg = '您已经领取过优惠券,感谢您的关注'
            else:
                msg = '请先登录车装甲,之后才能领取,感谢您的关注'
        else:
            msg = '请先登录车装甲,之后才能领取,感谢您的关注'
        self.write(msg)
Beispiel #11
0
def new_year_send_logic(order):
    user = order.user
    beginvalue = time.mktime(time.strptime('2015-01-31', "%Y-%m-%d"))
    endvalue = time.mktime(time.strptime('2015-02-15', "%Y-%m-%d"))
    now = int(time.time())
    # logger.error(str(now))
    needsend = True
    if now < endvalue and order.status < 5 and order.payment < 9 and \
            ((order.status > -1 and order.payment == 0) or (order.status > 0 and order.payment > 0)):
        #当前为2月15日之前,并且订单状态有效
        if user.signuped > beginvalue:  #新注册用户,1月31日当天或以后注册的
            q = Order.select().where(
                (Order.user == user) & (Order.id != order.id)
                & (Order.status < 5) & (Order.payment < 9)
                & (((Order.status > -1) & (Order.payment == 0)) | (
                    (Order.status > 0) & (Order.payment > 0))))
            ct = q.count()
            if ct == 0:  #新用户第一次购买
                needsend = False
                tencount = int(order.currentprice / 40.0)
                fivecount = tencount * 2
                if fivecount > 0:
                    cps = Coupon.select(Coupon).join(CouponTotal).where(
                        (CouponTotal.name == '满50减5元') & (Coupon.status == 0)
                        & (Coupon.user >> None)).limit(fivecount)
                    if cps.count() < fivecount:
                        admins = AdminUser.select()
                        receivers = [
                            n.email for n in admins if len(n.email) > 0
                        ]
                        email = {
                            u'receiver': receivers,
                            u'subject': u'5元优惠劵库存不够了',
                            u'body': u'用户:' + str(user.id) + u'领取优惠劵失败,库存不足。'
                        }
                        try:
                            create_msg(simplejson.dumps(email), 'email')
                        except:
                            pass
                    else:
                        for cp in cps:
                            cp.user = user
                            cp.status = 1
                            cp.save()

                            cp.coupontotal.quantity += 1
                            cp.coupontotal.save()

                if tencount > 0:
                    cps = Coupon.select(Coupon).join(CouponTotal).where(
                        (CouponTotal.name == '满100减10元') & (Coupon.status == 0)
                        & (Coupon.user >> None)).limit(tencount)
                    if cps.count() < tencount:
                        admins = AdminUser.select()
                        receivers = [
                            n.email for n in admins if len(n.email) > 0
                        ]
                        email = {
                            u'receiver': receivers,
                            u'subject': u'10元优惠劵库存不够了',
                            u'body': u'用户:' + str(user.id) + u'领取优惠劵失败,库存不足。'
                        }
                        try:
                            create_msg(simplejson.dumps(email), 'email')
                        except:
                            pass
                    else:
                        for cp in cps:
                            cp.user = user
                            cp.status = 1
                            cp.save()

                            cp.coupontotal.quantity += 1
                            cp.coupontotal.save()
                if fivecount > 0:
                    try:
                        content = '小易终于等到您啦~请收下见面礼吧!' + str(
                            tencount * 10 +
                            fivecount * 5) + '元代金券已经放入账户,下单时即可使用。更多优惠请到车装甲'
                        sms = {
                            'mobile': user.mobile,
                            'body': content,
                            'signtype': '1',
                            'isyzm': '1'
                        }
                        create_msg(simplejson.dumps(sms), 'sms')
                    except:
                        pass

        if needsend:  #老用户下单(含新用户第二次下单),满50送5,满80送5X2;1月31日以前注册的用户
            cpcount = 0
            if order.currentprice >= 80:
                cpcount = 2
            elif order.currentprice >= 50:
                cpcount = 1

            if cpcount > 0:
                cps = Coupon.select(Coupon).join(CouponTotal).where(
                    (CouponTotal.name == '满50减5元') & (Coupon.status == 0)
                    & (Coupon.user >> None)).limit(cpcount)
                if cps.count() < cpcount:
                    admins = AdminUser.select()
                    receivers = [n.email for n in admins if len(n.email) > 0]
                    email = {
                        u'receiver': receivers,
                        u'subject': u'5元优惠劵赠送异常',
                        u'body': u'用户:' + str(user.id) + u'领取优惠劵失败,库存不足。'
                    }
                    try:
                        create_msg(simplejson.dumps(email), 'email')
                    except:
                        pass
                else:
                    for cp in cps:
                        cp.user = user
                        cp.status = 1
                        cp.save()

                        cp.coupontotal.quantity += 1
                        cp.coupontotal.save()
                    try:
                        content = '作为车装甲最最重视的用户,非常感谢您对车装甲的支持。送您' + str(
                            cpcount * 5) + '元优惠券,请笑纳。'
                        sms = {
                            'mobile': user.mobile,
                            'body': content,
                            'signtype': '1',
                            'isyzm': '1'
                        }
                        create_msg(simplejson.dumps(sms), 'sms')
                    except:
                        pass
Beispiel #12
0
    def get_context(self):

        return {
            'list': Order.select(),
        }
Beispiel #13
0
def retrieve_order(order_id):
    order = Order.select().where(Order.id == order_id).get()
    order.update_paid()
    return render_template('detail.jinja2', order=order)
Beispiel #14
0
    def get(self):
        store_user = self.get_store_user()
        page = int(
            self.get_argument("page", '1')
            if len(self.get_argument("page", '1')) > 0 else '1')
        status = int(self.get_argument("status", -1))
        pagesize = self.settings['admin_pagesize']
        ft = (Order.status > -1)
        keyword = self.get_argument("keyword", '')
        begindate = self.get_argument("begindate", '')
        enddate = self.get_argument("enddate", '')
        statuscheck = int(
            self.get_argument("statuscheck", '-1')
            if len(self.get_argument("statuscheck", '1')) > 0 else '-1')
        phone = self.get_argument("phone", '')

        ft = ft & (Order.store == store_user.store.id)
        if keyword:
            keyw = '%' + keyword + '%'
            ft = ft & (Order.ordernum % keyw)
            status = -1
        if phone:
            ph = '%' + phone + '%'
            ft = ft & ((Order.take_tel % ph) | (Order.take_name % ph))
            status = -1
        if (phone == '') & (keyword == ''):
            if status != -1:
                if status == 0:  # 待付款
                    ft = ft & ((Order.status == 0) & ((Order.payment == 1) |
                                                      (Order.payment == 3)))
                elif status == 1:  # 待处理
                    ft = ft & ((Order.status == 1) | ((Order.payment == 0) &
                                                      (Order.status == 0)))
                    pagesize = 99999
                else:
                    ft = ft & (Order.status == status)
            else:
                if statuscheck != -1 and statuscheck != '':
                    if statuscheck == 0:  # 待付款
                        ft = ft & ((Order.status == 0) &
                                   ((Order.payment == 1 |
                                     (Order.payment == 3))))
                    elif statuscheck == 1:  # 待处理
                        ft = ft & ((Order.status == 1) |
                                   ((Order.payment == 0) &
                                    (Order.status == 0)))
                        pagesize = 99999
                    else:
                        ft = ft & (Order.status == statuscheck)
        if begindate and enddate:
            begin = time.strptime(begindate, "%Y-%m-%d")
            end = time.strptime((enddate + " 23:59:59"), "%Y-%m-%d %H:%M:%S")
            ft = ft & (Order.ordered > time.mktime(begin)) & (Order.ordered <
                                                              time.mktime(end))

        q = Order.select().where(ft).order_by(Order.ordered.desc())
        total = q.count()
        if total % pagesize > 0:
            totalpage = total / pagesize + 1
        else:
            totalpage = total / pagesize
        orders = q.paginate(page, pagesize)
        for o in orders:
            oCount = Order.select().where((Order.id < o.id)
                                          & (Order.status > 0)
                                          & (Order.status < 5)
                                          & (Order.user == o.user)).count()
            o.pay_response = u'首单' if oCount == 0 else u''
            o.trade_no = str(oCount + 1)
        self.render('/store/order/orders.html',
                    orders=orders,
                    total=total,
                    page=page,
                    pagesize=pagesize,
                    totalpage=totalpage,
                    status=status,
                    active='orders',
                    begindate=begindate,
                    enddate=enddate,
                    keyword=keyword,
                    phone=phone)
Beispiel #15
0
def notify_verify(post):
    """验证---签名&&数据是否支付宝发送

    """
    #初级验证---签名
    order_params = {}
    params = {}
    _, prestr = fix_params_filter(post)
    mysign = build_mysign(prestr, Settings.KEY, Settings.SIGN_TYPE)
    if mysign != post.get('sign'):
        return False
    tree = etree.fromstring(post.get("notify_data").encode('utf-8'))
    notify_id = tree.find("notify_id").text
    order_params["trade_no"] = tree.find("trade_no").text
    order_params["out_trade_no"] = tree.find("out_trade_no").text
    order_params["trade_status"] = tree.find("trade_status").text
    order_params["total_fee"] = tree.find("total_fee").text
    order_params['buyer_email'] = tree.find("buyer_email").text
    #二级验证---数据是否支付宝发送
    if notify_id:
        params['partner'] = Settings.PARTNER
        params['notify_id'] = notify_id
        if Settings.TRANSPORT == 'https':
            params['service'] = 'notify_verify'
            gateway = 'https://mapi.alipay.com/gateway.do'
        else:
            gateway = 'http://notify.alipay.com/trade/notify_query.do'
        verify_url = "%s?%s" % (gateway, urlencode(params))
        verify_result = urlopen(verify_url).read()

        if verify_result.lower().strip() == 'true':

            tn = tree.find("out_trade_no").text
            try:
                order = None
                tn = tn.split(',')
                for n in tn:
                    orders = Order.select().where(Order.ordernum == n)
                    if orders.count() > 0:
                        order = orders[0]
                    if order and order.status == 0:
                        order.status = 1
                        order.pay_account = tree.find("buyer_email").text
                        order.trade_no = tree.find("trade_no").text
                        order.save()

                        order_Item = ''
                        cartProducts = OrderItem.select().where(
                            OrderItem.order == order)
                        for n in cartProducts:
                            if n.product.categoryfront.type == '2':
                                sn = 1
                                for s in range(n.quantity):
                                    sn = sn + s
                                    seed = "1234567890"
                                    sa = []
                                    for i in range(12):
                                        sa.append(random.choice(seed))
                                        salt = ''.join(sa)
                                    OrderItemService.create(order_item=n.id,
                                                            sn=sn,
                                                            service_code=salt,
                                                            service_used=0,
                                                            store=order.store,
                                                            user=order.user)
                        # try:
                        #     admins = AdminUser.select().where(AdminUser.roles % '%Y%')
                        #     receivers = [n.email for n in admins if len(n.email)>0]
                        #     email = {u'receiver': receivers, u'subject':u'用户下单成功',u'body': u"支付方式:在线支付;<br/>订单编号为:" + n + u";<br>订单金额:"+ str(order.currentprice) + u";<br>订单详情:"+order_Item}
                        #     create_msg(simplejson.dumps(email), 'email')
                        # except Exception, e:
                        #     print e

            except Exception, ex:
                logging.error(ex)

            return order_params
                                             add_price = add_price)
                i.text = str(price)
                i = SubElement(v, "PRICE_BEFORE_DISCOUNT")
                i.text = str(price_before)
            parameters = [(attr_name[it['id_attribute']],
                    attr_val[it['id_attribute']]) for it in group]
            if parameters:
                par = SubElement(v, "PARAMETERS")
                for pn, pv in parameters:
                    parameter(par, pn, pv)
        f.write(el)


with Feed('order', os.path.join(OUTPUT_DIRECTORY, 'orders.xml'), 'ORDERS') as f:
    for order in Order.select() \
                 .join(Address, on=(Order.id_address_delivery ==
                                    Address.id_address)):
        el = Element("ORDER")
        i = SubElement(el, "ORDER_ID")
        i.text = str(order.id_order)
        i = SubElement(el, "CUSTOMER_ID")
        #i.text = str(order.id_customer)
        i.text = b64(str(customer_email.get(order.id_customer, "")))
        i = SubElement(el, "CREATED_ON")
        i.text = dt_iso(order.date_add)
        i = SubElement(el, "FINISHED_ON")
        i.text = dt_iso(order.delivery_date)
        i = SubElement(el, "STATUS")
        i.text = order_state(order.current_state)
        i = SubElement(el, "ZIP_CODE")
        i.text = order.id_address_delivery.postcode