This commit is contained in:
dzc committed 2025-01-13 14:17:21 +08:00
1 parent d6d36d689f
commit fdf6dc8072
12 files changed
+79 -38

No files matched your search

@@ -104,7 +104,7 @@
<groupId>com.bsd</groupId>
<artifactId>pjcloud-common-swagger</artifactId>
</dependency>
<!-- 引入分布式事务-->
<!-- 引入分布式事务-->
<dependency>
<groupId>com.bsd</groupId>
<artifactId>pjcloud-common-seata</artifactId>
@@ -56,7 +56,7 @@ public interface RemoteCanteenSpuService {
* @return
*/
@PostMapping("/canteenSpu/ad/updateSkuStock")
R getAllSimple(@RequestBody CanteenSpuUpdateStockReqDTO updateStockReqDTO);
R updateSkuStock(@RequestBody CanteenSpuUpdateStockReqDTO updateStockReqDTO);
/**
@@ -66,7 +66,7 @@ public interface RemoteOnlineCanteenSpuService {
* @return
*/
@PostMapping("/canteenOnlineSpu/app/updateSkuStock")
R getAllSimple(@RequestBody CanteenSpuUpdateStockReqDTO updateStockReqDTO);
R updateSkuStock(@RequestBody CanteenSpuUpdateStockReqDTO updateStockReqDTO);
/**
@@ -25,7 +25,7 @@ public class CanteenOnlineSpuServiceImpl extends ServiceImpl<CanteenOnlineSpuMap
@Override
public R<List<APPOnlineSpuVO>> getCanteenOnlineSpuList(String categoryId, String merchantId) {
LambdaQueryWrapper<CanteenOnlineSpuEntity> canteenOnlineSpuEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
canteenOnlineSpuEntityLambdaQueryWrapper.eq(StringUtils.isNotEmpty(categoryId),CanteenOnlineSpuEntity::getCategoryId, categoryId);
canteenOnlineSpuEntityLambdaQueryWrapper.eq(StringUtils.isNotEmpty(categoryId), CanteenOnlineSpuEntity::getCategoryId, categoryId);
canteenOnlineSpuEntityLambdaQueryWrapper.eq(CanteenOnlineSpuEntity::getMerchantId, merchantId);
List<CanteenOnlineSpuEntity> canteenSpuEntities = baseMapper.selectList(canteenOnlineSpuEntityLambdaQueryWrapper);
List<APPOnlineSpuVO> bean = BeanUtils.toBean(canteenSpuEntities, APPOnlineSpuVO.class);
@@ -38,7 +38,7 @@ public class CanteenOnlineSpuServiceImpl extends ServiceImpl<CanteenOnlineSpuMap
// 更新 SKU 库存
canteenOnlineSpuUpdateStockReqDTO.getItems().forEach(item -> {
int i = baseMapper.updateStock(item.getId(), item.getIncrCount());
if (item.getIncrCount() < 0) {
if (item.getIncrCount() <= 0) {
if (i == 0) {
R.failed("商品库存不足");
}
@@ -40,20 +40,19 @@ public class CanteenSpuServiceImpl extends ServiceImpl<CanteenSpuMapper, Canteen
// 更新 SKU 库存
updateStockReqDTO.getItems().forEach(item -> {
int i = baseMapper.updateStock(item.getId(), item.getIncrCount());
if (item.getIncrCount() < 0) {
if (item.getIncrCount() <= 0) {
if (i == 0) {
R.failed("商品库存不足");
R.failed("商品库存不足");
}
}
});
return R.ok();
}
@Override
public R getCanteenSpuList(String categoryId) {
List<CanteenSpuEntity> canteenSpuEntities = baseMapper.selectListByScope(new LambdaQueryWrapper<CanteenSpuEntity>()
.eq(StringUtils.isNotEmpty(categoryId), CanteenSpuEntity::getCategoryId, categoryId),DataScope.of());
.eq(StringUtils.isNotEmpty(categoryId), CanteenSpuEntity::getCategoryId, categoryId), DataScope.of());
List<ADCanteenSpuListVO> bean = BeanUtils.toBean(canteenSpuEntities, ADCanteenSpuListVO.class);
return R.ok(bean);
@@ -53,7 +53,7 @@ public interface HardOrderService extends IService<HardOrderEntity> {
void generateCode(HardOrderEntity order);
/**
* 扣件库存
* 扣减库存
*/
void fastenerInventory(HardOrderEntity order);
@@ -10,6 +10,9 @@ import com.bsd.pjcloud.admin.api.entity.SysUser;
import com.bsd.pjcloud.admin.api.feign.RemoteDeptService;
import com.bsd.pjcloud.admin.api.feign.RemoteUserService;
import com.bsd.pjcloud.admin.api.utils.DataUtil;
import com.bsd.pjcloud.canteen.api.feign.RemoteCanteenSpuService;
import com.bsd.pjcloud.canteen.api.feign.RemoteOnlineCanteenSpuService;
import com.bsd.pjcloud.canteen.dto.CanteenSpuUpdateStockReqDTO;
import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum;
import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.core.util.CollectionUtils;
@@ -36,6 +39,9 @@ import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper;
import com.bsd.pjcloud.hard.service.HardCarService;
import com.bsd.pjcloud.hard.service.HardManagerService;
import com.bsd.pjcloud.hard.service.HardOrderService;
import com.bsd.pjcloud.supermarket.api.feign.RemoteSupermarketSpuService;
import com.bsd.pjcloud.supermarket.api.feign.RemoteSupermarketUnitSkuService;
import com.bsd.pjcloud.supermarket.dto.SupermarketSpuUpdateStockReqDTO;
import com.bsd.pjcloud.wallet.api.constant.WalletBizEnum;
import com.bsd.pjcloud.wallet.api.constant.WalletCodeBizEnum;
import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum;
@@ -89,6 +95,9 @@ public class HardwareOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardO
private final RemoteUserService userService;
private final RemoteDeptService deptService;
private final RemoteOnlineCanteenSpuService onlineCanteenSpuService;
private final RemoteSupermarketSpuService supermarketSpuService;
private final HardManagerMapper hardManagerMapper;
@Override
@@ -234,6 +243,7 @@ public class HardwareOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardO
}
@Override
@GlobalTransactional
@Transactional(rollbackFor = Exception.class)
public Long appCreateOrder(@Valid HardAppCreateOrderDto dto) {
// 钱包
@@ -284,12 +294,13 @@ public class HardwareOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardO
// 钱包扣款
if (isPay) getSelf().fastReduceBalance(orderObj);
// 是否需要创建二维码
generateCode(orderObj);
getSelf().generateCode(orderObj);
// 扣减库存
getSelf().fastenerInventory(orderObj);
return orderObj.getId();
}
@Override
@GlobalTransactional
@Transactional(rollbackFor = Exception.class)
public void fastReduceBalance(HardOrderEntity order) {
boolean isPay = isPay(HardOrderTypeEnum.valueOfByType(order.getOrderType()), HardPayTypeEnum.valueOfByType(order.getPayType()));
@@ -298,7 +309,11 @@ public class HardwareOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardO
reduceBuild.setPrice(order.getPayPrice());
reduceBuild.setBizId(String.valueOf(order.getId()));
reduceBuild.setBizType(WalletBizEnum.PAYMENT);
WalletTransactionEntity walletTransaction = walletTransactionService.reduceWalletBalance(reduceBuild).getData();
R<WalletTransactionEntity> reduceRes = walletTransactionService.reduceWalletBalance(reduceBuild);
if (reduceRes.getCode() != 0 || ObjectUtil.isEmpty(reduceRes.getData())) {
throw new RuntimeException("钱包扣款错误");
}
WalletTransactionEntity walletTransaction = reduceRes.getData();
if (ObjectUtil.isNotEmpty(walletTransaction)) {
// 订单表订单状态
Integer payPrice = isPay ? order.getTotalPrice() + order.getExtraPrice() : 0;
@@ -307,10 +322,6 @@ public class HardwareOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardO
// 父购物车订单表订单状态
HardParentCarEntity updateParentCar = HardParentCarEntity.builder().id(order.getParentCarId()).orderStatus(HardOrderStatusEnum.PAY.getType()).build();
hardParentCarServiceImpl.updateById(updateParentCar);
// 核销二维码
cancelCode(order);
// 扣件库存
fastenerInventory(order);
}
}
@@ -367,7 +378,6 @@ public class HardwareOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardO
}
@Override
@GlobalTransactional
@Transactional(rollbackFor = Exception.class)
public void generateCode(HardOrderEntity order) {
HardTypeEnum hardTypeEnum = HardTypeEnum.valueOfByType(order.getSysType());
@@ -383,11 +393,13 @@ public class HardwareOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardO
codeType = WalletCodeBizEnum.SUPERMARKET_RESERVE;
}
if (ObjectUtil.isEmpty(codeType)) return;
remoteCodeUseService.generateCode(order.getId(), order.getUserId(), codeType, 1);
R<Boolean> res = remoteCodeUseService.generateCode(order.getId(), order.getUserId(), codeType, 1);
if (res.getCode() != 0 || !res.getData()) {
throw new RuntimeException("生成预约二维码错误");
}
}
@Override
@GlobalTransactional
@Transactional(rollbackFor = Exception.class)
public void fastenerInventory(HardOrderEntity order) {
HardTypeEnum hardTypeEnum = HardTypeEnum.valueOfByType(order.getSysType());
@@ -395,12 +407,40 @@ public class HardwareOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardO
if (!ObjectUtil.isAllNotEmpty(hardTypeEnum, orderTypeEnum)) return;
// 食堂扣件库存
if (ObjectUtil.equals(hardTypeEnum, HardTypeEnum.CANTEEN) && ObjectUtil.equals(orderTypeEnum, HardOrderTypeEnum.RESERVE)) {
// 查询购物车
List<HardCarEntity> carList = hardCarService.getByParentCarId(order.getParentCarId());
if (ObjectUtil.isEmpty(carList)) throw new RuntimeException("扣减库存错误,购物车不存在");
CanteenSpuUpdateStockReqDTO dto = new CanteenSpuUpdateStockReqDTO();
List<CanteenSpuUpdateStockReqDTO.Item> list = carList.stream().map(v -> {
CanteenSpuUpdateStockReqDTO.Item item = new CanteenSpuUpdateStockReqDTO.Item();
item.setId(v.getProductId());
item.setIncrCount(v.getProductCount());
return item;
}).toList();
dto.setItems(list);
R updateSkuStockRes = onlineCanteenSpuService.updateSkuStock(dto);
if (updateSkuStockRes.getCode() != 0) {
throw new RuntimeException("库存不足");
}
return;
}
// 超市扣家库存
if (ObjectUtil.equals(hardTypeEnum, HardTypeEnum.SUPERMARKET) && ObjectUtil.equals(orderTypeEnum, HardOrderTypeEnum.RESERVE)) {
// 查询购物车
List<HardCarEntity> carList = hardCarService.getByParentCarId(order.getParentCarId());
if (ObjectUtil.isEmpty(carList)) throw new RuntimeException("扣减库存错误,购物车不存在");
SupermarketSpuUpdateStockReqDTO dto = new SupermarketSpuUpdateStockReqDTO();
List<SupermarketSpuUpdateStockReqDTO.Item> list = carList.stream().map(v -> {
SupermarketSpuUpdateStockReqDTO.Item item = new SupermarketSpuUpdateStockReqDTO.Item();
item.setId(v.getProductId());
item.setIncrCount(v.getProductCount());
return item;
}).toList();
dto.setItems(list);
R updateSkuStockRes = supermarketSpuService.updateSpuStock(dto);
if (updateSkuStockRes.getCode() != 0) {
throw new RuntimeException("扣件库存错误");
}
return;
}
}
@@ -63,7 +63,7 @@ public interface RemoteSupermarketSpuService {
* @return
*/
@PostMapping("/supermarketSpu/ad/updateSpuStock")
R getSupermarketSpu(@RequestBody SupermarketSpuUpdateStockReqDTO updateStockReqDTO);
R updateSpuStock(@RequestBody SupermarketSpuUpdateStockReqDTO updateStockReqDTO);
@@ -41,6 +41,7 @@ public class SupermarketSpuServiceImpl extends ServiceImpl<SupermarketSpuMapper,
private final SupermarketUnitService supermarketUnitService;
private final SupermarketAuxiliaryCodeService supermarketAuxiliaryCodeService;
@Override
@Transactional
public R saveSpu(SupermarketSpuEntity supermarketSpu) {
@@ -52,15 +53,15 @@ public class SupermarketSpuServiceImpl extends ServiceImpl<SupermarketSpuMapper,
if (CollectionUtils.isNotEmpty(supermarketUnitEntityList)) {
supermarketUnitEntityList.forEach(supermarketUnitEntity -> supermarketUnitEntity.setSpuId(supermarketSpu.getId()));
supermarketUnitService.saveBatch(supermarketUnitEntityList);
}else {
} else {
return R.failed("包装类型不能为空");
}
//辅助条码
List<SupermarketAuxiliaryCodeEntity> supermarketAuxiliaryCodeEntityList = supermarketSpu.getSupermarketAuxiliaryCodeEntityList();
if (CollectionUtils.isNotEmpty(supermarketAuxiliaryCodeEntityList)) {
supermarketAuxiliaryCodeEntityList.forEach(supermarketAuxiliaryCodeEntity -> supermarketAuxiliaryCodeEntity.setSpuId(supermarketSpu.getId()));
supermarketAuxiliaryCodeService.saveBatch(supermarketAuxiliaryCodeEntityList);
}else {
supermarketAuxiliaryCodeService.saveBatch(supermarketAuxiliaryCodeEntityList);
} else {
return R.failed("辅助条码不能为空");
}
@@ -83,7 +84,7 @@ public class SupermarketSpuServiceImpl extends ServiceImpl<SupermarketSpuMapper,
.filter(supermarketUnitEntity -> supermarketUnitEntity.getId() != null).collect(Collectors.toList());
supermarketUnitService.updateBatchById(updateCollect);
supermarketUnitService.saveBatch(insertCollect);
}else {
} else {
return R.failed("包装类型不能为空");
}
//辅助条码
@@ -94,7 +95,7 @@ public class SupermarketSpuServiceImpl extends ServiceImpl<SupermarketSpuMapper,
insertCollect.stream().forEach(supermarketAuxiliaryCodeEntity -> supermarketAuxiliaryCodeEntity.setSpuId(supermarketSpu.getId()));
supermarketAuxiliaryCodeService.saveBatch(insertCollect);
supermarketAuxiliaryCodeService.updateBatchById(updateCollect);
}else {
} else {
return R.failed("辅助条码不能为空");
}
return R.ok();
@@ -106,11 +107,11 @@ public class SupermarketSpuServiceImpl extends ServiceImpl<SupermarketSpuMapper,
baseMapper.deleteByIds(list);
//删除
list.forEach(id->{
list.forEach(id -> {
LambdaQueryWrapper<SupermarketAuxiliaryCodeEntity> supermarketAuxiliaryCodeEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
supermarketAuxiliaryCodeEntityLambdaQueryWrapper.eq(SupermarketAuxiliaryCodeEntity::getSpuId,id);
supermarketAuxiliaryCodeEntityLambdaQueryWrapper.eq(SupermarketAuxiliaryCodeEntity::getSpuId, id);
LambdaQueryWrapper<SupermarketUnitEntity> supermarketUnitEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
supermarketUnitEntityLambdaQueryWrapper.eq(SupermarketUnitEntity::getSpuId,id);
supermarketUnitEntityLambdaQueryWrapper.eq(SupermarketUnitEntity::getSpuId, id);
supermarketUnitService.remove(supermarketUnitEntityLambdaQueryWrapper);
supermarketAuxiliaryCodeService.remove(supermarketAuxiliaryCodeEntityLambdaQueryWrapper);
});
@@ -124,7 +125,7 @@ public class SupermarketSpuServiceImpl extends ServiceImpl<SupermarketSpuMapper,
// 更新 SKU 库存
updateStockReqDTO.getItems().forEach(item -> {
int i = baseMapper.updateStock(item.getId(), item.getIncrCount());
if (item.getIncrCount() < 0) {
if (item.getIncrCount() <= 0) {
if (i == 0) {
R.failed("商品库存不足");
}
@@ -142,7 +143,7 @@ public class SupermarketSpuServiceImpl extends ServiceImpl<SupermarketSpuMapper,
@Override
public Object selectListAllScope(SupermarketSpuQueryDTO supermarketSpuQueryDTO) {
List<SupermarketSpuEntity> list=baseMapper.selectListAllScope(supermarketSpuQueryDTO, DataScope.of());
List<SupermarketSpuEntity> list = baseMapper.selectListAllScope(supermarketSpuQueryDTO, DataScope.of());
List<SupermarketSpuVo> bean = BeanUtils.toBean(list, SupermarketSpuVo.class);
return bean;
@@ -48,8 +48,7 @@ public class WalletCodeUseController {
@Inner
@GetMapping("/generate-code")
public R<Boolean> generateCode(@RequestParam Long id, @RequestParam Long userId, @RequestParam WalletCodeBizEnum walletCodeBiz, @RequestParam Integer count) {
walletCodeUseService.generate(id, userId, walletCodeBiz, count);
return R.ok(true);
return R.ok(walletCodeUseService.generate(id, userId, walletCodeBiz, count));
}
@Inner
@@ -10,7 +10,7 @@ import jakarta.validation.constraints.NotNull;
public interface WalletCodeUseService extends IService<WalletCodeUseEntity> {
void generate(@NotNull Long id, @NotNull Long userId, @NotNull WalletCodeBizEnum walletCodeBizEnum, @NotNull Integer count);
Boolean generate(@NotNull Long id, @NotNull Long userId, @NotNull WalletCodeBizEnum walletCodeBizEnum, @NotNull Integer count);
Page<WalletCodeUseVo> pageJoin(Page page, WalletCodeUseDto dto);
@@ -57,8 +57,8 @@ public class WalletCodeUseServiceImpl extends ServiceImpl<WalletCodeUseMapper, W
@Override
@Transactional(rollbackFor = Exception.class)
public void generate(Long id, Long userId, WalletCodeBizEnum biz, Integer count) {
if (count == 0) return;
public Boolean generate(Long id, Long userId, WalletCodeBizEnum biz, Integer count) {
if (count == 0) return false;
HardOrderTypeEnum orderType = HardOrderTypeEnum.FOREIGN_TICKET;
HardPayTypeEnum payType = HardPayTypeEnum.FOREIGN_TICKET_QR_CODE;
if (biz == WalletCodeBizEnum.STRIDE) {
@@ -86,6 +86,7 @@ public class WalletCodeUseServiceImpl extends ServiceImpl<WalletCodeUseMapper, W
}
}
}
return true;
}
@Override
@@ -103,6 +104,7 @@ public class WalletCodeUseServiceImpl extends ServiceImpl<WalletCodeUseMapper, W
}
@Override
@GlobalTransactional
@Transactional(rollbackFor = Exception.class)
public Boolean cancelCode(Long id) {
WalletCodeUseEntity codeUse = baseMapper.selectById(id);