Browse Source

新增投票接口

DESKTOP-VAEGFGM\zqc 6 months ago
parent
commit
ecab970c9d

+ 3 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java

@@ -615,4 +615,7 @@ public interface ErrorCodeConstants {
     ErrorCode VOTING_ACTIVITY_JOIN_ITEM_NOT_EXISTS = new ErrorCode(1_100_063_002, "投票活动参与被投票的不存在");
 
     ErrorCode VOTING_ACTIVITY_JOIN_USER_NOT_EXISTS = new ErrorCode(1_100_063_003, "投票参与人不存在");
+
+    ErrorCode VOTING_LIMIT = new ErrorCode(1_100_063_004, "投票已达上限!");
+
 }

+ 4 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/votingactivity/vo/VotingActivityJoinUserSaveReqVO.java

@@ -15,6 +15,10 @@ public class VotingActivityJoinUserSaveReqVO {
     @Schema(description = "用户id投票人", example = "4989")
     private Long userId;
 
+    @Schema(description = "活动id", example = "4989")
+    private Long votingActivityId;
+
+
     @Schema(description = "投票的项", example = "29329")
     private Long votingActivityJoinItemId;
 

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/votingactivity/vo/VotingRuleVo.java

@@ -4,7 +4,7 @@ public class VotingRuleVo {
 
     /**
      * 投票频率
-     * day 每天 week 每周 month 每月 year 每年
+     *  day 每天  month 每月 year 每年
      */
     private String dateType;
 

+ 48 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/votingactivity/AppVotingActivityJoinUserController.java

@@ -0,0 +1,48 @@
+package com.citu.module.menduner.system.controller.app.votingactivity;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.excel.core.util.ExcelUtils;
+import com.citu.module.menduner.common.util.LoginUserContext;
+import com.citu.module.menduner.system.controller.admin.votingactivity.vo.VotingActivityJoinUserPageReqVO;
+import com.citu.module.menduner.system.controller.admin.votingactivity.vo.VotingActivityJoinUserRespVO;
+import com.citu.module.menduner.system.controller.admin.votingactivity.vo.VotingActivityJoinUserSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.votingactivity.VotingActivityJoinUserDO;
+import com.citu.module.menduner.system.service.votingactivity.VotingActivityJoinUserService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+
+@Tag(name = "管理后台 - 投票参与人")
+@RestController
+@RequestMapping("/menduner/system/mde/voting-activity-join-user")
+@Validated
+public class AppVotingActivityJoinUserController {
+
+    @Resource
+    private VotingActivityJoinUserService votingActivityJoinUserService;
+
+    @PostMapping("/voting")
+    @Operation(summary = "投票")
+    public CommonResult<Long> createVotingActivityJoinUser(@Valid @RequestBody VotingActivityJoinUserSaveReqVO createReqVO) {
+        createReqVO.setUserId(LoginUserContext.getUserId());
+        return success(votingActivityJoinUserService.createVotingActivityJoinUser(createReqVO));
+    }
+
+
+}

+ 3 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/votingactivity/VotingActivityJoinUserDO.java

@@ -24,6 +24,9 @@ public class VotingActivityJoinUserDO extends BaseDO {
      */
     @TableId(type = IdType.ASSIGN_ID)
     private Long votingActivityJoinUserId;
+
+    private Long votingActivityId;
+
     /**
      * 用户id投票人
      */

+ 52 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/votingactivity/VotingActivityJoinUserServiceImpl.java

@@ -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();
         }