This commit is contained in:
zhaohengkun 2024-10-12 11:01:24 +08:00
parent 0fd7f53d4f
commit f9c9647133
2 changed files with 84 additions and 49 deletions

View File

@ -51,7 +51,7 @@ public class PayCenterController extends BaseController {
return getSuccessResult("查询成功",payCenterService.getCoupon(map)); return getSuccessResult("查询成功",payCenterService.getCoupon(map));
} }
/** /**
* 收银台支付成功后 消费有礼 * 收银台支付成功后 消费有礼 (和小程序通用)
* @date 12:01 2024/9/19 * @date 12:01 2024/9/19
* @param map 请求参数 * @param map 请求参数
* @param request * @param request
@ -64,7 +64,7 @@ public class PayCenterController extends BaseController {
} }
/** /**
* 小程序支付成功 消费有礼 * 小程序支付成功前预览 当前用户消费后 能获取 多少 积分 成长值 优惠卷
* @param map * @param map
* @param request * @param request
* @return * @return

View File

@ -494,12 +494,6 @@ public class PayCenterServiceImpl implements PayCenterService {
// 订单id // 订单id
// 用户id // 用户id
// 店铺id // 店铺id
// 返回 消费者 领取的东西 积分 成长值 优惠卷
HashMap<String, Object> resMap = new HashMap<>();
resMap.put("points", 0);
resMap.put("growthValue", 0);
resMap.put("carList", new ArrayList<AppCardVO>());
// 1.查询当前用户在当前店铺的 会员信息 // 1.查询当前用户在当前店铺的 会员信息
UserBalance userBalance = userBalanceService.selectUserBalanceByStorId(Integer.parseInt(map.get("userId")), Integer.parseInt(map.get("storeId"))); UserBalance userBalance = userBalanceService.selectUserBalanceByStorId(Integer.parseInt(map.get("userId")), Integer.parseInt(map.get("storeId")));
// 2.查询出 当前用户 在当前店铺 参与过的活动记录 // 2.查询出 当前用户 在当前店铺 参与过的活动记录
@ -549,7 +543,7 @@ public class PayCenterServiceImpl implements PayCenterService {
if (order.getShengshu() >= Double.parseDouble(child.getConsumeAmount())) { if (order.getShengshu() >= Double.parseDouble(child.getConsumeAmount())) {
// 如果以上条件都满足那么用户成功参与了这个活动 // 如果以上条件都满足那么用户成功参与了这个活动
b1 = false; b1 = false;
Boolean aBoolean = setActiveGift(child, userBalance, order,resMap); Boolean aBoolean = setActiveGift(child, userBalance, order);
// 奖励发放成功 将此 活动奖励子表 id 拼接 // 奖励发放成功 将此 活动奖励子表 id 拼接
if (aBoolean) { if (aBoolean) {
str += child.getId() + ","; str += child.getId() + ",";
@ -561,7 +555,7 @@ public class PayCenterServiceImpl implements PayCenterService {
if (order.getPayMoney() >= Double.parseDouble(child.getConsumeAmount())) { if (order.getPayMoney() >= Double.parseDouble(child.getConsumeAmount())) {
// 如果以上条件都满足那么用户成功参与了这个活动 // 如果以上条件都满足那么用户成功参与了这个活动
b2 = false; b2 = false;
Boolean aBoolean = setActiveGift(child, userBalance, order,resMap); Boolean aBoolean = setActiveGift(child, userBalance, order);
// 奖励发放成功 将此 活动奖励子表 id 拼接 // 奖励发放成功 将此 活动奖励子表 id 拼接
if (aBoolean) { if (aBoolean) {
str += child.getId() + ","; str += child.getId() + ",";
@ -574,7 +568,7 @@ public class PayCenterServiceImpl implements PayCenterService {
if (order.getGoodsMoney() >= Double.parseDouble(child.getConsumeAmount())) { if (order.getGoodsMoney() >= Double.parseDouble(child.getConsumeAmount())) {
// 如果以上条件都满足那么用户成功参与了这个活动 // 如果以上条件都满足那么用户成功参与了这个活动
b3 = false; b3 = false;
Boolean aBoolean = setActiveGift(child, userBalance, order,resMap); Boolean aBoolean = setActiveGift(child, userBalance, order);
// 奖励发放成功 将此 活动奖励子表 id 拼接 // 奖励发放成功 将此 活动奖励子表 id 拼接
if (aBoolean) { if (aBoolean) {
str += child.getId() + ","; str += child.getId() + ",";
@ -696,14 +690,14 @@ public class PayCenterServiceImpl implements PayCenterService {
// 此活动上架 收银台可送 已领取 + 活动发放数量 < 总数量 未超过 总上限 当日上限 // 此活动上架 收银台可送 已领取 + 活动发放数量 < 总数量 未超过 总上限 当日上限
if (card.getStatus().equals("1") && if (card.getStatus().equals("1") &&
card.getSySend().equals("1") && card.getSySend().equals("1") &&
card.getTfGetNum() + child.getGiftCardTotal() < card.getTfTotal() && card.getTfGetNum()+child.getGiftCardTotal() < card.getTfTotal() &&
list1.size() < card.getGetNumLimit() && list1.size() < card.getGetNumLimit() &&
list2.count() < card.getDayGetLimit()) { list2.count() < card.getDayGetLimit()) {
// 将优惠卷 当前用户关联 并且 优惠卷 领取数量 + 方法数量 // 将优惠卷 当前用户关联 并且 优惠卷 领取数量 + 方法数量
card.setTfGetNum(card.getTfGetNum() + child.getGiftCardTotal()); card.setTfGetNum(card.getTfGetNum() + child.getGiftCardTotal());
cardCouponService.updateById(card); cardCouponService.updateById(card);
for (int i = 0; i < child.getGiftCardTotal(); i++) { for (int i = 0; i <child.getGiftCardTotal() ; i++) {
CardCouponUser cardUser = new CardCouponUser(); CardCouponUser cardUser = new CardCouponUser();
cardUser.setChainStoreId(invitationBalance.getChainStoreId()); cardUser.setChainStoreId(invitationBalance.getChainStoreId());
cardUser.setStoreId(invitationBalance.getStoreId()); cardUser.setStoreId(invitationBalance.getStoreId());
@ -808,7 +802,6 @@ public class PayCenterServiceImpl implements PayCenterService {
// 然后根据过滤后的 活动主表 再去匹配子表 // 然后根据过滤后的 活动主表 再去匹配子表
for (ActiveConsumptionVOS active : f1) { for (ActiveConsumptionVOS active : f1) {
Boolean b1 = true; Boolean b1 = true;
Boolean b2 = true; Boolean b2 = true;
Boolean b3 = true; Boolean b3 = true;
@ -819,7 +812,7 @@ public class PayCenterServiceImpl implements PayCenterService {
if (liters >= Double.parseDouble(child.getConsumeAmount())) { if (liters >= Double.parseDouble(child.getConsumeAmount())) {
// 如果以上条件都满足那么用户成功参与了这个活动 // 如果以上条件都满足那么用户成功参与了这个活动
b1 = false; b1 = false;
Boolean aBoolean = setActiveGift(child, userBalance, null, resMap); Boolean aBoolean = setActiveGiftApp(child, userBalance, null, resMap);
// 奖励发放成功 将此 活动奖励子表 id 拼接 // 奖励发放成功 将此 活动奖励子表 id 拼接
if (aBoolean) { if (aBoolean) {
str += child.getId() + ","; str += child.getId() + ",";
@ -831,7 +824,7 @@ public class PayCenterServiceImpl implements PayCenterService {
if (payMoney >= Double.parseDouble(child.getConsumeAmount())) { if (payMoney >= Double.parseDouble(child.getConsumeAmount())) {
// 如果以上条件都满足那么用户成功参与了这个活动 // 如果以上条件都满足那么用户成功参与了这个活动
b2 = false; b2 = false;
Boolean aBoolean = setActiveGift(child, userBalance, null, resMap); Boolean aBoolean = setActiveGiftApp(child, userBalance, null, resMap);
// 奖励发放成功 将此 活动奖励子表 id 拼接 // 奖励发放成功 将此 活动奖励子表 id 拼接
if (aBoolean) { if (aBoolean) {
str += child.getId() + ","; str += child.getId() + ",";
@ -844,7 +837,7 @@ public class PayCenterServiceImpl implements PayCenterService {
if (goodsMoney >= Double.parseDouble(child.getConsumeAmount())) { if (goodsMoney >= Double.parseDouble(child.getConsumeAmount())) {
// 如果以上条件都满足那么用户成功参与了这个活动 // 如果以上条件都满足那么用户成功参与了这个活动
b3 = false; b3 = false;
Boolean aBoolean = setActiveGift(child, userBalance, null, resMap); Boolean aBoolean = setActiveGiftApp(child, userBalance, null, resMap);
// 奖励发放成功 将此 活动奖励子表 id 拼接 // 奖励发放成功 将此 活动奖励子表 id 拼接
if (aBoolean) { if (aBoolean) {
str += child.getId() + ","; str += child.getId() + ",";
@ -971,13 +964,6 @@ public class PayCenterServiceImpl implements PayCenterService {
// 将优惠卷 当前用户关联 并且 优惠卷 领取数量 + 方法数量 // 将优惠卷 当前用户关联 并且 优惠卷 领取数量 + 方法数量
card.setTfGetNum(card.getTfGetNum() + child.getGiftCardTotal()); card.setTfGetNum(card.getTfGetNum() + child.getGiftCardTotal());
cardCouponService.updateById(card); cardCouponService.updateById(card);
// 累加当前用户获得的优惠卷
ArrayList<AppCardVO> carList = (ArrayList<AppCardVO>) resMap.get("carList");
AppCardVO appCardVO = new AppCardVO();
appCardVO.setType(card.getType());
appCardVO.setNum(child.getGiftCardTotal());
carList.add(appCardVO);
for (int i = 0; i < child.getGiftCardTotal(); i++) { for (int i = 0; i < child.getGiftCardTotal(); i++) {
CardCouponUser cardUser = new CardCouponUser(); CardCouponUser cardUser = new CardCouponUser();
cardUser.setChainStoreId(invitationBalance.getChainStoreId()); cardUser.setChainStoreId(invitationBalance.getChainStoreId());
@ -1019,7 +1005,7 @@ public class PayCenterServiceImpl implements PayCenterService {
} }
// 根据不同的 活动赠送 0赠送积分1赠送优惠券 2. 赠送兑换券 3赠送成长值 4. 赠送实物 处理不同的业务逻辑 // 根据不同的 活动赠送 0赠送积分1赠送优惠券 2. 赠送兑换券 3赠送成长值 4. 赠送实物 处理不同的业务逻辑
private Boolean setActiveGift(ActiveConsumptionChild child, UserBalance userBalance, AllOrderActivityVo order, HashMap<String, Object> resMap) { private Boolean setActiveGift(ActiveConsumptionChild child, UserBalance userBalance, AllOrderActivityVo order) {
Boolean b1 = false; Boolean b1 = false;
if (child.getActiveGift().equals("0")) { if (child.getActiveGift().equals("0")) {
// //
@ -1035,8 +1021,7 @@ public class PayCenterServiceImpl implements PayCenterService {
i.setChangeType("1"); i.setChangeType("1");
i.setChainStoreId(userBalance.getChainStoreId()); i.setChainStoreId(userBalance.getChainStoreId());
integralDetailService.insert(i); integralDetailService.insert(i);
// 需要计算叠加 转Integer
resMap.put("points", Integer.parseInt(resMap.get("points").toString()) + Integer.parseInt(child.getGivePoints()));
b1 = true; b1 = true;
return b1; return b1;
} }
@ -1055,10 +1040,72 @@ public class PayCenterServiceImpl implements PayCenterService {
g.setGrowthValue(Integer.parseInt(child.getGiveGrowthValue())); g.setGrowthValue(Integer.parseInt(child.getGiveGrowthValue()));
// 成长变化后的值 // 成长变化后的值
g.setAfterTheChange(userBalance.getGrowthValue()); g.setAfterTheChange(userBalance.getGrowthValue());
if (order != null) {
g.setOrderNo(order.getOrderNo()); g.setOrderNo(order.getOrderNo());
}
int i = growthValueChangeService.insertGrowthValueChangeActive(g); int i = growthValueChangeService.insertGrowthValueChangeActive(g);
b1 = true;
return b1;
}
if (child.getActiveGift().equals("1")) {
// 优惠卷还得判断自身的活动限制 (因为这是 给某个用户 赠送某个优惠卷 只需要判断 每日每人领取上限 每人总领取上限 优惠卷数量不 <=0)
HashMap<String, Object> m1 = new HashMap<>();
m1.put("card_coupon_id", child.getVouchersId());
m1.put("mt_user_id", userBalance.getMtUserId());
// 获取当前优惠卷信息
CardCoupon card = cardCouponService.getById(child.getVouchersId());
// 获取 总的 当前用户 领取优惠卷的列表
List<CardCouponUser> list1 = cardCouponUserService.selectByMap(m1);
// 过滤掉 不是今天的领取次数
Stream<CardCouponUser> list2 = list1.stream()
.filter(cardCouponUser -> checkUtil.isBetween(cardCouponUser.getCreateTime(), DateUtil.getTodayMidnight(), DateUtil.getTomorrowMidnight()));
// 优惠卷 上架 收银台可送 活动发放数量+已领取 < 总数量 未超过 总上限 当日上限 先都判断一下不为 null 防止空指针
card.setTfGetNum( (card.getTfGetNum() == null) ? 0 : card.getTfGetNum());
if ( card.getStatus().equals("1") &&
card.getSySend().equals("1") &&
(child.getGiftCardTotal() + card.getTfGetNum()) < card.getTfTotal() &&
list1.size() < card.getGetNumLimit() &&
list2.count() < card.getDayGetLimit()
) {
// 将优惠卷 当前用户关联 并且 优惠卷 领取数量 + 活动设定赠送优惠卷数量
card.setTfGetNum(card.getTfGetNum()+child.getGiftCardTotal());
cardCouponService.updateById(card);
// 并且 循环 添加多张优惠卷与用户领取记录表
for (int i = 0; i < child.getGiftCardTotal(); i++) {
CardCouponUser cardUser = new CardCouponUser();
cardUser.setChainStoreId(userBalance.getChainStoreId());
cardUser.setStoreId(userBalance.getStoreId());
cardUser.setMtUserId(userBalance.getMtUserId());
// 手机号码 需要连表 空着
cardUser.setFromType("3"); // 3代表 消费有礼活动
cardUser.setActiveId(child.getActiveConsumptionId());
cardUser.setCardCouponId(child.getVouchersId());
cardUser.setStartTime(card.getEffectiveDateStart());
cardUser.setEndTime(card.getEffectiveDateEnd());
cardUser.setStatus("0");
cardCouponUserService.save(cardUser);
}
b1 = true;
return b1;
}
}
return b1;
}
private Boolean setActiveGiftApp(ActiveConsumptionChild child, UserBalance userBalance, AllOrderActivityVo order, HashMap<String, Object> resMap) {
Boolean b1 = false;
if (child.getActiveGift().equals("0")) {
// 需要计算叠加 转Integer
resMap.put("points", Integer.parseInt(resMap.get("points").toString()) + Integer.parseInt(child.getGivePoints()));
b1 = true;
return b1;
}
if (child.getActiveGift().equals("3")) {
// 需要计算叠加 // 需要计算叠加
resMap.put("growthValue", Integer.parseInt(resMap.get("growthValue").toString()) + Integer.parseInt(child.getGiveGrowthValue())); resMap.put("growthValue", Integer.parseInt(resMap.get("growthValue").toString()) + Integer.parseInt(child.getGiveGrowthValue()));
b1 = true; b1 = true;
@ -1087,25 +1134,12 @@ public class PayCenterServiceImpl implements PayCenterService {
list1.size() < card.getGetNumLimit() && list1.size() < card.getGetNumLimit() &&
list2.count() < card.getDayGetLimit() list2.count() < card.getDayGetLimit()
) { ) {
// 累加当前用户获得的优惠卷
// 将优惠卷 当前用户关联 并且 优惠卷 领取数量 + 活动设定赠送优惠卷数量 ArrayList<AppCardVO> carList = (ArrayList<AppCardVO>) resMap.get("carList");
card.setTfGetNum(card.getTfGetNum() + child.getGiftCardTotal()); AppCardVO appCardVO = new AppCardVO();
cardCouponService.updateById(card); appCardVO.setType(card.getType());
// 并且 循环 添加多张优惠卷与用户领取记录表 appCardVO.setNum(child.getGiftCardTotal());
for (int i = 0; i < child.getGiftCardTotal(); i++) { carList.add(appCardVO);
CardCouponUser cardUser = new CardCouponUser();
cardUser.setChainStoreId(userBalance.getChainStoreId());
cardUser.setStoreId(userBalance.getStoreId());
cardUser.setMtUserId(userBalance.getMtUserId());
// 手机号码 需要连表 空着
cardUser.setFromType("3"); // 3代表 消费有礼活动
cardUser.setActiveId(child.getActiveConsumptionId());
cardUser.setCardCouponId(child.getVouchersId());
cardUser.setStartTime(card.getEffectiveDateStart());
cardUser.setEndTime(card.getEffectiveDateEnd());
cardUser.setStatus("0");
cardCouponUserService.save(cardUser);
}
b1 = true; b1 = true;
return b1; return b1;
@ -1117,6 +1151,7 @@ public class PayCenterServiceImpl implements PayCenterService {
} }
/** /**
* 推荐消费有礼 活动时间前置处理 0永久有效1自定义 * 推荐消费有礼 活动时间前置处理 0永久有效1自定义
**/ **/