Commit e6769b6e authored by shiyu's avatar shiyu

交换订单限制只换一单

parent a0601766
package com.wwdz.ch.core.util;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class AESCrypt {
private static final String ALGORITHM = "AES";
/**
* 密钥
*/
private static final String SECRET_KEY = "f03db8ed815b46cdbed45dcf40e44239";
// 加密
public static String encrypt(String data) throws Exception {
SecretKeySpec key = new SecretKeySpec(SECRET_KEY.getBytes(), ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedBytes = cipher.doFinal(data.getBytes());
// 将字节数组转换为Base64字符串,并替换斜杠
String base64Encoded = Base64.getEncoder().encodeToString(encryptedBytes);
return base64Encoded.replace("/", "_"); // 替换斜杠
}
// 解密
public static String decrypt(String encryptedData) throws Exception {
SecretKeySpec key = new SecretKeySpec(SECRET_KEY.getBytes(), ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
// 将替换后的字符串恢复为原始Base64字符串
String base64Encoded = encryptedData.replace("_", "/"); // 恢复斜杠
byte[] encryptedBytes = Base64.getDecoder().decode(base64Encoded);
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
return new String(decryptedBytes);
}
public static void main(String[] args) {
try {
String originalId = "323232921"; // 需要加密的ID
// 加密
String encryptedId = encrypt(originalId);
System.out.println("Encrypted ID: " + encryptedId);
System.out.println("Encrypted ID length: " + encryptedId.length());
// 解密
String decryptedId = decrypt(encryptedId);
System.out.println("Decrypted ID: " + decryptedId);
} catch (Exception e) {
e.printStackTrace();
}
}
}
...@@ -33,4 +33,14 @@ public class ItemTagOperateRequestDto implements Entity { ...@@ -33,4 +33,14 @@ public class ItemTagOperateRequestDto implements Entity {
* 图片 * 图片
*/ */
private List<String> images; private List<String> images;
/**
* 生成的数量
*/
private Integer createNum;
/**
* 商品id加密后的字符串
*/
private String secretCode;
} }
...@@ -7,6 +7,7 @@ import com.wwdz.ch.core.consts.DistributionEnum; ...@@ -7,6 +7,7 @@ import com.wwdz.ch.core.consts.DistributionEnum;
import com.wwdz.ch.core.consts.SupplierItemEnum; import com.wwdz.ch.core.consts.SupplierItemEnum;
import com.wwdz.ch.core.type.PageSearchResult; import com.wwdz.ch.core.type.PageSearchResult;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.AESCrypt;
import com.wwdz.ch.core.util.PriceUtil; import com.wwdz.ch.core.util.PriceUtil;
import com.wwdz.ch.core.util.QRCodeUtil; import com.wwdz.ch.core.util.QRCodeUtil;
import com.wwdz.ch.db.dao.CategoryDao; import com.wwdz.ch.db.dao.CategoryDao;
...@@ -20,8 +21,6 @@ import com.wwdz.ch.wx.entity.request.ItemTagOperateRequestDto; ...@@ -20,8 +21,6 @@ import com.wwdz.ch.wx.entity.request.ItemTagOperateRequestDto;
import com.wwdz.ch.wx.entity.vo.ItemTagPrintInfo; import com.wwdz.ch.wx.entity.vo.ItemTagPrintInfo;
import com.wwdz.ch.wx.service.ItemTagOperateService; import com.wwdz.ch.wx.service.ItemTagOperateService;
import com.xxdxxs.utils.EntityMapper; import com.xxdxxs.utils.EntityMapper;
import com.xxdxxs.utils.StringUtils;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -31,7 +30,7 @@ import org.springframework.util.CollectionUtils; ...@@ -31,7 +30,7 @@ import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.stream.IntStream;
@Service @Service
public class ItemTagOperateServiceImpl implements ItemTagOperateService { public class ItemTagOperateServiceImpl implements ItemTagOperateService {
...@@ -55,24 +54,14 @@ public class ItemTagOperateServiceImpl implements ItemTagOperateService { ...@@ -55,24 +54,14 @@ public class ItemTagOperateServiceImpl implements ItemTagOperateService {
@Override @Override
public Result printItemTag(ItemTagOperateRequestDto dto) { public Result createQrCode(ItemTagOperateRequestDto dto) {
try { try {
//先上传商品 int createNum = dto.getCreateNum();
IntStream.rangeClosed(0, createNum).parallel().forEach( i ->{
SupplierItem supplierItem = new SupplierItem(); SupplierItem supplierItem = new SupplierItem();
//查询类目信息
Category category = categoryDao.findById(dto.getCategoryId());
EntityMapper.copyAttribute(dto, supplierItem);
//查询分类的上级节点
Category parentCategory = categoryDao.findById(category.getPid());
supplierItem.setName(parentCategory.getName() + "-" + category.getName());
supplierItem.setDescription(category.getIntroduction());
supplierItem.setDistributionPrice(0L); supplierItem.setDistributionPrice(0L);
supplierItem.setSupplyPrice(0L); supplierItem.setSupplyPrice(0L);
supplierItem.setRebate(new BigDecimal("0")); supplierItem.setRebate(new BigDecimal("0"));
if (!CollectionUtils.isEmpty(dto.getImages())) {
supplierItem.setImages(String.join(";", dto.getImages()));
}
supplierItem.setSort(1); supplierItem.setSort(1);
supplierItem.setBuyLimitNum(-1); supplierItem.setBuyLimitNum(-1);
supplierItem.setIsAbleSale(false); supplierItem.setIsAbleSale(false);
...@@ -88,6 +77,37 @@ public class ItemTagOperateServiceImpl implements ItemTagOperateService { ...@@ -88,6 +77,37 @@ public class ItemTagOperateServiceImpl implements ItemTagOperateService {
supplierItem.setStatus(SupplierItemEnum.StatusEnum.COMMON.getCode()); supplierItem.setStatus(SupplierItemEnum.StatusEnum.COMMON.getCode());
supplierItem.setCreatorId(CommConsts.PRINT_ITEM_TAG_CREATOR_ID); supplierItem.setCreatorId(CommConsts.PRINT_ITEM_TAG_CREATOR_ID);
long itemId = supplierItemDao.insert(supplierItem); long itemId = supplierItemDao.insert(supplierItem);
//获取页面短链
String url = wxAppletApi.getUrlLink("/pages/detail/index","itemId=" + itemId);
String qrCode = QRCodeUtil.createCodeToBase64(url);
});
} catch (Exception e) {
logger.error("打印标签失败", e);
}
return Result.failed("打印标签失败");
}
@Override
public Result printItemTag(ItemTagOperateRequestDto dto) {
try {
String secretCode = dto.getSecretCode();
long itemId = Long.valueOf(AESCrypt.decrypt(secretCode));
SupplierItem supplierItem = new SupplierItem();
supplierItem.setId(itemId);
//查询类目信息
Category category = categoryDao.findById(dto.getCategoryId());
EntityMapper.copyAttribute(dto, supplierItem);
//查询分类的上级节点
Category parentCategory = categoryDao.findById(category.getPid());
supplierItem.setName(parentCategory.getName() + "-" + category.getName());
supplierItem.setDescription(category.getIntroduction());
if (!CollectionUtils.isEmpty(dto.getImages())) {
supplierItem.setImages(String.join(";", dto.getImages()));
}
supplierItemDao.update(supplierItem);
//记录制作标签的记录 //记录制作标签的记录
ItemTagOperateRecord itemTagOperateRecord = new ItemTagOperateRecord(); ItemTagOperateRecord itemTagOperateRecord = new ItemTagOperateRecord();
itemTagOperateRecord.setItemId(itemId); itemTagOperateRecord.setItemId(itemId);
...@@ -95,22 +115,14 @@ public class ItemTagOperateServiceImpl implements ItemTagOperateService { ...@@ -95,22 +115,14 @@ public class ItemTagOperateServiceImpl implements ItemTagOperateService {
itemTagOperateRecord.setCategoryId(dto.getCategoryId()); itemTagOperateRecord.setCategoryId(dto.getCategoryId());
itemTagOperateRecord.setCategoryName(category.getName()); itemTagOperateRecord.setCategoryName(category.getName());
itemTagOperateRecord.setOperatorId(dto.getOperatorId()); itemTagOperateRecord.setOperatorId(dto.getOperatorId());
itemTagOperateRecord.setCreateTime(now); itemTagOperateRecord.setCreateTime(new Date());
itemTagOperateRecordDao.insert(itemTagOperateRecord); itemTagOperateRecordDao.insert(itemTagOperateRecord);
//打印标签的信息 return Result.success();
ItemTagPrintInfo itemTagPrintInfo = new ItemTagPrintInfo();
itemTagPrintInfo.setItemName(supplierItem.getName());
//获取页面短链
String url = wxAppletApi.getUrlLink("/pages/detail/index","itemId=" + itemId);
itemTagPrintInfo.setUrl(url);
String qrCode = QRCodeUtil.createCodeToBase64(url);
itemTagPrintInfo.setQrCode(qrCode);
return Result.success(itemTagPrintInfo);
} catch (Exception e) { } catch (Exception e) {
logger.error("打印标签失败", e); logger.error("绑定二维码失败", e);
} }
return Result.failed("打印标签失败"); return Result.failed("绑定二维码失败");
} }
......
...@@ -172,7 +172,7 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService ...@@ -172,7 +172,7 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService
Result commitExchangeOrderResult = exchangeService.exchange(commitExchangeDto); Result commitExchangeOrderResult = exchangeService.exchange(commitExchangeDto);
if (!commitExchangeOrderResult.getSuccess()) { if (!commitExchangeOrderResult.getSuccess()) {
logger.error(">>>>>>> 创建申请方交换订单失败:{} <<<<<<<", commitExchangeOrderResult.getErrmsg()); logger.error(">>>>>>> 创建申请方交换订单失败:{} <<<<<<<", commitExchangeOrderResult.getErrmsg());
throw new Exception(commitExchangeOrderResult.getErrmsg()); return Result.failed(commitExchangeOrderResult.getErrmsg());
} }
//为受理方创建订单 //为受理方创建订单
ExchangeRequestDto receiveExchangeDto = new ExchangeRequestDto(); ExchangeRequestDto receiveExchangeDto = new ExchangeRequestDto();
...@@ -204,7 +204,7 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService ...@@ -204,7 +204,7 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService
Result receiveExchangeOrderResult = exchangeService.exchange(receiveExchangeDto); Result receiveExchangeOrderResult = exchangeService.exchange(receiveExchangeDto);
if (!receiveExchangeOrderResult.getSuccess()) { if (!receiveExchangeOrderResult.getSuccess()) {
logger.error(">>>>>>>> 创建接收方方交换订单失败:{} <<<<<<<<", receiveExchangeOrderResult.getErrmsg()); logger.error(">>>>>>>> 创建接收方方交换订单失败:{} <<<<<<<<", receiveExchangeOrderResult.getErrmsg());
throw new Exception(receiveExchangeOrderResult.getErrmsg()); return Result.failed(commitExchangeOrderResult.getErrmsg());
} }
ExchangeApplyOrder updateExchangeApplyOrder = new ExchangeApplyOrder(); ExchangeApplyOrder updateExchangeApplyOrder = new ExchangeApplyOrder();
updateExchangeApplyOrder.setExchangeApplyOrderId(orderId); updateExchangeApplyOrder.setExchangeApplyOrderId(orderId);
......
...@@ -243,22 +243,11 @@ public class ExchangeServiceImpl implements ExchangeService { ...@@ -243,22 +243,11 @@ public class ExchangeServiceImpl implements ExchangeService {
if (BLACK_USER_LIST.contains(dto.getUserId())) { if (BLACK_USER_LIST.contains(dto.getUserId())) {
return Result.failed("可直接换的商品每人限换一单"); return Result.failed("可直接换的商品每人限换一单");
} }
//判断是否有和平台交换的订单
long orderNum = distributionOrderDao.countExchangeOrderNum(dto.getUserId(), CommConsts.SELF_SUPPORT_ACCOUNT);
if (orderNum > 0) {
return Result.failed("可直接换的商品每人限换一单");
}
//限换一件
if (dto.getExchangeItemNum() != null && dto.getExchangeItemNum() > 1) {
return Result.failed("可直接换的商品每人只能换一件");
}
if (dto.getIsMultiple()) { if (dto.getIsMultiple()) {
//多商品场景在受理方订单中出现,别人用多件商品换受理方的一件商品,对于受理方而言等于是一个订单买了多件商品, //多商品场景在受理方订单中出现,别人用多件商品换受理方的一件商品,对于受理方而言等于是一个订单买了多件商品,
// 由于在创建申请方订单时已经扣除过库存,所以这里无需扣减库存,也不校验库存 // 由于在创建申请方订单时已经扣除过库存,所以这里无需扣减库存,也不校验库存
List<ItemSimpleDto> exchangeItemList = dto.getExchangeItemList(); List<ItemSimpleDto> exchangeItemList = dto.getExchangeItemList();
for (ItemSimpleDto itemSimpleDto : exchangeItemList) { for (ItemSimpleDto itemSimpleDto : exchangeItemList) {
SupplierItem supplierItem = supplierItemDao.findById(itemSimpleDto.getItemId());
exchangeItemId = itemSimpleDto.getItemId(); exchangeItemId = itemSimpleDto.getItemId();
} }
} else { } else {
...@@ -269,6 +258,17 @@ public class ExchangeServiceImpl implements ExchangeService { ...@@ -269,6 +258,17 @@ public class ExchangeServiceImpl implements ExchangeService {
logger.info("商品id:{}, 库存不足", exchangeItemId); logger.info("商品id:{}, 库存不足", exchangeItemId);
return Result.failed("库存不足"); return Result.failed("库存不足");
} }
if (supplierItem.getCreatorId().longValue() == CommConsts.SELF_SUPPORT_ACCOUNT && supplierItem.getType().equals(DistributionEnum.DistributionTypeEnum.EXCHANGE.getCode())) {
//判断是否有和平台交换的订单
long orderNum = distributionOrderDao.countExchangeOrderNum(dto.getUserId(), CommConsts.SELF_SUPPORT_ACCOUNT);
if (orderNum > 0) {
return Result.failed("可直接换的商品每人限换一单");
}
//限换一件
if (dto.getExchangeItemNum() != null && dto.getExchangeItemNum() > 1) {
return Result.failed("可直接换的商品每人只能换一件");
}
}
} }
List<ItemSimpleDto> itemSimpleDtoList = dto.getItemList(); List<ItemSimpleDto> itemSimpleDtoList = dto.getItemList();
//查询用户藏品的价值 //查询用户藏品的价值
......
...@@ -6,6 +6,14 @@ import com.wwdz.ch.wx.entity.request.ItemTagOperateRequestDto; ...@@ -6,6 +6,14 @@ import com.wwdz.ch.wx.entity.request.ItemTagOperateRequestDto;
public interface ItemTagOperateService { public interface ItemTagOperateService {
/**
* 创建无图商品,生成页面二维码
* @return
*/
Result createQrCode(ItemTagOperateRequestDto dto);
/** /**
* 打印标签 * 打印标签
* @param dto * @param dto
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment