|
|
@@ -103,6 +103,7 @@ 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;
|
|
|
@@ -497,9 +498,6 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
// 给支付的时候商品描述用
|
|
|
parentOrder.setShopName(goodsShop.getShopName());
|
|
|
|
|
|
- // // 设置订单类型
|
|
|
- // parentOrder.setOrderType(payOrderDTO.getOrderType());
|
|
|
-
|
|
|
// 校验订单类型
|
|
|
checkOrderType(parentOrder, payOrderDTO, goodsShop);
|
|
|
|
|
|
@@ -518,6 +516,9 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
// 校验优惠券信息
|
|
|
checkCoupon(parentOrder, userId);
|
|
|
|
|
|
+ // 校验是否参与vip优惠
|
|
|
+ checkVipPromotion(parentOrder, goodsShop, userId);
|
|
|
+
|
|
|
// 计算店铺收益
|
|
|
calcShopIncome(parentOrder, goodsShop);
|
|
|
|
|
|
@@ -2226,14 +2227,16 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
contentBuffer.append("平台服务费:").append(pingRate.setScale(2, BigDecimal.ROUND_DOWN)).append(",");
|
|
|
contentBuffer.append("短信服务费:").append(smsSendMoney.setScale(2, BigDecimal.ROUND_DOWN)).append(",");
|
|
|
if (ObjectUtils.isNotEmpty(tbOrder.getOrderTypeExtra())&&tbOrder.getOrderTypeExtra()==2) {
|
|
|
- // 配送费大于等于1.5就不需要骑手额外配送费
|
|
|
-// if (tbOrder.getErrandMoney().doubleValue()<1.5) {
|
|
|
- contentBuffer.append("骑手额外配送费:").append(rider.setScale(2, BigDecimal.ROUND_DOWN)).append(",");
|
|
|
-// }
|
|
|
+ contentBuffer.append("骑手额外配送费:").append(rider.setScale(2, BigDecimal.ROUND_DOWN)).append(",");
|
|
|
}
|
|
|
- contentBuffer.append("到账金额:").append(shopMoney.setScale(2, BigDecimal.ROUND_DOWN));
|
|
|
|
|
|
+ // 会员优惠
|
|
|
+ if (StrUtil.equals(tbOrder.getVipPromotion(), Constant.YES)) {
|
|
|
+ CommonInfo commonInfo = commonInfoService.findOne(444);
|
|
|
+ contentBuffer.append("会员优惠金额:").append(commonInfo.getValue()).append("元,");
|
|
|
+ }
|
|
|
|
|
|
+ contentBuffer.append("到账金额:").append(shopMoney.setScale(2, BigDecimal.ROUND_DOWN));
|
|
|
|
|
|
|
|
|
if (shopIds == 0) {
|
|
|
@@ -2988,4 +2991,61 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
lock.unlock();
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 校验是否参与vip优惠
|
|
|
+ * @param order 订单信息
|
|
|
+ * @param goodsShop 店铺信息
|
|
|
+ * @param userId 用户id
|
|
|
+ */
|
|
|
+ private void checkVipPromotion(TbOrder order, GoodsShop goodsShop, Long userId) {
|
|
|
+ // 检查店铺是否支持会员优惠
|
|
|
+ if (!StrUtil.equals(goodsShop.getVipPromotion(), Constant.YES)) {
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 会员每单立减金额(元)
|
|
|
+ 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");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置订单支付金额
|
|
|
+ order.setPayMoney(payMoney);
|
|
|
+
|
|
|
+ // 订单设置为vip优惠订单
|
|
|
+ order.setVipPromotion(Constant.YES);
|
|
|
+
|
|
|
+ log.info("preOrder==>[{}],订单参与会员优惠,优惠后金额为:{}元", order.getOrderId(), payMoney);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private int getCurDayVipPromotionByUserCount(Long userId) {
|
|
|
+ // 查询用户当天会员优惠单数量
|
|
|
+ QueryWrapper<TbOrder> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.eq("user_id", userId)
|
|
|
+ .eq("vip_promotion", Constant.YES)
|
|
|
+ .eq("is_pay", Constant.YES)
|
|
|
+ // 8商家拒绝接单 5订单已取消 不纳入统计
|
|
|
+ .notIn("status", "5", "8")
|
|
|
+ .ge("pay_time", LocalDateTime.now().toLocalDate().atStartOfDay())
|
|
|
+ .le("pay_time", LocalDateTime.now().toLocalDate().atTime(23, 59, 59));
|
|
|
+ return count(wrapper);
|
|
|
+ }
|
|
|
}
|