新增个人信息修改

master
RuoYi 6 years ago committed by Limy
parent 0715b30185
commit 88677ad34a

@ -23,7 +23,9 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<shiro.version>1.3.2</shiro.version>
<thymeleaf-extras-shiro.version>1.2.1</thymeleaf-extras-shiro.version>
<thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.0.1</thymeleaf-layout-dialect.version>
<thymeleaf-extras-shiro.version>2.0.0</thymeleaf-extras-shiro.version>
<mybatis-spring-boot-starter.version>1.1.1</mybatis-spring-boot-starter.version>
<fastjson.version>1.2.31</fastjson.version>
<druid.version>1.0.28</druid.version>

@ -44,6 +44,8 @@ create table sys_user (
user_name varchar(30) default '' comment '用户昵称',
email varchar(100) default '' comment '用户邮箱',
phonenumber varchar(20) default '' comment '手机号码',
sex char(20) default '0' comment '用户性别:0男,1女',
avatar varchar(100) default '' comment '头像路径',
password varchar(100) default '' comment '密码',
salt varchar(100) default '' comment '盐加密',
user_type char(1) default 'N' comment '类型:Y默认用户,N非默认用户',
@ -59,8 +61,8 @@ create table sys_user (
-- ----------------------------
-- 初始化-用户信息表数据
-- ----------------------------
insert into sys_user values(1, 106, 'admin', '若依', 'yzz_ivy@163.com', '15088888888', '29c67a30398638269fe600f73a054934', '111111', 'Y', 0, '维护中', 'admin', '2018-03-01', 'ry', '2018-03-01');
insert into sys_user values(2, 108, 'ry', '若依', 'ry@163.com', '15288888888', '8e6d98b90472783cc73c17047ddccf36', '222222', 'N', 1, '锁定中', 'admin', '2018-03-01', 'ry', '2018-03-01');
insert into sys_user values(1, 106, 'admin', '若依', 'yzz_ivy@163.com', '15088888888', '0', 'img/a5.jpg', '29c67a30398638269fe600f73a054934', '111111', 'N', 1, '维护中', 'admin', '2018-03-01', 'ry', '2018-03-01');
insert into sys_user values(2, 108, 'ry', '若依', 'ry@163.com', '15288888888', '1', 'img/a5.jpg', '8e6d98b90472783cc73c17047ddccf36', '222222', 'N', 1, '锁定中', 'admin', '2018-03-01', 'ry', '2018-03-01');
-- ----------------------------

@ -12,10 +12,10 @@ public interface IPostDao
{
/**
*
*
*
* @param post
* @return
* @return
*/
public List<Post> selectPostList(Post post);

@ -47,11 +47,4 @@ public class IndexController extends BaseController
return "main";
}
// 个人信息
@GetMapping("/system/profile")
public String profile(Model model)
{
return "system/user/profile";
}
}

@ -37,10 +37,10 @@ public class UserController extends BaseController
@Autowired
private IUserService userService;
@Autowired
private IRoleService roleService;
@Autowired
private IPostService postService;
@ -92,7 +92,7 @@ public class UserController extends BaseController
model.addAttribute("posts", posts);
return prefix + "/add";
}
@RequiresPermissions("system:user:resetPwd")
@Log(title = "系统管理", action = "用户管理-重置密码")
@GetMapping("/resetPwd/{userId}")
@ -102,7 +102,7 @@ public class UserController extends BaseController
model.addAttribute("user", user);
return prefix + "/resetPwd";
}
@RequiresPermissions("system:user:resetPwd")
@Log(title = "系统管理", action = "用户管理-重置密码")
@PostMapping("/resetPwd")
@ -120,7 +120,7 @@ public class UserController extends BaseController
@RequiresPermissions("system:user:remove")
@Log(title = "系统管理", action = "用户管理-删除用户")
@RequestMapping("/remove/{userId}")
@Transactional(rollbackFor=Exception.class)
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public Message remove(@PathVariable("userId") Long userId)
{
@ -139,7 +139,7 @@ public class UserController extends BaseController
@RequiresPermissions("system:user:batchRemove")
@Log(title = "系统管理", action = "用户管理-批量删除")
@PostMapping("/batchRemove")
@Transactional(rollbackFor=Exception.class)
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public Message batchRemove(@RequestParam("ids[]") Long[] ids)
{
@ -157,7 +157,7 @@ public class UserController extends BaseController
@RequiresPermissions("system:user:save")
@Log(title = "系统管理", action = "部门管理-保存部门")
@PostMapping("/save")
@Transactional(rollbackFor=Exception.class)
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public Message save(User user)
{
@ -183,4 +183,28 @@ public class UserController extends BaseController
return uniqueFlag;
}
/**
*
*/
@GetMapping("/profile")
public String profile(Model model)
{
User user = getUser();
String sex = user.getSex();
if ("0".equals(sex))
{
user.setSex("性别:男");
}
else if ("1".equals(sex))
{
user.setSex("性别:女");
}
String roleGroup = userService.selectUserRoleGroup(user.getUserId());
String postGroup = userService.selectUserPostGroup(user.getUserId());
model.addAttribute("user", user);
model.addAttribute("roleGroup", roleGroup);
model.addAttribute("postGroup", postGroup);
return prefix + "/profile";
}
}

@ -28,6 +28,10 @@ public class User extends PageDomain
private String email;
/** 手机号码 */
private String phonenumber;
/** 用户性别 */
private String sex;
/** 用户头像 */
private String avatar;
/** 密码 */
private String password;
/** 盐加密 */
@ -123,6 +127,26 @@ public class User extends PageDomain
this.phonenumber = phonenumber;
}
public String getSex()
{
return sex;
}
public void setSex(String sex)
{
this.sex = sex;
}
public String getAvatar()
{
return avatar;
}
public void setAvatar(String avatar)
{
this.avatar = avatar;
}
public String getPassword()
{
return password;

@ -58,7 +58,7 @@ public interface IUserService
* @return
*/
public int saveUser(User user);
/**
*
*
@ -75,4 +75,20 @@ public interface IUserService
*/
public String checkUserNameUnique(String loginName);
/**
* ID
*
* @param userId ID
* @return
*/
public String selectUserRoleGroup(Long userId);
/**
* ID
*
* @param userId ID
* @return
*/
public String selectUserPostGroup(Long userId);
}

@ -10,6 +10,10 @@ import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.security.ShiroUtils;
import com.ruoyi.framework.shiro.service.PasswordService;
import com.ruoyi.project.system.post.dao.IPostDao;
import com.ruoyi.project.system.post.domain.Post;
import com.ruoyi.project.system.role.dao.IRoleDao;
import com.ruoyi.project.system.role.domain.Role;
import com.ruoyi.project.system.user.dao.IUserDao;
import com.ruoyi.project.system.user.dao.IUserPostDao;
import com.ruoyi.project.system.user.dao.IUserRoleDao;
@ -29,6 +33,12 @@ public class UserServiceImpl implements IUserService
@Autowired
private IUserDao userDao;
@Autowired
private IRoleDao roleDao;
@Autowired
private IPostDao postDao;
@Autowired
private IUserPostDao userPostDao;
@ -220,4 +230,48 @@ public class UserServiceImpl implements IUserService
}
return UserConstants.NAME_UNIQUE;
}
/**
*
*
* @param userId ID
* @return
*/
@Override
public String selectUserRoleGroup(Long userId)
{
List<Role> list = roleDao.selectRolesByUserId(userId);
StringBuffer idsStr = new StringBuffer();
for (Role role : list)
{
idsStr.append(role.getRoleName()).append(",");
}
if (StringUtils.isNotEmpty(idsStr.toString()))
{
idsStr.substring(0, idsStr.length() - 1);
}
return idsStr.toString();
}
/**
*
*
* @param userId ID
* @return
*/
@Override
public String selectUserPostGroup(Long userId)
{
List<Post> list = postDao.selectPostsByUserId(userId);
StringBuffer idsStr = new StringBuffer();
for (Post post : list)
{
idsStr.append(post.getPostName()).append(",");
}
if (StringUtils.isNotEmpty(idsStr.toString()))
{
idsStr.substring(0, idsStr.length() - 1);
}
return idsStr.toString();
}
}

@ -18,7 +18,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<select id="selectRoleList" parameterType="Role" resultMap="RoleResult">
select role_id, role_name, role_key, role_sort, status, create_time from sys_role
select role_id, role_name, role_key, role_sort, status, create_time, remark from sys_role
<where>
<if test="searchValue != null and searchValue != ''">
AND role_name = #{searchValue} OR role_key = #{searchValue}
@ -35,11 +35,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectRolesAll" resultMap="RoleResult">
SELECT role_id, role_name, role_key, role_sort, status, create_time FROM sys_role
SELECT role_id, role_name, role_key, role_sort, status, create_time, remark FROM sys_role
</select>
<select id="selectRoleById" parameterType="Long" resultMap="RoleResult">
select role_id, role_name, role_key, role_sort, status, create_time
select role_id, role_name, role_key, role_sort, status, create_time, remark
from sys_role u
where u.role_id = #{roleId}
</select>

