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