소스 검색

商品查询列表条件优化
商品、代金券删除接口实现

guanglong 3 년 전
부모
커밋
d35546cfb8

+ 35 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/CouponMgrController.java

@@ -3,6 +3,7 @@ package com.qs.mp.web.controller.api.admin;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.qs.mp.admin.domain.Coupon;
 import com.qs.mp.admin.domain.CouponChannel;
 import com.qs.mp.admin.domain.CouponTicket;
@@ -83,6 +84,7 @@ public class CouponMgrController extends BaseApiController {
 		LambdaQueryWrapper<Coupon> queryWrapper = new LambdaQueryWrapper<Coupon>();
 		queryWrapper.like(null != coupon && StringUtils.isNotBlank(coupon.getTitle()), Coupon::getTitle, coupon.getTitle());
 		queryWrapper.like(null != coupon && null != coupon.getStatus(), Coupon::getStatus, coupon.getStatus());
+		queryWrapper.eq(Coupon::getIsDeleted, 0);
 		queryWrapper.orderByAsc(Coupon::getCreatedTime);
 		list = couponService.list(queryWrapper);
 		return getDataTable(list);
@@ -143,6 +145,7 @@ public class CouponMgrController extends BaseApiController {
 		// 1、校验名称是否重复(代金券表)
 		LambdaQueryWrapper<Coupon> queryWrapper = new LambdaQueryWrapper<>();
 		queryWrapper.eq(Coupon::getTitle, coupon.getTitle());
+		queryWrapper.eq(Coupon::getIsDeleted, 0);
 		int nameCount = couponService.count(queryWrapper);
 		if(nameCount > 0) {
 			return AjaxResult.error("代金券名称" + coupon.getTitle() + "已存在!");
@@ -188,6 +191,7 @@ public class CouponMgrController extends BaseApiController {
 		if(!coupon.getTitle().equals(oldCoupon.getTitle())) {
 			LambdaQueryWrapper<Coupon> queryWrapper = new LambdaQueryWrapper<>();
 			queryWrapper.eq(Coupon::getTitle, coupon.getTitle());
+			queryWrapper.eq(Coupon::getIsDeleted, 0);
 			int nameCount = couponService.count(queryWrapper);
 			if(nameCount > 0) {
 				return AjaxResult.error("代金券名称" + coupon.getTitle() + "已存在!");
@@ -235,5 +239,36 @@ public class CouponMgrController extends BaseApiController {
 		}
 		return AjaxResult.success("操作成功");
 	}
+	
+	
+	/**
+	 * 删除代金券商品(假删)
+	 *
+	 * @param
+	 * @return
+	 */
+	@PostMapping(value = "/delete")
+	public AjaxResult deleteCoupon(@RequestBody JSONObject jsonObject) {
+		String couponId = jsonObject.getString("couponId");
+	    if (StringUtils.isBlank(couponId)){
+	      return error(ErrorCodeEnum.ERROR_CODE_1001);
+	    }
+	    Coupon coupon = couponService.getById(couponId);
+		if(null == coupon || StringUtils.isBlank(coupon.getCouponId())) {
+			 return error(ErrorCodeEnum.ERROR_CODE_1001);
+		}
+		// 商品未下架, 不允许删除
+		if(coupon.getStatus().equals("on")) {
+			return AjaxResult.error("代金券未下架,不允许删除");
+		}
+		LambdaUpdateWrapper<Coupon> updateWrapper = new LambdaUpdateWrapper<>();
+		updateWrapper.set(Coupon::getIsDeleted, 1);
+		updateWrapper.eq(Coupon::getCouponId, coupon.getCouponId());
+		boolean res = couponService.update(updateWrapper);
+		if(!res) {
+			return AjaxResult.error("代金券删除失败");
+		}
+		return AjaxResult.success("代金券删除成功");
+	}
 
 }

+ 29 - 21
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/GoodsMgrController.java

@@ -3,6 +3,7 @@ package com.qs.mp.web.controller.api.admin;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qs.mp.admin.domain.Coupon;
 import com.qs.mp.admin.domain.Goods;
@@ -10,6 +11,7 @@ import com.qs.mp.admin.domain.GoodsCategory;
 import com.qs.mp.admin.domain.GoodsSku;
 import com.qs.mp.admin.domain.param.CouponParam;
 import com.qs.mp.admin.domain.param.GoodsParam;
+import com.qs.mp.admin.domain.param.GoodsQueryParam;
 import com.qs.mp.admin.domain.vo.GoodsListVO;
 import com.qs.mp.admin.domain.vo.GoodsVO;
 import com.qs.mp.admin.service.IGoodsCategoryService;
@@ -83,10 +85,21 @@ public class GoodsMgrController extends BaseApiController {
 	 * @return
 	 */
 	@PostMapping("/list")
-	public TableDataInfo list(@RequestBody Goods goods) {
-		List<GoodsListVO> list = new ArrayList<GoodsListVO>();
+	public TableDataInfo list(@RequestBody GoodsQueryParam queryParam) {
 		startPage();
-		List<Goods> goodsList = goodsService.list(new LambdaQueryWrapper<Goods>());
+		LambdaQueryWrapper<Goods> queryWrapper = new LambdaQueryWrapper<Goods>();
+		queryWrapper.like(null != queryParam && StringUtils.isNotBlank(queryParam.getTitle()), Goods::getTitle, queryParam.getTitle());
+		queryWrapper.eq(null != queryParam && StringUtils.isNotBlank(queryParam.getGoodsId()), Goods::getGoodsId, queryParam.getGoodsId());
+		// 成本
+		queryWrapper.ge(null != queryParam && null != queryParam.getMinCost(), Goods::getCost, queryParam.getMinCost());
+		queryWrapper.le(null != queryParam && null != queryParam.getMaxCost(), Goods::getCost, queryParam.getMaxCost());
+		// 价格
+		queryWrapper.ge(null != queryParam && null != queryParam.getMinValue(), Goods::getValue, queryParam.getMinValue());
+		queryWrapper.le(null != queryParam && null != queryParam.getMaxValue(), Goods::getValue, queryParam.getMaxValue());
+		// 状态
+		queryWrapper.eq(null != queryParam && null != queryParam.getStatus(), Goods::getStatus, queryParam.getStatus());
+		queryWrapper.eq(Goods::getIsDeleted, 0);
+		List<Goods> goodsList = goodsService.list(queryWrapper);
 		List<GoodsListVO> goodsListVOList = mapperFacade.mapAsList(goodsList, GoodsListVO.class);
 		TableDataInfo res = getDataTable(goodsList);
 		res.setRows(goodsListVOList);
@@ -132,13 +145,14 @@ public class GoodsMgrController extends BaseApiController {
 	@ApiOperation(value = "新增商品信息", notes = "后台商品管理新增商品")
 	@PostMapping("/create")
 	public AjaxResult channelCreate(@Validated @RequestBody GoodsParam goodsParam) {
-		if (goodsParam.getGoodsId() != null && goodsParam.getGoodsId() != 0) {
+		if (StringUtils.isNotBlank(goodsParam.getGoodsId())) {
 			return AjaxResult.error("该商品已存在");
 		}
 		Goods goods = mapperFacade.map(goodsParam, Goods.class);
 		// 1、校验名称是否重复(商品表)
 		LambdaQueryWrapper<Goods> queryWrapper = new LambdaQueryWrapper<>();
 		queryWrapper.eq(Goods::getTitle, goods.getTitle());
+		queryWrapper.eq(Goods::getIsDeleted, 0);
 		int titleCount = goodsService.count(queryWrapper);
 		if(titleCount > 0) {
 			return AjaxResult.error("商品名称" + goods.getTitle() + "已存在!");
@@ -177,8 +191,7 @@ public class GoodsMgrController extends BaseApiController {
 	@ApiOperation(value = "编辑商品信息", notes = "后台商品管理修改商品信息")
 	@PostMapping("/update")
 	public AjaxResult channelUpdate(@Validated @RequestBody GoodsParam goodsParam) {
-		
-		if (goodsParam.getGoodsId() == null || goodsParam.getGoodsId() == 0) {
+		if (null == goodsParam || StringUtils.isBlank(goodsParam.getGoodsId())) {
 			return error(ErrorCodeEnum.ERROR_CODE_1001);
 		}
 		Goods oldGoods = goodsService.getById(goodsParam.getGoodsId());
@@ -190,6 +203,7 @@ public class GoodsMgrController extends BaseApiController {
 		if(!goods.getTitle().equals(oldGoods.getTitle())) {
 			LambdaQueryWrapper<Goods> queryWrapper = new LambdaQueryWrapper<>();
 			queryWrapper.eq(Goods::getTitle, goods.getTitle());
+			queryWrapper.eq(Goods::getIsDeleted, 0);
 			int titleCount = goodsService.count(queryWrapper);
 			if(titleCount > 0) {
 				return AjaxResult.error("商品名称" + goods.getTitle() + "已存在!");
@@ -264,23 +278,17 @@ public class GoodsMgrController extends BaseApiController {
 			 return error(ErrorCodeEnum.ERROR_CODE_1001);
 		}
 		// 商品未下架, 不允许删除
-		if(goods.getStatus().equals("")) {
-			
+		if(goods.getStatus().equals("on")) {
+			return AjaxResult.error("商品未下架,不允许删除");
 		}
-		
-		
-		GoodsVO goodsVo = new GoodsVO();
-		BeanUtils.copyProperties(goods, goodsVo);
-		// 查询SKU列表
-		List<GoodsSku> skuList = new ArrayList<>();
-		LambdaQueryWrapper<GoodsSku> queryWrapper = new LambdaQueryWrapper<>();
-		queryWrapper.eq(GoodsSku::getGoodsId, goods.getGoodsId());
-		queryWrapper.orderByDesc(GoodsSku::getCreatedTime);
-		skuList = goodsSkuService.list(queryWrapper);
-		if(null != skuList && skuList.size() > 0) {
-			goodsVo.setSkuList(skuList);
+		LambdaUpdateWrapper<Goods> updateWrapper = new LambdaUpdateWrapper<>();
+		updateWrapper.set(Goods::getIsDeleted, 1);
+		updateWrapper.eq(Goods::getGoodsId, goods.getGoodsId());
+		boolean res = goodsService.update(updateWrapper);
+		if(!res) {
+			return AjaxResult.error("商品删除失败");
 		}
-		return AjaxResult.success(goodsVo);
+		return AjaxResult.success("商品删除成功");
 	}
 
 }

+ 8 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/Coupon.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.qs.mp.common.enums.CouponDiscountTypeEnum;
 import com.qs.mp.common.enums.CouponDistributeTypeEnum;
@@ -142,6 +143,13 @@ public class Coupon implements Serializable {
   @TableField("distribute_qty")
   private Integer distributeQty;
 
+  /**
+   * 逻辑删除标识
+   */
+  @TableField("is_deleted")
+  @TableLogic
+  private Integer isDeleted;
+  
   /**
    * 创建时间
    */

+ 1 - 1
mp-service/src/main/java/com/qs/mp/admin/domain/param/GoodsParam.java

@@ -21,7 +21,7 @@ import lombok.Data;
 public class GoodsParam {
 
 	@ApiModelProperty(value = "商品ID", required = false)
-	private Long goodsId;
+	private String goodsId;
 
 	@NotNull(message = "商品名称不能为空")
 	@ApiModelProperty(value = "商品名称", required = true)

+ 58 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/GoodsQueryParam.java

@@ -0,0 +1,58 @@
+package com.qs.mp.admin.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+
+/**
+ * @describe 商品库实体类
+ * @auther quanshu
+ * @create 2022-03-07 20:43:44
+ */
+@ApiModel(value = "商品列表查询参数")
+@Data
+public class GoodsQueryParam {
+
+	@ApiModelProperty(value = "商品ID", required = false)
+	private String goodsId;
+
+	@NotNull(message = "商品名称不能为空")
+	@ApiModelProperty(value = "商品名称", required = true)
+	private String title;
+
+	/**
+	 * 原兑换价格
+	 */
+	@ApiModelProperty(value = "最低成本", required = false)
+	private Integer minCost;
+
+	/**
+	 * 现兑换价格
+	 */
+	@ApiModelProperty(value = "最高成本", required = false)
+	private Integer maxCost;
+
+	/**
+	 * 商品价值
+	 */
+	@ApiModelProperty(value = "最低价格", required = false)
+	private Integer minValue;
+
+	/**
+	 * 库存数量
+	 */
+	@ApiModelProperty(value = "最高低价格", required = false)
+	private Integer maxValue;
+
+	/**
+	 * 上架状态;上架/下架
+	 */
+	@ApiModelProperty(value = "上架状态", required = false)
+	private String status;
+
+
+
+}

+ 2 - 1
mp-service/src/main/resources/mapper/admin/CouponMapper.xml

@@ -22,13 +22,14 @@
         <result column="valid_end" property="validEnd" />
         <result column="quantity" property="quantity" />
         <result column="distribute_qty" property="distributeQty" />
+        <result column="is_deleted" property="isDeleted" />
         <result column="created_time" property="createdTime" />
         <result column="updated_time" property="updatedTime" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        coupon_id, title, type, pic_url, description, discount_type, discount, min_order_amt, channel_shared_rate, status, use_area, distribute_type, composite_use, due_days, valid_start, valid_end, quantity, distribute_qty, created_time, updated_time
+        coupon_id, title, type, pic_url, description, discount_type, discount, min_order_amt, channel_shared_rate, status, use_area, distribute_type, composite_use, due_days, valid_start, valid_end, quantity, distribute_qty, is_deleted, created_time, updated_time
     </sql>
 
 </mapper>