称重 向下取整

会员活动
This commit is contained in:
wangw 2025-03-11 17:09:58 +08:00
parent 592518daca
commit ac9720570f
5 changed files with 38 additions and 20 deletions

View File

@ -24,11 +24,12 @@ public interface ShopActivateService extends IService<ShopActivate> {
/** /**
* @param memAmount 充值金额 * @param memAmount 充值金额
* @param activateId 参加活动Id
* @param relationId 关联Id * @param relationId 关联Id
* 霸王餐时 订单id * 霸王餐时 订单id
* 充值奖励 的关联id 是tb_shop_user_flow的充值 记录id * 充值奖励 的关联id 是tb_shop_user_flow的充值 记录id
* 支付/退款 tb_order_payment.id * 支付/退款 tb_order_payment.id
*/ */
void giveActivate(ShopUser shopUser, BigDecimal memAmount, Long relationId); void giveActivate(ShopUser shopUser, BigDecimal memAmount, Long activateId, Long relationId);
} }

View File

@ -81,11 +81,11 @@ public class ShopActivateServiceImpl extends ServiceImpl<ShopActivateMapper, Sho
} }
@Override @Override
public void giveActivate(ShopUser shopUser, BigDecimal memAmount, Long relationId) { public void giveActivate(ShopUser shopUser, BigDecimal memAmount, Long activateId, Long relationId) {
ShopActivate activate = queryChain().select().eq(ShopActivate::getShopId, shopUser.getShopId()) if (activateId == null) {
.le(ShopActivate::getAmount, memAmount) return;
.orderBy(ShopActivate::getGiftAmount, false) }
.one(); ShopActivate activate = getById(activateId);
if (ObjectUtil.isNull(activate)) { if (ObjectUtil.isNull(activate)) {
return; return;
} }
@ -164,7 +164,8 @@ public class ShopActivateServiceImpl extends ServiceImpl<ShopActivateMapper, Sho
private List<ShopCoupon> getCoupons(String couponJson) { private List<ShopCoupon> getCoupons(String couponJson) {
Map<String, Integer> couponMap; Map<String, Integer> couponMap;
try { try {
couponMap = JSONObject.parseObject(couponJson, new TypeReference<>() {}); couponMap = JSONObject.parseObject(couponJson, new TypeReference<>() {
});
} catch (Exception e) { } catch (Exception e) {
return new ArrayList<>(); return new ArrayList<>();
} }

View File

@ -16,6 +16,7 @@ public class VipPayParamDTO {
@NotNull(message = "店铺不能为空") @NotNull(message = "店铺不能为空")
private Long shopId; private Long shopId;
private Long shopUserId; private Long shopUserId;
private Long activateId;
/** /**
* 霸王餐使用 * 霸王餐使用
*/ */

View File

@ -429,13 +429,13 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
couponNum = couponNum.subtract(orderDetail.getNum()); couponNum = couponNum.subtract(orderDetail.getNum());
} else { } else {
orderDetail.setCouponNum(couponNum); orderDetail.setCouponNum(couponNum);
orderDetail.setPayAmount((orderDetail.getNum().subtract(orderDetail.getReturnNum()).subtract(couponNum)).multiply(orderDetail.getUnitPrice())); orderDetail.setPayAmount((orderDetail.getNum().subtract(orderDetail.getReturnNum()).subtract(couponNum)).multiply(orderDetail.getUnitPrice()).setScale(2, RoundingMode.DOWN));
couponNum = BigDecimal.ZERO; couponNum = BigDecimal.ZERO;
} }
prodCouponAmount.setPrice((prodCouponAmount.getPrice().add(orderDetail.getUnitPrice())).multiply(orderDetail.getCouponNum())); prodCouponAmount.setPrice((prodCouponAmount.getPrice().add(orderDetail.getUnitPrice())).multiply(orderDetail.getCouponNum()).setScale(2, RoundingMode.DOWN));
} else { } else {
orderDetail.setCouponNum(BigDecimal.ZERO); orderDetail.setCouponNum(BigDecimal.ZERO);
orderDetail.setPayAmount((orderDetail.getNum().subtract(orderDetail.getReturnNum())).multiply(orderDetail.getUnitPrice())); orderDetail.setPayAmount((orderDetail.getNum().subtract(orderDetail.getReturnNum())).multiply(orderDetail.getUnitPrice()).setScale(2, RoundingMode.DOWN));
} }
totalAmount.setPrice(totalAmount.getPrice().add(orderDetail.getPayAmount())); totalAmount.setPrice(totalAmount.getPrice().add(orderDetail.getPayAmount()));
resultList.add(orderDetail); resultList.add(orderDetail);
@ -535,8 +535,10 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
} else { } else {
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.CASH_IN); shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.CASH_IN);
} }
String extParam = czgCallBackDto.getExtParam();
JSONObject jsonObject = JSONObject.parseObject(extParam);
if (isFree) { if (isFree) {
if (StrUtil.isBlank(czgCallBackDto.getExtParam())) { if (StrUtil.isBlank(jsonObject.getString("orderId"))) {
throw new ValidateException("霸王餐支付,订单号处理失败"); throw new ValidateException("霸王餐支付,订单号处理失败");
} }
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.FREE_IN); shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.FREE_IN);
@ -550,8 +552,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO); Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
if (!isFree) { if (!isFree) {
//会员活动 //会员活动
activateService.giveActivate(shopUser, activateService.giveActivate(shopUser, new BigDecimal(czgCallBackDto.getAmount()).divide(new BigDecimal(100), 2, RoundingMode.DOWN),
new BigDecimal(czgCallBackDto.getAmount()).divide(new BigDecimal(100), 2, RoundingMode.DOWN), flowId); StrUtil.isNotBlank(jsonObject.getString("activateId")) ? jsonObject.getLong("activateId") : null, flowId);
} }
} }

