diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/user/SysUserEditPwdDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/user/SysUserEditPwdDTO.java index 96f5ffda..0fc2fb4f 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/user/SysUserEditPwdDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/user/SysUserEditPwdDTO.java @@ -32,7 +32,7 @@ public class SysUserEditPwdDTO { /** * 密码 */ - @Size(min = 1, message = "密码不为空") + @NotBlank(message = "确认密码不为空") private String password; diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/FreeDineConfig.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/FreeDineConfig.java index b6b26abc..e650cd7f 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/FreeDineConfig.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/FreeDineConfig.java @@ -4,6 +4,7 @@ import com.mybatisflex.annotation.Column; import com.mybatisflex.annotation.Id; import com.mybatisflex.annotation.KeyType; import com.mybatisflex.annotation.Table; + import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -88,4 +89,7 @@ public class FreeDineConfig implements Serializable { */ private String childShopIdList; + public Integer getMultiple() { + return rechargeTimes == null ? 2 : rechargeTimes; + } } diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java index 1c348c46..10fd8eb1 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java @@ -86,6 +86,8 @@ public class PayServiceImpl implements PayService { private ShopCouponService couponService; @DubboReference private MemberPointsService pointsService; + @DubboReference + private FreeDineConfigService freeConfigService; @Resource private CzgPayService czgPayService; @Resource @@ -146,6 +148,11 @@ public class PayServiceImpl implements PayService { throw new ValidateException("充值金额不正确"); } if (payParam.getOrderId() != null) { + FreeDineConfig freeConfig = freeConfigService.getById(payParam.getShopId()); + AssertUtil.isNull(freeConfig, "该店铺未启用霸王餐"); + if (!freeConfig.getEnable()) { + throw new CzgException("该店铺未启用霸王餐"); + } OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId()); AssertUtil.isNull(orderInfo, "订单不存在"); //获取商品信息 计算金额 需要传入优惠券 减去优惠券 @@ -155,7 +162,12 @@ public class PayServiceImpl implements PayService { //最终打包费 BigDecimalDTO packAmount = new BigDecimalDTO(BigDecimal.ZERO); orderInfoService.processOrderDetails2(orderDetails, null, null, totalAmount, packAmount, payParam.isAllPack(), null, true); - BigDecimal payAmount = (totalAmount.getPrice().add(packAmount.getPrice())).multiply(BigDecimal.TWO); + BigDecimal total = totalAmount.getPrice().add(packAmount.getPrice()); + if (total.compareTo(freeConfig.getRechargeThreshold()) < 0) { + throw new CzgException("霸王餐满" + freeConfig.getRechargeThreshold() + "可用,当前订单金额为" + total); + } + BigDecimal payAmount = (totalAmount.getPrice().add(packAmount.getPrice())).multiply(new BigDecimal(freeConfig.getMultiple())); + log.info("霸王餐应支付金额:{},充值金额为:{}", payAmount, payParam.getAmount()); if (payAmount.compareTo(payParam.getAmount()) != 0) { throw new ValidateException("霸王餐支付金额不正确"); } @@ -340,7 +352,6 @@ public class PayServiceImpl implements PayService { @Override @Transactional public CzgResult cashPayVip(VipPayParamDTO payParam) { - boolean isFree = checkPayVip(payParam); ShopUser shopUser = shopUserService.getById(payParam.getShopUserId()); AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在"); ShopInfo shopInfo = shopInfoService.getById(payParam.getShopId()); @@ -359,11 +370,6 @@ public class PayServiceImpl implements PayService { updateInfo.setJoinTime(LocalDateTime.now()); updateInfo.setId(payParam.getShopUserId()); shopUserService.updateById(updateInfo); -// UpdateChain.of(ShopUser.class) -// .set(ShopUser::getIsVip, 1) -// .set(ShopUser::getJoinTime, LocalDateTime.now()) -// .eq(ShopUser::getId, payParam.getShopUserId()) -// .update(); } ShopUserMoneyEditDTO shopUserMoneyEditDTO = new ShopUserMoneyEditDTO() .setId(shopUser.getId()) @@ -371,20 +377,10 @@ public class PayServiceImpl implements PayService { .setType(1) .setRemark("现金充值") .setBizEnum(ShopUserFlowBizEnum.CASH_IN); - if (isFree) { - shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.FREE_IN); - UpdateChain.of(OrderInfo.class).eq(OrderInfo::getId, payParam.getOrderId()) - .set(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode()) - .set(OrderInfo::getIsFreeDine, 1) - .set(OrderInfo::getPayAmount, 0) - .update(); - } //更新会员余额 并生成流水 Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO); - if (!isFree) { - //会员活动 - shopActivateService.giveActivate(shopUser, payParam.getAmount(), payParam.getActivateId(), flowId); - } + //会员活动 + shopActivateService.giveActivate(shopUser, payParam.getAmount(), payParam.getActivateId(), flowId); return CzgResult.success(); } @@ -567,7 +563,7 @@ public class PayServiceImpl implements PayService { isPay = false; refPayOrderNo = ""; } - if(isPay){ + if (isPay) { if (shopInfo.getIsReturnPwd().equals(1)) { AssertUtil.isBlank(shopInfo.getOperationPwd(), "请设置操作密码后使用"); if (!SecureUtil.md5(param.getPwd()).equals(shopInfo.getOperationPwd())) {