|
@@ -12,11 +12,10 @@ import edu.travel.commodity.entity.*;
|
|
|
import edu.travel.commodity.mapper.ShopProductSpecMapper;
|
|
|
import edu.travel.commodity.service.*;
|
|
|
import edu.travel.commodity.utils.IdUtils;
|
|
|
-import edu.travel.remote.dto.FileDto;
|
|
|
-import edu.travel.remote.dto.InsertProductSpecDto;
|
|
|
-import edu.travel.remote.dto.ProductSpecDto;
|
|
|
-import edu.travel.remote.dto.SpecValueDto;
|
|
|
+import edu.travel.remote.dto.*;
|
|
|
import edu.travel.remote.vo.*;
|
|
|
+import edu.travel.rpc.RPCBaseResponse;
|
|
|
+import edu.travel.service.SysServiceImpl;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -27,8 +26,10 @@ import javax.servlet.http.HttpServletRequest;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static edu.travel.rpc.RPCBaseResponse.error;
|
|
|
+
|
|
|
@Service
|
|
|
-public class ShopProductSpecServiceImpl extends ServiceImpl<ShopProductSpecMapper, ShopProductSpec> implements ShopProductSpecService {
|
|
|
+public class ShopProductSpecServiceImpl extends SysServiceImpl<ShopProductSpecMapper, ShopProductSpec> implements ShopProductSpecService {
|
|
|
@Autowired
|
|
|
private ShopProductService shopProductService;
|
|
|
@Autowired
|
|
@@ -41,6 +42,8 @@ public class ShopProductSpecServiceImpl extends ServiceImpl<ShopProductSpecMappe
|
|
|
private ShopProductSpecService shopProductSpecService;
|
|
|
@Autowired
|
|
|
private ShopProductSpecMapper shopProductSpecMapper;
|
|
|
+ @Autowired
|
|
|
+ private ShopSpecService shopSpecService;
|
|
|
|
|
|
@Override
|
|
|
public ProductSpecVo getShopSpec(ProductSpecDto param) {
|
|
@@ -145,6 +148,73 @@ public class ShopProductSpecServiceImpl extends ServiceImpl<ShopProductSpecMappe
|
|
|
this.saveBatch(list);
|
|
|
return shopSpecValueService.saveBatch(shopSpecValues);
|
|
|
}
|
|
|
+ //通过spec_id获取规格值
|
|
|
+ @Override
|
|
|
+ public RPCBaseResponse<List<ProductSpecVo>> getShopSpecSortVoList(String specId) {
|
|
|
+ //查询所有规格
|
|
|
+ LambdaQueryWrapper<ShopProductSpec> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ List<ShopProductSpec> specs = super.getListLink(queryWrapper);
|
|
|
+ //转换vo
|
|
|
+ List<ProductSpecVo> specs1 = BeanUtil.copyToList(specs, ProductSpecVo.class);
|
|
|
+ return new RPCBaseResponse<>(200, "SUCCESS", specs1);
|
|
|
+ }
|
|
|
+
|
|
|
+ //通过product_id添加规格,自动填充商品规格
|
|
|
+ @Override
|
|
|
+ public RPCBaseResponse<ProductSpecInsertShopSpecVo> insertOrUpdateProductSpecAndShopSpec(ProductSpecInsertShopSpecDto entity) {
|
|
|
+ // 1. 获取与 productId 相关的所有中间表信息
|
|
|
+ LambdaQueryWrapper<ShopProductSpec> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(ShopProductSpec::getProductId, entity.getProductId());
|
|
|
+
|
|
|
+ // 查询与 productId 相关的商品规格
|
|
|
+ List<ShopProductSpec> shopProductSpecs = shopProductSpecMapper.selectList(queryWrapper);
|
|
|
+
|
|
|
+ // 2. 检查是否找到了相关的商品规格
|
|
|
+ if (shopProductSpecs == null || shopProductSpecs.isEmpty()) {
|
|
|
+ return error("No specifications found for the provided productId");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. 将 ProductSpecInsertShopSpecDto 转换为 SpecDto
|
|
|
+ SpecDto specDto = new SpecDto();
|
|
|
+ specDto.setSpecId(entity.getSpecId());
|
|
|
+ specDto.setSpecName(entity.getSpecName());
|
|
|
+ specDto.setCountryId(entity.getCountryId());
|
|
|
+
|
|
|
+ // 4. 调用 shopSpecService 的 insertOrUpdate 方法新增或更新规格
|
|
|
+ RPCBaseResponse<ProductSpecInsertShopSpecVo> response = shopSpecService.insertOrUpdate(specDto);
|
|
|
+
|
|
|
+ System.out.println("response = " + response);
|
|
|
+ // 5. 检查是否成功新增或更新规格
|
|
|
+ if (response == null || response.getData() == null) {
|
|
|
+ return error("Failed to insert or update shop specification");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 6. 设置返回的规格 ID 和名称
|
|
|
+ ProductSpecInsertShopSpecVo specVo = response.getData();
|
|
|
+ entity.setSpecId(specVo.getId()); // 从返回结果中获取规格 ID
|
|
|
+ entity.setSpecName(specVo.getSpecName()); // 从返回结果中获取规格名称
|
|
|
+
|
|
|
+ // 7. 完成新增操作,保存或更新与商品相关的规格
|
|
|
+ ShopProductSpec newShopProductSpec = new ShopProductSpec();
|
|
|
+ newShopProductSpec.setProductId(Long.valueOf(entity.getProductId()));
|
|
|
+ newShopProductSpec.setSpecId(Long.valueOf(entity.getSpecId()));
|
|
|
+ newShopProductSpec.setSpecName(entity.getSpecName());
|
|
|
+
|
|
|
+ // 保存 ShopProductSpec
|
|
|
+ int result = shopProductSpecMapper.insert(newShopProductSpec); // 或者 update,根据业务逻辑
|
|
|
+
|
|
|
+ // 检查插入或更新结果
|
|
|
+ if (result <= 0) {
|
|
|
+ return error("Failed to associate product with specification");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 8. 返回最终的响应,返回之前的 response,或根据需要修改
|
|
|
+ return new RPCBaseResponse<>(200, "SUCCESS", specVo);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
}
|