基于javaweb的oa办公管理系统(java+layui+ssm+mysql+jsp+html)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+jsp的OA办公管理系统(java+Layui+SSM+Maven+mysql+JSP+html)
一、项目运行 环境配置:
Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)
项目技术:
JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等
用户管理控制层:
/**
• @author yy
*/
@Controller
@RequestMapping(“/user”)
public class UserController extends BaseController{
private String prefix = “system/user/”;
@Autowired
IUserService iUserService;
@Autowired
IRoleService iRoleService;
@Autowired
IDeptService iDeptService;
@Autowired
IPositionService iPositionService;
@Autowired
private SysPasswordService passwordService;
/**
• @描述 跳转到用户页面
• @date 2018/9/16 10:54
*/
@RequestMapping(“/tolist”)
@RequiresPermissions(“user:list”)
public String toUserList()
return prefix + “user”;
/**
• @描述 用户数据
• @date 2018/9/15 12:30
*/
@RequestMapping(“/tableList”)
@ResponseBody
public TableDataInfo list(User user)
startPage();
List users = iUserService.selectByUser(user);
return getDataTable(users);
/**
• 编辑用户 system/user/edit/20180914-1
*/
@RequiresPermissions(“user:update”)
@RequestMapping(“/edit/{userId}”)
public String edit(@PathVariable(“userId”) String userId, Model model)
// 个人信息User user = iUserService.selectByPrimaryKey(userId);
Map<String, Object> role_post_dept = getRole_Post_Dept();
model.addAttribute(“depts”, role_post_dept.get(“dept”));
model.addAttribute(“roles”, role_post_dept.get(“role”));
model.addAttribute(“positions”, role_post_dept.get(“position”));
model.addAttribute(“user”, user);
return prefix + “edit”;
/**
• @描述 保存用户
• @date 2018/9/15 18:53
*/
@PostMapping(“/editSave”)
@RequiresPermissions(“user:update”)
@Operlog(modal = “用户管理”, descr = “修改用户信息”)
@ResponseBody
public AjaxResult save(User user)
if (StringUtils.isNotNull(user.getUid()) && User.isBoss(user.getUid()))
return error(“不允许修改管理员用户”);
if(user.getPwd()!=null){
user.setSalt(ShiroUtils.randomSalt());
SimpleHash md5 = new SimpleHash(“MD5”, user.getPwd(), user.getSalt(), 1024);
user.setPwd(md5.toHex());
return result(iUserService.updateByPrimaryKeySelective(user));
/**
• @描述 添加用户页面
• @date 2018/9/15 18:46
*/
@RequestMapping(“/toAdd”)
@RequiresPermissions(“user:add”)
public String toaddUser(Model model)
Map<String, Object> role_post_dept = getRole_Post_Dept();
model.addAttribute(“depts”, role_post_dept.get(“dept”));
model.addAttribute(“roles”, role_post_dept.get(“role”));
model.addAttribute(“positions”, role_post_dept.get(“position”));
return prefix + “add”;
/**
• @描述 添加用户
• @date 2018/9/15 20:40
*/
@RequestMapping(“/addSave”)
@RequiresPermissions(“user:add”)
@Operlog(modal = “用户管理”, descr = “添加用户”)
@ResponseBody
public AjaxResult addUser(User user)
user.setSalt(ShiroUtils.randomSalt());
SimpleHash md5 = new SimpleHash(“MD5”, user.getPwd(), user.getSalt(), 1024);
user.setPwd(md5.toHex());
user.setAvatar(CsEnum.avatar.USER_AVATAR.getValue());
user.setCreateTime(new Date());
return result(iUserService.insertSelective(user));
/**
• @描述 批量删除
• @date 2018/9/16 9:31
*/
@RequestMapping(“/del”)
@RequiresPermissions(“user:del”)
@Operlog(modal = “用户模块”, descr = “删除用户”)
@ResponseBody
public AjaxResult delByUserIds(String[] ids)
try
int i = iUserService.deleteByPrimaryKeys(ids);
catch (Exception e)
return error(e.getMessage());
return success();
/**
• @描述 编辑密码修改页面
• @date 2018/9/16 10:25
*/
@RequestMapping(“/resetPwd/{userId}”)
@RequiresPermissions(“user:update”)
public String editPwd(@PathVariable(“userId”) String id, Model model)
model.addAttribute(“uid”, id);
return prefix + “resetPwd”;
/**
• @描述 密码修改
• @date 2018/9/16 10:42
*/
@RequestMapping(“/resetPwd”)
@RequiresPermissions(“user:update”)
@Operlog(modal = “用户模块”, descr = “修改密码”)
@ResponseBody
public AjaxResult resetPwd(User user)
return result(iUserService.resrtPwd(user));
/**
• 校验手机号码
*/
@PostMapping(“/checkPhoneUnique”)
@ResponseBody
public String checkPhoneUnique(User user)
String uniqueFlag = “0”;
if (user != null)
uniqueFlag = iUserService.checkPhoneUnique(user);
return uniqueFlag;
/**
• 校验email邮箱
*/
@PostMapping(“/checkEmailUnique”)
@ResponseBody
public String checkEmailUnique(User user)
String uniqueFlag = “0”;
if (user != null)
uniqueFlag = iUserService.checkEmailUnique(user);
return uniqueFlag;
/**
• @描述: 校验登录名唯一性
• @params:
• @return:
• @date: 2018/10/2 17:06
*/
@PostMapping(“/checkLoginNameUnique”)
@ResponseBody
public String checkLoginNameUnique(User user)
String uniqueFlag = “0”;
if (user != null)
uniqueFlag = iUserService.checkLoginNameUnique(user);
return uniqueFlag;
public Map<String, Object> getRole_Post_Dept()
Map<String, Object> map = new HashMap<>();
// 角色
List roles = iRoleService.selectRoleList(new Role());
// 部门信息
List depts = iDeptService.selectDeptList(new Dept());
// 岗位
List positions = iPositionService.selectPositionList(new Position());
map.put(“role”, roles);
map.put(“dept”, depts);
map.put(“position”, positions);
return map;
/**
• 用户个人信息查看页面
*/
@RequestMapping(“/myMsg”)
public String ToMyMsg(Model model, HttpServletRequest request)
User user = iUserService.selectByPrimaryKey(getUserId());
model.addAttribute(“user”, user);
model.addAttribute(“loginIp”, HttpHeaderUtil.getIpAddr(request));
return prefix + “profile/msg”;
/**
• 密码修改页面
*/
@RequestMapping(“/resetMyPwd”)
public String toResetPwd(Model model)
User user = iUserService.selectByPrimaryKey(getUserId());
model.addAttribute(“user”, user);
return prefix + “profile/resetPwd”;
/**
• 密码修改保存
*/
@RequestMapping(“/updateMyPwdSave”)
@ResponseBody
@RequiresPermissions(“user:update”)
@Operlog(modal = “个人信息”, descr = “修改密码”)public AjaxResult updateMyPwdSave(String password)
User user = new User();
user.setSalt(ShiroUtils.randomSalt());
SimpleHash md5 = new SimpleHash(“MD5”, password, user.getSalt(), 1024);
user.setPwd(md5.toHex());
user.setUid(getUserId());
int i = iUserService.updateByPrimaryKeySelective(user);
if (i > 0)
//更新shiro中的信息
ShiroUtils.reloadUser(iUserService.selectByPrimaryKey(getUserId()));
return success();
return error();
/**
• 编辑用户头像修改
*/
@RequestMapping(“/updateAvatar”)
public String toupdateAvatar(Model model)
model.addAttribute(“user”, getUser());
return prefix + “profile/avatar”;
/**
• 修改保存用户头像
*/
@RequestMapping(“/updateAvatarSave”)
@RequiresPermissions(“user:update”)
@Operlog(modal = “个人信息”, descr = “修改头像”)@ResponseBody
public AjaxResult toupdateAvatar(MultipartFile file)
try
String imgPath = UploadFile.uploadUserImg(file);
if (StringUtils.isEmpty(imgPath))
return error(“图片上传失败,稍后再试!”);
User user = new User();
user.setUid(getUserId());
user.setAvatar(imgPath);
int i = iUserService.updateByPrimaryKeySelective(user);
if (i > 0)
ShiroUtils.reloadUser(iUserService.selectByPrimaryKey(getUserId()));
return result(i);
catch (IOException e)
return error();
catch (FileSizeException e)
//文件过大
return error(e.getMsg());
catch (FileNameLengthException e)
//文件名字超长
return error(e.getMsg());
/**
• 校验密码和原来密码是否相同
*/
@RequestMapping(“/checkPassword”)
@ResponseBody
public boolean checkPassword(String password)
//加密后与数据库密码比较
User user = getUser();
SimpleHash md5 = new SimpleHash(“MD5”, password, user.getSalt(), 1024);
String oldPassword = md5.toHex();
String pwd = getPwd();
if (pwd.equals(oldPassword))
return true;
return false;
部门管理控制层:
/**
• @author yy
*/
@Controller
@RequestMapping(“/dept”)
public class DeptController extends BaseController{
private String prefix = “system/dept/”;
@Autowired
IDeptService iDeptService;
@Autowired
IUserService iUserService;
/**
• @描述 页面跳转到部门
• @date 2018/9/16 10:59
*/
@RequestMapping(“/tolist”)
@RequiresPermissions(“dept:list”)
public String tolist()
return prefix + “dept”;
/**
• @描述 ajax请求的所有部门
• @date 2018/9/16 10:48
*/
@RequestMapping(“/ajaxlist”)
@ResponseBody
public List list(Dept dept)
List depts = iDeptService.selectDeptList(dept);
return depts;
/**
• @描述 部门列表页
• @date 2018/9/16 10:52
*/
@RequestMapping(“/tableList”)
@ResponseBody
public TableDataInfo listPag(Dept dept)
//开启分页
startPage();
List depts = iDeptService.selectDeptList(dept);
return getDataTable(depts);
/**
• @描述 新增页面
• @date 2018/9/16 11:37
*/
@RequiresPermissions(“dept:add”)
@RequestMapping(“/toAdd”)
public String toAdd(Model model)
List users = iUserService.selectByUser(new User());
model.addAttribute(“users”, users);
return prefix + “add”;
/**
• @描述: 查询所有部门下的所有用户 用户归类 树状数据
• @date: 2018/9/27 11:25
*/
@RequestMapping(“/getDeptAndUserTreeData”)
@ResponseBody
public List DeptAndUserTreeData()
List depts = iDeptService.selectDeptAndUser();
List users=new ArrayList<>();
LinkedList deptList = new LinkedList<>();
for (Dept dept : depts)
Map<String, Object> deptMap = new HashMap();
deptMap.put(“name”, dept.getDeptName());
deptMap.put(“id”, null);
users = dept.getUsers();
LinkedList userlist = new LinkedList<>();
for (User user : users)
Map<String, Object> userMap = new HashMap();
userMap.put(“name”,user.getName());
userMap.put(“id”,user.getUid());
userMap.put(“icon”,“/img/timg.jpg”);
userlist.add(userMap);
deptMap.put(“children”,userlist);
deptList.add(deptMap);
return deptList;
/**
• @描述 批量删除
• @date 2018/9/16 11:53
*/
@RequestMapping(“/del”)
@RequiresPermissions(“dept:del”)
@ResponseBody
@Operlog(modal = “部门管理”,descr = “删除部门”)
public AjaxResult del(String[] ids)
try
iDeptService.deleteByPrimaryKeys(ids);
catch (Exception e)
return error(e.getMessage());
return success();
/**
• @描述 执行保存操作
• @date 2018/9/16 11:54
*/
@RequestMapping(“/addSave”)
@Operlog(modal = “部门管理”,descr = “添加部门”)
@RequiresPermissions(“dept:add”)
@ResponseBody
public AjaxResult addDept(Dept dept)
dept.setCreateTime(new Date());
return result(iDeptService.insertSelective(dept));
/**
• @描述 编辑修改页面
• @date 2018/9/16 14:06
*/
@RequestMapping(“/edit/{id}”)
@RequiresPermissions(“dept:update”)
public String edit(@PathVariable(“id”) String id, Model model)
Dept dept = iDeptService.selectByPrimaryKey(id);
List users = iUserService.selectByUser(new User());
model.addAttribute(“users”, users);
model.addAttribute(“Dept”, dept);
return prefix + “edit”;
/**
• @描述 修改保存
• @date 2018/9/16 16:12
*/
@RequestMapping(“/editSave”)
@RequiresPermissions(“dept:update”)
@Operlog(modal = “部门管理”,descr = “修改信息”)
@ResponseBody
public AjaxResult save(Dept dept)
int i = 0;
try
i = iDeptService.updateByPrimaryKeySelective(dept);
catch (Exception e)
return error(e.getMessage());
return result(i);
/**
• 校验部门名称
*/
@PostMapping(“/checkDeptNameUnique”)
@ResponseBody
public String checkDeptNameUnique(Dept dept)
String uniqueFlag = “0”;
if (dept != null)
uniqueFlag = iDeptService.checkDeptNameUnique(dept);
return uniqueFlag;
角色管理控制层:
/**
• @author yy
*/
@Controller
@RequestMapping(“/role”)
public class RoleController extends BaseController{
private String prefix = “system/role/”;
@Autowired
IUserService iUserService;
@Autowired
IRoleService iRoleService;
@Autowired
IPermissionService iPermissionService;
/**
• @描述 页面跳转
• @date 2018/9/16 10:59
*/
@RequestMapping(“/tolist”)
@RequiresPermissions(“role:list”)
public String tolist()
return prefix + “role”;
/**
• @描述 ajax请求所有
• @date 2018/9/16 10:48
*/
@RequestMapping(“/ajaxlist”)
@ResponseBody
public List list(Role role)
List roles = iRoleService.selectRoleList(role);
return roles;
/**
• @描述 列表
• @date 2018/9/16 10:52
*/
@RequestMapping(“/tableList”)
@ResponseBody
public TableDataInfo listPag(Role role)
//开启分页
startPage();
List roles = iRoleService.selectRoleList(role);
return getDataTable(roles);
/**
• @描述 新增页面
• @date 2018/9/16 11:37
*/
@RequestMapping(“/toAdd”)
@RequiresPermissions(“role:add”)
public String toAdd(Model model)
return prefix + “add”;
/**
• @描述 批量删除
• @date 2018/9/16 11:53
*/
@RequestMapping(“/del”)
@RequiresPermissions(“role:del”)
@Operlog(modal = “角色管理”,descr = “删除角色”)
@ResponseBody
public AjaxResult del(Integer[] ids)
try
iRoleService.deleteByPrimaryKeys(ids);
catch (Exception e)
return error(e.getMessage());
return success();
/**
• @描述 添加保存
• @date 2018/9/16 11:54
*/
@RequestMapping(“/addSave”)
@RequiresPermissions(“role:update”)
@Operlog(modal = “角色管理”,descr = “添加角色”)
@ResponseBody
public AjaxResult addRole(Role role, Integer[] ids)
role.setCreateTime(new Date());
int insert = 0;
try
if (StringUtils.isEmpty(ids))
ids = new Integer[0];
insert = iRoleService.insert(role, ids);
catch (Exception e)
return error(e.getMessage());
//清空缓存
ShiroUtils.clearCachedAuthorizationInfo();
return result(insert);
/**
• @描述: 根据ID 获取u他的所有权限 做回显
• @params: roleId 角色Id
• @return:
• @date: 2018/9/27 14:04
*/
@RequestMapping(“/selectById/{roleId}”)
@ResponseBody
public Role selectById(@PathVariable(“roleId”) Integer roleId)
Role role = iRoleService.selectByPrimaryKey(roleId);
return role;
/**
• @描述 编辑修改页面
• @date 2018/9/16 14:06
*/
@RequestMapping(“/edit/{id}”)
@RequiresPermissions(“role:update”)
public String edit(@PathVariable(“id”) Integer id, Model model)
Role role = iRoleService.selectByPrimaryKey(id);
model.addAttribute(“Role”, role);
return prefix + “edit”;
/**
• @描述 编辑修改权限页面
• @date 2018/9/16 14:06
*/
@RequestMapping(“/editPower/{id}”)
@RequiresPermissions(“role:update”)
public String editPower(@PathVariable(“id”) Integer id, Model model)
Role role = iRoleService.selectByPrimaryKey(id);
model.addAttribute(“Role”, role);
return prefix + “editPower”;
/**
• @描述 修改角色信息保存
• @date 2018/9/16 16:12
*/
@RequestMapping(“/editSave”)
@RequiresPermissions(“role:update”)
@Operlog(modal = “角色管理”,descr = “修改角色信息”)
@ResponseBody
public AjaxResult save(Role role)
int i = 0;
try
i = iRoleService.updateByPrimaryKeySelective(role);
catch (Exception e)
return error(e.getMessage());
return result(i);
/**
• @描述 修改角色权限信息保存
• @date 2018/9/16 16:12
*/
@RequestMapping(“/editPowerSave”)
@RequiresPermissions(“role:update”)
@Operlog(modal = “角色管理”,descr = “修改角色权限”)
@ResponseBody
public AjaxResult editPowerSave(Role role, Integer[] ids)
int i = 0;
try
if (StringUtils.isEmpty(ids))
ids = new Integer[0];
i = iRoleService.updateByPrimaryKeyPowerSelective(role, ids);
catch (Exception e)
return error(e.getMessage());
//清空缓存
ShiroUtils.clearCachedAuthorizationInfo();
//如果用户正在修改的角色id 是当前用户的角色id 则刷新 subject的User信息
if (role.getRoleId().equals(getRoleId()))
ShiroUtils.reloadUser(iUserService.selectByPrimaryKey(getUserId()));
return result(i);
/**
• 校验名称唯一
*/
@PostMapping(“/checkRoleNameUnique”)
@ResponseBody
public String checkDeptNameUnique(Role role)
String uniqueFlag = “0”;
if (role != null)
uniqueFlag = iRoleService.checkRoleNameUnique(role);
return uniqueFlag;
会议室管理控制层:
/**
• @author yy
*/
@Controller
@RequestMapping(“/room”)
public class MeetRoomController extends BaseController{
private Logger log = LoggerFactory.getLogger(this.getClass());
private String prefix = “system/room/”;
@Autowired
private IMeetingRoomService iMeetingRoomService;
/**
• @描述 页面跳转
• @date 2018/9/16 10:59
*/
@RequestMapping(“/tolist”)
public String tolist()
return prefix + “room”;
/**
• @描述 ajax请求
• @date 2018/9/16 10:48
*/
@RequestMapping(“/ajaxlist”)
@ResponseBody
public List list(MeetingRoom meetingRoom)
List meetingRooms = iMeetingRoomService.selectMeetRoomList(meetingRoom);
return meetingRooms;
/**
• @描述 列表页
• @date 2018/9/16 10:52
*/
@RequestMapping(“/tableList”)
@ResponseBody
public TableDataInfo listPag(MeetingRoom meetingRoom)
//开启分页
startPage();
List meetingRooms = iMeetingRoomService.selectMeetRoomList(meetingRoom);
return getDataTable(meetingRooms);
/**
• @描述 新增页面
• @date 2018/9/16 11:37
*/
@RequestMapping(“/toAdd”)
@RequiresPermissions(“meetRoom:list”)
public String toAdd()
return prefix + “add”;
/**
• @描述 批量删除
• @date 2018/9/16 11:53
*/
@RequestMapping(“/del”)
@RequiresPermissions(“meetRoom:del”)
@Operlog(modal = “会议室管理”,descr = “删除会议室”)
@ResponseBody
public AjaxResult del(Integer[] ids)
try
iMeetingRoomService.deleteByPrimaryKeys(ids);
catch (Exception e)
return error(e.getMessage());
return success();
/**
• @描述 执行保存操作
• @date 2018/9/16 11:54
*/
@RequestMapping(“/addSave”)
@RequiresPermissions(“meetRoom:add”)
@Operlog(modal = “会议室管理”,descr = “添加会议室”)
@ResponseBody
public AjaxResult addMeetingRoom(MeetingRoom meetingRoom)
meetingRoom.setCreateTime(new Date());
return result(iMeetingRoomService.insertSelective(meetingRoom));
/**
• @描述 编辑修改页面
• @date 2018/9/16 14:06
*/
@RequestMapping(“/edit/{id}”)
@RequiresPermissions(“meetRoom:update”)
public String edit(@PathVariable(“id”) Integer id, Model model)
MeetingRoom meetingRoom = iMeetingRoomService.selectByPrimaryKey(id);
model.addAttribute(“room”, meetingRoom);
return prefix + “edit”;
/**
• @描述 修改保存
• @date 2018/9/16 16:12
*/
@RequestMapping(“/editSave”)
@RequiresPermissions(“meetRoom:update”)
@Operlog(modal = “会议室管理”,descr = “修改会议室”)
@ResponseBody
public AjaxResult save(MeetingRoom meetingRoom)
return result(iMeetingRoomService.updateByPrimaryKeySelective(meetingRoom));
/**
• 校验部门名称
*/
@PostMapping(“/checkRoomNameUnique”)
@ResponseBody
public String checkMeetingRoomNameUnique(MeetingRoom meetingRoom)
String uniqueFlag = “0”;
if (meetingRoom != null)
uniqueFlag = iMeetingRoomService.checkRoomNameUnique(meetingRoom);
return uniqueFlag;