后端编辑库存从AttrValue表取值

This commit is contained in:
xuwenbo
2020-09-08 21:02:51 +08:00
parent ef078b84ed
commit 9b0a952893
12 changed files with 93 additions and 155 deletions

View File

@ -134,6 +134,6 @@ public class YxStoreCombinationDto implements Serializable {
private List<FromatDetailDto> items; private List<FromatDetailDto> items;
//sku结果集 //sku结果集
private List<Map<String,Object>> attrs; private List<ProductFormatDto> attrs;
} }

View File

@ -131,6 +131,6 @@ public class YxStoreSeckillDto implements Serializable {
private List<FromatDetailDto> items; private List<FromatDetailDto> items;
//sku结果集 //sku结果集
private List<Map<String,Object>> attrs; private List<ProductFormatDto> attrs;
} }

View File

@ -58,13 +58,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.*;
import java.util.Comparator;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/** /**
@ -290,14 +284,14 @@ public class YxStoreCombinationServiceImpl extends BaseServiceImpl<YxStoreCombin
.attrHidden("") .attrHidden("")
.detail(ListUtil.toList("默认")) .detail(ListUtil.toList("默认"))
.build(); .build();
List<Map<String,Object>> attrs = resources.getAttrs(); List<ProductFormatDto> attrs = resources.getAttrs();
Map<String,Object> map = attrs.get(0); ProductFormatDto productFormatDto = attrs.get(0);
map.put("value1","规格"); productFormatDto.setValue1("规格");
map.put("detail", MapUtil.of(new String[][] { Map<String,String> map = new HashMap<>();
{"规格", "默认"} map.put("规格","默认");
})); productFormatDto.setDetail(map);
yxStoreProductAttrService.insertYxStoreProductAttr(ListUtil.toList(fromatDetailDto), yxStoreProductAttrService.insertYxStoreProductAttr(ListUtil.toList(fromatDetailDto),
ListUtil.toList(map),resources.getProductId()); ListUtil.toList(productFormatDto),resources.getProductId());
}else{ }else{
yxStoreProductAttrService.insertYxStoreProductAttr(resources.getItems(), yxStoreProductAttrService.insertYxStoreProductAttr(resources.getItems(),
resources.getAttrs(),resources.getProductId()); resources.getAttrs(),resources.getProductId());
@ -311,27 +305,27 @@ public class YxStoreCombinationServiceImpl extends BaseServiceImpl<YxStoreCombin
* @param attrs attrs * @param attrs attrs
* @return ProductResultDto * @return ProductResultDto
*/ */
private ProductResultDto computedProduct(List<Map<String,Object>> attrs){ private ProductResultDto computedProduct(List<ProductFormatDto> attrs){
//取最小价格 //取最小价格
Double minPrice = ListMapToListBean(attrs) Double minPrice = attrs
.stream() .stream()
.map(ProductFormatDto::getPinkPrice) .map(ProductFormatDto::getPinkPrice)
.min(Comparator.naturalOrder()) .min(Comparator.naturalOrder())
.orElse(0d); .orElse(0d);
Double minOtPrice = ListMapToListBean(attrs) Double minOtPrice = attrs
.stream() .stream()
.map(ProductFormatDto::getOtPrice) .map(ProductFormatDto::getOtPrice)
.min(Comparator.naturalOrder()) .min(Comparator.naturalOrder())
.orElse(0d); .orElse(0d);
Double minCost = ListMapToListBean(attrs) Double minCost = attrs
.stream() .stream()
.map(ProductFormatDto::getCost) .map(ProductFormatDto::getCost)
.min(Comparator.naturalOrder()) .min(Comparator.naturalOrder())
.orElse(0d); .orElse(0d);
//计算库存 //计算库存
Integer stock = ListMapToListBean(attrs) Integer stock = attrs
.stream() .stream()
.map(ProductFormatDto::getPinkStock) .map(ProductFormatDto::getPinkStock)
.reduce(Integer::sum) .reduce(Integer::sum)

View File

@ -268,14 +268,14 @@ public class YxStoreSeckillServiceImpl extends BaseServiceImpl<YxStoreSeckillMap
.attrHidden("") .attrHidden("")
.detail(ListUtil.toList("默认")) .detail(ListUtil.toList("默认"))
.build(); .build();
List<Map<String,Object>> attrs = resources.getAttrs(); List<ProductFormatDto> attrs = resources.getAttrs();
Map<String,Object> map = attrs.get(0); ProductFormatDto productFormatDto = attrs.get(0);
map.put("value1","规格"); productFormatDto.setValue1("规格");
map.put("detail", MapUtil.of(new String[][] { Map<String,String> map = new HashMap<>();
{"规格", "默认"} map.put("规格","默认");
})); productFormatDto.setDetail(map);
yxStoreProductAttrService.insertYxStoreProductAttr(ListUtil.toList(fromatDetailDto), yxStoreProductAttrService.insertYxStoreProductAttr(ListUtil.toList(fromatDetailDto),
ListUtil.toList(map),resources.getProductId()); ListUtil.toList(productFormatDto),resources.getProductId());
}else{ }else{
yxStoreProductAttrService.insertYxStoreProductAttr(resources.getItems(), yxStoreProductAttrService.insertYxStoreProductAttr(resources.getItems(),
resources.getAttrs(),resources.getProductId()); resources.getAttrs(),resources.getProductId());
@ -288,27 +288,27 @@ public class YxStoreSeckillServiceImpl extends BaseServiceImpl<YxStoreSeckillMap
* @param attrs attrs * @param attrs attrs
* @return ProductResultDto * @return ProductResultDto
*/ */
private ProductResultDto computedProduct(List<Map<String,Object>> attrs){ private ProductResultDto computedProduct(List<ProductFormatDto> attrs){
//取最小价格 //取最小价格
Double minPrice = ListMapToListBean(attrs) Double minPrice = attrs
.stream() .stream()
.map(ProductFormatDto::getSeckillPrice) .map(ProductFormatDto::getSeckillPrice)
.min(Comparator.naturalOrder()) .min(Comparator.naturalOrder())
.orElse(0d); .orElse(0d);
Double minOtPrice = ListMapToListBean(attrs) Double minOtPrice = attrs
.stream() .stream()
.map(ProductFormatDto::getOtPrice) .map(ProductFormatDto::getOtPrice)
.min(Comparator.naturalOrder()) .min(Comparator.naturalOrder())
.orElse(0d); .orElse(0d);
Double minCost = ListMapToListBean(attrs) Double minCost = attrs
.stream() .stream()
.map(ProductFormatDto::getCost) .map(ProductFormatDto::getCost)
.min(Comparator.naturalOrder()) .min(Comparator.naturalOrder())
.orElse(0d); .orElse(0d);
//计算库存 //计算库存
Integer stock = ListMapToListBean(attrs) Integer stock = attrs
.stream() .stream()
.map(ProductFormatDto::getSeckillStock) .map(ProductFormatDto::getSeckillStock)
.reduce(Integer::sum) .reduce(Integer::sum)
@ -326,17 +326,4 @@ public class YxStoreSeckillServiceImpl extends BaseServiceImpl<YxStoreSeckillMap
.build(); .build();
} }
/**
* mapTobean
* @param listMap listMap
* @return list
*/
private List<ProductFormatDto> ListMapToListBean(List<Map<String, Object>> listMap){
List<ProductFormatDto> list = new ArrayList<>();
// 循环遍历出map对象
for (Map<String, Object> m : listMap) {
list.add(BeanUtil.mapToBean(m,ProductFormatDto.class,true));
}
return list;
}
} }

