diff --git a/jeecg-boot/jeecg-boot-module-system/Dockerfile b/jeecg-boot/jeecg-boot-module-system/Dockerfile index 5fa43c3..e7803b0 100644 --- a/jeecg-boot/jeecg-boot-module-system/Dockerfile +++ b/jeecg-boot/jeecg-boot-module-system/Dockerfile @@ -11,6 +11,6 @@ WORKDIR /jeecg-boot EXPOSE 8080 ADD ./src/main/resources/jeecg ./config/jeecg -ADD ./target/jeecg-boot-module-system-3.1.0.jar ./ +ADD ./target/jeecg-boot-module-system-3.2.0.jar ./ -CMD sleep 60;java -Djava.security.egd=file:/dev/./urandom -jar jeecg-boot-module-system-3.1.0.jar \ No newline at end of file +CMD sleep 60;java -Djava.security.egd=file:/dev/./urandom -jar jeecg-boot-module-system-3.2.0.jar \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module-system/pom.xml b/jeecg-boot/jeecg-boot-module-system/pom.xml index 5b43eef..7cc1445 100644 --- a/jeecg-boot/jeecg-boot-module-system/pom.xml +++ b/jeecg-boot/jeecg-boot-module-system/pom.xml @@ -4,7 +4,7 @@ <parent> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-boot-parent</artifactId> - <version>3.1.0</version> + <version>3.2.0</version> </parent> <modelVersion>4.0.0</modelVersion> @@ -34,35 +34,23 @@ <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-system-local-api</artifactId> </dependency> - <!-- jeewx api --> + <!-- 企业微信/钉钉 api --> <dependency> <groupId>org.jeecgframework</groupId> <artifactId>jeewx-api</artifactId> - <version>1.4.7</version> - <exclusions> - <exclusion> - <artifactId>commons-beanutils</artifactId> - <groupId>commons-beanutils</groupId> - </exclusion> - <exclusion> - <artifactId>commons-lang</artifactId> - <groupId>commons-lang</groupId> - </exclusion> - </exclusions> </dependency> <!-- 积木报表 --> <dependency> <groupId>org.jeecgframework.jimureport</groupId> <artifactId>jimureport-spring-boot-starter</artifactId> - <version>1.4.4-beta</version> + <version>1.5.0-beta</version> </dependency> - - <!-- DEMO 示例模块【微服务启动请注释掉】 --> + <!-- DEMO 示例模块 --> <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-boot-module-demo</artifactId> - <version>3.1.0</version> + <version>${jeecgboot.version}</version> </dependency> </dependencies> diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/JeecgOneToMainUtil.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/JeecgOneToMainUtil.java index 7546ca9..1e493a9 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/JeecgOneToMainUtil.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/JeecgOneToMainUtil.java @@ -22,19 +22,27 @@ public class JeecgOneToMainUtil { public static void main(String[] args) { //第一步:设置主表配置 MainTableVo mainTable = new MainTableVo(); - mainTable.setTableName("jeecg_order_main");//表名 - mainTable.setEntityName("GuiTestOrderMain"); //实体名 - mainTable.setEntityPackage("gui"); //包名 - mainTable.setFtlDescription("GUI订单管理"); //描述 + //表名 + mainTable.setTableName("jeecg_order_main"); + //实体名 + mainTable.setEntityName("GuiTestOrderMain"); + //包名 + mainTable.setEntityPackage("gui"); + //描述 + mainTable.setFtlDescription("GUI订单管理"); //第二步:设置子表集合配置 List<SubTableVo> subTables = new ArrayList<SubTableVo>(); //[1].子表一 SubTableVo po = new SubTableVo(); - po.setTableName("jeecg_order_customer");//表名 - po.setEntityName("GuiTestOrderCustom"); //实体名 - po.setEntityPackage("gui"); //包名 - po.setFtlDescription("客户明细"); //描述 + //表名 + po.setTableName("jeecg_order_customer"); + //实体名 + po.setEntityName("GuiTestOrderCustom"); + //包名 + po.setEntityPackage("gui"); + //描述 + po.setFtlDescription("客户明细"); //子表外键参数配置 /*说明: * a) 子表引用主表主键ID作为外键,外键字段必须以_ID结尾; @@ -45,10 +53,14 @@ public class JeecgOneToMainUtil { subTables.add(po); //[2].子表二 SubTableVo po2 = new SubTableVo(); - po2.setTableName("jeecg_order_ticket"); //表名 - po2.setEntityName("GuiTestOrderTicket"); //实体名 - po2.setEntityPackage("gui"); //包名 - po2.setFtlDescription("产品明细"); //描述 + //表名 + po2.setTableName("jeecg_order_ticket"); + //实体名 + po2.setEntityName("GuiTestOrderTicket"); + //包名 + po2.setEntityPackage("gui"); + //描述 + po2.setFtlDescription("产品明细"); //子表外键参数配置 /*说明: * a) 子表引用主表主键ID作为外键,外键字段必须以_ID结尾; diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/JeecgSystemApplication.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/JeecgSystemApplication.java index f709911..129c771 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/JeecgSystemApplication.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/JeecgSystemApplication.java @@ -1,19 +1,14 @@ package org.jeecg; import lombok.extern.slf4j.Slf4j; -import org.apache.catalina.Context; -import org.apache.tomcat.util.scan.StandardJarScanner; import org.jeecg.common.util.oConvertUtils; import org.springframework.boot.SpringApplication; -//import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.context.annotation.Bean; import org.springframework.core.env.Environment; import java.net.InetAddress; diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/config/init/CodeGenerateDbConfig.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/config/init/CodeGenerateDbConfig.java index be63002..6f8a77d 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/config/init/CodeGenerateDbConfig.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/config/init/CodeGenerateDbConfig.java @@ -43,7 +43,7 @@ public class CodeGenerateDbConfig { } } CodegenDatasourceConfig.initDbConfig(driverClassName,url, username, password); - log.info(" 代码生成器数据库连接,使用application.yml的DB配置 ###################"); + log.info(" Init CodeGenerate Config [ Get Db Config From application.yml ] "); } return null; } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/config/jimureport/JimuReportTokenService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/config/jimureport/JimuReportTokenService.java index 4d9f0e4..de0fdba 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/config/jimureport/JimuReportTokenService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/config/jimureport/JimuReportTokenService.java @@ -1,12 +1,12 @@ package org.jeecg.config.jimureport; import lombok.extern.slf4j.Slf4j; -import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.system.vo.SysUserCacheInfo; import org.jeecg.common.util.RedisUtil; import org.jeecg.common.util.TokenUtils; import org.jeecg.modules.jmreport.api.JmReportTokenServiceI; +import org.jeecg.modules.system.service.impl.SysBaseApiImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @@ -19,6 +19,7 @@ import java.util.Map; * 自定义积木报表鉴权(如果不进行自定义,则所有请求不做权限控制) * * 1.自定义获取登录token * * 2.自定义获取登录用户 + * @author: jeecg-boot */ @@ -26,7 +27,7 @@ import java.util.Map; @Component public class JimuReportTokenService implements JmReportTokenServiceI { @Autowired - private ISysBaseAPI sysBaseAPI; + private SysBaseApiImpl sysBaseApi; @Autowired @Lazy private RedisUtil redisUtil; @@ -43,17 +44,17 @@ public class JimuReportTokenService implements JmReportTokenServiceI { @Override public Boolean verifyToken(String token) { - return TokenUtils.verifyToken(token, sysBaseAPI, redisUtil); + return TokenUtils.verifyToken(token, sysBaseApi, redisUtil); } @Override public Map<String, Object> getUserInfo(String token) { - Map<String, Object> map = new HashMap<String, Object>(); + Map<String, Object> map = new HashMap(5); String username = JwtUtil.getUsername(token); //此处通过token只能拿到一个信息 用户账号 后面的就是根据账号获取其他信息 查询数据或是走redis 用户根据自身业务可自定义 SysUserCacheInfo userInfo = null; try { - userInfo = sysBaseAPI.getCacheUser(username); + userInfo = sysBaseApi.getCacheUser(username); } catch (Exception e) { log.error("获取用户信息异常:"+ e.getMessage()); return map; diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/controller/SystemAPIController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/controller/SystemAPIController.java index e5cc51f..5d2aa63 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/controller/SystemAPIController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/controller/SystemAPIController.java @@ -1,11 +1,12 @@ package org.jeecg.modules.api.controller; import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.dto.OnlineAuthDTO; import org.jeecg.common.api.dto.message.*; -import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.vo.*; import org.jeecg.modules.system.service.ISysUserService; +import org.jeecg.modules.system.service.impl.SysBaseApiImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -16,14 +17,15 @@ import java.util.Set; /** * 服务化 system模块 对外接口请求类 + * @author: jeecg-boot */ +@Slf4j @RestController @RequestMapping("/sys/api") public class SystemAPIController { @Autowired - private ISysBaseAPI sysBaseAPI; - + private SysBaseApiImpl sysBaseApi; @Autowired private ISysUserService sysUserService; @@ -34,7 +36,7 @@ public class SystemAPIController { */ @PostMapping("/sendSysAnnouncement") public void sendSysAnnouncement(@RequestBody MessageDTO message){ - sysBaseAPI.sendSysAnnouncement(message); + sysBaseApi.sendSysAnnouncement(message); } /** @@ -43,7 +45,7 @@ public class SystemAPIController { */ @PostMapping("/sendBusAnnouncement") public void sendBusAnnouncement(@RequestBody BusMessageDTO message){ - sysBaseAPI.sendBusAnnouncement(message); + sysBaseApi.sendBusAnnouncement(message); } /** @@ -52,7 +54,7 @@ public class SystemAPIController { */ @PostMapping("/sendTemplateAnnouncement") public void sendTemplateAnnouncement(@RequestBody TemplateMessageDTO message){ - sysBaseAPI.sendTemplateAnnouncement(message); + sysBaseApi.sendTemplateAnnouncement(message); } /** @@ -61,7 +63,7 @@ public class SystemAPIController { */ @PostMapping("/sendBusTemplateAnnouncement") public void sendBusTemplateAnnouncement(@RequestBody BusTemplateMessageDTO message){ - sysBaseAPI.sendBusTemplateAnnouncement(message); + sysBaseApi.sendBusTemplateAnnouncement(message); } /** @@ -71,7 +73,7 @@ public class SystemAPIController { */ @PostMapping("/parseTemplateByCode") public String parseTemplateByCode(@RequestBody TemplateDTO templateDTO){ - return sysBaseAPI.parseTemplateByCode(templateDTO); + return sysBaseApi.parseTemplateByCode(templateDTO); } /** @@ -79,7 +81,7 @@ public class SystemAPIController { */ @GetMapping("/updateSysAnnounReadFlag") public void updateSysAnnounReadFlag(@RequestParam("busType") String busType, @RequestParam("busId")String busId){ - sysBaseAPI.updateSysAnnounReadFlag(busType, busId); + sysBaseApi.updateSysAnnounReadFlag(busType, busId); } /** @@ -89,7 +91,7 @@ public class SystemAPIController { */ @GetMapping("/getUserByName") public LoginUser getUserByName(@RequestParam("username") String username){ - return sysBaseAPI.getUserByName(username); + return sysBaseApi.getUserByName(username); } /** @@ -99,7 +101,7 @@ public class SystemAPIController { */ @GetMapping("/getUserById") LoginUser getUserById(@RequestParam("id") String id){ - return sysBaseAPI.getUserById(id); + return sysBaseApi.getUserById(id); } /** @@ -109,7 +111,7 @@ public class SystemAPIController { */ @GetMapping("/getRolesByUsername") List<String> getRolesByUsername(@RequestParam("username") String username){ - return sysBaseAPI.getRolesByUsername(username); + return sysBaseApi.getRolesByUsername(username); } /** @@ -119,7 +121,7 @@ public class SystemAPIController { */ @GetMapping("/getDepartIdsByUsername") List<String> getDepartIdsByUsername(@RequestParam("username") String username){ - return sysBaseAPI.getDepartIdsByUsername(username); + return sysBaseApi.getDepartIdsByUsername(username); } /** @@ -129,7 +131,7 @@ public class SystemAPIController { */ @GetMapping("/getDepartNamesByUsername") List<String> getDepartNamesByUsername(@RequestParam("username") String username){ - return sysBaseAPI.getDepartNamesByUsername(username); + return sysBaseApi.getDepartNamesByUsername(username); } @@ -140,7 +142,7 @@ public class SystemAPIController { */ @GetMapping("/queryDictItemsByCode") List<DictModel> queryDictItemsByCode(@RequestParam("code") String code){ - return sysBaseAPI.queryDictItemsByCode(code); + return sysBaseApi.queryDictItemsByCode(code); } /** @@ -150,23 +152,31 @@ public class SystemAPIController { */ @GetMapping("/queryEnableDictItemsByCode") List<DictModel> queryEnableDictItemsByCode(@RequestParam("code") String code){ - return sysBaseAPI.queryEnableDictItemsByCode(code); + return sysBaseApi.queryEnableDictItemsByCode(code); } /** 查询所有的父级字典,按照create_time排序 */ @GetMapping("/queryAllDict") List<DictModel> queryAllDict(){ - return sysBaseAPI.queryAllDict(); +// try{ +// //睡10秒,gateway网关5秒超时,会触发熔断降级操作 +// Thread.sleep(10000); +// }catch (Exception e){ +// e.printStackTrace(); +// } + + log.info("--微服务接口被调用--"); + return sysBaseApi.queryAllDict(); } /** * 查询所有分类字典 * @return */ - @GetMapping("/queryAllDSysCategory") - List<SysCategoryModel> queryAllDSysCategory(){ - return sysBaseAPI.queryAllDSysCategory(); + @GetMapping("/queryAllSysCategory") + List<SysCategoryModel> queryAllSysCategory(){ + return sysBaseApi.queryAllSysCategory(); } @@ -176,7 +186,7 @@ public class SystemAPIController { */ @GetMapping("/queryAllDepartBackDictModel") List<DictModel> queryAllDepartBackDictModel(){ - return sysBaseAPI.queryAllDepartBackDictModel(); + return sysBaseApi.queryAllDepartBackDictModel(); } /** @@ -187,9 +197,9 @@ public class SystemAPIController { @GetMapping("/queryAllRole") public List<ComboModel> queryAllRole(@RequestParam(name = "roleIds",required = false)String[] roleIds){ if(roleIds==null || roleIds.length==0){ - return sysBaseAPI.queryAllRole(); + return sysBaseApi.queryAllRole(); }else{ - return sysBaseAPI.queryAllRole(roleIds); + return sysBaseApi.queryAllRole(roleIds); } } @@ -200,7 +210,7 @@ public class SystemAPIController { */ @GetMapping("/getRoleIdsByUsername") public List<String> getRoleIdsByUsername(@RequestParam("username")String username){ - return sysBaseAPI.getRoleIdsByUsername(username); + return sysBaseApi.getRoleIdsByUsername(username); } /** @@ -210,7 +220,7 @@ public class SystemAPIController { */ @GetMapping("/getDepartIdsByOrgCode") public String getDepartIdsByOrgCode(@RequestParam("orgCode")String orgCode){ - return sysBaseAPI.getDepartIdsByOrgCode(orgCode); + return sysBaseApi.getDepartIdsByOrgCode(orgCode); } /** @@ -219,7 +229,7 @@ public class SystemAPIController { */ @GetMapping("/getAllSysDepart") public List<SysDepartModel> getAllSysDepart(){ - return sysBaseAPI.getAllSysDepart(); + return sysBaseApi.getAllSysDepart(); } /** @@ -230,7 +240,7 @@ public class SystemAPIController { */ @GetMapping("/getDynamicDbSourceById") DynamicDataSourceModel getDynamicDbSourceById(@RequestParam("dbSourceId")String dbSourceId){ - return sysBaseAPI.getDynamicDbSourceById(dbSourceId); + return sysBaseApi.getDynamicDbSourceById(dbSourceId); } @@ -242,7 +252,7 @@ public class SystemAPIController { */ @GetMapping("/getDeptHeadByDepId") public List<String> getDeptHeadByDepId(@RequestParam("deptId") String deptId){ - return sysBaseAPI.getDeptHeadByDepId(deptId); + return sysBaseApi.getDeptHeadByDepId(deptId); } /** @@ -252,7 +262,7 @@ public class SystemAPIController { */ @GetMapping("/getParentDepartId") public DictModel getParentDepartId(@RequestParam("departId")String departId){ - return sysBaseAPI.getParentDepartId(departId); + return sysBaseApi.getParentDepartId(departId); } /** @@ -263,7 +273,7 @@ public class SystemAPIController { */ @GetMapping("/getDynamicDbSourceByCode") public DynamicDataSourceModel getDynamicDbSourceByCode(@RequestParam("dbSourceCode") String dbSourceCode){ - return sysBaseAPI.getDynamicDbSourceByCode(dbSourceCode); + return sysBaseApi.getDynamicDbSourceByCode(dbSourceCode); } /** @@ -273,7 +283,7 @@ public class SystemAPIController { */ @GetMapping("/sendWebSocketMsg") public void sendWebSocketMsg(String[] userIds, String cmd){ - sysBaseAPI.sendWebSocketMsg(userIds, cmd); + sysBaseApi.sendWebSocketMsg(userIds, cmd); } @@ -284,7 +294,7 @@ public class SystemAPIController { */ @GetMapping("/queryAllUserByIds") public List<LoginUser> queryAllUserByIds(@RequestParam("userIds") String[] userIds){ - return sysBaseAPI.queryAllUserByIds(userIds); + return sysBaseApi.queryAllUserByIds(userIds); } /** @@ -293,7 +303,7 @@ public class SystemAPIController { */ @GetMapping("/queryAllUserBackCombo") public List<ComboModel> queryAllUserBackCombo(){ - return sysBaseAPI.queryAllUserBackCombo(); + return sysBaseApi.queryAllUserBackCombo(); } /** @@ -302,7 +312,7 @@ public class SystemAPIController { */ @GetMapping("/queryAllUser") public JSONObject queryAllUser(@RequestParam(name="userIds",required=false)String userIds, @RequestParam(name="pageNo",required=false) Integer pageNo,@RequestParam(name="pageSize",required=false) int pageSize){ - return sysBaseAPI.queryAllUser(userIds, pageNo, pageSize); + return sysBaseApi.queryAllUser(userIds, pageNo, pageSize); } @@ -315,7 +325,7 @@ public class SystemAPIController { */ @GetMapping("/meetingSignWebsocket") public void meetingSignWebsocket(@RequestParam("userId")String userId){ - sysBaseAPI.meetingSignWebsocket(userId); + sysBaseApi.meetingSignWebsocket(userId); } /** @@ -325,7 +335,7 @@ public class SystemAPIController { */ @GetMapping("/queryUserByNames") public List<LoginUser> queryUserByNames(@RequestParam("userNames")String[] userNames){ - return sysBaseAPI.queryUserByNames(userNames); + return sysBaseApi.queryUserByNames(userNames); } /** @@ -335,7 +345,7 @@ public class SystemAPIController { */ @GetMapping("/getUserRoleSet") public Set<String> getUserRoleSet(@RequestParam("username")String username){ - return sysBaseAPI.getUserRoleSet(username); + return sysBaseApi.getUserRoleSet(username); } /** @@ -345,7 +355,7 @@ public class SystemAPIController { */ @GetMapping("/getUserPermissionSet") public Set<String> getUserPermissionSet(@RequestParam("username") String username){ - return sysBaseAPI.getUserPermissionSet(username); + return sysBaseApi.getUserPermissionSet(username); } //----- @@ -357,7 +367,7 @@ public class SystemAPIController { */ @PostMapping("/hasOnlineAuth") public boolean hasOnlineAuth(@RequestBody OnlineAuthDTO onlineAuthDTO){ - return sysBaseAPI.hasOnlineAuth(onlineAuthDTO); + return sysBaseApi.hasOnlineAuth(onlineAuthDTO); } /** @@ -386,7 +396,7 @@ public class SystemAPIController { */ @GetMapping("/selectAllById") public SysDepartModel selectAllById(@RequestParam("id") String id){ - return sysBaseAPI.selectAllById(id); + return sysBaseApi.selectAllById(id); } /** @@ -396,7 +406,7 @@ public class SystemAPIController { */ @GetMapping("/queryDeptUsersByUserId") public List<String> queryDeptUsersByUserId(@RequestParam("userId") String userId){ - return sysBaseAPI.queryDeptUsersByUserId(userId); + return sysBaseApi.queryDeptUsersByUserId(userId); } @@ -406,7 +416,7 @@ public class SystemAPIController { */ @GetMapping("/queryPermissionDataRule") public List<SysPermissionDataRuleModel> queryPermissionDataRule(@RequestParam("component") String component, @RequestParam("requestPath")String requestPath, @RequestParam("username") String username){ - return sysBaseAPI.queryPermissionDataRule(component, requestPath, username); + return sysBaseApi.queryPermissionDataRule(component, requestPath, username); } /** @@ -416,7 +426,7 @@ public class SystemAPIController { */ @GetMapping("/getCacheUser") public SysUserCacheInfo getCacheUser(@RequestParam("username") String username){ - return sysBaseAPI.getCacheUser(username); + return sysBaseApi.getCacheUser(username); } /** @@ -427,7 +437,7 @@ public class SystemAPIController { */ @GetMapping("/translateDict") public String translateDict(@RequestParam("code") String code, @RequestParam("key") String key){ - return sysBaseAPI.translateDict(code, key); + return sysBaseApi.translateDict(code, key); } @@ -438,7 +448,7 @@ public class SystemAPIController { */ @RequestMapping("/queryUsersByUsernames") List<JSONObject> queryUsersByUsernames(@RequestParam("usernames") String usernames){ - return this.sysBaseAPI.queryUsersByUsernames(usernames); + return this.sysBaseApi.queryUsersByUsernames(usernames); } /** @@ -448,7 +458,7 @@ public class SystemAPIController { */ @RequestMapping("/queryUsersByIds") List<JSONObject> queryUsersByIds(@RequestParam("ids") String ids){ - return this.sysBaseAPI.queryUsersByIds(ids); + return this.sysBaseApi.queryUsersByIds(ids); } /** @@ -458,7 +468,7 @@ public class SystemAPIController { */ @GetMapping("/queryDepartsByOrgcodes") List<JSONObject> queryDepartsByOrgcodes(@RequestParam("orgCodes") String orgCodes){ - return this.sysBaseAPI.queryDepartsByOrgcodes(orgCodes); + return this.sysBaseApi.queryDepartsByOrgcodes(orgCodes); } /** @@ -468,7 +478,7 @@ public class SystemAPIController { */ @GetMapping("/queryDepartsByIds") List<JSONObject> queryDepartsByIds(@RequestParam("ids") String ids){ - return this.sysBaseAPI.queryDepartsByIds(ids); + return this.sysBaseApi.queryDepartsByIds(ids); } /** @@ -479,7 +489,7 @@ public class SystemAPIController { */ @GetMapping("/sendEmailMsg") public void sendEmailMsg(@RequestParam("email")String email,@RequestParam("title")String title,@RequestParam("content")String content){ - this.sysBaseAPI.sendEmailMsg(email,title,content); + this.sysBaseApi.sendEmailMsg(email,title,content); }; /** * 41 获取公司下级部门和公司下所有用户信息 @@ -487,7 +497,7 @@ public class SystemAPIController { */ @GetMapping("/getDeptUserByOrgCode") List<Map> getDeptUserByOrgCode(@RequestParam("orgCode")String orgCode){ - return this.sysBaseAPI.getDeptUserByOrgCode(orgCode); + return this.sysBaseApi.getDeptUserByOrgCode(orgCode); } /** @@ -498,7 +508,7 @@ public class SystemAPIController { */ @GetMapping("/loadCategoryDictItem") public List<String> loadCategoryDictItem(@RequestParam("ids") String ids) { - return sysBaseAPI.loadCategoryDictItem(ids); + return sysBaseApi.loadCategoryDictItem(ids); } /** @@ -510,7 +520,7 @@ public class SystemAPIController { */ @GetMapping("/loadDictItem") public List<String> loadDictItem(@RequestParam("dictCode") String dictCode, @RequestParam("keys") String keys) { - return sysBaseAPI.loadDictItem(dictCode, keys); + return sysBaseApi.loadDictItem(dictCode, keys); } /** @@ -522,7 +532,7 @@ public class SystemAPIController { */ @GetMapping("/getDictItems") public List<DictModel> getDictItems(@RequestParam("dictCode") String dictCode) { - return sysBaseAPI.getDictItems(dictCode); + return sysBaseApi.getDictItems(dictCode); } /** @@ -533,7 +543,7 @@ public class SystemAPIController { */ @RequestMapping("/getManyDictItems") public Map<String, List<DictModel>> getManyDictItems(@RequestParam("dictCodeList") List<String> dictCodeList) { - return sysBaseAPI.getManyDictItems(dictCodeList); + return sysBaseApi.getManyDictItems(dictCodeList); } /** @@ -546,7 +556,7 @@ public class SystemAPIController { */ @GetMapping("/loadDictItemByKeyword") public List<DictModel> loadDictItemByKeyword(@RequestParam("dictCode") String dictCode, @RequestParam("keyword") String keyword, @RequestParam(value = "pageSize", required = false) Integer pageSize) { - return sysBaseAPI.loadDictItemByKeyword(dictCode, keyword, pageSize); + return sysBaseApi.loadDictItemByKeyword(dictCode, keyword, pageSize); } /** @@ -557,7 +567,7 @@ public class SystemAPIController { */ @GetMapping("/translateManyDict") public Map<String, List<DictModel>> translateManyDict(@RequestParam("dictCodes") String dictCodes, @RequestParam("keys") String keys){ - return this.sysBaseAPI.translateManyDict(dictCodes, keys); + return this.sysBaseApi.translateManyDict(dictCodes, keys); } @@ -570,7 +580,7 @@ public class SystemAPIController { */ @GetMapping("/queryTableDictItemsByCode") List<DictModel> queryTableDictItemsByCode(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code){ - return sysBaseAPI.queryTableDictItemsByCode(table, text, code); + return sysBaseApi.queryTableDictItemsByCode(table, text, code); } /** @@ -583,7 +593,7 @@ public class SystemAPIController { */ @GetMapping("/queryFilterTableDictInfo") List<DictModel> queryFilterTableDictInfo(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("filterSql") String filterSql){ - return sysBaseAPI.queryFilterTableDictInfo(table, text, code, filterSql); + return sysBaseApi.queryFilterTableDictInfo(table, text, code, filterSql); } /** @@ -598,7 +608,7 @@ public class SystemAPIController { @Deprecated @GetMapping("/queryTableDictByKeys") public List<String> queryTableDictByKeys(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("keyArray") String[] keyArray){ - return sysBaseAPI.queryTableDictByKeys(table, text, code, keyArray); + return sysBaseApi.queryTableDictByKeys(table, text, code, keyArray); } @@ -612,7 +622,7 @@ public class SystemAPIController { */ @GetMapping("/translateDictFromTable") public String translateDictFromTable(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("key") String key){ - return sysBaseAPI.translateDictFromTable(table, text, code, key); + return sysBaseApi.translateDictFromTable(table, text, code, key); } @@ -628,7 +638,7 @@ public class SystemAPIController { */ @GetMapping("/translateDictFromTableByKeys") public List<DictModel> translateDictFromTableByKeys(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("keys") String keys) { - return this.sysBaseAPI.translateDictFromTableByKeys(table, text, code, keys); + return this.sysBaseApi.translateDictFromTableByKeys(table, text, code, keys); } } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/cas/util/CASServiceUtil.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/cas/util/CASServiceUtil.java index 5db7028..1b609f6 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/cas/util/CASServiceUtil.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/cas/util/CASServiceUtil.java @@ -16,6 +16,10 @@ import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; +/** + * @Description: CASServiceUtil + * @author: jeecg-boot + */ public class CASServiceUtil { public static void main(String[] args) { diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/cas/util/XmlUtils.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/cas/util/XmlUtils.java index 98213ea..bcd7d64 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/cas/util/XmlUtils.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/cas/util/XmlUtils.java @@ -25,7 +25,7 @@ import lombok.extern.slf4j.Slf4j; /** * 解析cas,ST验证后的xml - * + * @author: jeecg-boot */ @Slf4j public final class XmlUtils { @@ -39,7 +39,7 @@ public final class XmlUtils { */ public static Document newDocument(final String xml) { final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - final Map<String, Boolean> features = new HashMap<String, Boolean>(); + final Map<String, Boolean> features = new HashMap(5); features.put(XMLConstants.FEATURE_SECURE_PROCESSING, true); features.put("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); for (final Map.Entry<String, Boolean> entry : features.entrySet()) { @@ -94,13 +94,15 @@ public final class XmlUtils { private StringBuilder buffer = new StringBuilder(); + @Override public void startElement(final String uri, final String localName, final String qName, - final Attributes attributes) throws SAXException { + final Attributes attributes) throws SAXException { if (localName.equals(element)) { this.foundElement = true; } } + @Override public void endElement(final String uri, final String localName, final String qName) throws SAXException { if (localName.equals(element)) { this.foundElement = false; @@ -109,6 +111,7 @@ public final class XmlUtils { } } + @Override public void characters(char[] ch, int start, int length) throws SAXException { if (this.foundElement) { this.buffer.append(ch, start, length); @@ -145,19 +148,22 @@ public final class XmlUtils { private boolean foundElement = false; + @Override public void startElement(final String uri, final String localName, final String qName, - final Attributes attributes) throws SAXException { + final Attributes attributes) throws SAXException { if (localName.equals(element)) { this.foundElement = true; } } + @Override public void endElement(final String uri, final String localName, final String qName) throws SAXException { if (localName.equals(element)) { this.foundElement = false; } } + @Override public void characters(char[] ch, int start, int length) throws SAXException { if (this.foundElement) { builder.append(ch, start, length); @@ -208,7 +214,7 @@ public final class XmlUtils { @Override public void startDocument() throws SAXException { - this.attributes = new HashMap<String, Object>(); + this.attributes = new HashMap(5); } @Override diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/entity/MsgParams.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/entity/MsgParams.java index a640742..7bb6367 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/entity/MsgParams.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/entity/MsgParams.java @@ -6,18 +6,30 @@ import lombok.Data; /** * 发送消息实体 + * @author: jeecg-boot */ @Data public class MsgParams implements Serializable { private static final long serialVersionUID = 1L; - /*消息类型*/ + /** + * 消息类型 + */ private String msgType; - /*消息接收方*/ + + /** + * 消息接收方 + */ private String receiver; - /*消息模板码*/ + + /** + * 消息模板码 + */ private String templateCode; - /*测试数据*/ + + /** + * 测试数据 + */ private String testData; } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/ISendMsgHandle.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/ISendMsgHandle.java index 87a2e18..1be8274 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/ISendMsgHandle.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/ISendMsgHandle.java @@ -1,6 +1,16 @@ package org.jeecg.modules.message.handle; +/** + * @Description: 发送信息接口 + * @author: jeecg-boot + */ public interface ISendMsgHandle { + /** + * 发送信息 + * @param es_receiver 发送人 + * @param es_title 标题 + * @param es_content 内容 + */ void SendMsg(String es_receiver, String es_title, String es_content); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/enums/SendMsgStatusEnum.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/enums/SendMsgStatusEnum.java index 5b062b1..bfdf075 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/enums/SendMsgStatusEnum.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/enums/SendMsgStatusEnum.java @@ -2,6 +2,7 @@ package org.jeecg.modules.message.handle.enums; /** * 推送状态枚举 + * @author: jeecg-boot */ public enum SendMsgStatusEnum { diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/enums/SendMsgTypeEnum.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/enums/SendMsgTypeEnum.java index bf86d5f..a47b7e2 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/enums/SendMsgTypeEnum.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/enums/SendMsgTypeEnum.java @@ -4,13 +4,26 @@ import org.jeecg.common.util.oConvertUtils; /** * 发送消息类型枚举 + * @author: jeecg-boot */ public enum SendMsgTypeEnum { -//推送方式:1短信 2邮件 3微信 + /** + * 短信 + */ SMS("1", "org.jeecg.modules.message.handle.impl.SmsSendMsgHandle"), + /** + * 邮件 + */ EMAIL("2", "org.jeecg.modules.message.handle.impl.EmailSendMsgHandle"), - WX("3","org.jeecg.modules.message.handle.impl.WxSendMsgHandle"); + /** + * 微信 + */ + WX("3","org.jeecg.modules.message.handle.impl.WxSendMsgHandle"), + /** + * 系统消息 + */ + SYSTEM_MESSAGE("4","org.jeecg.modules.message.handle.impl.SystemSendMsgHandle"); private String type; diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/EmailSendMsgHandle.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/EmailSendMsgHandle.java index 6ed3570..92addb1 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/EmailSendMsgHandle.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/EmailSendMsgHandle.java @@ -11,6 +11,10 @@ import org.springframework.mail.javamail.MimeMessageHelper; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; +/** + * @Description: 邮箱发送信息 + * @author: jeecg-boot + */ public class EmailSendMsgHandle implements ISendMsgHandle { static String emailFrom; diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/SmsSendMsgHandle.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/SmsSendMsgHandle.java index 0691bf1..c08ac2d 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/SmsSendMsgHandle.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/SmsSendMsgHandle.java @@ -3,6 +3,10 @@ package org.jeecg.modules.message.handle.impl; import lombok.extern.slf4j.Slf4j; import org.jeecg.modules.message.handle.ISendMsgHandle; +/** + * @Description: 短信发送 + * @author: jeecg-boot + */ @Slf4j public class SmsSendMsgHandle implements ISendMsgHandle { diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/SystemSendMsgHandle.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/SystemSendMsgHandle.java new file mode 100644 index 0000000..0ad5007 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/SystemSendMsgHandle.java @@ -0,0 +1,28 @@ +package org.jeecg.modules.message.handle.impl; + +import org.jeecg.common.api.dto.message.MessageDTO; +import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.common.system.api.ISysBaseAPI; +import org.jeecg.common.util.SpringContextUtils; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.message.handle.ISendMsgHandle; + +/** +* @Description: 发送系统消息 +* @Author: wangshuai +* @Date: 2022年3月22日 18:48:20 +*/ +public class SystemSendMsgHandle implements ISendMsgHandle { + + public static final String FROM_USER="system"; + + @Override + public void SendMsg(String es_receiver, String es_title, String es_content) { + if(oConvertUtils.isEmpty(es_receiver)){ + throw new JeecgBootException("被发送人不能为空"); + } + ISysBaseAPI sysBaseAPI = SpringContextUtils.getBean(ISysBaseAPI.class); + MessageDTO messageDTO = new MessageDTO(FROM_USER,es_receiver,es_title,es_content); + sysBaseAPI.sendSysAnnouncement(messageDTO); + } +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/WxSendMsgHandle.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/WxSendMsgHandle.java index 26e807a..a1d76f7 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/WxSendMsgHandle.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/WxSendMsgHandle.java @@ -2,6 +2,11 @@ package org.jeecg.modules.message.handle.impl; import lombok.extern.slf4j.Slf4j; import org.jeecg.modules.message.handle.ISendMsgHandle; + +/** + * @Description: 发微信消息模板 + * @author: jeecg-boot + */ @Slf4j public class WxSendMsgHandle implements ISendMsgHandle { diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/job/SendMsgJob.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/job/SendMsgJob.java index 7408be3..6230074 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/job/SendMsgJob.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/job/SendMsgJob.java @@ -19,6 +19,7 @@ import lombok.extern.slf4j.Slf4j; /** * 发送消息任务 + * @author: jeecg-boot */ @Slf4j @@ -48,16 +49,24 @@ public class SendMsgJob implements Job { sendMsgHandle = (ISendMsgHandle) Class.forName(SendMsgTypeEnum.SMS.getImplClass()).newInstance(); } else if (sysMessage.getEsType().equals(SendMsgTypeEnum.WX.getType())) { sendMsgHandle = (ISendMsgHandle) Class.forName(SendMsgTypeEnum.WX.getImplClass()).newInstance(); + } else if(sysMessage.getEsType().equals(SendMsgTypeEnum.SYSTEM_MESSAGE.getType())){ + //update-begin---author:wangshuai ---date:20220323 for:[issues/I4X698]根据模板发送系统消息,发送失败------------ + sendMsgHandle = (ISendMsgHandle) Class.forName(SendMsgTypeEnum.SYSTEM_MESSAGE.getImplClass()).newInstance(); + //update-end---author:wangshuai ---date:20220323 for:[issues/I4X698]根据模板发送系统消息,发送失败------------ } } catch (Exception e) { log.error(e.getMessage(),e); } Integer sendNum = sysMessage.getEsSendNum(); try { - sendMsgHandle.SendMsg(sysMessage.getEsReceiver(), sysMessage.getEsTitle(), - sysMessage.getEsContent().toString()); - // 发送消息成功 - sysMessage.setEsSendStatus(SendMsgStatusEnum.SUCCESS.getCode()); + //update-begin---author:wangshuai ---date:20220323 for:[issues/I4X698]模板管理发送消息出现NullPointerException 錯誤------------ + if(null != sendMsgHandle){ + sendMsgHandle.SendMsg(sysMessage.getEsReceiver(), sysMessage.getEsTitle(), + sysMessage.getEsContent().toString()); + //发送消息成功 + sysMessage.setEsSendStatus(SendMsgStatusEnum.SUCCESS.getCode()); + } + //update-end---author:wangshuai ---date:20220323 for:[issues/I4X698]模板管理发送消息出现NullPointerException 錯誤------------ } catch (Exception e) { e.printStackTrace(); // 发送消息出现异常 diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/SysMessageTemplateMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/SysMessageTemplateMapper.java index fd0c650..98de4bd 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/SysMessageTemplateMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/SysMessageTemplateMapper.java @@ -13,6 +13,12 @@ import java.util.List; * @Version: V1.0 */ public interface SysMessageTemplateMapper extends BaseMapper<SysMessageTemplate> { + + /** + * 通过模板CODE查询消息模板 + * @param code 模板CODE + * @return List<SysMessageTemplate> + */ @Select("SELECT * FROM SYS_SMS_TEMPLATE WHERE TEMPLATE_CODE = #{code}") List<SysMessageTemplate> selectByCode(String code); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/ISysMessageTemplateService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/ISysMessageTemplateService.java index d81c5e6..da3e78e 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/ISysMessageTemplateService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/ISysMessageTemplateService.java @@ -12,5 +12,11 @@ import org.jeecg.modules.message.entity.SysMessageTemplate; * @Version: V1.0 */ public interface ISysMessageTemplateService extends JeecgService<SysMessageTemplate> { + + /** + * 通过模板CODE查询消息模板 + * @param code 模板CODE + * @return + */ List<SysMessageTemplate> selectByCode(String code); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/util/PushMsgUtil.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/util/PushMsgUtil.java index f04acca..84f6f04 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/util/PushMsgUtil.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/util/PushMsgUtil.java @@ -21,6 +21,7 @@ import java.util.Map; /** * 消息生成工具 + * @author: jeecg-boot */ @Component diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/SocketHandler.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/SocketHandler.java index 266ab6c..53eb9dc 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/SocketHandler.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/SocketHandler.java @@ -4,16 +4,17 @@ import cn.hutool.core.util.ObjectUtil; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.base.BaseMap; import org.jeecg.common.constant.CommonSendStatus; -import org.jeecg.common.modules.redis.listener.JeecgRedisListerer; +import org.jeecg.common.modules.redis.listener.JeecgRedisListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * 监听消息(采用redis发布订阅方式发送消息) + * @author: jeecg-boot */ @Slf4j @Component -public class SocketHandler implements JeecgRedisListerer { +public class SocketHandler implements JeecgRedisListener { @Autowired private WebSocket webSocket; diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/TestSocketController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/TestSocketController.java index cd8a934..fe70566 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/TestSocketController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/TestSocketController.java @@ -10,6 +10,10 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; +/** + * @Description: TestSocketController + * @author: jeecg-boot + */ @RestController @RequestMapping("/sys/socketTest") public class TestSocketController { diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java index 3bb06c3..f5c2de5 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java @@ -2,6 +2,7 @@ package org.jeecg.modules.message.websocket; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArraySet; import javax.annotation.Resource; @@ -28,11 +29,14 @@ import lombok.extern.slf4j.Slf4j; */ @Component @Slf4j -@ServerEndpoint("/websocket/{userId}") //此注解相当于设置访问URL +@ServerEndpoint("/websocket/{userId}") public class WebSocket { private Session session; + /** + * 用户ID + */ private String userId; private static final String REDIS_TOPIC_NAME = "socketHandler"; @@ -44,12 +48,15 @@ public class WebSocket { * 缓存 webSocket连接到单机服务class中(整体方案支持集群) */ private static CopyOnWriteArraySet<WebSocket> webSockets = new CopyOnWriteArraySet<>(); - private static Map<String, Session> sessionPool = new HashMap<String, Session>(); - + /** + * 线程安全Map + */ + private static ConcurrentHashMap<String, Session> sessionPool = new ConcurrentHashMap<>(); @OnOpen public void onOpen(Session session, @PathParam(value = "userId") String userId) { try { + //TODO 通过header中获取token,进行check this.session = session; this.userId = userId; webSockets.add(this); @@ -113,9 +120,11 @@ public class WebSocket { obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_CHECK); //消息内容 obj.put(WebsocketConst.MSG_TXT, "心跳响应"); + //update-begin-author:taoyan date:20220308 for: 消息通知长连接启动心跳机制,后端代码小bug #3473 for (WebSocket webSocket : webSockets) { - webSocket.pushMessage(message); + webSocket.pushMessage(obj.toJSONString()); } + //update-end-author:taoyan date:20220308 for: 消息通知长连接启动心跳机制,后端代码小bug #3473 } /** diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/controller/ActuatorRedisController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/controller/ActuatorRedisController.java index c983581..383eb1a 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/controller/ActuatorRedisController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/controller/ActuatorRedisController.java @@ -19,6 +19,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +/** + * @Description: ActuatorRedisController + * @author: jeecg-boot + */ @Slf4j @RestController @RequestMapping("/sys/actuator/redis") @@ -100,7 +104,7 @@ public class ActuatorRedisController { if(fs[i].getTotalSpace()==0) { continue; } - Map<String,Object> map = new HashMap<>(); + Map<String,Object> map = new HashMap(5); map.put("name", fsv.getSystemDisplayName(fs[i])); map.put("max", fs[i].getTotalSpace()); map.put("rest", fs[i].getFreeSpace()); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/domain/RedisInfo.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/domain/RedisInfo.java index e605f9a..2249221 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/domain/RedisInfo.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/domain/RedisInfo.java @@ -3,9 +3,13 @@ package org.jeecg.modules.monitor.domain; import java.util.HashMap; import java.util.Map; +/** + * @Description: redis信息 + * @author: jeecg-boot + */ public class RedisInfo { - private static Map<String, String> map = new HashMap<>(); + private static Map<String, String> map = new HashMap(5); static { map.put("redis_version", "Redis 服务器版本"); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/exception/RedisConnectException.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/exception/RedisConnectException.java index 0391c2a..0cc67b2 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/exception/RedisConnectException.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/exception/RedisConnectException.java @@ -2,6 +2,7 @@ package org.jeecg.modules.monitor.exception; /** * Redis 连接异常 + * @author: jeecg-boot */ public class RedisConnectException extends Exception { diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/service/RedisService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/service/RedisService.java index 4e6b41c..ebb6755 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/service/RedisService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/service/RedisService.java @@ -8,12 +8,17 @@ import com.alibaba.fastjson.JSONArray; import org.jeecg.modules.monitor.domain.RedisInfo; import org.jeecg.modules.monitor.exception.RedisConnectException; +/** + * @Description: redis信息service接口 + * @author: jeecg-boot + */ public interface RedisService { /** * 获取 redis 的详细信息 * * @return List + * @throws RedisConnectException */ List<RedisInfo> getRedisInfo() throws RedisConnectException; @@ -21,6 +26,7 @@ public interface RedisService { * 获取 redis key 数量 * * @return Map + * @throws RedisConnectException */ Map<String, Object> getKeysSize() throws RedisConnectException; @@ -28,12 +34,14 @@ public interface RedisService { * 获取 redis 内存信息 * * @return Map + * @throws RedisConnectException */ Map<String, Object> getMemoryInfo() throws RedisConnectException; /** * 获取 报表需要个redis信息 - * + * @param type * @return Map + * @throws RedisConnectException */ Map<String, JSONArray> getMapForReport(String type) throws RedisConnectException ; } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/service/impl/RedisServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/service/impl/RedisServiceImpl.java index 5211ab8..5ab7213 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/service/impl/RedisServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/monitor/service/impl/RedisServiceImpl.java @@ -54,11 +54,11 @@ public class RedisServiceImpl implements RedisService { @Override public Map<String, Object> getKeysSize() throws RedisConnectException { Long dbSize = redisConnectionFactory.getConnection().dbSize(); - Map<String, Object> map = new HashMap<>(); + Map<String, Object> map = new HashMap(5); map.put("create_time", System.currentTimeMillis()); map.put("dbSize", dbSize); - log.info("--getKeysSize--: " + map.toString()); + log.debug("--getKeysSize--: " + map.toString()); return map; } @@ -69,12 +69,12 @@ public class RedisServiceImpl implements RedisService { for (Map.Entry<Object, Object> entry : info.entrySet()) { String key = oConvertUtils.getString(entry.getKey()); if ("used_memory".equals(key)) { - map = new HashMap<>(); + map = new HashMap(5); map.put("used_memory", entry.getValue()); map.put("create_time", System.currentTimeMillis()); } } - log.info("--getMemoryInfo--: " + map.toString()); + log.debug("--getMemoryInfo--: " + map.toString()); return map; } @@ -86,7 +86,7 @@ public class RedisServiceImpl implements RedisService { */ @Override public Map<String, JSONArray> getMapForReport(String type) throws RedisConnectException { - Map<String,JSONArray> mapJson=new HashMap<String, JSONArray> (); + Map<String,JSONArray> mapJson=new HashMap(5); JSONArray json = new JSONArray(); if("3".equals(type)){ List<RedisInfo> redisInfo = getRedisInfo(); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/ngalain/service/NgAlainService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/ngalain/service/NgAlainService.java index dd450cd..85d605d 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/ngalain/service/NgAlainService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/ngalain/service/NgAlainService.java @@ -5,8 +5,33 @@ import com.alibaba.fastjson.JSONArray; import java.util.List; import java.util.Map; +/** + * @Description: NgAlainService接口 + * @author: jeecg-boot + */ public interface NgAlainService { + /** + * 菜单 + * @param id + * @return JSONArray + * @throws Exception + */ public JSONArray getMenu(String id) throws Exception; + + /** + * jeecg菜单 + * @param id + * @return JSONArray + * @throws Exception + */ public JSONArray getJeecgMenu(String id) throws Exception; + + /** + * 获取字典值 + * @param table + * @param key + * @param value + * @return List<Map<String, String>> + */ public List<Map<String, String>> getDictByTable(String table, String key, String value); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/ngalain/service/impl/NgAlainServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/ngalain/service/impl/NgAlainServiceImpl.java index d2786b5..6e93496 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/ngalain/service/impl/NgAlainServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/ngalain/service/impl/NgAlainServiceImpl.java @@ -15,6 +15,10 @@ import java.util.Base64; import java.util.List; import java.util.Map; +/** + * @Description: NgAlainServiceImpl 实现类 + * @author: jeecg-boot + */ @Service("ngAlainService") public class NgAlainServiceImpl implements NgAlainService { @Autowired diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/controller/OSSFileController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/controller/OSSFileController.java index 5ae7166..12995a4 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/controller/OSSFileController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/controller/OSSFileController.java @@ -20,6 +20,7 @@ import lombok.extern.slf4j.Slf4j; /** * 云存储示例 DEMO + * @author: jeecg-boot */ @Slf4j @Controller diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/entity/OSSFile.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/entity/OSSFile.java index c62e527..92a187d 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/entity/OSSFile.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/entity/OSSFile.java @@ -7,6 +7,10 @@ import lombok.experimental.Accessors; import org.jeecg.common.system.base.entity.JeecgEntity; import org.jeecgframework.poi.excel.annotation.Excel; +/** + * @Description: oss云存储实体类 + * @author: jeecg-boot + */ @Data @TableName("oss_file") @EqualsAndHashCode(callSuper = false) diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/mapper/OSSFileMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/mapper/OSSFileMapper.java index 3baebef..2290c45 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/mapper/OSSFileMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/mapper/OSSFileMapper.java @@ -3,6 +3,10 @@ package org.jeecg.modules.oss.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.jeecg.modules.oss.entity.OSSFile; +/** + * @Description: oss云存储Mapper + * @author: jeecg-boot + */ public interface OSSFileMapper extends BaseMapper<OSSFile> { } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/service/IOSSFileService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/service/IOSSFileService.java index e50d8df..d3abd57 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/service/IOSSFileService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/service/IOSSFileService.java @@ -6,10 +6,24 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.oss.entity.OSSFile; import org.springframework.web.multipart.MultipartFile; +/** + * @Description: OOS云存储service接口 + * @author: jeecg-boot + */ public interface IOSSFileService extends IService<OSSFile> { + /** + * oss文件上传 + * @param multipartFile + * @throws IOException + */ void upload(MultipartFile multipartFile) throws IOException; + /** + * oss文件删除 + * @param ossFile OSSFile对象 + * @return + */ boolean delete(OSSFile ossFile); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/service/impl/OSSFileServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/service/impl/OSSFileServiceImpl.java index 98fc0a0..a5e7099 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/service/impl/OSSFileServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oss/service/impl/OSSFileServiceImpl.java @@ -11,6 +11,10 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +/** + * @Description: OSS云存储实现类 + * @author: jeecg-boot + */ @Service("ossFileService") public class OSSFileServiceImpl extends ServiceImpl<OSSFileMapper, OSSFile> implements IOSSFileService { diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/controller/QuartzJobController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/controller/QuartzJobController.java index d2e6d54..881e8ae 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/controller/QuartzJobController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/controller/QuartzJobController.java @@ -228,7 +228,8 @@ public class QuartzJobController { List<String> errorMessage = new ArrayList<>(); int successLines = 0, errorLines = 0; for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { - MultipartFile file = entity.getValue();// 获取上传文件对象 + // 获取上传文件对象 + MultipartFile file = entity.getValue(); ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/mapper/QuartzJobMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/mapper/QuartzJobMapper.java index 764019e..a84c3c6 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/mapper/QuartzJobMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/mapper/QuartzJobMapper.java @@ -15,6 +15,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface QuartzJobMapper extends BaseMapper<QuartzJob> { + /** + * 根据jobClassName查询 + * @param jobClassName 任务类名 + * @return + */ public List<QuartzJob> findByJobClassName(@Param("jobClassName") String jobClassName); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/service/IQuartzJobService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/service/IQuartzJobService.java index a2250bb..cf90d13 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/service/IQuartzJobService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/service/IQuartzJobService.java @@ -15,19 +15,46 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IQuartzJobService extends IService<QuartzJob> { + /** + * 通过类名寻找定时任务 + * @param jobClassName 类名 + * @return List<QuartzJob> + */ List<QuartzJob> findByJobClassName(String jobClassName); + /** + * 保存定时任务 + * @param quartzJob + * @return boolean + */ boolean saveAndScheduleJob(QuartzJob quartzJob); + /** + * 编辑定时任务 + * @param quartzJob + * @return boolean + * @throws SchedulerException + */ boolean editAndScheduleJob(QuartzJob quartzJob) throws SchedulerException; + /** + * 删除定时任务 + * @param quartzJob + * @return boolean + */ boolean deleteAndStopJob(QuartzJob quartzJob); + /** + * 恢复定时任务 + * @param quartzJob + * @return + */ boolean resumeJob(QuartzJob quartzJob); /** * 执行定时任务 * @param quartzJob + * @throws Exception */ void execute(QuartzJob quartzJob) throws Exception; diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/CommonController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/CommonController.java index 796a938..760efa2 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/CommonController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/CommonController.java @@ -11,7 +11,6 @@ import org.jeecg.common.util.CommonUtils; import org.jeecg.common.util.RestUtil; import org.jeecg.common.util.TokenUtils; import org.jeecg.common.util.oConvertUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; @@ -42,9 +41,6 @@ import java.net.URLDecoder; @RequestMapping("/sys/common") public class CommonController { - @Autowired - private ISysBaseAPI sysBaseAPI; - @Value(value = "${jeecg.path.upload}") private String uploadpath; @@ -81,7 +77,8 @@ public class CommonController { } MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; - MultipartFile file = multipartRequest.getFile("file");// 获取上传文件对象 + // 获取上传文件对象 + MultipartFile file = multipartRequest.getFile("file"); if(oConvertUtils.isEmpty(bizPath)){ if(CommonConstant.UPLOAD_TYPE_OSS.equals(uploadType)){ //未指定目录,则用阿里云默认目录 upload @@ -135,9 +132,11 @@ public class CommonController { String fileName = null; File file = new File(ctxPath + File.separator + bizPath + File.separator ); if (!file.exists()) { - file.mkdirs();// 创建文件根目录 + // 创建文件根目录 + file.mkdirs(); } - String orgName = mf.getOriginalFilename();// 获取文件名 + // 获取文件名 + String orgName = mf.getOriginalFilename(); orgName = CommonUtils.getFileName(orgName); if(orgName.indexOf(".")!=-1){ fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.lastIndexOf(".")); @@ -228,7 +227,8 @@ public class CommonController { response.setStatus(404); throw new RuntimeException("文件["+imgPath+"]不存在.."); } - response.setContentType("application/force-download");// 设置强制下载不打开 + // 设置强制下载不打开 + response.setContentType("application/force-download"); response.addHeader("Content-Disposition", "attachment;fileName=" + new String(file.getName().getBytes("UTF-8"),"iso-8859-1")); inputStream = new BufferedInputStream(new FileInputStream(filePath)); outputStream = response.getOutputStream(); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/DuplicateCheckController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/DuplicateCheckController.java index e08b442..04960c8 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/DuplicateCheckController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/DuplicateCheckController.java @@ -4,9 +4,11 @@ import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.jeecg.common.api.vo.Result; +import org.jeecg.common.constant.SymbolConstant; import org.jeecg.common.util.SqlInjectionUtil; import org.jeecg.modules.system.mapper.SysDictMapper; import org.jeecg.modules.system.model.DuplicateCheckVo; +import org.jeecg.modules.system.security.DictQueryBlackListHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -32,6 +34,9 @@ public class DuplicateCheckController { @Autowired SysDictMapper sysDictMapper; + @Autowired + DictQueryBlackListHandler dictQueryBlackListHandler; + /** * 校验数据是否在系统中是否存在 * @@ -55,6 +60,12 @@ public class DuplicateCheckController { rs.setMessage("数据为空,不作处理!"); return rs; } + //update-begin-author:taoyan date:20220329 for: VUEN-223【安全漏洞】当前被攻击的接口 + String checkSql = duplicateCheckVo.getTableName() + SymbolConstant.COMMA + duplicateCheckVo.getFieldName() + SymbolConstant.COMMA; + if(!dictQueryBlackListHandler.isPass(checkSql)){ + return Result.error(dictQueryBlackListHandler.getError()); + } + //update-end-author:taoyan date:20220329 for: VUEN-223【安全漏洞】当前被攻击的接口 // update-end-author:taoyan date:20211227 for: JTC-25 【online报表】oracle 操作问题 录入弹框啥都不填直接保存 ①编码不是应该提示必填么?②报错也应该是具体文字提示,不是后台错误日志 if (StringUtils.isNotBlank(duplicateCheckVo.getDataId())) { // [2].编辑页面校验 diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/LoginController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/LoginController.java index 67e7f0a..b8490ec 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/LoginController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/LoginController.java @@ -12,7 +12,6 @@ import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CacheConstant; import org.jeecg.common.constant.CommonConstant; -import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.*; @@ -23,6 +22,7 @@ import org.jeecg.modules.system.entity.SysTenant; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.model.SysLoginModel; import org.jeecg.modules.system.service.*; +import org.jeecg.modules.system.service.impl.SysBaseApiImpl; import org.jeecg.modules.system.util.RandImageUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -45,7 +45,7 @@ public class LoginController { @Autowired private ISysUserService sysUserService; @Autowired - private ISysBaseAPI sysBaseAPI; + private SysBaseApiImpl sysBaseApi; @Autowired private ISysLogService logService; @Autowired @@ -77,7 +77,7 @@ public class LoginController { return result; } String lowerCaseCaptcha = captcha.toLowerCase(); - String realKey = MD5Util.MD5Encode(lowerCaseCaptcha+sysLoginModel.getCheckKey(), "utf-8"); + String realKey = Md5Util.md5Encode(lowerCaseCaptcha+sysLoginModel.getCheckKey(), "utf-8"); Object checkCode = redisUtil.get(realKey); //当进入登录页时,有一定几率出现验证码错误 #1714 if(checkCode==null || !checkCode.toString().equals(lowerCaseCaptcha)) { @@ -129,11 +129,8 @@ public class LoginController { if(oConvertUtils.isNotEmpty(username)) { // 根据用户名查询用户信息 SysUser sysUser = sysUserService.getUserByName(username); - //用户登录信息 - Result<JSONObject> resultObj=userInfo(sysUser, result); - JSONObject jsonObject=resultObj.getResult(); JSONObject obj=new JSONObject(); - obj.put("userInfo",jsonObject.get("userInfo")); + obj.put("userInfo",sysUser); obj.put("sysAllDictItems", sysDictService.queryAllDictItems()); result.setResult(obj); result.success(""); @@ -156,7 +153,7 @@ public class LoginController { return Result.error("退出登录失败!"); } String username = JwtUtil.getUsername(token); - LoginUser sysUser = sysBaseAPI.getUserByName(username); + LoginUser sysUser = sysBaseApi.getUserByName(username); if(sysUser!=null) { //update-begin--Author:wangshuai Date:20200714 for:登出日志没有记录人员 baseCommonService.addLog("用户名: "+sysUser.getRealname()+",退出成功!", CommonConstant.LOG_TYPE_1, null,sysUser); @@ -436,7 +433,7 @@ public class LoginController { @GetMapping(value = "/getEncryptedString") public Result<Map<String,String>> getEncryptedString(){ Result<Map<String,String>> result = new Result<Map<String,String>>(); - Map<String,String> map = new HashMap<String,String>(); + Map<String,String> map = new HashMap(5); map.put("key", EncryptedString.key); map.put("iv",EncryptedString.iv); result.setResult(map); @@ -450,7 +447,7 @@ public class LoginController { */ @ApiOperation("获取验证码") @GetMapping(value = "/randomImage/{key}") - public Result<String> randomImage(HttpServletResponse response,@PathVariable String key){ + public Result<String> randomImage(HttpServletResponse response,@PathVariable("key") String key){ Result<String> res = new Result<String>(); try { //生成验证码 @@ -459,7 +456,7 @@ public class LoginController { //存到redis中 String lowerCaseCode = code.toLowerCase(); - String realKey = MD5Util.MD5Encode(lowerCaseCode+key, "utf-8"); + String realKey = Md5Util.md5Encode(lowerCaseCode+key, "utf-8"); log.info("获取验证码,Redis checkCode = {},key = {}", code, key); redisUtil.set(realKey, lowerCaseCode, 60); @@ -548,7 +545,7 @@ public class LoginController { return Result.error("验证码无效"); } String lowerCaseCaptcha = captcha.toLowerCase(); - String realKey = MD5Util.MD5Encode(lowerCaseCaptcha+checkKey, "utf-8"); + String realKey = Md5Util.md5Encode(lowerCaseCaptcha+checkKey, "utf-8"); Object checkCode = redisUtil.get(realKey); if(checkCode==null || !checkCode.equals(lowerCaseCaptcha)) { return Result.error("验证码错误"); @@ -593,7 +590,7 @@ public class LoginController { @GetMapping("/getQrcodeToken") public Result getQrcodeToken(@RequestParam String qrcodeId) { Object token = redisUtil.get(CommonConstant.LOGIN_QRCODE_TOKEN + qrcodeId); - Map result = new HashMap(); + Map result = new HashMap(5); Object qrcodeIdExpire = redisUtil.get(CommonConstant.LOGIN_QRCODE + qrcodeId); if (oConvertUtils.isEmpty(qrcodeIdExpire)) { //二维码过期通知前台刷新 diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java index 0891101..e3f78e1 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java @@ -13,7 +13,6 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.CommonSendStatus; import org.jeecg.common.constant.WebsocketConst; -import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.system.vo.LoginUser; @@ -25,6 +24,7 @@ import org.jeecg.modules.system.entity.SysAnnouncement; import org.jeecg.modules.system.entity.SysAnnouncementSend; import org.jeecg.modules.system.service.ISysAnnouncementSendService; import org.jeecg.modules.system.service.ISysAnnouncementService; +import org.jeecg.modules.system.service.impl.SysBaseApiImpl; import org.jeecg.modules.system.service.impl.ThirdAppDingtalkServiceImpl; import org.jeecg.modules.system.service.impl.ThirdAppWechatEnterpriseServiceImpl; import org.jeecg.modules.system.util.XSSUtils; @@ -74,7 +74,7 @@ public class SysAnnouncementController { @Autowired ThirdAppDingtalkServiceImpl dingtalkService; @Autowired - private ISysBaseAPI sysBaseAPI; + private SysBaseApiImpl sysBaseApi; @Autowired @Lazy private RedisUtil redisUtil; @@ -129,7 +129,8 @@ public class SysAnnouncementController { sysAnnouncement.setTitile(title); // update-end-author:liusq date:20210804 for:标题处理xss攻击的问题 sysAnnouncement.setDelFlag(CommonConstant.DEL_FLAG_0.toString()); - sysAnnouncement.setSendStatus(CommonSendStatus.UNPUBLISHED_STATUS_0);//未发布 + //未发布 + sysAnnouncement.setSendStatus(CommonSendStatus.UNPUBLISHED_STATUS_0); sysAnnouncementService.saveAnnouncement(sysAnnouncement); result.success("添加成功!"); } catch (Exception e) { @@ -239,7 +240,8 @@ public class SysAnnouncementController { if(sysAnnouncement==null) { result.error500("未找到对应实体"); }else { - sysAnnouncement.setSendStatus(CommonSendStatus.PUBLISHED_STATUS_1);//发布中 + //发布中 + sysAnnouncement.setSendStatus(CommonSendStatus.PUBLISHED_STATUS_1); sysAnnouncement.setSendTime(new Date()); String currentUserName = JwtUtil.getUserNameByToken(request); sysAnnouncement.setSender(currentUserName); @@ -295,7 +297,8 @@ public class SysAnnouncementController { if(sysAnnouncement==null) { result.error500("未找到对应实体"); }else { - sysAnnouncement.setSendStatus(CommonSendStatus.REVOKE_STATUS_2);//撤销发布 + //撤销发布 + sysAnnouncement.setSendStatus(CommonSendStatus.REVOKE_STATUS_2); sysAnnouncement.setCancelTime(new Date()); boolean ok = sysAnnouncementService.updateById(sysAnnouncement); if(ok) { @@ -324,10 +327,14 @@ public class SysAnnouncementController { String userId = sysUser.getId(); // 1.将系统消息补充到用户通告阅读标记表中 LambdaQueryWrapper<SysAnnouncement> querySaWrapper = new LambdaQueryWrapper<SysAnnouncement>(); - querySaWrapper.eq(SysAnnouncement::getMsgType,CommonConstant.MSG_TYPE_ALL); // 全部人员 - querySaWrapper.eq(SysAnnouncement::getDelFlag,CommonConstant.DEL_FLAG_0.toString()); // 未删除 - querySaWrapper.eq(SysAnnouncement::getSendStatus, CommonConstant.HAS_SEND); //已发布 - querySaWrapper.ge(SysAnnouncement::getEndTime, sysUser.getCreateTime()); //新注册用户不看结束通知 + //全部人员 + querySaWrapper.eq(SysAnnouncement::getMsgType,CommonConstant.MSG_TYPE_ALL); + //未删除 + querySaWrapper.eq(SysAnnouncement::getDelFlag,CommonConstant.DEL_FLAG_0.toString()); + //已发布 + querySaWrapper.eq(SysAnnouncement::getSendStatus, CommonConstant.HAS_SEND); + //新注册用户不看结束通知 + querySaWrapper.ge(SysAnnouncement::getEndTime, sysUser.getCreateTime()); //update-begin--Author:liusq Date:20210108 for:[JT-424] 【开源issue】bug处理-------------------- querySaWrapper.notInSql(SysAnnouncement::getId,"select annt_id from sys_announcement_send where user_id='"+userId+"'"); //update-begin--Author:liusq Date:20210108 for: [JT-424] 【开源issue】bug处理-------------------- @@ -354,10 +361,12 @@ public class SysAnnouncementController { } // 2.查询用户未读的系统消息 Page<SysAnnouncement> anntMsgList = new Page<SysAnnouncement>(0, pageSize); - anntMsgList = sysAnnouncementService.querySysCementPageByUserId(anntMsgList,userId,"1");//通知公告消息 + //通知公告消息 + anntMsgList = sysAnnouncementService.querySysCementPageByUserId(anntMsgList,userId,"1"); Page<SysAnnouncement> sysMsgList = new Page<SysAnnouncement>(0, pageSize); - sysMsgList = sysAnnouncementService.querySysCementPageByUserId(sysMsgList,userId,"2");//系统消息 - Map<String,Object> sysMsgMap = new HashMap<String, Object>(); + //系统消息 + sysMsgList = sysAnnouncementService.querySysCementPageByUserId(sysMsgList,userId,"2"); + Map<String,Object> sysMsgMap = new HashMap(5); sysMsgMap.put("sysMsgList", sysMsgList.getRecords()); sysMsgMap.put("sysMsgTotal", sysMsgList.getTotal()); sysMsgMap.put("anntMsgList", anntMsgList.getRecords()); @@ -402,7 +411,8 @@ public class SysAnnouncementController { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { - MultipartFile file = entity.getValue();// 获取上传文件对象 + // 获取上传文件对象 + MultipartFile file = entity.getValue(); ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); @@ -481,7 +491,7 @@ public class SysAnnouncementController { boolean tokenOK = false; try { // 验证Token有效性 - tokenOK = TokenUtils.verifyToken(request, sysBaseAPI, redisUtil); + tokenOK = TokenUtils.verifyToken(request, sysBaseApi, redisUtil); } catch (Exception ignored) { } // 判断是否传递了Token,并且Token有效,如果传了就不做查看限制,直接返回 diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysCategoryController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysCategoryController.java index 60bada8..719adcc 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysCategoryController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysCategoryController.java @@ -230,7 +230,8 @@ public class SysCategoryController { List<String> errorMessage = new ArrayList<>(); int successLines = 0, errorLines = 0; for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { - MultipartFile file = entity.getValue();// 获取上传文件对象 + // 获取上传文件对象 + MultipartFile file = entity.getValue(); ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDataLogController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDataLogController.java index 14a56eb..bcba5d7 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDataLogController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDataLogController.java @@ -22,6 +22,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; +/** + * @Description: 系统数据日志 + * @author: jeecg-boot + */ @RestController @RequestMapping("/sys/dataLog") @Slf4j diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDataSourceController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDataSourceController.java index 98417c1..9474d88 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDataSourceController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDataSourceController.java @@ -58,7 +58,7 @@ public class SysDataSourceController extends JeecgController<SysDataSource, ISys */ @AutoLog(value = "多数据源管理-分页列表查询") @ApiOperation(value = "多数据源管理-分页列表查询", notes = "多数据源管理-分页列表查询") - //@RequiresRoles("admin") + @RequiresRoles("admin") @GetMapping(value = "/list") public Result<?> queryPageList( SysDataSource sysDataSource, diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartController.java index 3df03e7..5f32d45 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartController.java @@ -171,7 +171,7 @@ public class SysDepartController { * @param sysDepart * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/add", method = RequestMethod.POST) @CacheEvict(value= {CacheConstant.SYS_DEPARTS_CACHE,CacheConstant.SYS_DEPART_IDS_CACHE}, allEntries=true) public Result<SysDepart> add(@RequestBody SysDepart sysDepart, HttpServletRequest request) { @@ -197,7 +197,7 @@ public class SysDepartController { * @param sysDepart * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) @CacheEvict(value= {CacheConstant.SYS_DEPARTS_CACHE,CacheConstant.SYS_DEPART_IDS_CACHE}, allEntries=true) public Result<SysDepart> edit(@RequestBody SysDepart sysDepart, HttpServletRequest request) { @@ -225,7 +225,7 @@ public class SysDepartController { * @param id * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/delete", method = RequestMethod.DELETE) @CacheEvict(value= {CacheConstant.SYS_DEPARTS_CACHE,CacheConstant.SYS_DEPART_IDS_CACHE}, allEntries=true) public Result<SysDepart> delete(@RequestParam(name="id",required=true) String id) { @@ -253,7 +253,7 @@ public class SysDepartController { * @param ids * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE) @CacheEvict(value= {CacheConstant.SYS_DEPARTS_CACHE,CacheConstant.SYS_DEPART_IDS_CACHE}, allEntries=true) public Result<SysDepart> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { @@ -370,7 +370,7 @@ public class SysDepartController { * @param response * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/importExcel", method = RequestMethod.POST) @CacheEvict(value= {CacheConstant.SYS_DEPARTS_CACHE,CacheConstant.SYS_DEPART_IDS_CACHE}, allEntries=true) public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { @@ -379,14 +379,15 @@ public class SysDepartController { List<SysDepart> listSysDeparts = null; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { - MultipartFile file = entity.getValue();// 获取上传文件对象 + // 获取上传文件对象 + MultipartFile file = entity.getValue(); ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); params.setNeedSave(true); try { // orgCode编码长度 - int codeLength = YouBianCodeUtil.zhanweiLength; + int codeLength = YouBianCodeUtil.ZHANWEI_LENGTH; listSysDeparts = ExcelImportUtil.importExcel(file.getInputStream(), SysDepart.class, params); //按长度排序 Collections.sort(listSysDeparts, new Comparator<SysDepart>() { @@ -476,7 +477,7 @@ public class SysDepartController { public Result<Map<String,Object>> queryTreeByKeyWord(@RequestParam(name = "keyWord", required = false) String keyWord) { Result<Map<String,Object>> result = new Result<>(); try { - Map<String,Object> map=new HashMap<String,Object>(); + Map<String,Object> map=new HashMap(5); List<SysDepartTreeModel> list = sysDepartService.queryTreeByKeyWord(keyWord); //根据keyWord获取用户信息 LambdaQueryWrapper<SysUser> queryUser = new LambdaQueryWrapper<SysUser>(); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartPermissionController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartPermissionController.java index 7ca751f..74a765a 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartPermissionController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartPermissionController.java @@ -2,16 +2,20 @@ package org.jeecg.modules.system.controller; import java.util.*; import java.util.stream.Collectors; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.base.service.BaseCommonService; import org.jeecg.modules.system.entity.SysDepartPermission; import org.jeecg.modules.system.entity.SysDepartRolePermission; import org.jeecg.modules.system.entity.SysPermission; @@ -56,6 +60,9 @@ public class SysDepartPermissionController extends JeecgController<SysDepartPerm @Autowired private ISysDepartRolePermissionService sysDepartRolePermissionService; + @Autowired + private BaseCommonService baseCommonService; + /** * 分页列表查询 * @@ -174,7 +181,7 @@ public class SysDepartPermissionController extends JeecgController<SysDepartPerm if(list==null || list.size()==0) { return Result.error("未找到权限配置信息"); }else { - Map<String,Object> map = new HashMap<>(); + Map<String,Object> map = new HashMap(5); map.put("datarule", list); LambdaQueryWrapper<SysDepartPermission> query = new LambdaQueryWrapper<SysDepartPermission>() .eq(SysDepartPermission::getPermissionId, permissionId) @@ -253,7 +260,11 @@ public class SysDepartPermissionController extends JeecgController<SysDepartPerm String lastPermissionIds = json.getString("lastpermissionIds"); this.sysDepartRolePermissionService.saveDeptRolePermission(roleId, permissionIds, lastPermissionIds); result.success("保存成功!"); - log.info("======部门角色授权成功=====耗时:" + (System.currentTimeMillis() - start) + "毫秒"); + //update-begin---author:wangshuai ---date:20220316 for:[VUEN-234]部门角色授权添加敏感日志------------ + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + baseCommonService.addLog("修改部门角色ID:"+roleId+"的权限配置,操作人: " +loginUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); + //update-end---author:wangshuai ---date:20220316 for:[VUEN-234]部门角色授权添加敏感日志------------ + log.info("======部门角色授权成功=====耗时:" + (System.currentTimeMillis() - start) + "毫秒"); } catch (Exception e) { result.error500("授权失败!"); log.error(e.getMessage(), e); @@ -282,9 +293,11 @@ public class SysDepartPermissionController extends JeecgController<SysDepartPerm } List<TreeModel> treeList = new ArrayList<>(); getTreeModelList(treeList, list, null); - Map<String,Object> resMap = new HashMap<String,Object>(); - resMap.put("treeList", treeList); //全部树节点数据 - resMap.put("ids", ids);//全部树ids + Map<String,Object> resMap = new HashMap(5); + //全部树节点数据 + resMap.put("treeList", treeList); + //全部树ids + resMap.put("ids", ids); result.setResult(resMap); result.setSuccess(true); } catch (Exception e) { diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartRoleController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartRoleController.java index 383d027..d6c1465 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartRoleController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartRoleController.java @@ -2,6 +2,7 @@ package org.jeecg.modules.system.controller; import java.util.*; import java.util.stream.Collectors; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -15,6 +16,7 @@ import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.base.service.BaseCommonService; import org.jeecg.modules.system.entity.*; import org.jeecg.modules.system.service.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -54,7 +56,10 @@ public class SysDepartRoleController extends JeecgController<SysDepartRole, ISys @Autowired private ISysDepartService sysDepartService; - + + @Autowired + private BaseCommonService baseCommonService; + /** * 分页列表查询 * @@ -98,7 +103,7 @@ public class SysDepartRoleController extends JeecgController<SysDepartRole, ISys * @param sysDepartRole * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @ApiOperation(value="部门角色-添加", notes="部门角色-添加") @PostMapping(value = "/add") public Result<?> add(@RequestBody SysDepartRole sysDepartRole) { @@ -112,7 +117,7 @@ public class SysDepartRoleController extends JeecgController<SysDepartRole, ISys * @param sysDepartRole * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @ApiOperation(value="部门角色-编辑", notes="部门角色-编辑") @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) public Result<?> edit(@RequestBody SysDepartRole sysDepartRole) { @@ -126,7 +131,7 @@ public class SysDepartRoleController extends JeecgController<SysDepartRole, ISys * @param id * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @AutoLog(value = "部门角色-通过id删除") @ApiOperation(value="部门角色-通过id删除", notes="部门角色-通过id删除") @DeleteMapping(value = "/delete") @@ -141,7 +146,7 @@ public class SysDepartRoleController extends JeecgController<SysDepartRole, ISys * @param ids * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @AutoLog(value = "部门角色-批量删除") @ApiOperation(value="部门角色-批量删除", notes="部门角色-批量删除") @DeleteMapping(value = "/deleteBatch") @@ -183,14 +188,18 @@ public class SysDepartRoleController extends JeecgController<SysDepartRole, ISys * @param json * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/deptRoleUserAdd", method = RequestMethod.POST) public Result<?> deptRoleAdd(@RequestBody JSONObject json) { String newRoleId = json.getString("newRoleId"); String oldRoleId = json.getString("oldRoleId"); String userId = json.getString("userId"); departRoleUserService.deptRoleUserAdd(userId,newRoleId,oldRoleId); - return Result.ok("添加成功!"); + //update-begin---author:wangshuai ---date:20220316 for:[VUEN-234]部门角色分配添加敏感日志------------ + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + baseCommonService.addLog("给部门用户ID:"+userId+"分配角色,操作人: " +loginUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); + //update-end---author:wangshuai ---date:20220316 for:[VUEN-234]部门角色分配添加敏感日志------------ + return Result.ok("添加成功!"); } /** @@ -224,7 +233,7 @@ public class SysDepartRoleController extends JeecgController<SysDepartRole, ISys if(list==null || list.size()==0) { return Result.error("未找到权限配置信息"); }else { - Map<String,Object> map = new HashMap<>(); + Map<String,Object> map = new HashMap(5); map.put("datarule", list); LambdaQueryWrapper<SysDepartRolePermission> query = new LambdaQueryWrapper<SysDepartRolePermission>() .eq(SysDepartRolePermission::getPermissionId, permissionId) diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictController.java index 5e21130..1a5a7db 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictController.java @@ -23,6 +23,7 @@ import org.jeecg.modules.system.entity.SysDict; import org.jeecg.modules.system.entity.SysDictItem; import org.jeecg.modules.system.model.SysDictTree; import org.jeecg.modules.system.model.TreeSelectModel; +import org.jeecg.modules.system.security.DictQueryBlackListHandler; import org.jeecg.modules.system.service.ISysDictItemService; import org.jeecg.modules.system.service.ISysDictService; import org.jeecg.modules.system.vo.SysDictPage; @@ -64,6 +65,8 @@ public class SysDictController { private ISysDictItemService sysDictItemService; @Autowired public RedisTemplate<String, Object> redisTemplate; + @Autowired + private DictQueryBlackListHandler dictQueryBlackListHandler; @RequestMapping(value = "/list", method = RequestMethod.GET) public Result<IPage<SysDict>> queryPageList(SysDict sysDict,@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @@ -118,7 +121,7 @@ public class SysDictController { */ @RequestMapping(value = "/queryAllDictItems", method = RequestMethod.GET) public Result<?> queryAllDictItems(HttpServletRequest request) { - Map<String, List<DictModel>> res = new HashMap<String, List<DictModel>>(); + Map<String, List<DictModel>> res = new HashMap(5); res = sysDictService.queryAllDictItems(); return Result.ok(res); } @@ -153,9 +156,14 @@ public class SysDictController { * @return */ @RequestMapping(value = "/getDictItems/{dictCode}", method = RequestMethod.GET) - public Result<List<DictModel>> getDictItems(@PathVariable String dictCode, @RequestParam(value = "sign",required = false) String sign,HttpServletRequest request) { + public Result<List<DictModel>> getDictItems(@PathVariable("dictCode") String dictCode, @RequestParam(value = "sign",required = false) String sign,HttpServletRequest request) { log.info(" dictCode : "+ dictCode); Result<List<DictModel>> result = new Result<List<DictModel>>(); + //update-begin-author:taoyan date:20220317 for: VUEN-222【安全机制】字典接口、online报表、online图表等接口,加一些安全机制 + if(!dictQueryBlackListHandler.isPass(dictCode)){ + return result.error500(dictQueryBlackListHandler.getError()); + } + //update-end-author:taoyan date:20220317 for: VUEN-222【安全机制】字典接口、online报表、online图表等接口,加一些安全机制 try { List<DictModel> ls = sysDictService.getDictItems(dictCode); if (ls == null) { @@ -181,12 +189,17 @@ public class SysDictController { * @return */ @RequestMapping(value = "/loadDict/{dictCode}", method = RequestMethod.GET) - public Result<List<DictModel>> loadDict(@PathVariable String dictCode, - @RequestParam(name="keyword") String keyword, + public Result<List<DictModel>> loadDict(@PathVariable("dictCode") String dictCode, + @RequestParam(name="keyword",required = false) String keyword, @RequestParam(value = "sign",required = false) String sign, @RequestParam(value = "pageSize", required = false) Integer pageSize) { log.info(" 加载字典表数据,加载关键字: "+ keyword); Result<List<DictModel>> result = new Result<List<DictModel>>(); + //update-begin-author:taoyan date:20220317 for: VUEN-222【安全机制】字典接口、online报表、online图表等接口,加一些安全机制 + if(!dictQueryBlackListHandler.isPass(dictCode)){ + return result.error500(dictQueryBlackListHandler.getError()); + } + //update-end-author:taoyan date:20220317 for: VUEN-222【安全机制】字典接口、online报表、online图表等接口,加一些安全机制 try { List<DictModel> ls = sysDictService.loadDict(dictCode, keyword, pageSize); if (ls == null) { @@ -215,7 +228,7 @@ public class SysDictController { */ @RequestMapping(value = "/loadDictOrderByValue/{dictCode}", method = RequestMethod.GET) public Result<List<DictModel>> loadDictOrderByValue( - @PathVariable String dictCode, + @PathVariable("dictCode") String dictCode, @RequestParam(name = "keyword") String keyword, @RequestParam(value = "sign", required = false) String sign, @RequestParam(value = "pageSize", required = false) Integer pageSize) { @@ -256,8 +269,13 @@ public class SysDictController { * @return */ @RequestMapping(value = "/loadDictItem/{dictCode}", method = RequestMethod.GET) - public Result<List<String>> loadDictItem(@PathVariable String dictCode,@RequestParam(name="key") String keys, @RequestParam(value = "sign",required = false) String sign,@RequestParam(value = "delNotExist",required = false,defaultValue = "true") boolean delNotExist,HttpServletRequest request) { + public Result<List<String>> loadDictItem(@PathVariable("dictCode") String dictCode,@RequestParam(name="key") String keys, @RequestParam(value = "sign",required = false) String sign,@RequestParam(value = "delNotExist",required = false,defaultValue = "true") boolean delNotExist,HttpServletRequest request) { Result<List<String>> result = new Result<>(); + //update-begin-author:taoyan date:20220317 for: VUEN-222【安全机制】字典接口、online报表、online图表等接口,加一些安全机制 + if(!dictQueryBlackListHandler.isPass(dictCode)){ + return result.error500(dictQueryBlackListHandler.getError()); + } + //update-end-author:taoyan date:20220317 for: VUEN-222【安全机制】字典接口、online报表、online图表等接口,加一些安全机制 try { if(dictCode.indexOf(",")!=-1) { String[] params = dictCode.split(","); @@ -337,7 +355,7 @@ public class SysDictController { * @param sysDict * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/add", method = RequestMethod.POST) public Result<SysDict> add(@RequestBody SysDict sysDict) { Result<SysDict> result = new Result<SysDict>(); @@ -358,7 +376,7 @@ public class SysDictController { * @param sysDict * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/edit", method = { RequestMethod.PUT,RequestMethod.POST }) public Result<SysDict> edit(@RequestBody SysDict sysDict) { Result<SysDict> result = new Result<SysDict>(); @@ -380,7 +398,7 @@ public class SysDictController { * @param id * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/delete", method = RequestMethod.DELETE) @CacheEvict(value={CacheConstant.SYS_DICT_CACHE, CacheConstant.SYS_ENABLE_DICT_CACHE}, allEntries=true) public Result<SysDict> delete(@RequestParam(name="id",required=true) String id) { @@ -399,7 +417,7 @@ public class SysDictController { * @param ids * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE) @CacheEvict(value= {CacheConstant.SYS_DICT_CACHE, CacheConstant.SYS_ENABLE_DICT_CACHE}, allEntries=true) public Result<SysDict> deleteBatch(@RequestParam(name="ids",required=true) String ids) { @@ -482,13 +500,14 @@ public class SysDictController { * @param * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { - MultipartFile file = entity.getValue();// 获取上传文件对象 + // 获取上传文件对象 + MultipartFile file = entity.getValue(); ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(2); @@ -568,7 +587,7 @@ public class SysDictController { * @return */ @RequestMapping(value = "/deletePhysic/{id}", method = RequestMethod.DELETE) - public Result<?> deletePhysic(@PathVariable String id) { + public Result<?> deletePhysic(@PathVariable("id") String id) { try { sysDictService.deleteOneDictPhysically(id); return Result.ok("删除成功!"); @@ -584,7 +603,7 @@ public class SysDictController { * @return */ @RequestMapping(value = "/back/{id}", method = RequestMethod.PUT) - public Result<?> back(@PathVariable String id) { + public Result<?> back(@PathVariable("id") String id) { try { sysDictService.updateDictDelFlag(0,id); return Result.ok("操作成功!"); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictItemController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictItemController.java index 611927e..73b1bd5 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictItemController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictItemController.java @@ -7,6 +7,7 @@ import java.util.Date; import javax.servlet.http.HttpServletRequest; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang.StringUtils; import org.apache.shiro.authz.annotation.RequiresRoles; @@ -38,6 +39,7 @@ import lombok.extern.slf4j.Slf4j; * @Author zhangweijian * @since 2018-12-28 */ +@Api(tags = "数据字典") @RestController @RequestMapping("/sys/dictItem") @Slf4j @@ -71,7 +73,7 @@ public class SysDictItemController { * @功能:新增 * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/add", method = RequestMethod.POST) @CacheEvict(value= {CacheConstant.SYS_DICT_CACHE, CacheConstant.SYS_ENABLE_DICT_CACHE}, allEntries=true) public Result<SysDictItem> add(@RequestBody SysDictItem sysDictItem) { @@ -92,7 +94,7 @@ public class SysDictItemController { * @param sysDictItem * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/edit", method = { RequestMethod.PUT,RequestMethod.POST }) @CacheEvict(value={CacheConstant.SYS_DICT_CACHE, CacheConstant.SYS_ENABLE_DICT_CACHE}, allEntries=true) public Result<SysDictItem> edit(@RequestBody SysDictItem sysDictItem) { @@ -116,7 +118,7 @@ public class SysDictItemController { * @param id * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/delete", method = RequestMethod.DELETE) @CacheEvict(value={CacheConstant.SYS_DICT_CACHE, CacheConstant.SYS_ENABLE_DICT_CACHE}, allEntries=true) public Result<SysDictItem> delete(@RequestParam(name="id",required=true) String id) { @@ -138,7 +140,7 @@ public class SysDictItemController { * @param ids * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE) @CacheEvict(value={CacheConstant.SYS_DICT_CACHE, CacheConstant.SYS_ENABLE_DICT_CACHE}, allEntries=true) public Result<SysDictItem> deleteBatch(@RequestParam(name="ids",required=true) String ids) { @@ -161,7 +163,7 @@ public class SysDictItemController { @RequestMapping(value = "/dictItemCheck", method = RequestMethod.GET) @ApiOperation("字典重复校验接口") public Result<Object> doDictItemCheck(SysDictItem sysDictItem, HttpServletRequest request) { - int num = 0; + Long num = Long.valueOf(0); LambdaQueryWrapper<SysDictItem> queryWrapper = new LambdaQueryWrapper<SysDictItem>(); queryWrapper.eq(SysDictItem::getItemValue,sysDictItem.getItemValue()); queryWrapper.eq(SysDictItem::getDictId,sysDictItem.getDictId()); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysGatewayRouteController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysGatewayRouteController.java index dde34ad..f0b99f4 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysGatewayRouteController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysGatewayRouteController.java @@ -67,7 +67,7 @@ public class SysGatewayRouteController extends JeecgController<SysGatewayRoute, * @param id * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/delete", method = RequestMethod.DELETE) public Result<?> delete(@RequestParam(name = "id", required = true) String id) { sysGatewayRouteService.deleteById(id); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java index e4d5b4e..60d6853 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java @@ -12,9 +12,10 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.enums.RoleIndexConfigEnum; import org.jeecg.common.system.vo.LoginUser; -import org.jeecg.common.util.MD5Util; +import org.jeecg.common.util.Md5Util; import org.jeecg.common.util.oConvertUtils; import org.jeecg.config.JeeccgBaseConfig; +import org.jeecg.modules.base.service.BaseCommonService; import org.jeecg.modules.system.entity.*; import org.jeecg.modules.system.model.SysPermissionTree; import org.jeecg.modules.system.model.TreeModel; @@ -23,6 +24,7 @@ import org.jeecg.modules.system.util.PermissionDataUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; import java.util.*; import java.util.stream.Collectors; @@ -57,6 +59,12 @@ public class SysPermissionController { @Autowired private JeeccgBaseConfig jeeccgBaseConfig; + @Autowired + private BaseCommonService baseCommonService; + + @Autowired + private ISysRoleIndexService sysRoleIndexService; + /** * 加载数据节点 * @@ -156,7 +164,7 @@ public class SysPermissionController { query.eq(SysPermission::getDelFlag, CommonConstant.DEL_FLAG_0); query.orderByAsc(SysPermission::getSortNo); List<SysPermission> list = sysPermissionService.list(query); - Map<String, List<SysPermissionTree>> listMap = new HashMap<>(); + Map<String, List<SysPermissionTree>> listMap = new HashMap(5); for (SysPermission item : list) { String pid = item.getParentId(); if (parentIdList.contains(pid)) { @@ -204,7 +212,7 @@ public class SysPermissionController { * @return */ @RequestMapping(value = "/getUserPermissionByToken", method = RequestMethod.GET) - public Result<?> getUserPermissionByToken() { + public Result<?> getUserPermissionByToken(HttpServletRequest request) { Result<JSONObject> result = new Result<JSONObject>(); try { //直接获取当前用户不适用前端token @@ -311,7 +319,7 @@ public class SysPermissionController { * @param permission * @return */ - //@RequiresRoles({ "admin" }) + @RequiresRoles({ "admin" }) @RequestMapping(value = "/add", method = RequestMethod.POST) public Result<SysPermission> add(@RequestBody SysPermission permission) { Result<SysPermission> result = new Result<SysPermission>(); @@ -331,7 +339,7 @@ public class SysPermissionController { * @param permission * @return */ - //@RequiresRoles({ "admin" }) + @RequiresRoles({ "admin" }) @RequestMapping(value = "/edit", method = { RequestMethod.PUT, RequestMethod.POST }) public Result<SysPermission> edit(@RequestBody SysPermission permission) { Result<SysPermission> result = new Result<>(); @@ -351,7 +359,7 @@ public class SysPermissionController { * @param id * @return */ - //@RequiresRoles({ "admin" }) + @RequiresRoles({ "admin" }) @RequestMapping(value = "/delete", method = RequestMethod.DELETE) public Result<SysPermission> delete(@RequestParam(name = "id", required = true) String id) { Result<SysPermission> result = new Result<>(); @@ -370,7 +378,7 @@ public class SysPermissionController { * @param ids * @return */ - //@RequiresRoles({ "admin" }) + @RequiresRoles({ "admin" }) @RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE) public Result<SysPermission> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { Result<SysPermission> result = new Result<>(); @@ -411,8 +419,10 @@ public class SysPermissionController { getTreeModelList(treeList, list, null); Map<String, Object> resMap = new HashMap<String, Object>(); - resMap.put("treeList", treeList); // 全部树节点数据 - resMap.put("ids", ids);// 全部树ids + // 全部树节点数据 + resMap.put("treeList", treeList); + // 全部树ids + resMap.put("ids", ids); result.setResult(resMap); result.setSuccess(true); } catch (Exception e) { @@ -468,7 +478,7 @@ public class SysPermissionController { * @return */ @RequestMapping(value = "/saveRolePermission", method = RequestMethod.POST) - //@RequiresRoles({ "admin" }) + @RequiresRoles({ "admin" }) public Result<String> saveRolePermission(@RequestBody JSONObject json) { long start = System.currentTimeMillis(); Result<String> result = new Result<>(); @@ -477,6 +487,10 @@ public class SysPermissionController { String permissionIds = json.getString("permissionIds"); String lastPermissionIds = json.getString("lastpermissionIds"); this.sysRolePermissionService.saveRolePermission(roleId, permissionIds, lastPermissionIds); + //update-begin---author:wangshuai ---date:20220316 for:[VUEN-234]用户管理角色授权添加敏感日志------------ + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + baseCommonService.addLog("修改角色ID: "+roleId+" 的权限配置,操作人: " +loginUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); + //update-end---author:wangshuai ---date:20220316 for:[VUEN-234]用户管理角色授权添加敏感日志------------ result.success("保存成功!"); log.info("======角色授权成功=====耗时:" + (System.currentTimeMillis() - start) + "毫秒"); } catch (Exception e) { @@ -654,13 +668,15 @@ public class SysPermissionController { } else if (permission.getMenuType().equals(CommonConstant.MENU_TYPE_0) || permission.getMenuType().equals(CommonConstant.MENU_TYPE_1)) { json.put("id", permission.getId()); if (permission.isRoute()) { - json.put("route", "1");// 表示生成路由 + //表示生成路由 + json.put("route", "1"); } else { - json.put("route", "0");// 表示不生成路由 + //表示不生成路由 + json.put("route", "0"); } if (isWWWHttpUrl(permission.getUrl())) { - json.put("path", MD5Util.MD5Encode(permission.getUrl(), "utf-8")); + json.put("path", Md5Util.md5Encode(permission.getUrl(), "utf-8")); } else { json.put("path", permission.getUrl()); } @@ -789,7 +805,7 @@ public class SysPermissionController { * @param sysPermissionDataRule * @return */ - //@RequiresRoles({ "admin" }) + @RequiresRoles({ "admin" }) @RequestMapping(value = "/addPermissionRule", method = RequestMethod.POST) public Result<SysPermissionDataRule> addPermissionRule(@RequestBody SysPermissionDataRule sysPermissionDataRule) { Result<SysPermissionDataRule> result = new Result<SysPermissionDataRule>(); @@ -804,7 +820,7 @@ public class SysPermissionController { return result; } - //@RequiresRoles({ "admin" }) + @RequiresRoles({ "admin" }) @RequestMapping(value = "/editPermissionRule", method = { RequestMethod.PUT, RequestMethod.POST }) public Result<SysPermissionDataRule> editPermissionRule(@RequestBody SysPermissionDataRule sysPermissionDataRule) { Result<SysPermissionDataRule> result = new Result<SysPermissionDataRule>(); @@ -824,7 +840,7 @@ public class SysPermissionController { * @param id * @return */ - //@RequiresRoles({ "admin" }) + @RequiresRoles({ "admin" }) @RequestMapping(value = "/deletePermissionRule", method = RequestMethod.DELETE) public Result<SysPermissionDataRule> deletePermissionRule(@RequestParam(name = "id", required = true) String id) { Result<SysPermissionDataRule> result = new Result<SysPermissionDataRule>(); @@ -881,7 +897,7 @@ public class SysPermissionController { * @return */ @RequestMapping(value = "/saveDepartPermission", method = RequestMethod.POST) - //@RequiresRoles({ "admin" }) + @RequiresRoles({ "admin" }) public Result<String> saveDepartPermission(@RequestBody JSONObject json) { long start = System.currentTimeMillis(); Result<String> result = new Result<>(); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPositionController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPositionController.java index 8315423..bdefe44 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPositionController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPositionController.java @@ -234,7 +234,8 @@ public class SysPositionController { List<String> errorMessage = new ArrayList<>(); int successLines = 0, errorLines = 0; for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { - MultipartFile file = entity.getValue();// 获取上传文件对象 + // 获取上传文件对象 + MultipartFile file = entity.getValue(); ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysRoleController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysRoleController.java index 13c69c8..7864d3d 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysRoleController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysRoleController.java @@ -109,7 +109,7 @@ public class SysRoleController { * @return */ @RequestMapping(value = "/add", method = RequestMethod.POST) - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) public Result<SysRole> add(@RequestBody SysRole role) { Result<SysRole> result = new Result<SysRole>(); try { @@ -128,7 +128,7 @@ public class SysRoleController { * @param role * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/edit",method = {RequestMethod.PUT,RequestMethod.POST}) public Result<SysRole> edit(@RequestBody SysRole role) { Result<SysRole> result = new Result<SysRole>(); @@ -152,7 +152,7 @@ public class SysRoleController { * @param id * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/delete", method = RequestMethod.DELETE) public Result<?> delete(@RequestParam(name="id",required=true) String id) { sysRoleService.deleteRole(id); @@ -164,7 +164,7 @@ public class SysRoleController { * @param ids * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE) public Result<SysRole> deleteBatch(@RequestParam(name="ids",required=true) String ids) { Result<SysRole> result = new Result<SysRole>(); @@ -214,7 +214,8 @@ public class SysRoleController { @RequestMapping(value = "/checkRoleCode", method = RequestMethod.GET) public Result<Boolean> checkUsername(String id,String roleCode) { Result<Boolean> result = new Result<>(); - result.setResult(true);//如果此参数为false则程序发生异常 + //如果此参数为false则程序发生异常 + result.setResult(true); log.info("--验证角色编码是否唯一---id:"+id+"--roleCode:"+roleCode); try { SysRole role = null; @@ -277,7 +278,8 @@ public class SysRoleController { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { - MultipartFile file = entity.getValue();// 获取上传文件对象 + // 获取上传文件对象 + MultipartFile file = entity.getValue(); ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); @@ -307,7 +309,7 @@ public class SysRoleController { if(list==null || list.size()==0) { return Result.error("未找到权限配置信息"); }else { - Map<String,Object> map = new HashMap<>(); + Map<String,Object> map = new HashMap(5); map.put("datarule", list); LambdaQueryWrapper<SysRolePermission> query = new LambdaQueryWrapper<SysRolePermission>() .eq(SysRolePermission::getPermissionId, permissionId) @@ -375,9 +377,11 @@ public class SysRoleController { } List<TreeModel> treeList = new ArrayList<>(); getTreeModelList(treeList, list, null); - Map<String,Object> resMap = new HashMap<String,Object>(); - resMap.put("treeList", treeList); //全部树节点数据 - resMap.put("ids", ids);//全部树ids + Map<String,Object> resMap = new HashMap(5); + //全部树节点数据 + resMap.put("treeList", treeList); + //全部树ids + resMap.put("ids", ids); result.setResult(resMap); result.setSuccess(true); } catch (Exception e) { diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysRoleIndexController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysRoleIndexController.java new file mode 100644 index 0000000..fb15615 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysRoleIndexController.java @@ -0,0 +1,168 @@ +package org.jeecg.modules.system.controller; + +import java.util.Arrays; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.modules.system.entity.SysRoleIndex; +import org.jeecg.modules.system.service.ISysRoleIndexService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.system.base.controller.JeecgController; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +/** + * @Description: 角色首页配置 + * @Author: jeecg-boot + * @Date: 2022-03-25 + * @Version: V1.0 + */ +@Slf4j +@Api(tags = "角色首页配置") +@RestController +@RequestMapping("/sys/sysRoleIndex") +public class SysRoleIndexController extends JeecgController<SysRoleIndex, ISysRoleIndexService> { + @Autowired + private ISysRoleIndexService sysRoleIndexService; + + /** + * 分页列表查询 + * + * @param sysRoleIndex + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @AutoLog(value = "角色首页配置-分页列表查询") + @ApiOperation(value = "角色首页配置-分页列表查询", notes = "角色首页配置-分页列表查询") + @GetMapping(value = "/list") + public Result<?> queryPageList(SysRoleIndex sysRoleIndex, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper<SysRoleIndex> queryWrapper = QueryGenerator.initQueryWrapper(sysRoleIndex, req.getParameterMap()); + Page<SysRoleIndex> page = new Page<SysRoleIndex>(pageNo, pageSize); + IPage<SysRoleIndex> pageList = sysRoleIndexService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param sysRoleIndex + * @return + */ + @AutoLog(value = "角色首页配置-添加") + @ApiOperation(value = "角色首页配置-添加", notes = "角色首页配置-添加") + @PostMapping(value = "/add") + public Result<?> add(@RequestBody SysRoleIndex sysRoleIndex) { + sysRoleIndexService.save(sysRoleIndex); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param sysRoleIndex + * @return + */ + @AutoLog(value = "角色首页配置-编辑") + @ApiOperation(value = "角色首页配置-编辑", notes = "角色首页配置-编辑") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result<?> edit(@RequestBody SysRoleIndex sysRoleIndex) { + sysRoleIndexService.updateById(sysRoleIndex); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "角色首页配置-通过id删除") + @ApiOperation(value = "角色首页配置-通过id删除", notes = "角色首页配置-通过id删除") + @DeleteMapping(value = "/delete") + public Result<?> delete(@RequestParam(name = "id", required = true) String id) { + sysRoleIndexService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "角色首页配置-批量删除") + @ApiOperation(value = "角色首页配置-批量删除", notes = "角色首页配置-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.sysRoleIndexService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "角色首页配置-通过id查询") + @ApiOperation(value = "角色首页配置-通过id查询", notes = "角色首页配置-通过id查询") + @GetMapping(value = "/queryById") + public Result<?> queryById(@RequestParam(name = "id", required = true) String id) { + SysRoleIndex sysRoleIndex = sysRoleIndexService.getById(id); + return Result.OK(sysRoleIndex); + } + + /** + * 导出excel + * + * @param request + * @param sysRoleIndex + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, SysRoleIndex sysRoleIndex) { + return super.exportXls(request, sysRoleIndex, SysRoleIndex.class, "角色首页配置"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, SysRoleIndex.class); + } + + /** + * 通过code查询 + * + * @param roleCode + * @return + */ + @AutoLog(value = "角色首页配置-通过code查询") + @ApiOperation(value = "角色首页配置-通过code查询", notes = "角色首页配置-通过code查询") + @GetMapping(value = "/queryByCode") + public Result<?> queryByCode(@RequestParam(name = "roleCode", required = true) String roleCode) { + SysRoleIndex sysRoleIndex = sysRoleIndexService.getOne(new LambdaQueryWrapper<SysRoleIndex>().eq(SysRoleIndex::getRoleCode, roleCode)); + return Result.OK(sysRoleIndex); + } +} diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysTenantController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysTenantController.java index 82b73b7..6001b94 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysTenantController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysTenantController.java @@ -22,6 +22,7 @@ import java.util.*; /** * 租户配置信息 + * @author: jeecg-boot */ @Slf4j @RestController @@ -134,7 +135,7 @@ public class SysTenantController { // 过滤掉已被引用的租户 List<Integer> idList = new ArrayList<>(); for (String id : ls) { - int userCount = sysTenantService.countUserLinkTenant(id); + Long userCount = sysTenantService.countUserLinkTenant(id); if (userCount == 0) { idList.add(Integer.parseInt(id)); } @@ -200,7 +201,7 @@ public class SysTenantController { try { LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String tenantIds = sysUser.getRelTenantIds(); - Map<String,Object> map = new HashMap<String,Object>(); + Map<String,Object> map = new HashMap(5); if (oConvertUtils.isNotEmpty(tenantIds)) { List<Integer> tenantIdList = new ArrayList<>(); for(String id: tenantIds.split(",")){ diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUploadController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUploadController.java index 300f903..45d6934 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUploadController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUploadController.java @@ -19,6 +19,7 @@ import javax.servlet.http.HttpServletRequest; /** * minio文件上传示例 + * @author: jeecg-boot */ @Slf4j @RestController @@ -45,8 +46,10 @@ public class SysUploadController { bizPath = ""; } MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; - MultipartFile file = multipartRequest.getFile("file");// 获取上传文件对象 - String orgName = file.getOriginalFilename();// 获取文件名 + // 获取上传文件对象 + MultipartFile file = multipartRequest.getFile("file"); + // 获取文件名 + String orgName = file.getOriginalFilename(); orgName = CommonUtils.getFileName(orgName); String file_url = MinioUtil.upload(file,bizPath); if(oConvertUtils.isEmpty(file_url)){ diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserAgentController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserAgentController.java index 998b61e..cd6daee 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserAgentController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserAgentController.java @@ -236,7 +236,8 @@ public class SysUserAgentController { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { - MultipartFile file = entity.getValue();// 获取上传文件对象 + // 获取上传文件对象 + MultipartFile file = entity.getValue(); ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java index a6a12de..e87e72c 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java @@ -42,7 +42,6 @@ import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @@ -61,9 +60,7 @@ import java.util.stream.Collectors; @RestController @RequestMapping("/sys/user") public class SysUserController { - @Autowired - private ISysBaseAPI sysBaseAPI; - + @Autowired private ISysUserService sysUserService; @@ -91,7 +88,7 @@ public class SysUserController { @Value("${jeecg.path.upload}") private String upLoadPath; - @Resource + @Autowired private BaseCommonService baseCommonService; /** @@ -117,7 +114,13 @@ public class SysUserController { query.eq(SysUserDepart::getDepId,departId); List<SysUserDepart> list = sysUserDepartService.list(query); List<String> userIds = list.stream().map(SysUserDepart::getUserId).collect(Collectors.toList()); - queryWrapper.in("id",userIds); + //update-begin---author:wangshuai ---date:20220322 for:[issues/I4XTYB]查询用户时,当部门id 下没有分配用户时接口报错------------ + if(oConvertUtils.listIsNotEmpty(userIds)){ + queryWrapper.in("id",userIds); + }else{ + return Result.OK(); + } + //update-end---author:wangshuai ---date:20220322 for:[issues/I4XTYB]查询用户时,当部门id 下没有分配用户时接口报错------------ } //用户ID String code = req.getParameter("code"); @@ -155,8 +158,8 @@ public class SysUserController { return result; } - //@RequiresRoles({"admin"}) - //@RequiresPermissions("user:add") + @RequiresRoles({"admin"}) + @RequiresPermissions("user:add") @RequestMapping(value = "/add", method = RequestMethod.POST) public Result<SysUser> add(@RequestBody JSONObject jsonObject) { Result<SysUser> result = new Result<SysUser>(); @@ -173,6 +176,7 @@ public class SysUserController { user.setDelFlag(CommonConstant.DEL_FLAG_0); // 保存用户走一个service 保证事务 sysUserService.saveUser(user, selectedRoles, selectedDeparts); + baseCommonService.addLog("添加用户,username: " +user.getUsername() ,CommonConstant.LOG_TYPE_2, 2); result.success("添加成功!"); } catch (Exception e) { log.error(e.getMessage(), e); @@ -181,14 +185,14 @@ public class SysUserController { return result; } - //@RequiresRoles({"admin"}) - //@RequiresPermissions("user:edit") + @RequiresRoles({"admin"}) + @RequiresPermissions("user:edit") @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) public Result<SysUser> edit(@RequestBody JSONObject jsonObject) { Result<SysUser> result = new Result<SysUser>(); try { SysUser sysUser = sysUserService.getById(jsonObject.getString("id")); - baseCommonService.addLog("编辑用户,id: " +jsonObject.getString("id") ,CommonConstant.LOG_TYPE_2, 2); + baseCommonService.addLog("编辑用户,username: " +sysUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); if(sysUser==null) { result.error500("未找到对应实体"); }else { @@ -216,7 +220,7 @@ public class SysUserController { /** * 删除用户 */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/delete", method = RequestMethod.DELETE) public Result<?> delete(@RequestParam(name="id",required=true) String id) { baseCommonService.addLog("删除用户,id: " +id ,CommonConstant.LOG_TYPE_2, 3); @@ -227,7 +231,7 @@ public class SysUserController { /** * 批量删除用户 */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE) public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) { baseCommonService.addLog("批量删除用户, ids: " +ids ,CommonConstant.LOG_TYPE_2, 3); @@ -240,7 +244,7 @@ public class SysUserController { * @param jsonObject * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/frozenBatch", method = RequestMethod.PUT) public Result<SysUser> frozenBatch(@RequestBody JSONObject jsonObject) { Result<SysUser> result = new Result<SysUser>(); @@ -328,7 +332,7 @@ public class SysUserController { /** * 修改密码 */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/changePassword", method = RequestMethod.PUT) public Result<?> changePassword(@RequestBody SysUser sysUser) { SysUser u = this.sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, sysUser.getUsername())); @@ -336,6 +340,10 @@ public class SysUserController { return Result.error("用户不存在!"); } sysUser.setId(u.getId()); + //update-begin---author:wangshuai ---date:20220316 for:[VUEN-234]修改密码添加敏感日志------------ + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + baseCommonService.addLog("修改用户 "+sysUser.getUsername()+" 的密码,操作人: " +loginUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); + //update-end---author:wangshuai ---date:20220316 for:[VUEN-234]修改密码添加敏感日志------------ return sysUserService.changePassword(sysUser); } @@ -474,8 +482,8 @@ public class SysUserController { * @param response * @return */ - //@RequiresRoles({"admin"}) - //@RequiresPermissions("user:import") + @RequiresRoles({"admin"}) + @RequiresPermissions("user:import") @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response)throws IOException { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; @@ -571,7 +579,7 @@ public class SysUserController { /** * 首页用户重置密码 */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/updatePassword", method = RequestMethod.PUT) public Result<?> updatePassword(@RequestBody JSONObject json) { String username = json.getString("username"); @@ -586,6 +594,10 @@ public class SysUserController { if(user==null) { return Result.error("用户不存在!"); } + //update-begin---author:wangshuai ---date:20220316 for:[VUEN-234]修改密码添加敏感日志------------ + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + baseCommonService.addLog("修改密码,username: " +loginUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); + //update-end---author:wangshuai ---date:20220316 for:[VUEN-234]修改密码添加敏感日志------------ return sysUserService.resetPassword(username,oldpassword,password,confirmpassword); } @@ -608,7 +620,7 @@ public class SysUserController { * @param * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/addSysUserRole", method = RequestMethod.POST) public Result<String> addSysUserRole(@RequestBody SysUserRoleVO sysUserRoleVO) { Result<String> result = new Result<String>(); @@ -639,7 +651,7 @@ public class SysUserController { * @param * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/deleteUserRole", method = RequestMethod.DELETE) public Result<SysUserRole> deleteUserRole(@RequestParam(name="roleId") String roleId, @RequestParam(name="userId",required=true) String userId @@ -663,7 +675,7 @@ public class SysUserController { * @param * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/deleteUserRoleBatch", method = RequestMethod.DELETE) public Result<SysUserRole> deleteUserRoleBatch( @RequestParam(name="roleId") String roleId, @@ -790,7 +802,7 @@ public class SysUserController { /** * 给指定部门添加对应的用户 */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/editSysDepartWithUser", method = RequestMethod.POST) public Result<String> editSysDepartWithUser(@RequestBody SysDepartUsersVO sysDepartUsersVO) { Result<String> result = new Result<String>(); @@ -819,7 +831,7 @@ public class SysUserController { /** * 删除指定机构的用户关系 */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/deleteUserInDepart", method = RequestMethod.DELETE) public Result<SysUserDepart> deleteUserInDepart(@RequestParam(name="depId") String depId, @RequestParam(name="userId",required=true) String userId @@ -851,7 +863,7 @@ public class SysUserController { /** * 批量删除指定机构的用户关系 */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/deleteUserInDepartBatch", method = RequestMethod.DELETE) public Result<SysUserDepart> deleteUserInDepartBatch( @RequestParam(name="depId") String depId, @@ -882,7 +894,7 @@ public class SysUserController { try { LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal(); List<SysDepart> list = this.sysDepartService.queryUserDeparts(sysUser.getId()); - Map<String,Object> map = new HashMap<String,Object>(); + Map<String,Object> map = new HashMap(5); map.put("list", list); map.put("orgCode", sysUser.getOrgCode()); result.setSuccess(true); @@ -1030,7 +1042,7 @@ public class SysUserController { LambdaQueryWrapper<SysUser> query = new LambdaQueryWrapper<>(); query.eq(SysUser::getPhone,phone); SysUser user = sysUserService.getOne(query); - Map<String,String> map = new HashMap<>(); + Map<String,String> map = new HashMap(5); map.put("smscode",smscode); map.put("username",user.getUsername()); result.setResult(map); @@ -1076,6 +1088,9 @@ public class SysUserController { String passwordEncode = PasswordUtil.encrypt(sysUser.getUsername(), password, salt); sysUser.setPassword(passwordEncode); this.sysUserService.updateById(sysUser); + //update-begin---author:wangshuai ---date:20220316 for:[VUEN-234]密码重置添加敏感日志------------ + baseCommonService.addLog("重置 "+username+" 的密码,操作人: " +sysUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); + //update-end---author:wangshuai ---date:20220316 for:[VUEN-234]密码重置添加敏感日志------------ result.setSuccess(true); result.setMessage("密码重置完成!"); return result; @@ -1200,7 +1215,7 @@ public class SysUserController { * @param userIds 被删除的用户ID,多个id用半角逗号分割 * @return */ - //@RequiresRoles({"admin"}) + @RequiresRoles({"admin"}) @RequestMapping(value = "/deleteRecycleBin", method = RequestMethod.DELETE) public Result deleteRecycleBin(@RequestParam("userIds") String userIds) { if (StringUtils.isNotBlank(userIds)) { @@ -1297,7 +1312,7 @@ public class SysUserController { @GetMapping("/queryChildrenByUsername") public Result queryChildrenByUsername(@RequestParam("userId") String userId) { //获取用户信息 - Map<String,Object> map=new HashMap<String,Object>(); + Map<String,Object> map=new HashMap(5); SysUser sysUser = sysUserService.getById(userId); String username = sysUser.getUsername(); Integer identity = sysUser.getUserIdentity(); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserOnlineController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserOnlineController.java index 576c9fd..3222bf6 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserOnlineController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserOnlineController.java @@ -7,13 +7,13 @@ import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CacheConstant; import org.jeecg.common.constant.CommonConstant; -import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.RedisUtil; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.base.service.BaseCommonService; import org.jeecg.modules.system.service.ISysUserService; +import org.jeecg.modules.system.service.impl.SysBaseApiImpl; import org.jeecg.modules.system.vo.SysUserOnlineVO; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -39,15 +39,12 @@ public class SysUserOnlineController { @Autowired private RedisUtil redisUtil; - @Autowired public RedisTemplate redisTemplate; - @Autowired public ISysUserService userService; - @Autowired - private ISysBaseAPI sysBaseAPI; + private SysBaseApiImpl sysBaseApi; @Resource private BaseCommonService baseCommonService; @@ -63,7 +60,7 @@ public class SysUserOnlineController { SysUserOnlineVO online = new SysUserOnlineVO(); online.setToken(token); //TODO 改成一次性查询 - LoginUser loginUser = sysBaseAPI.getUserByName(JwtUtil.getUsername(token)); + LoginUser loginUser = sysBaseApi.getUserByName(JwtUtil.getUsername(token)); if (loginUser != null) { //update-begin---author:wangshuai ---date:20220104 for:[JTC-382]在线用户查询无效------------ //验证用户名是否与传过来的用户名相同 @@ -113,7 +110,7 @@ public class SysUserOnlineController { return Result.error("退出登录失败!"); } String username = JwtUtil.getUsername(online.getToken()); - LoginUser sysUser = sysBaseAPI.getUserByName(username); + LoginUser sysUser = sysBaseApi.getUserByName(username); if(sysUser!=null) { baseCommonService.addLog("强制: "+sysUser.getRealname()+"退出成功!", CommonConstant.LOG_TYPE_1, null,sysUser); log.info(" 强制 "+sysUser.getRealname()+"退出成功! "); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/ThirdAppController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/ThirdAppController.java index 7363d55..4c93b1e 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/ThirdAppController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/ThirdAppController.java @@ -19,6 +19,7 @@ import java.util.Map; /** * 第三方App对接 + * @author: jeecg-boot */ @Slf4j @RestController("thirdAppController") @@ -38,7 +39,7 @@ public class ThirdAppController { */ @GetMapping("/getEnabledType") public Result getEnabledType() { - Map<String, Boolean> enabledMap = new HashMap<>(); + Map<String, Boolean> enabledMap = new HashMap(5); enabledMap.put("wechatEnterprise", thirdAppConfig.isWechatEnterpriseEnabled()); enabledMap.put("dingtalk", thirdAppConfig.isDingtalkEnabled()); return Result.OK(enabledMap); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java index 65aca76..d7e7c06 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java @@ -198,10 +198,17 @@ public class ThirdLoginController { String token = JwtUtil.sign(user.getUsername(), user.getPassword()); redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); // 设置超时时间 - redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME / 1000); + redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME * 2 / 1000); return token; } + /** + * 第三方登录回调接口 + * @param token + * @param thirdType + * @return + * @throws Exception + */ @SuppressWarnings("unchecked") @RequestMapping(value = "/getLoginUser/{token}/{thirdType}", method = RequestMethod.GET) @ResponseBody @@ -251,20 +258,21 @@ public class ThirdLoginController { Result<String> result = new Result<String>(); String phone = jsonObject.getString("mobile"); String thirdUserUuid = jsonObject.getString("thirdUserUuid"); + // 校验验证码 + String captcha = jsonObject.getString("captcha"); + Object captchaCache = redisUtil.get(phone); + if (oConvertUtils.isEmpty(captcha) || !captcha.equals(captchaCache)) { + result.setMessage("验证码错误"); + result.setSuccess(false); + return result; + } //校验用户有效性 SysUser sysUser = sysUserService.getUserByPhone(phone); if(sysUser != null){ + // 存在用户,直接绑定 sysThirdAccountService.updateThirdUserId(sysUser,thirdUserUuid); }else{ // 不存在手机号,创建用户 - String smscode = jsonObject.getString("captcha"); - Object code = redisUtil.get(phone); - if (!smscode.equals(code)) { - result.setMessage("手机验证码错误"); - result.setSuccess(false); - return result; - } - //创建用户 sysUser = sysThirdAccountService.createUser(phone,thirdUserUuid); } String token = saveToken(sysUser); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDataLog.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDataLog.java index 6dd039d..2d885c5 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDataLog.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDataLog.java @@ -13,6 +13,10 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +/** + * @Description: 系统数据日志 + * @author: jeecg-boot + */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @@ -20,17 +24,52 @@ public class SysDataLog implements Serializable { private static final long serialVersionUID = 1L; @TableId(type = IdType.ASSIGN_ID) - private String id; //id' - private String createBy; //创建人登录名称 + /** + * id + */ + private String id; + + /** + * 创建人登录名称 + */ + private String createBy; + + /** + * 创建日期 + */ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date createTime; //创建日期 - private String updateBy; //更新人登录名称 + private Date createTime; + + /** + * 更新人登录名称 + */ + private String updateBy; @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date updateTime; //更新日期 - private String dataTable; //表名 - private String dataId; //数据ID - private String dataContent; //数据内容 - private String dataVersion; //版本号 + + /** + * 更新日期 + */ + private Date updateTime; + + /** + * 表名 + */ + private String dataTable; + + /** + * 数据ID + */ + private String dataId; + + /** + * 数据内容 + */ + private String dataContent; + + /** + * 版本号 + */ + private String dataVersion; } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepart.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepart.java index c0a9481..b4fdad5 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepart.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepart.java @@ -1,6 +1,7 @@ package org.jeecg.modules.system.entity; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; @@ -85,6 +86,15 @@ public class SysDepart implements Serializable { @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date updateTime; + + //update-begin---author:wangshuai ---date:20200308 for:[JTC-119]在部门管理菜单下设置部门负责人,新增字段负责人ids和旧的负责人ids + /**部门负责人的ids*/ + @TableField(exist = false) + private String directorUserIds; + /**旧的部门负责人的ids(用于比较删除和新增)*/ + @TableField(exist = false) + private String oldDirectorUserIds; + //update-end---author:wangshuai ---date:20200308 for:[JTC-119]新增字段负责人ids和旧的负责人ids /** * 重写equals方法 diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysRoleIndex.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysRoleIndex.java new file mode 100644 index 0000000..1c744bf --- /dev/null +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysRoleIndex.java @@ -0,0 +1,75 @@ +package org.jeecg.modules.system.entity; + +import java.io.Serializable; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; + +/** + * @Description: 角色首页配置 + * @Author: liusq + * @Date: 2022-03-25 + * @Version: V1.0 + */ +@Data +@TableName("sys_role_index") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="sys_role_index对象", description="角色首页配置") +public class SysRoleIndex { + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private java.lang.String id; + /**角色编码*/ + @Excel(name = "角色编码", width = 15) + @ApiModelProperty(value = "角色编码") + private java.lang.String roleCode; + /**路由地址*/ + @Excel(name = "路由地址", width = 15) + @ApiModelProperty(value = "路由地址") + private java.lang.String url; + /**优先级*/ + @Excel(name = "优先级", width = 15) + @ApiModelProperty(value = "优先级") + private java.lang.Integer priority; + /**路由地址*/ + @Excel(name = "状态", width = 15) + @ApiModelProperty(value = "状态") + private java.lang.String status; + /**创建人登录名称*/ + @Excel(name = "创建人登录名称", width = 15) + @ApiModelProperty(value = "创建人登录名称") + private java.lang.String createBy; + /**创建日期*/ + @Excel(name = "创建日期", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人登录名称*/ + @Excel(name = "更新人登录名称", width = 15) + @ApiModelProperty(value = "更新人登录名称") + private java.lang.String updateBy; + /**更新日期*/ + @Excel(name = "更新日期", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @Excel(name = "所属部门", width = 15) + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; +} diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysTenant.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysTenant.java index a11a295..8489b0f 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysTenant.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysTenant.java @@ -11,6 +11,7 @@ import java.util.Date; /** * 租户信息 + * @author: jeecg-boot */ @Data @TableName("sys_tenant") diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUserDepart.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUserDepart.java index 446d558..d370ddd 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUserDepart.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUserDepart.java @@ -7,6 +7,11 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; + +/** + * @Description: 用户部门 + * @author: jeecg-boot + */ @Data @TableName("sys_user_depart") public class SysUserDepart implements Serializable { diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementMapper.java index 9c6f3ce..e7a6343 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementMapper.java @@ -16,7 +16,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; */ public interface SysAnnouncementMapper extends BaseMapper<SysAnnouncement> { - + /** + * 通过消息类型和用户id获取系统通告 + * @param page + * @param userId 用户id + * @param msgCategory 消息类型 + * @return + */ List<SysAnnouncement> querySysCementListByUserId(Page<SysAnnouncement> page, @Param("userId")String userId,@Param("msgCategory")String msgCategory); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementSendMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementSendMapper.java index 56b25c6..6581221 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementSendMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementSendMapper.java @@ -17,13 +17,17 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; */ public interface SysAnnouncementSendMapper extends BaseMapper<SysAnnouncementSend> { + /** + * 通过用户id查询 用户通告阅读标记表 + * @param userId 用户id + * @return + */ public List<String> queryByUserId(@Param("userId") String userId); /** - * @功能:获取我的消息 + * 获取我的消息 * @param announcementSendModel - * @param pageSize - * @param pageNo + * @param page * @return */ public List<AnnouncementSendModel> getMyAnnouncementSendList(Page<AnnouncementSendModel> page,@Param("announcementSendModel") AnnouncementSendModel announcementSendModel); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysCategoryMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysCategoryMapper.java index c5f2fd7..3abefa6 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysCategoryMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysCategoryMapper.java @@ -19,12 +19,18 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface SysCategoryMapper extends BaseMapper<SysCategory> { /** - * 根据父级ID查询树节点数据 + * 根据父级ID查询树节点数据 * @param pid + * @param query * @return */ public List<TreeSelectModel> queryListByPid(@Param("pid") String pid,@Param("query") Map<String, String> query); + /** + * 通过code查询分类字典表 + * @param code + * @return + */ @Select("SELECT ID FROM sys_category WHERE CODE = #{code,jdbcType=VARCHAR}") public String queryIdByCode(@Param("code") String code); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDataLogMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDataLogMapper.java index e6abc3b..4bdcffd 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDataLogMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDataLogMapper.java @@ -5,6 +5,10 @@ import org.jeecg.modules.system.entity.SysDataLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +/** + * @Description: 系统数据日志Mapper接口 + * @author: jeecg-boot + */ public interface SysDataLogMapper extends BaseMapper<SysDataLog>{ /** * 通过表名及数据Id获取最大版本 diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java index f5a32b4..5d5c8fb 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java @@ -21,6 +21,8 @@ public interface SysDepartMapper extends BaseMapper<SysDepart> { /** * 根据用户ID查询部门集合 + * @param userId 用户id + * @return List<SysDepart> */ public List<SysDepart> queryUserDeparts(@Param("userId") String userId); @@ -32,9 +34,19 @@ public interface SysDepartMapper extends BaseMapper<SysDepart> { */ public List<SysDepart> queryDepartsByUsername(@Param("username") String username); + /** + * 通过部门编码获取部门id + * @param orgCode 部门编码 + * @return String + */ @Select("select id from sys_depart where org_code=#{orgCode}") public String queryDepartIdByOrgCode(@Param("orgCode") String orgCode); + /** + * 通过部门id 查询部门id,父id + * @param departId 部门id + * @return + */ @Select("select id,parent_id from sys_depart where id=#{departId}") public SysDepart getParentDepartId(@Param("departId") String departId); @@ -52,6 +64,11 @@ public interface SysDepartMapper extends BaseMapper<SysDepart> { */ List<String> getSubDepIdsByOrgCodes(@org.apache.ibatis.annotations.Param("orgCodes") String[] orgCodes); + /** + * 根据parent_id查询下级部门 + * @param parentId 父id + * @return List<SysDepart> + */ List<SysDepart> queryTreeListByPid(@Param("parentId") String parentId); /** * 根据id下级部门数量 diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDictItemMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDictItemMapper.java index 0502f98..d53093e 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDictItemMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDictItemMapper.java @@ -15,6 +15,12 @@ import java.util.List; * @since 2018-12-28 */ public interface SysDictItemMapper extends BaseMapper<SysDictItem> { + + /** + * 通过字典id查询字典项 + * @param mainId 字典id + * @return + */ @Select("SELECT * FROM sys_dict_item WHERE DICT_ID = #{mainId} order by sort_order asc, item_value asc") public List<SysDictItem> selectItemsByMainId(String mainId); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDictMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDictMapper.java index d569857..135b0bf 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDictMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDictMapper.java @@ -27,14 +27,26 @@ import java.util.Map; public interface SysDictMapper extends BaseMapper<SysDict> { /** - * 重复检查SQL + * 重复检查SQL + * @param duplicateCheckVo * @return */ @Deprecated public Long duplicateCheckCountSql(DuplicateCheckVo duplicateCheckVo); + + /** + * 重复校验 sql语句 + * @param duplicateCheckVo + * @return + */ @Deprecated public Long duplicateCheckCountSqlNoDataId(DuplicateCheckVo duplicateCheckVo); - + + /** + * 通过字典code获取字典数据 + * @param code 字典code + * @return List<DictModel> + */ public List<DictModel> queryDictItemsByCode(@Param("code") String code); /** @@ -53,16 +65,44 @@ public interface SysDictMapper extends BaseMapper<SysDict> { */ public List<DictModelMany> queryDictItemsByCodeList(@Param("dictCodeList") List<String> dictCodeList); + /** + * 通过查询指定table的 text code 获取字典 + * @param table + * @param text + * @param code + * @return List<DictModel> + */ @Deprecated public List<DictModel> queryTableDictItemsByCode(@Param("table") String table,@Param("text") String text,@Param("code") String code); + /** + * 通过查询指定table的 text code 获取字典(指定查询条件) + * @param table + * @param text + * @param code + * @param filterSql + * @return List<DictModel> + */ @Deprecated public List<DictModel> queryTableDictItemsByCodeAndFilter(@Param("table") String table,@Param("text") String text,@Param("code") String code,@Param("filterSql") String filterSql); + /** + * 通过查询指定table的 text code 获取字典 + * @param table + * @param key + * @param value + * @return List<Map<String,String>> + */ @Deprecated @Select("select ${key} as \"label\",${value} as \"value\" from ${table}") public List<Map<String,String>> getDictByTableNgAlain(@Param("table") String table, @Param("key") String key, @Param("value") String value); + /** + * 通过字典code获取字典数据 + * @param code + * @param key + * @return + */ public String queryDictTextByKey(@Param("code") String code,@Param("key") String key); /** @@ -73,6 +113,14 @@ public interface SysDictMapper extends BaseMapper<SysDict> { */ List<DictModelMany> queryManyDictByKeys(@Param("dictCodeList") List<String> dictCodeList, @Param("keys") List<String> keys); + /** + * 通过查询指定table的 text code key 获取字典值 + * @param table + * @param text + * @param code + * @param key + * @return String + */ @Deprecated public String queryTableDictTextByKey(@Param("table") String table,@Param("text") String text,@Param("code") String code,@Param("key") String key); @@ -88,6 +136,14 @@ public interface SysDictMapper extends BaseMapper<SysDict> { @Deprecated List<DictModel> queryTableDictTextByKeys(@Param("table") String table, @Param("text") String text, @Param("code") String code, @Param("keys") List<String> keys); + /** + * 通过查询指定table的 text code key 获取字典值,包含value + * @param table + * @param text + * @param code + * @param keyArray + * @return List<DictModel> + */ @Deprecated public List<DictModel> queryTableDictByKeys(@Param("table") String table, @Param("text") String text, @Param("code") String code, @Param("keyArray") String[] keyArray); @@ -133,6 +189,8 @@ public interface SysDictMapper extends BaseMapper<SysDict> { * @param code * @param pid * @param hasChildField + * @param query + * @param pidField * @return */ @Deprecated diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysLogMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysLogMapper.java index 81fe4d5..f84d124 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysLogMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysLogMapper.java @@ -20,7 +20,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface SysLogMapper extends BaseMapper<SysLog> { /** - * @功能:清空所有日志记录 + * 清空所有日志记录 */ public void removeAll(); @@ -34,14 +34,16 @@ public interface SysLogMapper extends BaseMapper<SysLog> { //update-begin--Author:zhangweijian Date:20190428 for:传入开始时间,结束时间参数 /** * 获取系统今日访问次数 - * + * @param dayStart 开始时间 + * @param dayEnd 结束时间 * @return Long */ Long findTodayVisitCount(@Param("dayStart") Date dayStart, @Param("dayEnd") Date dayEnd); /** * 获取系统今日访问 IP数 - * + * @param dayStart 开始时间 + * @param dayEnd 结束时间 * @return Long */ Long findTodayIp(@Param("dayStart") Date dayStart, @Param("dayEnd") Date dayEnd); @@ -51,6 +53,7 @@ public interface SysLogMapper extends BaseMapper<SysLog> { * 首页:根据时间统计访问数量/ip数量 * @param dayStart * @param dayEnd + * @param dbType * @return */ List<Map<String,Object>> findVisitCount(@Param("dayStart") Date dayStart, @Param("dayEnd") Date dayEnd, @Param("dbType") String dbType); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysPermissionMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysPermissionMapper.java index 37f375f..58bd331 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysPermissionMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysPermissionMapper.java @@ -27,18 +27,24 @@ public interface SysPermissionMapper extends BaseMapper<SysPermission> { public List<TreeModel> queryListByParentId(@Param("parentId") String parentId); /** - * 根据用户查询用户权限 + * 根据用户查询用户权限 + * @param username 用户账户名称 + * @return List<SysPermission> */ public List<SysPermission> queryByUser(@Param("username") String username); /** - * 修改菜单状态字段: 是否子节点 + * 修改菜单状态字段: 是否子节点 + * @param id 菜单id + * @param leaf 叶子节点 + * @return int */ @Update("update sys_permission set is_leaf=#{leaf} where id = #{id}") public int setMenuLeaf(@Param("id") String id,@Param("leaf") int leaf); /** - * 获取模糊匹配规则的数据权限URL + * 获取模糊匹配规则的数据权限URL + * @return List<String> */ @Select("SELECT url FROM sys_permission WHERE del_flag = 0 and menu_type = 2 and url like '%*%'") public List<String> queryPermissionUrlWithStar(); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysRoleIndexMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysRoleIndexMapper.java new file mode 100644 index 0000000..206f7b7 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysRoleIndexMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.system.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.system.entity.SysRoleIndex; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 角色首页配置 + * @Author: jeecg-boot + * @Date: 2022-03-25 + * @Version: V1.0 + */ +public interface SysRoleIndexMapper extends BaseMapper<SysRoleIndex> { + +} diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysRoleMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysRoleMapper.java index 9d8f20b..83d5a44 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysRoleMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysRoleMapper.java @@ -18,18 +18,19 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface SysRoleMapper extends BaseMapper<SysRole> { /** + * @Description: 删除角色与用户关系 * @Author scott * @Date 2019/12/13 16:12 - * @Description: 删除角色与用户关系 */ @Delete("delete from sys_user_role where role_id = #{roleId}") void deleteRoleUserRelation(@Param("roleId") String roleId); /** + * @Description: 删除角色与权限关系 * @Author scott + * @param roleId * @Date 2019/12/13 16:12 - * @Description: 删除角色与权限关系 */ @Delete("delete from sys_role_permission where role_id = #{roleId}") void deleteRolePermissionRelation(@Param("roleId") String roleId); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysTenantMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysTenantMapper.java index 38cbc48..42fdfb9 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysTenantMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysTenantMapper.java @@ -3,6 +3,10 @@ package org.jeecg.modules.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.jeecg.modules.system.entity.SysTenant; +/** + * @Description: 租户mapper接口 + * @author: jeecg-boot + */ public interface SysTenantMapper extends BaseMapper<SysTenant> { } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserDepartMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserDepartMapper.java index a7139d4..f6dba86 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserDepartMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserDepartMapper.java @@ -8,8 +8,17 @@ import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.entity.SysUserDepart; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +/** + * @Description: 用户部门mapper接口 + * @author: jeecg-boot + */ public interface SysUserDepartMapper extends BaseMapper<SysUserDepart>{ - + + /** + * 通过用户id查询部门用户 + * @param userId 用户id + * @return List<SysUserDepart> + */ List<SysUserDepart> getUserDepartByUid(@Param("userId") String userId); /** diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java index 5ae5044..916faeb 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java @@ -32,6 +32,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> { * 根据部门Id查询用户信息 * @param page * @param departId + * @param username 用户登录账户 * @return */ IPage<SysUser> getUserByDepId(Page page, @Param("departId") String departId, @Param("username") String username); @@ -47,6 +48,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> { * 根据部门Ids,查询部门下用户信息 * @param page * @param departIds + * @param username 用户登录账户 * @return */ IPage<SysUser> getUserByDepIds(Page page, @Param("departIds") List<String> departIds, @Param("username") String username); @@ -54,7 +56,8 @@ public interface SysUserMapper extends BaseMapper<SysUser> { /** * 根据角色Id查询用户信息 * @param page - * @param + * @param roleId 角色id + * @param username 用户登录账户 * @return */ IPage<SysUser> getUserByRoleId(Page page, @Param("roleId") String roleId, @Param("username") String username); @@ -62,7 +65,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> { /** * 根据用户名设置部门ID * @param username - * @param departId + * @param orgCode */ void updateUserDepart(@Param("username") String username,@Param("orgCode") String orgCode); @@ -102,41 +105,55 @@ public interface SysUserMapper extends BaseMapper<SysUser> { Integer getUserByOrgCodeTotal(@Param("orgCode") String orgCode, @Param("userParams") SysUser userParams); /** + * 批量删除角色与用户关系 * @Author scott * @Date 2019/12/13 16:10 - * @Description: 批量删除角色与用户关系 + * @param roleIdArray */ void deleteBathRoleUserRelation(@Param("roleIdArray") String[] roleIdArray); /** + * 批量删除角色与权限关系 * @Author scott * @Date 2019/12/13 16:10 - * @Description: 批量删除角色与权限关系 + * @param roleIdArray */ void deleteBathRolePermissionRelation(@Param("roleIdArray") String[] roleIdArray); /** * 查询被逻辑删除的用户 + * @param wrapper + * @return List<SysUser> */ List<SysUser> selectLogicDeleted(@Param(Constants.WRAPPER) Wrapper<SysUser> wrapper); /** * 还原被逻辑删除的用户 + * @param userIds 用户id + * @param entity + * @return int */ int revertLogicDeleted(@Param("userIds") String userIds, @Param("entity") SysUser entity); /** * 彻底删除被逻辑删除的用户 + * @param userIds 多个用户id + * @return int */ int deleteLogicDeleted(@Param("userIds") String userIds); - /** 更新空字符串为null【此写法有sql注入风险,禁止随便用】 */ + /** + * 更新空字符串为null【此写法有sql注入风险,禁止随便用】 + * @param fieldName + * @return int + */ @Deprecated int updateNullByEmptyString(@Param("fieldName") String fieldName); /** * 根据部门Ids,查询部门下用户信息 * @param departIds + * @param username 用户账户名称 * @return */ List<SysUser> queryByDepIds(@Param("departIds")List<String> departIds,@Param("username") String username); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java index 2465fff..5393931 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java @@ -16,9 +16,19 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface SysUserRoleMapper extends BaseMapper<SysUserRole> { + /** + * 通过用户账号查询角色集合 + * @param username 用户账号名称 + * @return List<String> + */ @Select("select role_code from sys_role where id in (select role_id from sys_user_role where user_id = (select id from sys_user where username=#{username}))") List<String> getRoleByUserName(@Param("username") String username); + /** + * 通过用户账号查询角色Id集合 + * @param username 用户账号名称 + * @return List<String> + */ @Select("select id from sys_role where id in (select role_id from sys_user_role where user_id = (select id from sys_user where username=#{username}))") List<String> getRoleIdByUserName(@Param("username") String username); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDictMapper.xml b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDictMapper.xml index 7a4b388..34f3ebe 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDictMapper.xml +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDictMapper.xml @@ -160,7 +160,8 @@ select ${query.text} as "text",${query.code} as "value" from ${query.table} where 1 = 1 <if test="query.keyword != null and query.keyword != ''"> - and (${query.text} like '%${query.keyword}%' or ${query.code} like '%${query.keyword}%') + <bind name="bindKeyword" value="'%'+query.keyword+'%'"/> + and (${query.text} like #{bindKeyword} or ${query.code} like #{bindKeyword}) </if> <if test="query.codeValue != null and query.codeValue != ''"> and ${query.code} = #{query.codeValue} diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysRoleIndexMapper.xml b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysRoleIndexMapper.xml new file mode 100644 index 0000000..4b7cc60 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysRoleIndexMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.system.mapper.SysRoleIndexMapper"> + +</mapper> \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserDepartMapper.xml b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserDepartMapper.xml index 92da725..bee2bea 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserDepartMapper.xml +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserDepartMapper.xml @@ -12,7 +12,8 @@ select a.* from sys_user a join sys_user_depart b on b.user_id = a.id join sys_depart c on b.dep_id = c.id - where a.del_flag = 0 and c.org_code like '${orgCode}%' + <bind name="bindOrgCode" value="orgCode+'%'"/> + where a.del_flag = 0 and c.org_code like #{bindOrgCode} <if test="realname!=null and realname!=''"> <!-- update by sunjianlei 20220119【#3348】SQL injection exists in /sys/user/queryUserByDepId; --> <bind name="bindRealname" value="'%'+realname+'%'"/> @@ -25,7 +26,8 @@ select a.*, c.depart_name as org_code_txt from sys_user a join sys_user_depart b on b.user_id = a.id join sys_depart c on b.dep_id = c.id - where a.del_flag = 0 and a.status = 1 and c.org_code like '${orgCode}%' + <bind name="bindOrgCode" value="orgCode+'%'"/> + where a.del_flag = 0 and a.status = 1 and c.org_code like #{bindOrgCode} <if test="username!=null and username!=''"> <bind name="bindUsername" value="'%'+username+'%'"/> and a.username like #{bindUsername} diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml index 500261b..7328a2d 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml @@ -68,7 +68,13 @@ INNER JOIN sys_user_depart ON sys_user_depart.dep_id = sys_depart.id INNER JOIN sys_user ON sys_user.id = sys_user_depart.user_id WHERE - sys_user.del_flag = 0 AND sys_depart.org_code LIKE '${orgCode}%' + <if test="orgCode == null"> + <bind name="bindOrgCode" value="'%'"/> + </if> + <if test="orgCode != null"> + <bind name="bindOrgCode" value="orgCode+'%'"/> + </if> + sys_user.del_flag = 0 AND sys_depart.org_code LIKE #{bindOrgCode} <if test="userParams != null"> <if test="userParams.realname != null and userParams.realname != ''"> diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/DepartIdModel.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/DepartIdModel.java index 572f2d0..af15700 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/DepartIdModel.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/DepartIdModel.java @@ -19,13 +19,19 @@ public class DepartIdModel implements Serializable { private static final long serialVersionUID = 1L; - // 主键ID + /** + * 主键ID + */ private String key; - // 主键ID + /** + * 主键ID + */ private String value; - // 部门名称 + /** + * 部门名称 + */ private String title; List<DepartIdModel> children = new ArrayList<>(); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysDepartTreeModel.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysDepartTreeModel.java index 86f5411..dcfc923 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysDepartTreeModel.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysDepartTreeModel.java @@ -75,6 +75,11 @@ public class SysDepartTreeModel implements Serializable{ private Date updateTime; + //update-begin---author:wangshuai ---date:20200308 for:[JTC-119]在部门管理菜单下设置部门负责人,新增字段部门负责人ids + /**部门负责人ids*/ + private String directorUserIds; + //update-end---author:wangshuai ---date:20200308 for:[JTC-119]在部门管理菜单下设置部门负责人,新增字段部门负责人ids + private List<SysDepartTreeModel> children = new ArrayList<>(); @@ -107,6 +112,7 @@ public class SysDepartTreeModel implements Serializable{ this.createTime = sysDepart.getCreateTime(); this.updateBy = sysDepart.getUpdateBy(); this.updateTime = sysDepart.getUpdateTime(); + this.directorUserIds = sysDepart.getDirectorUserIds(); } public boolean getIsLeaf() { @@ -332,6 +338,14 @@ public class SysDepartTreeModel implements Serializable{ public SysDepartTreeModel() { } + public String getDirectorUserIds() { + return directorUserIds; + } + + public void setDirectorUserIds(String directorUserIds) { + this.directorUserIds = directorUserIds; + } + /** * 重写equals方法 */ @@ -365,6 +379,7 @@ public class SysDepartTreeModel implements Serializable{ Objects.equals(createTime, model.createTime) && Objects.equals(updateBy, model.updateBy) && Objects.equals(updateTime, model.updateTime) && + Objects.equals(directorUserIds, model.directorUserIds) && Objects.equals(children, model.children); } @@ -377,7 +392,7 @@ public class SysDepartTreeModel implements Serializable{ return Objects.hash(id, parentId, departName, departNameEn, departNameAbbr, departOrder, description, orgCategory, orgType, orgCode, mobile, fax, address, memo, status, delFlag, qywxIdentifier, createBy, createTime, updateBy, updateTime, - children); + children,directorUserIds); } } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysPermissionTree.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysPermissionTree.java index 5b44d53..3b6ee09 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysPermissionTree.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysPermissionTree.java @@ -6,6 +6,10 @@ import java.util.Date; import java.util.List; import org.jeecg.modules.system.entity.SysPermission; +/** + * @Description: 菜单树,封装树结构 + * @author: jeecg-boot + */ public class SysPermissionTree implements Serializable { private static final long serialVersionUID = 1L; diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/ThirdLoginModel.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/ThirdLoginModel.java index e13265f..4f6cc27 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/ThirdLoginModel.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/ThirdLoginModel.java @@ -6,6 +6,7 @@ import java.io.Serializable; /** * 第三方登录 信息存储 + * @author: jeecg-boot */ @Data public class ThirdLoginModel implements Serializable { diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/TreeModel.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/TreeModel.java index 417ccdd..c2da973 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/TreeModel.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/TreeModel.java @@ -10,6 +10,7 @@ import org.jeecg.modules.system.entity.SysPermission; /** * 树形列表用到 + * @author: jeecg-boot */ public class TreeModel implements Serializable { @@ -102,7 +103,7 @@ public class TreeModel implements Serializable { this.parentId = parentId; this.ruleFlag=ruleFlag; this.slotTitle = slotTitle; - Map<String,String> map = new HashMap<String,String>(); + Map<String,String> map = new HashMap(5); map.put("title", "hasDatarule"); this.scopedSlots = map; this.isLeaf = isLeaf; diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/TreeSelectModel.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/TreeSelectModel.java index 39e7f4b..6fc6f36 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/TreeSelectModel.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/model/TreeSelectModel.java @@ -5,6 +5,7 @@ import java.util.List; /** * 树形下拉框 + * @author: jeecg-boot */ public class TreeSelectModel implements Serializable { diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/rule/CategoryCodeRule.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/rule/CategoryCodeRule.java index 29ed03c..9a23fca 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/rule/CategoryCodeRule.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/rule/CategoryCodeRule.java @@ -31,11 +31,15 @@ public class CategoryCodeRule implements IFillRuleHandler { if (formData != null && formData.size() > 0) { Object obj = formData.get("pid"); - if (oConvertUtils.isNotEmpty(obj)) categoryPid = obj.toString(); + if (oConvertUtils.isNotEmpty(obj)) { + categoryPid = obj.toString(); + } } else { if (params != null) { Object obj = params.get("pid"); - if (oConvertUtils.isNotEmpty(obj)) categoryPid = obj.toString(); + if (oConvertUtils.isNotEmpty(obj)) { + categoryPid = obj.toString(); + } } } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/rule/OrgCodeRule.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/rule/OrgCodeRule.java index bf6a3ac..5b0d354 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/rule/OrgCodeRule.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/rule/OrgCodeRule.java @@ -38,11 +38,15 @@ public class OrgCodeRule implements IFillRuleHandler { String parentId = null; if (formData != null && formData.size() > 0) { Object obj = formData.get("parentId"); - if (obj != null) parentId = obj.toString(); + if (obj != null) { + parentId = obj.toString(); + } } else { if (params != null) { Object obj = params.get("parentId"); - if (obj != null) parentId = obj.toString(); + if (obj != null) { + parentId = obj.toString(); + } } } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/security/DictQueryBlackListHandler.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/security/DictQueryBlackListHandler.java new file mode 100644 index 0000000..279c72a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/security/DictQueryBlackListHandler.java @@ -0,0 +1,56 @@ +package org.jeecg.modules.system.security; + +import org.jeecg.common.constant.SymbolConstant; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.common.util.security.AbstractQueryBlackListHandler; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * 字典组件 执行sql前校验 只校验表字典 + * dictCodeString格式如: + * table,text,code + * table where xxx,text,code + * table,text,code, where xxx + * + * @Author taoYan + * @Date 2022/3/23 21:10 + **/ +@Component("dictQueryBlackListHandler") +public class DictQueryBlackListHandler extends AbstractQueryBlackListHandler { + + @Override + protected List<QueryTable> getQueryTableInfo(String dictCodeString) { + if (dictCodeString != null && dictCodeString.indexOf(SymbolConstant.COMMA) > 0) { + String[] arr = dictCodeString.split(SymbolConstant.COMMA); + if (arr.length != 3 && arr.length != 4) { + return null; + } + String tableName = getTableName(arr[0]); + QueryTable table = new QueryTable(tableName, ""); + // 无论什么场景 第二、三个元素一定是表的字段,直接add + table.addField(arr[1].trim()); + if (oConvertUtils.isNotEmpty(arr[2].trim())) { + table.addField(arr[2].trim()); + } + List<QueryTable> list = new ArrayList<>(); + list.add(table); + return list; + } + return null; + } + + /** + * 取where前面的为:table name + * + * @param str + * @return + */ + private String getTableName(String str) { + String[] arr = str.split("\\s+(?i)where\\s+"); + return arr[0]; + } + +} diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementSendService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementSendService.java index 531718c..60f8a2f 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementSendService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementSendService.java @@ -16,11 +16,17 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface ISysAnnouncementSendService extends IService<SysAnnouncementSend> { + /** + * 通过用户id查询用户通告阅读标记 + * @param userId 用户id + * @return + */ public List<String> queryByUserId(String userId); /** - * @功能:获取我的消息 + * 获取我的消息 * @param announcementSendModel + * @param page 当前页数 * @return */ public Page<AnnouncementSendModel> getMyAnnouncementSendPage(Page<AnnouncementSendModel> page,AnnouncementSendModel announcementSendModel); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementService.java index 38521d1..d719d66 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementService.java @@ -13,12 +13,33 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface ISysAnnouncementService extends IService<SysAnnouncement> { + /** + * 保存系统通告 + * @param sysAnnouncement + */ public void saveAnnouncement(SysAnnouncement sysAnnouncement); + /** + * 修改系统通告 + * @param sysAnnouncement + * @return + */ public boolean upDateAnnouncement(SysAnnouncement sysAnnouncement); + /** + * 保存系统通告 + * @param title 标题 + * @param msgContent 信息内容 + */ public void saveSysAnnouncement(String title, String msgContent); + /** + * 分页查询系统通告 + * @param page 当前页数 + * @param userId 用户id + * @param msgCategory 消息类型 + * @return Page<SysAnnouncement> + */ public Page<SysAnnouncement> querySysCementPageByUserId(Page<SysAnnouncement> page,String userId,String msgCategory); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysCategoryService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysCategoryService.java index a93d967..908dfda 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysCategoryService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysCategoryService.java @@ -19,14 +19,23 @@ public interface ISysCategoryService extends IService<SysCategory> { /**根节点父ID的值*/ public static final String ROOT_PID_VALUE = "0"; + /** + * 添加分类字典 + * @param sysCategory + */ void addSysCategory(SysCategory sysCategory); - + + /** + * 修改分类字典 + * @param sysCategory + */ void updateSysCategory(SysCategory sysCategory); /** - * 根据父级编码加载分类字典的数据 + * 根据父级编码加载分类字典的数据 * @param pcode * @return + * @throws JeecgBootException */ public List<TreeSelectModel> queryListByCode(String pcode) throws JeecgBootException; diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDataLogService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDataLogService.java index a18b8bf..3886fc5 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDataLogService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDataLogService.java @@ -4,6 +4,10 @@ import org.jeecg.modules.system.entity.SysDataLog; import com.baomidou.mybatisplus.extension.service.IService; +/** + * @Description: 数据日志service接口 + * @author: jeecg-boot + */ public interface ISysDataLogService extends IService<SysDataLog> { /** diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartPermissionService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartPermissionService.java index 0ae3933..08ff1be 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartPermissionService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartPermissionService.java @@ -23,7 +23,8 @@ public interface ISysDepartPermissionService extends IService<SysDepartPermissio /** * 根据部门id,菜单id获取数据规则 - * @param permissionId + * @param permissionId 菜单id + * @param departId 部门id * @return */ List<SysPermissionDataRule> getPermRuleListByDeptIdAndPermId(String departId,String permissionId); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartRoleUserService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartRoleUserService.java index dc34a00..2c5ca6f 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartRoleUserService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartRoleUserService.java @@ -13,6 +13,12 @@ import java.util.List; */ public interface ISysDepartRoleUserService extends IService<SysDepartRoleUser> { + /** + * 添加用户与部门关联 + * @param userId 用户id + * @param newRoleId 新的角色id + * @param oldRoleId 旧的角色id + */ void deptRoleUserAdd(String userId,String newRoleId,String oldRoleId); /** diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java index d389da2..5e52ef2 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java @@ -19,6 +19,7 @@ public interface ISysDepartService extends IService<SysDepart>{ /** * 查询我的部门信息,并分节点进行显示 + * @param departIds 部门id * @return */ List<SysDepartTreeModel> queryMyDeptTreeList(String departIds); @@ -32,6 +33,7 @@ public interface ISysDepartService extends IService<SysDepart>{ /** * 查询所有部门信息,并分节点进行显示 + * @param ids 多个部门id * @return */ List<SysDepartTreeModel> queryTreeList(String ids); @@ -45,12 +47,14 @@ public interface ISysDepartService extends IService<SysDepart>{ /** * 保存部门数据 * @param sysDepart + * @param username 用户名 */ void saveDepartData(SysDepart sysDepart,String username); /** * 更新depart数据 * @param sysDepart + * @param username 用户名 * @return */ Boolean updateDepartDataById(SysDepart sysDepart,String username); @@ -65,6 +69,8 @@ public interface ISysDepartService extends IService<SysDepart>{ /** * 根据关键字搜索相关的部门数据 * @param keyWord + * @param myDeptSearch + * @param departIds 多个部门id * @return */ List<SysDepartTreeModel> searchByKeyWord(String keyWord,String myDeptSearch,String departIds); @@ -93,7 +99,7 @@ public interface ISysDepartService extends IService<SysDepart>{ /** * 根据部门id批量删除并删除其可能存在的子级部门 - * @param id + * @param ids 多个部门id * @return */ void deleteBatchWithChildren(List<String> ids); @@ -107,16 +113,20 @@ public interface ISysDepartService extends IService<SysDepart>{ /** * 获取我的部门下级所有部门IDS + * @param departIds 多个部门id * @return */ List<String> getMySubDepIdsByDepId(String departIds); /** * 根据关键字获取部门信息(通讯录) + * @param keyWord 搜索词 * @return */ List<SysDepartTreeModel> queryTreeByKeyWord(String keyWord); /** * 获取我的部门下级所有部门 + * @param parentId 父id + * @param ids 多个部门id * @return */ List<SysDepartTreeModel> queryTreeListByPid(String parentId,String ids); @@ -125,6 +135,7 @@ public interface ISysDepartService extends IService<SysDepart>{ * 获取某个部门的所有父级部门的ID * * @param departId 根据departId查 + * @return JSONObject */ JSONObject queryAllParentIdByDepartId(String departId); @@ -132,15 +143,18 @@ public interface ISysDepartService extends IService<SysDepart>{ * 获取某个部门的所有父级部门的ID * * @param orgCode 根据orgCode查 + * @return JSONObject */ JSONObject queryAllParentIdByOrgCode(String orgCode); /** * 获取公司信息 + * @param orgCode 部门编码 * @return */ SysDepart queryCompByOrgCode(String orgCode); /** * 获取下级部门 + * @param pid * @return */ List<SysDepart> queryDeptByPid(String pid); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDictItemService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDictItemService.java index 19c02b2..803b490 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDictItemService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDictItemService.java @@ -14,5 +14,11 @@ import java.util.List; * @since 2018-12-28 */ public interface ISysDictItemService extends IService<SysDictItem> { + + /** + * 通过字典id查询字典项 + * @param mainId 字典id + * @return + */ public List<SysDictItem> selectItemsByMainId(String mainId); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDictService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDictService.java index 0d3860d..b08a9d3 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDictService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDictService.java @@ -20,6 +20,11 @@ import java.util.Map; */ public interface ISysDictService extends IService<SysDict> { + /** + * 通过字典code获取字典数据 + * @param code + * @return + */ public List<DictModel> queryDictItemsByCode(String code); /** @@ -37,14 +42,39 @@ public interface ISysDictService extends IService<SysDict> { */ Map<String, List<DictModel>> queryDictItemsByCodeList(List<String> dictCodeList); + /** + * 登录加载系统字典 + * @return + */ public Map<String,List<DictModel>> queryAllDictItems(); + /** + * 查通过查询指定table的 text code 获取字典 + * @param table + * @param text + * @param code + * @return + */ @Deprecated List<DictModel> queryTableDictItemsByCode(String table, String text, String code); + /** + * 通过查询指定table的 text code 获取字典(指定查询条件) + * @param table + * @param text + * @param code + * @param filterSql + * @return + */ @Deprecated public List<DictModel> queryTableDictItemsByCodeAndFilter(String table, String text, String code, String filterSql); + /** + * 通过字典code及字典项的value获取字典文本 + * @param code + * @param key + * @return + */ public String queryDictTextByKey(String code, String key); /** @@ -55,6 +85,14 @@ public interface ISysDictService extends IService<SysDict> { */ Map<String, List<DictModel>> queryManyDictByKeys(List<String> dictCodeList, List<String> keys); + /** + * 通过查询指定table的 text code key 获取字典值 + * @param table + * @param text + * @param code + * @param key + * @return + */ @Deprecated String queryTableDictTextByKey(String table, String text, String code, String key); @@ -69,8 +107,26 @@ public interface ISysDictService extends IService<SysDict> { */ List<DictModel> queryTableDictTextByKeys(String table, String text, String code, List<String> keys); + /** + * 通过查询指定table的 text code key 获取字典值,包含value + * @param table 表名 + * @param text + * @param code + * @param keys + * @return + */ @Deprecated List<String> queryTableDictByKeys(String table, String text, String code, String keys); + + /** + * 通过查询指定table的 text code key 获取字典值,包含value + * @param table + * @param text + * @param code + * @param keys + * @param delNotExist + * @return + */ @Deprecated List<String> queryTableDictByKeys(String table, String text, String code, String keys,boolean delNotExist); @@ -84,6 +140,9 @@ public interface ISysDictService extends IService<SysDict> { /** * 添加一对多 + * @param sysDict + * @param sysDictItemList + * @return Integer */ public Integer saveMain(SysDict sysDict, List<SysDictItem> sysDictItemList); @@ -116,6 +175,8 @@ public interface ISysDictService extends IService<SysDict> { * @param text * @param code * @param keyword + * @param condition + * @param pageSize 每页条数 * @return */ public List<DictModel> queryLittleTableDictItems(String table, String text, String code, String condition, String keyword, int pageSize); @@ -138,6 +199,7 @@ public interface ISysDictService extends IService<SysDict> { * @param pidField * @param pid * @param hasChildField + * @param query * @return */ @Deprecated @@ -185,6 +247,8 @@ public interface ISysDictService extends IService<SysDict> { * 大数据量的字典表 走异步加载 即前端输入内容过滤数据 * * @param dictCode 字典code格式:table,text,code + * @param keyword + * @param pageSize 每页条数 * @return */ List<DictModel> loadDict(String dictCode, String keyword, Integer pageSize); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysLogService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysLogService.java index ea796e3..2d7238d 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysLogService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysLogService.java @@ -19,7 +19,7 @@ import com.baomidou.mybatisplus.extension.service.IService; public interface ISysLogService extends IService<SysLog> { /** - * @功能:清空所有日志记录 + * 清空所有日志记录 */ public void removeAll(); @@ -33,14 +33,16 @@ public interface ISysLogService extends IService<SysLog> { //update-begin--Author:zhangweijian Date:20190428 for:传入开始时间,结束时间参数 /** * 获取系统今日访问次数 - * + * @param dayStart + * @param dayEnd * @return Long */ Long findTodayVisitCount(Date dayStart, Date dayEnd); /** * 获取系统今日访问 IP数 - * + * @param dayStart 开始时间 + * @param dayEnd 结束时间 * @return Long */ Long findTodayIp(Date dayStart, Date dayEnd); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPermissionDataRuleService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPermissionDataRuleService.java index 1b32ec5..3e0a5d0 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPermissionDataRuleService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPermissionDataRuleService.java @@ -19,13 +19,14 @@ public interface ISysPermissionDataRuleService extends IService<SysPermissionDat /** * 根据菜单id查询其对应的权限数据 * - * @param permRule + * @param permissionId + * @return List<SysPermissionDataRule> */ List<SysPermissionDataRule> getPermRuleListByPermId(String permissionId); /** * 根据页面传递的参数查询菜单权限数据 - * + * @param permRule * @return */ List<SysPermissionDataRule> queryPermissionRule(SysPermissionDataRule permRule); @@ -33,7 +34,7 @@ public interface ISysPermissionDataRuleService extends IService<SysPermissionDat /** * 根据菜单ID和用户名查找数据权限配置信息 - * @param permission + * @param permissionId * @param username * @return */ diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPermissionService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPermissionService.java index c3d6610..14ed0bb 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPermissionService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPermissionService.java @@ -18,18 +18,46 @@ import com.baomidou.mybatisplus.extension.service.IService; * @since 2018-12-21 */ public interface ISysPermissionService extends IService<SysPermission> { - + + /** + * 通过父id查询菜单 + * @param parentId 父id + * @return + */ public List<TreeModel> queryListByParentId(String parentId); - /**真实删除*/ + /** + * 真实删除 + * @param id 菜单id + * @throws JeecgBootException + */ public void deletePermission(String id) throws JeecgBootException; - /**逻辑删除*/ + /** + * 逻辑删除 + * @param id 菜单id + * @throws JeecgBootException + */ public void deletePermissionLogical(String id) throws JeecgBootException; - + + /** + * 添加菜单 + * @param sysPermission SysPermission对象 + * @throws JeecgBootException + */ public void addPermission(SysPermission sysPermission) throws JeecgBootException; - + + /** + * 编辑菜单 + * @param sysPermission SysPermission对象 + * @throws JeecgBootException + */ public void editPermission(SysPermission sysPermission) throws JeecgBootException; - + + /** + * 获取登录用户拥有的权限 + * @param username 用户名 + * @return + */ public List<SysPermission> queryByUser(String username); /** diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPositionService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPositionService.java index d90d394..1421f46 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPositionService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPositionService.java @@ -13,6 +13,8 @@ public interface ISysPositionService extends IService<SysPosition> { /** * 通过code查询 + * @param code 职务编码 + * @return SysPosition */ SysPosition getByCode(String code); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysRoleIndexService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysRoleIndexService.java new file mode 100644 index 0000000..328f67c --- /dev/null +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysRoleIndexService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.system.service; + +import org.jeecg.modules.system.entity.SysRoleIndex; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 角色首页配置 + * @Author: jeecg-boot + * @Date: 2022-03-25 + * @Version: V1.0 + */ +public interface ISysRoleIndexService extends IService<SysRoleIndex> { + +} diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysTenantService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysTenantService.java index 4142585..7aa8a36 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysTenantService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysTenantService.java @@ -6,6 +6,10 @@ import org.jeecg.modules.system.entity.SysTenant; import java.util.Collection; import java.util.List; +/** + * @Description: 租户service接口 + * @author: jeecg-boot + */ public interface ISysTenantService extends IService<SysTenant> { /** @@ -22,7 +26,7 @@ public interface ISysTenantService extends IService<SysTenant> { * @param id * @return */ - int countUserLinkTenant(String id); + Long countUserLinkTenant(String id); /** * 根据ID删除租户,会判断是否已被引用 diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysThirdAccountService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysThirdAccountService.java index e8040c7..7d5c173 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysThirdAccountService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysThirdAccountService.java @@ -14,14 +14,35 @@ import java.util.List; * @Version: V1.0 */ public interface ISysThirdAccountService extends IService<SysThirdAccount> { - /**更新第三方账户信息*/ + /** + * 更新第三方账户信息 + * @param sysUser SysUser对象 + * @param thirdUserUuid 第三方id + */ void updateThirdUserId(SysUser sysUser,String thirdUserUuid); - /**创建第三方用户*/ + + /** + * 创建第三方用户 + * @param phone 手机号 + * @param thirdUserUuid 第三方id + * @return SysUser + */ SysUser createUser(String phone, String thirdUserUuid); - /** 根据本地userId查询数据 */ + /** + * 根据本地userId查询数据 + * @param sysUserId 用户id + * @param thirdType 第三方登录类型 + * @return SysThirdAccount + */ SysThirdAccount getOneBySysUserId(String sysUserId, String thirdType); - /** 根据第三方userId查询数据 */ + + /** + * 根据第三方userId查询数据 + * @param thirdUserId 第三方id + * @param thirdType 第三方登录类型 + * @return SysThirdAccount + */ SysThirdAccount getOneByThirdUserId(String thirdUserId, String thirdType); /** @@ -37,6 +58,7 @@ public interface ISysThirdAccountService extends IService<SysThirdAccount> { * 创建新用户 * * @param tlm 第三方登录信息 + * @return SysThirdAccount */ SysThirdAccount saveThirdUser(ThirdLoginModel tlm); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserDepartService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserDepartService.java index 10aa9df..e368942 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserDepartService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserDepartService.java @@ -37,6 +37,9 @@ public interface ISysUserDepartService extends IService<SysUserDepart> { List<SysUser> queryUserByDepId(String depId); /** * 根据部门code,查询当前部门和下级部门的用户信息 + * @param depCode 部门code + * @param realname 真实姓名 + * @return List<SysUser> */ List<SysUser> queryUserByDepCode(String depCode,String realname); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java index 39123d8..70c880a 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java @@ -58,7 +58,12 @@ public interface ISysUserService extends IService<SysUser> { * @return */ public boolean deleteBatchUsers(String userIds); - + + /** + * 根据用户名查询 + * @param username 用户名 + * @return SysUser + */ public SysUser getUserByName(String username); /** @@ -92,21 +97,25 @@ public interface ISysUserService extends IService<SysUser> { /** * 根据部门Id查询 - * @param + * @param page + * @param departId 部门id + * @param username 用户账户名称 * @return */ public IPage<SysUser> getUserByDepId(Page<SysUser> page, String departId, String username); /** * 根据部门Ids查询 - * @param + * @param page + * @param departIds 部门id集合 + * @param username 用户账户名称 * @return */ public IPage<SysUser> getUserByDepIds(Page<SysUser> page, List<String> departIds, String username); /** * 根据 userIds查询,查询用户所属部门的名称(多个部门名逗号隔开) - * @param + * @param userIds * @return */ public Map<String,String> getDepNamesByUserIds(List<String> userIds); @@ -133,7 +142,9 @@ public interface ISysUserService extends IService<SysUser> { /** * 根据角色Id查询 - * @param + * @param page + * @param roleId 角色id + * @param username 用户账户名称 * @return */ public IPage<SysUser> getUserByRoleId(Page<SysUser> page,String roleId, String username); @@ -163,13 +174,16 @@ public interface ISysUserService extends IService<SysUser> { /** * 根据手机号获取用户名和密码 + * @param phone 手机号 */ public SysUser getUserByPhone(String phone); /** * 根据邮箱获取用户 - */ + * @param email 邮箱 + * @return SysUser + */ public SysUser getUserByEmail(String email); @@ -196,26 +210,35 @@ public interface ISysUserService extends IService<SysUser> { /** * 查询被逻辑删除的用户 + * @return List<SysUser> */ List<SysUser> queryLogicDeleted(); /** * 查询被逻辑删除的用户(可拼装查询条件) + * @param wrapper + * @return List<SysUser> */ List<SysUser> queryLogicDeleted(LambdaQueryWrapper<SysUser> wrapper); /** * 还原被逻辑删除的用户 + * @param userIds 存放用户id集合 + * @param updateEntity + * @return boolean */ boolean revertLogicDeleted(List<String> userIds, SysUser updateEntity); /** * 彻底删除被逻辑删除的用户 + * @param userIds 存放用户id集合 + * @return boolean */ boolean removeLogicDeleted(List<String> userIds); /** * 更新手机号、邮箱空字符串为 null + * @return boolean */ @Transactional(rollbackFor = Exception.class) boolean updateNullPhoneEmail(); @@ -228,7 +251,8 @@ public interface ISysUserService extends IService<SysUser> { /** * 根据部门Ids查询 - * @param + * @param departIds 部门id集合 + * @param username 用户账户名称 * @return */ List<SysUser> queryByDepIds(List<String> departIds, String username); @@ -249,7 +273,11 @@ public interface ISysUserService extends IService<SysUser> { */ void editUser(SysUser user, String roles, String departs); - /** userId转为username */ + /** + * userId转为username + * @param userIdList + * @return List<String> + */ List<String> userIdToUsername(Collection<String> userIdList); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IThirdAppService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IThirdAppService.java index 4116142..2f622ec 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IThirdAppService.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IThirdAppService.java @@ -7,9 +7,14 @@ import java.util.List; /** * 第三方App对接 + * @author: jeecg-boot */ public interface IThirdAppService { + /** + * 获取AccessToken + * @return String + */ String getAccessToken(); /** @@ -18,7 +23,7 @@ public interface IThirdAppService { * 同步逻辑:<br> * 1. 先判断是否同步过,有则修改,无则创建;<br> * 2. 本地没有但第三方App里有则删除第三方App里的。 - * + * @param ids * @return 成功返回true */ SyncInfoVo syncLocalDepartmentToThirdApp(String ids); @@ -29,7 +34,7 @@ public interface IThirdAppService { * 同步逻辑:<br> * 1. 先判断是否同步过,有则修改,无则创建;<br> * 2. 本地没有但第三方App里有则删除第三方App里的。 - * + * @param ids * @return 成功返回true */ SyncInfoVo syncThirdAppDepartmentToLocal(String ids); @@ -42,7 +47,7 @@ public interface IThirdAppService { * (特殊点:1、目前逻辑特意做的不删除用户,防止企业微信提前上线,用户已经存在,但是平台无此用户。 * 企业微信支持禁用账号;钉钉不支持 * 2、企业微信里面是手机号激活,只能用户自己改,不允许通过接口改) - * + * @param ids * @return 成功返回空数组,失败返回错误信息 */ SyncInfoVo syncLocalUserToThirdApp(String ids); @@ -74,6 +79,11 @@ public interface IThirdAppService { */ boolean sendMessage(MessageDTO message, boolean verifyConfig); + /** + * 发送消息 + * @param message + * @return boolean + */ boolean sendMessage(MessageDTO message); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ImportFileServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ImportFileServiceImpl.java index ac5cc89..8c6839c 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ImportFileServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ImportFileServiceImpl.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Service; /** * excel导入 实现类 + * @author: jeecg-boot */ @Slf4j @Service diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java index b555251..30d938d 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java @@ -36,7 +36,7 @@ public class SysAnnouncementServiceImpl extends ServiceImpl<SysAnnouncementMappe @Resource private SysAnnouncementSendMapper sysAnnouncementSendMapper; - @Transactional + @Transactional(rollbackFor = Exception.class) @Override public void saveAnnouncement(SysAnnouncement sysAnnouncement) { if(sysAnnouncement.getMsgType().equals(CommonConstant.MSG_TYPE_ALL)) { @@ -63,7 +63,7 @@ public class SysAnnouncementServiceImpl extends ServiceImpl<SysAnnouncementMappe /** * @功能:编辑消息信息 */ - @Transactional + @Transactional(rollbackFor = Exception.class) @Override public boolean upDateAnnouncement(SysAnnouncement sysAnnouncement) { // 1.更新系统信息表数据 @@ -98,7 +98,11 @@ public class SysAnnouncementServiceImpl extends ServiceImpl<SysAnnouncementMappe return true; } - // @功能:流程执行完成保存消息通知 + /** + * 流程执行完成保存消息通知 + * @param title 标题 + * @param msgContent 信息内容 + */ @Override public void saveSysAnnouncement(String title, String msgContent) { SysAnnouncement announcement = new SysAnnouncement(); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java index 4c30eea..7e34096 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java @@ -568,7 +568,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { } @Override - public List<SysCategoryModel> queryAllDSysCategory() { + public List<SysCategoryModel> queryAllSysCategory() { List<SysCategory> ls = categoryMapper.selectList(null); List<SysCategoryModel> res = oConvertUtils.entityListToModelList(ls,SysCategoryModel.class); return res; @@ -780,7 +780,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { for(SysUserDepart userDepart : userDepartList){ //查询所属公司编码 SysDepart depart = sysDepartService.getById(userDepart.getDepId()); - int length = YouBianCodeUtil.zhanweiLength; + int length = YouBianCodeUtil.ZHANWEI_LENGTH; String compyOrgCode = ""; if(depart != null && depart.getOrgCode() != null){ compyOrgCode = depart.getOrgCode().substring(0,length); @@ -1056,7 +1056,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { List<Map> list=new ArrayList(); //4.处理部门和下级用户数据 for (SysDepart dept:departs) { - Map map=new HashMap(); + Map map=new HashMap(5); //部门名称 String departName = dept.getDepartName(); //根据部门编码获取下级部门id diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDataLogServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDataLogServiceImpl.java index c805010..5f73237 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDataLogServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDataLogServiceImpl.java @@ -7,6 +7,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +/** + * @Description: 系统数据日志实现类 + * @author: jeecg-boot + */ @Service public class SysDataLogServiceImpl extends ServiceImpl<SysDataLogMapper,SysDataLog> implements ISysDataLogService { @Autowired diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartPermissionServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartPermissionServiceImpl.java index b9e72f1..1c3afcc 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartPermissionServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartPermissionServiceImpl.java @@ -96,7 +96,7 @@ public class SysDepartPermissionServiceImpl extends ServiceImpl<SysDepartPermiss String[] mainArr = main.split(","); String[] diffArr = diff.split(","); - Map<String, Integer> map = new HashMap<>(); + Map<String, Integer> map = new HashMap(5); for (String string : mainArr) { map.put(string, 1); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartRolePermissionServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartRolePermissionServiceImpl.java index 5ff29a7..10c19db 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartRolePermissionServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartRolePermissionServiceImpl.java @@ -1,7 +1,7 @@ package org.jeecg.modules.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.jeecg.common.util.IPUtils; +import org.jeecg.common.util.IpUtils; import org.jeecg.common.util.SpringContextUtils; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.system.entity.SysDepartRolePermission; @@ -30,7 +30,7 @@ public class SysDepartRolePermissionServiceImpl extends ServiceImpl<SysDepartRol //获取request HttpServletRequest request = SpringContextUtils.getHttpServletRequest(); //获取IP地址 - ip = IPUtils.getIpAddr(request); + ip = IpUtils.getIpAddr(request); } catch (Exception e) { ip = "127.0.0.1"; } @@ -72,7 +72,7 @@ public class SysDepartRolePermissionServiceImpl extends ServiceImpl<SysDepartRol String[] mainArr = main.split(","); String[] diffArr = diff.split(","); - Map<String, Integer> map = new HashMap<>(); + Map<String, Integer> map = new HashMap(5); for (String string : mainArr) { map.put(string, 1); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartRoleUserServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartRoleUserServiceImpl.java index d900725..bf49e3a 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartRoleUserServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartRoleUserServiceImpl.java @@ -78,7 +78,7 @@ public class SysDepartRoleUserServiceImpl extends ServiceImpl<SysDepartRoleUserM String[] mainArr = main.split(","); String[] diffArr = diff.split(","); - Map<String, Integer> map = new HashMap<>(); + Map<String, Integer> map = new HashMap(5); for (String string : mainArr) { map.put(string, 1); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java index f1e55be..5de598d 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java @@ -26,6 +26,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.function.Consumer; +import java.util.stream.Collectors; /** * <p> @@ -85,6 +86,10 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart query.eq(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); query.orderByAsc(SysDepart::getDepartOrder); List<SysDepart> list = this.list(query); + //update-begin---author:wangshuai ---date:20220307 for:[JTC-119]在部门管理菜单下设置部门负责人 创建用户的时候不需要处理 + //设置用户id,让前台显示 + this.setUserIdsByDepList(list); + //update-begin---author:wangshuai ---date:20220307 for:[JTC-119]在部门管理菜单下设置部门负责人 创建用户的时候不需要处理 // 调用wrapTreeDataToTreeList方法生成树状数据 List<SysDepartTreeModel> listResult = FindsDepartsChildrenUtil.wrapTreeDataToTreeList(list); return listResult; @@ -126,7 +131,7 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart * saveDepartData 对应 add 保存用户在页面添加的新的部门对象数据 */ @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void saveDepartData(SysDepart sysDepart, String username) { if (sysDepart != null && username != null) { if (sysDepart.getParentId() == null) { @@ -148,7 +153,13 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart sysDepart.setCreateTime(new Date()); sysDepart.setDelFlag(CommonConstant.DEL_FLAG_0.toString()); this.save(sysDepart); - } + //update-begin---author:wangshuai ---date:20220307 for:[JTC-119]在部门管理菜单下设置部门负责人 创建用户的时候不需要处理 + //新增部门的时候新增负责部门 + if(oConvertUtils.isNotEmpty(sysDepart.getDirectorUserIds())){ + this.addDepartByUserIds(sysDepart,sysDepart.getDirectorUserIds()); + } + //update-end---author:wangshuai ---date:20220307 for:[JTC-119]在部门管理菜单下设置部门负责人 创建用户的时候不需要处理 + } } @@ -235,12 +246,16 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart * updateDepartDataById 对应 edit 根据部门主键来更新对应的部门数据 */ @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public Boolean updateDepartDataById(SysDepart sysDepart, String username) { if (sysDepart != null && username != null) { sysDepart.setUpdateTime(new Date()); sysDepart.setUpdateBy(username); this.updateById(sysDepart); + //update-begin---author:wangshuai ---date:20220307 for:[JTC-119]在部门管理菜单下设置部门负责人 创建用户的时候不需要处理 + //修改部门管理的时候,修改负责部门 + this.updateChargeDepart(sysDepart); + //update-begin---author:wangshuai ---date:20220307 for:[JTC-119]在部门管理菜单下设置部门负责人 创建用户的时候不需要处理 return true; } else { return false; @@ -427,7 +442,7 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart * @return */ private String getMyDeptParentNode(List<SysDepart> list){ - Map<String,String> map = new HashMap<>(); + Map<String,String> map = new HashMap(5); //1.先将同一公司归类 for(SysDepart dept : list){ String code = dept.getOrgCode().substring(0,3); @@ -509,6 +524,10 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart lqw.func(square); lqw.orderByDesc(SysDepart::getDepartOrder); List<SysDepart> list = list(lqw); + //update-begin---author:wangshuai ---date:20220316 for:[JTC-119]在部门管理菜单下设置部门负责人 创建用户的时候不需要处理 + //设置用户id,让前台显示 + this.setUserIdsByDepList(list); + //update-end---author:wangshuai ---date:20220316 for:[JTC-119]在部门管理菜单下设置部门负责人 创建用户的时候不需要处理 List<SysDepartTreeModel> records = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { SysDepart depart = list.get(i); @@ -581,7 +600,7 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart @Override public SysDepart queryCompByOrgCode(String orgCode) { - int length = YouBianCodeUtil.zhanweiLength; + int length = YouBianCodeUtil.ZHANWEI_LENGTH; String compyOrgCode = orgCode.substring(0,length); return this.baseMapper.queryCompByOrgCode(compyOrgCode); } @@ -609,4 +628,131 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart } } } + + //update-begin---author:wangshuai ---date:20200308 for:[JTC-119]在部门管理菜单下设置部门负责人,新增方法添加部门负责人、删除负责部门负责人、查询部门对应的负责人 + /** + * 通过用户id设置负责部门 + * @param sysDepart SysDepart部门对象 + * @param userIds 多个负责用户id + */ + public void addDepartByUserIds(SysDepart sysDepart, String userIds) { + //获取部门id,保存到用户 + String departId = sysDepart.getId(); + //循环用户id + String[] userIdArray = userIds.split(","); + for (String userId:userIdArray) { + //查询用户表增加负责部门 + SysUser sysUser = sysUserMapper.selectById(userId); + //如果部门id不为空,那么就需要拼接 + if(oConvertUtils.isNotEmpty(sysUser.getDepartIds())){ + if(!sysUser.getDepartIds().contains(departId)) { + sysUser.setDepartIds(sysUser.getDepartIds() + "," + departId); + } + }else{ + sysUser.setDepartIds(departId); + } + //设置身份为上级 + sysUser.setUserIdentity(CommonConstant.USER_IDENTITY_2); + //跟新用户表 + sysUserMapper.updateById(sysUser); + //判断当前用户是否包含所属部门 + List<SysUserDepart> userDepartList = userDepartMapper.getUserDepartByUid(userId); + boolean isExistDepId = userDepartList.stream().anyMatch(item -> departId.equals(item.getDepId())); + //如果不存在需要设置所属部门 + if(!isExistDepId){ + userDepartMapper.insert(new SysUserDepart(userId,departId)); + } + } + } + + /** + * 修改用户负责部门 + * @param sysDepart SysDepart对象 + */ + private void updateChargeDepart(SysDepart sysDepart) { + //新的用户id + String directorIds = sysDepart.getDirectorUserIds(); + //旧的用户id(数据库中存在的) + String oldDirectorIds = sysDepart.getOldDirectorUserIds(); + String departId = sysDepart.getId(); + //如果用户id为空,那么用户的负责部门id应该去除 + if(oConvertUtils.isEmpty(directorIds)){ + this.deleteChargeDepId(departId,null); + }else if(oConvertUtils.isNotEmpty(directorIds) && oConvertUtils.isEmpty(oldDirectorIds)){ + //如果用户id不为空但是用户原来负责部门的用户id为空 + this.addDepartByUserIds(sysDepart,directorIds); + }else{ + //都不为空,需要比较,进行添加或删除 + //找到新的负责部门用户id与原来负责部门的用户id,进行删除 + List<String> userIdList = Arrays.stream(oldDirectorIds.split(",")).filter(item -> !directorIds.contains(item)).collect(Collectors.toList()); + for (String userId:userIdList){ + this.deleteChargeDepId(departId,userId); + } + //找到原来负责部门的用户id与新的负责部门用户id,进行新增 + String addUserIds = Arrays.stream(directorIds.split(",")).filter(item -> !oldDirectorIds.contains(item)).collect(Collectors.joining(",")); + if(oConvertUtils.isNotEmpty(addUserIds)){ + this.addDepartByUserIds(sysDepart,addUserIds); + } + } + } + + /** + * 删除用户负责部门 + * @param departId 部门id + * @param userId 用户id + */ + private void deleteChargeDepId(String departId,String userId){ + //先查询负责部门的用户id,因为负责部门的id使用逗号拼接起来的 + LambdaQueryWrapper<SysUser> query = new LambdaQueryWrapper<>(); + query.like(SysUser::getDepartIds,departId); + //删除全部的情况下用户id不存在 + if(oConvertUtils.isNotEmpty(userId)){ + query.eq(SysUser::getId,userId); + } + List<SysUser> userList = sysUserMapper.selectList(query); + for (SysUser sysUser:userList) { + //将不存在的部门id删除掉 + String departIds = sysUser.getDepartIds(); + List<String> list = new ArrayList<>(Arrays.asList(departIds.split(","))); + list.remove(departId); + //删除之后再将新的id用逗号拼接起来进行更新 + String newDepartIds = String.join(",",list); + sysUser.setDepartIds(newDepartIds); + sysUserMapper.updateById(sysUser); + } + } + + /** + * 通过部门集合为部门设置用户id,用于前台展示 + * @param departList 部门集合 + */ + private void setUserIdsByDepList(List<SysDepart> departList) { + //查询负责部门不为空的情况 + LambdaQueryWrapper<SysUser> query = new LambdaQueryWrapper<>(); + query.isNotNull(SysUser::getDepartIds); + List<SysUser> users = sysUserMapper.selectList(query); + Map<String,Object> map = new HashMap(5); + //先循环一遍找到不同的负责部门id + for (SysUser user:users) { + String departIds = user.getDepartIds(); + String[] departIdArray = departIds.split(","); + for (String departId:departIdArray) { + //mao中包含部门key,负责用户直接拼接 + if(map.containsKey(departId)){ + String userIds = map.get(departId) + "," + user.getId(); + map.put(departId,userIds); + }else{ + map.put(departId,user.getId()); + } + } + } + //循环部门集合找到部门id对应的负责用户 + for (SysDepart sysDepart:departList) { + if(map.containsKey(sysDepart.getId())){ + sysDepart.setDirectorUserIds(map.get(sysDepart.getId()).toString()); + } + } + } + //update-end---author:wangshuai ---date:20200308 for:[JTC-119]在部门管理菜单下设置部门负责人,新增方法添加部门负责人、删除负责部门负责人、查询部门对应的负责人 + } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java index 3382fb9..6662166 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.constant.CacheConstant; import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.system.vo.DictModel; import org.jeecg.common.system.vo.DictModelMany; import org.jeecg.common.system.vo.DictQuery; @@ -68,7 +70,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl @Override public Map<String, List<DictModel>> queryDictItemsByCodeList(List<String> dictCodeList) { List<DictModelMany> list = sysDictMapper.queryDictItemsByCodeList(dictCodeList); - Map<String, List<DictModel>> dictMap = new HashMap<>(); + Map<String, List<DictModel>> dictMap = new HashMap(5); for (DictModelMany dict : list) { List<DictModel> dictItemList = dictMap.computeIfAbsent(dict.getDictCode(), i -> new ArrayList<>()); dict.setDictCode(null); @@ -79,7 +81,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl @Override public Map<String, List<DictModel>> queryAllDictItems() { - Map<String, List<DictModel>> res = new HashMap<String, List<DictModel>>(); + Map<String, List<DictModel>> res = new HashMap(5); List<SysDict> ls = sysDictMapper.selectList(null); LambdaQueryWrapper<SysDictItem> queryWrapper = new LambdaQueryWrapper<SysDictItem>(); queryWrapper.eq(SysDictItem::getStatus, 1); @@ -116,7 +118,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl @Override public Map<String, List<DictModel>> queryManyDictByKeys(List<String> dictCodeList, List<String> keys) { List<DictModelMany> list = sysDictMapper.queryManyDictByKeys(dictCodeList, keys); - Map<String, List<DictModel>> dictMap = new HashMap<>(); + Map<String, List<DictModel>> dictMap = new HashMap(5); for (DictModelMany dict : list) { List<DictModel> dictItemList = dictMap.computeIfAbsent(dict.getDictCode(), i -> new ArrayList<>()); dictItemList.add(new DictModel(dict.getValue(), dict.getText())); @@ -226,7 +228,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public Integer saveMain(SysDict sysDict, List<SysDictItem> sysDictItemList) { int insert=0; try{ @@ -390,6 +392,11 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl return null; } else if (params.length == 4) { condition = params[3]; + // update-begin-author:taoyan date:20220314 for: online表单下拉搜索框表字典配置#{sys_org_code}报错 #3500 + if(condition.indexOf("#{")>=0){ + condition = QueryGenerator.getSqlRuleValue(condition); + } + // update-end-author:taoyan date:20220314 for: online表单下拉搜索框表字典配置#{sys_org_code}报错 #3500 } List<DictModel> ls; if (pageSize != null) { diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysGatewayRouteServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysGatewayRouteServiceImpl.java index 316d944..18c3649 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysGatewayRouteServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysGatewayRouteServiceImpl.java @@ -92,12 +92,12 @@ public class SysGatewayRouteServiceImpl extends ServiceImpl<SysGatewayRouteMappe /** * 更新redis路由缓存 */ - private void resreshRouter(String id) { + private void resreshRouter(String delRouterId) { //更新redis路由缓存 addRoute2Redis(CacheConstant.GATEWAY_ROUTES); BaseMap params = new BaseMap(); - params.put(GlobalConstants.HANDLER_NAME, "loderRouderHandler"); - params.put("routerId", id); + params.put(GlobalConstants.HANDLER_NAME, GlobalConstants.LODER_ROUDER_HANDLER); + params.put("delRouterId", delRouterId); //刷新网关 redisTemplate.convertAndSend(GlobalConstants.REDIS_TOPIC_NAME, params); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysLogServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysLogServiceImpl.java index 0f804e2..e9b561d 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysLogServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysLogServiceImpl.java @@ -32,7 +32,7 @@ public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog> impleme @Resource private SysLogMapper sysLogMapper; @Autowired - private ISysBaseAPI sysBaseAPI; + private SysBaseApiImpl sysBaseAPI; /** * @功能:清空所有日志记录 diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionDataRuleImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionDataRuleImpl.java index b907a17..69b7c12 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionDataRuleImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionDataRuleImpl.java @@ -84,7 +84,7 @@ public class SysPermissionDataRuleImpl extends ServiceImpl<SysPermissionDataRule } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void savePermissionDataRule(SysPermissionDataRule sysPermissionDataRule) { this.save(sysPermissionDataRule); SysPermission permission = sysPermissionMapper.selectById(sysPermissionDataRule.getPermissionId()); @@ -95,12 +95,12 @@ public class SysPermissionDataRuleImpl extends ServiceImpl<SysPermissionDataRule } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void deletePermissionDataRule(String dataRuleId) { SysPermissionDataRule dataRule = this.baseMapper.selectById(dataRuleId); if(dataRule!=null) { this.removeById(dataRuleId); - Integer count = this.baseMapper.selectCount(new LambdaQueryWrapper<SysPermissionDataRule>().eq(SysPermissionDataRule::getPermissionId, dataRule.getPermissionId())); + Long count = this.baseMapper.selectCount(new LambdaQueryWrapper<SysPermissionDataRule>().eq(SysPermissionDataRule::getPermissionId, dataRule.getPermissionId())); //注:同一个事务中删除后再查询是会认为数据已被删除的 若事务回滚上述删除无效 if(count==null || count==0) { SysPermission permission = sysPermissionMapper.selectById(dataRule.getPermissionId()); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionServiceImpl.java index 06d2b61..88b93ff 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionServiceImpl.java @@ -64,7 +64,7 @@ public class SysPermissionServiceImpl extends ServiceImpl<SysPermissionMapper, S * 真实删除 */ @Override - @Transactional + @Transactional(rollbackFor = Exception.class) @CacheEvict(value = CacheConstant.SYS_DATA_PERMISSIONS_CACHE,allEntries=true) public void deletePermission(String id) throws JeecgBootException { SysPermission sysPermission = this.getById(id); @@ -73,7 +73,7 @@ public class SysPermissionServiceImpl extends ServiceImpl<SysPermissionMapper, S } String pid = sysPermission.getParentId(); if(oConvertUtils.isNotEmpty(pid)) { - int count = this.count(new QueryWrapper<SysPermission>().lambda().eq(SysPermission::getParentId, pid)); + Long count = this.count(new QueryWrapper<SysPermission>().lambda().eq(SysPermission::getParentId, pid)); if(count==1) { //若父节点无其他子节点,则该父节点是叶子节点 this.sysPermissionMapper.setMenuLeaf(pid, 1); @@ -83,7 +83,7 @@ public class SysPermissionServiceImpl extends ServiceImpl<SysPermissionMapper, S // 该节点可能是子节点但也可能是其它节点的父节点,所以需要级联删除 this.removeChildrenBy(sysPermission.getId()); //关联删除 - Map map = new HashMap<>(); + Map map = new HashMap(5); map.put("permission_id",id); //删除数据规则 this.deletePermRuleByPermId(id); @@ -107,14 +107,16 @@ public class SysPermissionServiceImpl extends ServiceImpl<SysPermissionMapper, S // 查出该主键下的所有子级 List<SysPermission> permissionList = this.list(query); if (permissionList != null && permissionList.size() > 0) { - String id = ""; // id - int num = 0; // 查出的子级数量 + // id + String id = ""; + // 查出的子级数量 + Long num = Long.valueOf(0); // 如果查出的集合不为空, 则先删除所有 this.remove(query); // 再遍历刚才查出的集合, 根据每个对象,查找其是否仍有子级 for (int i = 0, len = permissionList.size(); i < len; i++) { id = permissionList.get(i).getId(); - Map map = new HashMap<>(); + Map map = new HashMap(5); map.put("permission_id",id); //删除数据规则 this.deletePermRuleByPermId(id); @@ -145,7 +147,7 @@ public class SysPermissionServiceImpl extends ServiceImpl<SysPermissionMapper, S throw new JeecgBootException("未找到菜单信息"); } String pid = sysPermission.getParentId(); - int count = this.count(new QueryWrapper<SysPermission>().lambda().eq(SysPermission::getParentId, pid)); + Long count = this.count(new QueryWrapper<SysPermission>().lambda().eq(SysPermission::getParentId, pid)); if(count==1) { //若父节点无其他子节点,则该父节点是叶子节点 this.sysPermissionMapper.setMenuLeaf(pid, 1); @@ -189,7 +191,7 @@ public class SysPermissionServiceImpl extends ServiceImpl<SysPermissionMapper, S sysPermission.setParentId(""); } //Step2.判断菜单下级是否有菜单,无则设置为叶子节点 - int count = this.count(new QueryWrapper<SysPermission>().lambda().eq(SysPermission::getParentId, sysPermission.getId())); + Long count = this.count(new QueryWrapper<SysPermission>().lambda().eq(SysPermission::getParentId, sysPermission.getId())); if(count==0) { sysPermission.setLeaf(true); } @@ -202,7 +204,7 @@ public class SysPermissionServiceImpl extends ServiceImpl<SysPermissionMapper, S //a.设置新的父菜单不为叶子节点 this.sysPermissionMapper.setMenuLeaf(pid, 0); //b.判断老的菜单下是否还有其他子菜单,没有的话则设置为叶子节点 - int cc = this.count(new QueryWrapper<SysPermission>().lambda().eq(SysPermission::getParentId, p.getParentId())); + Long cc = this.count(new QueryWrapper<SysPermission>().lambda().eq(SysPermission::getParentId, p.getParentId())); if(cc==0) { if(oConvertUtils.isNotEmpty(p.getParentId())) { this.sysPermissionMapper.setMenuLeaf(p.getParentId(), 1); @@ -226,7 +228,7 @@ public class SysPermissionServiceImpl extends ServiceImpl<SysPermissionMapper, S public void deletePermRuleByPermId(String id) { LambdaQueryWrapper<SysPermissionDataRule> query = new LambdaQueryWrapper<>(); query.eq(SysPermissionDataRule::getPermissionId, id); - int countValue = this.permissionDataRuleService.count(query); + Long countValue = this.permissionDataRuleService.count(query); if(countValue > 0) { this.permissionDataRuleService.remove(query); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysRoleIndexServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysRoleIndexServiceImpl.java new file mode 100644 index 0000000..60f6320 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysRoleIndexServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.system.service.impl; + +import org.jeecg.modules.system.entity.SysRoleIndex; +import org.jeecg.modules.system.mapper.SysRoleIndexMapper; +import org.jeecg.modules.system.service.ISysRoleIndexService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 角色首页配置 + * @Author: jeecg-boot + * @Date: 2022-03-25 + * @Version: V1.0 + */ +@Service +public class SysRoleIndexServiceImpl extends ServiceImpl<SysRoleIndexMapper, SysRoleIndex> implements ISysRoleIndexService { + +} diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysRolePermissionServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysRolePermissionServiceImpl.java index 79ff4ae..6103c56 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysRolePermissionServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysRolePermissionServiceImpl.java @@ -2,8 +2,7 @@ package org.jeecg.modules.system.service.impl; import java.util.*; -import org.jeecg.common.constant.CacheConstant; -import org.jeecg.common.util.IPUtils; +import org.jeecg.common.util.IpUtils; import org.jeecg.common.util.SpringContextUtils; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.system.entity.SysRolePermission; @@ -14,7 +13,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; @@ -37,7 +35,7 @@ public class SysRolePermissionServiceImpl extends ServiceImpl<SysRolePermissionM //获取request HttpServletRequest request = SpringContextUtils.getHttpServletRequest(); //获取IP地址 - ip = IPUtils.getIpAddr(request); + ip = IpUtils.getIpAddr(request); } catch (Exception e) { ip = "127.0.0.1"; } @@ -63,7 +61,7 @@ public class SysRolePermissionServiceImpl extends ServiceImpl<SysRolePermissionM //获取request HttpServletRequest request = SpringContextUtils.getHttpServletRequest(); //获取IP地址 - ip = IPUtils.getIpAddr(request); + ip = IpUtils.getIpAddr(request); } catch (Exception e) { ip = "127.0.0.1"; } @@ -105,7 +103,7 @@ public class SysRolePermissionServiceImpl extends ServiceImpl<SysRolePermissionM String[] mainArr = main.split(","); String[] diffArr = diff.split(","); - Map<String, Integer> map = new HashMap<>(); + Map<String, Integer> map = new HashMap(5); for (String string : mainArr) { map.put(string, 1); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysTenantServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysTenantServiceImpl.java index a4c4e85..629b99a 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysTenantServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysTenantServiceImpl.java @@ -16,6 +16,10 @@ import org.springframework.stereotype.Service; import java.util.Collection; import java.util.List; +/** + * @Description: 租户实现类 + * @author: jeecg-boot + */ @Service("sysTenantServiceImpl") @Slf4j public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant> implements ISysTenantService { @@ -33,7 +37,7 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant } @Override - public int countUserLinkTenant(String id) { + public Long countUserLinkTenant(String id) { LambdaQueryWrapper<SysUser> userQueryWrapper = new LambdaQueryWrapper<>(); userQueryWrapper.eq(SysUser::getRelTenantIds, id); userQueryWrapper.or().like(SysUser::getRelTenantIds, "%," + id); @@ -46,7 +50,7 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant @Override public boolean removeTenantById(String id) { // 查找出已被关联的用户数量 - int userCount = this.countUserLinkTenant(id); + Long userCount = this.countUserLinkTenant(id); if (userCount > 0) { throw new JeecgBootException("该租户已被引用,无法删除!"); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserDepartServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserDepartServiceImpl.java index 143df8f..4089360 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserDepartServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserDepartServiceImpl.java @@ -10,10 +10,11 @@ import org.jeecg.modules.system.entity.SysDepart; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.entity.SysUserDepart; import org.jeecg.modules.system.mapper.SysUserDepartMapper; +import org.jeecg.modules.system.mapper.SysUserMapper; import org.jeecg.modules.system.model.DepartIdModel; import org.jeecg.modules.system.service.ISysDepartService; import org.jeecg.modules.system.service.ISysUserDepartService; -import org.jeecg.modules.system.service.ISysUserService; +import org.jeecg.modules.system.vo.SysUserDepVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -35,7 +36,7 @@ public class SysUserDepartServiceImpl extends ServiceImpl<SysUserDepartMapper, S @Autowired private ISysDepartService sysDepartService; @Autowired - private ISysUserService sysUserService; + private SysUserMapper sysUserMapper; /** @@ -85,7 +86,7 @@ public class SysUserDepartServiceImpl extends ServiceImpl<SysUserDepartMapper, S for(SysUserDepart uDep : uDepList) { userIdList.add(uDep.getUserId()); } - List<SysUser> userList = (List<SysUser>) sysUserService.listByIds(userIdList); + List<SysUser> userList = (List<SysUser>) sysUserMapper.selectBatchIds(userIdList); //update-begin-author:taoyan date:201905047 for:接口调用查询返回结果不能返回密码相关信息 for (SysUser sysUser : userList) { sysUser.setSalt(""); @@ -107,7 +108,7 @@ public class SysUserDepartServiceImpl extends ServiceImpl<SysUserDepartMapper, S realname = realname.trim(); } List<SysUser> userList = this.baseMapper.queryDepartUserList(depCode, realname); - Map<String, SysUser> map = new HashMap<String, SysUser>(); + Map<String, SysUser> map = new HashMap(5); for (SysUser sysUser : userList) { // 返回的用户数据去掉密码信息 sysUser.setSalt(""); @@ -132,7 +133,7 @@ public class SysUserDepartServiceImpl extends ServiceImpl<SysUserDepartMapper, S if(oConvertUtils.isNotEmpty(username)){ query.like(SysUser::getUsername, username); } - pageList = sysUserService.page(page, query); + pageList = sysUserMapper.selectPage(page, query); }else{ // 有部门ID 需要走自定义sql SysDepart sysDepart = sysDepartService.getById(departId); @@ -141,10 +142,10 @@ public class SysUserDepartServiceImpl extends ServiceImpl<SysUserDepartMapper, S List<SysUser> userList = pageList.getRecords(); if(userList!=null && userList.size()>0){ List<String> userIds = userList.stream().map(SysUser::getId).collect(Collectors.toList()); - Map<String, SysUser> map = new HashMap<String, SysUser>(); + Map<String, SysUser> map = new HashMap(5); if(userIds!=null && userIds.size()>0){ // 查部门名称 - Map<String,String> useDepNames = sysUserService.getDepNamesByUserIds(userIds); + Map<String,String> useDepNames = this.getDepNamesByUserIds(userIds); userList.forEach(item->{ //TODO 临时借用这个字段用于页面展示 item.setOrgCodeTxt(useDepNames.get(item.getId())); @@ -159,4 +160,24 @@ public class SysUserDepartServiceImpl extends ServiceImpl<SysUserDepartMapper, S return pageList; } + /** + * 升级SpringBoot2.6.6,不允许循环依赖 + * @param userIds + * @return + */ + private Map<String, String> getDepNamesByUserIds(List<String> userIds) { + List<SysUserDepVo> list = sysUserMapper.getDepNamesByUserIds(userIds); + + Map<String, String> res = new HashMap(5); + list.forEach(item -> { + if (res.get(item.getUserId()) == null) { + res.put(item.getUserId(), item.getDepartName()); + } else { + res.put(item.getUserId(), res.get(item.getUserId()) + "," + item.getDepartName()); + } + } + ); + return res; + } + } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java index cbb4eae..3316a9f 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java @@ -9,8 +9,6 @@ import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CacheConstant; import org.jeecg.common.constant.CommonConstant; -import org.jeecg.common.system.api.ISysBaseAPI; -import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.system.vo.SysUserCacheInfo; import org.jeecg.common.util.PasswordUtil; import org.jeecg.common.util.UUIDGenerator; @@ -23,6 +21,7 @@ import org.jeecg.modules.system.service.ISysUserService; import org.jeecg.modules.system.vo.SysUserDepVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -51,8 +50,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl @Autowired private SysUserDepartMapper sysUserDepartMapper; @Autowired - private ISysBaseAPI sysBaseAPI; - @Autowired private SysDepartMapper sysDepartMapper; @Autowired private SysRoleMapper sysRoleMapper; @@ -125,7 +122,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void addUserWithRole(SysUser user, String roles) { this.save(user); if(oConvertUtils.isNotEmpty(roles)) { @@ -139,7 +136,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl @Override @CacheEvict(value= {CacheConstant.SYS_USERS_CACHE}, allEntries=true) - @Transactional + @Transactional(rollbackFor = Exception.class) public void editUserWithRole(SysUser user, String roles) { this.updateById(user); //先删后加 @@ -195,24 +192,32 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl return permissionSet; } + /** + * 升级SpringBoot2.6.6,不允许循环依赖 + * @author:qinfeng + * @update: 2022-04-07 + * @param username + * @return + */ @Override + @Cacheable(cacheNames=CacheConstant.SYS_USERS_CACHE, key="#username") public SysUserCacheInfo getCacheUser(String username) { SysUserCacheInfo info = new SysUserCacheInfo(); info.setOneDepart(true); -// SysUser user = userMapper.getUserByName(username); -// info.setSysUserCode(user.getUsername()); -// info.setSysUserName(user.getRealname()); - + if(oConvertUtils.isEmpty(username)) { + return null; + } - LoginUser user = sysBaseAPI.getUserByName(username); - if(user!=null) { - info.setSysUserCode(user.getUsername()); - info.setSysUserName(user.getRealname()); - info.setSysOrgCode(user.getOrgCode()); + //查询用户信息 + SysUser sysUser = userMapper.getUserByName(username); + if(sysUser!=null) { + info.setSysUserCode(sysUser.getUsername()); + info.setSysUserName(sysUser.getRealname()); + info.setSysOrgCode(sysUser.getOrgCode()); } //多部门支持in查询 - List<SysDepart> list = sysDepartMapper.queryUserDeparts(user.getId()); + List<SysDepart> list = sysDepartMapper.queryUserDeparts(sysUser.getId()); List<String> sysMultiOrgCode = new ArrayList<String>(); if(list==null || list.size()==0) { //当前用户无部门 @@ -230,7 +235,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl return info; } - // 根据部门Id查询 + /** + * 根据部门Id查询 + * @param page + * @param departId 部门id + * @param username 用户账户名称 + * @return + */ @Override public IPage<SysUser> getUserByDepId(Page<SysUser> page, String departId,String username) { return userMapper.getUserByDepId(page, departId,username); @@ -245,7 +256,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl public Map<String, String> getDepNamesByUserIds(List<String> userIds) { List<SysUserDepVo> list = this.baseMapper.getDepNamesByUserIds(userIds); - Map<String, String> res = new HashMap<String, String>(); + Map<String, String> res = new HashMap(5); list.forEach(item -> { if (res.get(item.getUserId()) == null) { res.put(item.getUserId(), item.getDepartName()); @@ -278,7 +289,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl return result; } - // 根据角色Id查询 + /** + * 根据角色Id查询 + * @param page + * @param roleId 角色id + * @param username 用户账户名称 + * @return + */ @Override public IPage<SysUser> getUserByRoleId(Page<SysUser> page, String roleId, String username) { return userMapper.getUserByRoleId(page,roleId,username); @@ -304,7 +321,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void addUserWithDepart(SysUser user, String selectedParts) { // this.save(user); //保存角色的时候已经添加过一次了 if(oConvertUtils.isNotEmpty(selectedParts)) { @@ -321,7 +338,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl @Transactional(rollbackFor = Exception.class) @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true) public void editUserWithDepart(SysUser user, String departs) { - this.updateById(user); //更新角色的时候已经更新了一次了,可以再跟新一次 + //更新角色的时候已经更新了一次了,可以再跟新一次 + this.updateById(user); String[] arr = {}; if(oConvertUtils.isNotEmpty(departs)){ arr = departs.split(","); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppDingtalkServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppDingtalkServiceImpl.java index e596e14..8853082 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppDingtalkServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppDingtalkServiceImpl.java @@ -3,6 +3,7 @@ package org.jeecg.modules.system.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.jeecg.dingtalk.api.base.JdtBaseAPI; import com.jeecg.dingtalk.api.core.response.Response; import com.jeecg.dingtalk.api.core.vo.AccessToken; @@ -31,6 +32,7 @@ import org.jeecg.config.thirdapp.ThirdAppConfig; import org.jeecg.config.thirdapp.ThirdAppTypeItemVo; import org.jeecg.modules.system.entity.*; import org.jeecg.modules.system.mapper.SysAnnouncementSendMapper; +import org.jeecg.modules.system.mapper.SysUserMapper; import org.jeecg.modules.system.model.SysDepartTreeModel; import org.jeecg.modules.system.model.ThirdLoginModel; import org.jeecg.modules.system.service.*; @@ -49,6 +51,7 @@ import java.util.stream.Collectors; /** * 第三方App对接:钉钉实现类 + * @author: jeecg-boot */ @Slf4j @Service @@ -56,11 +59,10 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { @Autowired ThirdAppConfig thirdAppConfig; - @Autowired private ISysDepartService sysDepartService; @Autowired - private ISysUserService sysUserService; + private SysUserMapper userMapper; @Autowired private ISysThirdAccountService sysThirdAccountService; @Autowired @@ -70,7 +72,9 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { @Autowired private SysAnnouncementSendMapper sysAnnouncementSendMapper; - // 第三方APP类型,当前固定为 dingtalk + /** + * 第三方APP类型,当前固定为 dingtalk + */ public final String THIRD_TYPE = ThirdAppConfig.DINGTALK.toLowerCase(); @Override @@ -142,7 +146,14 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { return syncInfo; } - // 递归同步部门到本地 + /** + * 递归同步部门到本地 + * @param sysDepartsTree + * @param departments + * @param parent + * @param accessToken + * @param syncInfo + */ public void syncDepartmentRecursion(List<SysDepartTreeModel> sysDepartsTree, List<Response<Department>> departments, Department parent, String accessToken, SyncInfoVo syncInfo) { if (sysDepartsTree != null && sysDepartsTree.size() != 0) { for1: @@ -303,10 +314,10 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(SysUser::getId, (Object[]) idList); // 获取本地指定用户 - sysUsers = sysUserService.list(queryWrapper); + sysUsers = userMapper.selectList(queryWrapper); } else { // 获取本地所有用户 - sysUsers = sysUserService.list(); + sysUsers = userMapper.selectList(Wrappers.emptyWrapper()); } // 查询钉钉所有的部门,用于同步用户和部门的关系 List<Department> allDepartment = JdtDepartmentAPI.listAll(accessToken); @@ -385,7 +396,7 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { } // 获取本地用户 - List<SysUser> sysUsersList = sysUserService.list(); + List<SysUser> sysUsersList = userMapper.selectList(Wrappers.emptyWrapper()); // 查询钉钉所有的部门,用于同步用户和部门的关系 List<Department> allDepartment = JdtDepartmentAPI.listAll(accessToken); @@ -401,7 +412,7 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { // 循环到此说明用户匹配成功,进行更新操作 SysUser updateSysUser = this.dtUserToSysUser(dtUserInfo, sysUserTemp); try { - sysUserService.updateById(updateSysUser); + userMapper.updateById(updateSysUser); String str = String.format("用户 %s(%s) 更新成功!", updateSysUser.getRealname(), updateSysUser.getUsername()); syncInfo.addSuccessInfo(str); } catch (Exception e) { @@ -413,7 +424,7 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { // 如果没有匹配到用户,则走创建逻辑 SysUser newSysUser = this.dtUserToSysUser(dtUserInfo); try { - sysUserService.save(newSysUser); + userMapper.insert(newSysUser); String str = String.format("用户 %s(%s) 创建成功!", newSysUser.getRealname(), newSysUser.getUsername()); syncInfo.addSuccessInfo(str); } catch (Exception e) { @@ -719,6 +730,7 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { * @param verifyConfig * @return */ + @Override public boolean sendMessage(MessageDTO message, boolean verifyConfig) { Response<String> response = this.sendMessageResponse(message, verifyConfig); if (response != null) { @@ -739,7 +751,7 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { String content = message.getContent(); int agentId = thirdAppConfig.getDingtalk().getAgentIdInt(); Message<TextMessage> textMessage = new Message<>(agentId, new TextMessage(content)); - if (message.isToAll()) { + if (message.getToAll()) { textMessage.setTo_all_user(true); } else { String[] toUsers = message.getToUser().split(","); @@ -813,7 +825,11 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { } if(userIds!=null){ - String[] usernameList = sysUserService.userIdToUsername(Arrays.asList(userIds)).toArray(new String[]{}); + LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(SysUser::getId, userIds); + List<SysUser> userList = userMapper.selectList(queryWrapper); + String[] usernameList = userList.stream().map(SysUser::getUsername).toArray(String[] :: new); + // 通过第三方账号表查询出第三方userId List<SysThirdAccount> thirdAccountList = sysThirdAccountService.listThirdUserIdByUsername(usernameList, THIRD_TYPE); List<String> dtUserIds = thirdAccountList.stream().map(SysThirdAccount::getThirdUserId).collect(Collectors.toList()); @@ -887,14 +903,14 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { private SysUser getSysUserByThird(SysThirdAccount thirdAccount, User appUser, String appUserId, String accessToken) { String sysUserId = thirdAccount.getSysUserId(); if (oConvertUtils.isNotEmpty(sysUserId)) { - return sysUserService.getById(sysUserId); + return userMapper.selectById(sysUserId); } else { // 如果没有 sysUserId ,说明没有绑定账号,获取到手机号之后进行绑定 if (appUser == null) { appUser = JdtUserAPI.getUserById(appUserId, accessToken).getResult(); } // 判断系统里是否有这个手机号的用户 - SysUser sysUser = sysUserService.getUserByPhone(appUser.getMobile()); + SysUser sysUser = userMapper.getUserByPhone(appUser.getMobile()); if (sysUser != null) { thirdAccount.setAvatar(appUser.getAvatar()); thirdAccount.setRealname(appUser.getName()); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppWechatEnterpriseServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppWechatEnterpriseServiceImpl.java index c6f1b96..02a54b0 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppWechatEnterpriseServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppWechatEnterpriseServiceImpl.java @@ -2,6 +2,7 @@ package org.jeecg.modules.system.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.jeecg.qywx.api.base.JwAccessTokenAPI; import com.jeecg.qywx.api.core.common.AccessToken; import com.jeecg.qywx.api.department.JwDepartmentAPI; @@ -26,6 +27,7 @@ import org.jeecg.common.util.oConvertUtils; import org.jeecg.config.thirdapp.ThirdAppConfig; import org.jeecg.modules.system.entity.*; import org.jeecg.modules.system.mapper.SysAnnouncementSendMapper; +import org.jeecg.modules.system.mapper.SysUserMapper; import org.jeecg.modules.system.model.SysDepartTreeModel; import org.jeecg.modules.system.model.ThirdLoginModel; import org.jeecg.modules.system.service.*; @@ -43,6 +45,7 @@ import java.util.stream.Collectors; /** * 第三方App对接:企业微信实现类 + * @author: jeecg-boot */ @Slf4j @Service @@ -53,7 +56,7 @@ public class ThirdAppWechatEnterpriseServiceImpl implements IThirdAppService { @Autowired private ISysDepartService sysDepartService; @Autowired - private ISysUserService sysUserService; + private SysUserMapper userMapper; @Autowired private ISysThirdAccountService sysThirdAccountService; @Autowired @@ -63,7 +66,9 @@ public class ThirdAppWechatEnterpriseServiceImpl implements IThirdAppService { @Autowired private SysAnnouncementSendMapper sysAnnouncementSendMapper; - // 第三方APP类型,当前固定为 wechat_enterprise + /** + * 第三方APP类型,当前固定为 wechat_enterprise + */ public final String THIRD_TYPE = ThirdAppConfig.WECHAT_ENTERPRISE.toLowerCase(); @Override @@ -123,7 +128,12 @@ public class ThirdAppWechatEnterpriseServiceImpl implements IThirdAppService { return syncInfo; } - // 递归删除部门以及子部门,由于企业微信不允许删除带有成员和子部门的部门,所以需要递归删除下子部门,然后把部门成员移动端根部门下 + /** + * 递归删除部门以及子部门,由于企业微信不允许删除带有成员和子部门的部门,所以需要递归删除下子部门,然后把部门成员移动端根部门下 + * @param children + * @param accessToken + * @param ifLocal + */ private void deleteDepartRecursion(List<JwDepartmentTreeVo> children, String accessToken, boolean ifLocal) { for (JwDepartmentTreeVo departmentTree : children) { String depId = departmentTree.getId(); @@ -162,7 +172,13 @@ public class ThirdAppWechatEnterpriseServiceImpl implements IThirdAppService { } } - // 递归同步部门到第三方APP + /** + * 递归同步部门到第三方APP + * @param sysDepartsTree + * @param departments + * @param parent + * @param accessToken + */ private void syncDepartmentRecursion(List<SysDepartTreeModel> sysDepartsTree, List<Department> departments, Department parent, String accessToken) { if (sysDepartsTree != null && sysDepartsTree.size() != 0) { for1: @@ -295,10 +311,10 @@ public class ThirdAppWechatEnterpriseServiceImpl implements IThirdAppService { LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(SysUser::getId, (Object[]) idList); // 获取本地指定用户 - sysUsers = sysUserService.list(queryWrapper); + sysUsers = userMapper.selectList(queryWrapper); } else { // 获取本地所有用户 - sysUsers = sysUserService.list(); + sysUsers = userMapper.selectList(Wrappers.emptyWrapper()); } // 循环判断新用户和需要更新的用户 @@ -364,7 +380,7 @@ public class ThirdAppWechatEnterpriseServiceImpl implements IThirdAppService { return syncInfo; } //查询本地用户 - List<SysUser> sysUsersList = sysUserService.list(); + List<SysUser> sysUsersList = userMapper.selectList(Wrappers.emptyWrapper()); // 循环判断新用户和需要更新的用户 for (User qwUser : qwUsersList) { /* @@ -381,7 +397,7 @@ public class ThirdAppWechatEnterpriseServiceImpl implements IThirdAppService { // 循环到此说明用户匹配成功,进行更新操作 SysUser updateSysUser = this.qwUserToSysUser(qwUser, sysUserTemp); try { - sysUserService.updateById(updateSysUser); + userMapper.updateById(updateSysUser); String str = String.format("用户 %s(%s) 更新成功!", updateSysUser.getRealname(), updateSysUser.getUsername()); syncInfo.addSuccessInfo(str); } catch (Exception e) { @@ -394,7 +410,7 @@ public class ThirdAppWechatEnterpriseServiceImpl implements IThirdAppService { // 没匹配到用户则走新增逻辑 SysUser newSysUser = this.qwUserToSysUser(qwUser); try { - sysUserService.save(newSysUser); + userMapper.insert(newSysUser); String str = String.format("用户 %s(%s) 创建成功!", newSysUser.getRealname(), newSysUser.getUsername()); syncInfo.addSuccessInfo(str); } catch (Exception e) { @@ -557,7 +573,8 @@ public class ThirdAppWechatEnterpriseServiceImpl implements IThirdAppService { user.setEnable(1); } } - user.setTelephone(sysUser.getTelephone());// 座机号 + // 座机号 + user.setTelephone(sysUser.getTelephone()); // --- 企业微信没有逻辑删除的功能 // update-begin--Author:sunjianlei Date:20210520 for:本地逻辑删除的用户,在企业微信里禁用 ----- if (CommonConstant.DEL_FLAG_1.equals(sysUser.getDelFlag())) { @@ -639,7 +656,8 @@ public class ThirdAppWechatEnterpriseServiceImpl implements IThirdAppService { if (qwUser.getEnable() != null) { sysUser.setStatus(qwUser.getEnable() == 1 ? 1 : 2); } - sysUser.setTelephone(qwUser.getTelephone());// 座机号 + // 座机号 + sysUser.setTelephone(qwUser.getTelephone()); // --- 企业微信没有逻辑删除的功能 // sysUser.setDelFlag() @@ -740,7 +758,7 @@ public class ThirdAppWechatEnterpriseServiceImpl implements IThirdAppService { } Text text = new Text(); text.setMsgtype("text"); - text.setTouser(this.getTouser(message.getToUser(), message.isToAll())); + text.setTouser(this.getTouser(message.getToUser(), message.getToAll())); TextEntity entity = new TextEntity(); entity.setContent(message.getContent()); text.setText(entity); @@ -779,7 +797,11 @@ public class ThirdAppWechatEnterpriseServiceImpl implements IThirdAppService { SysAnnouncementSend sysAnnouncementSend = sysAnnouncementSendMapper.selectOne(queryWrapper); userIds = new String[] {sysAnnouncementSend.getUserId()}; } - List<String> usernameList = sysUserService.userIdToUsername(Arrays.asList(userIds)); + + LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(SysUser::getId, userIds); + List<SysUser> userList = userMapper.selectList(queryWrapper); + List<String> usernameList = userList.stream().map(SysUser::getUsername).collect(Collectors.toList()); usernameString = String.join(",", usernameList); } @@ -863,14 +885,14 @@ public class ThirdAppWechatEnterpriseServiceImpl implements IThirdAppService { private SysUser getSysUserByThird(SysThirdAccount thirdAccount, User appUser, String appUserId, String accessToken) { String sysUserId = thirdAccount.getSysUserId(); if (oConvertUtils.isNotEmpty(sysUserId)) { - return sysUserService.getById(sysUserId); + return userMapper.selectById(sysUserId); } else { // 如果没有 sysUserId ,说明没有绑定账号,获取到手机号之后进行绑定 if (appUser == null) { appUser = JwUserAPI.getUserByUserid(appUserId, accessToken); } // 判断系统里是否有这个手机号的用户 - SysUser sysUser = sysUserService.getUserByPhone(appUser.getMobile()); + SysUser sysUser = userMapper.getUserByPhone(appUser.getMobile()); if (sysUser != null) { thirdAccount.setAvatar(appUser.getAvatar()); thirdAccount.setRealname(appUser.getName()); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/RandImageUtil.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/RandImageUtil.java index 4697821..d9e7fe4 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/RandImageUtil.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/RandImageUtil.java @@ -11,6 +11,7 @@ import java.util.Random; /** * 登录验证码工具类 + * @author: jeecg-boot */ public class RandImageUtil { @@ -73,7 +74,8 @@ public class RandImageUtil { byte[] bytes = byteStream.toByteArray(); //转换成base64串 String base64 = Base64.getEncoder().encodeToString(bytes).trim(); - base64 = base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\n + //删除 \r\n + base64 = base64.replaceAll("\n", "").replaceAll("\r", ""); //写到指定位置 //ImageIO.write(bufferedImage, "png", new File("")); @@ -87,7 +89,8 @@ public class RandImageUtil { // 获取图形上下文 final Graphics2D graphics = (Graphics2D) image.getGraphics(); // 设定背景颜色 - graphics.setColor(Color.WHITE); // ---1 + // ---1 + graphics.setColor(Color.WHITE); graphics.fillRect(0, 0, width, height); // 设定边框颜色 // graphics.setColor(getRandColor(100, 200)); // ---2 @@ -96,9 +99,11 @@ public class RandImageUtil { final Random random = new Random(); // 随机产生干扰线,使图象中的认证码不易被其它程序探测到 for (int i = 0; i < count; i++) { - graphics.setColor(getRandColor(150, 200)); // ---3 + // ---3 + graphics.setColor(getRandColor(150, 200)); - final int x = random.nextInt(width - lineWidth - 1) + 1; // 保证画在边框之内 + // 保证画在边框之内 + final int x = random.nextInt(width - lineWidth - 1) + 1; final int y = random.nextInt(height - lineWidth - 1) + 1; final int xl = random.nextInt(lineWidth); final int yl = random.nextInt(lineWidth); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysDepartUsersVO.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysDepartUsersVO.java index 3d11f54..79d201a 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysDepartUsersVO.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysDepartUsersVO.java @@ -5,6 +5,10 @@ import java.util.List; import lombok.Data; +/** + * @Description: 系统部门VO + * @author: jeecg-boot + */ @Data public class SysDepartUsersVO implements Serializable{ private static final long serialVersionUID = 1L; diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysDictPage.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysDictPage.java index bd06e8b..2bd82a8 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysDictPage.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysDictPage.java @@ -7,6 +7,10 @@ import org.jeecgframework.poi.excel.annotation.ExcelCollection; import java.util.List; +/** + * @Description: 系统字典分页 + * @author: jeecg-boot + */ @Data public class SysDictPage { diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysUserRoleVO.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysUserRoleVO.java index 70d14ef..a914792 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysUserRoleVO.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysUserRoleVO.java @@ -5,6 +5,10 @@ import lombok.Data; import java.io.Serializable; import java.util.List; +/** + * @Description: 用户角色vo + * @author: jeecg-boot + */ @Data public class SysUserRoleVO implements Serializable{ private static final long serialVersionUID = 1L; diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml b/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml index c46531e..f6a6a51 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml +++ b/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml @@ -50,7 +50,7 @@ spring: instanceName: MyScheduler instanceId: AUTO jobStore: - class: org.quartz.impl.jdbcjobstore.JobStoreTX + class: org.springframework.scheduling.quartz.LocalDataSourceJobStore driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate tablePrefix: QRTZ_ isClustered: true @@ -92,6 +92,9 @@ spring: # 设置静态文件路径,js,css等 mvc: static-path-pattern: /** + #Spring Boot 2.6+后映射匹配的默认策略已从AntPathMatcher更改为PathPatternParser,需要手动指定为ant-path-matcher + pathmatch: + matching-strategy: ant_path_matcher resource: static-locations: classpath:/static/,classpath:/public/ autoconfigure: @@ -173,8 +176,6 @@ mybatis-plus: #jeecg专用配置 minidao : base-package: org.jeecg.modules.jmreport.* - #DB类型(mysql | postgresql | oracle | sqlserver| other) - db-type: mysql jeecg : # 是否启用安全模式 safeMode: false @@ -226,6 +227,13 @@ jeecg : is_verify_token: true #必须校验方法 verify_methods: remove,delete,save,add,update + #自定义项目前缀 + customPrePath: + pageSize: + - 10 + - 20 + - 30 + - 40 #Wps在线文档 wps: domain: https://wwo.wps.cn/office/ diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-prod.yml b/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-prod.yml index e185687..8f557c0 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-prod.yml +++ b/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-prod.yml @@ -50,7 +50,7 @@ spring: instanceName: MyScheduler instanceId: AUTO jobStore: - class: org.quartz.impl.jdbcjobstore.JobStoreTX + class: org.springframework.scheduling.quartz.LocalDataSourceJobStore driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate tablePrefix: QRTZ_ isClustered: true @@ -92,6 +92,9 @@ spring: # 设置静态文件路径,js,css等 mvc: static-path-pattern: /** + #Spring Boot 2.6+后映射匹配的默认策略已从AntPathMatcher更改为PathPatternParser,需要手动指定为ant-path-matcher + pathmatch: + matching-strategy: ant_path_matcher resource: static-locations: classpath:/static/,classpath:/public/ autoconfigure: diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-test.yml b/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-test.yml index 9698b34..2553152 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-test.yml +++ b/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-test.yml @@ -50,7 +50,7 @@ spring: instanceName: MyScheduler instanceId: AUTO jobStore: - class: org.quartz.impl.jdbcjobstore.JobStoreTX + class: org.springframework.scheduling.quartz.LocalDataSourceJobStore driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate tablePrefix: QRTZ_ isClustered: true @@ -92,6 +92,9 @@ spring: # 设置静态文件路径,js,css等 mvc: static-path-pattern: /** + #Spring Boot 2.6+后映射匹配的默认策略已从AntPathMatcher更改为PathPatternParser,需要手动指定为ant-path-matcher + pathmatch: + matching-strategy: ant_path_matcher resource: static-locations: classpath:/static/,classpath:/public/ autoconfigure: diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/resources/banner.txt b/jeecg-boot/jeecg-boot-module-system/src/main/resources/banner.txt index 75c70b1..21783e0 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/resources/banner.txt +++ b/jeecg-boot/jeecg-boot-module-system/src/main/resources/banner.txt @@ -9,6 +9,6 @@ ${AnsiColor.BRIGHT_BLUE} ${AnsiColor.BRIGHT_GREEN} -Jeecg Boot Version: 3.1.0 +Jeecg Boot Version: 3.2.0 Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version} ${AnsiColor.BLACK} diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/resources/templates/pdfPreviewIframe.ftl b/jeecg-boot/jeecg-boot-module-system/src/main/resources/templates/pdfPreviewIframe.ftl index e92d4a9..f20c68c 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/resources/templates/pdfPreviewIframe.ftl +++ b/jeecg-boot/jeecg-boot-module-system/src/main/resources/templates/pdfPreviewIframe.ftl @@ -13,7 +13,7 @@ function openScanFile(title,token,bizNo,archivesNo){ //var pdfUrl ="http://127.0.0.1:8080/jeecg-boot/generic/web/viewer.html?file="+encodeURIComponent("http://127.0.0.1:8080/jeecg-boot/test/jeecgDemo/getPdfUrl?title="+encodeURI(title)); - var pdfUrl ="${base}/generic/web/viewer.html?file="+encodeURIComponent("http://storage.xuetangx.com/public_assets/xuetangx/PDF/PlayerAPI_v1.0.6.pdf"); + var pdfUrl ="${base}/generic/web/viewer.html?file="+encodeURIComponent("https://jeecgos.oss-cn-beijing.aliyuncs.com/files/site/java_p3c.pdf"); var vm=window.open(pdfUrl); } diff --git a/jeecg-boot/jeecg-boot-module-system/src/test/java/org/jeecg/SecurityToolsTest.java b/jeecg-boot/jeecg-boot-module-system/src/test/java/org/jeecg/SecurityToolsTest.java deleted file mode 100644 index e1ce9f6..0000000 --- a/jeecg-boot/jeecg-boot-module-system/src/test/java/org/jeecg/SecurityToolsTest.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.jeecg; - -import com.alibaba.fastjson.JSONObject; -import org.jeecg.common.util.security.SecurityTools; -import org.jeecg.common.util.security.entity.*; -import org.junit.Test; - -public class SecurityToolsTest { - @Test - public void Test(){ - MyKeyPair mkeyPair = SecurityTools.generateKeyPair(); - - JSONObject msg = new JSONObject(); - msg.put("name", "党政辉"); - msg.put("age", 50); - JSONObject identity = new JSONObject(); - identity.put("type", "01"); - identity.put("no", "210882165896524512"); - msg.put("identity", identity); - - // 签名加密部分 - SecuritySignReq signReq = new SecuritySignReq(); - // data为要加密的报文字符串 - signReq.setData(msg.toString()); - // 为rsa私钥 - signReq.setPrikey(mkeyPair.getPriKey()); - // 调用签名方法 - SecuritySignResp sign = SecurityTools.sign(signReq); - // 打印出来加密数据 - // signData为签名数据 - // data为aes加密数据 - // asekey为ras加密过的aeskey - System.out.println(JSONObject.toJSON(sign)); - - // 验签解密部分 - SecurityReq req = new SecurityReq(); - //对方传过来的数据一一对应 - req.setAesKey(sign.getAesKey()); - req.setData(sign.getData()); - req.setSignData(sign.getSignData()); - //我们的公钥 - req.setPubKey(mkeyPair.getPubKey()); - //验签方法调用 - SecurityResp securityResp = SecurityTools.valid(req); - //解密报文data为解密报文 - //sucess 为验签成功失败标志 true代码验签成功,false代表失败 - System.out.println(JSONObject.toJSON(securityResp)); - } -}