diff --git a/yshop-app/src/main/java/co/yixiang/modules/services/AuthService.java b/yshop-app/src/main/java/co/yixiang/modules/services/AuthService.java index 5e306191..9e3a85e8 100644 --- a/yshop-app/src/main/java/co/yixiang/modules/services/AuthService.java +++ b/yshop-app/src/main/java/co/yixiang/modules/services/AuthService.java @@ -60,7 +60,6 @@ import java.util.List; public class AuthService { private final YxUserService userService; - private final RedisUtils redisUtil; private final RedisUtils redisUtils; private static Integer expiredTimeIn; @@ -86,8 +85,8 @@ public class AuthService { String spread = loginParam.getSpread(); try { //读取redis配置 - String appId = redisUtil.getY(ShopKeyUtils.getWxAppAppId()); - String secret = redisUtil.getY(ShopKeyUtils.getWxAppSecret()); + String appId = redisUtils.getY(ShopKeyUtils.getWxAppAppId()); + String secret = redisUtils.getY(ShopKeyUtils.getWxAppSecret()); if (StrUtil.isBlank(appId) || StrUtil.isBlank(secret)) { throw new YshopException("请先配置小程序"); } diff --git a/yshop-app/src/main/java/co/yixiang/modules/shop/rest/IndexController.java b/yshop-app/src/main/java/co/yixiang/modules/shop/rest/IndexController.java index e37eb83a..8ed18ac4 100644 --- a/yshop-app/src/main/java/co/yixiang/modules/shop/rest/IndexController.java +++ b/yshop-app/src/main/java/co/yixiang/modules/shop/rest/IndexController.java @@ -17,6 +17,7 @@ import co.yixiang.enums.ProductEnum; import co.yixiang.modules.activity.service.YxStoreCombinationService; import co.yixiang.modules.activity.service.YxStoreSeckillService; import co.yixiang.modules.activity.vo.YxStoreSeckillQueryVo; +import co.yixiang.modules.mp.service.YxWechatLiveService; import co.yixiang.modules.product.service.YxStoreProductService; import co.yixiang.modules.product.vo.YxSystemStoreQueryVo; import co.yixiang.modules.shop.param.YxSystemStoreQueryParam; @@ -60,6 +61,7 @@ public class IndexController { private final YxSystemStoreService systemStoreService; private final YxStoreCombinationService storeCombinationService; private final YxStoreSeckillService storeSeckillService; + private final YxWechatLiveService wechatLiveService; @Cacheable(cacheNames = ShopConstants.YSHOP_REDIS_INDEX_KEY) @GetMapping("/index") @@ -76,6 +78,7 @@ public class IndexController { .menus(systemGroupDataService.getDatas(ShopConstants.YSHOP_HOME_MENUS)) .roll(systemGroupDataService.getDatas(ShopConstants.YSHOP_HOME_ROLL_NEWS)) .seckillList(storeSeckillService.getList(1, 4)) + .liveList(wechatLiveService.getList(1,4,0)) .build(); return ApiResult.ok(indexVo); } diff --git a/yshop-app/src/main/java/co/yixiang/modules/shop/vo/IndexVo.java b/yshop-app/src/main/java/co/yixiang/modules/shop/vo/IndexVo.java index 1597eaaf..fabad305 100644 --- a/yshop-app/src/main/java/co/yixiang/modules/shop/vo/IndexVo.java +++ b/yshop-app/src/main/java/co/yixiang/modules/shop/vo/IndexVo.java @@ -2,6 +2,7 @@ package co.yixiang.modules.shop.vo; import co.yixiang.modules.activity.vo.YxStoreCombinationQueryVo; import co.yixiang.modules.activity.vo.YxStoreSeckillQueryVo; +import co.yixiang.modules.mp.service.dto.YxWechatLiveDto; import co.yixiang.modules.product.vo.YxStoreProductQueryVo; import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.ApiModel; @@ -49,5 +50,8 @@ public class IndexVo { //首发新品->秒杀 @ApiModelProperty("首发新品->秒杀") private List seckillList; + //直播间信息 + @ApiModelProperty("直播间") + private List liveList; } diff --git a/yshop-mall/src/main/java/co/yixiang/modules/activity/service/YxStoreCombinationService.java b/yshop-mall/src/main/java/co/yixiang/modules/activity/service/YxStoreCombinationService.java index 96ff1606..9343ed9f 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/activity/service/YxStoreCombinationService.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/activity/service/YxStoreCombinationService.java @@ -29,24 +29,6 @@ public interface YxStoreCombinationService extends BaseService{ - /** - * 退回库存减少销量 - * @param num 数量 - * @param seckillId 秒杀产品id - */ - void incStockDecSales(int num,Long seckillId); - - /** - * 减库存增加销量 - * @param num 数量 - * @param seckillId 秒杀产品id - */ - void decStockIncSales(int num,Long seckillId); - - //YxStoreSeckill getSeckill(int id); /** * 产品详情 diff --git a/yshop-mall/src/main/java/co/yixiang/modules/activity/service/dto/YxStoreCombinationDto.java b/yshop-mall/src/main/java/co/yixiang/modules/activity/service/dto/YxStoreCombinationDto.java index 9b40b0f6..cb0e647c 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/activity/service/dto/YxStoreCombinationDto.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/activity/service/dto/YxStoreCombinationDto.java @@ -134,6 +134,6 @@ public class YxStoreCombinationDto implements Serializable { private List items; //sku结果集 - private List> attrs; + private List attrs; } diff --git a/yshop-mall/src/main/java/co/yixiang/modules/activity/service/dto/YxStoreSeckillDto.java b/yshop-mall/src/main/java/co/yixiang/modules/activity/service/dto/YxStoreSeckillDto.java index 5619eb87..1a854d8f 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/activity/service/dto/YxStoreSeckillDto.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/activity/service/dto/YxStoreSeckillDto.java @@ -131,6 +131,6 @@ public class YxStoreSeckillDto implements Serializable { private List items; //sku结果集 - private List> attrs; + private List attrs; } diff --git a/yshop-mall/src/main/java/co/yixiang/modules/activity/service/impl/YxStoreCombinationServiceImpl.java b/yshop-mall/src/main/java/co/yixiang/modules/activity/service/impl/YxStoreCombinationServiceImpl.java index d1ee5804..20d4786c 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/activity/service/impl/YxStoreCombinationServiceImpl.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/activity/service/impl/YxStoreCombinationServiceImpl.java @@ -58,13 +58,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - +import java.util.*; /** @@ -97,52 +91,6 @@ public class YxStoreCombinationServiceImpl extends BaseServiceImpl wrapper = new QueryWrapper<>(); - wrapper.eq("id",id).eq("is_del",0).eq("is_show",1); - return yxStoreCombinationMapper.selectOne(wrapper); - } - -// /** -// * 判断库存是否足够 -// * @param combinationId 平团产品id -// * @param cartNum 购物车数量 -// * @return boolean -// */ -// @Override -// public boolean judgeCombinationStock(Long combinationId, Integer cartNum) { -// YxStoreCombination storeCombination = this.getById(combinationId); -// return storeCombination.getStock() >= cartNum; -// } - -// @Override -// public YxStoreCombinationQueryVo getCombinationT(int id) { -// return yxStoreCombinationMapper.getCombDetail(id); -// } /** * 获取拼团详情 @@ -322,6 +270,7 @@ public class YxStoreCombinationServiceImpl extends BaseServiceImpl> attrs = resources.getAttrs(); - Map map = attrs.get(0); - map.put("value1","规格"); - map.put("detail", MapUtil.of(new String[][] { - {"规格", "默认"} - })); + List attrs = resources.getAttrs(); + ProductFormatDto productFormatDto = attrs.get(0); + productFormatDto.setValue1("规格"); + Map map = new HashMap<>(); + map.put("规格","默认"); + productFormatDto.setDetail(map); yxStoreProductAttrService.insertYxStoreProductAttr(ListUtil.toList(fromatDetailDto), - ListUtil.toList(map),resources.getProductId()); + ListUtil.toList(productFormatDto),resources.getProductId()); }else{ yxStoreProductAttrService.insertYxStoreProductAttr(resources.getItems(), resources.getAttrs(),resources.getProductId()); @@ -357,27 +306,27 @@ public class YxStoreCombinationServiceImpl extends BaseServiceImpl> attrs){ + private ProductResultDto computedProduct(List attrs){ //取最小价格 - Double minPrice = ListMapToListBean(attrs) + Double minPrice = attrs .stream() .map(ProductFormatDto::getPinkPrice) .min(Comparator.naturalOrder()) .orElse(0d); - Double minOtPrice = ListMapToListBean(attrs) + Double minOtPrice = attrs .stream() .map(ProductFormatDto::getOtPrice) .min(Comparator.naturalOrder()) .orElse(0d); - Double minCost = ListMapToListBean(attrs) + Double minCost = attrs .stream() .map(ProductFormatDto::getCost) .min(Comparator.naturalOrder()) .orElse(0d); //计算库存 - Integer stock = ListMapToListBean(attrs) + Integer stock = attrs .stream() .map(ProductFormatDto::getPinkStock) .reduce(Integer::sum) diff --git a/yshop-mall/src/main/java/co/yixiang/modules/activity/service/impl/YxStoreSeckillServiceImpl.java b/yshop-mall/src/main/java/co/yixiang/modules/activity/service/impl/YxStoreSeckillServiceImpl.java index 66fa4b95..2cd3ffbc 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/activity/service/impl/YxStoreSeckillServiceImpl.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/activity/service/impl/YxStoreSeckillServiceImpl.java @@ -78,28 +78,7 @@ public class YxStoreSeckillServiceImpl extends BaseServiceImpl> attrs = resources.getAttrs(); - Map map = attrs.get(0); - map.put("value1","规格"); - map.put("detail", MapUtil.of(new String[][] { - {"规格", "默认"} - })); + List attrs = resources.getAttrs(); + ProductFormatDto productFormatDto = attrs.get(0); + productFormatDto.setValue1("规格"); + Map map = new HashMap<>(); + map.put("规格","默认"); + productFormatDto.setDetail(map); yxStoreProductAttrService.insertYxStoreProductAttr(ListUtil.toList(fromatDetailDto), - ListUtil.toList(map),resources.getProductId()); + ListUtil.toList(productFormatDto),resources.getProductId()); }else{ yxStoreProductAttrService.insertYxStoreProductAttr(resources.getItems(), resources.getAttrs(),resources.getProductId()); @@ -309,27 +289,27 @@ public class YxStoreSeckillServiceImpl extends BaseServiceImpl> attrs){ + private ProductResultDto computedProduct(List attrs){ //取最小价格 - Double minPrice = ListMapToListBean(attrs) + Double minPrice = attrs .stream() .map(ProductFormatDto::getSeckillPrice) .min(Comparator.naturalOrder()) .orElse(0d); - Double minOtPrice = ListMapToListBean(attrs) + Double minOtPrice = attrs .stream() .map(ProductFormatDto::getOtPrice) .min(Comparator.naturalOrder()) .orElse(0d); - Double minCost = ListMapToListBean(attrs) + Double minCost = attrs .stream() .map(ProductFormatDto::getCost) .min(Comparator.naturalOrder()) .orElse(0d); //计算库存 - Integer stock = ListMapToListBean(attrs) + Integer stock = attrs .stream() .map(ProductFormatDto::getSeckillStock) .reduce(Integer::sum) @@ -347,17 +327,4 @@ public class YxStoreSeckillServiceImpl extends BaseServiceImpl ListMapToListBean(List> listMap){ - List list = new ArrayList<>(); - // 循环遍历出map对象 - for (Map m : listMap) { - list.add(BeanUtil.mapToBean(m,ProductFormatDto.class,true)); - } - return list; - } } diff --git a/yshop-mall/src/main/java/co/yixiang/modules/activity/service/mapper/YxStoreCombinationMapper.java b/yshop-mall/src/main/java/co/yixiang/modules/activity/service/mapper/YxStoreCombinationMapper.java index 643bc329..e77bcfbd 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/activity/service/mapper/YxStoreCombinationMapper.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/activity/service/mapper/YxStoreCombinationMapper.java @@ -26,13 +26,6 @@ import java.util.List; */ @Repository public interface YxStoreCombinationMapper extends CoreMapper { - @Update("update yx_store_combination set stock=stock-#{num}, sales=sales+#{num}" + - " where id=#{combinationId} and stock >= #{num}") - int decStockIncSales(@Param("num") int num, @Param("combinationId") Long combinationId); - - @Update("update yx_store_combination set stock=stock+#{num}, sales=sales-#{num}" + - " where id=#{combinationId}") - int incStockDecSales(@Param("num") int num,@Param("combinationId") Long combinationId); @Select("SELECT c.id,c.effective_time as effectiveTime,c.image,c.people,c.price, s.sales as sales," + "c.title,c.unit_name as unitName,s.price as productPrice FROM yx_store_combination c " + diff --git a/yshop-mall/src/main/java/co/yixiang/modules/activity/service/mapper/YxStoreSeckillMapper.java b/yshop-mall/src/main/java/co/yixiang/modules/activity/service/mapper/YxStoreSeckillMapper.java index 208cf077..b774c41c 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/activity/service/mapper/YxStoreSeckillMapper.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/activity/service/mapper/YxStoreSeckillMapper.java @@ -22,13 +22,6 @@ import org.springframework.stereotype.Repository; */ @Repository public interface YxStoreSeckillMapper extends CoreMapper { - @Update("update yx_store_seckill set stock=stock+#{num}, sales=sales-#{num}" + - " where id=#{seckillId}") - int incStockDecSales(@Param("num") int num, @Param("seckillId") Long seckillId); - - @Update("update yx_store_seckill set stock=stock-#{num}, sales=sales+#{num}" + - " where id=#{seckillId} and stock >= #{num}") - int decStockIncSales(@Param("num") int num,@Param("seckillId") Long seckillId); @Select("SELECT c.id,c.image,c.price,c.title as storeName,c.is_show as isShow,c.cost," + "c.is_postage as isPostage,c.postage,c.sales,c.stock,c.is_del as isDel" + diff --git a/yshop-mall/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java b/yshop-mall/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java index f820713d..34061a6b 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java @@ -639,9 +639,6 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl wrapperLastWeek = new QueryWrapper<>(); + wrapperLastWeek.lambda() + .lt(YxStoreOrder::getPayTime,today) + .ge(YxStoreOrder::getPayTime,lastWeek) + .eq(YxStoreOrder::getPaid,OrderInfoEnum.PAY_STATUS_1.getValue()) + .eq(YxStoreOrder::getRefundStatus,OrderInfoEnum.REFUND_STATUS_0.getValue()); + orderTimeDataVo.setLastWeekPrice(yxStoreOrderMapper.todayPrice(wrapperLastWeek)); + //上周订单数 + orderTimeDataVo.setLastWeekCount(yxStoreOrderMapper.selectCount(wrapperLastWeek)); + return orderTimeDataVo; } @@ -1581,7 +1590,7 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl 0){ productService.decProductStock(storeCartVO.getCartNum(),storeCartVO.getProductId(), - storeCartVO.getProductAttrUnique(),combinationId,"seckill"); + storeCartVO.getProductAttrUnique(),seckillId,"seckill"); }else if(bargainId != null && bargainId > 0){ storeBargainService.decStockIncSales(storeCartVO.getCartNum(),bargainId); } else { @@ -1673,14 +1682,14 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl 0){//拼团 - combinationService.incStockDecSales(cart.getCartNum(),order.getCombinationId()); + productService.incProductStock(cart.getCartNum(),cart.getProductId(),cart.getProductAttrUnique(),order.getCombinationId(),"combination"); }else if(order.getSeckillId() != null && order.getSeckillId() > 0){//秒杀 - storeSeckillService.incStockDecSales(cart.getCartNum(),order.getSeckillId()); + productService.incProductStock(cart.getCartNum(),cart.getProductId(),cart.getProductAttrUnique(),order.getSeckillId(),"seckill"); }else if(order.getBargainId() != null && order.getBargainId() > 0){//砍价 storeBargainService.incStockDecSales(cart.getCartNum(),order.getBargainId()); }else{ productService.incProductStock(cart.getCartNum(),cart.getProductId() - ,cart.getProductAttrUnique()); + ,cart.getProductAttrUnique(),0L,null); } } diff --git a/yshop-mall/src/main/java/co/yixiang/modules/order/vo/ShoperOrderTimeDataVo.java b/yshop-mall/src/main/java/co/yixiang/modules/order/vo/ShoperOrderTimeDataVo.java index 6b2f5724..68aa5f1c 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/order/vo/ShoperOrderTimeDataVo.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/order/vo/ShoperOrderTimeDataVo.java @@ -11,10 +11,28 @@ import java.io.Serializable; **/ @Data public class ShoperOrderTimeDataVo implements Serializable { - private Double todayPrice; //今日成交额 - private Integer todayCount; //今日订单数 - private Double proPrice; //昨日成交额 - private Integer proCount;//昨日订单数 - private Double monthPrice;//本月成交额 - private Integer monthCount;//本月订单数 + + /**今日成交额*/ + private Double todayPrice; + + /**今日订单数*/ + private Integer todayCount; + + /**昨日成交额*/ + private Double proPrice; + + /**昨日订单数*/ + private Integer proCount; + + /**本月成交额*/ + private Double monthPrice; + + /**本月订单数*/ + private Integer monthCount; + + /**上周订单数*/ + private Integer lastWeekCount; + + /**上周成交额*/ + private Double lastWeekPrice; } diff --git a/yshop-mall/src/main/java/co/yixiang/modules/product/service/YxStoreProductAttrService.java b/yshop-mall/src/main/java/co/yixiang/modules/product/service/YxStoreProductAttrService.java index 18364384..a4d541f5 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/product/service/YxStoreProductAttrService.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/product/service/YxStoreProductAttrService.java @@ -12,6 +12,7 @@ import co.yixiang.common.service.BaseService; import co.yixiang.modules.product.domain.YxStoreProductAttr; import co.yixiang.modules.product.domain.YxStoreProductAttrValue; import co.yixiang.modules.product.service.dto.FromatDetailDto; +import co.yixiang.modules.product.service.dto.ProductFormatDto; import java.util.List; import java.util.Map; @@ -29,7 +30,7 @@ public interface YxStoreProductAttrService extends BaseService items, List> attrs, + void insertYxStoreProductAttr(List items, List attrs, Long productId); } diff --git a/yshop-mall/src/main/java/co/yixiang/modules/product/service/YxStoreProductService.java b/yshop-mall/src/main/java/co/yixiang/modules/product/service/YxStoreProductService.java index 913c6701..f857ec6c 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/product/service/YxStoreProductService.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/product/service/YxStoreProductService.java @@ -35,7 +35,7 @@ public interface YxStoreProductService extends BaseService{ * @param productId 商品id * @param unique sku唯一值 */ - void incProductStock(Integer num, Long productId, String unique); + void incProductStock(Integer num, Long productId, String unique,Long activityId, String type); /** * 减少库存与增加销量 diff --git a/yshop-mall/src/main/java/co/yixiang/modules/product/service/dto/ProductDto.java b/yshop-mall/src/main/java/co/yixiang/modules/product/service/dto/ProductDto.java index 7be3f323..dd3250ab 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/product/service/dto/ProductDto.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/product/service/dto/ProductDto.java @@ -12,7 +12,7 @@ import java.util.Map; /** * 商品对象VO - * + * * @author hupeng * @date 2020-04-25 */ @@ -138,7 +138,7 @@ public class ProductDto private List items; - private List> attrs; + private List attrs; diff --git a/yshop-mall/src/main/java/co/yixiang/modules/product/service/dto/StoreProductDto.java b/yshop-mall/src/main/java/co/yixiang/modules/product/service/dto/StoreProductDto.java index fb65a4ae..6434025e 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/product/service/dto/StoreProductDto.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/product/service/dto/StoreProductDto.java @@ -13,7 +13,7 @@ import java.util.Map; /** * 商品对象DTO - * + * * @author hupeng * @date 2020-04-23 */ @@ -140,7 +140,7 @@ public class StoreProductDto private List items; //sku结果集 - private List> attrs; + private List attrs; } diff --git a/yshop-mall/src/main/java/co/yixiang/modules/product/service/impl/YxStoreProductAttrServiceImpl.java b/yshop-mall/src/main/java/co/yixiang/modules/product/service/impl/YxStoreProductAttrServiceImpl.java index b87ff2c8..bb72c42f 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/product/service/impl/YxStoreProductAttrServiceImpl.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/product/service/impl/YxStoreProductAttrServiceImpl.java @@ -16,6 +16,7 @@ import co.yixiang.api.BusinessException; import co.yixiang.api.YshopException; import co.yixiang.common.service.impl.BaseServiceImpl; import co.yixiang.dozer.service.IGenerator; +import co.yixiang.exception.BadRequestException; import co.yixiang.modules.product.domain.YxStoreProductAttr; import co.yixiang.modules.product.domain.YxStoreProductAttrValue; import co.yixiang.modules.product.service.YxStoreProductAttrResultService; @@ -72,7 +73,7 @@ public class YxStoreProductAttrServiceImpl extends BaseServiceImpl items, List> attrs, + public void insertYxStoreProductAttr(List items, List attrs, Long productId) { List attrGroup = new ArrayList<>(); @@ -88,11 +89,11 @@ public class YxStoreProductAttrServiceImpl extends BaseServiceImpl valueGroup = new ArrayList<>(); - for (Map m : attrs) { - ProductFormatDto productFormatDto = BeanUtil.mapToBean(m,ProductFormatDto.class,true); -// List stringList = productFormatDto.getDetail().values() -// .stream() -// .collect(Collectors.toList()); + for (ProductFormatDto productFormatDto : attrs) { + + if(productFormatDto.getPinkStock()>productFormatDto.getStock() || productFormatDto.getSeckillStock()>productFormatDto.getStock()){ + throw new BadRequestException("活动商品库存不能大于原有商品库存"); + } List stringList = new ArrayList<>(productFormatDto.getDetail().values()); Collections.sort(stringList); @@ -162,12 +163,19 @@ public class YxStoreProductAttrServiceImpl extends BaseServiceImpl> attrs = storeProductDto.getAttrs(); - Map map = attrs.get(0); - map.put("value1","规格"); - map.put("detail", MapUtil.of(new String[][] { - {"规格", "默认"} - })); + List attrs = storeProductDto.getAttrs(); + ProductFormatDto productFormatDto = attrs.get(0); + productFormatDto.setValue1("规格"); + Map map = new HashMap<>(); + map.put("规格","默认"); + productFormatDto.setDetail(map); yxStoreProductAttrService.insertYxStoreProductAttr(ListUtil.toList(fromatDetailDto), - ListUtil.toList(map),yxStoreProduct.getId()); + ListUtil.toList(productFormatDto),storeProductDto.getId()); }else{ yxStoreProductAttrService.insertYxStoreProductAttr(storeProductDto.getItems(), - storeProductDto.getAttrs(),yxStoreProduct.getId()); + storeProductDto.getAttrs(),storeProductDto.getId()); } @@ -677,27 +688,27 @@ public class YxStoreProductServiceImpl extends BaseServiceImpl> attrs){ + private ProductResultDto computedProduct(List attrs){ //取最小价格 - Double minPrice = ListMapToListBean(attrs) + Double minPrice = attrs .stream() .map(ProductFormatDto::getPrice) .min(Comparator.naturalOrder()) .orElse(0d); - Double minOtPrice = ListMapToListBean(attrs) + Double minOtPrice = attrs .stream() .map(ProductFormatDto::getOtPrice) .min(Comparator.naturalOrder()) .orElse(0d); - Double minCost = ListMapToListBean(attrs) + Double minCost = attrs .stream() .map(ProductFormatDto::getCost) .min(Comparator.naturalOrder()) .orElse(0d); //计算库存 - Integer stock = ListMapToListBean(attrs) + Integer stock = attrs .stream() .map(ProductFormatDto::getStock) .reduce(Integer::sum) diff --git a/yshop-mall/src/main/java/co/yixiang/modules/product/service/mapper/StoreProductAttrValueMapper.java b/yshop-mall/src/main/java/co/yixiang/modules/product/service/mapper/StoreProductAttrValueMapper.java index 0dfa8fb7..3282d373 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/product/service/mapper/StoreProductAttrValueMapper.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/product/service/mapper/StoreProductAttrValueMapper.java @@ -22,24 +22,77 @@ import org.springframework.stereotype.Repository; @Repository public interface StoreProductAttrValueMapper extends CoreMapper { - @Select("select sum(stock) from yx_store_product_attr_value " + - "where product_id = #{productId}") - Integer sumStock(long productId); + /** + * 正常商品 加库存 减销量 + * @param num + * @param productId + * @param unique + * @return + */ + @Update("update yx_store_product_attr_value set stock=stock+#{num}, sales=sales-#{num}" + + " where product_id=#{productId} and `unique`=#{unique}") + int incStockDecSales(@Param("num") int num,@Param("productId") Long productId, + @Param("unique") String unique); + + + /** + * 拼团商品 加库存 减销量 + * @param num + * @param productId + * @param unique + * @return + */ + + @Update("update yx_store_product_attr_value set stock=stock+#{num}, pink_stock=pink_stock+#{num}, sales=sales-#{num}" + + " where product_id=#{productId} and and `unique`=#{unique}") + int incCombinationStockDecSales(@Param("num") int num,@Param("productId") Long productId, + @Param("unique") String unique); + + + /** + * 秒杀 加库存 减销量 + * @param num + * @param productId + * @param unique + * @return + */ + @Update("update yx_store_product_attr_value set stock=stock+#{num},seckill_stock=seckill_stock+#{num}, sales=sales-#{num}" + + " where product_id=#{productId} and `unique`=#{unique}") + int incSeckillStockDecSales(@Param("num") int num,@Param("productId") Long productId, + @Param("unique") String unique); + + + /** + * 普通商品 减库存 加销量 + * @param num + * @param productId + * @param unique + * @return + */ @Update("update yx_store_product_attr_value set stock=stock-#{num}, sales=sales+#{num}" + " where product_id=#{productId} and `unique`=#{unique} and stock >= #{num}") int decStockIncSales(@Param("num") int num, @Param("productId") Long productId, @Param("unique") String unique); - @Update("update yx_store_product_attr_value set stock=stock+#{num}, sales=sales-#{num}" + - " where product_id=#{productId} and `unique`=#{unique}") - int incStockDecSales(@Param("num") int num,@Param("productId") Long productId, - @Param("unique") String unique); - + /** + * 拼团产品 减库存 加销量 + * @param num + * @param productId + * @param unique + * @return + */ @Update("update yx_store_product_attr_value set stock=stock-#{num}, pink_stock=pink_stock-#{num} ,sales=sales+#{num}" + " where product_id=#{productId} and `unique`=#{unique} and stock >= #{num} and pink_stock>=#{num}") int decCombinationStockIncSales(int num, Long productId, String unique); + /** + * 秒杀产品 减库存 加销量 + * @param num + * @param productId + * @param unique + * @return + */ @Update("update yx_store_product_attr_value set stock=stock-#{num}, seckill_stock=seckill_stock-#{num},sales=sales+#{num}" + " where product_id=#{productId} and `unique`=#{unique} and stock >= #{num} and seckill_stock>=#{num}") int decSeckillStockIncSales(int num, Long productId, String unique); diff --git a/yshop-mall/src/main/java/co/yixiang/modules/product/service/mapper/StoreProductMapper.java b/yshop-mall/src/main/java/co/yixiang/modules/product/service/mapper/StoreProductMapper.java index 97574375..a3093465 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/product/service/mapper/StoreProductMapper.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/product/service/mapper/StoreProductMapper.java @@ -21,35 +21,70 @@ import org.springframework.stereotype.Repository; @Repository public interface StoreProductMapper extends CoreMapper { + /** + * 正常商品库存 减库存 加销量 + * @param num + * @param productId + * @return + */ @Update("update yx_store_product set stock=stock-#{num}, sales=sales+#{num}" + " where id=#{productId} and stock >= #{num}") int decStockIncSales(@Param("num") int num,@Param("productId") Long productId); + /** + * 正常商品库存 加库存 减销量 + * @param num + * @param productId + * @return + */ @Update("update yx_store_product set stock=stock+#{num}, sales=sales-#{num}" + " where id=#{productId}") int incStockDecSales(@Param("num") int num,@Param("productId") Long productId); - @Update("update yx_store_product set sales=sales+#{num}" + - " where id=#{productId}") - int incSales(@Param("num") int num,@Param("productId") int productId); - - @Update("update yx_store_product set sales=sales-#{num}" + - " where id=#{productId}") - int decSales(@Param("num") int num,@Param("productId") Long productId); - - - @Update("update yx_store_product set is_del = #{status} where id = #{id}") - void updateDel(@Param("status")int status,@Param("id") Integer id); @Update("update yx_store_product set is_show = #{status} where id = #{id}") void updateOnsale(@Param("status") Integer status, @Param("id") Long id); - //todo 拼团商品库存+— + /** + * 拼团商品库存,减库存 加销量 + * @param num + * @param productId + * @param activityId + * @return + */ @Update("update yx_store_combination set stock=stock-#{num}, sales=sales+#{num}" + " where id=#{activityId} and stock >= #{num}") int decCombinationStockIncSales(int num, Long productId,Long activityId); - //todo 秒杀商品库存+— + + /** + * 秒杀产品库存 减库存,加销量 + * @param num + * @param productId + * @param activityId + * @return + */ @Update("update yx_store_seckill set stock=stock-#{num}, sales=sales+#{num}" + " where id=#{activityId} and stock >= #{num}") int decSeckillStockIncSales(int num, Long productId,Long activityId); + + /** + * 拼团商品库存,加库存 减销量 + * @param num + * @param productId + * @param activityId + */ + @Update("update yx_store_combination set stock=stock+#{num}, sales=sales-#{num}" + + " where id=#{activityId} and stock >= #{num}") + void incCombinationStockIncSales(Integer num, Long productId, Long activityId); + + /** + * 秒杀产品库存 加库存,减销量 + * @param num + * @param productId + * @param activityId + * @return + */ + @Update("update yx_store_seckill set stock=stock+#{num}, sales=sales-#{num}" + + " where id=#{activityId} and stock >= #{num}") + void incSeckillStockIncSales(Integer num, Long productId, Long activityId); } diff --git a/yshop-shop/src/main/java/co/yixiang/modules/activity/rest/StoreCombinationController.java b/yshop-shop/src/main/java/co/yixiang/modules/activity/rest/StoreCombinationController.java index cf4fc4cc..1d63d38b 100644 --- a/yshop-shop/src/main/java/co/yixiang/modules/activity/rest/StoreCombinationController.java +++ b/yshop-shop/src/main/java/co/yixiang/modules/activity/rest/StoreCombinationController.java @@ -8,6 +8,7 @@ package co.yixiang.modules.activity.rest; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import co.yixiang.constant.ShopConstants; +import co.yixiang.dozer.service.IGenerator; import co.yixiang.enums.SpecTypeEnum; import co.yixiang.logging.aop.log.Log; 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.aop.ForbidSubmit; 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.YxStoreProductAttrValueService; import co.yixiang.modules.product.service.YxStoreProductRuleService; import co.yixiang.modules.product.service.dto.ProductFormatDto; import co.yixiang.modules.template.domain.YxShippingTemplates; import co.yixiang.modules.template.service.YxShippingTemplatesService; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -60,11 +64,15 @@ public class StoreCombinationController { private final YxShippingTemplatesService yxShippingTemplatesService; private final YxStoreProductRuleService yxStoreProductRuleService; 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.yxShippingTemplatesService = yxShippingTemplatesService; this.yxStoreProductRuleService = yxStoreProductRuleService; this.yxStoreProductAttrResultService = yxStoreProductAttrResultService; + this.storeProductAttrValueService = storeProductAttrValueService; + this.generator = generator; } @Log("查询拼团") @@ -93,14 +101,6 @@ public class StoreCombinationController { List shippingTemplatesList = yxShippingTemplatesService.list(); map.put("tempList", shippingTemplatesList); -// //商品分类 -// List storeCategories = yxStoreCategoryService.lambdaQuery() -// .eq(YxStoreCategory::getIsShow, ShopCommonEnum.SHOW_1.getValue()) -// .list(); - -// List> cateList = new ArrayList<>(); -// map.put("cateList", this.makeCate(storeCategories,cateList,0,1)); - //商品规格 map.put("ruleList",yxStoreProductRuleService.list()); @@ -118,33 +118,16 @@ public class StoreCombinationController { .getOne(Wrappers.lambdaQuery() .eq(YxStoreProductAttrResult::getProductId,yxStoreCombination.getProductId()).last("limit 1")); JSONObject result = JSON.parseObject(storeProductAttrResult.getResult()); - + List attrValues = storeProductAttrValueService.list(new LambdaQueryWrapper().eq(YxStoreProductAttrValue::getProductId, yxStoreCombination.getProductId())); + List productFormatDtos = generator.convert(attrValues, ProductFormatDto.class); if(SpecTypeEnum.TYPE_1.getValue().equals(yxStoreCombination.getSpecType())){ productDto.setAttr(new ProductFormatDto()); - productDto.setAttrs(result.getObject("value",ArrayList.class)); + productDto.setAttrs(productFormatDtos); productDto.setItems(result.getObject("attr",ArrayList.class)); }else{ - Map mapAttr = (Map)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); diff --git a/yshop-shop/src/main/java/co/yixiang/modules/activity/rest/StoreSeckillController.java b/yshop-shop/src/main/java/co/yixiang/modules/activity/rest/StoreSeckillController.java index dd04b06c..8c5e058c 100644 --- a/yshop-shop/src/main/java/co/yixiang/modules/activity/rest/StoreSeckillController.java +++ b/yshop-shop/src/main/java/co/yixiang/modules/activity/rest/StoreSeckillController.java @@ -8,23 +8,25 @@ package co.yixiang.modules.activity.rest; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import co.yixiang.constant.ShopConstants; +import co.yixiang.dozer.service.IGenerator; import co.yixiang.enums.SpecTypeEnum; 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.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.YxStoreSeckillQueryCriteria; import co.yixiang.modules.aop.ForbidSubmit; 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.YxStoreProductAttrValueService; import co.yixiang.modules.product.service.YxStoreProductRuleService; import co.yixiang.modules.product.service.dto.ProductFormatDto; import co.yixiang.modules.template.domain.YxShippingTemplates; import co.yixiang.modules.template.service.YxShippingTemplatesService; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -47,14 +49,20 @@ import java.util.*; @RequestMapping("api") public class StoreSeckillController { + private final IGenerator generator; private final YxStoreSeckillService yxStoreSeckillService; private final YxShippingTemplatesService yxShippingTemplatesService; private final YxStoreProductRuleService yxStoreProductRuleService; + private final YxStoreProductAttrValueService storeProductAttrValueService; 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.yxShippingTemplatesService = yxShippingTemplatesService; this.yxStoreProductRuleService = yxStoreProductRuleService; + this.storeProductAttrValueService = storeProductAttrValueService; this.yxStoreProductAttrResultService = yxStoreProductAttrResultService; } @@ -108,14 +116,6 @@ public class StoreSeckillController { List shippingTemplatesList = yxShippingTemplatesService.list(); map.put("tempList", shippingTemplatesList); -// //商品分类 -// List storeCategories = yxStoreCategoryService.lambdaQuery() -// .eq(YxStoreCategory::getIsShow, ShopCommonEnum.SHOW_1.getValue()) -// .list(); - -// List> cateList = new ArrayList<>(); -// map.put("cateList", this.makeCate(storeCategories,cateList,0,1)); - //商品规格 map.put("ruleList",yxStoreProductRuleService.list()); @@ -134,30 +134,15 @@ public class StoreSeckillController { .eq(YxStoreProductAttrResult::getProductId,yxStoreSeckill.getProductId()).last("limit 1")); JSONObject result = JSON.parseObject(storeProductAttrResult.getResult()); + List attrValues = storeProductAttrValueService.list(new LambdaQueryWrapper().eq(YxStoreProductAttrValue::getProductId, yxStoreSeckill.getProductId())); + List productFormatDtos = generator.convert(attrValues, ProductFormatDto.class); + if(SpecTypeEnum.TYPE_1.getValue().equals(yxStoreSeckill.getSpecType())){ productDto.setAttr(new ProductFormatDto()); - productDto.setAttrs(result.getObject("value", ArrayList.class)); + productDto.setAttrs(productFormatDtos); productDto.setItems(result.getObject("attr",ArrayList.class)); }else{ - Map mapAttr = (Map)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())) - .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); + productDto.setAttr(productFormatDtos.get(0)); } diff --git a/yshop-shop/src/main/java/co/yixiang/modules/product/rest/StoreProductController.java b/yshop-shop/src/main/java/co/yixiang/modules/product/rest/StoreProductController.java index ac91c585..6acd1793 100644 --- a/yshop-shop/src/main/java/co/yixiang/modules/product/rest/StoreProductController.java +++ b/yshop-shop/src/main/java/co/yixiang/modules/product/rest/StoreProductController.java @@ -10,6 +10,7 @@ package co.yixiang.modules.product.rest; import cn.hutool.core.bean.BeanUtil; import co.yixiang.constant.ShopConstants; +import co.yixiang.dozer.service.IGenerator; import co.yixiang.enums.ShopCommonEnum; import co.yixiang.enums.SpecTypeEnum; 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.product.domain.YxStoreProduct; 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.YxStoreProductAttrValueService; import co.yixiang.modules.product.service.YxStoreProductRuleService; import co.yixiang.modules.product.service.YxStoreProductService; 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 com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -68,17 +72,20 @@ public class StoreProductController { private final YxShippingTemplatesService yxShippingTemplatesService; private final YxStoreProductRuleService yxStoreProductRuleService; private final YxStoreProductAttrResultService yxStoreProductAttrResultService; - + private final YxStoreProductAttrValueService storeProductAttrValueService; + private final IGenerator generator; public StoreProductController(YxStoreProductService yxStoreProductService, YxStoreCategoryService yxStoreCategoryService, YxShippingTemplatesService yxShippingTemplatesService, YxStoreProductRuleService yxStoreProductRuleService, - YxStoreProductAttrResultService yxStoreProductAttrResultService) { + YxStoreProductAttrResultService yxStoreProductAttrResultService, YxStoreProductAttrValueService storeProductAttrValueService, IGenerator generator) { this.yxStoreProductService = yxStoreProductService; this.yxStoreCategoryService = yxStoreCategoryService; this.yxShippingTemplatesService = yxShippingTemplatesService; this.yxStoreProductRuleService = yxStoreProductRuleService; this.yxStoreProductAttrResultService = yxStoreProductAttrResultService; + this.storeProductAttrValueService = storeProductAttrValueService; + this.generator = generator; } @Log("查询商品") @@ -178,32 +185,16 @@ public class StoreProductController { .getOne(Wrappers.lambdaQuery() .eq(YxStoreProductAttrResult::getProductId,id).last("limit 1")); JSONObject result = JSON.parseObject(storeProductAttrResult.getResult()); - + List attrValues = storeProductAttrValueService.list(new LambdaQueryWrapper().eq(YxStoreProductAttrValue::getProductId, yxStoreProduct.getId())); + List productFormatDtos = generator.convert(attrValues, ProductFormatDto.class); if(SpecTypeEnum.TYPE_1.getValue().equals(yxStoreProduct.getSpecType())){ productDto.setAttr(new ProductFormatDto()); - productDto.setAttrs(result.getObject("value",ArrayList.class)); + productDto.setAttrs(productFormatDtos); productDto.setItems(result.getObject("attr",ArrayList.class)); }else{ - Map mapAttr = (Map)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); diff --git a/yshop-tools/src/main/java/co/yixiang/tools/service/impl/LocalStorageServiceImpl.java b/yshop-tools/src/main/java/co/yixiang/tools/service/impl/LocalStorageServiceImpl.java index 5e68f06b..64c184f0 100644 --- a/yshop-tools/src/main/java/co/yixiang/tools/service/impl/LocalStorageServiceImpl.java +++ b/yshop-tools/src/main/java/co/yixiang/tools/service/impl/LocalStorageServiceImpl.java @@ -16,6 +16,7 @@ import co.yixiang.tools.service.dto.LocalStorageDto; import co.yixiang.tools.service.dto.LocalStorageQueryCriteria; import co.yixiang.tools.service.mapper.LocalStorageMapper; import co.yixiang.utils.FileUtil; +import co.yixiang.utils.SecurityUtils; import co.yixiang.utils.StringUtils; import com.github.pagehelper.PageInfo; import org.springframework.beans.BeanUtils; @@ -101,7 +102,7 @@ public class LocalStorageServiceImpl extends BaseServiceImpl{ * @return */ List getLiveReplay(Integer roomId); + + + /** + * 商品列表 + * @param page 页码 + * @param limit 条数 + * @param order ProductEnum + * @return List + */ + List getList(int page, int limit, int order); } diff --git a/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/YxWechatLiveDto.java b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/YxWechatLiveDto.java index 4e38a6f7..a7c1df15 100644 --- a/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/YxWechatLiveDto.java +++ b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/YxWechatLiveDto.java @@ -93,5 +93,7 @@ public class YxWechatLiveDto implements Serializable { */ private String productId; + + @ApiModelProperty(value = "商品信息") private List product; } diff --git a/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/YxWechatLiveQueryCriteria.java b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/YxWechatLiveQueryCriteria.java index 8e9dcd71..566cc4bf 100644 --- a/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/YxWechatLiveQueryCriteria.java +++ b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/YxWechatLiveQueryCriteria.java @@ -8,6 +8,8 @@ */ package co.yixiang.modules.mp.service.dto; +import co.yixiang.annotation.Query; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -16,4 +18,7 @@ import lombok.Data; */ @Data public class YxWechatLiveQueryCriteria{ + @ApiModelProperty(value = "直播间状态 101:直播中,102:未开始,103 已结束,104 禁播,105:暂停,106:异常,107:已过期") + @Query + private Integer liveStatus; } diff --git a/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/impl/YxWechatLiveServiceImpl.java b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/impl/YxWechatLiveServiceImpl.java index 11666331..09fa306f 100644 --- a/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/impl/YxWechatLiveServiceImpl.java +++ b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/impl/YxWechatLiveServiceImpl.java @@ -16,6 +16,7 @@ import cn.hutool.json.JSONUtil; import co.yixiang.common.service.impl.BaseServiceImpl; import co.yixiang.common.utils.QueryHelpPlus; import co.yixiang.dozer.service.IGenerator; +import co.yixiang.enums.ShopCommonEnum; import co.yixiang.exception.BadRequestException; import co.yixiang.modules.mp.domain.YxWechatLiveGoods; import co.yixiang.modules.mp.service.YxWechatLiveGoodsService; @@ -27,10 +28,15 @@ import co.yixiang.modules.mp.service.mapper.YxWechatLiveMapper; import co.yixiang.modules.mp.vo.WechatLiveVo; import co.yixiang.modules.mp.domain.YxWechatLive; import co.yixiang.modules.mp.config.WxMaConfiguration; +import co.yixiang.modules.product.domain.YxStoreProduct; +import co.yixiang.modules.product.vo.YxStoreProductQueryVo; import co.yixiang.utils.FileUtil; import co.yixiang.utils.OrderUtil; import co.yixiang.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; @@ -66,9 +72,12 @@ public class YxWechatLiveServiceImpl extends BaseServiceImpl getList(int page, int limit, int order) { + //todo 添加状态判断 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.lambda() + .orderByDesc(YxWechatLive::getStartTime); + + + Page pageModel = new Page<>(page, limit); + + IPage pageList = wechatLiveMapper.selectPage(pageModel,wrapper); + + + return generator.convert(pageList.getRecords(),YxWechatLiveDto.class); + } }