View File

@ -12,6 +12,7 @@ import co.yixiang.common.service.BaseService;
import co.yixiang.modules.product.domain.YxStoreProductAttr; import co.yixiang.modules.product.domain.YxStoreProductAttr;
import co.yixiang.modules.product.domain.YxStoreProductAttrValue; import co.yixiang.modules.product.domain.YxStoreProductAttrValue;
import co.yixiang.modules.product.service.dto.FromatDetailDto; import co.yixiang.modules.product.service.dto.FromatDetailDto;
import co.yixiang.modules.product.service.dto.ProductFormatDto;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -60,6 +61,6 @@ public interface YxStoreProductAttrService extends BaseService<YxStoreProductAt
* @param attrs value * @param attrs value
* @param productId 商品id * @param productId 商品id
*/ */
void insertYxStoreProductAttr(List<FromatDetailDto> items, List<Map<String,Object>> attrs, void insertYxStoreProductAttr(List<FromatDetailDto> items, List<ProductFormatDto> attrs,
Long productId); Long productId);
} }

View File

@ -12,7 +12,7 @@ import java.util.Map;
/** /**
* 商品对象VO * 商品对象VO
* *
* @author hupeng * @author hupeng
* @date 2020-04-25 * @date 2020-04-25
*/ */
@ -138,7 +138,7 @@ public class ProductDto
private List<FromatDetailDto> items; private List<FromatDetailDto> items;
private List<Map<String,Object>> attrs; private List<ProductFormatDto> attrs;

View File

