|
@@ -318,117 +318,6 @@ public class LifeCouponPlatformServiceImpl extends ServiceImpl<LifeCouponMapper,
|
|
|
return lifeCouponMapper.updateById(lifeCoupon);
|
|
return lifeCouponMapper.updateById(lifeCoupon);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * 优惠券核销验证
|
|
|
|
|
- * 验证并核销优惠券,更新订单状态,计算并记录收入明细
|
|
|
|
|
- * 支持抽成计算、店铺账户余额更新等功能
|
|
|
|
|
- *
|
|
|
|
|
- * @param storeId 门店ID
|
|
|
|
|
- * @param quanCode 券码
|
|
|
|
|
- * @return Map<String, String> 核销结果
|
|
|
|
|
- * @author alien-cloud
|
|
|
|
|
- * @date 2025-11-18
|
|
|
|
|
- */
|
|
|
|
|
- @Override
|
|
|
|
|
- public Map<String, String> couponVerify(String storeId, String quanCode) {
|
|
|
|
|
- LambdaUpdateWrapper<LifeUserOrder> wrapper = new LambdaUpdateWrapper<>();
|
|
|
|
|
- wrapper.eq(LifeUserOrder::getQuanCode, quanCode);
|
|
|
|
|
- LifeUserOrder order = lifeUserOrderMapper.selectOne(wrapper);
|
|
|
|
|
- Map<String, String> resultMap = new HashMap<>();
|
|
|
|
|
- String errMessage = "";
|
|
|
|
|
- if (order == null) {
|
|
|
|
|
- errMessage = "没有这张券";
|
|
|
|
|
- } else {
|
|
|
|
|
- if (order.getStatus() == 5) {
|
|
|
|
|
- errMessage = "该券已核销";
|
|
|
|
|
- }
|
|
|
|
|
- if (order.getStatus() == 6) {
|
|
|
|
|
- errMessage = "该券已过期";
|
|
|
|
|
- }
|
|
|
|
|
- if (order.getStatus() == 7) {
|
|
|
|
|
- errMessage = "该券待退款";
|
|
|
|
|
- }
|
|
|
|
|
- if (order.getStatus() == 4) {
|
|
|
|
|
- errMessage = "该券已退款";
|
|
|
|
|
- }
|
|
|
|
|
- if (!order.getStoreId().equals(storeId)) {
|
|
|
|
|
- errMessage = "核销商家与券不一致";
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- if (!StringUtils.isEmpty(errMessage)) {
|
|
|
|
|
- resultMap.put("code", "false");
|
|
|
|
|
- resultMap.put("message", errMessage);
|
|
|
|
|
- return resultMap;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- order.setStatus(5);
|
|
|
|
|
- order.setUsedTime(new Date());
|
|
|
|
|
- lifeUserOrderMapper.updateById(order);
|
|
|
|
|
-
|
|
|
|
|
- LambdaUpdateWrapper<LifeCoupon> couponWrapper = new LambdaUpdateWrapper<>();
|
|
|
|
|
- couponWrapper.eq(LifeCoupon::getId, order.getQuanId());
|
|
|
|
|
- LifeCoupon coupon = lifeCouponMapper.selectOne(couponWrapper);
|
|
|
|
|
- // TODO 抽成比例应该从商户里取
|
|
|
|
|
- BigDecimal amounts = new BigDecimal(order.getFinalPrice()).multiply(new BigDecimal(100));
|
|
|
|
|
- BigDecimal commission = amounts.multiply(new BigDecimal(0.04)).setScale(0, RoundingMode.HALF_UP);
|
|
|
|
|
- BigDecimal money = amounts.subtract(commission);
|
|
|
|
|
-
|
|
|
|
|
- // 插入收入明细表数据
|
|
|
|
|
- StoreIncomeDetailsRecord record = new StoreIncomeDetailsRecord();
|
|
|
|
|
- record.setStoreId(Integer.parseInt(storeId));
|
|
|
|
|
- record.setUserOrderId(Integer.parseInt(order.getId()));
|
|
|
|
|
- record.setIncomeType(coupon.getType());
|
|
|
|
|
- record.setBusinessId(Integer.parseInt(order.getQuanId()));
|
|
|
|
|
- record.setCommission(commission.intValue());
|
|
|
|
|
- record.setMoney(money.intValue());
|
|
|
|
|
- storeIncomeDetailsRecordMapper.insert(record);
|
|
|
|
|
- // 店铺账户余额增加
|
|
|
|
|
- UpdateWrapper<StoreUser> updateWrapper = new UpdateWrapper();
|
|
|
|
|
- updateWrapper.eq("store_id", storeId);
|
|
|
|
|
- updateWrapper.eq("delete_flag", 0);
|
|
|
|
|
- updateWrapper.setSql("money = money + " + money);
|
|
|
|
|
- storeUserMapper.update(null, updateWrapper);
|
|
|
|
|
- //发放好友优惠券
|
|
|
|
|
- LifeDiscountCouponStoreFriendDto lifeDiscountCouponStoreFriendDto = new LifeDiscountCouponStoreFriendDto();
|
|
|
|
|
- lifeDiscountCouponStoreFriendDto.setOrderId(Integer.parseInt(order.getId()));
|
|
|
|
|
-// lifeDiscountCouponStoreFriendService.issueFriendCoupon(lifeDiscountCouponStoreFriendDto);
|
|
|
|
|
- resultMap.put("code", "true");
|
|
|
|
|
- resultMap.put("message", "核销成功");
|
|
|
|
|
- return resultMap;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 获取代金券状态
|
|
|
|
|
- * 查询指定代金券的库存数量、购买限制等状态信息
|
|
|
|
|
- *
|
|
|
|
|
- * @param couponId 优惠券ID
|
|
|
|
|
- * @return LifeCouponStatusVo 优惠券状态信息
|
|
|
|
|
- * @author alien-cloud
|
|
|
|
|
- * @date 2025-11-18
|
|
|
|
|
- */
|
|
|
|
|
- @Override
|
|
|
|
|
- public LifeCouponStatusVo getCouponStatus(String couponId) {
|
|
|
|
|
- if (couponId == null || couponId.isEmpty()) {
|
|
|
|
|
- log.error("获取代金券状态失败:couponId为空");
|
|
|
|
|
- throw new IllegalArgumentException("couponId不能为空");
|
|
|
|
|
- }
|
|
|
|
|
- try {
|
|
|
|
|
- LifeCoupon coupon = lifeCouponMapper.selectById(couponId);
|
|
|
|
|
- LifeCouponStatusVo lifeCouponStatusVo = new LifeCouponStatusVo();
|
|
|
|
|
- if (coupon != null) {
|
|
|
|
|
- lifeCouponStatusVo.setCouponId(couponId);
|
|
|
|
|
- lifeCouponStatusVo.setSingleQty(coupon.getSingleQty());
|
|
|
|
|
- lifeCouponStatusVo.setBuyLimit(coupon.getBuyLimit());
|
|
|
|
|
- } else {
|
|
|
|
|
- // 可选:设置默认值或标记状态为无效
|
|
|
|
|
- lifeCouponStatusVo.setSingleQty(0); // 或其他默认逻辑
|
|
|
|
|
- }
|
|
|
|
|
- return lifeCouponStatusVo;
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- log.error("获取代金券状态失败: {}", e);
|
|
|
|
|
- throw new RuntimeException("获取代金券状态失败", e); // 或者根据项目规范处理
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 分页查询节假日列表
|
|
* 分页查询节假日列表
|
|
@@ -540,31 +429,6 @@ public class LifeCouponPlatformServiceImpl extends ServiceImpl<LifeCouponMapper,
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 核销订单前验证
|
|
|
|
|
- * 在核销订单前进行订单有效性验证
|
|
|
|
|
- * 根据订单类型(代金券/团购)调用不同的验证逻辑
|
|
|
|
|
- *
|
|
|
|
|
- * @param orderCode 订单编号
|
|
|
|
|
- * @return R<String> 验证结果
|
|
|
|
|
- * @author alien-cloud
|
|
|
|
|
- * @date 2025-11-18
|
|
|
|
|
- */
|
|
|
|
|
- @Override
|
|
|
|
|
- public R<String> orderVerify(String orderCode) {
|
|
|
|
|
- OrderCouponMiddle orderCouponMiddle = orderCouponMiddleMapper.selectOne(new LambdaQueryWrapper<OrderCouponMiddle>().eq(OrderCouponMiddle::getCouponCode, orderCode));
|
|
|
|
|
- if (!StringUtils.isEmpty(orderCouponMiddle) && orderCouponMiddle.getStatus() == 1) {
|
|
|
|
|
- LifeUserOrder lifeUserOrder = lifeUserOrderMapper.selectOne(new LambdaQueryWrapper<LifeUserOrder>().eq(LifeUserOrder::getId, orderCouponMiddle.getOrderId()));
|
|
|
|
|
- //类型为:1 代金券订单
|
|
|
|
|
- if (lifeUserOrder.getCouponType() == 1) {
|
|
|
|
|
- return couponVerification(orderCouponMiddle);
|
|
|
|
|
- } else if (lifeUserOrder.getCouponType() == 2) {//类型为:2 团购订单
|
|
|
|
|
- return groupVerification(orderCouponMiddle);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- return R.fail("该劵不是待使用状态");
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
* 判断当前日期是否在任意一个日期范围内
|
|
* 判断当前日期是否在任意一个日期范围内
|
|
|
* 用于验证优惠券或团购券的自定义不可用日期
|
|
* 用于验证优惠券或团购券的自定义不可用日期
|
|
|
*
|
|
*
|