新客立减修改

This commit is contained in:
张松 2025-10-13 14:29:28 +08:00
parent 017cf6656b
commit 46faa2cf16
1 changed files with 40 additions and 35 deletions

View File

@ -122,48 +122,53 @@ public class MkShopConsumeDiscountRecordServiceImpl extends ServiceImpl<MkShopCo
log.info("新客立减仅限新用户使用");
return null;
}
MkConsumeDiscountVO consumeDiscountVO = canUse(shopId, userId);
try {
MkConsumeDiscountVO consumeDiscountVO = canUse(shopId, userId);
DateTime now = DateUtil.date();
DateTime now = DateUtil.date();
if (!now.isAfterOrEquals(DateUtil.date(consumeDiscountVO.getStartTime())) || !now.isBeforeOrEquals(DateUtil.date(consumeDiscountVO.getEndTime()))) {
log.info("此时间段未开启新客立减");
return null;
}
MkShopConsumeDiscountRecord shopConsumeDiscountRecord = new MkShopConsumeDiscountRecord();
shopConsumeDiscountRecord.setShopId(shopId);
shopConsumeDiscountRecord.setShopUserId(shopUser.getId());
shopConsumeDiscountRecord.setOrderId(orderId);
shopConsumeDiscountRecord.setConsumeDiscountId(consumeDiscountVO.getId());
if (!now.isAfterOrEquals(DateUtil.date(consumeDiscountVO.getStartTime())) || !now.isBeforeOrEquals(DateUtil.date(consumeDiscountVO.getEndTime()))) {
log.info("此时间段未开启新客立减");
return null;
}
MkShopConsumeDiscountRecord shopConsumeDiscountRecord = new MkShopConsumeDiscountRecord();
shopConsumeDiscountRecord.setShopId(shopId);
shopConsumeDiscountRecord.setShopUserId(shopUser.getId());
shopConsumeDiscountRecord.setOrderId(orderId);
shopConsumeDiscountRecord.setConsumeDiscountId(consumeDiscountVO.getId());
// 固定金额
if (TableValueConstant.ConsumeDiscount.DiscountType.FIXED.getCode().equals(consumeDiscountVO.getDiscountType())) {
shopConsumeDiscountRecord.setAmount(consumeDiscountVO.getDiscountAmount());
save(shopConsumeDiscountRecord);
return shopConsumeDiscountRecord;
}
// 随机金额概率加起来是100
List<MkConsumeDiscountRandom> randomList = consumeDiscountVO.getRandomDiscountList();
if (randomList == null || randomList.isEmpty()) {
throw new ApiNotPrintException("随机立减配置错误");
}
// 生成 1~100 的随机数
int rand = new Random().nextInt(100) + 1;
int current = 0;
for (MkConsumeDiscountRandom item : randomList) {
int prob = item.getProbability().intValue();
current += prob;
if (rand <= current) {
shopConsumeDiscountRecord.setAmount(item.getAmount());
// 固定金额
if (TableValueConstant.ConsumeDiscount.DiscountType.FIXED.getCode().equals(consumeDiscountVO.getDiscountType())) {
shopConsumeDiscountRecord.setAmount(consumeDiscountVO.getDiscountAmount());
save(shopConsumeDiscountRecord);
return shopConsumeDiscountRecord;
}
}
throw new ApiNotPrintException("随机立减计算失败");
// 随机金额概率加起来是100
List<MkConsumeDiscountRandom> randomList = consumeDiscountVO.getRandomDiscountList();
if (randomList == null || randomList.isEmpty()) {
throw new ApiNotPrintException("随机立减配置错误");
}
// 生成 1~100 的随机数
int rand = new Random().nextInt(100) + 1;
int current = 0;
for (MkConsumeDiscountRandom item : randomList) {
int prob = item.getProbability().intValue();
current += prob;
if (rand <= current) {
shopConsumeDiscountRecord.setAmount(item.getAmount());
save(shopConsumeDiscountRecord);
return shopConsumeDiscountRecord;
}
}
throw new ApiNotPrintException("随机立减计算失败");
} catch (Exception e) {
log.info(e.getMessage());
return null;
}
}
}