package com.ydtech.modules.admin.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ydtech.core.page.PageRequest; import com.ydtech.core.page.PageResult; import com.ydtech.modules.admin.dao.SysUserMapper; import com.ydtech.modules.admin.model.SysDept; import com.ydtech.modules.admin.model.SysMenu; import com.ydtech.modules.admin.model.SysUser; import com.ydtech.modules.admin.model.SysUserRole; import com.ydtech.modules.admin.service.SysDeptService; import com.ydtech.modules.admin.service.SysMenuService; import com.ydtech.modules.admin.service.SysRoleMenuService; import com.ydtech.modules.admin.service.SysUserService; import com.ydtech.modules.admin.vo.SysUserBaseVO; import com.ydtech.modules.admin.vo.SysUserInternalVO; import com.ydtech.modules.admin.vo.SysUserVO; import com.ydtech.modules.esm.model.EsmUserAgentCheck; import com.ydtech.modules.esm.model.EsmUserInternal; import com.ydtech.modules.esm.service.EsmUserInternalService; import com.ydtech.utils.StringUtils; import com.ydtech.utils.idgen.IdGenerate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @Service public class SysUserServiceImpl extends ServiceImpl implements SysUserService { @Autowired private SysMenuService sysMenuService; @Autowired private SysRoleMenuService sysRoleMenuService; @Autowired private SysDeptService sysDeptService; @Override public SysUser findByUsername(String username) { SysUser sysUser = null; if (StringUtils.isNotEmpty(username)) { sysUser = getById(username); } return sysUser; } @Override public SysUser findByPhone(String phone) { SysUser sysUser = null; LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(StringUtils.isNotEmpty(phone),SysUser::getMobile,phone); List lst = list(lqw); if (lst.size() > 0) { sysUser = lst.get(0); } return sysUser; } @Override public Set findPermissions(SysUser sysUser) { Set perms = new HashSet<>(); String sql = ""; List lsPerms = null; if (sysUser.getId().equalsIgnoreCase("admin")) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.isNotNull(SysMenu::getPerms); lqw.select(SysMenu::getPerms); lsPerms = sysMenuService.listObjs(lqw, new Function() { @Override public String apply(Object id) { return id.toString(); } }); } else { List sysMenuList = sysRoleMenuService.gainMenuIds(sysUser.getId()); lsPerms = sysMenuList.stream().filter(a ->StringUtils.isNotEmpty(a.getPerms())).map(SysMenu::getPerms).collect(Collectors.toList()); } if (lsPerms != null && lsPerms.size() > 0) { for (String perm : lsPerms) { if (!StringUtils.isNullOrEmpty(perm)) { perms.add(perm); } } } return perms; } // @Override // public Set findPermissions(SysUser sysUser) { // Set perms = new HashSet<>(); // String sql = ""; // JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); // List lsPerms = null; // // if (sysUser.getId().equalsIgnoreCase("admin")) { // sql = "SELECT perms FROM sys_menu WHERE perms IS NOT NULL AND perms <> ''"; // // lsPerms = jdbcTemplate.queryForList(sql, String.class); // } else { // sql = "SELECT perms FROM sys_menu sm WHERE sm.id IN ( " + // "SELECT menu_id FROM sys_role_menu srm, sys_user_role sur ,sys_user su " + // "WHERE srm.role_id=sur.role_id " + // "AND sur.user_id=su.id AND su.id=?) " + // "AND perms IS NOT NULL AND perms <> ''" // ; // // lsPerms = jdbcTemplate.queryForList(sql, String.class, sysUser.getId()); // } // // if (lsPerms != null && lsPerms.size() > 0) { // for (String perm : lsPerms) { // if (!StringUtils.isNullOrEmpty(perm)) { // perms.add(perm); // } // } // } // // return perms; // } @Override public List findUserRoles(Long userId) { return null; } @Override public PageResult selectPagingCustom(int pageNumber, int pageSize, String name, String deptCode) { return null; } @Override public void findSysUseresmUserInternalVORoles(PageResult pageResult) { } @Override public Integer deleteFlag(List lsSysUser) { List ids = lsSysUser.stream().map(SysUser::getId).collect(Collectors.toList()); LambdaUpdateWrapper lqw = new LambdaUpdateWrapper<>(); lqw.set(SysUser::getDelFlag,"-1"); lqw.in(SysUser::getId,ids); return update(lqw)==true?ids.size():0; } @Override public SysUser findById(String id) { if (!StringUtils.isNullOrEmpty(id)) { return getById(id); } return null; } @Override public SysUser findByUserId(String userId) { SysUser sysUser = null; if (!StringUtils.isNullOrEmpty(userId)) { sysUser = getById(userId); } return sysUser; } @Override public SysUserVO gainUserInternal(String userId) { return super.baseMapper.gainInternalUser(userId); } @Override public SysUserVO gainUserInternalByDeptId(String deptId) { return super.baseMapper.gainInternalUserByDeptId(deptId); } @Override public PageResult gainUserPage(PageRequest pageRequest) { PageResult pageResult = new PageResult(); //获取分页数量 int total = super.baseMapper.gainUserBaseInfoCount(pageRequest); //计算mysql分页起索引 int firstIndex = pageRequest.getPageNum()==1?0:(pageRequest.getPageNum()-1) * pageRequest.getPageSize() +1; //请求替换分页开始索引 pageRequest.setPageNum(firstIndex); //计算mysql分页总页数 int totalPages = total % pageRequest.getPageSize() == 0?total / pageRequest.getPageSize():total / pageRequest.getPageSize() +1; // if(pageRequest.getPageNum() > 0){ // int newPageNum = pageRequest.getPageNum() -1; // pageRequest.setPageNum(newPageNum * pageRequest.getPageSize()); // } pageResult.setContent(super.baseMapper.gainUserBaseInfo(pageRequest)); //响应 pageResult.setTotalSize(total); pageResult.setPageNum(pageRequest.getPageNum()); pageResult.setPageSize(pageRequest.getPageSize()); pageResult.setTotalPages(totalPages); return pageResult; } @Override public String gainNextUserId(String deptId) { int noCount = 3;//顺序号是几位的 String nextPK; QueryWrapper lq = new QueryWrapper<>(); lq.select(" MAX(id) as id "); lq.eq("dept_id",deptId); SysUser userMaxId = getOne(lq); String maxId = ""; if(null != userMaxId) maxId = userMaxId.getId(); if (StringUtils.isNullOrEmpty(maxId)) { nextPK = deptId + "001"; } else { nextPK = IdGenerate.nextCode(maxId, noCount); } return nextPK; } @Override public SysUserInternalVO gainUserSynthesisInfo(String userId) { SysUserInternalVO vo = new SysUserInternalVO(); SysUser sysUser = getById(userId); // EsmUserInternal sysUserInternal = esmUserInternalService.selectByPk(userId); String pDeptId = sysUser.getDeptId(); if(pDeptId.indexOf("D") > 1){ pDeptId = sysUser.getDeptId().substring(0,pDeptId.indexOf("D")); } SysDept sysDept = sysDeptService.getById(pDeptId); vo.setSysUser(sysUser); vo.setSysDept(sysDept); // vo.setSysUserInternal(sysUserInternal); return vo; } @Override public String findMaxId(String deptId) { QueryWrapper qw = new QueryWrapper<>(); qw.select("IFNULL(MAX(id),0) maxId"); qw.eq("dept_id",deptId); Map m = getMap(qw); String maxId = m.get("maxId").toString(); return maxId; } @Override public boolean check(String userId,Integer approvalStatus,String approvalOpinion) { SysUser user = getById(userId); user.setApprovalStatus(approvalStatus); user.setApprovalOpinion(approvalOpinion); return updateById(user); } }