针对智慧工地对公司框架进行优化

This commit is contained in:
15856 2025-01-02 09:19:40 +08:00
parent 2567d81ff4
commit 7f7d333fb5
9 changed files with 282 additions and 18 deletions

View File

@ -1,6 +1,7 @@
package com.bonus.system.api.domain; package com.bonus.system.api.domain;
import com.bonus.common.core.web.domain.BaseEntity; import com.bonus.common.core.web.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
@ -16,6 +17,7 @@ import java.util.List;
* *
* @author bonus * @author bonus
*/ */
@Data
public class SysDept extends BaseEntity { public class SysDept extends BaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -91,6 +93,56 @@ public class SysDept extends BaseEntity {
*/ */
private String address; private String address;
/**
* 公司简称
*/
private String deptAbbreviation;
/**
* 公司概述
*/
private String remark;
/**
* logo
*/
private String logo;
/**
*密码
*/
private String password;
/**
*姓名
*/
private String nickName;
/**
*账号
*/
private String userName;
/**
*手机号
*/
private String phonenumber;
/**
*角色名称
*/
private String roleName;
/**
*用户id
*/
private Long userId;
/**
*角色id
*/
private Long roleId;
public void setCity(String city) { public void setCity(String city) {
this.city = city; this.city = city;

View File

@ -55,6 +55,11 @@ public class SystemConfig {
*/ */
private String websocketurl; private String websocketurl;
/**
* 创建公司的同时是否同时创建用户和角色
*/
private boolean createUserAndRole;
@Data @Data
@RefreshScope @RefreshScope
public static class LoginConfig { public static class LoginConfig {

View File

@ -92,6 +92,17 @@ public class SecurityUtils
return userId != null && 1L == userId; return userId != null && 1L == userId;
} }
/**
* 解密
* @param password
* @return
*/
public static String decryptPassword(String password)
{
return Sm4Utils.decrypt(password);
}
/** /**
* 生成BCryptPasswordEncoder密码 * 生成BCryptPasswordEncoder密码
* *

View File

@ -1,7 +1,9 @@
package com.bonus.system.controller; package com.bonus.system.controller;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.bonus.common.core.web.page.TableDataInfo;
import com.bonus.common.log.annotation.SysLog; import com.bonus.common.log.annotation.SysLog;
import com.bonus.common.log.enums.OperaType; import com.bonus.common.log.enums.OperaType;
import com.bonus.common.security.annotation.InnerAuth; import com.bonus.common.security.annotation.InnerAuth;
@ -11,11 +13,9 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -34,7 +34,7 @@ import com.bonus.system.service.ISysDeptService;
* @author bonus * @author bonus
*/ */
@RestController @RestController
@RequestMapping("/dept") @RequestMapping("/dept")
@Slf4j @Slf4j
public class SysDeptController extends BaseController public class SysDeptController extends BaseController
{ {
@ -155,4 +155,19 @@ public class SysDeptController extends BaseController
} }
return error("系统异常"); return error("系统异常");
} }
@GetMapping("/deptList")
@SysLog(title = "运营人员获取公司列表", businessType = OperaType.QUERY,logType = 0,module = "系统管理->部门管理")
public TableDataInfo deptList(SysDept dept) {
List<SysDept> deptList = new ArrayList<>();
try{
startPage();
deptList = deptService.getDeptList(dept);
return getDataTable(deptList);
}catch (Exception e){
log.error(e.toString(),e);
}
return getDataTableError(deptList);
}
} }

View File

@ -1,6 +1,7 @@
package com.bonus.system.mapper; package com.bonus.system.mapper;
import java.util.List; import java.util.List;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.bonus.system.api.domain.SysDept; import com.bonus.system.api.domain.SysDept;
@ -123,4 +124,18 @@ public interface SysDeptMapper
* @return 结果 * @return 结果
*/ */
public int deleteDeptById(Long deptId); public int deleteDeptById(Long deptId);
/**
* 获取公司列表
* @param dept
* @return
*/
List<SysDept> getDeptList(SysDept dept);
/**
* 获取公司详情
* @param deptId
* @return
*/
SysDept selectDeptAndUserById(Long deptId);
} }

