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
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'])
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}
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}
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}
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='订单已关闭')
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)
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
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)