From 6a53233a381819bcdcc7acdc3a018db9b3b8a311 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Sat, 06 Jan 2024 16:12:55 +0800
Subject: [PATCH] 议事报名

---
 src/main/java/org/springblade/modules/discuss/entity/UserPublicEnrollEntity.java         |   11 ++-
 src/main/java/org/springblade/modules/discuss/mapper/UserPublicEnrollMapper.xml          |    1 
 src/main/java/org/springblade/modules/discuss/mapper/UserTopicsMapper.xml                |   23 ++++---
 src/main/java/org/springblade/modules/discuss/mapper/TopicsMapper.xml                    |    5 +
 src/main/java/org/springblade/modules/discuss/service/impl/UserTopicsServiceImpl.java    |   50 ++++++++++++++--
 src/main/java/org/springblade/modules/discuss/vo/TopicsVO.java                           |    6 +-
 src/main/java/org/springblade/modules/discuss/entity/TopicsEntity.java                   |   10 ++
 src/main/java/org/springblade/modules/discuss/controller/UserPublicEnrollController.java |    2 
 src/main/java/org/springblade/modules/discuss/controller/UserTopicsController.java       |    6 -
 src/main/java/org/springblade/modules/discuss/entity/UserTopicsEntity.java               |    5 +
 src/main/java/org/springblade/modules/discuss/mapper/PublicDiscussMapper.xml             |    7 +-
 src/main/java/org/springblade/modules/discuss/service/IUserTopicsService.java            |    4 
 12 files changed, 91 insertions(+), 39 deletions(-)

diff --git a/src/main/java/org/springblade/modules/discuss/controller/UserPublicEnrollController.java b/src/main/java/org/springblade/modules/discuss/controller/UserPublicEnrollController.java
index 213540e..69e7368 100644
--- a/src/main/java/org/springblade/modules/discuss/controller/UserPublicEnrollController.java
+++ b/src/main/java/org/springblade/modules/discuss/controller/UserPublicEnrollController.java
@@ -110,7 +110,7 @@
 		userPublicEnroll.setUserId(AuthUtil.getUserId());
 		// 判断是否一户一票 还是一人一票
 		IPublicDiscussService bean = SpringUtil.getBean(IPublicDiscussService.class);
