超市优化

This commit is contained in:
zengtao01
2024-11-14 16:02:22 +08:00
parent 9d09319876
commit be5fd186b0
10 changed files with 52 additions and 16 deletions

View File

@ -41,4 +41,5 @@ public class StoreSaleGoodsPageVO extends PageParam {
private Integer number;
private String img;
}

View File

@ -21,11 +21,13 @@ import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.member.enums.StoreOrderStatusEnum;
import cn.iocoder.yudao.module.member.service.async.MemberAsyncService;
import cn.iocoder.yudao.module.member.service.storegoods.StoreGoodsService;
import cn.iocoder.yudao.module.member.service.storegoodsinventory.StoreGoodsInventoryService;
import cn.iocoder.yudao.module.member.service.storegoodstype.StoreGoodsTypeService;
import cn.iocoder.yudao.module.member.service.storeorder.StoreOrderService;
import cn.iocoder.yudao.module.member.service.storeorderdetail.StoreOrderDetailService;
import cn.iocoder.yudao.module.member.service.storesalegoods.StoreSaleGoodsService;
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import cn.iocoder.yudao.module.system.api.cashregisterinfo.CashregisterinfoApi;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
@ -40,6 +42,7 @@ import javax.annotation.Resource;
import javax.annotation.security.PermitAll;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Tag(name = "用户 APP - 超市")
@RestController
@ -62,6 +65,10 @@ public class AppStoreController {
private StoreOrderDetailService orderDetailService;
@Resource
private MemberAsyncService memberAsyncService;
@Resource
private CashregisterinfoApi cashregisterinfoApi;
@Resource
private StoreGoodsInventoryService storeGoodsInventoryService;
@GetMapping("/mgcr/memberUser/getMenberTwoList")
@Operation(summary = "获取用户关联信息")
@ -113,14 +120,21 @@ public class AppStoreController {
goodsResult.setSuccess(true);
goodsResult.setMessage("操作成功");
List<Integer> goodsIds = saleGoodsService.getGoodsIds(equipmentCode);
Long storeId = cashregisterinfoApi.getStoreId(equipmentCode);
List<Integer> goodsIds = saleGoodsService.getGoodsIds(storeId);
if(CollectionUtil.isEmpty(goodsIds)){
return JsonUtils.toJsonString(goodsResult);
}
List<StoreGoodsDO> goodsDOS = storeGoodsService.getAll(goodsIds);
List<StoreGoodsTypeDO> goodsTypeDOS = goodsTypeService.getAll();
List<StoreGoodsListVo> goodData = BeanUtils.toBean(goodsDOS, StoreGoodsListVo.class);
//库存处理
Map<Integer, Integer> inventoryList = storeGoodsInventoryService.getInventoryList(goodsIds, storeId);
for (StoreGoodsListVo listVo:goodData){
listVo.setNumber(inventoryList.get(listVo.getGoodsId()));
}
List<StoreGoodsTypeListVo> categoryData = BeanUtils.toBean(goodsTypeDOS, StoreGoodsTypeListVo.class);
goodsResult.setCategoryData(categoryData);
goodsResult.setGoodsData(goodData);

View File

@ -19,4 +19,9 @@ public class StoreGoodsListVo {
*/
private Double price;
/**
* 价格
*/
private Integer number;
}

View File

@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.St
import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventory.StoreGoodsInventoryDO;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
/**
* 商品库存 Service 接口
@ -64,4 +66,6 @@ public interface StoreGoodsInventoryService {
Integer getInventory(Integer goodsId,Long carteenId);
Map<Integer,Integer> getInventoryList(List<Integer> goodsIds, Long carteenId);
}

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.member.service.storegoodsinventory;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.exception.ErrorCode;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.AddReqVO;
@ -21,11 +22,12 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_GOODS_INVENTORY_NOT_ENOUGH;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_GOODS_INVENTORY_NOT_EXISTS;
/**
@ -70,10 +72,12 @@ public class StoreGoodsInventoryServiceImpl implements StoreGoodsInventoryServic
}
StoreGoodsInventoryDO storeGoodsInventoryDO = storeGoodsInventoryDOS.get(0);
if (storeGoodsInventoryDO.getNumber() < vo.getNumber()) {
throw exception(STORE_GOODS_INVENTORY_NOT_ENOUGH);
StoreGoodsDO storeGoodsDO = storeGoodsMapper.selectById(storeGoodsInventoryDO.getGoodsId());
throw exception(new ErrorCode(1_004_019_001, storeGoodsDO.getGoodsName()+"商品库存不足"));
}
if (storeGoodsInventoryDO.getWeight() < vo.getWeight()) {
throw exception(STORE_GOODS_INVENTORY_NOT_ENOUGH);
StoreGoodsDO storeGoodsDO = storeGoodsMapper.selectById(storeGoodsInventoryDO.getGoodsId());
throw exception(new ErrorCode(1_004_019_001, storeGoodsDO.getGoodsName()+"商品库存不足"));
}
storeGoodsInventoryDO.setNumber(storeGoodsInventoryDO.getNumber() - vo.getNumber());
storeGoodsInventoryDO.setWeight(storeGoodsInventoryDO.getWeight() - vo.getWeight());
@ -159,4 +163,16 @@ public class StoreGoodsInventoryServiceImpl implements StoreGoodsInventoryServic
}
return 0;
}
@Override
public Map<Integer, Integer> getInventoryList(List<Integer> goodsIds, Long carteenId) {
List<StoreGoodsInventoryDO> list = storeGoodsInventoryMapper.selectList(Wrappers.<StoreGoodsInventoryDO>lambdaQuery()
.in(StoreGoodsInventoryDO::getGoodsId, goodsIds)
.eq(StoreGoodsInventoryDO::getCarteenId, carteenId));
if (CollectionUtil.isNotEmpty(list)) {
return list.stream().collect(Collectors.toMap(StoreGoodsInventoryDO::getGoodsId,StoreGoodsInventoryDO::getNumber));
}
return Collections.emptyMap();
}
}

View File

@ -57,5 +57,5 @@ public interface StoreSaleGoodsService {
Boolean bindGoods(StoreSaleGoodsDto dto);
List<Integer> getGoodsIds(String equipmentCode);
List<Integer> getGoodsIds( Long storeId);
}

View File

@ -11,7 +11,6 @@ import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreGoodsDto;
import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreSaleGoodsDto;
import cn.iocoder.yudao.module.member.dal.dataobject.storesalegoods.StoreSaleGoodsDO;
import cn.iocoder.yudao.module.member.dal.mysql.storesalegoods.StoreSaleGoodsMapper;
import cn.iocoder.yudao.module.member.service.storegoodsinventory.StoreGoodsInventoryService;
import cn.iocoder.yudao.module.system.api.cashregisterinfo.CashregisterinfoApi;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -42,8 +41,7 @@ public class StoreSaleGoodsServiceImpl implements StoreSaleGoodsService {
private StoreSaleGoodsMapper storeSaleGoodsMapper;
@Resource
private CashregisterinfoApi cashregisterinfoApi;
@Resource
private StoreGoodsInventoryService storeGoodsInventoryService;
@Override
@Transactional(rollbackFor = Exception.class)
@ -127,9 +125,7 @@ public class StoreSaleGoodsServiceImpl implements StoreSaleGoodsService {
}
@Override
public List<Integer> getGoodsIds(String equipmentCode) {
Long storeId = cashregisterinfoApi.getStoreId(equipmentCode);
public List<Integer> getGoodsIds(Long storeId) {
List<StoreSaleGoodsDO> storeSaleGoodsDOS = storeSaleGoodsMapper.selectList(new LambdaQueryWrapper<StoreSaleGoodsDO>().eq(StoreSaleGoodsDO::getCarteenId, storeId));
if (CollectionUtil.isEmpty(storeSaleGoodsDOS)) {

View File

@ -18,8 +18,8 @@ import java.util.concurrent.TimeUnit;
public class QRCodeWithJWTUtil {
private static final String SECRET_KEY = "your_secret_key"; // 使用HS256算法生成秘钥
public static final String BASE_PATH = "qrCodes/";
public static final String QR_PREFIX_ZF = "ZF_";
public static final String QR_PREFIX_HX = "HX_";
public static final String QR_PREFIX_ZF = "";
public static final String QR_PREFIX_HX = "HX";
// public static void main(String[] args) throws WriterException, IOException {
// // 用户ID
// Long userId = 123L;

View File

@ -50,6 +50,6 @@ public class SmsUtil {
}
public static void main(String[] args) {
sendMsg("15723110242","这是一条测试短信2");
sendMsg("15723110242,15213164384","这是一条测试短信2");
}
}

View File

@ -10,7 +10,7 @@
-->
<select id="getSaleGoodsPage" resultType="cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.StoreSaleGoodsPageVO">
select sg.id,sg.carteen_id,sg.create_time,ms.category_id,ms.goods_name,ms.img,ms.sales_model,ms.price,sg.goods_id,gi.number
select sg.id,sg.carteen_id,sg.create_time,ms.category_id,ms.goods_name,ms.img,ms.sales_model,ms.price,sg.goods_id,gi.number,ms.img
from member_store_sale_goods sg left join member_store_goods ms on sg.goods_id = ms.goods_id
left join member_store_goods_inventory gi on gi.carteen_id = sg.carteen_id and gi.goods_id = sg.goods_id
where sg.deleted = false