zoujiajian 1 an în urmă
părinte
comite
136f2811f4

+ 5 - 0
netflix-common/src/main/java/com/cyksj/common/constant/Constant.java

@@ -440,4 +440,9 @@ public interface Constant {
 	 * 镜像店铺默认LOGO
 	 */
 	String USER_MIRROR_SHOP_DEFAULT_LOGO = "https://cdn2.yicanggongyi.com/picture/08944798d95e42f62f3bb63d8109dcf1-1732169951288.png";
+
+	/**
+	 * 用户镜像裂变用户名单key
+	 */
+	String USER_MIRROR_FISSION_USER_LIST_KEY = "user_mirror_fission_user_list_key";
 }

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/fission/UserMirrorFissionFrontService.java

@@ -15,5 +15,5 @@ public interface UserMirrorFissionFrontService {
 
 	UserMirrorFissionRecord getPresentFissionTicket(long userId);
 
-	void recordUserMirrorFission(long userId, Long relationId);
+	void recordUserMirrorFission(long userId, Long relationId) throws Exception;
 }

+ 25 - 1
netflix-service/src/main/java/com/cyksj/service/fission/impl/UserMirrorFissionFrontServiceImpl.java

@@ -1,8 +1,11 @@
 package com.cyksj.service.fission.impl;
 
 import cn.hutool.core.date.DateTime;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.cyksj.common.constant.Constant;
 import com.cyksj.common.exception.BusinessRuntimeException;
+import com.cyksj.common.util.Jsons;
 import com.cyksj.mapper.GoodsDonSkuMapper;
 import com.cyksj.mapper.GroupsMapper;
 import com.cyksj.mapper.GroupsRelationMapper;
@@ -10,6 +13,7 @@ import com.cyksj.mapper.OrderDonMapper;
 import com.cyksj.mapper.fission.UserMirrorFissionReceiveRecordMapper;
 import com.cyksj.mapper.fission.UserMirrorFissionRecordMapper;
 import com.cyksj.mapper.fission.UserMirrorFissionTicketConfigMapper;
+import com.cyksj.mapper.sys.SysConfigMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.service.fission.UserMirrorFissionFrontService;
 import com.cyksj.service.relation.GroupRelationFrontService;
@@ -21,6 +25,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * 项目名: yhlxj2
@@ -49,6 +54,8 @@ public class UserMirrorFissionFrontServiceImpl implements UserMirrorFissionFront
 	private final GroupsMapper groupsMapper;
 
 	private final UserMirrorFissionTicketConfigMapper userMirrorFissionTicketConfigMapper;
+
+	private final SysConfigMapper sysConfigMapper;
 	@Override
 	public Boolean getPurchasedMirrorStatus(long userId, Long goodsId) {
 		return hasPaidMirrorTicket(userId, goodsId);
@@ -113,7 +120,7 @@ public class UserMirrorFissionFrontServiceImpl implements UserMirrorFissionFront
 	}
 
 	@Override
-	public void recordUserMirrorFission(long userId, Long relationId) {
+	public void recordUserMirrorFission(long userId, Long relationId) throws Exception {
 		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
 		GroupsRelation relation = groupsRelationMapper.selectOne(Wrappers.lambdaQuery(GroupsRelation.class)
 				.in(GroupsRelation::getUserId, userIdList)
@@ -131,6 +138,23 @@ public class UserMirrorFissionFrontServiceImpl implements UserMirrorFissionFront
 		if (count > 0) {
 			return;
 		}
+		//特定老用户可进行镜像裂变活动
+		SysConfig sysConfig = sysConfigMapper.selectOne(Wrappers.lambdaQuery(SysConfig.class)
+				.eq(SysConfig::getSysKey, Constant.USER_MIRROR_FISSION_USER_LIST_KEY)
+				.last("limit 1"));
+		if (sysConfig == null || StrUtil.isEmpty(sysConfig.getSysValue())) {
+			throw BusinessRuntimeException.getInstance("活动已结束");
+		}
+		List<Long> fission_userIds = Jsons.parseList(sysConfig.getSysValue(), Long.class);
+		AtomicBoolean isCt = new AtomicBoolean(false);
+		userIdList.forEach(uid -> {
+			if (fission_userIds.contains(uid)) {
+				isCt.set(true);
+			}
+		});
+		if (!isCt.get()) {
+			throw BusinessRuntimeException.getInstance("您不符合该活动要求");
+		}
 		UserMirrorFissionTicketConfig userMirrorFissionTicketConfig = userMirrorFissionTicketConfigMapper.selectOne(Wrappers.lambdaQuery(UserMirrorFissionTicketConfig.class)
 				.eq(UserMirrorFissionTicketConfig::getGoodsId, sku.getGoodsId())
 				.last("limit 1"));