@ -11,6 +11,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="userName" column="user_name" />
<result property="email" column="email" />
<result property="phonenumber" column="phonenumber" />
<result property="sex" column="sex" />
<result property="avatar" column="avatar" />
<result property="password" column="password" />
<result property="salt" column="salt" />
<result property="userType" column="user_type" />
@ -32,7 +34,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<select id="selectUserList" parameterType="User" resultMap="UserResult">
select user_id, dept_id, login_name, user_name, email, phonenumber, password, salt, user_type, status, refuse_des, create_by, create_time from sys_user
select user_id, dept_id, login_name, user_name, email, phonenumber, password, sex, avatar, salt, user_type, status, refuse_des, create_by, create_time from sys_user
<where>
<if test="searchValue != null and searchValue != ''">
AND login_name = #{searchValue}
@ -44,7 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectUserByName" parameterType="String" resultMap="UserResult">
select u.user_id, u.dept_id, u.login_name, u.user_name, u.email, u.phonenumber, u.password, u.salt, u.status, u.refuse_des, u.create_time,
select u.user_id, u.dept_id, u.login_name, u.user_name, u.email, u.phonenumber, u.sex, u.avatar, u.password, u.salt, u.status, u.refuse_des, u.create_time,
d.dept_id, d.parent_id, d.dept_name, d.order_num, d.status as dept_status
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
@ -57,7 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectUserById" parameterType="Long" resultMap="UserResult">
select u.user_id, u.dept_id, u.login_name, u.user_name, u.email, u.phonenumber, u.password, u.salt, u.status, u.refuse_des, u.create_time,
select u.user_id, u.dept_id, u.login_name, u.user_name, u.email, u.phonenumber, u.sex, u.avatar, u.password, u.salt, u.status, u.refuse_des, u.create_time,
d.dept_id, d.parent_id, d.dept_name, d.order_num, d.status as dept_status
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
@ -84,6 +86,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="userName != null and userName != ''">user_name = #{userName},</if>
<if test="email != null and email != ''">email = #{email},</if>
<if test="phonenumber != null and phonenumber != ''">phonenumber = #{phonenumber},</if>
<if test="sex != null and sex != ''">sex = #{sex},</if>
<if test="avatar != null and avatar != ''">avatar = #{avatar},</if>
<if test="password != null and password != ''">password = #{password},</if>
<if test="salt != null and salt != ''">salt = #{salt},</if>
<if test="status !=null">status = #{status},</if>
@ -103,6 +107,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="userName != null and userName != ''">user_name,</if>
<if test="email != null and email != ''">email,</if>
<if test="phonenumber != null and phonenumber != ''">phonenumber,</if>
<if test="sex != null and sex != ''">sex,</if>
<if test="password != null and password != ''">password,</if>
<if test="salt != null and salt != ''">salt,</if>
<if test="status !=null and status != ''">status,</if>
@ -116,6 +121,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="userName != null and userName != ''">#{userName},</if>
<if test="email != null and email != ''">#{email},</if>
<if test="phonenumber != null and phonenumber != ''">#{phonenumber},</if>
<if test="sex != null and sex != ''">#{sex},</if>
<if test="password != null and password != ''">#{password},</if>
<if test="salt != null and salt != ''">#{salt},</if>
<if test="status !=null and status != ''">#{status},</if>

