后端升级到2.4.3版本

This commit is contained in:
zer0Black
2022-02-24 12:59:12 +08:00
parent 995465984c
commit a9643ed428
129 changed files with 4169 additions and 5689 deletions
@@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -485,7 +486,7 @@ public class SystemAPIController {
/**
* 37根据多个用户id(逗号分隔),查询返回多个用户信息
* @param usernames
* @param ids
* @return
*/
@GetMapping("/queryUsersByIds")
@@ -545,7 +546,13 @@ public class SystemAPIController {
return sysDepartService.listSonDepartsByDepId(departId);
}
/**
* 41 获取公司下级部门和公司下所有用户信息
* @param orgCode
*/
@GetMapping("/getDeptUserByOrgCode")
List<Map> getDeptUserByOrgCode(@RequestParam("orgCode")String orgCode){
return this.sysBaseAPI.getDeptUserByOrgCode(orgCode);
}
}
@@ -59,6 +59,7 @@ public class SendMsgJob implements Job {
// 发送消息成功
sysMessage.setEsSendStatus(SendMsgStatusEnum.SUCCESS.getCode());
} catch (Exception e) {
e.printStackTrace();
// 发送消息出现异常
sysMessage.setEsSendStatus(SendMsgStatusEnum.FAIL.getCode());
}
@@ -1,14 +1,17 @@
package com.jero.modules.message.websocket;
import cn.hutool.core.util.ObjectUtil;
import com.jero.boot.starter.redis.listener.JeroRedisListerer;
import com.jero.common.constant.CommonSendStatus;
import com.jero.common.modules.redis.listener.JeroRedisListerer;
import com.jero.common.base.BaseMap;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 监听消息(采用redis发布订阅方式发送消息)
*/
@Slf4j
@Component
public class SocketHandler implements JeroRedisListerer {
@@ -17,10 +20,14 @@ public class SocketHandler implements JeroRedisListerer {
@Override
public void onMessage(BaseMap map) {
log.info("【SocketHandler消息】Redis Listerer:" + map.toString());
String userId = map.get("userId");
String message = map.get("message");
if (ObjectUtil.isNotEmpty(userId)) {
webSocket.pushMessage(userId, message);
//app端消息推送
webSocket.pushMessage(userId + CommonSendStatus.APP_SESSION_SUFFIX, message);
} else {
webSocket.pushMessage(message);
}
@@ -12,7 +12,7 @@ import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import com.jero.boot.starter.redis.client.JeroRedisClient;
import com.jero.common.modules.redis.client.JeroRedisClient;
import com.jero.common.base.BaseMap;
import com.jero.common.constant.WebsocketConst;
import org.springframework.stereotype.Component;
@@ -40,6 +40,9 @@ public class WebSocket {
@Resource
private JeroRedisClient jeroRedisClient;
/**
* 缓存 webSocket连接到单机服务class中(整体方案支持集群)
*/
private static CopyOnWriteArraySet<WebSocket> webSockets = new CopyOnWriteArraySet<>();
private static Map<String, Session> sessionPool = new HashMap<String, Session>();
@@ -102,8 +105,10 @@ public class WebSocket {
//todo 现在有个定时任务刷,应该去掉
log.debug("【websocket消息】收到客户端消息:" + message);
JSONObject obj = new JSONObject();
obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_CHECK);//业务类型
obj.put(WebsocketConst.MSG_TXT, "心跳响应");//消息内容
//业务类型
obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_CHECK);
//消息内容
obj.put(WebsocketConst.MSG_TXT, "心跳响应");
for (WebSocket webSocket : webSockets) {
webSocket.pushMessage(message);
}
@@ -1,8 +1,7 @@
package com.jero.modules.system.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import com.jero.common.api.vo.Result;
import com.jero.common.util.SqlInjectionUtil;
@@ -13,7 +12,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
/**
* @Title: DuplicateCheckAction
@@ -29,11 +30,11 @@ import javax.servlet.http.HttpServletRequest;
public class DuplicateCheckController {
@Autowired
SysDictMapper sysDictMapper;
SysDictMapper sysDictMapper;
/**
* 校验数据是否在系统中是否存在
*
*
* @return
*/
@RequestMapping(value = "/check", method = RequestMethod.GET)
@@ -56,7 +57,7 @@ public class DuplicateCheckController {
if (num == null || num == 0) {
// 该值可用
return Result.OK("该值可用!");
return Result.ok("该值可用!");
} else {
// 该值不可用
log.info("该值不可用,系统中已存在!");
@@ -112,6 +112,25 @@ public class SysDepartController {
return result;
}
/**
* 异步查询部门list
*
* @return
*/
@RequestMapping(value = "/queryDepartTreeSync", method = RequestMethod.GET)
public Result<List<SysDepartTreeModel>> queryDepartTreeSync(@RequestParam(name = "pid", required = false) String parentId) {
Result<List<SysDepartTreeModel>> result = new Result<>();
try {
List<SysDepartTreeModel> list = sysDepartService.queryTreeListByPid(parentId);
result.setResult(list);
result.setSuccess(true);
} catch (Exception e) {
log.error(e.getMessage(),e);
}
return result;
}
/**
* 添加新数据 添加用户新建的部门对象数据,并保存到数据库
*
@@ -325,7 +325,6 @@ public class SysDictController {
* @return
*/
@ApiOperation(value = "字典控制器-新增字典", notes = "字典控制器-新增字典")
@RequiresRoles({"admin"})
@RequestMapping(value = "/add", method = RequestMethod.POST)
public Result<SysDict> add(@RequestBody SysDict sysDict) {
Result<SysDict> result = new Result<SysDict>();
@@ -349,7 +348,6 @@ public class SysDictController {
* @return
*/
@ApiOperation(value = "字典控制器-编辑字典", notes = "字典控制器-编辑字典")
@RequiresRoles({"admin"})
@RequestMapping(value = "/edit", method = RequestMethod.PUT)
public Result<SysDict> edit(@RequestBody SysDict sysDict) {
Result<SysDict> result = new Result<SysDict>();
@@ -374,7 +372,6 @@ public class SysDictController {
* @return
*/
@ApiOperation(value = "字典控制器-删除字典", notes = "字典控制器-删除字典")
@RequiresRoles({"admin"})
@DeleteMapping(value = "/delete")
@CacheEvict(value=CacheConstant.SYS_DICT_CACHE, allEntries=true)
public Result<SysDict> delete(@RequestParam(name="id",required=true) String id) {
@@ -454,14 +451,7 @@ public class SysDictController {
return mv;
}
/**
* 通过excel导入数据
*
* @param request
* @param
* @return
*/
@RequiresRoles({"admin"})
@PostMapping(value = "/importExcel")
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
@@ -15,7 +15,6 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.authz.annotation.RequiresRoles;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.PermissionData;
import com.jero.common.constant.CommonConstant;
@@ -133,7 +132,6 @@ public class SysUserController {
return result;
}
//@RequiresRoles({"admin"})
@RequiresPermissions("user:add")
@RequestMapping(value = "/add", method = RequestMethod.POST)
public Result<SysUser> add(@RequestBody JSONObject jsonObject) {
@@ -179,7 +177,6 @@ public class SysUserController {
return result;
}
//@RequiresRoles({"admin"})
@RequiresPermissions("user:edit")
@RequestMapping(value = "/edit", method = RequestMethod.PUT)
public Result<SysUser> edit(@RequestBody JSONObject jsonObject) {
@@ -224,10 +221,7 @@ public class SysUserController {
return result;
}
/**
* 删除用户
*/
//@RequiresRoles({"admin"})
@RequiresPermissions("sys:user:del")
@RequestMapping(value = "/delete", method = RequestMethod.DELETE)
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
@@ -236,10 +230,7 @@ public class SysUserController {
return Result.OK("删除用户成功");
}
/**
* 批量删除用户
*/
//@RequiresRoles({"admin"})
@RequiresPermissions("sys:user:del")
@RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE)
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
@@ -248,12 +239,7 @@ public class SysUserController {
return Result.OK("批量删除用户成功");
}
/**
* 冻结&解冻用户
* @param jsonObject
* @return
*/
//@RequiresRoles({"admin"})
@RequiresPermissions("sys:user:list")
@RequestMapping(value = "/frozenBatch", method = RequestMethod.PUT)
public Result<SysUser> frozenBatch(@RequestBody JSONObject jsonObject) {
@@ -339,10 +325,7 @@ public class SysUserController {
return result;
}
/**
* 修改密码
*/
//@RequiresRoles({"admin"})
@RequiresPermissions("user:edit")
@RequestMapping(value = "/changePassword", method = RequestMethod.PUT)
public Result<?> changePassword(@RequestBody SysUser sysUser) {
@@ -476,7 +459,6 @@ public class SysUserController {
* @param response
* @return
*/
//@RequiresRoles({"admin"})
@RequiresPermissions("sys:user:import")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response)throws IOException {
@@ -572,7 +554,6 @@ public class SysUserController {
/**
* 首页用户重置密码
*/
//@RequiresRoles({"admin"})
@RequestMapping(value = "/updatePassword", method = RequestMethod.PUT)
public Result<?> changPassword(@RequestBody JSONObject json) {
String username = json.getString("username");
@@ -614,7 +595,6 @@ public class SysUserController {
* @param
* @return
*/
//@RequiresRoles({"admin"})
@RequiresPermissions("user:add")
@RequestMapping(value = "/addSysUserRole", method = RequestMethod.POST)
public Result<String> addSysUserRole(@RequestBody SysUserRoleVO sysUserRoleVO) {
@@ -646,7 +626,6 @@ public class SysUserController {
* @param
* @return
*/
//@RequiresRoles({"admin"})
@RequiresPermissions("sys:user:del")
@RequestMapping(value = "/deleteUserRole", method = RequestMethod.DELETE)
public Result<SysUserRole> deleteUserRole(@RequestParam(name="roleId") String roleId,
@@ -671,7 +650,6 @@ public class SysUserController {
* @param
* @return
*/
//@RequiresRoles({"admin"})
@RequiresPermissions("sys:user:del")
@RequestMapping(value = "/deleteUserRoleBatch", method = RequestMethod.DELETE)
public Result<SysUserRole> deleteUserRoleBatch(
@@ -755,7 +733,6 @@ public class SysUserController {
/**
* 给指定部门添加对应的用户
*/
//@RequiresRoles({"admin"})
@RequiresPermissions("user:add")
@RequestMapping(value = "/editSysDepartWithUser", method = RequestMethod.POST)
public Result<String> editSysDepartWithUser(@RequestBody SysDepartUsersVO sysDepartUsersVO) {
@@ -785,7 +762,6 @@ public class SysUserController {
/**
* 删除指定机构的用户关系
*/
//@RequiresRoles({"admin"})
@RequiresPermissions("sys:user:del")
@RequestMapping(value = "/deleteUserInDepart", method = RequestMethod.DELETE)
public Result<SysUserDepart> deleteUserInDepart(@RequestParam(name="depId") String depId,
@@ -818,7 +794,6 @@ public class SysUserController {
/**
* 批量删除指定机构的用户关系
*/
//@RequiresRoles({"admin"})
@RequiresPermissions("sys:user:del")
@RequestMapping(value = "/deleteUserInDepartBatch", method = RequestMethod.DELETE)
public Result<SysUserDepart> deleteUserInDepartBatch(
@@ -1174,7 +1149,6 @@ public class SysUserController {
* @param userIds 被删除的用户ID,多个id用半角逗号分割
* @return
*/
//@RequiresRoles({"admin"})
@RequiresPermissions("sys:user:del")
@RequestMapping(value = "/deleteRecycleBin", method = RequestMethod.DELETE)
public Result deleteRecycleBin(@RequestParam("userIds") String userIds) {
@@ -50,4 +50,25 @@ public interface SysDepartMapper extends BaseMapper<SysDepart> {
*/
List<String> getSubDepIdsByOrgCodes(@org.apache.ibatis.annotations.Param("orgCodes") String[] orgCodes);
List<SysDepart> queryTreeListByPid(@Param("parentId") String parentId);
/**
* 根据id下级部门数量
* @param parentId
* @return
*/
@Select("SELECT count(*) FROM sys_depart where del_flag ='0' AND parent_id = #{parentId,jdbcType=VARCHAR}")
Integer queryCountByPid(@Param("parentId")String parentId);
/**
* 根据OrgCod查询所属公司信息
* @param orgCode
* @return
*/
SysDepart queryCompByOrgCode(@Param("orgCode")String orgCode);
/**
* 根据id下级部门
* @param parentId
* @return
*/
@Select("SELECT * FROM sys_depart where del_flag ='0' AND parent_id = #{parentId,jdbcType=VARCHAR}")
List<SysDepart> queryDeptByPid(@Param("parentId")String parentId);
}
@@ -34,4 +34,22 @@
</foreach>
</select>
<!--根据parent_id查询下级部门-->
<select id="queryTreeListByPid" parameterType="Object" resultType="org.jeecg.modules.system.entity.SysDepart">
SELECT * FROM sys_depart where del_flag = '0'
<choose>
<when test="parentId != null and parentId != ''">
AND parent_id = #{parentId,jdbcType=VARCHAR}
</when>
<otherwise>
AND parent_id is null or parent_id=''
</otherwise>
</choose>
order by depart_order
</select>
<!-- 根据OrgCod查询公司信息 -->
<select id="queryCompByOrgCode" resultType="org.jeecg.modules.system.entity.SysDepart">
select * from sys_depart where del_flag = '0' and org_category='1' and org_code= #{orgCode,jdbcType=VARCHAR}
</select>
</mapper>
@@ -123,4 +123,20 @@ public interface ISysDepartService extends IService<SysDepart>{
* @param departId 部门id
*/
List<SysDepartTreeModel> listSonDepartsByDepId(String departId);
/**
* 获取我的部门下级所有部门
* @return
*/
List<SysDepartTreeModel> queryTreeListByPid(String parentId);
/**
* 获取公司信息
* @return
*/
SysDepart queryCompByOrgCode(String orgCode);
/**
* 获取下级部门
* @return
*/
List<SysDepart> queryDeptByPid(String pid);
}
@@ -134,6 +134,9 @@ public class LoginServiceImpl implements ILoginService {
//用户登录信息
userInfo(sysUser, result);
//update-begin--Author:liusq Date:20210126 for:登录成功,删除redis中的验证码
redisUtil.del(realKey);
//update-begin--Author:liusq Date:20210126 for:登录成功,删除redis中的验证码
//update-begin--Author:wangshuai Date:20200714 for:登录日志没有记录人员
LoginUser loginUser = new LoginUser();
BeanUtils.copyProperties(sysUser, loginUser);
@@ -1015,4 +1015,43 @@ public class SysBaseApiImpl implements ISysBaseAPI {
public List<SysDepartTreeModel> listSonDepartsByDepId(String departId) {
return sysDepartService.listSonDepartsByDepId(departId);
}
/**
* 获取公司下级部门和所有用户id信息
* @param orgCode
* @return
*/
@Override
public List<Map> getDeptUserByOrgCode(String orgCode) {
//1.获取公司信息
SysDepart comp=sysDepartService.queryCompByOrgCode(orgCode);
if(comp!=null){
//2.获取公司下级部门
List<SysDepart> departs=sysDepartService.queryDeptByPid(comp.getId());
//3.获取部门下的人员信息
List<Map> list=new ArrayList();
//4.处理部门和下级用户数据
for (SysDepart dept:departs) {
Map map=new HashMap();
//部门名称
String departName = dept.getDepartName();
//根据部门编码获取下级部门id
List<String> listIds = departMapper.getSubDepIdsByDepId(dept.getId());
//根据下级部门ids获取下级部门的所有用户
List<SysUserDepart> userList = sysUserDepartService.list(new QueryWrapper<SysUserDepart>().in("dep_id",listIds));
List<String> userIds = new ArrayList<>();
for(SysUserDepart userDepart : userList){
if(!userIds.contains(userDepart.getUserId())){
userIds.add(userDepart.getUserId());
}
}
map.put("name",departName);
map.put("ids",userIds);
list.add(map);
}
return list;
}
return null;
}
}
@@ -457,6 +457,49 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart
return treelist;
}
/**
* 根据parentId查询部门树
* @param parentId
* @return
*/
@Override
public List<SysDepartTreeModel> queryTreeListByPid(String parentId) {
List<SysDepart> list = this.baseMapper.queryTreeListByPid(parentId);
List<SysDepartTreeModel> records = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
SysDepart depart = list.get(i);
SysDepartTreeModel treeModel = new SysDepartTreeModel();
FindsDepartsChildrenUtil.convertSysDepartToSysDepartTreeModel(depart, treeModel);
//TODO 异步树加载key拼接__+时间戳,以便于每次展开节点会刷新数据
treeModel.setKey(treeModel.getKey()+"__"+System.currentTimeMillis());
Integer count=this.baseMapper.queryCountByPid(depart.getId());
if(count>0){
treeModel.setIsLeaf(false);
}else{
treeModel.setIsLeaf(true);
}
records.add(treeModel);
}
return records;
}
@Override
public SysDepart queryCompByOrgCode(String orgCode) {
int length = YouBianCodeUtil.zhanweiLength;
String compyOrgCode = orgCode.substring(0,length);
return this.baseMapper.queryCompByOrgCode(compyOrgCode);
}
/**
* 根据id查询下级部门
* @param pid
* @return
*/
@Override
public List<SysDepart> queryDeptByPid(String pid) {
return this.baseMapper.queryDeptByPid(pid);
}
/**
* 根据关键字筛选部门信息
* @param keyWord
@@ -1,12 +1,9 @@
package com.jero.modules.system.util;
import com.jero.common.constant.CommonConstant;
import com.jero.common.system.vo.SysDepartTreeModel;
import com.jero.common.util.RedisUtil;
import com.jero.common.util.oConvertUtils;
import com.jero.modules.system.entity.SysDepart;
import com.jero.modules.system.model.DepartIdModel;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.List;
@@ -21,13 +18,6 @@ import java.util.List;
*/
public class FindsDepartsChildrenUtil {
//部门树信息-树结构
//private static List<SysDepartTreeModel> sysDepartTreeList = new ArrayList<SysDepartTreeModel>();
//部门树id-树结构
//private static List<DepartIdModel> idList = new ArrayList<>();
/**
* queryTreeList的子方法 ====1=====
* 该方法是s将SysDepart类型的list集合转换成SysDepartTreeModel类型的集合