Explorar o código

Merge remote-tracking branch 'origin/master'

FengChaoYu hai 1 mes
pai
achega
610b0e713c

+ 16 - 0
src/main/java/com/gree/mall/manager/bean/goods/GoodsApplyAddUp.java

@@ -0,0 +1,16 @@
+package com.gree.mall.manager.bean.goods;
+
+import com.gree.mall.manager.plus.entity.GoodsApply;
+import com.gree.mall.manager.plus.entity.GoodsApplyItem;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+@Data
+@ApiModel
+public class GoodsApplyAddUp  extends GoodsApply {
+
+    @ApiModelProperty(value = "申请商品规格详情")
+    private List<GoodsApplyItem> goodsApplyItems;
+}

+ 23 - 0
src/main/java/com/gree/mall/manager/bean/goods/GoodsApplyDetail.java

@@ -0,0 +1,23 @@
+package com.gree.mall.manager.bean.goods;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.gree.mall.manager.plus.entity.Goods;
+import com.gree.mall.manager.plus.entity.GoodsApply;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@ApiModel
+public class GoodsApplyDetail  extends GoodsApply{
+
+    @ApiModelProperty(value = "商品信息")
+    private Goods goods;
+
+    @ApiModelProperty(value = "申请商品规格详情")
+    private List<GoodsApplyItemDetail> goodsApplyItems;
+}

+ 15 - 0
src/main/java/com/gree/mall/manager/bean/goods/GoodsApplyItemDetail.java

@@ -0,0 +1,15 @@
+package com.gree.mall.manager.bean.goods;
+
+import com.gree.mall.manager.plus.entity.GoodsApply;
+import com.gree.mall.manager.plus.entity.GoodsSpec;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel
+public class GoodsApplyItemDetail extends GoodsApply {
+
+    @ApiModelProperty(value = "规格信息")
+    private GoodsSpec goodsSpec;
+}

+ 60 - 0
src/main/java/com/gree/mall/manager/bean/goods/GoodsApplyVO.java

@@ -0,0 +1,60 @@
+package com.gree.mall.manager.bean.goods;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.gree.mall.manager.annotation.ZfireField;
+import com.gree.mall.manager.enums.GoodsStatusEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel
+public class GoodsApplyVO {
+
+    @ZfireField(hide = true,tbName = "a")
+    @TableId(value = "goods_apply_id", type = IdType.ID_WORKER_STR)
+    private String goodsApplyId;
+
+    @ZfireField(hide = true,tbName = "a")
+    private String goodsId;
+
+    @ZfireField(tbName = "b")
+    @ApiModelProperty(value = "商品名称")
+    private String goodsName;
+
+    @ZfireField(tbName = "b")
+    @ApiModelProperty(value = "商品图片")
+    private String imgUrl;
+
+    @ZfireField(hide = true,tbName = "b")
+    @ApiModelProperty(value = "商品分类id")
+    private String categoryId;
+    @ZfireField(tbName = "b")
+    @ApiModelProperty(value = "商品大类")
+    private String categoryPname;
+    @ZfireField(tbName = "b")
+    @ApiModelProperty(value = "商品小类")
+    private String categoryName;
+
+    @ZfireField(hide = true,tbName = "b")
+    @ApiModelProperty(value = "大类id")
+    private String categoryPid;
+
+    @ZfireField(tbName = "a")
+    @ApiModelProperty(value = "划线价格")
+    private BigDecimal orgGoodsPrice;
+    @ZfireField(tbName = "a")
+    @ApiModelProperty(value = "商品价格")
+    private BigDecimal goodsPrice;
+
+    @ZfireField(tbName = "b")
+    @ApiModelProperty(value = "商品状态")
+    private GoodsStatusEnum status;
+    @ZfireField(tbName = "b")
+    @ApiModelProperty(value = "排序")
+    private Integer sortNum;
+
+}

+ 0 - 36
src/main/java/com/gree/mall/manager/bean/goods/GoodsSpecBean.java

