|
|
@@ -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"));
|