View File

@ -130,4 +130,11 @@ public interface ISysDeptService
* @return 结果 * @return 结果
*/ */
public int deleteDeptById(Long deptId); public int deleteDeptById(Long deptId);
/**
* 运营人员获取公司列表
* @param dept
* @return
*/
List<SysDept> getDeptList(SysDept dept);
} }

View File

@ -7,10 +7,13 @@ import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.bonus.common.core.web.domain.BaseEntity; import com.bonus.common.core.web.domain.BaseEntity;
import com.bonus.system.mapper.SysUserMapper; import com.bonus.config.SystemConfig;
import com.bonus.system.domain.SysRoleDept;
import com.bonus.system.domain.SysRoleMenu;
import com.bonus.system.mapper.*;
import com.bonus.common.datascope.utils.CommonDataPermissionInfo; import com.bonus.common.datascope.utils.CommonDataPermissionInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.bonus.common.core.constant.UserConstants; import com.bonus.common.core.constant.UserConstants;
import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.exception.ServiceException;
@ -23,9 +26,10 @@ import com.bonus.system.api.domain.SysDept;
import com.bonus.system.api.domain.SysRole; import com.bonus.system.api.domain.SysRole;
import com.bonus.system.api.domain.SysUser; import com.bonus.system.api.domain.SysUser;
import com.bonus.system.domain.vo.TreeSelect; import com.bonus.system.domain.vo.TreeSelect;
import com.bonus.system.mapper.SysDeptMapper;
import com.bonus.system.mapper.SysRoleMapper;
import com.bonus.system.service.ISysDeptService; import com.bonus.system.service.ISysDeptService;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/** /**
* 部门管理 服务实现 * 部门管理 服务实现
@ -33,16 +37,29 @@ import com.bonus.system.service.ISysDeptService;
* @author bonus * @author bonus
*/ */
@Service @Service
@Slf4j
public class SysDeptServiceImpl implements ISysDeptService public class SysDeptServiceImpl implements ISysDeptService
{ {
@Autowired @Resource
private SysDeptMapper deptMapper; private SysDeptMapper deptMapper;
@Autowired @Resource
private SysUserMapper userMapper; private SysUserMapper userMapper;
@Autowired @Resource
private SysRoleMapper roleMapper; private SysRoleMapper roleMapper;
@Resource
private SysRoleMenuMapper roleMenuMapper;
@Resource
private SysRoleDeptMapper roleDeptMapper;
@Resource
private SystemConfig systemConfig;
@Resource
private SysUserServiceImpl sysUserServiceImpl;
/** /**
* 查询部门管理数据 * 查询部门管理数据
@ -170,7 +187,14 @@ public class SysDeptServiceImpl implements ISysDeptService
@Override @Override
public SysDept selectDeptById(Long deptId) public SysDept selectDeptById(Long deptId)
{ {
return deptMapper.selectDeptById(deptId); SysDept sysDept = deptMapper.selectDeptById(deptId);
if (systemConfig.isCreateUserAndRole() && sysDept.getParentId()==0L){
sysDept = deptMapper.selectDeptAndUserById(deptId);
if (sysDept.getPassword()!=null){
sysDept.setPassword(SecurityUtils.decryptPassword(sysDept.getPassword()));
}
}
return sysDept;
} }
/** /**
@ -259,22 +283,94 @@ public class SysDeptServiceImpl implements ISysDeptService
* @return 结果 * @return 结果
*/ */
@Override @Override
@Transactional
public int insertDept(SysDept dept) public int insertDept(SysDept dept)
{ {
//增加根公司的处理 //增加根公司的处理
if (dept.getParentId() == null){ if (dept.getParentId() == null){
dept.setParentId(0L); dept.setParentId(0L);
dept.setAncestors("0"); dept.setAncestors("0");
} //创建公司
else { deptMapper.insertDept(dept);
//创建公司时判断是否开通注册用户和角色
if (systemConfig.isCreateUserAndRole()) {
//创建一个用户信息
SysUser user = createUser(dept);
//创建一个系统管理员账号
createRole(dept.getDeptId(),user);
}
return 1;
}else {
SysDept info = deptMapper.selectDeptById(dept.getParentId()); SysDept info = deptMapper.selectDeptById(dept.getParentId());
// 如果父节点不为正常状态,则不允许新增子节点 // 如果父节点不为正常状态,则不允许新增子节点
if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) { if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) {
throw new ServiceException("部门停用,不允许新增"); throw new ServiceException("部门停用,不允许新增");
} }
dept.setAncestors(info.getAncestors() + "," + dept.getParentId()); dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
return deptMapper.insertDept(dept);
} }
return deptMapper.insertDept(dept);
}
/**
* 创建公司管理员
*/
private void createRole(Long deptId,SysUser user) {
SysRole role = new SysRole();
role.setRoleKey("admin");
role.setRoleName("系统管理员");
role.setRoleSort(0);
role.setStatus("0");
role.setCreateBy(SecurityUtils.getUsername());
roleMapper.insertRole(role);
log.info("创建的角色id为{}",role.getRoleId());
//绑定管理员角色和公司关系
List<SysRoleDept> roleDeptList = new ArrayList<>();
SysRoleDept rd = new SysRoleDept();
rd.setRoleId(Long.valueOf(role.getRoleId()));
rd.setDeptId(deptId);
roleDeptList.add(rd);
roleDeptMapper.batchRoleDept(roleDeptList);
//用户绑定角色
Long[] roleIds = {role.getRoleId()};
sysUserServiceImpl.insertUserRole(user.getUserId(),roleIds);
List<SysRoleMenu> list = new ArrayList<>();
//对初始化管理员赋值菜单权限
SysRoleMenu rm1 = new SysRoleMenu();
rm1.setRoleId(Long.valueOf(role.getRoleId()));
rm1.setMenuId(100L);
list.add(rm1);
SysRoleMenu rm2 = new SysRoleMenu();
rm2.setRoleId(Long.valueOf(role.getRoleId()));
rm2.setMenuId(101L);
list.add(rm2);
SysRoleMenu rm3 = new SysRoleMenu();
rm3.setRoleId(Long.valueOf(role.getRoleId()));
rm3.setMenuId(103L);
list.add(rm3);
SysRoleMenu rm4 = new SysRoleMenu();
rm4.setRoleId(Long.valueOf(role.getRoleId()));
rm4.setMenuId(104L);
list.add(rm4);
roleMenuMapper.batchRoleMenu(list);
}
/**
* 创建用户
* @param dept
*/
private SysUser createUser(SysDept dept) {
log.info("创建用户:{}",dept);
SysUser user = new SysUser();
user.setCreateBy(SecurityUtils.getUsername());
user.setPassword(SecurityUtils.encryptPassword(dept.getPassword()));
user.setNickName(dept.getNickName());
user.setUserName(dept.getUserName());
user.setPhonenumber(dept.getPhonenumber());
user.setDeptId(dept.getDeptId());
userMapper.insertUser(user);
return user;
} }
/** /**
@ -302,9 +398,36 @@ public class SysDeptServiceImpl implements ISysDeptService
// 如果该部门是启用状态则启用该部门的所有上级部门 // 如果该部门是启用状态则启用该部门的所有上级部门
updateParentDeptStatusNormal(dept); updateParentDeptStatusNormal(dept);
} }
//判断是否是修改公司信息并判断是否关联用户信息
if (systemConfig.isCreateUserAndRole() && dept.getDeptId()==0L){
updateUserAndRole(dept);
}
return result; return result;
} }
/**
* 修改用户和角色信息
* @param dept
*/
private void updateUserAndRole(SysDept dept) {
SysUser user = new SysUser();
user.setUpdateBy(SecurityUtils.getUsername());
user.setPassword(SecurityUtils.encryptPassword(dept.getPassword()));
user.setNickName(dept.getNickName());
user.setUserName(dept.getUserName());
user.setPhonenumber(dept.getPhonenumber());
user.setDeptId(dept.getDeptId());
SysRole role = new SysRole();
role.setRoleName(dept.getRoleName());
role.setUpdateBy(SecurityUtils.getUsername());
dept = deptMapper.selectDeptAndUserById(dept.getDeptId());
role.setRoleId(dept.getRoleId());
user.setUserId(dept.getUserId());
userMapper.updateUser(user);
roleMapper.updateRole(role);
}
/** /**
* 修改该部门的父级部门状态 * 修改该部门的父级部门状态
* *
@ -349,6 +472,18 @@ public class SysDeptServiceImpl implements ISysDeptService
return deptMapper.deleteDeptById(deptId); return deptMapper.deleteDeptById(deptId);
} }
/**
* 获取公司列表
* @param dept
* @return
*/
@Override
public List<SysDept> getDeptList(SysDept dept) {
return deptMapper.getDeptList(dept);
}
/** /**
* 递归列表 * 递归列表
*/ */