@@ -15,42 +15,6 @@ import java.util.List;
 @Data
 public class GoodsSpecBean extends Goods {
 
-    @ApiModelProperty(value = "商品规格id")
-    private String goodsSpecId;
-
-    @ApiModelProperty(value = "规格值")
-    private String specValue;
-
-    @ApiModelProperty(value = "图片")
-    private String specImgUrl;
-
-    @ApiModelProperty(value = "成本价")
-    private BigDecimal costPrice;
-
-    @ApiModelProperty(value = "销售价")
-    private BigDecimal price;
-
-    @ApiModelProperty(value = "划线价格")
-    private BigDecimal orgPrice;
-
-    @ApiModelProperty(value = "分销金额")
-    private BigDecimal shareAmount;
-
-    @ApiModelProperty(value = "分销比例")
-    private Double sharePercent;
-
-    @ApiModelProperty(value = "内部分销金额")
-    private BigDecimal innerShareAmount;
-
-    @ApiModelProperty(value = "内部分销比列")
-    private Double innerSharePercent;
-
-    @ApiModelProperty(value = "库存")
-    private Integer stockNum;
-
-    @ApiModelProperty(value = "条形码")
-    private String barCode;
-
     @ApiModelProperty("商品规格列表")
     private List<GoodsSpec> goodsSpecs;
 

+ 2 - 1
src/main/java/com/gree/mall/manager/bean/goods/GoodsVO.java

@@ -2,6 +2,7 @@ package com.gree.mall.manager.bean.goods;
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.gree.mall.manager.annotation.ZfireField;
+import com.gree.mall.manager.enums.GoodsStatusEnum;
 import com.gree.mall.manager.plus.entity.Goods;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -52,7 +53,7 @@ public class GoodsVO {
 
 
     @ApiModelProperty(value = "商品状态 true:上架  false:下架")
-    private Boolean status;
+    private GoodsStatusEnum status;
 
     @ApiModelProperty(value = "排序")
     private Integer sortNum;

+ 14 - 0
src/main/java/com/gree/mall/manager/commonmapper/CustomGoodsApplyMapper.java

@@ -0,0 +1,14 @@
+package com.gree.mall.manager.commonmapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gree.mall.manager.bean.goods.GoodsApplyVO;
+import com.gree.mall.manager.zfire.bean.ZfireParamBean;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface CustomGoodsApplyMapper {
+
+    IPage<GoodsApplyVO> goodsList(Page page,@Param("ex") ZfireParamBean zfireParam);
+}

+ 89 - 0
src/main/java/com/gree/mall/manager/controller/goods/GoodsApplyController.java

@@ -0,0 +1,89 @@
+package com.gree.mall.manager.controller.goods;
+
+import cn.hutool.core.lang.TypeReference;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gree.mall.manager.annotation.ZfireList;
+import com.gree.mall.manager.bean.goods.*;
+import com.gree.mall.manager.exception.RemoteServiceException;
+import com.gree.mall.manager.helper.ResponseHelper;
+import com.gree.mall.manager.logic.goods.GoodsApplyLogic;
+import com.gree.mall.manager.zfire.bean.ZfireParamBean;
+import com.gree.mall.manager.zfire.util.FieldUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+@Slf4j
+@RestController
+@Api(value = "价格调整申请", tags ={"价格调整申请"} )
+@RequestMapping(value = "/goodsApply", produces = "application/json; charset=utf-8")
+public class GoodsApplyController {
+
+    @Resource
+    GoodsApplyLogic goodsApplyLogic;
+
+
+    @ZfireList
+    @PostMapping("/list")
+    @ApiOperation(value = "价格调整申请列表")
+    public ResponseHelper<IPage<GoodsApplyVO>> list(
+            @RequestBody ZfireParamBean zfireParamBean
+    ) throws RemoteServiceException {
+        ZfireParamBean zfireParam = FieldUtils.supplyParam(zfireParamBean);
+        IPage<GoodsApplyVO> adminDeptVOIPage = goodsApplyLogic.applyList(new Page(zfireParam.getPageNum(), zfireParam.getPageSize()), zfireParam);
+        return ResponseHelper.success(adminDeptVOIPage, new TypeReference<GoodsApplyVO>() {});
+    }
+
+    @PostMapping("/list/export")
+    @ApiOperation(value = "价格调整申请列表导出")
+    public void listExport(
+            @RequestBody ZfireParamBean zfireParamBean,
+            HttpServletRequest request,
+            HttpServletResponse response
+    ) throws Exception {
+        ZfireParamBean zfireParam = FieldUtils.supplyParam(zfireParamBean);
+        IPage<GoodsApplyVO> adminDeptVOIPage = goodsApplyLogic.applyList(new Page(zfireParam.getPageNum(), zfireParam.getPageSize()), zfireParam);
+        //3.导出
+        FieldUtils.exportData(adminDeptVOIPage.getRecords(), zfireParam.getExportFields(), request, response);
+    }
+
+    @PostMapping("/detail")
+    @ApiOperation(value = "价格申请详情")
+    public ResponseHelper<GoodsApplyDetail> listbycategory(
+            @ApiParam(value = "申请id") @RequestParam(required = false) String goodsApplyId,
+            HttpServletRequest request
+    ) throws RemoteServiceException {
+        GoodsApplyDetail  goodsApplyDetails= goodsApplyLogic.detail(goodsApplyId,request);
+        return ResponseHelper.success(goodsApplyDetails);
+    }
+
+
+    @PostMapping("/add")
+    @ApiOperation(value = "价格申请新增")
+    public ResponseHelper<GoodsApplyDetail> add(
+            @RequestBody GoodsApplyAddUp goodsApplyAddUp,
+            HttpServletRequest request
+    ) throws RemoteServiceException {
+        goodsApplyLogic.add(goodsApplyAddUp,request);
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/update")
+    @ApiOperation(value = "价格申请修改")
+    public ResponseHelper<GoodsApplyDetail> update(
+            @RequestBody GoodsApplyAddUp goodsApplyAddUp,
+            HttpServletRequest request
+    ) throws RemoteServiceException {
+        goodsApplyLogic.update(goodsApplyAddUp,request);
+        return ResponseHelper.success();
+    }
+
+}

+ 28 - 0
src/main/java/com/gree/mall/manager/enums/GoodsStatusEnum.java

@@ -0,0 +1,28 @@
+package com.gree.mall.manager.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.baomidou.mybatisplus.annotation.IEnum;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.gree.mall.manager.enums.base.BaseEnum;
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+@Getter
+@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
+public enum GoodsStatusEnum implements BaseEnum, IEnum<Boolean> {
+    ONE("true", "上架"),
+    TWO("false", "下架"),
+    ;
+
+    @EnumValue
+    @JsonValue
+    private final String key;
+    private final String remark;
+
+
+    @Override
+    public Boolean getValue() {
+        return Boolean.parseBoolean(key);
+    }
+}

+ 166 - 0
src/main/java/com/gree/mall/manager/logic/goods/GoodsApplyLogic.java

@@ -0,0 +1,166 @@
+package com.gree.mall.manager.logic.goods;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gree.mall.manager.bean.admin.AdminUserCom;
+import com.gree.mall.manager.bean.goods.*;
+import com.gree.mall.manager.commonmapper.CustomGoodsApplyMapper;
+import com.gree.mall.manager.logic.common.CommonLogic;
+import com.gree.mall.manager.plus.entity.Goods;
+import com.gree.mall.manager.plus.entity.GoodsApply;
+import com.gree.mall.manager.plus.entity.GoodsApplyItem;
+import com.gree.mall.manager.plus.entity.GoodsSpec;
+import com.gree.mall.manager.plus.mapper.GoodsApplyMapper;
+import com.gree.mall.manager.plus.service.GoodsApplyItemService;
+import com.gree.mall.manager.plus.service.GoodsApplyService;
+import com.gree.mall.manager.plus.service.GoodsService;
+import com.gree.mall.manager.plus.service.GoodsSpecService;
+import com.gree.mall.manager.zfire.bean.ZfireParamBean;
+import com.gree.mall.manager.zfire.util.FieldUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Component
+public class GoodsApplyLogic {
+
+
+    @Resource
+    CommonLogic commonLogic;
+
+
+    @Resource
+    CustomGoodsApplyMapper customGoodsApplyMapper;
+
+    @Autowired
+    GoodsService goodsService;
+
+    @Autowired
+    GoodsSpecService goodsSpecService;
+
+    @Autowired
+    GoodsApplyService goodsApplyService;
+
+    @Autowired
+    GoodsApplyItemService goodsApplyItemService;
+    
+
+    public IPage<GoodsApplyVO> applyList(Page page, ZfireParamBean zfireParam) {
+        //获取当前登录企业id
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+
+        //1.组装查询条件
+        FieldUtils.supplyParam(zfireParam, GoodsApplyVO.class,adminUser);
+
+        IPage<GoodsApplyVO> goodsVOIPage = customGoodsApplyMapper.goodsList(page, zfireParam);
+        return goodsVOIPage;
+    }
+
+    public GoodsApplyDetail detail(String goodsApplyId, HttpServletRequest request) {
+
+        GoodsApply goodsApply = goodsApplyService.getById(goodsApplyId);
+
+        Goods goods = goodsService.getById(goodsApply.getGoodsId());
+
+        List<GoodsSpec> goodsSpecs = goodsSpecService.lambdaQuery().eq(GoodsSpec::getGoodsId, goods.getGoodsId())
+                .list();
+
+        GoodsApplyDetail goodsApplyDetail = BeanUtil.toBean(goodsApply,GoodsApplyDetail.class);
+
+        goodsApplyDetail.setGoods(goods);
+
+        List<GoodsApplyItemDetail> goodsApplyItemDetails = new ArrayList<>();
+        for (GoodsSpec goodsSpec : goodsSpecs) {
+
+            GoodsApplyItem goodsApplyItem = goodsApplyItemService.lambdaQuery()
+                    .eq(GoodsApplyItem::getGoodsApplyId,goodsApplyId)
+                    .eq(GoodsApplyItem::getGoodsSpecId, goodsSpec.getGoodsSpecId()).one();
+
+            GoodsApplyItemDetail goodsApplyItemDetail = BeanUtil.toBean(goodsApplyItem, GoodsApplyItemDetail.class);
+
+            goodsApplyItemDetail.setGoodsSpec(goodsSpec);
+
+            goodsApplyItemDetails.add(goodsApplyItemDetail);
+        }
+
+        goodsApplyDetail.setGoodsApplyItems(goodsApplyItemDetails);
+
+        return goodsApplyDetail;
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void add(GoodsApplyAddUp goodsApplyAddUp, HttpServletRequest request) {
+
+        goodsApplyAddUp.insert();
+
+        List<GoodsSpec> goodsSpecs = goodsSpecService.lambdaQuery().eq(GoodsSpec::getGoodsId, goodsApplyAddUp.getGoodsId())
+                .list();
+
+        List<GoodsApplyItem> goodsApplyItemList = new ArrayList<>();
+
+        for (GoodsSpec goodsSpec : goodsSpecs) {
+            List<GoodsApplyItem> goodsApplyItems = goodsApplyAddUp.getGoodsApplyItems().stream()
+                    .filter(item -> item.getGoodsSpecId().equals(goodsSpec.getGoodsSpecId()))
+                    .collect(Collectors.toList());
+
+            if (CollectionUtils.isNotEmpty(goodsApplyItems)) {
+                goodsApplyItems.get(0).setGoodsId(goodsSpec.getGoodsId());
+                goodsApplyItems.get(0).setGoodsApplyId(goodsApplyAddUp.getGoodsApplyId());
+                goodsApplyItemList.add(goodsApplyItems.get(0));
+            }else {
+                GoodsApplyItem goodsApplyItem = new GoodsApplyItem();
+                goodsApplyItem.setGoodsId(goodsSpec.getGoodsId());
+                goodsApplyItem.setApplyPrice(goodsSpec.getPrice());
+                goodsApplyItem.setGoodsSpecId(goodsSpec.getGoodsSpecId());
+                goodsApplyItem.setGoodsApplyId(goodsApplyAddUp.getGoodsApplyId());
+                goodsApplyItemList.add(goodsApplyItem);
+            }
+        }
+
+        goodsApplyItemService.saveBatch(goodsApplyItemList);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void update(GoodsApplyAddUp goodsApplyAddUp, HttpServletRequest request) {
+        goodsApplyService.removeById(goodsApplyAddUp.getGoodsApplyId());
+        goodsApplyItemService.lambdaUpdate().eq(GoodsApplyItem::getGoodsSpecId,goodsApplyAddUp.getGoodsApplyId()).remove();
+
+        goodsApplyAddUp.insert();
+
+        List<GoodsSpec> goodsSpecs = goodsSpecService.lambdaQuery().eq(GoodsSpec::getGoodsId, goodsApplyAddUp.getGoodsId())
+                .list();
+
+        List<GoodsApplyItem> goodsApplyItemList = new ArrayList<>();
+
+        for (GoodsSpec goodsSpec : goodsSpecs) {
+            List<GoodsApplyItem> goodsApplyItems = goodsApplyAddUp.getGoodsApplyItems().stream()
+                    .filter(item -> item.getGoodsSpecId().equals(goodsSpec.getGoodsSpecId()))
+                    .collect(Collectors.toList());
+
+            if (CollectionUtils.isNotEmpty(goodsApplyItems)) {
+                goodsApplyItems.get(0).setGoodsId(goodsSpec.getGoodsId());
+                goodsApplyItems.get(0).setGoodsApplyId(goodsApplyAddUp.getGoodsApplyId());
+                goodsApplyItemList.add(goodsApplyItems.get(0));
+            }else {
+                GoodsApplyItem goodsApplyItem = new GoodsApplyItem();
+                goodsApplyItem.setGoodsId(goodsSpec.getGoodsId());
+                goodsApplyItem.setApplyPrice(goodsSpec.getPrice());
+                goodsApplyItem.setGoodsSpecId(goodsSpec.getGoodsSpecId());
+                goodsApplyItem.setGoodsApplyId(goodsApplyAddUp.getGoodsApplyId());
+                goodsApplyItemList.add(goodsApplyItem);
+            }
+        }
+
+        goodsApplyItemService.saveBatch(goodsApplyItemList);
+    }
+}

+ 17 - 0
src/main/resources/mapper/CustomGoodsApplyMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gree.mall.manager.commonmapper.CustomGoodsApplyMapper">
+
+
+    <select id="goodsList" resultType="com.gree.mall.manager.bean.goods.GoodsApplyVO">
+        SELECT
+        ${ex.selected}
+        FROM goods_apply a
+        join goods b on a.goods_id= b.goods_id
+        ${ex.query}
+        <if test="ex.orderBy == null or ex.orderBy ==''">
+            ORDER BY a.create_time DESC
+        </if>
+        ${ex.orderBy}
+    </select>
+</mapper>