فهرست منبع

Merge remote-tracking branch 'origin/saas_2022_05_17_activity' into saas_2022_05_17_activity

hgw 3 سال پیش
والد
کامیت
62bbc67cc5

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

@@ -11,4 +11,6 @@ public interface LiveGoodsDao extends BaseDAO<Integer, LiveGoods> {
     int reduceStock(@Param("liveGoodsId") Integer liveGoodsId);
 
     void addStock(@Param("liveGoodsId") Integer liveGoodsId);
+
+    LiveGoods getByName(@Param("goodsName") String goodsName);
 }

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

@@ -19,6 +19,9 @@ public interface LiveGoodsMapperService extends BaseService<Integer, LiveGoodsMa
     //商品下架
     void downGoods(Integer liveGoodsId, String liveId);
 
+    //商品下架
+    void downGoods(String liveId);
+
     //商品上架
     void upGoods(Integer liveGoodsId, String liveId);
 

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

@@ -26,4 +26,6 @@ public interface LiveGoodsService extends BaseService<Integer, LiveGoods> {
     void reduceGoodsFreezeStock(Integer liveGoodsId, String liveId);
 
     Object queryGoodsPage(LiveGoodsQueryInfo queryInfo);
+
+    void add(LiveGoods liveGoods);
 }

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

@@ -17,6 +17,7 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -282,13 +283,13 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 		}
 		String activeConfig = sysConfigDao.findConfigValue("cloud_teacher_active_config");
 		List<Cloud2022ActivityDto> cloud2022ActivityDtos = JSONArray.parseArray(activeConfig, Cloud2022ActivityDto.class);