-		PublicDiscussEntity one = bean.getOne(Wrappers.<PublicDiscussEntity>lambdaQuery().eq(PublicDiscussEntity::getId, userPublicEnroll.getPublicDiscussId()));
+		PublicDiscussEntity one = bean.getOne(Wrappers.<PublicDiscussEntity>lambdaQuery().eq(PublicDiscussEntity::getArticleId, userPublicEnroll.getArticleId()));
 		// 一户一票
 		if (one.getVoteRestrictions().equals(CommonConstant.NUMBER_ONE)) {
 			long count = userPublicEnrollService.count(Wrappers.<UserPublicEnrollEntity>lambdaQuery()
diff --git a/src/main/java/org/springblade/modules/discuss/controller/UserTopicsController.java b/src/main/java/org/springblade/modules/discuss/controller/UserTopicsController.java
index 6d28ff7..9cc4d3a 100644
--- a/src/main/java/org/springblade/modules/discuss/controller/UserTopicsController.java
+++ b/src/main/java/org/springblade/modules/discuss/controller/UserTopicsController.java
@@ -32,10 +32,10 @@
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.SpringUtil;
 import org.springblade.modules.discuss.entity.PublicDiscussEntity;
-import org.springblade.modules.discuss.entity.TopicsEntity;
 import org.springblade.modules.discuss.entity.UserTopicsEntity;
 import org.springblade.modules.discuss.service.IPublicDiscussService;
 import org.springblade.modules.discuss.service.IUserTopicsService;
+import org.springblade.modules.discuss.vo.TopicsVO;
 import org.springblade.modules.discuss.vo.UserTopicsVO;
 import org.springblade.modules.discuss.wrapper.UserTopicsWrapper;
 import org.springframework.web.bind.annotation.*;
@@ -157,10 +157,8 @@
 	@PostMapping("/updateBath")
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "批量更新", notes = "传入topics")
-	public R updateBath(@Valid @RequestBody List<TopicsEntity> topics) {
-
+	public R updateBath(@Valid @RequestBody List<TopicsVO> topics) throws Exception {
 		Boolean result = userTopicsService.batchSave(topics);
-
 		return R.status(result);
 	}
 
diff --git a/src/main/java/org/springblade/modules/discuss/entity/TopicsEntity.java b/src/main/java/org/springblade/modules/discuss/entity/TopicsEntity.java
index 47348dc..b099b1b 100644
--- a/src/main/java/org/springblade/modules/discuss/entity/TopicsEntity.java
+++ b/src/main/java/org/springblade/modules/discuss/entity/TopicsEntity.java
@@ -21,7 +21,6 @@
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.springblade.core.mp.base.BaseEntity;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -106,7 +105,9 @@
 	@TableField("parent_id")
 	private Integer parentId;
 
-	/** 层级 */
+	/**
+	 * 层级
+	 */
 	@ApiModelProperty(value = "层级", example = "")
 	@TableField("level")
 	private Integer level;
@@ -114,5 +115,10 @@
 	@ApiModelProperty(value = "选中", example = "")
 	@TableField("selected")
 	private String selected;
+
+
+	@ApiModelProperty(value = "文章id", example = "")
+	@TableField("article_id")
+	private Integer articleId;
 }
 
diff --git a/src/main/java/org/springblade/modules/discuss/entity/UserPublicEnrollEntity.java b/src/main/java/org/springblade/modules/discuss/entity/UserPublicEnrollEntity.java
index 18155ed..a43fba8 100644
--- a/src/main/java/org/springblade/modules/discuss/entity/UserPublicEnrollEntity.java
+++ b/src/main/java/org/springblade/modules/discuss/entity/UserPublicEnrollEntity.java
@@ -21,7 +21,6 @@
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.springblade.core.mp.base.BaseEntity;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -78,11 +77,17 @@
 
 	@ApiModelProperty(value = "签名地址", example = "")
 	@TableField("signature_path")
-	private String  signaturePath;
+	private String signaturePath;
 
-	/** 门牌地址编码 */
+	/**
+	 * 门牌地址编码
+	 */
 	@ApiModelProperty(value = "门牌地址编码")
 	@TableField("house_code")
 	private String houseCode;
+
+	@ApiModelProperty(value = "文章id", example = "")
+	@TableField("article_id")
+	private Integer articleId;
 }
 
diff --git a/src/main/java/org/springblade/modules/discuss/entity/UserTopicsEntity.java b/src/main/java/org/springblade/modules/discuss/entity/UserTopicsEntity.java
index ba1a827..12860a6 100644
--- a/src/main/java/org/springblade/modules/discuss/entity/UserTopicsEntity.java
+++ b/src/main/java/org/springblade/modules/discuss/entity/UserTopicsEntity.java
@@ -93,7 +93,7 @@
 
 	@ApiModelProperty(value = "签名地址", example = "")
 	@TableField("signature_path")
