소스 검색

小小训练营

zouxuan 3 년 전
부모
커밋
247fdbf086

+ 0 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/LiveGoodsDao.java

@@ -6,7 +6,6 @@ import org.apache.ibatis.annotations.Param;
 
 public interface LiveGoodsDao extends BaseDAO<Integer, LiveGoods> {
 
-
     LiveGoods getLock(Integer liveGoodsId);
 
     int reduceStock(@Param("liveGoodsId") Integer liveGoodsId);

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/LiveGoodsMapperDao.java

@@ -19,9 +19,11 @@ public interface LiveGoodsMapperDao extends BaseDAO<Integer, LiveGoodsMapper> {
 
     List<LiveGoodsMapperDto> getLiveGoodsList(@Param("liveId") String liveId, @Param("liveGoodsId") Integer liveGoodsId, @Param("status") Boolean status);
 
-    void batchInsert(@Param("liveGoodsMappers") List<LiveGoodsMapper> liveGoodsMappers);
+    void batchInsert(@Param("liveId") String liveId, @Param("liveGoodsIds") String[] liveGoodsIds);
 
     int countLiveGoods(Map<String, Object> params);
 
     List<LiveGoodsMapperDto> queryGoodsPage(Map<String, Object> params);
+
+    List<Integer> queryGoodsIdsByLiveId(@Param("liveId") String liveId);
 }

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/LiveGoodsQueryInfo.java

@@ -0,0 +1,30 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+public class LiveGoodsQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "直播房间号(需要排出当前直播间的商品)",required = false)
+    private String liveId;
+
+    private List<Integer> ignoreGoodsIds;
+
+    public List<Integer> getIgnoreGoodsIds() {
+        return ignoreGoodsIds;
+    }
+
+    public void setIgnoreGoodsIds(List<Integer> ignoreGoodsIds) {
+        this.ignoreGoodsIds = ignoreGoodsIds;
+    }
+
+    public String getLiveId() {
+        return liveId;
+    }
+
+    public void setLiveId(String liveId) {
+        this.liveId = liveId;
+    }
+}

+ 3 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/LiveGoodsMapperService.java

@@ -1,20 +1,17 @@
 package com.ym.mec.biz.service;
 
-import com.ym.mec.biz.dal.dao.LiveGoodsMapperDao;
 import com.ym.mec.biz.dal.dto.LiveGoodsMapperDto;
-import com.ym.mec.biz.dal.entity.LiveGoods;
 import com.ym.mec.biz.dal.entity.LiveGoodsMapper;
 import com.ym.mec.biz.dal.page.LiveGoodsMapperQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
