|
|
@@ -67,6 +67,8 @@ import com.sqx.modules.goods.service.GoodsShopService;
|
|
|
import com.sqx.modules.integral.dao.UserIntegralDao;
|
|
|
import com.sqx.modules.integral.dao.UserIntegralDetailsDao;
|
|
|
import com.sqx.modules.integral.entity.UserIntegralDetails;
|
|
|
+import com.sqx.modules.member.VipPromotionUtil;
|
|
|
+import com.sqx.modules.member.vo.VipReduceVO;
|
|
|
import com.sqx.modules.message.dao.MessageInfoDao;
|
|
|
import com.sqx.modules.message.entity.MessageInfo;
|
|
|
import com.sqx.modules.order.controller.query.GoodsSkuQuery;
|
|
|
@@ -103,7 +105,6 @@ import com.sqx.modules.shop.service.ShopTypeService;
|
|
|
import com.sqx.modules.sys.entity.SysUserEntity;
|
|
|
import com.sqx.modules.sys.service.SysUserService;
|
|
|
import com.sqx.modules.utils.SenInfoCheckUtil;
|
|
|
-import com.sqx.modules.utils.VipExpirationUtil;
|
|
|
import com.sqx.modules.utils.excel.EasyExcelUtil;
|
|
|
import com.sqx.modules.utils.excel.ExcelData;
|
|
|
import com.sqx.modules.utils.fieYun.FeiYunUtils;
|
|
|
@@ -1263,30 +1264,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
}
|
|
|
|
|
|
private void checkOrderGoods(TbOrder order) {
|
|
|
- Long orderId = order.getOrderId();
|
|
|
- // 获取订单商品信息
|
|
|
- List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(
|
|
|
- new QueryWrapper<OrderGoods>()
|
|
|
- .eq("order_id", orderId));
|
|
|
- for (int b = 0; b < orderGoodsList.size(); b++) {
|
|
|
- OrderGoods orderGoods = orderGoodsList.get(b);
|
|
|
- Long goodsId = orderGoods.getGoodsId();
|
|
|
- Goods goods = goodsDao.selectById(goodsId);
|
|
|
- if (goods == null || goods.getStatus().equals(1)) {
|
|
|
- // TODO ??感觉有问题??
|
|
|
- orderGoodsDao.deleteById(orderGoods.getId());
|
|
|
- throw new SqxException("商品:" + orderGoods.getGoodsName() + ",不存在,请刷新后重试!");
|
|
|
- }
|
|
|
-
|
|
|
- GoodsShopRelevancy goodsShopRelevancy = goodsShopRelevancyDao.selectOne(
|
|
|
- new QueryWrapper<GoodsShopRelevancy>()
|
|
|
- .eq("goods_id", goodsId)
|
|
|
- .eq("shop_id", order.getShopId()));
|
|
|
- int i = goodsShopRelevancyDao.selectGoodsCount(orderId, goodsId);
|
|
|
- if (goodsShopRelevancy.getInventory() < i) {
|
|
|
- throw new SqxException("库存不足");
|
|
|
- }
|
|
|
- }
|
|
|
+ checkAndFillGoodsInfo(order);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -3014,6 +2992,49 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
));
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public TbOrder getByIdWithGoods(Long orderId) {
|
|
|
+ TbOrder order = getById(orderId);
|
|
|
+ return checkAndFillGoodsInfo(order);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检查订单商品信息是否有效,填充订单商品信息
|
|
|
+ * @param order 订单信息
|
|
|
+ * @return 订单信息
|
|
|
+ */
|
|
|
+ private TbOrder checkAndFillGoodsInfo(TbOrder order) {
|
|
|
+ // 获取订单商品信息
|
|
|
+ List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(
|
|
|
+ new QueryWrapper<OrderGoods>()
|
|
|
+ .eq("order_id", order.getOrderId()));
|
|
|
+ order.setOrderGoodsList(orderGoodsList);
|
|
|
+ List<Goods> goodsList = new ArrayList<>();
|
|
|
+ for (int b = 0; b < orderGoodsList.size(); b++) {
|
|
|
+ OrderGoods orderGoods = orderGoodsList.get(b);
|
|
|
+ Long goodsId = orderGoods.getGoodsId();
|
|
|
+ Goods goods = goodsDao.selectById(goodsId);
|
|
|
+ if (goods == null || goods.getStatus().equals(1)) {
|
|
|
+ orderGoodsDao.deleteById(orderGoods.getId());
|
|
|
+ throw new SqxException("商品:" + orderGoods.getGoodsName() + ",不存在,请刷新后重试!");
|
|
|
+ }
|
|
|
+
|
|
|
+ GoodsShopRelevancy goodsShopRelevancy = goodsShopRelevancyDao.selectOne(
|
|
|
+ new QueryWrapper<GoodsShopRelevancy>()
|
|
|
+ .eq("goods_id", goodsId)
|
|
|
+ .eq("shop_id", order.getShopId()));
|
|
|
+ int i = goodsShopRelevancyDao.selectGoodsCount(order.getOrderId(), goodsId);
|
|
|
+ if (goodsShopRelevancy.getInventory() < i) {
|
|
|
+ throw new SqxException("库存不足");
|
|
|
+ }
|
|
|
+
|
|
|
+ goodsList.add(goods);
|
|
|
+ }
|
|
|
+
|
|
|
+ order.setOriginGoodsList(goodsList);
|
|
|
+ return order;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 更新订单状态和支付顺序
|
|
|
*
|
|
|
@@ -3040,45 +3061,27 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
* @param userId 用户id
|
|
|
*/
|
|
|
private void checkVipPromotion(TbOrder order, GoodsShop goodsShop, Long userId) {
|
|
|
- // 检查店铺是否支持会员优惠
|
|
|
- if (!StrUtil.equals(goodsShop.getVipPromotion(), Constant.YES)) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // 判断订单是否达到会员立减最低金额(元)
|
|
|
- CommonInfo vipPromotionMinAmount = commonInfoService.findOne(446);
|
|
|
- if (order.getPayMoney().compareTo(new BigDecimal(vipPromotionMinAmount.getValue())) < 0) {
|
|
|
+ UserEntity user = userService.getById(userId);
|
|
|
+ VipPromotionUtil vipPromotionUtil = new VipPromotionUtil(this, commonInfoService);
|
|
|
+ VipReduceVO canReduce = vipPromotionUtil.getCanReduce(order, goodsShop, user);
|
|
|
+ if (StrUtil.equals(canReduce.getCanReduceFlag(), Constant.NO)) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- // 检查用户是否为会员,且会员是否过期
|
|
|
- UserEntity user = userService.getById(userId);
|
|
|
- if(ObjectUtil.isNotNull(user.getIsVip()) && user.getIsVip() == 1 && VipExpirationUtil.isVipValid(user.getVipExpirationTime())) {
|
|
|
- // 查询用户当天会员优惠单数量
|
|
|
- int count = getCurDayVipPromotionByUserCount(userId);
|
|
|
-
|
|
|
- // 会员每天限制优惠单数(单)
|
|
|
- CommonInfo vipPromotionCount = commonInfoService.findOne(445);
|
|
|
- if (count >= Integer.parseInt(vipPromotionCount.getValue())) {
|
|
|
- return;
|
|
|
- }
|
|
|
+ // 计算订单支付金额,减去会员立减金额
|
|
|
+ BigDecimal payMoney = order.getPayMoney().subtract(canReduce.getReduceAmount());
|
|
|
|
|
|
- // 会员每单立减金额(元)
|
|
|
- CommonInfo vipPromotionAmount = commonInfoService.findOne(444);
|
|
|
- BigDecimal payMoney = order.getPayMoney().subtract(new BigDecimal(vipPromotionAmount.getValue()));
|
|
|
-
|
|
|
- //如果使用红包后,订单价格小于0,则改为0.01元
|
|
|
- if (payMoney.doubleValue() <= 0) {
|
|
|
- payMoney = new BigDecimal("0.01");
|
|
|
- }
|
|
|
+ //如果使用红包后,订单价格小于0,则改为0.01元
|
|
|
+ if (payMoney.doubleValue() <= 0) {
|
|
|
+ payMoney = new BigDecimal("0.01");
|
|
|
+ }
|
|
|
|
|
|
- // 设置订单支付金额
|
|
|
- order.setPayMoney(payMoney);
|
|
|
+ // 设置订单支付金额
|
|
|
+ order.setPayMoney(payMoney);
|
|
|
|
|
|
- // 订单设置为vip优惠订单
|
|
|
- order.setVipPromotion(Constant.YES);
|
|
|
+ // 订单设置为vip优惠订单
|
|
|
+ order.setVipPromotion(Constant.YES);
|
|
|
|
|
|
- log.info("preOrder==>[{}],订单参与会员优惠,优惠后金额为:{}元", order.getOrderId(), payMoney);
|
|
|
- }
|
|
|
+ log.info("preOrder==>[{}],订单参与会员优惠,优惠后金额为:{}元", order.getOrderId(), payMoney);
|
|
|
}
|
|
|
}
|