View File

@ -125,7 +125,7 @@ public class PayServiceImpl implements PayService {
BigDecimalDTO totalAmount = new BigDecimalDTO(BigDecimal.ZERO); BigDecimalDTO totalAmount = new BigDecimalDTO(BigDecimal.ZERO);
//最终打包费 //最终打包费
BigDecimalDTO packAmount = new BigDecimalDTO(BigDecimal.ZERO); BigDecimalDTO packAmount = new BigDecimalDTO(BigDecimal.ZERO);
orderInfoService.processOrderDetails2(orderDetails, null, null, totalAmount, packAmount, payParam.isAllPack(), null,true); orderInfoService.processOrderDetails2(orderDetails, null, null, totalAmount, packAmount, payParam.isAllPack(), null, true);
BigDecimal payAmount = (totalAmount.getPrice().add(packAmount.getPrice())).multiply(BigDecimal.TWO); BigDecimal payAmount = (totalAmount.getPrice().add(packAmount.getPrice())).multiply(BigDecimal.TWO);
if (payAmount.compareTo(payParam.getAmount()) != 0) { if (payAmount.compareTo(payParam.getAmount()) != 0) {
throw new ValidateException("霸王餐支付金额不正确"); throw new ValidateException("霸王餐支付金额不正确");
@ -338,7 +338,7 @@ public class PayServiceImpl implements PayService {
Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO); Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
if (!isFree) { if (!isFree) {
//会员活动 //会员活动
shopActivateService.giveActivate(shopUser, payParam.getAmount(), flowId); shopActivateService.giveActivate(shopUser, payParam.getAmount(), payParam.getActivateId(), flowId);
} }
return CzgResult.success(); return CzgResult.success();
} }
@ -353,7 +353,10 @@ public class PayServiceImpl implements PayService {
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空"); AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId(); String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), isFree ? "free" : "memberIn", payOrderNo, "", payParam.getAmount())); initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), isFree ? "free" : "memberIn", payOrderNo, "", payParam.getAmount()));
String extParam = payParam.getOrderId() == null ? "" : payParam.getOrderId().toString(); JSONObject jsonObject = new JSONObject();
jsonObject.put("orderId", payParam.getOrderId() == null ? "" : payParam.getOrderId().toString());
jsonObject.put("activateId", payParam.getActivateId() == null ? "" : payParam.getActivateId().toString());
String extParam = jsonObject.toJSONString();
return jsPay(payParam.getShopId(), payParam.getPayType(), new CzgJsPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(), return jsPay(payParam.getShopId(), payParam.getPayType(), new CzgJsPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
"会员充值", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), extParam)); "会员充值", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), extParam));
} }
@ -368,7 +371,10 @@ public class PayServiceImpl implements PayService {
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空"); AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId(); String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), isFree ? "free" : "memberIn", payOrderNo, "", payParam.getAmount())); initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), isFree ? "free" : "memberIn", payOrderNo, "", payParam.getAmount()));
String extParam = payParam.getOrderId() == null ? "" : payParam.getOrderId().toString(); JSONObject jsonObject = new JSONObject();
jsonObject.put("orderId", payParam.getOrderId() == null ? "" : payParam.getOrderId().toString());
jsonObject.put("activateId", payParam.getActivateId() == null ? "" : payParam.getActivateId().toString());
String extParam = jsonObject.toJSONString();
return ltPay(payParam.getShopId(), payParam.getPayType(), new CzgLtPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(), return ltPay(payParam.getShopId(), payParam.getPayType(), new CzgLtPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
payParam.getPayType(), "会员充值", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), extParam)); payParam.getPayType(), "会员充值", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), extParam));
} }
@ -381,7 +387,10 @@ public class PayServiceImpl implements PayService {
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在"); AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId(); String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), isFree ? "free" : "memberIn", payOrderNo, "", payParam.getAmount())); initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), isFree ? "free" : "memberIn", payOrderNo, "", payParam.getAmount()));
String extParam = payParam.getOrderId() == null ? "" : payParam.getOrderId().toString(); JSONObject jsonObject = new JSONObject();
jsonObject.put("orderId", payParam.getOrderId() == null ? "" : payParam.getOrderId().toString());
jsonObject.put("activateId", payParam.getActivateId() == null ? "" : payParam.getActivateId().toString());
String extParam = jsonObject.toJSONString();
return scanPay(payParam.getShopId(), new CzgScanPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(), return scanPay(payParam.getShopId(), new CzgScanPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
"会员充值", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), extParam)); "会员充值", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), extParam));
} }
@ -395,7 +404,10 @@ public class PayServiceImpl implements PayService {
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在"); AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId(); String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), isFree ? "free" : "memberIn", payOrderNo, payParam.getAuthCode(), payParam.getAmount())); initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), isFree ? "free" : "memberIn", payOrderNo, payParam.getAuthCode(), payParam.getAmount()));
String extParam = payParam.getOrderId() == null ? "" : payParam.getOrderId().toString(); JSONObject jsonObject = new JSONObject();
jsonObject.put("orderId", payParam.getOrderId() == null ? "" : payParam.getOrderId().toString());
jsonObject.put("activateId", payParam.getActivateId() == null ? "" : payParam.getActivateId().toString());
String extParam = jsonObject.toJSONString();
return microPay(payParam.getShopId(), new CzgMicroPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(), return microPay(payParam.getShopId(), new CzgMicroPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
"会员充值", payParam.getAuthCode(), payParam.getBuyerRemark(), extParam)); "会员充值", payParam.getAuthCode(), payParam.getBuyerRemark(), extParam));
} }
@ -746,7 +758,8 @@ public class PayServiceImpl implements PayService {
map = JSONObject.parseObject(JSONObject.toJSONString(h5PayResp.getPayInfo())); map = JSONObject.parseObject(JSONObject.toJSONString(h5PayResp.getPayInfo()));
case CzgJsPayResp jsPayResp -> case CzgJsPayResp jsPayResp ->
map = JSONObject.parseObject(JSONObject.toJSONString(jsPayResp.getPayInfo())); map = JSONObject.parseObject(JSONObject.toJSONString(jsPayResp.getPayInfo()));
case CzgLtPayResp ltPayResp -> map = JSONObject.parseObject(JSONObject.toJSONString(ltPayResp.getPayInfo())); case CzgLtPayResp ltPayResp ->
map = JSONObject.parseObject(JSONObject.toJSONString(ltPayResp.getPayInfo()));
case CzgScanPayResp scanPayResp -> case CzgScanPayResp scanPayResp ->
map = JSONObject.parseObject(JSONObject.toJSONString(scanPayResp.getPayInfo())); map = JSONObject.parseObject(JSONObject.toJSONString(scanPayResp.getPayInfo()));
default -> throw new IllegalStateException("Unexpected value: " + data); default -> throw new IllegalStateException("Unexpected value: " + data);