|
|
@@ -93,32 +93,30 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
|
- public List<ExcelExchangeCodeData> createExchangeCode(ExchangeCodeReq exchangeCodeReq) {
|
|
|
- GoodsDon goodsDon = goodsDonMapper.selectById(exchangeCodeReq.getGoodsId());
|
|
|
- if (goodsDon == null) {
|
|
|
- throw BusinessRuntimeException.getInstance("所选平台已被删除");
|
|
|
- }
|
|
|
- if (Constant.realGoodsType.contains(goodsDon.getType())) {
|
|
|
- throw BusinessRuntimeException.getInstance("该类商品不支持生成兑换码");
|
|
|
+ public List<ExcelExchangeCodeData> createExchangeCode(ExchangeCodeReq exchangeCodeReq) throws Exception {
|
|
|
+ String skuIds = exchangeCodeReq.getSkuIds();
|
|
|
+ if (StrUtil.isEmpty(skuIds)) {
|
|
|
+ throw BusinessRuntimeException.getInstance("请选择对应规格");
|
|
|
}
|
|
|
- GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(exchangeCodeReq.getSkuId());
|
|
|
- if (goodsDonSku == null) {
|
|
|
+ List<Long> skuList = Jsons.parseList(skuIds, Long.class);
|
|
|
+ Integer skuCount = goodsDonSkuMapper.selectCount(Wrappers.lambdaQuery(GoodsDonSku.class)
|
|
|
+ .in(GoodsDonSku::getId, skuList));
|
|
|
+ if (skuCount != skuList.size()) {
|
|
|
throw BusinessRuntimeException.getInstance("所选规格已被删除");
|
|
|
}
|
|
|
- if (!goodsDonSku.getGoodsId().equals(exchangeCodeReq.getGoodsId())) {
|
|
|
- throw BusinessRuntimeException.getInstance("规格与平台不匹配");
|
|
|
- }
|
|
|
+ String goodsIds = goodsDonSkuMapper.selectGIdsBySkuIds(skuList);
|
|
|
List<ExcelExchangeCodeData> data = new ArrayList<>(exchangeCodeReq.getNumber());
|
|
|
+ GoodsDonSku sku = goodsDonSkuMapper.selectById(skuList.get(0));
|
|
|
for (int i = 0; i < exchangeCodeReq.getNumber(); i++) {
|
|
|
StringBuilder sb = new StringBuilder(32);
|
|
|
- sb.append(goodsDon.getSecondType() == 1 ? "YQ" : "FY");
|
|
|
- sb.append(getFillByGoodsId(exchangeCodeReq.getGoodsId()));
|
|
|
- sb.append(getFillByMonth(exchangeCodeReq.getSkuId()));
|
|
|
+ sb.append("YH");
|
|
|
+ sb.append(getFillByGoodsId(sku.getGoodsId()));
|
|
|
+ sb.append(getFillByMonth(sku.getMonths()));
|
|
|
//随即补充12位随即数,组成20位兑换码
|
|
|
StringUtil.getRandomStr(sb, 12);
|
|
|
ExchangeCode exchangeCode = new ExchangeCode();
|
|
|
- exchangeCode.setGoodsId(exchangeCodeReq.getGoodsId());
|
|
|
- exchangeCode.setSkuId(exchangeCodeReq.getSkuId());
|
|
|
+ exchangeCode.setSkuIds(exchangeCodeReq.getSkuIds());
|
|
|
+ exchangeCode.setGoodsIds(goodsIds);
|
|
|
exchangeCode.setCode(sb.toString());
|
|
|
exchangeCode.setUseStatus(false);
|
|
|
exchangeCode.setType(exchangeCodeReq.getType());
|
|
|
@@ -126,10 +124,8 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
|
|
|
exchangeCodeMapper.insert(exchangeCode);
|
|
|
ExcelExchangeCodeData excelExchangeCodeData = new ExcelExchangeCodeData();
|
|
|
BeanUtils.copyProperties(exchangeCode, excelExchangeCodeData);
|
|
|
- excelExchangeCodeData.setTitle(goodsDon.getTitle());
|
|
|
- String specVal = goodsDonSku.getSpecVal();
|
|
|
- BigDecimal price = goodsDonSku.getPrice();
|
|
|
- excelExchangeCodeData.setSpecVal(String.format("%s%s", specVal, price.divide(BigDecimal.valueOf(100))));
|
|
|
+ String title = goodsDonSkuMapper.selectExchangeTitle(skuList);
|
|
|
+ excelExchangeCodeData.setTitle(title);
|
|
|
excelExchangeCodeData.setUseStatusStr(exchangeCode.getUseStatus() ? "已使用" : "未使用");
|
|
|
data.add(excelExchangeCodeData);
|
|
|
}
|
|
|
@@ -139,7 +135,7 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
|
@NoSubmit
|
|
|
- public Result<String> getTicketByExchangeCode(ExchangeCodeTicket exchangeCodeTicket, Long userId) {
|
|
|
+ public Result<String> getTicketByExchangeCode(ExchangeCodeTicket exchangeCodeTicket, Long userId) throws Exception {
|
|
|
if (StrUtil.isEmpty(exchangeCodeTicket.getCode())) {
|
|
|
throw BusinessRuntimeException.getInstance("兑换码有误,请使用正确的兑换码");
|
|
|
}
|
|
|
@@ -233,8 +229,11 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
|
|
|
if (orderDon != null && orderDon.getStatus() == OrderDon.Status.refund) {
|
|
|
throw BusinessRuntimeException.getInstance("您的订单已退款,无法使用该兑换码");
|
|
|
}
|
|
|
+ List<Long> skuIds = Jsons.parseList(exchangeCode.getSkuIds(), Long.class);
|
|
|
+ skuIds.forEach(skuId -> {
|
|
|
+ getGroupTripsTicket(yhsId, goodsDonSkuMapper.selectById(skuId), userId, orderDon, OrderDon.Type.EX_CODE, exchangeCodeTicket.getCode());
|
|
|
+ });
|
|
|
//生成车票订单
|
|
|
- getGroupTripsTicket(yhsId, goodsDonSkuMapper.selectById(exchangeCode.getSkuId()), userId, orderDon, OrderDon.Type.EX_CODE, exchangeCodeTicket.getCode());
|
|
|
log.info("用户:{}通过兑换码:{}兑换成功", userId, exchangeCodeTicket.getCode());
|
|
|
if (exchangeCode.getType() == 1) {
|
|
|
luckyDrawRecordMapper.updateExCodeStatus(userId, exchangeCode.getCode());
|
|
|
@@ -246,8 +245,8 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
|
|
|
public String getExCode(Long goodsId, Long skuId, Integer type) {
|
|
|
ExchangeCodeReq exchangeCodeReq = new ExchangeCodeReq();
|
|
|
exchangeCodeReq.setNumber(1);
|
|
|
- exchangeCodeReq.setGoodsId(goodsId);
|
|
|
- exchangeCodeReq.setSkuId(skuId);
|
|
|
+// exchangeCodeReq.setGoodsId(goodsId);
|
|
|
+ exchangeCodeReq.setSkuIds(List.of(skuId).toString());
|
|
|
if (type != null) {
|
|
|
exchangeCodeReq.setType(type);
|
|
|
}
|
|
|
@@ -280,7 +279,7 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
|
|
|
/**
|
|
|
* 根据月份长度获取填充的字符串
|
|
|
*/
|
|
|
- private String getFillByMonth(Long skuMonth) {
|
|
|
+ private String getFillByMonth(Integer skuMonth) {
|
|
|
String goodsIdStr = String.valueOf(skuMonth);
|
|
|
if (goodsIdStr.length() == 1) {
|
|
|
return String.format("%s%s%s", 0, 0, skuMonth);
|