-		Cloud2022ActivityDto activityDto = cloud2022ActivityDtos.stream().filter(e -> e.getOrganId().contains(sysUser.getOrganId().toString())).findFirst().get();
-		if(Objects.isNull(activityDto)){
+		List<Cloud2022ActivityDto> activityDtos = cloud2022ActivityDtos.stream().filter(e -> e.getOrganId().contains(sysUser.getOrganId().toString())).collect(Collectors.toList());
+		if(CollectionUtils.isEmpty(activityDtos)){
 			map.put("courseNum",0);
 			return map;
 		}
 		//是否还有购买资格
-		Integer activityId = Integer.parseInt(activityDto.getActivityId());
+		Integer activityId = Integer.parseInt(activityDtos.get(0).getActivityId());
 		Integer noCourseNum = activityUserMapperDao.getStudentNoMapperInfo(sysUser.getId(), activityId);
 		map.put("courseNum",noCourseNum == null?0:noCourseNum);
 		return map;

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -79,6 +79,8 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     private ImLiveBroadcastRoomMemberService liveBroadcastRoomMemberService;
     @Autowired
     private ImLiveBroadcastRoomDataService liveBroadcastRoomDataService;
+    @Autowired
+    private LiveGoodsMapperService liveGoodsMapperService;
 
     //待替换的变量
     public static final String USER_ID = "${userId}";
@@ -437,6 +439,9 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         room.setPopularize(0);//销毁直播间后要关闭推广
         this.updateById(room);
 
+        //下架商品
+        liveGoodsMapperService.downGoods(room.getRoomUid());
+
         //向聊天室发自定义消息踢出所有人
         try {
             ImRoomMessage message = new ImRoomMessage();

+ 20 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LiveGoodsMapperServiceImpl.java

@@ -17,12 +17,14 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
+import org.apache.commons.collections.CollectionUtils;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class LiveGoodsMapperServiceImpl extends BaseServiceImpl<Integer, LiveGoodsMapper>  implements LiveGoodsMapperService {
@@ -113,6 +115,20 @@ public class LiveGoodsMapperServiceImpl extends BaseServiceImpl<Integer, LiveGoo
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
+	public void downGoods(String liveId){
+		ImLiveBroadcastRoom imLiveBroadcastRoom = Optional
+				.of(imLiveBroadcastRoomService.getBaseMapper().selectOne(new QueryWrapper<ImLiveBroadcastRoom>().eq("room_uid_",liveId))).
+				orElseThrow(() -> new RuntimeException("直播间不存在"));
+		List<LiveGoodsMapperDto> liveGoodsList = liveGoodsMapperDao.getLiveGoodsList(liveId, null, true);
+		if (CollectionUtils.isEmpty(liveGoodsList)) {
+			return;
+		}
+		for (LiveGoodsMapperDto liveGoodsMapperDto : liveGoodsList) {
+			this.down(liveGoodsMapperDto.getId(), liveId,imLiveBroadcastRoom);
+		}
+	}
+	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public void downGoods(Integer liveGoodsId, String liveId){
 		ImLiveBroadcastRoom imLiveBroadcastRoom = Optional
 				.of(imLiveBroadcastRoomService.getBaseMapper().selectOne(new QueryWrapper<ImLiveBroadcastRoom>().eq("room_uid_",liveId))).
@@ -122,7 +138,10 @@ public class LiveGoodsMapperServiceImpl extends BaseServiceImpl<Integer, LiveGoo
 		if(!liveGoodsMapper.getStatus()){
 			throw new BizException("该商品已下架");
 		}
-		//下架直播间商品
+		this.down(liveGoodsId, liveId,imLiveBroadcastRoom);
+	}
+
+	private void down(Integer liveGoodsId, String liveId,ImLiveBroadcastRoom imLiveBroadcastRoom){
 		int i = liveGoodsMapperDao.updateStatus(liveId, liveGoodsId, false);
 		if (i == 0) {
 			return;

+ 11 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LiveGoodsServiceImpl.java

@@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.TimeUnit;
@@ -153,7 +154,16 @@ public class LiveGoodsServiceImpl extends BaseServiceImpl<Integer, LiveGoods>  i
 		return queryPage(queryInfo);
 	}
 
-	public void stockLock(String lockKey, BiConsumer<Integer,String> consumer, Integer liveGoodsId, String liveId) {
+    @Override
+	@Transactional(rollbackFor = Exception.class)
+    public void add(LiveGoods liveGoods) {
+		//商品名称不能重复
+		LiveGoods goods = liveGoodsDao.getByName(liveGoods.getName());
+		if (goods != null) throw new BizException("商品名称已存在");
+		liveGoodsDao.insert(liveGoods);
+    }
+
+    public void stockLock(String lockKey, BiConsumer<Integer,String> consumer, Integer liveGoodsId, String liveId) {
 		RLock lock = redissonClient.getLock(lockKey);
 		try{
 			lock.lock();

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -252,12 +252,12 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         if(memberPayParamDto.getLiveGoodsId() == 1){
             String activeConfig = sysConfigDao.findConfigValue("cloud_teacher_active_config");
             List<Cloud2022ActivityDto> cloud2022ActivityDtos = JSONArray.parseArray(activeConfig, Cloud2022ActivityDto.class);
-            Cloud2022ActivityDto activityDto = cloud2022ActivityDtos.stream().filter(e -> e.getOrganId().contains(sysUser.getOrganId().toString())).findFirst().get();
-            if(Objects.isNull(activityDto)){
+            List<Cloud2022ActivityDto> activityDtos = cloud2022ActivityDtos.stream().filter(e -> e.getOrganId().contains(sysUser.getOrganId().toString())).collect(Collectors.toList());
+            if(CollectionUtils.isEmpty(activityDtos)){
                 throw new BizException("当前分部暂未开通活动");
             }
             //是否还有购买资格
-            activityId = Integer.parseInt(activityDto.getActivityId());
+            activityId = Integer.parseInt(activityDtos.get(0).getActivityId());
             VipGroupActivity vipGroupActivity = Optional.of(vipGroupActivityDao.get(activityId)).orElseThrow(()-> new BizException("活动不存在"));
             if(vipGroupActivity.getStudentMaxUsedTimes() != -1){
                 //获取活动购买次数

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -4694,6 +4694,8 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             activityUserMapper.setPaymentOrderId(order.getId());
             activityUserMapper.setTeacherId(student.getTeacherId());
             activityUserMapper.setVipFlag(1);
+            activityUserMapper.setActualPrice(order.getExpectAmount());
+            activityUserMapper.setTeacherId(order.getTenantId());
             if (activity.isPayToBalance()) {
                 boolean appendCourseBalance = sysUserCashAccountService.appendCourseBalance(userId, studentPaymentOrder.getExpectAmount(), PlatformCashAccountDetailTypeEnum.RECHARGE, "通用营销活动购买");
                 if (!appendCourseBalance) {

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/LiveGoodsMapper.xml

@@ -115,4 +115,7 @@
 	<select id="getLock" resultMap="LiveGoods">
 		SELECT * FROM live_goods WHERE id_ = #{id} LIMIT 1 FOR UPDATE
 	</select>
+	<select id="getByName" resultMap="LiveGoods">
+		SELECT * FROM live_goods WHERE name_ = #{name} LIMIT 1
+	</select>
 </mapper>

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

@@ -78,7 +78,7 @@
 				AND lgm.live_id_ = #{liveId}
 			</if>
 			<if test="search != null and search != ''">
-				AND (lg.name_ LIKE '%${search}%' OR lg.id_ = ${search})
+				AND (lg.name_ LIKE CONCAT('%',#{search},'%') OR lg.id_ = #{search})
 			</if>
 			<if test="status != null">
 				AND lgm.status_ = #{status}

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

@@ -37,7 +37,7 @@ public class LiveGoodsController extends BaseController {
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('liveGoods/add')")
     public HttpResponseResult add(@RequestBody LiveGoods liveGoods) {
-        liveGoodsService.insert(liveGoods);
+        liveGoodsService.add(liveGoods);
         return succeed();
     }