diff --git a/README.MD b/README.MD index 7b20ae0..bbc01fc 100644 --- a/README.MD +++ b/README.MD @@ -8,11 +8,11 @@ Aurora是一个简单高效的后台管理系统。项目基础框架采用全 ### Aurora1.2 版本更新计划 -- 用户个人中心、安全中心 -- 部门管理、组织机构展示 -- 短信模块、生日自动通知 -- 站内信模块、消息通知 -- 请假管理、Activiti工作流 +- del>用户个人中心 +- 部门管理,组织结构 +- 短信模块 +- 站内信模块 +- 工作流 ### 预览地址,临时域名 [http://xiswl.xyz](http://xiswl.xyz) diff --git a/src/main/java/me/aurora/app/rest/system/DepartmentController.java b/src/main/java/me/aurora/app/rest/system/DepartmentController.java index bcebd8f..07da205 100644 --- a/src/main/java/me/aurora/app/rest/system/DepartmentController.java +++ b/src/main/java/me/aurora/app/rest/system/DepartmentController.java @@ -21,7 +21,6 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -139,7 +138,7 @@ public class DepartmentController { * @return */ @Log("删除部门") - @RequiresPermissions (value={"admin", "menu:all","menu:delete"}, logical= Logical.OR) + @RequiresPermissions (value={"admin", "department:all","department:delete"}, logical= Logical.OR) @DeleteMapping(value = "/delete") public ResponseEntity delete(@RequestParam Long id){ log.warn("REST request to delete Department : {}" +id); diff --git a/src/main/java/me/aurora/app/rest/system/MenuController.java b/src/main/java/me/aurora/app/rest/system/MenuController.java index 514c519..9341f0e 100644 --- a/src/main/java/me/aurora/app/rest/system/MenuController.java +++ b/src/main/java/me/aurora/app/rest/system/MenuController.java @@ -24,10 +24,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * @author 郑杰 @@ -72,6 +69,25 @@ public class MenuController { return menuVoList; } + /** + * 构建上级类目树形菜单 + */ + @GetMapping(value = "/buildMenu") + public Object buildMenu(){ + + List list = new ArrayList<>(); + + Menu menu = new Menu(); + menu.setId(0L); + menu.setName("顶级类目"); + menu.setPid(null); + + list.add(menu); + + List> mapList = menuService.buildMenu(list); + return mapList; + } + /** * 跳转到列表页面 * @return @@ -109,10 +125,6 @@ public class MenuController { @RequiresPermissions (value={"admin", "menu:all","menu:add"}, logical= Logical.OR) @GetMapping(value = "/toAddPage") public ModelAndView toAddPage(){ - List menus = menuService.findAllMenus(); - // 获取request - HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); - request.setAttribute("topMenus",menus); return new ModelAndView("/system/menu/add"); } @@ -142,11 +154,9 @@ public class MenuController { @GetMapping(value = "/toUpdatePage") public ModelAndView toUpdatePage(@RequestParam Long id){ Menu menu = menuService.findById(id); - List menus = menuService.findAllMenus(); // 获取request HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); String rolesSelect = roleService.getRoles(menu.getRoles()); - request.setAttribute("topMenus",menus); request.setAttribute("menu",menuMapper.toDto(menu,rolesSelect)); return new ModelAndView("/system/menu/update"); } diff --git a/src/main/java/me/aurora/app/rest/system/PermissionController.java b/src/main/java/me/aurora/app/rest/system/PermissionController.java index de55294..3bdc6d2 100644 --- a/src/main/java/me/aurora/app/rest/system/PermissionController.java +++ b/src/main/java/me/aurora/app/rest/system/PermissionController.java @@ -38,7 +38,17 @@ public class PermissionController { @GetMapping(value = "/getAllPermissions") public Object getAllRole(){ - List> permissionList = permissionService.buildPermissionTree(permissionService.findByPid(0)); + List> permissionList = permissionService.buildPermissionTree(permissionService.findByPid(0,false)); + return permissionList; + } + + /** + * 用于上级权限 + * @return + */ + @GetMapping(value = "/getTopPermissions") + public Object getTopPermissions(){ + List> permissionList = permissionService.buildTopPermissionTree(permissionService.findByPid(0,true)); return permissionList; } @@ -80,10 +90,6 @@ public class PermissionController { @RequiresPermissions (value={"admin", "permission:all","permission:add"}, logical= Logical.OR) @GetMapping(value = "/toAddPage") public ModelAndView toAddPage(){ - List permissionList = permissionService.findByPid(0); - // 获取request - HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); - request.setAttribute("topPermissions",permissionList); return new ModelAndView("/system/permission/add"); } @@ -111,8 +117,6 @@ public class PermissionController { Permission permission = permissionService.findById(id); // 获取request HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); - List permissionList = permissionService.findByPid(0); - request.setAttribute("topPermissions",permissionList); request.setAttribute("permission",perMissionMapper.toDto(permission)); return new ModelAndView("/system/permission/update"); } diff --git a/src/main/java/me/aurora/app/rest/user/UserController.java b/src/main/java/me/aurora/app/rest/user/UserController.java index 54194a3..f04190b 100644 --- a/src/main/java/me/aurora/app/rest/user/UserController.java +++ b/src/main/java/me/aurora/app/rest/user/UserController.java @@ -24,6 +24,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; +import java.time.LocalDate; import java.util.Map; /** @@ -211,4 +212,79 @@ public class UserController { userService.delete(userService.findById(id)); return ResponseEntity.ok(); } + + /** + * 去个人中心 + * @param model + * @return + */ + @GetMapping("/info") + public ModelAndView info(Model model) { + User user = (User) SecurityUtils.getSubject().getPrincipal(); + user = userService.findById(user.getId()); + model.addAttribute("userInfo",userMapper.toDto(user)); + return new ModelAndView("/user/info"); + } + + /** + * 修改资料 + * @param result + * @return + */ + @PutMapping(value = "/updateInfo") + public ResponseEntity updateInfo(@Validated(User.UpdateInfo.class) @RequestBody User result) { + + User user = userService.findById(result.getId()); + + user = userService.findById(user.getId()); + user.setAvatar(result.getAvatar()); + user.setEmail(result.getEmail()); + + userService.save(user); + + return ResponseEntity.ok(); + } + + /** + * 检查密码 + * @param id + * @param password + * @return + */ + @GetMapping(value = "/checkPass") + public ResponseEntity checkPass(@RequestParam Long id,@RequestParam String password) { + + User user = userService.findById(id); + password = EncryptHelper.encrypt(password); + if(user.getPassword().equals(password)){ + return ResponseEntity.ok(); + } else { + return ResponseEntity.error(); + } + } + + /** + * 修改密码 + * @param id + * @param password + * @param oldPwd + * @return + */ + @GetMapping(value = "/resetPwd") + public ResponseEntity resetPwd(@RequestParam Long id,@RequestParam String password,@RequestParam String oldPwd) { + + User user = userService.findById(id); + password = EncryptHelper.encrypt(password); + oldPwd = EncryptHelper.encrypt(oldPwd); + + if(! user.getPassword().equals(oldPwd)){ + return ResponseEntity.error("原始密码错误"); + } else { + user.setPassword(password); + } + userService.save(user); + return ResponseEntity.ok(); + } + + } diff --git a/src/main/java/me/aurora/config/shiro/ShiroRealm.java b/src/main/java/me/aurora/config/shiro/ShiroRealm.java index 1c1517b..0ba8e68 100644 --- a/src/main/java/me/aurora/config/shiro/ShiroRealm.java +++ b/src/main/java/me/aurora/config/shiro/ShiroRealm.java @@ -93,7 +93,6 @@ public class ShiroRealm extends AuthorizingRealm { if (enabled.equals(user.getEnabled())) { throw new LockedAccountException("账号已被锁定,请联系管理员!"); } - userService.checkLastLoginTime(user); SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, password, getName()); return info; } diff --git a/src/main/java/me/aurora/domain/Department.java b/src/main/java/me/aurora/domain/Department.java index 95bfe0d..9b2f26e 100644 --- a/src/main/java/me/aurora/domain/Department.java +++ b/src/main/java/me/aurora/domain/Department.java @@ -25,10 +25,10 @@ public class Department implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @NotNull(groups = {Department.Update.class}) + @NotNull(groups = {Update.class}) private Long id; - @NotBlank(groups = {Department.New.class, Department.Update.class}) + @NotBlank(groups = {New.class, Update.class}) @Column(name = "name",nullable = false) private String name; @@ -39,7 +39,7 @@ public class Department implements Serializable { * 上级部门ID */ @Column(name = "pid",nullable = false) - @NotNull(groups = {Department.New.class, Department.Update.class}) + @NotNull(groups = {New.class, Update.class}) private Integer pid; @ManyToMany diff --git a/src/main/java/me/aurora/domain/User.java b/src/main/java/me/aurora/domain/User.java index 68303fa..42baa7b 100644 --- a/src/main/java/me/aurora/domain/User.java +++ b/src/main/java/me/aurora/domain/User.java @@ -12,6 +12,7 @@ import javax.persistence.*; import javax.validation.constraints.NotNull; import java.io.Serializable; import java.sql.Timestamp; +import java.time.LocalDate; import java.util.Set; /** @@ -28,33 +29,36 @@ public class User implements Serializable { @Id @Column(unique = true) @GeneratedValue(strategy = GenerationType.IDENTITY) - @NotNull(groups = {Update.class}) + @NotNull(groups = {Update.class,UpdateInfo.class}) private Long id; @Column(unique = true,nullable = false) @NotBlank(groups = {New.class,Update.class}) private String username; - @NotBlank(groups = {New.class,Update.class}) + @NotNull(groups = {New.class,Update.class}) + private String sex; + + @NotNull(groups = {New.class,Update.class}) + private LocalDate birthday; + @Column(nullable = false) private String password; - @NotBlank(groups = {New.class,Update.class}) + @NotBlank(groups = {New.class,Update.class,UpdateInfo.class}) @Column(unique = true,nullable = false) private String email; private Integer enabled=1; @Column(nullable = false) + @NotBlank(groups = {UpdateInfo.class}) private String avatar; @Column @CreationTimestamp private Timestamp createDateTime; - @Column - private Timestamp lastLoginTime; - @ManyToMany @JoinTable(name = "zj_users_roles", joinColumns = {@JoinColumn(name = "user_id",referencedColumnName = "id")}, inverseJoinColumns = {@JoinColumn(name = "role_id",referencedColumnName = "id")}) private Set roles; @@ -71,6 +75,7 @@ public class User implements Serializable { public interface New{}; public interface Update{}; + public interface UpdateInfo{}; @Override public String toString() { @@ -82,7 +87,6 @@ public class User implements Serializable { ", enabled=" + enabled + ", avatar='" + avatar + '\'' + ", createDateTime=" + createDateTime + - ", lastLoginTime=" + lastLoginTime + '}'; } } diff --git a/src/main/java/me/aurora/service/MenuService.java b/src/main/java/me/aurora/service/MenuService.java index d1699e9..a52383a 100644 --- a/src/main/java/me/aurora/service/MenuService.java +++ b/src/main/java/me/aurora/service/MenuService.java @@ -90,4 +90,11 @@ public interface MenuService { */ @CacheEvict(allEntries = true) void update(Menu menu, Menu oldMenu, String roles); + + /** + * 构建树形菜单 + * @param list + * @return + */ + List> buildMenu(List list); } diff --git a/src/main/java/me/aurora/service/PermissionService.java b/src/main/java/me/aurora/service/PermissionService.java index 97f1b0b..2c6ba06 100644 --- a/src/main/java/me/aurora/service/PermissionService.java +++ b/src/main/java/me/aurora/service/PermissionService.java @@ -79,10 +79,10 @@ public interface PermissionService { /** * 根据上级类目ID查询权限 * @param pid + * @param isTop * @return */ - @Cacheable(key = "'pid:'+#p0") - List findByPid(int pid); + List findByPid(int pid,Boolean isTop); /** * 根据角色获取所有权限 @@ -90,4 +90,11 @@ public interface PermissionService { * @return */ List findByRoles(Set roles); + + /** + * 构建顶级权限树 + * @param byPid + * @return + */ + List> buildTopPermissionTree(List byPid); } diff --git a/src/main/java/me/aurora/service/UserService.java b/src/main/java/me/aurora/service/UserService.java index 4c9b31e..af00d54 100644 --- a/src/main/java/me/aurora/service/UserService.java +++ b/src/main/java/me/aurora/service/UserService.java @@ -66,13 +66,6 @@ public interface UserService { @CacheEvict(allEntries = true) void update(User user, String roles); - /** - * 更新最近登录时间 - * @param user - */ - @CacheEvict(allEntries = true) - void checkLastLoginTime(User user); - /** * 删除用户 * @param id @@ -88,4 +81,11 @@ public interface UserService { */ @CacheEvict(allEntries = true) void updateEnabled(User user); + + /** + * 保存 + * @param user + */ + @CacheEvict(allEntries = true) + void save(User user); } diff --git a/src/main/java/me/aurora/service/dto/UserDTO.java b/src/main/java/me/aurora/service/dto/UserDTO.java index 04966ff..4fd6a01 100644 --- a/src/main/java/me/aurora/service/dto/UserDTO.java +++ b/src/main/java/me/aurora/service/dto/UserDTO.java @@ -4,6 +4,7 @@ import lombok.Data; import java.io.Serializable; import java.sql.Timestamp; +import java.time.LocalDate; import java.util.Set; /** @@ -28,7 +29,9 @@ public class UserDTO implements Serializable { private String departmentName; - private Timestamp createDateTime; + private String sex; - private Timestamp lastLoginTime; + private LocalDate birthday; + + private Timestamp createDateTime; } diff --git a/src/main/java/me/aurora/service/impl/MenuServiceImpl.java b/src/main/java/me/aurora/service/impl/MenuServiceImpl.java index 5fb9e1c..0c7d9f0 100644 --- a/src/main/java/me/aurora/service/impl/MenuServiceImpl.java +++ b/src/main/java/me/aurora/service/impl/MenuServiceImpl.java @@ -225,4 +225,35 @@ public class MenuServiceImpl implements MenuService { } } } + + @Override + public List> buildMenu(List list) { + + List> maps = new LinkedList<>(); + list.forEach(menu -> { + if (menu!=null){ + List menus = new ArrayList<>(); + Map map = new HashMap<>(16); + map.put("id",menu.getId()); + map.put("name",menu.getName()); + + if(menu.getId().equals(0L)){ + menus = menuRepo.findByPid(0); + } + + if(menus!=null && menus.size()!=0){ + + /** + * 只遍历一级类目 + */ + if(menu.getId().equals(0L)){ + map.put("children",buildMenu(menus)); + } + } + maps.add(map); + } + } + ); + return maps; + } } diff --git a/src/main/java/me/aurora/service/impl/PermissionServiceImpl.java b/src/main/java/me/aurora/service/impl/PermissionServiceImpl.java index a55f788..79d6cfd 100644 --- a/src/main/java/me/aurora/service/impl/PermissionServiceImpl.java +++ b/src/main/java/me/aurora/service/impl/PermissionServiceImpl.java @@ -86,6 +86,37 @@ public class PermissionServiceImpl implements PermissionService { return permissionRepo.findAll(); } + @Override + public List> buildTopPermissionTree(List permissions) { + List> maps = new LinkedList<>(); + permissions.forEach(permission -> { + if (permission!=null){ + List permissionList = new ArrayList<>(); + Map map = new HashMap<>(16); + map.put("id",permission.getId()); + String name = !StrUtil.isEmpty(permission.getRemark())?permission.getRemark():permission.getPerms(); + map.put("name",name); + + if(permission.getId().equals(0L)){ + permissionList = permissionRepo.findByPid(0); + } + + if(permissionList!=null && permissionList.size()!=0){ + + /** + * 只遍历一级类目 + */ + if(permission.getId().equals(0L)){ + map.put("children",buildTopPermissionTree(permissionList)); + } + } + maps.add(map); + } + } + ); + return maps; + } + @Override public List> buildPermissionTree(List permissions) { List> maps = new LinkedList<>(); @@ -109,8 +140,19 @@ public class PermissionServiceImpl implements PermissionService { } @Override - public List findByPid(int pid) { - return permissionRepo.findByPid(pid); + public List findByPid(int pid,Boolean isTop) { + + List list = new ArrayList<>(); + if(isTop){ + Permission permission = new Permission(); + permission.setId(0L); + permission.setPerms("顶级类目"); + permission.setPid(null); + list.add(permission); + } else { + list.addAll(permissionRepo.findByPid(pid)); + } + return list; } @Override diff --git a/src/main/java/me/aurora/service/impl/UserServiceImpl.java b/src/main/java/me/aurora/service/impl/UserServiceImpl.java index 23201a3..0e8eada 100644 --- a/src/main/java/me/aurora/service/impl/UserServiceImpl.java +++ b/src/main/java/me/aurora/service/impl/UserServiceImpl.java @@ -10,6 +10,7 @@ import me.aurora.service.RoleService; import me.aurora.service.UserService; import me.aurora.service.dto.UserDTO; import me.aurora.service.mapper.UserMapper; +import me.aurora.util.AuroraConstant; import me.aurora.util.EncryptHelper; import me.aurora.util.PageUtil; import me.aurora.config.exception.AuroraException; @@ -84,7 +85,7 @@ public class UserServiceImpl implements UserService { if(userRepo.findByEmail(user.getEmail())!=null){ throw new AuroraException(HttpStatus.HTTP_BAD_REQUEST,"用户邮箱已存在"); } - user.setPassword(EncryptHelper.encrypt(user.getPassword())); + user.setPassword(AuroraConstant.PWD); Set roleSet = new HashSet<>(); for(String roleId:roles.split(",")){ Role role = new Role(); @@ -108,7 +109,6 @@ public class UserServiceImpl implements UserService { throw new AuroraException(HttpStatus.HTTP_BAD_REQUEST,"用户邮箱已存在"); } old = userRepo.findById(user.getId()).get(); - old.setPassword(EncryptHelper.encrypt(user.getPassword())); old.setUsername(user.getUsername()); old.setEmail(user.getEmail()); old.setDepartment(user.getDepartment()); @@ -123,14 +123,6 @@ public class UserServiceImpl implements UserService { userRepo.save(old); } - - @Override - @Transactional(rollbackFor = Exception.class) - public void checkLastLoginTime(User user) { - user.setLastLoginTime(new Timestamp(System.currentTimeMillis())); - userRepo.save(user); - } - @Override @Transactional(rollbackFor = Exception.class) public void delete(User user) { @@ -157,4 +149,9 @@ public class UserServiceImpl implements UserService { user.setEnabled(user.getEnabled()==1?0:1); userRepo.save(user); } + + @Override + public void save(User user) { + userRepo.save(user); + } } diff --git a/src/main/java/me/aurora/service/mapper/UserMapper.java b/src/main/java/me/aurora/service/mapper/UserMapper.java index f35d712..f665fa9 100644 --- a/src/main/java/me/aurora/service/mapper/UserMapper.java +++ b/src/main/java/me/aurora/service/mapper/UserMapper.java @@ -21,5 +21,18 @@ public interface UserMapper extends EntityMapper{ */ @Mapping(source = "rolesSelect",target = "rolesSelect") @Mapping(source = "user.department.name",target = "departmentName") + @Mapping(source = "user.sex",target = "sex") + @Mapping(source = "user.birthday",target = "birthday") UserDTO toDto(User user,String rolesSelect); + + /** + * 自定义转换 + * @param user + * @return + */ + @Mapping(source = "user.department.name",target = "departmentName") + @Override + UserDTO toDto(User user); + + } diff --git a/src/main/java/me/aurora/util/AuroraConstant.java b/src/main/java/me/aurora/util/AuroraConstant.java index ea36bf7..455c7ac 100644 --- a/src/main/java/me/aurora/util/AuroraConstant.java +++ b/src/main/java/me/aurora/util/AuroraConstant.java @@ -7,6 +7,11 @@ package me.aurora.util; */ public class AuroraConstant { + /** + * 在添加时,如需手动添加密码,请使用js的MD5进行加密,参考登录页面,后台再次进行加密,保存到数据库,默认密码:123456 + */ + public static final String PWD = "36318d4cc46eb68050b8b81ebc620f05"; + public static final String SUCCESS = "success"; /** diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4b79210..412cbce 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -134,4 +134,4 @@ aurora: unauthorizedUrl: /exception/403 # 是否开启 AOP 日志,默认开启 openAopLog: true - userAvatar: https://i.loli.net/2018/08/16/5b75166b3157a.jpg \ No newline at end of file + userAvatar: https://i.loli.net/2018/10/27/5bd4223fa208a.jpg \ No newline at end of file diff --git a/src/main/resources/sql/aurora.sql b/src/main/resources/sql/aurora.sql index fd05eda..82434eb 100644 --- a/src/main/resources/sql/aurora.sql +++ b/src/main/resources/sql/aurora.sql @@ -11,7 +11,7 @@ Target Server Version : 50559 File Encoding : 65001 - Date: 27/10/2018 13:41:56 + Date: 27/10/2018 18:34:02 */ SET NAMES utf8mb4; @@ -165,24 +165,6 @@ CREATE TABLE `zj_job` ( INSERT INTO `zj_job` VALUES (1, 'myTaskTest', '0/5 * * * * ?', 'test', '测试', '带参数测试', '1', '2018-10-25 20:15:57'); INSERT INTO `zj_job` VALUES (2, 'myTaskTest', '0/6 * * * * ?', 'test1', '', '不带参数测试', '1', '2018-10-15 16:16:44'); --- ---------------------------- --- Table structure for zj_job_log --- ---------------------------- -DROP TABLE IF EXISTS `zj_job_log`; -CREATE TABLE `zj_job_log` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `baen_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `createTime` datetime NULL DEFAULT NULL, - `cron_expression` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `error_msg` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `job_id` bigint(20) NULL DEFAULT NULL, - `method_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `params` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `status` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `times` bigint(20) NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - -- ---------------------------- -- Table structure for zj_menu -- ---------------------------- @@ -202,7 +184,7 @@ CREATE TABLE `zj_menu` ( `sys` bit(1) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `UK_cbhg0bi3f1emxkhqqtvca9btx`(`soft`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 36 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of zj_menu @@ -296,7 +278,7 @@ CREATE TABLE `zj_permission` ( `pid` int(11) NOT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `UK_djtxn2vldlgrkfk21d155b48i`(`perms`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 45 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 51 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of zj_permission @@ -341,6 +323,11 @@ INSERT INTO `zj_permission` VALUES (40, 'job:add', '新增任务', '2018-10-06 1 INSERT INTO `zj_permission` VALUES (41, 'job:status', '任务状态修改', '2018-10-06 12:29:45', '2018-10-06 12:29:45', 37); INSERT INTO `zj_permission` VALUES (42, 'job:update', '更新任务', '2018-10-06 12:30:00', '2018-10-06 12:30:00', 37); INSERT INTO `zj_permission` VALUES (43, 'job:delete', '删除任务', '2018-10-06 12:30:16', '2018-10-06 12:30:16', 37); +INSERT INTO `zj_permission` VALUES (45, 'department:all', '部门管理', '2018-10-27 17:26:29', '2018-10-27 18:12:14', 0); +INSERT INTO `zj_permission` VALUES (46, 'department:add', '新增部门', '2018-10-27 17:27:02', '2018-10-27 17:27:02', 45); +INSERT INTO `zj_permission` VALUES (47, 'department:update', '修改部门', '2018-10-27 17:27:48', '2018-10-27 17:27:48', 45); +INSERT INTO `zj_permission` VALUES (48, 'department:delete', '删除部门', '2018-10-27 17:28:13', '2018-10-27 17:28:13', 45); +INSERT INTO `zj_permission` VALUES (49, 'department:select', '部门查询', '2018-10-27 17:28:29', '2018-10-27 17:28:29', 45); -- ---------------------------- -- Table structure for zj_permissions_roles @@ -458,21 +445,22 @@ CREATE TABLE `zj_user` ( `createDateTime` datetime NULL DEFAULT NULL, `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `enabled` bigint(20) NULL DEFAULT NULL, - `lastLoginTime` datetime NULL DEFAULT NULL, `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `department_id` bigint(20) NULL DEFAULT NULL, + `sex` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `birthday` date NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `UK_kpubos9gc2cvtkb0thktkbkes`(`email`) USING BTREE, INDEX `FKqfitoyy9x1gctukdi020j4224`(`department_id`) USING BTREE, CONSTRAINT `FKqfitoyy9x1gctukdi020j4224` FOREIGN KEY (`department_id`) REFERENCES `zj_department` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of zj_user -- ---------------------------- -INSERT INTO `zj_user` VALUES (1, 'https://www.zhengjie.me/images/avatar.jpg', '2018-08-23 09:11:56', 'zhengjie@tom.com', 1, '2018-10-27 13:38:59', '36318d4cc46eb68050b8b81ebc620f05', 'aurora', 6); -INSERT INTO `zj_user` VALUES (2, 'https://i.loli.net/2018/08/16/5b75166b3157a.jpg', '2018-10-03 09:16:20', 'everyone@aurora.xyz', 1, '2018-10-05 11:29:44', '36318d4cc46eb68050b8b81ebc620f05', 'everyone', 15); +INSERT INTO `zj_user` VALUES (1, 'https://i.loli.net/2018/10/27/5bd4223fa208a.jpg', '2018-08-23 09:11:56', 'zhengjie@tom.com', 1, '36318d4cc46eb68050b8b81ebc620f05', 'aurora', 6, '男', '1996-09-30'); +INSERT INTO `zj_user` VALUES (2, 'https://i.loli.net/2018/10/27/5bd4223fa208a.jpg', '2018-10-03 09:16:20', 'everyone@aurora.xyz', 1, '36318d4cc46eb68050b8b81ebc620f05', 'everyone', 15, '女', '2018-10-27'); -- ---------------------------- -- Table structure for zj_user_pictures @@ -506,21 +494,4 @@ CREATE TABLE `zj_users_roles` ( INSERT INTO `zj_users_roles` VALUES (1, 1); INSERT INTO `zj_users_roles` VALUES (2, 3); --- ---------------------------- --- Table structure for zj_web_count --- ---------------------------- -DROP TABLE IF EXISTS `zj_web_count`; -CREATE TABLE `zj_web_count` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `web_counts` bigint(20) NULL DEFAULT NULL, - `createTime` datetime NULL DEFAULT NULL, - `date` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of zj_web_count --- ---------------------------- -INSERT INTO `zj_web_count` VALUES (3, 1, '2018-10-27 13:41:26', '2018-10-27'); - SET FOREIGN_KEY_CHECKS = 1; diff --git a/src/main/resources/static/js/index.js b/src/main/resources/static/js/index.js index 6ee85f3..ce76a6b 100644 --- a/src/main/resources/static/js/index.js +++ b/src/main/resources/static/js/index.js @@ -150,6 +150,7 @@ layui.define(mods, function(exports) { }); //主页 routes.push({path: "/", component: "/common/app", name: "主页"}) + routes.push({path: "/user/info", component: "/user/info", name: "个人中心"}) var _private = { routeInit: function(config) { var that = this; diff --git a/src/main/resources/templates/common/app.html b/src/main/resources/templates/common/app.html index 45a9f69..9d954f8 100644 --- a/src/main/resources/templates/common/app.html +++ b/src/main/resources/templates/common/app.html @@ -109,11 +109,11 @@
Aurora1.2 版本更新计划
    -
  • 用户个人中心、安全中心
  • -
  • 部门管理、组织机构展示
  • -
  • 短信模块、生日自动通知
  • -
  • 站内信模块、消息通知
  • -
  • 请假管理、Activiti工作流
  • +
  • 用户个人中心
  • +
  • 部门管理,组织结构
  • +
  • 短信模块
  • +
  • 站内信模块
  • +
  • 工作流
diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 6e94709..e8658ae 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -70,7 +70,7 @@
  • - + 个人中心 diff --git a/src/main/resources/templates/system/menu/add.html b/src/main/resources/templates/system/menu/add.html index a7b722e..7c00463 100644 --- a/src/main/resources/templates/system/menu/add.html +++ b/src/main/resources/templates/system/menu/add.html @@ -5,6 +5,7 @@ Aurora- 新增菜单 + @@ -28,10 +29,7 @@
    - +
    - +
    - + + +
    +
    +
    + +
    +
    @@ -67,8 +74,8 @@ }); layui.config({ base: '/plugins/lay/layui-treeselect/src/js/' //自定义组件的目录--相对路径 - }).use(['form', 'treeselect'], function () { - var form = layui.form, treeselect = layui.treeselect; + }).use(['form', 'treeselect','laydate'], function () { + var form = layui.form, treeselect = layui.treeselect,laydate = layui.laydate; var data = []; $.ajax({ async:false, @@ -79,6 +86,12 @@ data = resule; } }); + + //日期 + laydate.render({ + elem: '#birthday' + }); + //通过调用render方法进行渲染 [render支持链式调用] treeselect.render({ //渲染第一个 elem: '#treeselect1', //这个设置必要为id属性且必须加上#号