zouxuan 3 years ago
parent
commit
8f2c85424c

+ 12 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/LuckDrawLogDao.java

@@ -2,7 +2,18 @@ package com.ym.mec.biz.dal.dao;
 
 
 import com.ym.mec.biz.dal.entity.LuckDrawLog;
 import com.ym.mec.biz.dal.entity.LuckDrawLog;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 
 public interface LuckDrawLogDao extends BaseDAO<Long, LuckDrawLog> {
 public interface LuckDrawLogDao extends BaseDAO<Long, LuckDrawLog> {
-	
+
+    /**
+    * @description: 奖品已使用的名称
+     * @param allPrizeIds
+    * @return java.lang.String
+    * @author zx
+    * @date 2021/11/19 15:46
+    */
+    String countUseNumByIds(@Param("prizeIds") List<Integer> allPrizeIds);
 }
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/LuckDrawPrizeDao.java

@@ -47,4 +47,6 @@ public interface LuckDrawPrizeDao extends BaseDAO<Integer, LuckDrawPrize> {
     List<HorseRaceLampDto> queryHorseRaceLampDto(int groupId);
     List<HorseRaceLampDto> queryHorseRaceLampDto(int groupId);
 
 
 	void batchUpdate(@Param("updateDraw") List<LuckDrawPrize> updateDraw);
 	void batchUpdate(@Param("updateDraw") List<LuckDrawPrize> updateDraw);
+
+    void deleteByIds(@Param("prizeIds") List<Integer> allPrizeIds);
 }
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/LuckDrawLogService.java

@@ -3,6 +3,8 @@ package com.ym.mec.biz.service;
 import com.ym.mec.biz.dal.entity.LuckDrawLog;
 import com.ym.mec.biz.dal.entity.LuckDrawLog;
 import com.ym.mec.common.service.BaseService;
 import com.ym.mec.common.service.BaseService;
 
 
+import java.util.List;
+
 public interface LuckDrawLogService extends BaseService<Long, LuckDrawLog> {
 public interface LuckDrawLogService extends BaseService<Long, LuckDrawLog> {
 
 
 	/**
 	/**
@@ -13,4 +15,13 @@ public interface LuckDrawLogService extends BaseService<Long, LuckDrawLog> {
 	 * @return
 	 * @return
 	 */
 	 */
 	boolean add(Long userId, Integer prizeId, Integer groupId);
 	boolean add(Long userId, Integer prizeId, Integer groupId);
+
+	/**
+	* @description: 奖品是否使用过
+	 * @param allPrizeIds
+	* @return void
+	* @author zx
+	* @date 2021/11/19 15:45
+	*/
+	String countUseNumByIds(List<Integer> allPrizeIds);
 }
 }

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LuckDrawLogServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service.impl;
 package com.ym.mec.biz.service.impl;
 
 
 import java.util.Date;
 import java.util.Date;
+import java.util.List;
 
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -32,4 +33,9 @@ public class LuckDrawLogServiceImpl extends BaseServiceImpl<Long, LuckDrawLog> i
 		return luckDrawLogDao.insert(log) > 0;
 		return luckDrawLogDao.insert(log) > 0;
 	}
 	}
 
 
+    @Override
+    public String countUseNumByIds(List<Integer> allPrizeIds) {
+		return luckDrawLogDao.countUseNumByIds(allPrizeIds);
+    }
+
 }
 }

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LuckDrawPrizeServiceImpl.java

