package com.hxkj.admin.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.query.MPJQueryWrapper; import com.hxkj.admin.LikeAdminThreadLocal; import com.hxkj.admin.config.AdminConfig; import com.hxkj.admin.service.ISystemAdminService; import com.hxkj.admin.service.ISystemRoleMenuService; import com.hxkj.admin.service.ISystemRoleService; import com.hxkj.admin.validate.PageParam; import com.hxkj.admin.validate.system.SystemAdminParam; import com.hxkj.admin.vo.system.SystemAdminVo; import com.hxkj.admin.vo.system.SystemRoleVo; import com.hxkj.admin.vo.system.SystemSelfVo; import com.hxkj.common.core.PageResult; import com.hxkj.common.entity.system.SystemAdmin; import com.hxkj.common.mapper.system.SystemAdminMapper; import com.hxkj.common.mapper.system.SystemMenuMapper; import com.hxkj.common.utils.*; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; /** * 系统管理员实现类 */ @Service public class SystemAdminServiceImpl implements ISystemAdminService { @Resource SystemAdminMapper systemAdminMapper; @Resource SystemMenuMapper systemMenuMapper; @Resource ISystemRoleService iSystemRoleService; @Resource ISystemRoleMenuService iSystemRoleMenuService; /** * 管理员列表 * * @author fzr * @param pageParam 分页参数 * @return PageResult */ @Override public PageResult list(PageParam pageParam, Map params) { Integer page = pageParam.getPageNo(); Integer limit = pageParam.getPageSize(); MPJQueryWrapper mpjQueryWrapper = new MPJQueryWrapper<>(); mpjQueryWrapper.select("t.id,t.dept_id,t.post_id,t.username,t.nickname,t.avatar," + "sd.name as dept,sr.name as role,t.is_multipoint,t.is_disable," + "t.last_login_ip,t.last_login_time,t.create_time,t.update_time") .eq("t.is_delete", 0) .leftJoin("ls_system_role sr ON sr.id=t.role") .leftJoin("ls_system_dept sd ON sd.id=t.dept_id") .orderByDesc(Arrays.asList("t.id", "t.sort")); systemAdminMapper.setSearch(mpjQueryWrapper, params, new String[]{ "like:username:str", "like:nickname:str", "=:role:int" }); IPage iPage = systemAdminMapper.selectJoinPage( new Page<>(page, limit), SystemAdminVo.class, mpjQueryWrapper); for (SystemAdminVo vo : iPage.getRecords()) { if (vo.getId() == 1) { vo.setRole("系统管理员"); } if (vo.getDept() == null) { vo.setDept(""); } vo.setAvatar(UrlUtil.toAbsoluteUrl(vo.getAvatar())); vo.setCreateTime(TimeUtil.timestampToDate(vo.getCreateTime())); vo.setUpdateTime(TimeUtil.timestampToDate(vo.getUpdateTime())); vo.setLastLoginTime(TimeUtil.timestampToDate(vo.getLastLoginTime())); } return PageResult.iPageHandle(iPage); } /** * 管理员详细 * * @author fzr * @param id 主键 * @return SysAdmin */ @Override public SystemAdminVo detail(Integer id) { SystemAdmin sysAdmin = systemAdminMapper.selectOne(new QueryWrapper() .select(SystemAdmin.class, info-> !info.getColumn().equals("salt") && !info.getColumn().equals("password") && !info.getColumn().equals("is_delete") && !info.getColumn().equals("delete_time")) .eq("id", id) .eq("is_delete", 0) .last("limit 1")); Assert.notNull(sysAdmin, "账号已不存在!"); SystemAdminVo vo = new SystemAdminVo(); BeanUtils.copyProperties(sysAdmin, vo); vo.setDept(String.valueOf(vo.getDeptId())); vo.setRole(String.valueOf(sysAdmin.getRole())); vo.setAvatar(UrlUtil.toAbsoluteUrl(sysAdmin.getAvatar())); vo.setCreateTime(TimeUtil.timestampToDate(sysAdmin.getCreateTime())); vo.setUpdateTime(TimeUtil.timestampToDate(sysAdmin.getUpdateTime())); vo.setLastLoginTime(TimeUtil.timestampToDate(sysAdmin.getLastLoginTime())); return vo; } /** * 管理员新增 * * @author fzr * @param systemAdminParam 参数 */ @Override public void add(SystemAdminParam systemAdminParam) { String[] field = {"id", "username", "nickname"}; Assert.isNull(systemAdminMapper.selectOne(new QueryWrapper() .select(field) .eq("is_delete", 0) .eq("username", systemAdminParam.getUsername()) .last("limit 1")), "账号已存在换一个吧!"); Assert.isNull(systemAdminMapper.selectOne(new QueryWrapper() .select(field) .eq("is_delete", 0) .eq("nickname", systemAdminParam.getNickname()) .last("limit 1")), "昵称已存在换一个吧!"); SystemRoleVo roleVo = iSystemRoleService.detail(systemAdminParam.getRole()); Assert.notNull(roleVo, "角色不存在!"); Assert.isTrue(roleVo.getIsDisable() <= 0, "当前角色已被禁用!"); String salt = ToolsUtil.randomString(5); String pwd = ToolsUtil.makeMd5(systemAdminParam.getPassword().trim() + salt); String avatar = UrlUtil.toRelativeUrl(systemAdminParam.getAvatar()); SystemAdmin model = new SystemAdmin(); model.setDeptId(systemAdminParam.getDeptId()); model.setPostId(systemAdminParam.getPostId()); model.setUsername(systemAdminParam.getUsername()); model.setNickname(systemAdminParam.getNickname()); model.setRole(systemAdminParam.getRole()); model.setAvatar(avatar); model.setPassword(pwd); model.setSalt(salt); model.setSort(systemAdminParam.getSort()); model.setIsMultipoint(systemAdminParam.getIsMultipoint()); model.setIsDisable(systemAdminParam.getIsDisable()); model.setCreateTime(System.currentTimeMillis() / 1000); model.setUpdateTime(System.currentTimeMillis() / 1000); systemAdminMapper.insert(model); } /** * 管理员更新 * * @author fzr * @param systemAdminParam 参数 */ @Override public void edit(SystemAdminParam systemAdminParam) { String[] field = {"id", "username", "nickname"}; Assert.notNull(systemAdminMapper.selectOne(new QueryWrapper() .select(field) .eq("id", systemAdminParam.getId()) .eq("is_delete", 0) .last("limit 1")), "账号不存在了!"); Assert.isNull(systemAdminMapper.selectOne(new QueryWrapper() .select(field) .eq("is_delete", 0) .eq("username", systemAdminParam.getUsername()) .ne("id", systemAdminParam.getId()) .last("limit 1")), "账号已存在换一个吧!"); Assert.isNull(systemAdminMapper.selectOne(new QueryWrapper() .select(field) .eq("is_delete", 0) .eq("nickname", systemAdminParam.getNickname()) .ne("id", systemAdminParam.getId()) .last("limit 1")), "昵称已存在换一个吧!"); Assert.notNull(iSystemRoleService.detail(systemAdminParam.getRole()), "角色不存在!"); SystemAdmin model = new SystemAdmin(); model.setId(systemAdminParam.getId()); model.setDeptId(systemAdminParam.getDeptId()); model.setPostId(systemAdminParam.getPostId()); model.setNickname(systemAdminParam.getNickname()); model.setUsername(systemAdminParam.getUsername()); model.setAvatar( UrlUtil.toRelativeUrl(systemAdminParam.getAvatar())); model.setRole(systemAdminParam.getId() == 1 ? 0 : systemAdminParam.getRole()); model.setSort(systemAdminParam.getSort()); model.setIsMultipoint(systemAdminParam.getIsMultipoint()); model.setIsDisable(systemAdminParam.getIsDisable()); model.setUpdateTime(System.currentTimeMillis() / 1000); if (systemAdminParam.getPassword() != null) { String salt = ToolsUtil.randomString(5); String pwd = ToolsUtil.makeMd5( systemAdminParam.getPassword().trim() + salt); model.setPassword(pwd); model.setSalt(salt); } systemAdminMapper.updateById(model); this.cacheAdminUserByUid(systemAdminParam.getId()); } /** * 管理员删除 * * @author fzr * @param id 主键 */ @Override public void del(Integer id) { String[] field = {"id", "username", "nickname"}; Assert.notNull(systemAdminMapper.selectOne(new QueryWrapper() .select(field) .eq("id", id) .eq("is_delete", 0) .last("limit 1")), "账号已不存在!"); Assert.isFalse(id == 1, "系统管理员不允许删除"); int adminId = Integer.parseInt(LikeAdminThreadLocal.getAdminId().toString()); Assert.isFalse(id == adminId, "不能删除自己"); SystemAdmin model = new SystemAdmin(); model.setId(id); model.setIsDelete(1); model.setDeleteTime(System.currentTimeMillis() / 1000); systemAdminMapper.updateById(model); this.cacheAdminUserByUid(id); } }