若依开源1.1.2发布
							
								
								
									
										6
									
								
								pom.xml
								
								
								
								
							
							
						
						| 
						 | 
				
			
			@ -5,8 +5,8 @@
 | 
			
		|||
 | 
			
		||||
	<groupId>com.ruoyi</groupId>
 | 
			
		||||
	<artifactId>RuoYi</artifactId>
 | 
			
		||||
	<version>1.1.1</version>
 | 
			
		||||
	<packaging>war</packaging>
 | 
			
		||||
	<version>1.1.2</version>
 | 
			
		||||
	<packaging>jar</packaging>
 | 
			
		||||
 | 
			
		||||
	<name>RuoYi</name>
 | 
			
		||||
	<description>若依管理系统</description>
 | 
			
		||||
| 
						 | 
				
			
			@ -43,12 +43,14 @@
 | 
			
		|||
		<dependency>
 | 
			
		||||
			<groupId>org.springframework.boot</groupId>
 | 
			
		||||
			<artifactId>spring-boot-starter</artifactId>
 | 
			
		||||
			<!--
 | 
			
		||||
			 <exclusions>
 | 
			
		||||
                <exclusion>
 | 
			
		||||
                    <artifactId>spring-boot-starter-tomcat</artifactId>
 | 
			
		||||
                    <groupId>org.springframework.boot</groupId>
 | 
			
		||||
                </exclusion>
 | 
			
		||||
            </exclusions> 
 | 
			
		||||
             -->
 | 
			
		||||
		</dependency>
 | 
			
		||||
 | 
			
		||||
		<!-- SpringBoot 测试 -->
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,10 +25,10 @@ insert into sys_dept values(100,  0,   '若依集团', 0, '马云', '15011112221
 | 
			
		|||
insert into sys_dept values(101,  100, '研发部门', 1, '马研', '15011112222', 'ry@qq.com', 0, 'admin', '2018-03-01', 'ry', '2018-03-01');
 | 
			
		||||
insert into sys_dept values(102,  100, '市场部门', 2, '马市', '15011112223', 'ry@qq.com', 0, 'admin', '2018-03-01', 'ry', '2018-03-01');
 | 
			
		||||
insert into sys_dept values(103,  100, '测试部门', 3, '马测', '15011112224', 'ry@qq.com', 0, 'admin', '2018-03-01', 'ry', '2018-03-01');
 | 
			
		||||
insert into sys_dept values(104,  100, '财务部门', 4, '马财', '15011112225', 'ry@qq.com', 1, 'admin', '2018-03-01', 'ry', '2018-03-01');
 | 
			
		||||
insert into sys_dept values(105,  100, '运维部门', 5, '马运', '15011112226', 'ry@qq.com', 1, 'admin', '2018-03-01', 'ry', '2018-03-01');
 | 
			
		||||
insert into sys_dept values(104,  100, '财务部门', 4, '马财', '15011112225', 'ry@qq.com', 0, 'admin', '2018-03-01', 'ry', '2018-03-01');
 | 
			
		||||
insert into sys_dept values(105,  100, '运维部门', 5, '马运', '15011112226', 'ry@qq.com', 0, 'admin', '2018-03-01', 'ry', '2018-03-01');
 | 
			
		||||
insert into sys_dept values(106,  101, '研发一部', 1, '马一', '15011112227', 'ry@qq.com', 0, 'admin', '2018-03-01', 'ry', '2018-03-01');
 | 
			
		||||
insert into sys_dept values(107,  101, '研发二部', 2, '马二', '15011112228', 'ry@qq.com', 1, 'admin', '2018-03-01', 'ry', '2018-03-01');
 | 
			
		||||
insert into sys_dept values(107,  101, '研发二部', 2, '马二', '15011112228', 'ry@qq.com', 0, 'admin', '2018-03-01', 'ry', '2018-03-01');
 | 
			
		||||
insert into sys_dept values(108,  102, '市场一部', 1, '马一', '15011112229', 'ry@qq.com', 0, 'admin', '2018-03-01', 'ry', '2018-03-01');
 | 
			
		||||
insert into sys_dept values(109,  102, '市场二部', 2, '马二', '15011112210', 'ry@qq.com', 1, 'admin', '2018-03-01', 'ry', '2018-03-01');
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -61,8 +61,8 @@ create table sys_user (
 | 
			
		|||
-- ----------------------------
 | 
			
		||||
-- 初始化-用户信息表数据
 | 
			
		||||
-- ----------------------------
 | 
			
		||||
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');
 | 
			
		||||
insert into sys_user values(1, 106, 'admin', '若依', 'yzz_ivy@163.com', '15088888888', '0', 'img/a5.jpg', '29c67a30398638269fe600f73a054934', '111111', 'N', 0, '维护中', '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', 0, '锁定中', 'admin', '2018-03-01', 'ry', '2018-03-01');
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- ----------------------------
 | 
			
		||||
| 
						 | 
				
			
			@ -1,6 +1,8 @@
 | 
			
		|||
package com.ruoyi.common.utils.security;
 | 
			
		||||
 | 
			
		||||
import org.apache.shiro.SecurityUtils;
 | 
			
		||||
import org.apache.shiro.subject.PrincipalCollection;
 | 
			
		||||
import org.apache.shiro.subject.SimplePrincipalCollection;
 | 
			
		||||
import org.apache.shiro.subject.Subject;
 | 
			
		||||
 | 
			
		||||
import com.ruoyi.project.system.user.domain.User;
 | 
			
		||||
| 
						 | 
				
			
			@ -28,6 +30,16 @@ public class ShiroUtils
 | 
			
		|||
        return (User) getSubjct().getPrincipal();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static void setUser(User user)
 | 
			
		||||
    {
 | 
			
		||||
        Subject subject = getSubjct();
 | 
			
		||||
        PrincipalCollection principalCollection = subject.getPrincipals();
 | 
			
		||||
        String realmName = principalCollection.getRealmNames().iterator().next();
 | 
			
		||||
        PrincipalCollection newPrincipalCollection = new SimplePrincipalCollection(user, realmName);
 | 
			
		||||
        // 重新加载Principal
 | 
			
		||||
        subject.runAs(newPrincipalCollection);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static Long getUserId()
 | 
			
		||||
    {
 | 
			
		||||
        return getUser().getUserId().longValue();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -58,6 +58,11 @@ public class BaseController
 | 
			
		|||
    {
 | 
			
		||||
        return ShiroUtils.getUser();
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public void setUser(User user)
 | 
			
		||||
    {
 | 
			
		||||
        ShiroUtils.setUser(user);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Long getUserId()
 | 
			
		||||
    {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,119 @@
 | 
			
		|||
package com.ruoyi.project.system.user.controller;
 | 
			
		||||
 | 
			
		||||
import org.apache.shiro.crypto.hash.Md5Hash;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Controller;
 | 
			
		||||
import org.springframework.ui.Model;
 | 
			
		||||
import org.springframework.web.bind.annotation.GetMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.PathVariable;
 | 
			
		||||
import org.springframework.web.bind.annotation.PostMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.RequestMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.ResponseBody;
 | 
			
		||||
import com.ruoyi.framework.aspectj.lang.annotation.Log;
 | 
			
		||||
import com.ruoyi.framework.web.controller.BaseController;
 | 
			
		||||
import com.ruoyi.framework.web.domain.Message;
 | 
			
		||||
import com.ruoyi.project.system.user.domain.User;
 | 
			
		||||
import com.ruoyi.project.system.user.service.IUserService;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 个人信息 业务处理
 | 
			
		||||
 * 
 | 
			
		||||
 * @author ruoyi
 | 
			
		||||
 */
 | 
			
		||||
@Controller
 | 
			
		||||
@RequestMapping("/system/user/profile")
 | 
			
		||||
public class ProfileController extends BaseController
 | 
			
		||||
{
 | 
			
		||||
    private String prefix = "system/user/profile";
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private IUserService userService;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 个人信息
 | 
			
		||||
     */
 | 
			
		||||
    @GetMapping()
 | 
			
		||||
    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";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @RequestMapping("/checkPassword")
 | 
			
		||||
    @ResponseBody
 | 
			
		||||
    public boolean checkPassword(String password)
 | 
			
		||||
    {
 | 
			
		||||
        User user = getUser();
 | 
			
		||||
        String encrypt = new Md5Hash(user.getLoginName() + password + user.getSalt()).toHex().toString();
 | 
			
		||||
        if (user.getPassword().equals(encrypt))
 | 
			
		||||
        {
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Log(title = "系统管理", action = "个人信息-重置密码")
 | 
			
		||||
    @GetMapping("/resetPwd/{userId}")
 | 
			
		||||
    public String resetPwd(@PathVariable("userId") Long userId, Model model)
 | 
			
		||||
    {
 | 
			
		||||
        User user = userService.selectUserById(userId);
 | 
			
		||||
        model.addAttribute("user", user);
 | 
			
		||||
        return prefix + "/resetPwd";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Log(title = "系统管理", action = "个人信息-重置密码")
 | 
			
		||||
    @PostMapping("/resetPwd")
 | 
			
		||||
    @ResponseBody
 | 
			
		||||
    public Message resetPwd(User user)
 | 
			
		||||
    {
 | 
			
		||||
        int rows = userService.resetUserPwd(user);
 | 
			
		||||
        if (rows > 0)
 | 
			
		||||
        {
 | 
			
		||||
            setUser(userService.selectUserById(user.getUserId()));
 | 
			
		||||
            return Message.ok();
 | 
			
		||||
        }
 | 
			
		||||
        return Message.error();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改用户
 | 
			
		||||
     */
 | 
			
		||||
    @Log(title = "系统管理", action = "个人信息-修改用户")
 | 
			
		||||
    @GetMapping("/edit/{userId}")
 | 
			
		||||
    public String edit(@PathVariable("userId") Long userId, Model model)
 | 
			
		||||
    {
 | 
			
		||||
        User user = userService.selectUserById(userId);
 | 
			
		||||
        model.addAttribute("user", user);
 | 
			
		||||
        return prefix + "/edit";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改用户
 | 
			
		||||
     */
 | 
			
		||||
    @Log(title = "系统管理", action = "个人信息-保存用户")
 | 
			
		||||
    @PostMapping("/update")
 | 
			
		||||
    @ResponseBody
 | 
			
		||||
    public Message update(User user)
 | 
			
		||||
    {
 | 
			
		||||
        if (userService.updateUser(user) > 0)
 | 
			
		||||
        {
 | 
			
		||||
            setUser(userService.selectUserById(user.getUserId()));
 | 
			
		||||
            return Message.ok();
 | 
			
		||||
        }
 | 
			
		||||
        return Message.error();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -109,7 +109,7 @@ public class UserController extends BaseController
 | 
			
		|||
    @ResponseBody
 | 
			
		||||
    public Message resetPwd(User user)
 | 
			
		||||
    {
 | 
			
		||||
        int rows = userService.updateUser(user);
 | 
			
		||||
        int rows = userService.resetUserPwd(user);
 | 
			
		||||
        if (rows > 0)
 | 
			
		||||
        {
 | 
			
		||||
            return Message.ok();
 | 
			
		||||
| 
						 | 
				
			
			@ -152,10 +152,10 @@ public class UserController extends BaseController
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 保存
 | 
			
		||||
     * 保存用户
 | 
			
		||||
     */
 | 
			
		||||
    @RequiresPermissions("system:user:save")
 | 
			
		||||
    @Log(title = "系统管理", action = "部门管理-保存部门")
 | 
			
		||||
    @Log(title = "系统管理", action = "用户管理-保存用户")
 | 
			
		||||
    @PostMapping("/save")
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    @ResponseBody
 | 
			
		||||
| 
						 | 
				
			
			@ -183,28 +183,4 @@ 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";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -58,7 +58,7 @@ public interface IUserService
 | 
			
		|||
     * @return 结果
 | 
			
		||||
     */
 | 
			
		||||
    public int saveUser(User user);
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改用户信息
 | 
			
		||||
     * 
 | 
			
		||||
| 
						 | 
				
			
			@ -67,6 +67,14 @@ public interface IUserService
 | 
			
		|||
     */
 | 
			
		||||
    public int updateUser(User user);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改用户密码信息
 | 
			
		||||
     * 
 | 
			
		||||
     * @param user 用户信息
 | 
			
		||||
     * @return 结果
 | 
			
		||||
     */
 | 
			
		||||
    public int resetUserPwd(User user);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验用户名称是否唯一
 | 
			
		||||
     * 
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -162,8 +162,19 @@ public class UserServiceImpl implements IUserService
 | 
			
		|||
     * @param user 用户信息
 | 
			
		||||
     * @return 结果
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public int updateUser(User user)
 | 
			
		||||
    {
 | 
			
		||||
        return userDao.updateUser(user);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改用户密码
 | 
			
		||||
     * 
 | 
			
		||||
     * @param user 用户信息
 | 
			
		||||
     * @return 结果
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public int resetUserPwd(User user)
 | 
			
		||||
    {
 | 
			
		||||
        user.randomSalt();
 | 
			
		||||
        user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
# 项目名称、版本、版权年份
 | 
			
		||||
ruoyi:
 | 
			
		||||
  name: RuoYi
 | 
			
		||||
  version: 1.1.1
 | 
			
		||||
  version: 1.1.2
 | 
			
		||||
  copyrightYear: 2018
 | 
			
		||||
 | 
			
		||||
#开发环境配置
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
		 Before Width: | Height: | Size: 40 KiB  | 
| 
		 Before Width: | Height: | Size: 13 KiB  | 
| 
		 Before Width: | Height: | Size: 49 KiB  | 
| 
		 Before Width: | Height: | Size: 7.9 KiB  | 
| 
		 Before Width: | Height: | Size: 18 KiB  | 
| 
		 Before Width: | Height: | Size: 10 KiB  | 
| 
		 Before Width: | Height: | Size: 10 KiB  | 
| 
		 Before Width: | Height: | Size: 16 KiB  | 
| 
		 Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB  | 
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
/*!
 | 
			
		||||
 *   ruoyi.css v1.1.1
 | 
			
		||||
 *   ruoyi.css
 | 
			
		||||
 *   Author: Ruoyi
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@ $("#form-dept-add").validate({
 | 
			
		|||
			remote: {
 | 
			
		||||
                url: ctx + "system/dept/checkDeptNameUnique",
 | 
			
		||||
                type: "post",
 | 
			
		||||
                dataType: "text",
 | 
			
		||||
                dataType: "json",
 | 
			
		||||
                data: {
 | 
			
		||||
                	"deptName" : function() {
 | 
			
		||||
                        return $("input[name='deptName']").val();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@ $("#form-dept-edit").validate({
 | 
			
		|||
			remote: {
 | 
			
		||||
                url: ctx + "system/dept/checkDeptNameUnique",
 | 
			
		||||
                type: "post",
 | 
			
		||||
                dataType: "text",
 | 
			
		||||
                dataType: "json",
 | 
			
		||||
                data: {
 | 
			
		||||
                	"deptId": function() {
 | 
			
		||||
                        return $("input[name='deptId']").val();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,7 @@ $("#form-dict-add").validate({
 | 
			
		|||
			remote: {
 | 
			
		||||
                url: ctx + "system/dict/checkDictTypeUnique",
 | 
			
		||||
                type: "post",
 | 
			
		||||
                dataType: "text",
 | 
			
		||||
                dataType: "json",
 | 
			
		||||
                data: {
 | 
			
		||||
                	name : function() {
 | 
			
		||||
                        return $.trim($("#dictType").val());
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,7 @@ $("#form-dict-edit").validate({
 | 
			
		|||
			remote: {
 | 
			
		||||
                url: ctx + "system/dict/checkDictTypeUnique",
 | 
			
		||||
                type: "post",
 | 
			
		||||
                dataType: "text",
 | 
			
		||||
                dataType: "json",
 | 
			
		||||
                data: {
 | 
			
		||||
                	dictId : function() {
 | 
			
		||||
                        return $.trim($("#dictId").val());
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@ $("#form-menu-add").validate({
 | 
			
		|||
			remote: {
 | 
			
		||||
                url: ctx + "system/menu/checkMenuNameUnique",
 | 
			
		||||
                type: "post",
 | 
			
		||||
                dataType: "text",
 | 
			
		||||
                dataType: "json",
 | 
			
		||||
                data: {
 | 
			
		||||
                	"menuName" : function() {
 | 
			
		||||
                        return $.trim($("#menuName").val());
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,7 +10,7 @@ $("#form-menu-edit").validate({
 | 
			
		|||
			remote: {
 | 
			
		||||
                url: ctx + "system/menu/checkMenuNameUnique",
 | 
			
		||||
                type: "post",
 | 
			
		||||
                dataType: "text",
 | 
			
		||||
                dataType: "json",
 | 
			
		||||
                data: {
 | 
			
		||||
                	"menuId": function() {
 | 
			
		||||
                        return $("input[name='menuId']").val();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,7 @@ $("#form-role-add").validate({
 | 
			
		|||
			remote: {
 | 
			
		||||
                url: ctx + "system/role/checkRoleNameUnique",
 | 
			
		||||
                type: "post",
 | 
			
		||||
                dataType: "text",
 | 
			
		||||
                dataType: "json",
 | 
			
		||||
                data: {
 | 
			
		||||
                	"roleName" : function() {
 | 
			
		||||
                        return $.trim($("#roleName").val());
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,7 @@ $("#form-role-edit").validate({
 | 
			
		|||
			remote: {
 | 
			
		||||
                url: ctx + "system/role/checkRoleNameUnique",
 | 
			
		||||
                type: "post",
 | 
			
		||||
                dataType: "text",
 | 
			
		||||
                dataType: "json",
 | 
			
		||||
                data: {
 | 
			
		||||
					"roleId": function() {
 | 
			
		||||
					    return $("input[name='roleId']").val();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@ $("#form-user-add").validate({
 | 
			
		|||
			remote: {
 | 
			
		||||
                url: ctx + "system/user/checkUserNameUnique",
 | 
			
		||||
                type: "post",
 | 
			
		||||
                dataType: "text",
 | 
			
		||||
                dataType: "json",
 | 
			
		||||
                data: {
 | 
			
		||||
                	name : function() {
 | 
			
		||||
                        return $.trim($("#loginName").val());
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,8 +33,8 @@
 | 
			
		|||
	<script src="../static/ajax/libs/bootstrap-table/extensions/export/bootstrap-table-export.js" th:src="@{/ajax/libs/bootstrap-table/extensions/export/bootstrap-table-export.js}"></script>
 | 
			
		||||
	<script src="../static/ajax/libs/bootstrap-table/extensions/export/tableExport.js" th:src="@{/ajax/libs/bootstrap-table/extensions/export/tableExport.js}"></script>
 | 
			
		||||
	<script src="../static/ajax/libs/layer/layer.min.js" th:src="@{/ajax/libs/layer/layer.min.js}"></script>
 | 
			
		||||
	<script src="../static/ruoyi/js/common.js?v=1.1.1" th:src="@{/ruoyi/js/common.js?v=1.1.1}"></script>
 | 
			
		||||
	<script src="../static/ruoyi/js/ry-ui.js?v=1.1.1" th:src="@{/ruoyi/js/ry-ui.js?v=1.1.1}"></script>
 | 
			
		||||
	<script src="../static/ruoyi/js/common.js?v=1.1.2" th:src="@{/ruoyi/js/common.js?v=1.1.2}"></script>
 | 
			
		||||
	<script src="../static/ruoyi/js/ry-ui.js?v=1.1.2" th:src="@{/ruoyi/js/ry-ui.js?v=1.1.2}"></script>
 | 
			
		||||
	<script th:inline="javascript"> var ctx = [[@{/}]]; </script>
 | 
			
		||||
	<script src="http://tajs.qq.com/stats?sId=62048022"></script>
 | 
			
		||||
</div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,8 +45,8 @@
 | 
			
		|||
                <a class="btn btn-success btn-outline" href="https://gitee.com/y_project/RuoYi" target="_blank">
 | 
			
		||||
                    <i class="fa fa-cloud"> </i> 访问码云
 | 
			
		||||
                </a>
 | 
			
		||||
                <a class="btn btn-white btn-bitbucket" href="https://www.oschina.net/p/ruoyi" target="_blank">
 | 
			
		||||
                    <i class="fa fa-home"></i> 访问博客
 | 
			
		||||
                <a class="btn btn-white btn-bitbucket" href="http://ruoyi.club/" target="_blank">
 | 
			
		||||
                    <i class="fa fa-home"></i> 访问主页
 | 
			
		||||
                </a>
 | 
			
		||||
            </p>
 | 
			
		||||
        </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -94,13 +94,35 @@
 | 
			
		|||
                    <div class="ibox-content no-padding">
 | 
			
		||||
                        <div class="panel-body">
 | 
			
		||||
                            <div class="panel-group" id="version">
 | 
			
		||||
                            <div class="panel panel-default">
 | 
			
		||||
                            	<div class="panel-heading">
 | 
			
		||||
                                        <h5 class="panel-title">
 | 
			
		||||
                                                <a data-toggle="collapse" data-parent="#version" href="#v11">v1.1.2</a><code class="pull-right">2018.05.07</code>
 | 
			
		||||
                                            </h5>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                    <div id="v11" class="panel-collapse collapse in">
 | 
			
		||||
                                        <div class="panel-body">
 | 
			
		||||
                                            <ol>
 | 
			
		||||
                                            	<li>新增个人信息修改</li>
 | 
			
		||||
												<li>菜单存在子菜单不允许删除</li>
 | 
			
		||||
												<li>菜单分配角色不允许删除</li>
 | 
			
		||||
												<li>角色分配人员不允许删除</li>
 | 
			
		||||
												<li>岗位使用后不允许删除</li>
 | 
			
		||||
												<li>保证用户的数据完整性加入事物</li>
 | 
			
		||||
												<li>新增环境使用手册、数据建模</li>
 | 
			
		||||
												<li>Thymeleaf升级到3.0</li>
 | 
			
		||||
												<li>支持非ROOT部署</li>
 | 
			
		||||
                                            </ol>
 | 
			
		||||
                                        </div>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                </div>
 | 
			
		||||
                                <div class="panel panel-default">
 | 
			
		||||
                            	<div class="panel-heading">
 | 
			
		||||
                                        <h5 class="panel-title">
 | 
			
		||||
                                                <a data-toggle="collapse" data-parent="#version" href="#v11">v1.1.1</a><code class="pull-right">2018.04.23</code>
 | 
			
		||||
                                            </h5>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                    <div id="v11" class="panel-collapse collapse in">
 | 
			
		||||
                                    <div id="v11" class="panel-collapse collapse">
 | 
			
		||||
                                        <div class="panel-body">
 | 
			
		||||
                                            <ol>
 | 
			
		||||
                                            	<li>新增表单构建器</li>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,90 @@
 | 
			
		|||
<!DOCTYPE html>
 | 
			
		||||
<html xmlns:th="http://www.w3.org/1999/xhtml">
 | 
			
		||||
<meta charset="utf-8">
 | 
			
		||||
<head th:include="include :: header"></head>
 | 
			
		||||
<body class="white-bg">
 | 
			
		||||
	<div class="wrapper wrapper-content animated fadeInRight ibox-content">
 | 
			
		||||
		<form class="form-horizontal m" id="form-user-edit">
 | 
			
		||||
			<input name="userId"  type="hidden"  th:value="${user.userId}" />
 | 
			
		||||
			<div class="form-group">
 | 
			
		||||
				<label class="col-sm-3 control-label ">登录名称:</label>
 | 
			
		||||
				<div class="col-sm-8">
 | 
			
		||||
					<input class="form-control" type="text" readonly="true" th:value="${user.loginName}"/>
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="form-group">
 | 
			
		||||
				<label class="col-sm-3 control-label">部门名称:</label>
 | 
			
		||||
				<div class="col-sm-8">
 | 
			
		||||
					<input class="form-control" type="text" readonly="true" th:value="${user.dept.deptName}">
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="form-group">
 | 
			
		||||
				<label class="col-sm-3 control-label">用户名称:</label>
 | 
			
		||||
				<div class="col-sm-8">
 | 
			
		||||
					<input class="form-control" type="text" name="userName" id="userName" th:value="${user.userName}">
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
			<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" th:value="${user.email}">
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="form-group">
 | 
			
		||||
				<label class="col-sm-3 control-label">手机:</label>
 | 
			
		||||
				<div class="col-sm-8">
 | 
			
		||||
					<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">
 | 
			
		||||
				<div class="form-control-static col-sm-offset-9">
 | 
			
		||||
					<button type="submit" class="btn btn-primary">提交</button>
 | 
			
		||||
					<button th:onclick="'javascript:layer_close()'" class="btn btn-danger" type="button">关闭</button>
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
		</form>
 | 
			
		||||
	</div>
 | 
			
		||||
	<div th:include="include::footer"></div>
 | 
			
		||||
	<script>
 | 
			
		||||
		$("#form-user-edit").validate({
 | 
			
		||||
			rules:{
 | 
			
		||||
				userName:{
 | 
			
		||||
					required:true,
 | 
			
		||||
				},
 | 
			
		||||
				password:{
 | 
			
		||||
					required:true,
 | 
			
		||||
					minlength: 6
 | 
			
		||||
				},
 | 
			
		||||
				email:{
 | 
			
		||||
					required:true,
 | 
			
		||||
					email:true
 | 
			
		||||
				},
 | 
			
		||||
				phonenumber:{
 | 
			
		||||
					required:true,
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			submitHandler:function(form){
 | 
			
		||||
				update();
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
		
 | 
			
		||||
		function update() {
 | 
			
		||||
			_ajax_save(ctx + "system/user/profile/update", $("#form-user-edit").serialize());
 | 
			
		||||
		}
 | 
			
		||||
	</script>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
| 
						 | 
				
			
			@ -25,9 +25,8 @@
 | 
			
		|||
                            <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>
 | 
			
		||||
                            <li><a href="javascript:edit()">修改信息</a></li>
 | 
			
		||||
                            <li><a href="javascript:resetPwd()">修改密码</a></li>
 | 
			
		||||
                        </ul>
 | 
			
		||||
                       
 | 
			
		||||
                    </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -35,7 +34,7 @@
 | 
			
		|||
                    <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/a5.jpg">
 | 
			
		||||
	                                <img alt="image" class="img-circle m-t-xs img-responsive" src="/img/profilel.jpg">
 | 
			
		||||
	                                <div class="m-t-xs font-bold">CEO</div>
 | 
			
		||||
	                            </div>
 | 
			
		||||
	                        </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -60,17 +59,14 @@
 | 
			
		|||
    <script>
 | 
			
		||||
        var userId = [[${user.userId}]];
 | 
			
		||||
	    /*用户信息-修改*/
 | 
			
		||||
	    function editProfile() {
 | 
			
		||||
	        var url = ctx + "system/user/edit/" + userId;
 | 
			
		||||
	    function edit() {
 | 
			
		||||
	        var url = ctx + "system/user/profile/edit/" + userId;
 | 
			
		||||
	        layer_showAuto("修改用户", url);
 | 
			
		||||
	    }
 | 
			
		||||
	    /*用户头像-修改*/
 | 
			
		||||
	    function editHead() {
 | 
			
		||||
	    	$.modalAlert("敬请期待", "success");
 | 
			
		||||
	    }
 | 
			
		||||
	    /*用户密码-修改*/
 | 
			
		||||
	    function editPasswod() {
 | 
			
		||||
	    	$.modalAlert("敬请期待", "success");
 | 
			
		||||
	    /*用户管理-重置密码*/
 | 
			
		||||
	    function resetPwd() {
 | 
			
		||||
	        var url = ctx + 'system/user/profile/resetPwd/' + userId;
 | 
			
		||||
	        layer_show("重置密码", url, '800', '500');
 | 
			
		||||
	    }
 | 
			
		||||
	</script>
 | 
			
		||||
</body>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,113 @@
 | 
			
		|||
<!DOCTYPE html>
 | 
			
		||||
<html xmlns:th="http://www.w3.org/1999/xhtml">
 | 
			
		||||
<meta charset="utf-8">
 | 
			
		||||
<head th:include="include :: header"></head>
 | 
			
		||||
<body class="white-bg">
 | 
			
		||||
	<div class="wrapper wrapper-content animated fadeInRight ibox-content">
 | 
			
		||||
		<form class="form-horizontal m" id="form-user-resetPwd">
 | 
			
		||||
			<input name="userId"  type="hidden"  th:value="${user.userId}" />
 | 
			
		||||
			<div class="form-group">
 | 
			
		||||
				<label class="col-sm-3 control-label ">登录名称:</label>
 | 
			
		||||
				<div class="col-sm-8">
 | 
			
		||||
					<input class="form-control" type="text" readonly="true" name="loginName" th:value="${user.loginName}"/>
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="form-group">
 | 
			
		||||
				<label class="col-sm-3 control-label">旧密码:</label>
 | 
			
		||||
				<div class="col-sm-8">
 | 
			
		||||
					<input class="form-control" type="password" name="oldPassword" id="oldPassword">
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="form-group">
 | 
			
		||||
				<label class="col-sm-3 control-label">新密码:</label>
 | 
			
		||||
				<div class="col-sm-8">
 | 
			
		||||
					<input class="form-control" type="password" name="password" id="password">
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="form-group">
 | 
			
		||||
				<label class="col-sm-3 control-label">再次确认:</label>
 | 
			
		||||
				<div class="col-sm-8">
 | 
			
		||||
					<input class="form-control" type="password" name="confirm" id="confirm">
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="form-group">
 | 
			
		||||
				<div class="form-control-static col-sm-offset-9">
 | 
			
		||||
					<button type="submit" class="btn btn-primary">提交</button>
 | 
			
		||||
					<button th:onclick="'javascript:layer_close()'" class="btn btn-danger" type="button">关闭</button>
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
		</form>
 | 
			
		||||
	</div>
 | 
			
		||||
	<div th:include="include :: footer"></div>
 | 
			
		||||
 | 
			
		||||
	<script>
 | 
			
		||||
		$("#form-user-resetPwd").validate({
 | 
			
		||||
			rules:{
 | 
			
		||||
				oldPassword:{
 | 
			
		||||
					required:true,
 | 
			
		||||
					minlength: 6,
 | 
			
		||||
					remote: {
 | 
			
		||||
	                    url: ctx + "system/user/profile/checkPassword",
 | 
			
		||||
	                    type: "get",
 | 
			
		||||
	                    dataType: "json",
 | 
			
		||||
	                    data: {
 | 
			
		||||
	                        password: function() {
 | 
			
		||||
	                            return $("input[name='oldPassword']").val();
 | 
			
		||||
	                        }
 | 
			
		||||
	                    }
 | 
			
		||||
	                }
 | 
			
		||||
				},
 | 
			
		||||
				password: {
 | 
			
		||||
	                required: true,
 | 
			
		||||
	                minlength: 6
 | 
			
		||||
	            },
 | 
			
		||||
	            confirm: {
 | 
			
		||||
	                required: true,
 | 
			
		||||
	                equalTo: "#password"
 | 
			
		||||
	            }
 | 
			
		||||
			},
 | 
			
		||||
			messages: {
 | 
			
		||||
	            oldPassword: {
 | 
			
		||||
	                required: "请输入原密码",
 | 
			
		||||
	                remote: "原密码错误"
 | 
			
		||||
	            },
 | 
			
		||||
	            password: {
 | 
			
		||||
	                required: "请输入新密码",
 | 
			
		||||
	                minlength: "密码不能小于6个字符"
 | 
			
		||||
	            },
 | 
			
		||||
	            confirm: {
 | 
			
		||||
	                required: "请再次输入新密码",
 | 
			
		||||
	                equalTo: "两次密码输入不一致"
 | 
			
		||||
	            }
 | 
			
		||||
 | 
			
		||||
	        },
 | 
			
		||||
			submitHandler:function(form){
 | 
			
		||||
				resetPwd();
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
		
 | 
			
		||||
		function resetPwd() {
 | 
			
		||||
			$.ajax({
 | 
			
		||||
				cache : true,
 | 
			
		||||
				type : "post",
 | 
			
		||||
				url : ctx + "system/user/profile/resetPwd",
 | 
			
		||||
				data : $('#form-user-resetPwd').serialize(),
 | 
			
		||||
				async : false,
 | 
			
		||||
				error : function(request) {
 | 
			
		||||
					parent.layer.alert("系统错误");
 | 
			
		||||
				},
 | 
			
		||||
				success : function(data) {
 | 
			
		||||
					if (data.code == 0) {
 | 
			
		||||
						parent.layer.msg("修改成功,正在刷新数据请稍后……",{icon:1,time: 500,shade: [0.1,'#fff']},function(){
 | 
			
		||||
							window.parent.location.reload();
 | 
			
		||||
						});
 | 
			
		||||
					} else {
 | 
			
		||||
						parent.layer.alert(data.m , {icon: 2,title:"系统提示"});
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
	</script>
 | 
			
		||||
</body>
 | 
			
		||||
 | 
			
		||||
</html>
 | 
			
		||||