@ -13,7 +13,7 @@ import java.util.Map;
/** /**
* 商品对象DTO * 商品对象DTO
* *
* @author hupeng * @author hupeng
* @date 2020-04-23 * @date 2020-04-23
*/ */
@ -140,7 +140,7 @@ public class StoreProductDto
private List<FromatDetailDto> items; private List<FromatDetailDto> items;
//sku结果集 //sku结果集
private List<Map<String,Object>> attrs; private List<ProductFormatDto> attrs;
} }

View File

@ -73,7 +73,7 @@ public class YxStoreProductAttrServiceImpl extends BaseServiceImpl<StoreProductA
*/ */
@Override @Override
@Transactional @Transactional
public void insertYxStoreProductAttr(List<FromatDetailDto> items, List<Map<String,Object>> attrs, public void insertYxStoreProductAttr(List<FromatDetailDto> items, List<ProductFormatDto> attrs,
Long productId) Long productId)
{ {
List<YxStoreProductAttr> attrGroup = new ArrayList<>(); List<YxStoreProductAttr> attrGroup = new ArrayList<>();
@ -89,11 +89,8 @@ public class YxStoreProductAttrServiceImpl extends BaseServiceImpl<StoreProductA
List<YxStoreProductAttrValue> valueGroup = new ArrayList<>(); List<YxStoreProductAttrValue> valueGroup = new ArrayList<>();
for (Map<String, Object> m : attrs) { for (ProductFormatDto productFormatDto : attrs) {
ProductFormatDto productFormatDto = BeanUtil.mapToBean(m,ProductFormatDto.class,true);
// List<String> stringList = productFormatDto.getDetail().values()
// .stream()
// .collect(Collectors.toList());
if(productFormatDto.getPinkStock()>productFormatDto.getStock() || productFormatDto.getSeckillStock()>productFormatDto.getStock()){ if(productFormatDto.getPinkStock()>productFormatDto.getStock() || productFormatDto.getSeckillStock()>productFormatDto.getStock()){
throw new BadRequestException("活动商品库存不能大于原有商品库存"); throw new BadRequestException("活动商品库存不能大于原有商品库存");
} }

View File

@ -534,17 +534,17 @@ public class YxStoreProductServiceImpl extends BaseServiceImpl<StoreProductMappe
.attrHidden("") .attrHidden("")
.detail(ListUtil.toList("默认")) .detail(ListUtil.toList("默认"))
.build(); .build();
List<Map<String,Object>> attrs = storeProductDto.getAttrs(); List<ProductFormatDto> attrs = storeProductDto.getAttrs();
Map<String,Object> map = attrs.get(0); ProductFormatDto productFormatDto = attrs.get(0);
map.put("value1","规格"); productFormatDto.setValue1("规格");
map.put("detail", MapUtil.of(new String[][] { Map<String,String> map = new HashMap<>();
{"规格", "默认"} map.put("规格","默认");
})); productFormatDto.setDetail(map);
yxStoreProductAttrService.insertYxStoreProductAttr(ListUtil.toList(fromatDetailDto), yxStoreProductAttrService.insertYxStoreProductAttr(ListUtil.toList(fromatDetailDto),
ListUtil.toList(map),yxStoreProduct.getId()); ListUtil.toList(productFormatDto),storeProductDto.getId());
}else{ }else{
yxStoreProductAttrService.insertYxStoreProductAttr(storeProductDto.getItems(), yxStoreProductAttrService.insertYxStoreProductAttr(storeProductDto.getItems(),
storeProductDto.getAttrs(),yxStoreProduct.getId()); storeProductDto.getAttrs(),storeProductDto.getId());
} }
@ -688,27 +688,27 @@ public class YxStoreProductServiceImpl extends BaseServiceImpl<StoreProductMappe
* @param attrs attrs * @param attrs attrs
* @return ProductResultDto * @return ProductResultDto
*/ */
private ProductResultDto computedProduct(List<Map<String,Object>> attrs){ private ProductResultDto computedProduct(List<ProductFormatDto> attrs){
//取最小价格 //取最小价格
Double minPrice = ListMapToListBean(attrs) Double minPrice = attrs
.stream() .stream()
.map(ProductFormatDto::getPrice) .map(ProductFormatDto::getPrice)
.min(Comparator.naturalOrder()) .min(Comparator.naturalOrder())
.orElse(0d); .orElse(0d);
Double minOtPrice = ListMapToListBean(attrs) Double minOtPrice = attrs
.stream() .stream()
.map(ProductFormatDto::getOtPrice) .map(ProductFormatDto::getOtPrice)
.min(Comparator.naturalOrder()) .min(Comparator.naturalOrder())
.orElse(0d); .orElse(0d);
Double minCost = ListMapToListBean(attrs) Double minCost = attrs
.stream() .stream()
.map(ProductFormatDto::getCost) .map(ProductFormatDto::getCost)
.min(Comparator.naturalOrder()) .min(Comparator.naturalOrder())
.orElse(0d); .orElse(0d);
//计算库存 //计算库存
Integer stock = ListMapToListBean(attrs) Integer stock = attrs
.stream() .stream()
.map(ProductFormatDto::getStock) .map(ProductFormatDto::getStock)
.reduce(Integer::sum) .reduce(Integer::sum)

View File

@ -8,6 +8,7 @@ package co.yixiang.modules.activity.rest;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import co.yixiang.constant.ShopConstants; import co.yixiang.constant.ShopConstants;
import co.yixiang.dozer.service.IGenerator;
import co.yixiang.enums.SpecTypeEnum; import co.yixiang.enums.SpecTypeEnum;
import co.yixiang.logging.aop.log.Log; import co.yixiang.logging.aop.log.Log;
import co.yixiang.modules.activity.domain.YxStoreCombination; import co.yixiang.modules.activity.domain.YxStoreCombination;
@ -16,13 +17,16 @@ import co.yixiang.modules.activity.service.dto.YxStoreCombinationDto;
import co.yixiang.modules.activity.service.dto.YxStoreCombinationQueryCriteria; import co.yixiang.modules.activity.service.dto.YxStoreCombinationQueryCriteria;
import co.yixiang.modules.aop.ForbidSubmit; import co.yixiang.modules.aop.ForbidSubmit;
import co.yixiang.modules.product.domain.YxStoreProductAttrResult; import co.yixiang.modules.product.domain.YxStoreProductAttrResult;
import co.yixiang.modules.product.domain.YxStoreProductAttrValue;
import co.yixiang.modules.product.service.YxStoreProductAttrResultService; import co.yixiang.modules.product.service.YxStoreProductAttrResultService;
import co.yixiang.modules.product.service.YxStoreProductAttrValueService;
import co.yixiang.modules.product.service.YxStoreProductRuleService; import co.yixiang.modules.product.service.YxStoreProductRuleService;
import co.yixiang.modules.product.service.dto.ProductFormatDto; import co.yixiang.modules.product.service.dto.ProductFormatDto;
import co.yixiang.modules.template.domain.YxShippingTemplates; import co.yixiang.modules.template.domain.YxShippingTemplates;
import co.yixiang.modules.template.service.YxShippingTemplatesService; import co.yixiang.modules.template.service.YxShippingTemplatesService;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -60,11 +64,15 @@ public class StoreCombinationController {
private final YxShippingTemplatesService yxShippingTemplatesService; private final YxShippingTemplatesService yxShippingTemplatesService;
private final YxStoreProductRuleService yxStoreProductRuleService; private final YxStoreProductRuleService yxStoreProductRuleService;
private final YxStoreProductAttrResultService yxStoreProductAttrResultService; private final YxStoreProductAttrResultService yxStoreProductAttrResultService;
public StoreCombinationController(YxStoreCombinationService yxStoreCombinationService, YxShippingTemplatesService yxShippingTemplatesService, YxStoreProductRuleService yxStoreProductRuleService, YxStoreProductAttrResultService yxStoreProductAttrResultService) { private final YxStoreProductAttrValueService storeProductAttrValueService;
private final IGenerator generator;
public StoreCombinationController(YxStoreCombinationService yxStoreCombinationService, YxShippingTemplatesService yxShippingTemplatesService, YxStoreProductRuleService yxStoreProductRuleService, YxStoreProductAttrResultService yxStoreProductAttrResultService, YxStoreProductAttrValueService storeProductAttrValueService, IGenerator generator) {
this.yxStoreCombinationService = yxStoreCombinationService; this.yxStoreCombinationService = yxStoreCombinationService;
this.yxShippingTemplatesService = yxShippingTemplatesService; this.yxShippingTemplatesService = yxShippingTemplatesService;
this.yxStoreProductRuleService = yxStoreProductRuleService; this.yxStoreProductRuleService = yxStoreProductRuleService;
this.yxStoreProductAttrResultService = yxStoreProductAttrResultService; this.yxStoreProductAttrResultService = yxStoreProductAttrResultService;
this.storeProductAttrValueService = storeProductAttrValueService;
this.generator = generator;
} }
@Log("查询拼团") @Log("查询拼团")
@ -93,14 +101,6 @@ public class StoreCombinationController {
List<YxShippingTemplates> shippingTemplatesList = yxShippingTemplatesService.list(); List<YxShippingTemplates> shippingTemplatesList = yxShippingTemplatesService.list();
map.put("tempList", shippingTemplatesList); map.put("tempList", shippingTemplatesList);
// //商品分类
// List<YxStoreCategory> storeCategories = yxStoreCategoryService.lambdaQuery()
// .eq(YxStoreCategory::getIsShow, ShopCommonEnum.SHOW_1.getValue())
// .list();
// List<Map<String,Object>> cateList = new ArrayList<>();
// map.put("cateList", this.makeCate(storeCategories,cateList,0,1));
//商品规格 //商品规格
map.put("ruleList",yxStoreProductRuleService.list()); map.put("ruleList",yxStoreProductRuleService.list());
@ -118,33 +118,16 @@ public class StoreCombinationController {
.getOne(Wrappers.<YxStoreProductAttrResult>lambdaQuery() .getOne(Wrappers.<YxStoreProductAttrResult>lambdaQuery()
.eq(YxStoreProductAttrResult::getProductId,yxStoreCombination.getProductId()).last("limit 1")); .eq(YxStoreProductAttrResult::getProductId,yxStoreCombination.getProductId()).last("limit 1"));
JSONObject result = JSON.parseObject(storeProductAttrResult.getResult()); JSONObject result = JSON.parseObject(storeProductAttrResult.getResult());
List<YxStoreProductAttrValue> attrValues = storeProductAttrValueService.list(new LambdaQueryWrapper<YxStoreProductAttrValue>().eq(YxStoreProductAttrValue::getProductId, yxStoreCombination.getProductId()));
List<ProductFormatDto> productFormatDtos = generator.convert(attrValues, ProductFormatDto.class);
if(SpecTypeEnum.TYPE_1.getValue().equals(yxStoreCombination.getSpecType())){ if(SpecTypeEnum.TYPE_1.getValue().equals(yxStoreCombination.getSpecType())){
productDto.setAttr(new ProductFormatDto()); productDto.setAttr(new ProductFormatDto());
productDto.setAttrs(result.getObject("value",ArrayList.class)); productDto.setAttrs(productFormatDtos);
productDto.setItems(result.getObject("attr",ArrayList.class)); productDto.setItems(result.getObject("attr",ArrayList.class));
}else{ }else{
Map<String,Object> mapAttr = (Map<String,Object>)result.getObject("value",ArrayList.class).get(0);
ProductFormatDto productFormatDto = ProductFormatDto.builder()
.pic(mapAttr.get("pic").toString())
.price(Double.valueOf(mapAttr.get("price").toString()))
.pinkPrice(Double.valueOf(mapAttr.get("pink_price").toString()))
.cost(Double.valueOf(mapAttr.get("cost").toString()))
.otPrice(Double.valueOf(mapAttr.get("ot_price").toString()))
.barCode(mapAttr.get("bar_code").toString())
.weight(Double.valueOf(mapAttr.get("weight").toString()))
.volume(Double.valueOf(mapAttr.get("volume").toString()))
.brokerage(Double.valueOf(mapAttr.get("brokerage").toString()))
.brokerageTwo(Double.valueOf(mapAttr.get("brokerage_two").toString()))
.pinkPrice(Double.valueOf(mapAttr.get("pink_price").toString()))
.pinkStock(Integer.valueOf(mapAttr.get("pink_stock").toString()))
.stock(Integer.valueOf(mapAttr.get("stock").toString()))
.seckillPrice(Double.valueOf(mapAttr.get("seckill_price").toString()))
.seckillStock(Integer.valueOf(mapAttr.get("seckill_stock").toString()))
.build();
productDto.setAttr(productFormatDto);
}
productDto.setAttr(productFormatDtos.get(0));
}
map.put("productInfo",productDto); map.put("productInfo",productDto);

View File

@ -8,23 +8,25 @@ package co.yixiang.modules.activity.rest;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import co.yixiang.constant.ShopConstants; import co.yixiang.constant.ShopConstants;
import co.yixiang.dozer.service.IGenerator;
import co.yixiang.enums.SpecTypeEnum; import co.yixiang.enums.SpecTypeEnum;
import co.yixiang.logging.aop.log.Log; import co.yixiang.logging.aop.log.Log;
import co.yixiang.modules.activity.domain.YxStoreSeckill; import co.yixiang.modules.activity.domain.YxStoreSeckill;
import co.yixiang.modules.activity.domain.YxStoreSeckill;
import co.yixiang.modules.activity.service.YxStoreSeckillService; import co.yixiang.modules.activity.service.YxStoreSeckillService;
import co.yixiang.modules.activity.service.dto.YxStoreSeckillDto; import co.yixiang.modules.activity.service.dto.YxStoreSeckillDto;
import co.yixiang.modules.activity.service.dto.YxStoreSeckillDto;
import co.yixiang.modules.activity.service.dto.YxStoreSeckillQueryCriteria; import co.yixiang.modules.activity.service.dto.YxStoreSeckillQueryCriteria;
import co.yixiang.modules.aop.ForbidSubmit; import co.yixiang.modules.aop.ForbidSubmit;
import co.yixiang.modules.product.domain.YxStoreProductAttrResult; import co.yixiang.modules.product.domain.YxStoreProductAttrResult;
import co.yixiang.modules.product.domain.YxStoreProductAttrValue;
import co.yixiang.modules.product.service.YxStoreProductAttrResultService; import co.yixiang.modules.product.service.YxStoreProductAttrResultService;
import co.yixiang.modules.product.service.YxStoreProductAttrValueService;
import co.yixiang.modules.product.service.YxStoreProductRuleService; import co.yixiang.modules.product.service.YxStoreProductRuleService;
import co.yixiang.modules.product.service.dto.ProductFormatDto; import co.yixiang.modules.product.service.dto.ProductFormatDto;
import co.yixiang.modules.template.domain.YxShippingTemplates; import co.yixiang.modules.template.domain.YxShippingTemplates;
import co.yixiang.modules.template.service.YxShippingTemplatesService; import co.yixiang.modules.template.service.YxShippingTemplatesService;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -47,14 +49,20 @@ import java.util.*;
@RequestMapping("api") @RequestMapping("api")
public class StoreSeckillController { public class StoreSeckillController {
private final IGenerator generator;
private final YxStoreSeckillService yxStoreSeckillService; private final YxStoreSeckillService yxStoreSeckillService;
private final YxShippingTemplatesService yxShippingTemplatesService; private final YxShippingTemplatesService yxShippingTemplatesService;
private final YxStoreProductRuleService yxStoreProductRuleService; private final YxStoreProductRuleService yxStoreProductRuleService;
private final YxStoreProductAttrValueService storeProductAttrValueService;
private final YxStoreProductAttrResultService yxStoreProductAttrResultService; private final YxStoreProductAttrResultService yxStoreProductAttrResultService;
public StoreSeckillController(YxStoreSeckillService yxStoreSeckillService, YxShippingTemplatesService yxShippingTemplatesService, YxStoreProductRuleService yxStoreProductRuleService, YxStoreProductAttrResultService yxStoreProductAttrResultService) { public StoreSeckillController(IGenerator generator, YxStoreSeckillService yxStoreSeckillService, YxShippingTemplatesService yxShippingTemplatesService,
YxStoreProductRuleService yxStoreProductRuleService, YxStoreProductAttrValueService storeProductAttrValueService,
YxStoreProductAttrResultService yxStoreProductAttrResultService) {
this.generator = generator;
this.yxStoreSeckillService = yxStoreSeckillService; this.yxStoreSeckillService = yxStoreSeckillService;
this.yxShippingTemplatesService = yxShippingTemplatesService; this.yxShippingTemplatesService = yxShippingTemplatesService;
this.yxStoreProductRuleService = yxStoreProductRuleService; this.yxStoreProductRuleService = yxStoreProductRuleService;
this.storeProductAttrValueService = storeProductAttrValueService;
this.yxStoreProductAttrResultService = yxStoreProductAttrResultService; this.yxStoreProductAttrResultService = yxStoreProductAttrResultService;
} }
@ -108,14 +116,6 @@ public class StoreSeckillController {
List<YxShippingTemplates> shippingTemplatesList = yxShippingTemplatesService.list(); List<YxShippingTemplates> shippingTemplatesList = yxShippingTemplatesService.list();
map.put("tempList", shippingTemplatesList); map.put("tempList", shippingTemplatesList);
// //商品分类
// List<YxStoreCategory> storeCategories = yxStoreCategoryService.lambdaQuery()
// .eq(YxStoreCategory::getIsShow, ShopCommonEnum.SHOW_1.getValue())
// .list();
// List<Map<String,Object>> cateList = new ArrayList<>();
// map.put("cateList", this.makeCate(storeCategories,cateList,0,1));
//商品规格 //商品规格
map.put("ruleList",yxStoreProductRuleService.list()); map.put("ruleList",yxStoreProductRuleService.list());
@ -134,30 +134,15 @@ public class StoreSeckillController {
.eq(YxStoreProductAttrResult::getProductId,yxStoreSeckill.getProductId()).last("limit 1")); .eq(YxStoreProductAttrResult::getProductId,yxStoreSeckill.getProductId()).last("limit 1"));
JSONObject result = JSON.parseObject(storeProductAttrResult.getResult()); JSONObject result = JSON.parseObject(storeProductAttrResult.getResult());
List<YxStoreProductAttrValue> attrValues = storeProductAttrValueService.list(new LambdaQueryWrapper<YxStoreProductAttrValue>().eq(YxStoreProductAttrValue::getProductId, yxStoreSeckill.getProductId()));
List<ProductFormatDto> productFormatDtos = generator.convert(attrValues, ProductFormatDto.class);
if(SpecTypeEnum.TYPE_1.getValue().equals(yxStoreSeckill.getSpecType())){ if(SpecTypeEnum.TYPE_1.getValue().equals(yxStoreSeckill.getSpecType())){
productDto.setAttr(new ProductFormatDto()); productDto.setAttr(new ProductFormatDto());
productDto.setAttrs(result.getObject("value", ArrayList.class)); productDto.setAttrs(productFormatDtos);
productDto.setItems(result.getObject("attr",ArrayList.class)); productDto.setItems(result.getObject("attr",ArrayList.class));
}else{ }else{
Map<String,Object> mapAttr = (Map<String,Object>)result.getObject("value",ArrayList.class).get(0); productDto.setAttr(productFormatDtos.get(0));
ProductFormatDto productFormatDto = ProductFormatDto.builder()
.pic(mapAttr.get("pic").toString())
.price(Double.valueOf(mapAttr.get("price").toString()))
.pinkPrice(Double.valueOf(mapAttr.get("pink_price").toString()))
.cost(Double.valueOf(mapAttr.get("cost").toString()))
.otPrice(Double.valueOf(mapAttr.get("ot_price").toString()))
.barCode(mapAttr.get("bar_code").toString())
.weight(Double.valueOf(mapAttr.get("weight").toString()))
.volume(Double.valueOf(mapAttr.get("volume").toString()))
.stock(Integer.valueOf(mapAttr.get("stock").toString()))
.brokerage(Double.valueOf(mapAttr.get("brokerage").toString()))
.brokerageTwo(Double.valueOf(mapAttr.get("brokerage_two").toString()))
.pinkPrice(Double.valueOf(mapAttr.get("pink_price").toString()))
.pinkStock(Integer.valueOf(mapAttr.get("pink_stock").toString()))
.seckillPrice(Double.valueOf(mapAttr.get("seckill_price").toString()))
.seckillStock(Integer.valueOf(mapAttr.get("seckill_stock").toString()))
.build();
productDto.setAttr(productFormatDto);
} }

View File

@ -10,6 +10,7 @@ package co.yixiang.modules.product.rest;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import co.yixiang.constant.ShopConstants; import co.yixiang.constant.ShopConstants;
import co.yixiang.dozer.service.IGenerator;
import co.yixiang.enums.ShopCommonEnum; import co.yixiang.enums.ShopCommonEnum;
import co.yixiang.enums.SpecTypeEnum; import co.yixiang.enums.SpecTypeEnum;
import co.yixiang.logging.aop.log.Log; import co.yixiang.logging.aop.log.Log;
@ -18,7 +19,9 @@ import co.yixiang.modules.category.domain.YxStoreCategory;
import co.yixiang.modules.category.service.YxStoreCategoryService; import co.yixiang.modules.category.service.YxStoreCategoryService;
import co.yixiang.modules.product.domain.YxStoreProduct; import co.yixiang.modules.product.domain.YxStoreProduct;
import co.yixiang.modules.product.domain.YxStoreProductAttrResult; import co.yixiang.modules.product.domain.YxStoreProductAttrResult;
import co.yixiang.modules.product.domain.YxStoreProductAttrValue;
import co.yixiang.modules.product.service.YxStoreProductAttrResultService; import co.yixiang.modules.product.service.YxStoreProductAttrResultService;
import co.yixiang.modules.product.service.YxStoreProductAttrValueService;
import co.yixiang.modules.product.service.YxStoreProductRuleService; import co.yixiang.modules.product.service.YxStoreProductRuleService;
import co.yixiang.modules.product.service.YxStoreProductService; import co.yixiang.modules.product.service.YxStoreProductService;
import co.yixiang.modules.product.service.dto.ProductDto; import co.yixiang.modules.product.service.dto.ProductDto;
@ -29,6 +32,7 @@ import co.yixiang.modules.template.domain.YxShippingTemplates;
import co.yixiang.modules.template.service.YxShippingTemplatesService; import co.yixiang.modules.template.service.YxShippingTemplatesService;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -68,17 +72,20 @@ public class StoreProductController {
private final YxShippingTemplatesService yxShippingTemplatesService; private final YxShippingTemplatesService yxShippingTemplatesService;
private final YxStoreProductRuleService yxStoreProductRuleService; private final YxStoreProductRuleService yxStoreProductRuleService;
private final YxStoreProductAttrResultService yxStoreProductAttrResultService; private final YxStoreProductAttrResultService yxStoreProductAttrResultService;
private final YxStoreProductAttrValueService storeProductAttrValueService;
private final IGenerator generator;
public StoreProductController(YxStoreProductService yxStoreProductService, public StoreProductController(YxStoreProductService yxStoreProductService,
YxStoreCategoryService yxStoreCategoryService, YxStoreCategoryService yxStoreCategoryService,
YxShippingTemplatesService yxShippingTemplatesService, YxShippingTemplatesService yxShippingTemplatesService,
YxStoreProductRuleService yxStoreProductRuleService, YxStoreProductRuleService yxStoreProductRuleService,
YxStoreProductAttrResultService yxStoreProductAttrResultService) { YxStoreProductAttrResultService yxStoreProductAttrResultService, YxStoreProductAttrValueService storeProductAttrValueService, IGenerator generator) {
this.yxStoreProductService = yxStoreProductService; this.yxStoreProductService = yxStoreProductService;
this.yxStoreCategoryService = yxStoreCategoryService; this.yxStoreCategoryService = yxStoreCategoryService;
this.yxShippingTemplatesService = yxShippingTemplatesService; this.yxShippingTemplatesService = yxShippingTemplatesService;
this.yxStoreProductRuleService = yxStoreProductRuleService; this.yxStoreProductRuleService = yxStoreProductRuleService;
this.yxStoreProductAttrResultService = yxStoreProductAttrResultService; this.yxStoreProductAttrResultService = yxStoreProductAttrResultService;
this.storeProductAttrValueService = storeProductAttrValueService;
this.generator = generator;
} }
@Log("查询商品") @Log("查询商品")
@ -178,32 +185,16 @@ public class StoreProductController {
.getOne(Wrappers.<YxStoreProductAttrResult>lambdaQuery() .getOne(Wrappers.<YxStoreProductAttrResult>lambdaQuery()
.eq(YxStoreProductAttrResult::getProductId,id).last("limit 1")); .eq(YxStoreProductAttrResult::getProductId,id).last("limit 1"));
JSONObject result = JSON.parseObject(storeProductAttrResult.getResult()); JSONObject result = JSON.parseObject(storeProductAttrResult.getResult());
List<YxStoreProductAttrValue> attrValues = storeProductAttrValueService.list(new LambdaQueryWrapper<YxStoreProductAttrValue>().eq(YxStoreProductAttrValue::getProductId, yxStoreProduct.getId()));
List<ProductFormatDto> productFormatDtos = generator.convert(attrValues, ProductFormatDto.class);
if(SpecTypeEnum.TYPE_1.getValue().equals(yxStoreProduct.getSpecType())){ if(SpecTypeEnum.TYPE_1.getValue().equals(yxStoreProduct.getSpecType())){
productDto.setAttr(new ProductFormatDto()); productDto.setAttr(new ProductFormatDto());
productDto.setAttrs(result.getObject("value",ArrayList.class)); productDto.setAttrs(productFormatDtos);
productDto.setItems(result.getObject("attr",ArrayList.class)); productDto.setItems(result.getObject("attr",ArrayList.class));
}else{ }else{
Map<String,Object> mapAttr = (Map<String,Object>)result.getObject("value",ArrayList.class).get(0);
ProductFormatDto productFormatDto = ProductFormatDto.builder()
.pic(mapAttr.get("pic").toString())
.price(Double.valueOf(mapAttr.get("price").toString()))
.cost(Double.valueOf(mapAttr.get("cost").toString()))
.otPrice(Double.valueOf(mapAttr.get("ot_price").toString()))
.stock(Integer.valueOf(mapAttr.get("stock").toString()))
.barCode(mapAttr.get("bar_code").toString())
.weight(Double.valueOf(mapAttr.get("weight").toString()))
.volume(Double.valueOf(mapAttr.get("volume").toString()))
.brokerage(Double.valueOf(mapAttr.get("brokerage").toString()))
.brokerageTwo(Double.valueOf(mapAttr.get("brokerage_two").toString()))
.pinkPrice(Double.valueOf(mapAttr.get("pink_price").toString()))
.pinkStock(Integer.valueOf(mapAttr.get("pink_stock").toString()))
.seckillPrice(Double.valueOf(mapAttr.get("seckill_price").toString()))
.seckillStock(Integer.valueOf(mapAttr.get("seckill_stock").toString()))
.build();
productDto.setAttr(productFormatDto);
}
productDto.setAttr(productFormatDtos.get(0));
}
map.put("productInfo",productDto); map.put("productInfo",productDto);