Пример #1
0
 def create_order(product_ids, address_id, user_coupon_id, remark, uid):
     order_no = Order.__make_order_no()
     o_products = []
     for ids in product_ids:
         o_products.append(Product.get_order_product(ids))
     with db.auto_check_empty(UserException(error_code=6001, msg='地址不存在')):
         user_address = UserAddress.query.filter_by(id=address_id).first()
         snap_address = user_address.name + ' ' + user_address.mobile + ' ' + user_address.detail
     if user_coupon_id:
         with db.auto_check_empty(
                 UserException(error_code=7001, msg='优惠卷不存在')):
             coupon_price = UserCoupon.query.filter(
                 and_(UserCoupon.id == user_coupon_id,
                      UserCoupon.status == 1)).first().coupon.price
     else:
         coupon_price = 0
     total_price = Order.__product_to_calculate(o_products)[0]
     postage = Order.__product_to_calculate(o_products)[1]
     with db.auto_commit():
         order = Order()
         order.order_no = order_no
         order.user_id = uid
         order.snap_address = snap_address
         order.coupon_price = coupon_price
         order.remark = remark
         order.total_price = total_price
         order.postage = postage
         order.pay_price = total_price + postage - coupon_price
         OrderSnap.add_order_snap(o_products, order_no)
         Order.__minus_product_stock(o_products)
         Order.__revise_user_coupon(user_coupon_id)
         db.session.add(order)
     return order_no
Пример #2
0
def get_pay_query(oid):
    pay_info = OrderQuery(oid).get_order_info()
    if pay_info['result_code'] == 'FAIL':
        return UserException(msg=pay_info['err_code'])
    elif pay_info['trade_state'] == 'SUCCESS':
        with db.auto_commit():
            order = Order.get_one_order(oid)
            order.transaction_id = pay_info['transaction_id']
            order.status = 2
            order.update()
        return Success(msg=pay_info['trade_state_desc'])
    return UserException(msg=pay_info['trade_state_desc'])
Пример #3
0
	def verify_by_email(email, password):
		user = User.query.filter_by(email=email).first_or_404(
			e=UserException(msg='该账号未注册'))
		if not user.check_password(password):
			raise AuthFailed(msg='密码错误')
		scope = 'AdminScope' if user.auth == ScopeEnum.Admin else 'UserScope'
		return {'uid': user.id, 'scope': scope}
Пример #4
0
 def verify_by_mobile(mobile, password):
     user = User.query.filter_by(mobile=mobile) \
         .first_or_404(e=UserException(msg='该账号未注册'))
     if not user.check_password(password):
         raise AuthFailed(msg='密码错误')
     scope = Scope.match_user_scope(auth=user.auth)
     return {'uid': user.id, 'scope': scope}
Пример #5
0
 def verify_by_mobile(mobile, password):
     user = User.query.filter_by(mobile=mobile) \
      .first_or_404(e=UserException(msg='该账号未注册'))
     if not user.check_password(password):
         raise AuthFailed(msg='密码错误')
     scope = 'AdminScope' if ScopeEnum(
         user.auth) == ScopeEnum.ADMIN else 'UserScope'
     return {'uid': user.id, 'scope': scope}
Пример #6
0
def get_pay_close(oid):
    uid = g.user.uid
    order = Order.query.filter(
        and_(Order.user_id == uid, Order.order_no == oid,
             Order.status == 1)).first_or_404()
    pay_info = CloseOrder(oid).get_close_info()
    if pay_info['result_code'] == 'FAIL':
        return UserException(msg=pay_info['err_code'])
    Order.restore_product_stock(dict(order)['snap_product'])
    with db.auto_commit():
        order.status = 0
        order.update()
    return Success(msg='订单已关闭')
Пример #7
0
	def __get_user_address(self):
		with db.auto_check_empty(UserException(error_code=6001, msg='用户地址不存在, 下单失败')):
			user_address = UserAddress.query.filter_by(user_id=self.uid).first_or_404()
		return jsonify(user_address)
Пример #8
0
 def __get_user_address(self):
     user_address = UserAddress.query\
      .filter_by(user_id=self.uid)\
      .first_or_404(e=UserException(error_code=6001, msg='用户地址不存在, 下单失败'))
     order_address = jsonify(user_address)  # 序列化,因为要存入到数据库
     return order_address
Пример #9
0
def get_address():
    '''获取「用户自身的地址」'''
    uid = g.user.uid
    with db.auto_check_empty(UserException(error_code=6001, msg='用户地址不存在')):
        user_address = UserAddress.query.filter_by(user_id=uid).first_or_404()
    return Success(user_address)