@ -138,15 +138,27 @@ $(function(){
}
// 获取选中复选框项
$.getCheckeds = function (_name) {
var roleIds = "";
var checkeds = "";
$('input:checkbox[name="' + _name + '"]:checked').each(function(i) {
if (0 == i) {
roleIds = $(this).val();
checkeds = $(this).val();
} else {
roleIds += ("," + $(this).val());
checkeds += ("," + $(this).val());
}
});
return roleIds;
return checkeds;
}
// 获取选中复选框项
$.getSelects = function (_name) {
var selects = "";
$('#' + _name + ' option:selected').each(function (i) {
if (0 == i) {
selects = $(this).val();
} else {
selects += ("," + $(this).val());
}
});
return selects;
}
// 复选框事件绑定
if ($.fn.select2 !== undefined) {

@ -51,9 +51,10 @@ function add() {
var password = $("input[name='password']").val();
var email = $("input[name='email']").val();
var phonenumber = $("input[name='phonenumber']").val();
var sex = $("input[name='sex']:checked").val();
var status = $("input[name='status']").is(':checked') == true ? 0 : 1;
var roleIds = $.getCheckeds("role");
var postIds = $("#post").val() + "";
var postIds = $.getSelects("post");
$.ajax({
cache : true,
type : "POST",
@ -66,6 +67,7 @@ function add() {
"password": password,
"email": email,
"phonenumber": phonenumber,
"sex": sex,
"status": status,
"roleIds": roleIds,
"postIds": postIds

@ -27,9 +27,10 @@ function update() {
var password = $("input[name='password']").val();
var email = $("input[name='email']").val();
var phonenumber = $("input[name='phonenumber']").val();
var sex = $("input[name='sex']:checked").val();
var status = $("input[name='status']").is(':checked') == true ? 0 : 1;
var roleIds = $.getCheckeds("role");
var postIds = $("#post").val() + "";
var postIds = $.getSelects("post");
$.ajax({
cache : true,
type : "POST",
@ -41,6 +42,7 @@ function update() {
"password": password,
"email": email,
"phonenumber": phonenumber,
"sex": sex,
"status": status,
"roleIds": roleIds,
"postIds": postIds

@ -11,7 +11,7 @@
<!--[if lt IE 9]>
<meta http-equiv="refresh" content="0;ie.html"/>
<![endif]-->
<link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}" rel="stylesheet"/>
<link href="../static/favicon.ico" th:href="@{favicon.ico}" rel="stylesheet"/>
<link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.css}" rel="stylesheet"/>
<link href="../static/css/animate.css" th:href="@{/css/animate.css}" rel="stylesheet"/>
@ -34,10 +34,10 @@
<div class="dropdown profile-element"> <span>
<img src="img/profile_small.jpg" alt="image" class="img-circle" height="60" width="60"/></span>
<a data-toggle="dropdown" class="dropdown-toggle" href="#">
<span class="clear"><span class="block m-t-xs"><strong class="font-bold" th:text="${user.userName}">RuoYi</strong></span>
<span class="text-muted text-xs block"><span th:text="${user.dept.deptName}">研发部</span> <b class="caret"></b></span> </span> </a>
<span class="clear"><span class="block m-t-xs"><strong class="font-bold">[[${user.userName}]]</strong></span>
<span class="text-muted text-xs block"><span>[[${user.dept.deptName}]]</span> <b class="caret"></b></span> </span> </a>
<ul class="dropdown-menu animated fadeInRight m-t-xs">
<li><a class="menuItem" th:href="@{/system/profile}">个人信息</a></li>
<li><a class="menuItem" th:href="@{/system/user/profile}">个人信息</a></li>
<li class="divider"></li>
<li><a th:href="@{logout}">退出</a></li>
</ul>
@ -86,7 +86,7 @@
<li>
<span class="m-r-sm text-muted welcome-message">欢迎来到若依管理后台.</span>
</li>
<li class="hidden-xs"><a th:href="@{logout}"><i class="fa fa-sign-out"></i>退出</li>
<li class="hidden-xs"><a th:href="@{logout}"><i class="fa fa-sign-out"></i>退出</a></li>
</ul>
</nav>
</div>
@ -118,7 +118,7 @@
th:src="@{/system/main}" frameborder="0" seamless></iframe>
</div>
<div class="footer">
<div class="pull-right" th:text="'© '+${copyrightYear}+' RuoYi Copyright '"></div>
<div class="pull-right">© [[${copyrightYear}]] RuoYi Copyright </div>
</div>
</div>
<!--右侧部分结束-->

@ -35,7 +35,7 @@
<h2>若依后台管理框架</h2>
<p>一直想做一款后台管理系统看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统。她可以用于所有的Web应用程序<b>网站管理后台</b><b>网站会员中心</b><b>CMS</b><b>CRM</b><b>OA</b>等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。</p>
<p>
<b>当前版本:</b><span th:text="'v'+${version}"></span>
<b>当前版本:</b><span>v[[${version}]]</span>
</p>
<p>
<span class="label label-warning">&yen;免费开源</span>

@ -36,7 +36,7 @@
<div class="form-group">
<label class="col-sm-3 control-label">邮箱:</label>
<div class="col-sm-8">
<input class="form-control" type="text" name="email" name="email">
<input class="form-control" type="text" name="email">
</div>
</div>
<div class="form-group">
@ -45,6 +45,19 @@
<input class="form-control" type="text" name="phonenumber" id="phonenumber">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">性别:</label>
<div class="col-sm-8">
<div class="radio radio-info radio-inline">
<input type="radio" id="radio1" name="sex" value="0" checked="">
<label for="radio1"></label>
</div>
<div class="radio radio-danger radio-inline">
<input type="radio" id="radio2" name="sex" value="1">
<label for="radio2"></label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">状态:</label>
<div class="col-sm-8">

@ -31,7 +31,7 @@
<div class="form-group">
<label class="col-sm-3 control-label">邮箱:</label>
<div class="col-sm-8">
<input class="form-control" type="text" name="email" name="email" th:value="${user.email}">
<input class="form-control" type="text" name="email" th:value="${user.email}">
</div>
</div>
<div class="form-group">
@ -40,6 +40,19 @@
<input class="form-control" type="text" name="phonenumber" id="phonenumber" th:value="${user.phonenumber}">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">性别:</label>
<div class="col-sm-8">
<div class="radio radio-info radio-inline">
<input type="radio" id="radio1" th:field="*{user.sex}" name="sex" value="0">
<label for="radio1"></label>
</div>
<div class="radio radio-danger radio-inline">
<input type="radio" id="radio2" th:field="*{user.sex}" name="sex" value="1">
<label for="radio2"></label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">状态:</label>
<div class="col-sm-8">

@ -18,23 +18,35 @@
<div class="col-sm-6">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>个人资料</h5>
<h5>个人信息</h5>
<div class="ibox-tools">
<a class="dropdown-toggle" data-toggle="dropdown" href="profile.html#">
<i class="fa fa-edit"></i>
</a>
<ul class="dropdown-menu dropdown-user">
<li><a href="javascript:editProfile()">修改信息</a></li>
<li><a href="javascript:editHead()">修改头像</a></li>
<li><a href="javascript:editPasswod()">修改密码</a></li>
</ul>
</div>
</div>
<div class="contact-box">
<div class="col-sm-4">
<div class="text-center">
<img alt="image" class="img-circle m-t-xs img-responsive" src="/img/a2.jpg">
<img alt="image" class="img-circle m-t-xs img-responsive" src="/img/a5.jpg">
<div class="m-t-xs font-bold">CEO</div>
</div>
</div>
<div class="col-sm-8">
<h3><strong>admin</strong></h3>
<p><i class="fa fa-user"></i> 若依 / 管理员</p>
<p><i class="fa fa-phone"></i> 15888888888</p>
<p><i class="fa fa-group"></i> 开发一部 / 初级开发</p>
<p><i class="fa fa-transgender"></i> </p>
<p><i class="fa fa-envelope-o"></i> ruoyi@163.com</p>
<p><i class="fa fa-calendar"></i> 2018-05-20 13:14:00</p>
<h3><strong>[[${user.loginName}]]</strong></h3>
<p><i class="fa fa-user"></i> [[${user.userName}]] / [[${#strings.defaultString(roleGroup,'无角色')}]]
<p><i class="fa fa-phone"></i> [[${user.phonenumber}]]</p>
<p><i class="fa fa-group"></i> [[${user.dept.deptName}]] / [[${#strings.defaultString(postGroup,'无岗位')}]]</p>
<p><i class="fa fa-transgender"></i> [[${user.sex}]]</p>
<p><i class="fa fa-envelope-o"></i> [[${user.email}]]</p>
<p><i class="fa fa-calendar"></i> [[${user.createTime}]]</p>
</div>
<div class="clearfix"></div>
</a>
@ -43,7 +55,23 @@
</div>
</div>
</div>
<script src="../static/js/jquery.min.js" th:src="@{/js/jquery.min.js}"></script>
<script src="../static/js/bootstrap.min.js" th:src="@{/js/bootstrap.min.js}"></script>
<div th:include="include::footer"></div>
<script>
var userId = [[${user.userId}]];
/*用户信息-修改*/
function editProfile() {
var url = ctx + "system/user/edit/" + userId;
layer_showAuto("修改用户", url);
}
/*用户头像-修改*/
function editHead() {
$.modalAlert("敬请期待", "success");
}
/*用户密码-修改*/
function editPasswod() {
$.modalAlert("敬请期待", "success");
}
</script>
</body>
</html>

@ -45,7 +45,7 @@
$.ajax({
cache : true,
type : "post",
url : ctx + "/system/user/resetPwd",
url : ctx + "system/user/resetPwd",
data : $('#form-user-resetPwd').serialize(),
async : false,
error : function(request) {

Loading…
Cancel
Save