View File

@ -254,6 +254,13 @@ public class SysRoleServiceImpl implements ISysRoleService
{ {
// 新增角色信息 // 新增角色信息
roleMapper.insertRole(role); roleMapper.insertRole(role);
//新增角色和部门的关系
List<SysRoleDept> roleDeptList = new ArrayList<>();
SysRoleDept rd = new SysRoleDept();
rd.setRoleId(role.getRoleId());
rd.setDeptId(role.getDeptIds()[0]);
roleDeptList.add(rd);
roleDeptMapper.batchRoleDept(roleDeptList);
return insertRoleMenu(role); return insertRoleMenu(role);
} }

View File

@ -24,8 +24,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="city" column="city" /> <result property="city" column="city" />
<result property="district" column="district" /> <result property="district" column="district" />
<result property="address" column="address" /> <result property="address" column="address" />
<result property="deptAbbreviation" column="dept_abbreviation" />
</resultMap> <result property="remark" column="remark" />
<result property="logo" column="logo" />
</resultMap>logo
<sql id="selectDeptVo"> <sql id="selectDeptVo">
select d.dept_id, select d.dept_id,
@ -43,7 +45,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
d.province, d.province,
d.city, d.city,
d.district, d.district,
d.address d.address,
d.deptAbbreviation,
d.remark,
d.logo
from sys_dept d from sys_dept d
</sql> </sql>
@ -140,8 +145,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectDeptVo"/> <include refid="selectDeptVo"/>
where dept_name=#{deptName} and parent_id = #{parentId} and del_flag = '0' limit 1 where dept_name=#{deptName} and parent_id = #{parentId} and del_flag = '0' limit 1
</select> </select>
<select id="getDeptList" resultType="com.bonus.system.api.domain.SysDept">
select * from sys_dept where parent_id='0'
</select>
<select id="selectDeptAndUserById" resultType="com.bonus.system.api.domain.SysDept">
<insert id="insertDept" parameterType="com.bonus.system.api.domain.SysDept"> select sd.*,su.nick_name as nickName,su.user_name as userName,su.password as password,
sr.role_name as roleName,su.user_id as userId,sr.role_id as roleId from sys_dept sd
left join sys_role_dept srd on sd.dept_id = srd.dept_id
left join sys_role sr on srd.role_id = sr.role_id and role_key = 'admin'
left join sys_user_role sur on sur.role_id = sr.role_id
left join sys_user su on su.user_id = sur.user_id
where dept_id = #{deptId}
</select>
<insert id="insertDept" parameterType="com.bonus.system.api.domain.SysDept" useGeneratedKeys="true" keyProperty="deptId">
insert into sys_dept( insert into sys_dept(
<if test="deptId != null and deptId != 0">dept_id,</if> <if test="deptId != null and deptId != 0">dept_id,</if>
<if test="parentId != null and parentId != 0">parent_id,</if> <if test="parentId != null and parentId != 0">parent_id,</if>