|
@@ -1,5 +1,8 @@
|
|
|
package com.citu.module.menduner.system.service.votingactivity;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.votingactivity.VotingActivityDO;
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.votingactivity.VotingActivityJoinItemDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.votingactivity.VotingActivityJoinUserDO;
|
|
|
import com.citu.module.menduner.system.dal.mysql.votingactivity.VotingActivityJoinUserMapper;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -16,6 +19,7 @@ import com.citu.framework.common.util.object.BeanUtils;
|
|
|
|
|
|
import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
import static com.citu.module.menduner.system.enums.ErrorCodeConstants.VOTING_ACTIVITY_JOIN_USER_NOT_EXISTS;
|
|
|
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.VOTING_LIMIT;
|
|
|
|
|
|
/**
|
|
|
* 投票参与人 Service 实现类
|
|
@@ -29,12 +33,58 @@ public class VotingActivityJoinUserServiceImpl implements VotingActivityJoinUser
|
|
|
@Resource
|
|
|
private VotingActivityJoinUserMapper votingActivityJoinUserMapper;
|
|
|
|
|
|
+ @Resource
|
|
|
+ VotingActivityService votingActivityService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ VotingActivityJoinItemService votingActivityJoinItemService;
|
|
|
+
|
|
|
@Override
|
|
|
public Long createVotingActivityJoinUser(VotingActivityJoinUserSaveReqVO createReqVO) {
|
|
|
- // 插入
|
|
|
+ VotingActivityDO votingActivity = votingActivityService.getVotingActivity(createReqVO.getVotingActivityId());
|
|
|
+ VotingRuleVo votingRule = votingActivity.getVotingRule();
|
|
|
+ if("day".equals(votingRule.getDateType())){
|
|
|
+ Long count = votingActivityJoinUserMapper.selectCount(new LambdaQueryWrapper<VotingActivityJoinUserDO>()
|
|
|
+ .eq(VotingActivityJoinUserDO::getUserId, createReqVO.getUserId())
|
|
|
+ .eq(VotingActivityJoinUserDO::getVotingActivityId, createReqVO.getVotingActivityId())
|
|
|
+ .apply("date(create_time) = date(now())")
|
|
|
+
|
|
|
+ );
|
|
|
+ if(count >= votingRule.getNum()){
|
|
|
+ throw exception(VOTING_LIMIT);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if("month".equals(votingRule.getDateType())){
|
|
|
+ Long count = votingActivityJoinUserMapper.selectCount(new LambdaQueryWrapper<VotingActivityJoinUserDO>()
|
|
|
+ .eq(VotingActivityJoinUserDO::getUserId, createReqVO.getUserId())
|
|
|
+ .eq(VotingActivityJoinUserDO::getVotingActivityId, createReqVO.getVotingActivityId())
|
|
|
+ .apply("left(create_time,7) = left(date(now()),7)")
|
|
|
+
|
|
|
+ );
|
|
|
+ if(count >= votingRule.getNum()){
|
|
|
+ throw exception(VOTING_LIMIT);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if("year".equals(votingRule.getDateType())){
|
|
|
+ Long count = votingActivityJoinUserMapper.selectCount(new LambdaQueryWrapper<VotingActivityJoinUserDO>()
|
|
|
+ .eq(VotingActivityJoinUserDO::getUserId, createReqVO.getUserId())
|
|
|
+ .eq(VotingActivityJoinUserDO::getVotingActivityId, createReqVO.getVotingActivityId())
|
|
|
+ .apply("left(create_time,4) = left(date(now()),4)")
|
|
|
+
|
|
|
+ );
|
|
|
+ if(count >= votingRule.getNum()){
|
|
|
+ throw exception(VOTING_LIMIT);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // 插入
|
|
|
VotingActivityJoinUserDO votingActivityJoinUser = BeanUtils.toBean(createReqVO, VotingActivityJoinUserDO.class);
|
|
|
votingActivityJoinUserMapper.insert(votingActivityJoinUser);
|
|
|
- // 返回
|
|
|
+ // 返回
|
|
|
return votingActivityJoinUser.getVotingActivityJoinUserId();
|
|
|
}
|
|
|
|