浏览代码

Merge branch 'zx_saas_goods' of http://git.dayaedu.com/yonge/mec into zx_saas_goods

刘俊驰 1 年之前
父节点
当前提交
e40e8689ee

+ 12 - 2
mec-application/src/main/java/com/ym/mec/web/controller/GoodsController.java

@@ -26,6 +26,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -49,8 +51,16 @@ public class GoodsController extends BaseController {
     @ApiOperation(value = "新增商品(教材、辅件)")
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('goods/add')")
-    public Object add(@RequestBody GoodsWrapper.Goods goods){
-        goodsService.addGoods(goods,sysUserService.getUserId());
+    public Object add(@RequestBody GoodsWrapper.Goods goods) {
+        goodsService.addGoods(Collections.singletonList(goods), sysUserService.getUserId());
+        return succeed();
+    }
+
+    @ApiOperation(value = "新增商品(教材、辅件)")
+    @PostMapping("/addBatch")
+    @PreAuthorize("@pcs.hasPermissions('goods/addBatch')")
+    public Object addBatch(@RequestBody List<GoodsWrapper.Goods> goodsList) {
+        goodsService.addGoods(goodsList, sysUserService.getUserId());
         return succeed();
     }
 

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/GoodsService.java

@@ -25,7 +25,7 @@ public interface GoodsService extends BaseService<Integer, Goods> {
 
     List<Goods> exportGoods(GoodsQueryInfo queryInfo);
 
-    void addGoods(GoodsWrapper.Goods goods, Integer operatorId);
+    void addGoods(List<GoodsWrapper.Goods> goodsList, Integer operatorId);
 
 //    void addGoodsProcurement(GoodsProcurement goodsProcurement);
 

+ 38 - 28
mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsServiceImpl.java

@@ -200,39 +200,49 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void addGoods(GoodsWrapper.Goods goods, Integer operatorId) {
-		if(StringUtils.isBlank(goods.getSn())){
-			throw new BizException("请指定商品货号");
+	public void addGoods(List<GoodsWrapper.Goods> goodsList, Integer operatorId) {
+		List<String> snList = goodsList.stream().map(GoodsWrapper.Goods::getSn).collect(Collectors.toList());
+		if (snList.size() != new HashSet<>(snList).size()) {
+			throw new BizException("商品货号重复");
 		}
-		Goods existsGood = goodsDao.lockBySn(goods.getSn());
-		if(Objects.nonNull(existsGood)){
+		List<Goods> bySns = goodsDao.findBySns(snList);
+		if (!CollectionUtils.isEmpty(bySns)) {
 			throw new BizException("商品货号重复");
 		}
-		List<GoodsWrapper.GoodsSub> goodsSubList = goods.getGoodsSubList();
-		//获取最小的库存数
-		String skuIds = goodsSubList.stream().map(e -> e.getSku().toString()).collect(Collectors.joining(","));
-		PmsProductQueryParamDto paramDto = new PmsProductQueryParamDto();
-		paramDto.setSkuStockIds(skuIds);
+		for (GoodsWrapper.Goods goods : goodsList) {
+			if (StringUtils.isBlank(goods.getSn())) {
+				throw new BizException("请指定商品货号");
+			}
+			Goods existsGood = goodsDao.lockBySn(goods.getSn());
+			if (Objects.nonNull(existsGood)) {
+				throw new BizException("商品货号重复");
+			}
+			List<GoodsWrapper.GoodsSub> goodsSubList = goods.getGoodsSubList();
+			//获取最小的库存数
+			String skuIds = goodsSubList.stream().map(e -> e.getSku().toString()).collect(Collectors.joining(","));
+			PmsProductQueryParamDto paramDto = new PmsProductQueryParamDto();
+			paramDto.setSkuStockIds(skuIds);
 //		paramDto.setPublishStatus(1);
-		paramDto.setPageSize(1000);
-		paramDto.setPageNum(1);
-		paramDto.setJson(JSON.toJSONString(paramDto));
-		List<PmsProductDto> productList = mallFeignService.getProductList(paramDto).getRows();
-		if(CollectionUtils.isEmpty(productList)){
-			throw new BizException("子商品不存在");
+			paramDto.setPageSize(1000);
+			paramDto.setPageNum(1);
+			paramDto.setJson(JSON.toJSONString(paramDto));
+			List<PmsProductDto> productList = mallFeignService.getProductList(paramDto).getRows();
+			if (CollectionUtils.isEmpty(productList)) {
+				throw new BizException("子商品不存在");
+			}
+			//获取最小库存数量
+			Integer stock = productList.stream().map(PmsProductDto::getStock).min(Integer::compareTo).get();
+			goods.setStockCount(stock);
+			goods.setSellCount(0);
+			Goods goodsRecord = JSON.parseObject(JSON.toJSONString(goods), Goods.class);
+			goodsRecord.setStatus(YesOrNoEnum.NO);
+			BigDecimal organCostPrice = goodsSubList.stream().map(GoodsWrapper.GoodsSub::getGoodsPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+			goodsRecord.setOrganCostPrice(organCostPrice);
+			goodsDao.insert(goodsRecord);
+			List<GoodsSub> goodsSubs = JSON.parseArray(JSON.toJSONString(goodsSubList), GoodsSub.class);
+			goodsSubs.forEach(next -> next.setGoodsId(goodsRecord.getId()));
+			goodsSubService.saveBatch(goodsSubs);
 		}
-		//获取最小库存数量
-		Integer stock = productList.stream().map(PmsProductDto::getStock).min(Integer::compareTo).get();
-		goods.setStockCount(stock);
-		goods.setSellCount(0);
-		Goods goodsRecord = JSON.parseObject(JSON.toJSONString(goods), Goods.class);
-		goodsRecord.setStatus(YesOrNoEnum.NO);
-		BigDecimal organCostPrice = goodsSubList.stream().map(GoodsWrapper.GoodsSub::getGoodsPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
-		goodsRecord.setOrganCostPrice(organCostPrice);
-		goodsDao.insert(goodsRecord);
-		List<GoodsSub> goodsSubs = JSON.parseArray(JSON.toJSONString(goodsSubList), GoodsSub.class);
-		goodsSubs.forEach(next -> next.setGoodsId(goodsRecord.getId()));
-		goodsSubService.saveBatch(goodsSubs);
 	}
 
 	/*@Override

+ 5 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SellOrderServiceImpl.java

@@ -274,7 +274,7 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
     public List<SellOrder> addOrderDetail2SellOrder(List<StudentPaymentOrderDetail> orderDetails,
                                                     StudentPaymentOrder studentPaymentOrder, MusicGroup musicGroup,BigDecimal balancePaymentAmount) {
         //过去非商品详情
-        List<StudentPaymentOrderDetail> goodsOrderDetails = orderDetails.stream().filter(e -> StringUtils.isEmpty(e.getGoodsIdList())).collect(Collectors.toList());
+        List<StudentPaymentOrderDetail> goodsOrderDetails = orderDetails.stream().filter(e -> StringUtils.isNotEmpty(e.getGoodsIdList())).collect(Collectors.toList());
         if(CollectionUtils.isEmpty(goodsOrderDetails)){
             throw new BizException("商品详情为空");
         }
@@ -292,7 +292,7 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
         //剩余待分配现金
         BigDecimal subDetailActualAmount = detailTotalPrice.subtract(balancePaymentAmount);
         for (int i = 0; i < goodsOrderDetails.size(); i++) {
-            StudentPaymentOrderDetail orderDetail = orderDetails.get(i);
+            StudentPaymentOrderDetail orderDetail = goodsOrderDetails.get(i);
             //获取支付金额比例
             BigDecimal ratioAmount = BigDecimal.ZERO;
             if(detailTotalPrice.compareTo(BigDecimal.ZERO) > 0){
@@ -328,7 +328,7 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                 subDetailActualAmount = subDetailActualAmount.subtract(detailActualAmount);
             }
             List<Integer> goodsIds = Arrays.asList(orderDetail.getGoodsIdList().split(",")).stream().map(Integer::parseInt).collect(Collectors.toList());
-            sellOrders.addAll(this.initSellOrder(studentPaymentOrder, musicGroup.getId(), goodsIds, null,
+            sellOrders.addAll(this.initSellOrder(studentPaymentOrder, musicGroup.getId(), goodsIds, orderDetail.getKitGroupPurchaseType(),
                     detailBalance, orderDetail.getPrice(), couponRemitFee, detailActualAmount, false));
         }
 
@@ -709,7 +709,8 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
             //剩余实际金额
             BigDecimal subActualAmount = actualAmount;
             //租赁、免费的没有销售收入,有销售成本
-            if (nowGoods.getType().equals(GoodsType.INSTRUMENT) && (kitGroupPurchaseType.equals(KitGroupPurchaseTypeEnum.LEASE) || kitGroupPurchaseType.equals(KitGroupPurchaseTypeEnum.FREE))) {
+            if (nowGoods.getType().equals(GoodsType.INSTRUMENT) && kitGroupPurchaseType != null &&
+                    (kitGroupPurchaseType.equals(KitGroupPurchaseTypeEnum.LEASE) || kitGroupPurchaseType.equals(KitGroupPurchaseTypeEnum.FREE))) {
                 goodsBalance = BigDecimal.ZERO;
                 expectAmount = BigDecimal.ZERO;
             }

+ 4 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/dto/PmsProductDto.java

@@ -38,6 +38,10 @@ public class PmsProductDto implements Serializable {
     private Long productCategoryId;
     //商品分类名称
     private String productCategoryName;
+    // 商品图片
+    private String pic;
+    // 商品详情
+    private String detailHtml;
 
 
     //"商品销售属性,json格式"

+ 2 - 0
mec-mall/mall-admin/src/main/resources/config/mybatis/PmsProductDao.xml

@@ -125,6 +125,8 @@
         t1.price as price,
         t.brand_id as brandId,
         t.product_category_id as productCategoryId,
+        t.pic as pic,
+        t.detail_html as detailHtml,
         t1.sp_data as spData
         from pms_product t
         left join pms_sku_stock t1 on t.id = t1.product_id