Commit 44885cab by fengshuonan

新增修改用户增加职位

parent 5c794401
......@@ -5,6 +5,7 @@ import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.sys.modular.system.entity.Position;
import cn.stylefeng.guns.sys.modular.system.model.params.PositionParam;
import cn.stylefeng.guns.sys.modular.system.service.PositionService;
import cn.stylefeng.guns.sys.modular.system.service.UserPosService;
import cn.stylefeng.roses.core.base.controller.BaseController;
import cn.stylefeng.roses.core.reqres.response.ResponseData;
import cn.stylefeng.roses.core.reqres.response.SuccessResponseData;
......@@ -32,6 +33,9 @@ public class PositionController extends BaseController {
@Autowired
private PositionService positionService;
@Autowired
private UserPosService userPosService;
/**
* 跳转到主页面
*
......@@ -163,6 +167,19 @@ public class PositionController extends BaseController {
return new SuccessResponseData();
}
/**
* 查询所有职位
*
* @author stylefeng
* @Date 2019-03-13
*/
@ResponseBody
@RequestMapping("/listPositions")
public LayuiPageInfo listlistPositionsTypes(@RequestParam(value = "userId", required = false) Long userId) {
return this.positionService.listPositions(userId);
}
}
......@@ -21,7 +21,7 @@ public class Position implements Serializable {
/**
* 主键id
*/
@TableId(value = "position_id", type = IdType.AUTO)
@TableId(value = "position_id", type = IdType.ID_WORKER)
private Long positionId;
/**
......
package cn.stylefeng.guns.sys.modular.system.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
/**
* <p>
* 用户职位关联表
* </p>
*
* @author stylefeng
* @since 2019-06-28
*/
@TableName("sys_user_pos")
public class UserPos implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@TableId(value = "user_pos_id", type = IdType.ID_WORKER)
private Long userPosId;
/**
* 用户id
*/
@TableField("user_id")
private Long userId;
/**
* 职位id
*/
@TableField("pos_id")
private Long posId;
public Long getUserPosId() {
return userPosId;
}
public void setUserPosId(Long userPosId) {
this.userPosId = userPosId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getPosId() {
return posId;
}
public void setPosId(Long posId) {
this.posId = posId;
}
@Override
public String toString() {
return "UserPos{" +
"userPosId=" + userPosId +
", userId=" + userId +
", posId=" + posId +
"}";
}
}
package cn.stylefeng.guns.sys.modular.system.mapper;
import cn.stylefeng.guns.sys.modular.system.entity.UserPos;
import cn.stylefeng.guns.sys.modular.system.model.params.UserPosParam;
import cn.stylefeng.guns.sys.modular.system.model.result.UserPosResult;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* <p>
* 用户职位关联表 Mapper 接口
* </p>
*
* @author stylefeng
* @since 2019-06-28
*/
public interface UserPosMapper extends BaseMapper<UserPos> {
/**
* 获取列表
*
* @author stylefeng
* @Date 2019-06-28
*/
List<UserPosResult> customList(@Param("paramCondition") UserPosParam paramCondition);
/**
* 获取map列表
*
* @author stylefeng
* @Date 2019-06-28
*/
List<Map<String, Object>> customMapList(@Param("paramCondition") UserPosParam paramCondition);
/**
* 获取分页实体列表
*
* @author stylefeng
* @Date 2019-06-28
*/
Page<UserPosResult> customPageList(@Param("page") Page page, @Param("paramCondition") UserPosParam paramCondition);
/**
* 获取分页map列表
*
* @author stylefeng
* @Date 2019-06-28
*/
Page<Map<String, Object>> customPageMapList(@Param("page") Page page, @Param("paramCondition") UserPosParam paramCondition);
}
<?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="cn.stylefeng.guns.sys.modular.system.mapper.UserPosMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="cn.stylefeng.guns.sys.modular.system.entity.UserPos">
<id column="user_pos_id" property="userPosId" />
<result column="user_id" property="userId" />
<result column="pos_id" property="posId" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
user_pos_id AS "userPosId", user_id AS "userId", pos_id AS "posId"
</sql>
<select id="customList" resultType="cn.stylefeng.guns.sys.modular.system.model.result.UserPosResult" parameterType="cn.stylefeng.guns.sys.modular.system.model.params.UserPosParam">
select
<include refid="Base_Column_List"/>
from sys_user_pos where 1 = 1
</select>
<select id="customMapList" resultType="map" parameterType="cn.stylefeng.guns.sys.modular.system.model.params.UserPosParam">
select
<include refid="Base_Column_List"/>
from sys_user_pos where 1 = 1
</select>
<select id="customPageList" resultType="cn.stylefeng.guns.sys.modular.system.model.result.UserPosResult" parameterType="cn.stylefeng.guns.sys.modular.system.model.params.UserPosParam">
select
<include refid="Base_Column_List"/>
from sys_user_pos where 1 = 1
</select>
<select id="customPageMapList" resultType="map" parameterType="cn.stylefeng.guns.sys.modular.system.model.params.UserPosParam">
select
<include refid="Base_Column_List"/>
from sys_user_pos where 1 = 1
</select>
</mapper>
......@@ -44,4 +44,6 @@ public class UserDto {
private String status;
private String avatar;
private String position;
}
package cn.stylefeng.guns.sys.modular.system.model.params;
import cn.stylefeng.roses.kernel.model.validator.BaseValidatingParam;
import lombok.Data;
import java.io.Serializable;
/**
* <p>
* 用户职位关联表
* </p>
*
* @author stylefeng
* @since 2019-06-28
*/
@Data
public class UserPosParam implements Serializable, BaseValidatingParam {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
private Long userPosId;
/**
* 用户id
*/
private Long userId;
/**
* 职位id
*/
private Long posId;
@Override
public String checkParam() {
return null;
}
}
package cn.stylefeng.guns.sys.modular.system.model.result;
import lombok.Data;
import java.io.Serializable;
/**
* <p>
* 用户职位关联表
* </p>
*
* @author stylefeng
* @since 2019-06-28
*/
@Data
public class UserPosResult implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
private Long userPosId;
/**
* 用户id
*/
private Long userId;
/**
* 职位id
*/
private Long posId;
}
......@@ -66,4 +66,12 @@ public interface PositionService extends IService<Position> {
*/
LayuiPageInfo findPageBySpec(PositionParam param);
/**
* 获取多选框的职位列表
*
* @author stylefeng
* @Date 2019-06-27
*/
LayuiPageInfo listPositions(Long userId);
}
package cn.stylefeng.guns.sys.modular.system.service;
import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.sys.modular.system.entity.UserPos;
import cn.stylefeng.guns.sys.modular.system.model.params.UserPosParam;
import cn.stylefeng.guns.sys.modular.system.model.result.UserPosResult;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 用户职位关联表 服务类
* </p>
*
* @author stylefeng
* @since 2019-06-28
*/
public interface UserPosService extends IService<UserPos> {
/**
* 新增
*
* @author stylefeng
* @Date 2019-06-28
*/
void add(UserPosParam param);
/**
* 删除
*
* @author stylefeng
* @Date 2019-06-28
*/
void delete(UserPosParam param);
/**
* 更新
*
* @author stylefeng
* @Date 2019-06-28
*/
void update(UserPosParam param);
/**
* 查询单条数据,Specification模式
*
* @author stylefeng
* @Date 2019-06-28
*/
UserPosResult findBySpec(UserPosParam param);
/**
* 查询列表,Specification模式
*
* @author stylefeng
* @Date 2019-06-28
*/
List<UserPosResult> findListBySpec(UserPosParam param);
/**
* 查询分页数据,Specification模式
*
* @author stylefeng
* @Date 2019-06-28
*/
LayuiPageInfo findPageBySpec(UserPosParam param);
}
......@@ -12,11 +12,14 @@ import cn.stylefeng.guns.sys.core.exception.enums.BizExceptionEnum;
import cn.stylefeng.guns.sys.core.shiro.ShiroKit;
import cn.stylefeng.guns.sys.core.shiro.service.UserAuthService;
import cn.stylefeng.guns.sys.modular.system.entity.User;
import cn.stylefeng.guns.sys.modular.system.entity.UserPos;
import cn.stylefeng.guns.sys.modular.system.factory.UserFactory;
import cn.stylefeng.guns.sys.modular.system.mapper.UserMapper;
import cn.stylefeng.guns.sys.modular.system.model.UserDto;
import cn.stylefeng.roses.core.datascope.DataScope;
import cn.stylefeng.roses.core.util.ToolUtil;
import cn.stylefeng.roses.kernel.model.exception.ServiceException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.toolkit.SqlRunner;
......@@ -46,12 +49,16 @@ public class UserService extends ServiceImpl<UserMapper, User> {
@Autowired
private UserAuthService userAuthService;
@Autowired
private UserPosService userPosService;
/**
* 添加用戶
*
* @author fengshuonan
* @Date 2018/12/24 22:51
*/
@Transactional(rollbackFor = Exception.class)
public void addUser(UserDto user) {
// 判断账号是否重复
......@@ -64,7 +71,11 @@ public class UserService extends ServiceImpl<UserMapper, User> {
String salt = ShiroKit.getRandomSalt(5);
String password = ShiroKit.md5(user.getPassword(), salt);
this.save(UserFactory.createUser(user, password, salt));
User newUser = UserFactory.createUser(user, password, salt);
this.save(newUser);
//添加职位关联
addPosition(user.getPosition(), newUser.getUserId());
}
/**
......@@ -73,6 +84,7 @@ public class UserService extends ServiceImpl<UserMapper, User> {
* @author fengshuonan
* @Date 2018/12/24 22:53
*/
@Transactional(rollbackFor = Exception.class)
public void editUser(UserDto user) {
User oldUser = this.getById(user.getUserId());
......@@ -87,6 +99,12 @@ public class UserService extends ServiceImpl<UserMapper, User> {
throw new ServiceException(BizExceptionEnum.NO_PERMITION);
}
}
//删除职位关联
userPosService.remove(new QueryWrapper<UserPos>().eq("user_id", user.getUserId()));
//添加职位关联
addPosition(user.getPosition(), user.getUserId());
}
/**
......@@ -107,6 +125,9 @@ public class UserService extends ServiceImpl<UserMapper, User> {
//删除对应的oauth2绑定表
SqlRunner.db().delete("delete from oauth_user_info where user_id = {0}", userId);
//删除职位关联
userPosService.remove(new QueryWrapper<UserPos>().eq("user_id", userId));
}
/**
......@@ -241,4 +262,25 @@ public class UserService extends ServiceImpl<UserMapper, User> {
return map;
}
/**
* 添加职位关联
*
* @author fengshuonan
* @Date 2019-06-28 13:35
*/
private void addPosition(String positions, Long userId) {
if (ToolUtil.isNotEmpty(positions)) {
String[] position = positions.split(",");
for (String item : position) {
UserPos entity = new UserPos();
entity.setUserId(userId);
entity.setPosId(Long.valueOf(item));
userPosService.save(entity);
}
}
}
}
......@@ -3,18 +3,23 @@ package cn.stylefeng.guns.sys.modular.system.service.impl;
import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory;
import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.sys.modular.system.entity.Position;
import cn.stylefeng.guns.sys.modular.system.entity.UserPos;
import cn.stylefeng.guns.sys.modular.system.mapper.PositionMapper;
import cn.stylefeng.guns.sys.modular.system.model.params.PositionParam;
import cn.stylefeng.guns.sys.modular.system.model.result.PositionResult;
import cn.stylefeng.guns.sys.modular.system.service.PositionService;
import cn.stylefeng.guns.sys.modular.system.service.UserPosService;
import cn.stylefeng.roses.core.util.ToolUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
* <p>
......@@ -27,19 +32,22 @@ import java.util.List;
@Service
public class PositionServiceImpl extends ServiceImpl<PositionMapper, Position> implements PositionService {
@Autowired
private UserPosService userPosService;
@Override
public void add(PositionParam param){
public void add(PositionParam param) {
Position entity = getEntity(param);
this.save(entity);
}
@Override
public void delete(PositionParam param){
public void delete(PositionParam param) {
this.removeById(getKey(param));
}
@Override
public void update(PositionParam param){
public void update(PositionParam param) {
Position oldEntity = getOldEntity(param);
Position newEntity = getEntity(param);
ToolUtil.copyProperties(newEntity, oldEntity);
......@@ -47,23 +55,56 @@ public class PositionServiceImpl extends ServiceImpl<PositionMapper, Position> i
}
@Override
public PositionResult findBySpec(PositionParam param){
public PositionResult findBySpec(PositionParam param) {
return null;
}
@Override
public List<PositionResult> findListBySpec(PositionParam param){
public List<PositionResult> findListBySpec(PositionParam param) {
return null;
}
@Override
public LayuiPageInfo findPageBySpec(PositionParam param){
public LayuiPageInfo findPageBySpec(PositionParam param) {
Page pageContext = getPageContext();
IPage page = this.baseMapper.customPageList(pageContext, param);
return LayuiPageFactory.createPageInfo(page);
}
private Serializable getKey(PositionParam param){
@Override
public LayuiPageInfo listPositions(Long userId) {
//找出所有职位
QueryWrapper<Position> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.select("position_id", "name");
List<Map<String, Object>> list = this.listMaps(objectQueryWrapper);
//用户id为空,则直接返回
if (userId == null) {
} else {
//查询用户的职位id列表
List<UserPos> userPosList = this.userPosService.list(new QueryWrapper<UserPos>().eq("user_id", userId));
if (userPosList != null && userPosList.size() > 0) {
for (UserPos userPos : userPosList) {
for (Map<String, Object> positionMap : list) {
if (userPos.getPosId().equals(positionMap.get("position_id"))) {
positionMap.put("selected", true);
}
}
}
}
}
LayuiPageInfo layuiPageInfo = new LayuiPageInfo();
layuiPageInfo.setData(list);
return layuiPageInfo;
}
private Serializable getKey(PositionParam param) {
return param.getPositionId();
}
......
package cn.stylefeng.guns.sys.modular.system.service.impl;
import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory;
import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.sys.modular.system.entity.UserPos;
import cn.stylefeng.guns.sys.modular.system.mapper.UserPosMapper;
import cn.stylefeng.guns.sys.modular.system.model.params.UserPosParam;
import cn.stylefeng.guns.sys.modular.system.model.result.UserPosResult;
import cn.stylefeng.guns.sys.modular.system.service.UserPosService;
import cn.stylefeng.roses.core.util.ToolUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.io.Serializable;
import java.util.List;
/**
* <p>
* 用户职位关联表 服务实现类
* </p>
*
* @author stylefeng
* @since 2019-06-28
*/
@Service
public class UserPosServiceImpl extends ServiceImpl<UserPosMapper, UserPos> implements UserPosService {
@Override
public void add(UserPosParam param){
UserPos entity = getEntity(param);
this.save(entity);
}
@Override
public void delete(UserPosParam param){
this.removeById(getKey(param));
}
@Override
public void update(UserPosParam param){
UserPos oldEntity = getOldEntity(param);
UserPos newEntity = getEntity(param);
ToolUtil.copyProperties(newEntity, oldEntity);
this.updateById(newEntity);
}
@Override
public UserPosResult findBySpec(UserPosParam param){
return null;
}
@Override
public List<UserPosResult> findListBySpec(UserPosParam param){
return null;
}
@Override
public LayuiPageInfo findPageBySpec(UserPosParam param){
Page pageContext = getPageContext();
IPage page = this.baseMapper.customPageList(pageContext, param);
return LayuiPageFactory.createPageInfo(page);
}
private Serializable getKey(UserPosParam param){
return param.getUserPosId();
}
private Page getPageContext() {
return LayuiPageFactory.defaultPage();
}
private UserPos getOldEntity(UserPosParam param) {
return this.getById(getKey(param));
}
private UserPos getEntity(UserPosParam param) {
UserPos entity = new UserPos();
ToolUtil.copyProperties(param, entity);
return entity;
}
}
......@@ -8,13 +8,14 @@ var UserInfoDlg = {
}
};
layui.use(['layer', 'form', 'admin', 'laydate', 'ax'], function () {
layui.use(['layer', 'form', 'admin', 'laydate', 'ax', 'formSelects'], function () {
var $ = layui.jquery;
var $ax = layui.ax;
var form = layui.form;
var admin = layui.admin;
var laydate = layui.laydate;
var layer = layui.layer;
var formSelects = layui.formSelects;
// 让当前iframe弹层高度适应
admin.iframeAuto();
......@@ -73,4 +74,11 @@ layui.use(['layer', 'form', 'admin', 'laydate', 'ax'], function () {
$("#backupPage").click(function () {
window.location.href = Feng.ctxPath + "/mgr";
});
//初始化所有的职位列表
formSelects.config('selPosition', {
searchUrl: Feng.ctxPath + "/position/listPositions",
keyName: 'name',
keyVal: 'position_id'
});
});
\ No newline at end of file
......@@ -8,13 +8,14 @@ var UserInfoDlg = {
}
};
layui.use(['layer', 'form', 'admin', 'laydate', 'ax'], function () {
layui.use(['layer', 'form', 'admin', 'laydate', 'ax', 'formSelects'], function () {
var $ = layui.jquery;
var $ax = layui.ax;
var form = layui.form;
var admin = layui.admin;
var laydate = layui.laydate;
var layer = layui.layer;
var formSelects = layui.formSelects;
// 让当前iframe弹层高度适应
admin.iframeAuto();
......@@ -79,4 +80,11 @@ layui.use(['layer', 'form', 'admin', 'laydate', 'ax'], function () {
$("#backupPage").click(function () {
window.location.href = Feng.ctxPath + "/mgr";
});
//初始化所有的职位列表
formSelects.config('selPosition', {
searchUrl: Feng.ctxPath + "/position/listPositions?userId=" + $("#userId").val(),
keyName: 'name',
keyVal: 'position_id'
});
});
\ No newline at end of file
@layout("/common/_container.html",{js:["/assets/modular/system/user/user_add.js"]}){
@layout("/common/_container.html",{js:["/assets/modular/system/user/user_add.js"],css:["/assets/common/module/formSelects/formSelects-v4.css"]}){
<div class="layui-body-header">
<span class="layui-body-header-title">用户管理-添加</span>
</div>
......@@ -29,19 +29,19 @@
<div class="layui-form-item">
<label class="layui-form-label">密码<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input name="password" placeholder="请输入密码" type="password" class="layui-input" lay-verify="required|psw" required/>
<input name="password" placeholder="请输入密码" type="password" class="layui-input" lay-verify="required|psw" autocomplete="new-password" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">重复密码<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input name="rePassword" placeholder="请输入重复密码" type="password" class="layui-input" lay-verify="required|repsw" required/>
<input name="rePassword" placeholder="请输入重复密码" type="password" class="layui-input" autocomplete="new-password" lay-verify="required|repsw" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮箱<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input name="email" placeholder="请输入邮箱" type="text" class="layui-input" lay-verify="required|email" required/>
<input name="email" placeholder="请输入邮箱" type="text" class="layui-input" lay-verify="required|email" autocomplete="off" required/>
</div>
</div>
<div class="layui-form-item">
......@@ -59,6 +59,14 @@
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">职位<span style="color: red;">*</span></label>
<div class="layui-input-block">
<select name="position" xm-select="selPosition">
<option value="">请选择职位</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">电话</label>
<div class="layui-input-block">
<input name="phone" placeholder="请输入电话" type="text" class="layui-input"/>
......
@layout("/common/_container.html",{js:["/assets/modular/system/user/user_edit.js"]}){
@layout("/common/_container.html",{js:["/assets/modular/system/user/user_edit.js"],css:["/assets/common/module/formSelects/formSelects-v4.css"]}){
<div class="layui-body-header">
<span class="layui-body-header-title">用户管理-修改</span>
</div>
......@@ -7,7 +7,7 @@
<div class="layui-card">
<div class="layui-card-body">
<form id="userForm" lay-filter="userForm" class="layui-form model-form" style="max-width: 700px;margin: 40px auto;">
<input name="userId" type="hidden"/>
<input id="userId" name="userId" type="hidden"/>
<input name="account" type="hidden"/>
<div class="layui-form-item">
<label class="layui-form-label">姓名<span style="color: red;">*</span></label>
......@@ -42,6 +42,13 @@
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">职位<span style="color: red;">*</span></label>
<div class="layui-input-block">
<select name="position" id="position" xm-select="selPosition" lay-verify="required" required>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">电话</label>
<div class="layui-input-block">
<input name="phone" placeholder="请输入电话" type="text" class="layui-input"/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment