修改用户

main
tamguo 7 years ago
parent 3a12d4fa69
commit 5faef5ab16

@ -0,0 +1,8 @@
package com.tamguo.modules.sys.dao;
import com.tamguo.config.dao.SuperMapper;
import com.tamguo.modules.sys.model.SysUserPostEntity;
public interface SysUserPostMapper extends SuperMapper<SysUserPostEntity>{
}

@ -3,6 +3,7 @@ package com.tamguo.modules.sys.model;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.annotations.TableId;
@ -63,11 +64,15 @@ public class SysUserEntity implements Serializable {
private String updateBy; private String updateBy;
private Date updateDate; private Date updateDate;
private String userName; private String userName;
private String empName;
private String userType; private String userType;
private BigDecimal userWeight; private BigDecimal userWeight;
private String wxOpenid; private String wxOpenid;
private String userNameEn; private String userNameEn;
@TableField(exist=false)
private List<String> employeePosts;
public SysUserEntity() { public SysUserEntity() {
} }
@ -423,5 +428,21 @@ public class SysUserEntity implements Serializable {
this.userNameEn = userNameEn; this.userNameEn = userNameEn;
} }
public List<String> getEmployeePosts() {
return employeePosts;
}
public void setEmployeePosts(List<String> employeePosts) {
this.employeePosts = employeePosts;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
} }

@ -0,0 +1,23 @@
package com.tamguo.modules.sys.model;
import com.baomidou.mybatisplus.annotations.TableName;
@TableName(value="sys_user_post")
public class SysUserPostEntity {
private String userCode;
private String postCode;
public String getUserCode() {
return userCode;
}
public void setUserCode(String userCode) {
this.userCode = userCode;
}
public String getPostCode() {
return postCode;
}
public void setPostCode(String postCode) {
this.postCode = postCode;
}
}

@ -10,4 +10,13 @@ public interface ISysUserService extends IService<SysUserEntity>{
public SysUserEntity queryByLoginCode(String loginCode); public SysUserEntity queryByLoginCode(String loginCode);
public Page<SysUserEntity> listData(SysUserCondition condition); public Page<SysUserEntity> listData(SysUserCondition condition);
/** 用户岗位*/
public String queryUserPostByUserCode(String userCode);
/** 检查登录账号*/
public Boolean checkLoginCode(String oldLoginCode , String loginCode);
/** 更新用户信息*/
public void update(SysUserEntity user);
} }

@ -1,13 +1,21 @@
package com.tamguo.modules.sys.service.impl; package com.tamguo.modules.sys.service.impl;
import java.util.LinkedList;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.tamguo.modules.sys.dao.SysUserMapper; import com.tamguo.modules.sys.dao.SysUserMapper;
import com.tamguo.modules.sys.dao.SysUserPostMapper;
import com.tamguo.modules.sys.model.SysUserEntity; import com.tamguo.modules.sys.model.SysUserEntity;
import com.tamguo.modules.sys.model.SysUserPostEntity;
import com.tamguo.modules.sys.model.condition.SysUserCondition; import com.tamguo.modules.sys.model.condition.SysUserCondition;
import com.tamguo.modules.sys.service.ISysUserService; import com.tamguo.modules.sys.service.ISysUserService;
@ -16,6 +24,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
@Autowired @Autowired
public SysUserMapper sysUserMapper; public SysUserMapper sysUserMapper;
@Autowired
public SysUserPostMapper sysUserPostMapper;
@Transactional(readOnly=false) @Transactional(readOnly=false)
@Override @Override
@ -32,4 +42,63 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
return page.setRecords(sysUserMapper.listData(condition , page)); return page.setRecords(sysUserMapper.listData(condition , page));
} }
@SuppressWarnings("unchecked")
@Override
public String queryUserPostByUserCode(String userCode) {
Condition condition = Condition.create();
condition.eq("user_code", userCode);
List<SysUserPostEntity> userPostList = sysUserPostMapper.selectList(condition);
List<String> postCodes = new LinkedList<>();
for(int i=0 ; i<userPostList.size() ; i++) {
postCodes.add(userPostList.get(i).getPostCode());
}
return StringUtils.join(postCodes, ",");
}
@Transactional(readOnly=false)
@SuppressWarnings("unchecked")
@Override
public Boolean checkLoginCode(String oldLoginCode, String loginCode) {
Condition condition = Condition.create();
condition.eq("login_code", loginCode);
condition.ne("login_code", oldLoginCode);
List<SysUserEntity> userList = sysUserMapper.selectList(condition);
return CollectionUtils.isEmpty(userList);
}
@SuppressWarnings("unchecked")
@Transactional(readOnly=false)
@Override
public void update(SysUserEntity user) {
SysUserEntity entity = sysUserMapper.selectById(user.getUserCode());
entity.setOfficeCode(user.getOfficeCode());
entity.setOfficeName(user.getOfficeName());
entity.setCompanyCode(user.getCompanyCode());
entity.setCompanyName(user.getCompanyName());
entity.setLoginCode(user.getLoginCode());
entity.setUserName(user.getUserName());
entity.setEmail(user.getEmail());
entity.setMobile(user.getMobile());
entity.setPhone(user.getPhone());
entity.setUserWeight(user.getUserWeight());
entity.setRefName(user.getRefName());
entity.setUserNameEn(user.getUserNameEn());
entity.setRemarks(user.getRemarks());
sysUserMapper.updateById(entity);
// 删除记录
sysUserPostMapper.delete(Condition.create().eq("user_code", user.getUserCode()));
// 处理岗位
List<String> employeePosts = user.getEmployeePosts();
for(int i=0 ; i<employeePosts.size() ; i++) {
SysUserPostEntity userPost = new SysUserPostEntity();
userPost.setPostCode(employeePosts.get(i));
userPost.setUserCode(user.getUserCode());
sysUserPostMapper.insert(userPost);
}
}
} }

@ -36,10 +36,13 @@ public class SysUserController {
return model; return model;
} }
@SuppressWarnings("unchecked")
@RequestMapping(path="update") @RequestMapping(path="update")
public ModelAndView update(String userCode , ModelAndView model) { public ModelAndView update(String userCode , ModelAndView model) {
model.setViewName(USER_DETAIL_PAGE); model.setViewName(USER_DETAIL_PAGE);
model.addObject("user", iSysUserService.selectById(userCode)); model.addObject("user", iSysUserService.selectById(userCode));
model.addObject("postList", iPostService.selectList(Condition.create().eq("status", "0")));
model.addObject("userPostCode", iSysUserService.queryUserPostByUserCode(userCode));
return model; return model;
} }
@ -50,4 +53,16 @@ public class SysUserController {
return Result.jqGridResult(page.getRecords(), page.getTotal(), page.getSize(), page.getCurrent(), page.getPages()); return Result.jqGridResult(page.getRecords(), page.getTotal(), page.getSize(), page.getCurrent(), page.getPages());
} }
@RequestMapping(path="checkLoginCode",method=RequestMethod.GET)
@ResponseBody
public Boolean checkLoginCode(String oldLoginCode , String loginCode) {
return iSysUserService.checkLoginCode(oldLoginCode , loginCode);
}
@RequestMapping(path="update",method=RequestMethod.POST)
@ResponseBody
public Result update(SysUserEntity user) {
iSysUserService.update(user);
return Result.result(0, null, "保存用户【"+user.getUserCode()+"】成功!");
}
} }

@ -4,6 +4,7 @@
<select id="listData" resultType="SysUserEntity"> <select id="listData" resultType="SysUserEntity">
SELECT SELECT
distinct
u.user_code, u.user_code,
u.office_code, u.office_code,
u.office_name, u.office_name,

@ -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="com.tamguo.modules.sys.dao.SysUserPostMapper">
</mapper>