@@ -48,6 +48,7 @@ public class LuckDrawPrizeServiceImpl extends BaseServiceImpl<Integer, LuckDrawP
 	}
 	}
 
 
 	@Override
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public boolean batchInsert(List<LuckDrawPrize> luckDrawPrizeList) {
 	public boolean batchInsert(List<LuckDrawPrize> luckDrawPrizeList) {
 		if (luckDrawPrizeList == null || luckDrawPrizeList.size() == 0) {
 		if (luckDrawPrizeList == null || luckDrawPrizeList.size() == 0) {
 			throw new BizException("请设置奖品");
 			throw new BizException("请设置奖品");
@@ -56,8 +57,26 @@ public class LuckDrawPrizeServiceImpl extends BaseServiceImpl<Integer, LuckDrawP
 		if(reduce != 1d){
 		if(reduce != 1d){
 			throw new BizException("中奖概率总和必须是100%");
 			throw new BizException("中奖概率总和必须是100%");
 		}
 		}
+
 		List<LuckDrawPrize> insertDraw = luckDrawPrizeList.stream().filter(e -> e.getId() == null).collect(Collectors.toList());
 		List<LuckDrawPrize> insertDraw = luckDrawPrizeList.stream().filter(e -> e.getId() == null).collect(Collectors.toList());
 		List<LuckDrawPrize> updateDraw = luckDrawPrizeList.stream().filter(e -> e.getId() != null).collect(Collectors.toList());
 		List<LuckDrawPrize> updateDraw = luckDrawPrizeList.stream().filter(e -> e.getId() != null).collect(Collectors.toList());
+		//全量奖品
+		List<LuckDrawPrize> luckDrawPrizes = luckDrawPrizeDao.queryDefaultPrize(luckDrawPrizeList.get(0).getGroupId());
+		if(luckDrawPrizes != null && luckDrawPrizes.size() > 0){
+			List<Integer> allPrizeIds = luckDrawPrizes.stream().map(e -> e.getId()).collect(Collectors.toList());
+			if(updateDraw != null && updateDraw.size() > 0){
+				List<Integer> updatePrizeIds = updateDraw.stream().map(e -> e.getId()).collect(Collectors.toList());
+				allPrizeIds.removeAll(updatePrizeIds);
+			}
+			if(allPrizeIds.size() > 0){
+				//是否使用过
+				String prizeName = luckDrawLogService.countUseNumByIds(allPrizeIds);
+				if(StringUtils.isNotEmpty(prizeName)){
+					throw new BizException("奖品 {} 已使用,无法删除",prizeName);
+				}
+				luckDrawPrizeDao.deleteByIds(allPrizeIds);
+			}
+		}
 		if(insertDraw != null && insertDraw.size() > 0){
 		if(insertDraw != null && insertDraw.size() > 0){
 			luckDrawPrizeDao.batchInsert(insertDraw);
 			luckDrawPrizeDao.batchInsert(insertDraw);
 		}
 		}

+ 9 - 1
mec-biz/src/main/resources/config/mybatis/LuckDrawLogMapper.xml

@@ -80,8 +80,16 @@
 		ORDER BY l.create_on_ DESC
 		ORDER BY l.create_on_ DESC
 		<include refid="global.limit" />
 		<include refid="global.limit" />
 	</select>
 	</select>
+    <select id="countUseNumByIds" resultType="java.lang.String">
+		SELECT GROUP_CONCAT(DISTINCT ldp.name_) FROM luck_draw_log ldl
+		LEFT JOIN luck_draw_prize ldp ON ldl.prize_id_ = ldp.id_
+		WHERE ldl.prize_id_ IN
+		<foreach collection="prizeIds" open="(" close=")" item="id" separator=",">
+			#{id}
+		</foreach>
+	</select>
 
 
-	<sql id="queryCondition">
+    <sql id="queryCondition">
 		<where>
 		<where>
 			<if test="prizeId != null">
 			<if test="prizeId != null">
 				AND l.prize_id_ = #{id}
 				AND l.prize_id_ = #{id}

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/LuckDrawPrizeMapper.xml

@@ -57,6 +57,12 @@
 		delete from luck_draw_prize
 		delete from luck_draw_prize
 		where id_ = #{id,jdbcType=INTEGER}
 		where id_ = #{id,jdbcType=INTEGER}
 	</delete>
 	</delete>
+	<delete id="deleteByIds">
+		DELETE FROM luck_draw_prize WHERE id_ IN
+		<foreach collection="prizeIds" open="(" close=")" item="id" separator=",">
+			#{id}
+		</foreach>
+	</delete>
 
 
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.LuckDrawPrize" useGeneratedKeys="true" keyColumn="id"
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.LuckDrawPrize" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
             keyProperty="id">