From cbcfd505534e50b89387925633948603a2532ae2 Mon Sep 17 00:00:00 2001 From: "kuang.yife" Date: Wed, 24 Jul 2024 18:22:08 +0800 Subject: [PATCH] fix --- .../PlayletPublicAccountController.java | 23 ++++++++++++++ .../system/PlayletPublicDetailController.java | 31 +++++++++++++++++-- .../system/PublicDetailCommentController.java | 31 ++++++++++++++++--- .../controller/system/SysUserController.java | 13 ++++++++ .../src/main/resources/templates/index.html | 2 +- .../resources/templates/system/dept/add.html | 12 +++++++ .../resources/templates/system/dept/dept.html | 12 ++++++- .../resources/templates/system/dept/edit.html | 12 +++++++ .../templates/system/playlet/detail/add.html | 9 ++++++ .../templates/system/playlet/detail/edit.html | 10 ++++++ .../common/core/domain/entity/SysDept.java | 22 +++++++++++++ .../system/domain/PlayletPublicDetail.java | 5 +++ .../system/domain/PublicDetailComment.java | 5 +++ .../system/PlayletPublicAccountMapper.xml | 1 + .../system/PlayletPublicDetailMapper.xml | 6 ++++ .../system/PublicDetailCommentMapper.xml | 6 ++++ .../resources/mapper/system/SysDeptMapper.xml | 12 +++++-- 17 files changed, 202 insertions(+), 10 deletions(-) diff --git a/playlet-admin/src/main/java/com/playlet/web/controller/system/PlayletPublicAccountController.java b/playlet-admin/src/main/java/com/playlet/web/controller/system/PlayletPublicAccountController.java index 3d1e348..09d3a24 100644 --- a/playlet-admin/src/main/java/com/playlet/web/controller/system/PlayletPublicAccountController.java +++ b/playlet-admin/src/main/java/com/playlet/web/controller/system/PlayletPublicAccountController.java @@ -1,9 +1,12 @@ package com.playlet.web.controller.system; import java.util.List; +import java.util.stream.Collectors; +import com.playlet.common.core.domain.entity.SysDept; import com.playlet.common.core.domain.entity.SysUser; import com.playlet.system.domain.PlayletPublicDetail; +import com.playlet.system.service.ISysDeptService; import com.playlet.system.service.ISysUserService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; @@ -34,6 +37,9 @@ public class PlayletPublicAccountController extends BaseController @Autowired private IPlayletPublicAccountService playletPublicAccountService; + @Autowired + private ISysDeptService deptService; + @Autowired private ISysUserService sysUserService; @@ -71,6 +77,10 @@ public class PlayletPublicAccountController extends BaseController @ResponseBody public TableDataInfo list(PlayletPublicAccount playletPublicAccount) { + // 判断是否是管理员 + if(!this.getSysUser().isAdmin()){ + playletPublicAccount.setManagerId(this.getUserId()); + } startPage(); List list = playletPublicAccountService.selectPlayletPublicAccountList(playletPublicAccount); list.forEach(model->{ @@ -114,6 +124,19 @@ public class PlayletPublicAccountController extends BaseController @ResponseBody public AjaxResult addSave(PlayletPublicAccount playletPublicAccount) { + // 查询用户部门信息 + SysDept dept = deptService.selectDeptById(this.getSysUser().getDeptId()); + SysUser param = new SysUser(); + param.setDeptId(dept.getDeptId()); + // 查询部门下所有员工 + List list = sysUserService.selectUserList(param); + List userIds = list.stream().map(SysUser::getUserId).collect(Collectors.toList()); + long count = playletPublicAccountService.lambdaQuery() + .in(PlayletPublicAccount::getManagerId, userIds) + .count(); + if(count >= dept.getPublicAccountLimit()){ + return error("新增公众号'" + playletPublicAccount.getName() + "'失败,公众号数量已达上限"); + } return toAjax(playletPublicAccountService.insertPlayletPublicAccount(playletPublicAccount)); } diff --git a/playlet-admin/src/main/java/com/playlet/web/controller/system/PlayletPublicDetailController.java b/playlet-admin/src/main/java/com/playlet/web/controller/system/PlayletPublicDetailController.java index 65a319f..ab5589a 100644 --- a/playlet-admin/src/main/java/com/playlet/web/controller/system/PlayletPublicDetailController.java +++ b/playlet-admin/src/main/java/com/playlet/web/controller/system/PlayletPublicDetailController.java @@ -1,7 +1,10 @@ package com.playlet.web.controller.system; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; +import cn.hutool.core.collection.CollectionUtil; import com.playlet.common.utils.StringUtils; import com.playlet.system.domain.PlayletPublicAccount; import com.playlet.system.domain.PublicDetailComment; @@ -96,6 +99,16 @@ public class PlayletPublicDetailController extends BaseController @ResponseBody public TableDataInfo list(PlayletPublicDetail playletPublicDetail) { + if(!this.getSysUser().isAdmin()){ + List accounts = playletPublicAccountService.lambdaQuery().select(PlayletPublicAccount::getId) + .eq(PlayletPublicAccount::getManagerId, this.getUserId()) + .list(); + if(CollectionUtil.isEmpty(accounts)){ + return getDataTable(new ArrayList<>()); + } + List ids = accounts.stream().map(PlayletPublicAccount::getId).collect(Collectors.toList()); + playletPublicDetail.setPublicIds(ids); + } startPage(); List list = playletPublicDetailService.selectPlayletPublicDetailList(playletPublicDetail); list.forEach(model->{ @@ -128,7 +141,14 @@ public class PlayletPublicDetailController extends BaseController public String add(ModelMap modelMap) { modelMap.put("playletItems", playletItemService.lambdaQuery().list()); - modelMap.put("publicAccounts", playletPublicAccountService.selectPlayletPublicAccountList(new PlayletPublicAccount())); + if(!this.getSysUser().isAdmin()){ + List accounts = playletPublicAccountService.lambdaQuery() + .eq(PlayletPublicAccount::getManagerId, this.getUserId()) + .list(); + modelMap.put("publicAccounts", accounts); + }else { + modelMap.put("publicAccounts", playletPublicAccountService.selectPlayletPublicAccountList(new PlayletPublicAccount())); + } return prefix + "/add"; } @@ -155,7 +175,14 @@ public class PlayletPublicDetailController extends BaseController public String edit(@PathVariable("id") Long id, ModelMap mmap) { PlayletPublicDetail playletPublicDetail = playletPublicDetailService.selectPlayletPublicDetailById(id); - mmap.put("publicAccounts", playletPublicAccountService.selectPlayletPublicAccountList(new PlayletPublicAccount())); + if(!this.getSysUser().isAdmin()){ + List accounts = playletPublicAccountService.lambdaQuery() + .eq(PlayletPublicAccount::getManagerId, this.getUserId()) + .list(); + mmap.put("publicAccounts", accounts); + }else { + mmap.put("publicAccounts", playletPublicAccountService.selectPlayletPublicAccountList(new PlayletPublicAccount())); + } mmap.put("playletPublicDetail", playletPublicDetail); return prefix + "/edit"; } diff --git a/playlet-admin/src/main/java/com/playlet/web/controller/system/PublicDetailCommentController.java b/playlet-admin/src/main/java/com/playlet/web/controller/system/PublicDetailCommentController.java index 4221126..c314196 100644 --- a/playlet-admin/src/main/java/com/playlet/web/controller/system/PublicDetailCommentController.java +++ b/playlet-admin/src/main/java/com/playlet/web/controller/system/PublicDetailCommentController.java @@ -1,13 +1,15 @@ package com.playlet.web.controller.system; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; +import cn.hutool.core.collection.CollectionUtil; import com.playlet.common.core.domain.entity.SysUser; +import com.playlet.system.domain.PlayletPublicAccount; import com.playlet.system.domain.PlayletPublicDetail; import com.playlet.system.domain.PublicCommentResponse; -import com.playlet.system.service.IPlayletPublicDetailService; -import com.playlet.system.service.IPublicCommentResponseService; -import com.playlet.system.service.IPublicDetailShareService; +import com.playlet.system.service.*; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -20,7 +22,6 @@ import org.springframework.web.bind.annotation.ResponseBody; import com.playlet.common.annotation.Log; import com.playlet.common.enums.BusinessType; import com.playlet.system.domain.PublicDetailComment; -import com.playlet.system.service.IPublicDetailCommentService; import com.playlet.common.core.controller.BaseController; import com.playlet.common.core.domain.AjaxResult; import com.playlet.common.utils.poi.ExcelUtil; @@ -44,6 +45,8 @@ public class PublicDetailCommentController extends BaseController private IPlayletPublicDetailService publicDetailService; @Autowired private IPublicCommentResponseService publicCommentResponseService; + @Autowired + private IPlayletPublicAccountService playletPublicAccountService; @RequiresPermissions("public:comment:view") @GetMapping() @@ -60,6 +63,26 @@ public class PublicDetailCommentController extends BaseController @ResponseBody public TableDataInfo list(PublicDetailComment publicDetailComment) { + if(!this.getSysUser().isAdmin()){ + // 公众号 + List accounts = playletPublicAccountService.lambdaQuery().select(PlayletPublicAccount::getId) + .eq(PlayletPublicAccount::getManagerId, this.getUserId()) + .list(); + if(CollectionUtil.isEmpty(accounts)){ + return getDataTable(new ArrayList<>()); + } + // 公众号列表 + List ids = accounts.stream().map(PlayletPublicAccount::getId).collect(Collectors.toList()); + // 文章列表 + List publicDetails = publicDetailService.lambdaQuery().select(PlayletPublicDetail::getId) + .in(PlayletPublicDetail::getPublicId, ids).list(); + // + if(CollectionUtil.isEmpty(publicDetails)){ + return getDataTable(new ArrayList<>()); + } + List detailIds = publicDetails.stream().map(PlayletPublicDetail::getId).collect(Collectors.toList()); + publicDetailComment.setDetailIds(detailIds); + } startPage(); List list = publicDetailCommentService.selectPublicDetailCommentList(publicDetailComment); list.forEach(model->{ diff --git a/playlet-admin/src/main/java/com/playlet/web/controller/system/SysUserController.java b/playlet-admin/src/main/java/com/playlet/web/controller/system/SysUserController.java index 022ae61..a0c6258 100644 --- a/playlet-admin/src/main/java/com/playlet/web/controller/system/SysUserController.java +++ b/playlet-admin/src/main/java/com/playlet/web/controller/system/SysUserController.java @@ -142,6 +142,19 @@ public class SysUserController extends BaseController { return error("新增用户'" + user.getLoginName() + "'失败,邮箱账号已存在"); } + // 校验部门是否填写 + if(user.getDeptId() == null){ + return error("新增用户'" + user.getLoginName() + "'失败,部门不能为空"); + } + // 校验部门员工数量是否超了 + SysDept dept = deptService.selectDeptById(user.getDeptId()); + int limit = dept.getStaffLimit(); + SysUser param = new SysUser(); + param.setDeptId(dept.getDeptId()); + List list = userService.selectUserList(param); + if(list.size() >= limit){ + return error("新增用户'" + user.getLoginName() + "'失败,员工数量已达上限"); + } user.setSalt(ShiroUtils.randomSalt()); user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt())); user.setPwdUpdateDate(DateUtils.getNowDate()); diff --git a/playlet-admin/src/main/resources/templates/index.html b/playlet-admin/src/main/resources/templates/index.html index 4246bfd..33ea8e9 100644 --- a/playlet-admin/src/main/resources/templates/index.html +++ b/playlet-admin/src/main/resources/templates/index.html @@ -2,8 +2,8 @@ + - 麻雀系统首页 diff --git a/playlet-admin/src/main/resources/templates/system/dept/add.html b/playlet-admin/src/main/resources/templates/system/dept/add.html index ef15245..21f728c 100644 --- a/playlet-admin/src/main/resources/templates/system/dept/add.html +++ b/playlet-admin/src/main/resources/templates/system/dept/add.html @@ -22,6 +22,18 @@ +
+ +
+ +
+
+
+ +
+ +
+
diff --git a/playlet-admin/src/main/resources/templates/system/dept/dept.html b/playlet-admin/src/main/resources/templates/system/dept/dept.html index 56d94e3..6f4286a 100644 --- a/playlet-admin/src/main/resources/templates/system/dept/dept.html +++ b/playlet-admin/src/main/resources/templates/system/dept/dept.html @@ -71,7 +71,17 @@ title: '部门名称', align: "left" }, - { + { + field: 'staffLimit', + title: '使用账号数', + align: "left" + }, + { + field: 'publicAccountLimit', + title: '公众号数量', + align: "left" + }, + { field: 'orderNum', title: '排序', align: "left" diff --git a/playlet-admin/src/main/resources/templates/system/dept/edit.html b/playlet-admin/src/main/resources/templates/system/dept/edit.html index 3469b32..93d34fe 100644 --- a/playlet-admin/src/main/resources/templates/system/dept/edit.html +++ b/playlet-admin/src/main/resources/templates/system/dept/edit.html @@ -23,6 +23,18 @@
+
+ +
+ +
+
+
+ +
+ +
+
diff --git a/playlet-admin/src/main/resources/templates/system/playlet/detail/add.html b/playlet-admin/src/main/resources/templates/system/playlet/detail/add.html index f0138fa..a45cd21 100644 --- a/playlet-admin/src/main/resources/templates/system/playlet/detail/add.html +++ b/playlet-admin/src/main/resources/templates/system/playlet/detail/add.html @@ -2,6 +2,7 @@ + @@ -321,11 +322,19 @@ autoresize_min_height: 700, //编辑区域的最小高度 remove_trailing_brs: false, branding: false, //tiny技术支持信息是否显示 + extended_valid_elements: 'br', plugins: ' preview searchreplace autolink directionality visualblocks visualchars fullscreen image link media code codesample table charmap pagebreak nonbreaking anchor insertdatetime advlist lists wordcount autosave', toolbar: 'fullscreen undo redo restoredraft | cut copy paste pastetext | forecolor backcolor bold italic underline strikethrough link anchor | alignleft aligncenter alignright alignjustify outdent indent | \ styleselect formatselect fontselect fontsizeselect | bullist numlist | blockquote subscript superscript removeformat | \ table image media charmap hr pagebreak insertdatetime preview | code selectall searchreplace visualblocks | indent2em lineheight formatpainter axupimgs', toolbar_mode: 'wrap', + paste_retain_style_properties: "all", + paste_word_valid_elements: "*[*]", //word需要它 + paste_convert_word_fake_lists: true, // 插入word文档需要该属性 + paste_webkit_styles: "all", + paste_merge_formats: true, + nonbreaking_force_tab: false, + paste_auto_cleanup_on_paste: false, paste_data_images: true, //图片是否可粘贴 images_upload_handler: (blobInfo) => { return new Promise(async (resolve, reject) => { diff --git a/playlet-admin/src/main/resources/templates/system/playlet/detail/edit.html b/playlet-admin/src/main/resources/templates/system/playlet/detail/edit.html index d2ad2f0..5c8a114 100644 --- a/playlet-admin/src/main/resources/templates/system/playlet/detail/edit.html +++ b/playlet-admin/src/main/resources/templates/system/playlet/detail/edit.html @@ -2,6 +2,7 @@ + @@ -252,11 +253,20 @@ autoresize_min_height: 700, //编辑区域的最小高度 remove_trailing_brs: false, branding: false, //tiny技术支持信息是否显示 + extended_valid_elements: 'br', plugins: ' preview searchreplace autolink directionality visualblocks visualchars fullscreen image link media code codesample table charmap pagebreak nonbreaking anchor insertdatetime advlist lists wordcount autosave', toolbar: 'fullscreen undo redo restoredraft | cut copy paste pastetext | forecolor backcolor bold italic underline strikethrough link anchor | alignleft aligncenter alignright alignjustify outdent indent | \ styleselect formatselect fontselect fontsizeselect | bullist numlist | blockquote subscript superscript removeformat | \ table image media charmap hr pagebreak insertdatetime preview | code selectall searchreplace visualblocks | indent2em lineheight formatpainter axupimgs', toolbar_mode: 'wrap', + paste_retain_style_properties: "all", + paste_word_valid_elements: "*[*]", //word需要它 + paste_convert_word_fake_lists: true, // 插入word文档需要该属性 + paste_webkit_styles: "all", + paste_merge_formats: true, + nonbreaking_force_tab: false, + paste_auto_cleanup_on_paste: false, + paste_data_images: true, //图片是否可粘贴 paste_data_images: true, //图片是否可粘贴 images_upload_handler: (blobInfo) => { return new Promise(async (resolve, reject) => { diff --git a/playlet-common/src/main/java/com/playlet/common/core/domain/entity/SysDept.java b/playlet-common/src/main/java/com/playlet/common/core/domain/entity/SysDept.java index 874397d..ee74ac5 100644 --- a/playlet-common/src/main/java/com/playlet/common/core/domain/entity/SysDept.java +++ b/playlet-common/src/main/java/com/playlet/common/core/domain/entity/SysDept.java @@ -54,6 +54,26 @@ public class SysDept extends BaseEntity /** 排除编号 */ private Long excludeId; + private Integer staffLimit; + + private Integer publicAccountLimit; + + public Integer getStaffLimit() { + return staffLimit; + } + + public void setStaffLimit(Integer staffLimit) { + this.staffLimit = staffLimit; + } + + public Integer getPublicAccountLimit() { + return publicAccountLimit; + } + + public void setPublicAccountLimit(Integer publicAccountLimit) { + this.publicAccountLimit = publicAccountLimit; + } + public Long getDeptId() { return deptId; @@ -198,6 +218,8 @@ public class SysDept extends BaseEntity .append("createTime", getCreateTime()) .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) + .append("staffLimit", getStaffLimit()) + .append("publicAccountLimit", getPublicAccountLimit()) .toString(); } } diff --git a/playlet-system/src/main/java/com/playlet/system/domain/PlayletPublicDetail.java b/playlet-system/src/main/java/com/playlet/system/domain/PlayletPublicDetail.java index ba013bc..6ed84e5 100644 --- a/playlet-system/src/main/java/com/playlet/system/domain/PlayletPublicDetail.java +++ b/playlet-system/src/main/java/com/playlet/system/domain/PlayletPublicDetail.java @@ -11,6 +11,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import com.playlet.common.annotation.Excel; +import java.util.List; + /** * 公众号文章详情对象 playlet_public_detail * @@ -38,6 +40,9 @@ public class PlayletPublicDetail extends BaseEntity @ApiModelProperty(value = "公众号id") private Long publicId; + @TableField(exist = false) + private List publicIds; + @TableField(exist = false) private String publicName; diff --git a/playlet-system/src/main/java/com/playlet/system/domain/PublicDetailComment.java b/playlet-system/src/main/java/com/playlet/system/domain/PublicDetailComment.java index abb2f65..59e7daf 100644 --- a/playlet-system/src/main/java/com/playlet/system/domain/PublicDetailComment.java +++ b/playlet-system/src/main/java/com/playlet/system/domain/PublicDetailComment.java @@ -11,6 +11,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import com.playlet.common.annotation.Excel; +import java.util.List; + /** * 文章评论对象 public_detail_comment * @@ -34,6 +36,9 @@ public class PublicDetailComment extends BaseEntity @ApiModelProperty(value = "文章id") private Long detailId; + @TableField(exist = false) + private List detailIds; + @TableField(exist = false) private String authorAlias; diff --git a/playlet-system/src/main/resources/mapper/system/PlayletPublicAccountMapper.xml b/playlet-system/src/main/resources/mapper/system/PlayletPublicAccountMapper.xml index 4023ff0..80fe89a 100644 --- a/playlet-system/src/main/resources/mapper/system/PlayletPublicAccountMapper.xml +++ b/playlet-system/src/main/resources/mapper/system/PlayletPublicAccountMapper.xml @@ -32,6 +32,7 @@ and name like concat('%', #{name}, '%') + and manager_id = #{managerId} and introduction = #{introduction} and author_alias = #{authorAlias} and logo_url = #{logoUrl} diff --git a/playlet-system/src/main/resources/mapper/system/PlayletPublicDetailMapper.xml b/playlet-system/src/main/resources/mapper/system/PlayletPublicDetailMapper.xml index 351df5b..4c3627c 100644 --- a/playlet-system/src/main/resources/mapper/system/PlayletPublicDetailMapper.xml +++ b/playlet-system/src/main/resources/mapper/system/PlayletPublicDetailMapper.xml @@ -57,6 +57,12 @@ and public_id = #{publicId} + + and public_id in + + #{item} + + and type = #{type} and read_count = #{readCount} and top_status = #{topStatus} diff --git a/playlet-system/src/main/resources/mapper/system/PublicDetailCommentMapper.xml b/playlet-system/src/main/resources/mapper/system/PublicDetailCommentMapper.xml index 9a09a89..703795f 100644 --- a/playlet-system/src/main/resources/mapper/system/PublicDetailCommentMapper.xml +++ b/playlet-system/src/main/resources/mapper/system/PublicDetailCommentMapper.xml @@ -27,6 +27,12 @@