@ -27,10 +27,8 @@ content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
</div> </div>
</div> </div>
<form id="inputForm" action="/js/a/sys/empUser/save" method="post" class="form-horizontal"> <form id="inputForm" th:action="${setting.domain + 'sys/user/update'}" method="post" class="form-horizontal">
<input type="hidden" id="op" name="op" value="edit"/> <input type="hidden" id="op" name="op" value="edit"/>
<input type="hidden" id="userType" name="userType" value="employee"/>
<input type="hidden" id="userCode" name="userCode" value="TEST01_miom"/>
<div class="box-body"> <div class="box-body">
<div class="form-unit">基本信息</div> <div class="form-unit">基本信息</div>
<div class="row"> <div class="row">
@ -39,12 +37,10 @@ content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<label class="control-label col-sm-4" title=""> <label class="control-label col-sm-4" title="">
<span class="required ">*</span> 归属机构:<i class="fa icon-question hide"></i></label> <span class="required ">*</span> 归属机构:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8"> <div class="col-sm-8">
<div class="input-group treeselect" id="officeDiv" data-url="/js/a/sys/office/treeData"> <div class="input-group treeselect" id="officeDiv" data-url="sys/office/treeData?">
<input id="officeCode" type="hidden" name="employee.office.officeCode" th:value="${user.officeCode}" class="isReset"/> <input id="officeCode" type="hidden" name="officeCode" th:value="${user.officeCode}" class="isReset"/>
<input id="officeName" type="text" name="employee.office.officeName" th:value="${user.officeName}" <input id="officeName" type="text" name="officeName" th:value="${user.officeName}" class="form-control required " readonly="readonly"/>
class="form-control required " readonly="readonly" <span class="input-group-btn"><a id="officeButton" href="javascript:" class="btn btn-default "><i class="fa fa-search"></i></a>
/><span class="input-group-btn"><a id="officeButton" href="javascript:"
class="btn btn-default "><i class="fa fa-search"></i></a>
</span> </span>
</div> </div>
<script> <script>
@ -125,92 +121,93 @@ content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<label class="control-label col-sm-4" title=""> <label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 归属公司:<i class="fa icon-question hide"></i></label> <span class="required hide">*</span> 归属公司:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8"> <div class="col-sm-8">
<div class="input-group treeselect" id="companyDiv" data-url="/js/a/sys/company/treeData"> <div class="input-group treeselect" id="companyDiv" data-url="sys/company/treeData?">
<input id="companyCode" type="hidden" name="employee.company.companyCode" value="" class="isReset"/> <input id="companyCode" type="hidden" name="companyCode" th:value="${user.companyCode}" class="isReset"/>
<input id="companyName" type="text" name="employee.company.companyName" value="" <input id="companyName" type="text" name="companyName" th:value="${user.companyName}"
class="form-control " readonly="readonly" class="form-control " readonly="readonly"
/><span class="input-group-btn"><a id="companyButton" href="javascript:" /><span class="input-group-btn"><a id="companyButton" href="javascript:"
class="btn btn-default "><i class="fa fa-search"></i></a> class="btn btn-default "><i class="fa fa-search"></i></a>
</span> </span>
</div> </div>
<script> <script>
$("#companyButton,#companyName").click(function(){ $("#companyButton,#companyName").click(function(){
if ($("#companyButton").hasClass("disabled")){ if ($("#companyButton").hasClass("disabled")){
return true; return true;
} }
var options = { var options = {
type: 2, type: 2,
maxmin: true, maxmin: true,
shadeClose: true, shadeClose: true,
title: '公司选择', title: '公司选择',
area: ['300px', '400px'], area: ['300px', '400px'],
content: '/js/tags/treeselect', content: 'sys/treeselect',
contentFormData: { contentFormData: {
url: $('#companyDiv').attr('data-url'), url: $('#companyDiv').attr('data-url'),
checkbox: 'false', checkbox: 'false',
expandLevel: '-1', expandLevel: '-1',
selectCodes: $("#companyCode").val(), selectCodes: $("#companyCode").val(),
isReturnValue: 'false' isReturnValue: 'false'
}, },
success: function(layero, index){ success: function(layero, index){
if ($(js.layer.window).width() < 300 if ($(js.layer.window).width() < 300
|| $(js.layer.window).height() < 400){ || $(js.layer.window).height() < 400){
js.layer.full(index); js.layer.full(index);
} }
}, },
btn: ['<i class="fa fa-check"></i> 确定'], btn: ['<i class="fa fa-check"></i> 确定'],
btn1: function(index, layero){ btn1: function(index, layero){
var win = js.layer.iframeWindow(index); var win = js.layer.iframeWindow(index);
win.$('#keyword').val('').change(); var codes = [], names = [], nodes; win.$('#keyword').val('').change(); var codes = [], names = [], nodes;
if ("false" == "true"){ if ("false" == "true"){
nodes = win.tree.getCheckedNodes(true); nodes = win.tree.getCheckedNodes(true);
}else{ }else{
nodes = win.tree.getSelectedNodes(); nodes = win.tree.getSelectedNodes();
} }
for(var i=0; i<nodes.length; i++) { for(var i=0; i<nodes.length; i++) {
if (nodes[i].level == 0 && nodes[i].isParent){ if (nodes[i].level == 0 && nodes[i].isParent){
js.showMessage("不能选择根节点("+nodes[i].name+")请重新选择。"); js.showMessage("不能选择根节点("+nodes[i].name+")请重新选择。");
return false; return false;
} }
if (nodes[i].isParent){ if (nodes[i].isParent){
js.showMessage("不能选择父节点("+nodes[i].name+")请重新选择。"); js.showMessage("不能选择父节点("+nodes[i].name+")请重新选择。");
return false; return false;
} }
var code = nodes[i]['false'=='true'?'value':'id'], name = nodes[i]['name']; var code = nodes[i]['false'=='true'?'value':'id'], name = nodes[i]['name'];
codes.push(code.replace(/^u_/g,'')); codes.push(code.replace(/^u_/g,''));
names.push(name.replace(/\([0-9]*\)/g,'')); names.push(name.replace(/\([0-9]*\)/g,''));
break; break;
} }
if(typeof treeselectCheck == 'function'){ if(typeof treeselectCheck == 'function'){
if (!treeselectCheck('company', nodes)){ if (!treeselectCheck('company', nodes)){
return false; return false;
} }
} }
$("#companyCode").val(codes.join(',')).change(); $("#companyCode").val(codes.join(',')).change();
$("#companyName").val(names.join(',')).change(); $("#companyName").val(names.join(',')).change();
try { $('#companyCode,#companyName').valid(); }catch(e){} try { $('#companyCode,#companyName').valid(); }catch(e){}
if(typeof treeselectCallback == 'function'){ if(typeof treeselectCallback == 'function'){
treeselectCallback('company', 'ok', index, layero, nodes); treeselectCallback('company', 'ok', index, layero, nodes);
} }
} }
}; };
options.btn.push('<i class="fa fa-eraser"></i> 清除'); options.btn.push('<i class="fa fa-eraser"></i> 清除');
options['btn'+options.btn.length] = function(index, layero){ options['btn'+options.btn.length] = function(index, layero){
$("#companyCode").val('').change(); $("#companyCode").val('').change();
$("#companyName").val('').change(); $("#companyName").val('').change();
if(typeof treeselectCallback == 'function'){ if(typeof treeselectCallback == 'function'){
treeselectCallback('company', 'clear', index, layero); treeselectCallback('company', 'clear', index, layero);
} }
}; };
options.btn.push('<i class="fa fa-close"></i> 关闭'); options.btn.push('<i class="fa fa-close"></i> 关闭');
options['btn'+options.btn.length] = function(index, layero){ options['btn'+options.btn.length] = function(index, layero){
if(typeof treeselectCallback == 'function'){ if(typeof treeselectCallback == 'function'){
treeselectCallback('company', 'cancel', index, layero); treeselectCallback('company', 'cancel', index, layero);
} }
}; };
js.layer.open(options); js.layer.open(options);
}); });
</script> </div> </script>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -220,8 +217,8 @@ $("#companyButton,#companyName").click(function(){
<label class="control-label col-sm-4" title=""> <label class="control-label col-sm-4" title="">
<span class="required ">*</span> 登录账号:<i class="fa icon-question hide"></i></label> <span class="required ">*</span> 登录账号:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8"> <div class="col-sm-8">
<input type="hidden" id="oldLoginCode" name="oldLoginCode" value="TEST01"/> <input type="hidden" id="oldLoginCode" name="oldLoginCode" th:value="${user.loginCode}"/>
<input type="text" id="loginCode" name="loginCode" th:value="${user.loginCode}" minlength="4" maxlength="20" class="form-control required userName" remote="/js/a/sys/user/checkLoginCode?oldLoginCode=TEST01" data-msg-remote="登录账号已存在"/> <input type="text" id="loginCode" name="loginCode" th:value="${user.loginCode}" minlength="4" maxlength="20" class="form-control required userName" th:remote="${setting.domain + 'sys/user/checkLoginCode?oldLoginCode='+user.loginCode}" data-msg-remote="登录账号已存在"/>
</div> </div>
</div> </div>
</div> </div>
@ -230,7 +227,7 @@ $("#companyButton,#companyName").click(function(){
<label class="control-label col-sm-4" title=""> <label class="control-label col-sm-4" title="">
<span class="required ">*</span> 用户昵称:<i class="fa icon-question hide"></i></label> <span class="required ">*</span> 用户昵称:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8"> <div class="col-sm-8">
<input type="text" id="userName" name="userName" th:value="${user.userName}" maxlength="32" class="form-control required "/> <input type="text" id="userName" name="userName" th:value="${user.userName}" maxlength="32" class="form-control required "/>
</div> </div>
</div> </div>
</div> </div>
@ -291,7 +288,7 @@ $("#companyButton,#companyName").click(function(){
<label class="control-label col-sm-4" title=""> <label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 员工编号:<i class="fa icon-question hide"></i></label> <span class="required hide">*</span> 员工编号:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8"> <div class="col-sm-8">
<input type="text" id="employee_empCode" name="employee.empCode" th:value="${user.userCode}" maxlength="32" readonly="true" class="form-control userName"/> <input type="text" id="userCode" name="userCode" th:value="${user.userCode}" maxlength="32" readonly="true" class="form-control userName"/>
</div> </div>
</div> </div>
</div> </div>
@ -300,7 +297,7 @@ $("#companyButton,#companyName").click(function(){
<label class="control-label col-sm-4" title=""> <label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 员工姓名:<i class="fa icon-question hide"></i></label> <span class="required hide">*</span> 员工姓名:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8"> <div class="col-sm-8">
<input type="text" id="employee_empName" name="employee.empName" th:value="${user.userName}" maxlength="32" class="form-control "/> <input type="text" id="empName" name="empName" th:value="${user.empName}" maxlength="32" class="form-control "/>
</div> </div>
</div> </div>
</div> </div>
@ -311,12 +308,8 @@ $("#companyButton,#companyName").click(function(){
<label class="control-label col-sm-4" title=""> <label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 所在岗位:<i class="fa icon-question hide"></i></label> <span class="required hide">*</span> 所在岗位:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8"> <div class="col-sm-8">
<input type="hidden" name="!employee.employeePosts" value=""/> <select id="employeePosts" name="employeePosts" class="form-control" multiple="true">
<select id="employee_employeePosts" name="employee.employeePosts" class="form-control" multiple="true"> <option th:value="${post.postCode}" th:selected="${#strings.contains(userPostCode,post.postCode)}" th:each="post,postStat:${postList}" th:text="${post.postName}">财务经理</option>
<option value="cfo">财务经理</option>
<option value="hrm">人力经理</option>
<option value="dept">部门经理</option>
<option value="user">普通员工</option>
</select> </select>
</div> </div>
</div> </div>
@ -326,7 +319,7 @@ $("#companyButton,#companyName").click(function(){
<label class="control-label col-sm-4" title=""> <label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 英文名:<i class="fa icon-question hide"></i></label> <span class="required hide">*</span> 英文名:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8"> <div class="col-sm-8">
<input type="text" id="employee_empNameEn" name="employee.userNameEn" th:value="${user.userNameEn}" maxlength="32" class="form-control "/> <input type="text" id="employee_empNameEn" name="userNameEn" th:value="${user.userNameEn}" maxlength="32" class="form-control "/>
</div> </div>
</div> </div>
</div> </div>
@ -373,8 +366,8 @@ $("#companyButton,#companyName").click(function(){
<script th:src="${setting.domain + 'common/common.js'}"></script> <script th:src="${setting.domain + 'common/common.js'}"></script>
<!-- VUE --> <!-- VUE -->
<script th:src="${setting.domain + 'vue/vue.min.js'}"></script> <!-- <script th:src="${setting.domain + 'vue/vue.min.js'}"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script> <script src="https://unpkg.com/axios/dist/axios.min.js"></script> -->
<script type="text/javascript" th:inline="javascript"> <script type="text/javascript" th:inline="javascript">
$("#inputForm").validate({ $("#inputForm").validate({
submitHandler: function(form){ submitHandler: function(form){
@ -388,18 +381,4 @@ $("#inputForm").validate({
}, "json"); }, "json");
} }
}); });
var vm = new Vue({
el:'#inputForm',
data:{
},
methods: {
}
});
var userCode = [[${userCode}]];
if(/^(undefined|null|\s*)?$/.test(userCode)){
}
</script> </script>
Loading…
Cancel
Save