-import java.util.Collection;
 import java.util.List;
 
 public interface LiveGoodsMapperService extends BaseService<Integer, LiveGoodsMapper> {
 
     //新增直播间商品
-    void add(List<LiveGoodsMapper> liveGoodsMappers);
+    void add(String liveId, String liveGoodsIds);
 
     //商品下架
     void downGoods(Integer liveGoodsId);
@@ -31,4 +28,6 @@ public interface LiveGoodsMapperService extends BaseService<Integer, LiveGoodsMa
     PageInfo<LiveGoodsMapperDto> queryGoodsPage(LiveGoodsMapperQueryInfo queryInfo);
 
     List<LiveGoodsMapperDto> getLiveGoodsList(String liveId, Integer liveGoodsId, Boolean status);
+
+    List<Integer> queryGoodsIdsByLiveId(String liveId);
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/LiveGoodsService.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.entity.LiveGoods;
+import com.ym.mec.biz.dal.page.LiveGoodsQueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface LiveGoodsService extends BaseService<Integer, LiveGoods> {
@@ -23,4 +24,6 @@ public interface LiveGoodsService extends BaseService<Integer, LiveGoods> {
 
     //商品冻结库存-1
     void reduceGoodsFreezeStock(Integer liveGoodsId, String liveId);
+
+    Object queryGoodsPage(LiveGoodsQueryInfo queryInfo);
 }

+ 7 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LiveGoodsMapperServiceImpl.java

@@ -46,8 +46,8 @@ public class LiveGoodsMapperServiceImpl extends BaseServiceImpl<Integer, LiveGoo
 
     @Override
 	@Transactional(rollbackFor = Exception.class)
-    public void add(List<LiveGoodsMapper> liveGoodsMappers) {
-		liveGoodsMapperDao.batchInsert(liveGoodsMappers);
+    public void add(String liveId, String liveGoodsIds) {
+		liveGoodsMapperDao.batchInsert(liveId,liveGoodsIds.split(","));
     }
 
 	@Override
@@ -93,6 +93,11 @@ public class LiveGoodsMapperServiceImpl extends BaseServiceImpl<Integer, LiveGoo
 		return liveGoodsMapperDao.getLiveGoodsList(liveId,liveGoodsId,status);
 	}
 
+	@Override
+	public List<Integer> queryGoodsIdsByLiveId(String liveId) {
+		return liveGoodsMapperDao.queryGoodsIdsByLiveId(liveId);
+	}
+
 	private void publishRoomMsg(ImLiveBroadcastRoom imLiveBroadcastRoom) {
 		ImRoomMessage message = new ImRoomMessage();
 		message.setIsIncludeSender(1);

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LiveGoodsServiceImpl.java

@@ -3,11 +3,13 @@ package com.ym.mec.biz.service.impl;
 import com.ym.mec.biz.dal.dao.LiveGoodsDao;
 import com.ym.mec.biz.dal.dto.RedisKeyConstant;
 import com.ym.mec.biz.dal.entity.LiveGoods;
+import com.ym.mec.biz.dal.page.LiveGoodsQueryInfo;
 import com.ym.mec.biz.service.LiveGoodsMapperService;
 import com.ym.mec.biz.service.LiveGoodsService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.apache.commons.lang3.StringUtils;
 import org.redisson.api.RBucket;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
@@ -15,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.TimeUnit;
 import java.util.function.BiConsumer;
@@ -140,6 +143,16 @@ public class LiveGoodsServiceImpl extends BaseServiceImpl<Integer, LiveGoods>  i
 		}
 	}
 
+	@Override
+	public Object queryGoodsPage(LiveGoodsQueryInfo queryInfo) {
+		if(StringUtils.isNotEmpty(queryInfo.getLiveId())){
+			//获取直播间关联的商品列表
+			List<Integer> goodsIds = liveGoodsMapperService.queryGoodsIdsByLiveId(queryInfo.getLiveId());
+			queryInfo.setIgnoreGoodsIds(goodsIds);
+		}
+		return queryPage(queryInfo);
+	}
+
 	public void stockLock(String lockKey, BiConsumer<Integer,String> consumer, Integer liveGoodsId, String liveId) {
 		RLock lock = redissonClient.getLock(lockKey);
 		try{

+ 7 - 1
mec-biz/src/main/resources/config/mybatis/LiveGoodsMapper.xml

@@ -88,7 +88,13 @@
 	<sql id="queryPageSql">
 		<where>
 			<if test="search != null and search != ''">
-				(name_ like '%${search}%' OR id_ = #{search})
+				AND (name_ like '%${search}%' OR id_ = #{search})
+			</if>
+			<if test="ignoreGoodsIds != null and ignoreGoodsIds.size > 0">
+				AND id_ NOT IN
+				<foreach collection="ignoreGoodsIds" item="ignoreGoodsId" open="(" separator="," close=")">
+					#{ignoreGoodsId}
+				</foreach>
 			</if>
 		</where>
 	</sql>

+ 6 - 2
mec-biz/src/main/resources/config/mybatis/LiveGoodsMapperMapper.xml

@@ -34,8 +34,8 @@
 	<insert id="batchInsert">
 		INSERT INTO live_goods_mapper (goods_id_,live_id_,create_time_,update_time_)
 		VALUES
-		<foreach collection="liveGoodsMappers" item="item" index="index" separator=",">
-			(#{item.goodsId},#{item.liveId},NOW(),NOW())
+		<foreach collection="liveGoodsIds" item="goodsId" index="index" separator=",">
+			(#{goodsId},#{liveId},NOW(),NOW())
 		</foreach>
 		ON DUPLICATE KEY UPDATE
 		goods_id_ = VALUES(goods_id_),
@@ -154,4 +154,8 @@
 		ORDER BY lgm.id_
 		<include refid="global.limit"/>
 	</select>
+	<select id="queryGoodsIdsByLiveId" resultType="java.lang.Integer">
+		SELECT DISTINCT lgm.goods_id_ FROM live_goods_mapper lgm
+		WHERE lgm.live_id_ = #{liveId}
+	</select>
 </mapper>

+ 3 - 3
mec-web/src/main/java/com/ym/mec/web/controller/LiveGoodsController.java

@@ -1,10 +1,10 @@
 package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.entity.LiveGoods;
+import com.ym.mec.biz.dal.page.LiveGoodsQueryInfo;
 import com.ym.mec.biz.service.LiveGoodsService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,8 +29,8 @@ public class LiveGoodsController extends BaseController {
     @ApiOperation("分页查询直播间商品")
     @PostMapping(value = "/page")
     @PreAuthorize("@pcs.hasPermissions('liveGoods/page')")
-    public HttpResponseResult page(QueryInfo queryInfo) {
-        return succeed(liveGoodsService.queryPage(queryInfo));
+    public HttpResponseResult page(LiveGoodsQueryInfo queryInfo) {
+        return succeed(liveGoodsService.queryGoodsPage(queryInfo));
     }
 
     @ApiOperation("新增直播间商品")

+ 6 - 2
mec-web/src/main/java/com/ym/mec/web/controller/LiveGoodsMapperController.java

@@ -38,8 +38,12 @@ public class LiveGoodsMapperController extends BaseController {
     @ApiOperation("新增直播间商品关联")
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('liveGoodsMapper/add')")
-    public HttpResponseResult add(@RequestBody List<LiveGoodsMapper> liveGoodsMappers) {
-        liveGoodsMapperService.add(liveGoodsMappers);
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "liveGoodsIds", value = "商品编号列表", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "liveId", value = "房间号", required = true,dataType = "String")
+    })
+    public HttpResponseResult add(String liveId, String liveGoodsIds) {
+        liveGoodsMapperService.add(liveId,liveGoodsIds);
         return succeed();
     }