-	private String  signaturePath;
+	private String signaturePath;
 
 	/**
 	 * 门牌地址编码
@@ -103,4 +103,7 @@
 	private String houseCode;
 
 
+	@ApiModelProperty(value = "文章id", example = "")
+	@TableField("article_id")
+	private Integer articleId;
 }
diff --git a/src/main/java/org/springblade/modules/discuss/mapper/PublicDiscussMapper.xml b/src/main/java/org/springblade/modules/discuss/mapper/PublicDiscussMapper.xml
index a9af06d..4486642 100644
--- a/src/main/java/org/springblade/modules/discuss/mapper/PublicDiscussMapper.xml
+++ b/src/main/java/org/springblade/modules/discuss/mapper/PublicDiscussMapper.xml
@@ -62,7 +62,8 @@
         jpd.vote_number_public,
         jpd.appoint_user,
         jpd.user_ids,
-        jpd.event_type
+        jpd.event_type,
+        jpd.signature_flag
         from jczz_public_discuss jpd
         <where>
             <if test="publicDiscuss.id != null "> and id = #{publicDiscuss.id}</if>
@@ -126,11 +127,11 @@
         jpd.user_ids,
         jpd.event_type,
         jpd.signature_flag,
-        (SELECT user_id from jczz_user_public_enroll where user_id = #{userId} and public_discuss_id = jpd.id)userId
+        (SELECT user_id from jczz_user_public_enroll where user_id = #{userId} and article_id = jpd.article_id)userId
         from
         jczz_public_discuss jpd
         <where>
-            <if test="id != null "> and jpd.id = #{id}</if>
+            <if test="articleId != null ">and jpd.article_id = #{articleId}</if>
         </where>
     </select>
 
diff --git a/src/main/java/org/springblade/modules/discuss/mapper/TopicsMapper.xml b/src/main/java/org/springblade/modules/discuss/mapper/TopicsMapper.xml
index c95330c..a9a4940 100644
--- a/src/main/java/org/springblade/modules/discuss/mapper/TopicsMapper.xml
+++ b/src/main/java/org/springblade/modules/discuss/mapper/TopicsMapper.xml
@@ -86,8 +86,10 @@
         jt.delete_flag,
         jt.public_discuss_id,
         jt.parent_id,
+        jt.article_id,
         jt.LEVEL,
-        ( SELECT jut.selected FROM jczz_user_topics jut WHERE jut.topics_id = jt.id AND jut.user_id = #{userId} ) selected
+        ( SELECT jut.selected FROM jczz_user_topics jut WHERE jut.article_id = jt.article_id AND jut.user_id = #{userId}
+        ) selected
         FROM
         jczz_topics jt
         <where>
@@ -104,6 +106,7 @@
             <if test="publicDiscussId != null "> and jt.public_discuss_id = #{publicDiscussId}</if>
             <if test="parentId != null "> and jt.parent_id = #{parentId}</if>
             <if test="level != null "> and jt.level = #{level}</if>
+            <if test="articleId != null ">and jt.article_id = #{articleId}</if>
             and jt.delete_flag = 0
         </where>
     </select>
diff --git a/src/main/java/org/springblade/modules/discuss/mapper/UserPublicEnrollMapper.xml b/src/main/java/org/springblade/modules/discuss/mapper/UserPublicEnrollMapper.xml
index 13d47f4..94676e8 100644
--- a/src/main/java/org/springblade/modules/discuss/mapper/UserPublicEnrollMapper.xml
+++ b/src/main/java/org/springblade/modules/discuss/mapper/UserPublicEnrollMapper.xml
@@ -51,6 +51,7 @@
         <if test="userPublicEnroll.createTime != null "> and jup.create_time = #{userPublicEnroll.createTime}</if>
         <if test="userPublicEnroll.updateTime != null "> and jup.update_time = #{userPublicEnroll.updateTime}</if>
         <if test="userPublicEnroll.deletedFlag != null "> and jup.deleted_flag = #{userPublicEnroll.deletedFlag}</if>
+        <if test="userPublicEnroll.articleId != null ">and jup.article_id = #{userPublicEnroll.articleId}</if>
     </where>
     </select>
 
diff --git a/src/main/java/org/springblade/modules/discuss/mapper/UserTopicsMapper.xml b/src/main/java/org/springblade/modules/discuss/mapper/UserTopicsMapper.xml
index c7b0108..105af85 100644
--- a/src/main/java/org/springblade/modules/discuss/mapper/UserTopicsMapper.xml
+++ b/src/main/java/org/springblade/modules/discuss/mapper/UserTopicsMapper.xml
@@ -31,7 +31,7 @@
 
     <select id="selectUserTopicsPage" resultMap="userTopicsResultMap">
         SELECT
-        jut.public_discuss_id,
+        jut.article_id,
         bu.avatar,
         bu.`name`,
         bu.phone,
@@ -49,8 +49,8 @@
             <if test="userTopics.createTime != null ">and jut.create_time = #{userTopics.createTime}</if>
             <if test="userTopics.updateTime != null ">and jut.update_time = #{userTopics.updateTime}</if>
             <if test="userTopics.deleteFlag != null ">and jut.delete_flag = #{userTopics.deleteFlag}</if>
-            <if test="userTopics.publicDiscussId != null ">and jut.public_discuss_id = #{userTopics.publicDiscussId}
-                GROUP BY jut.public_discuss_id,
+            <if test="userTopics.articleId != null ">and jut.article_id = #{userTopics.articleId}
+                GROUP BY jut.article_id,
                 bu.avatar,
                 bu.`name`,
                 bu.phone,
@@ -60,16 +60,17 @@
         </where>
     </select>
 
-    <select id="selectUserTopicsList" parameterType="org.springblade.modules.discuss.dto.UserTopicsDTO" resultMap="userTopicsResultMap">
+    <select id="selectUserTopicsList" parameterType="org.springblade.modules.discuss.dto.UserTopicsDTO"
+            resultMap="userTopicsResultMap">
         <include refid="selectUserTopics"/>
         <where>
-            <if test="id != null "> and id = #{id}</if>
-            <if test="userId != null "> and user_id = #{userId}</if>
-            <if test="topicsId != null "> and topics_id = #{topicsId}</if>
-            <if test="createTime != null "> and create_time = #{createTime}</if>
-            <if test="updateTime != null "> and update_time = #{updateTime}</if>
-            <if test="deleteFlag != null "> and delete_flag = #{deleteFlag}</if>
-            <if test="publicDiscussId != null "> and public_discuss_id = #{publicDiscussId}</if>
+            <if test="id != null ">and id = #{id}</if>
+            <if test="userId != null ">and user_id = #{userId}</if>
+            <if test="topicsId != null ">and topics_id = #{topicsId}</if>
+            <if test="createTime != null ">and create_time = #{createTime}</if>
+            <if test="updateTime != null ">and update_time = #{updateTime}</if>
+            <if test="deleteFlag != null ">and delete_flag = #{deleteFlag}</if>
+            <if test="publicDiscussId != null ">and public_discuss_id = #{publicDiscussId}</if>
         </where>
     </select>
 
diff --git a/src/main/java/org/springblade/modules/discuss/service/IUserTopicsService.java b/src/main/java/org/springblade/modules/discuss/service/IUserTopicsService.java
index 8ea6ca6..031af4d 100644
--- a/src/main/java/org/springblade/modules/discuss/service/IUserTopicsService.java
+++ b/src/main/java/org/springblade/modules/discuss/service/IUserTopicsService.java
@@ -18,8 +18,8 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.modules.discuss.entity.TopicsEntity;
 import org.springblade.modules.discuss.entity.UserTopicsEntity;
+import org.springblade.modules.discuss.vo.TopicsVO;
 import org.springblade.modules.discuss.vo.UserTopicsVO;
 
 import java.util.List;
@@ -42,7 +42,7 @@
 	IPage<UserTopicsVO> selectUserTopicsPage(IPage<UserTopicsVO> page, UserTopicsVO userTopics);
 
 
-    Boolean batchSave(List<TopicsEntity> topics);
+	Boolean batchSave(List<TopicsVO> topics) throws Exception;
 
 	Integer getCount(Integer id);
 }
diff --git a/src/main/java/org/springblade/modules/discuss/service/impl/UserTopicsServiceImpl.java b/src/main/java/org/springblade/modules/discuss/service/impl/UserTopicsServiceImpl.java
index d6f00db..16cbbd8 100644
--- a/src/main/java/org/springblade/modules/discuss/service/impl/UserTopicsServiceImpl.java
+++ b/src/main/java/org/springblade/modules/discuss/service/impl/UserTopicsServiceImpl.java
@@ -23,13 +23,18 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang3.StringUtils;
+import org.jetbrains.annotations.Nullable;
+import org.springblade.common.constant.CommonConstant;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.modules.discuss.entity.PublicDiscussEntity;
 import org.springblade.modules.discuss.entity.TopicsEntity;
-import org.springblade.modules.discuss.entity.UserPublicEnrollEntity;
 import org.springblade.modules.discuss.entity.UserTopicsEntity;
 import org.springblade.modules.discuss.mapper.UserTopicsMapper;
+import org.springblade.modules.discuss.service.IPublicDiscussService;
 import org.springblade.modules.discuss.service.ITopicsService;
 import org.springblade.modules.discuss.service.IUserTopicsService;
+import org.springblade.modules.discuss.vo.TopicsVO;
 import org.springblade.modules.discuss.vo.UserTopicsVO;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -57,29 +62,56 @@
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public Boolean batchSave(List<TopicsEntity> topics) {
+	public Boolean batchSave(List<TopicsVO> topics) throws Exception {
+		// 判断是否一户一票 还是一人一票
+		IPublicDiscussService bean = SpringUtil.getBean(IPublicDiscussService.class);
+		PublicDiscussEntity one = bean.getOne(Wrappers.<PublicDiscussEntity>lambdaQuery().eq(PublicDiscussEntity::getArticleId, topics.get(0).getArticleId()));
+		// 一户一票
+		if (one.getVoteRestrictions().equals(CommonConstant.NUMBER_ONE)) {
+			long count = count(Wrappers.<UserTopicsEntity>lambdaQuery().eq(UserTopicsEntity::getHouseCode, topics.get(0).getHouseCode()));
+			if (count > 1) {
+				throw new Exception("您的房屋已投票,不能重复投票!");
+			}
+		} else {
+			//
+			long count = count(Wrappers.<UserTopicsEntity>lambdaQuery().eq(UserTopicsEntity::getUserId, AuthUtil.getUserId()));
+			if (count > 1) {
+				throw new Exception("您的已投票,不能重复投票!");
+			}
+		}
+		Boolean userTopics = getaBoolean(topics);
+		if (userTopics != null) return userTopics;
+		return false;
+	}
+
+	@Nullable
+	private Boolean getaBoolean(List<TopicsVO> topics) {
 		List<UserTopicsEntity> objects = new ArrayList<>();
-		for (TopicsEntity topic : topics) {
+		for (TopicsVO topic : topics) {
 			UserTopicsEntity userTopicsEntity = new UserTopicsEntity();
 			userTopicsEntity.setUserId(AuthUtil.getUserId());
 			userTopicsEntity.setSelected(topic.getSelected());
 			userTopicsEntity.setTopicsId(topic.getId());
 			userTopicsEntity.setPublicDiscussId(topic.getPublicDiscussId());
 			objects.add(userTopicsEntity);
+			// 单选
 			if (topic.getOptionRange().equals(0)) {
 				if (StringUtils.isBlank(topic.getSelected())) {
 					break;
 				}
 				UserTopicsEntity userTopics = new UserTopicsEntity();
-				userTopics.setTopicsId(Integer.valueOf(topic.getSelected()));
+				userTopics.setSelected(topic.getSelected());
 				userTopics.setUserId(AuthUtil.getUserId());
 				userTopics.setPublicDiscussId(topic.getPublicDiscussId());
+				userTopics.setArticleId(topic.getArticleId());
+				userTopics.setHouseCode(topic.getHouseCode());
 				UpdateWrapper<TopicsEntity> objectUpdateWrapper = new UpdateWrapper<>();
 				objectUpdateWrapper.setSql("number = number + 1");
 				objectUpdateWrapper.eq("id", topic.getSelected());
 				topicsService.update(null, objectUpdateWrapper);
-				baseMapper.insert(userTopics);
+				return save(userTopics);
 			} else {
+				// 多选
 				if (StringUtils.isBlank(topic.getSelected())) {
 					break;
 				}
@@ -87,19 +119,21 @@
 				List<UserTopicsEntity> objectsTwo = new ArrayList<>();
 				for (Object o : objects1) {
 					UserTopicsEntity userTopics = new UserTopicsEntity();
-					userTopics.setTopicsId((Integer) o);
+					userTopics.setSelected(topic.getSelected());
 					userTopics.setUserId(AuthUtil.getUserId());
 					userTopics.setPublicDiscussId(topic.getPublicDiscussId());
+					userTopics.setArticleId(topic.getArticleId());
+					userTopics.setHouseCode(topic.getHouseCode());
 					UpdateWrapper<TopicsEntity> objectUpdateWrapper = new UpdateWrapper<>();
 					objectUpdateWrapper.setSql("number = number + 1");
 					objectUpdateWrapper.eq("id", o);
 					objectsTwo.add(userTopics);
 					topicsService.update(null, objectUpdateWrapper);
 				}
-				saveOrUpdateBatch(objectsTwo);
+				return save(objectsTwo.get(0));
 			}
 		}
-		return saveOrUpdateBatch(objects);
+		return null;
 	}
 
 
diff --git a/src/main/java/org/springblade/modules/discuss/vo/TopicsVO.java b/src/main/java/org/springblade/modules/discuss/vo/TopicsVO.java
index 3c2fbb8..f84db50 100644
--- a/src/main/java/org/springblade/modules/discuss/vo/TopicsVO.java
+++ b/src/main/java/org/springblade/modules/discuss/vo/TopicsVO.java
@@ -16,11 +16,9 @@
  */
 package org.springblade.modules.discuss.vo;
 
-import org.springblade.modules.discuss.dto.TopicsDTO;
-import org.springblade.modules.discuss.entity.TopicsEntity;
-import org.springblade.core.tool.node.INode;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.springblade.modules.discuss.entity.TopicsEntity;
 
 import java.util.List;
 
@@ -38,4 +36,6 @@
 
 	private List<TopicsVO> children;
 
+	private String houseCode;
+
 }

--
Gitblit v1.9.3