SysUserServiceImpl.java 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. package com.ydtech.modules.admin.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  6. import com.ydtech.core.page.PageRequest;
  7. import com.ydtech.core.page.PageResult;
  8. import com.ydtech.modules.admin.dao.SysUserMapper;
  9. import com.ydtech.modules.admin.model.SysDept;
  10. import com.ydtech.modules.admin.model.SysMenu;
  11. import com.ydtech.modules.admin.model.SysUser;
  12. import com.ydtech.modules.admin.model.SysUserRole;
  13. import com.ydtech.modules.admin.service.SysDeptService;
  14. import com.ydtech.modules.admin.service.SysMenuService;
  15. import com.ydtech.modules.admin.service.SysRoleMenuService;
  16. import com.ydtech.modules.admin.service.SysUserService;
  17. import com.ydtech.modules.admin.vo.SysUserBaseVO;
  18. import com.ydtech.modules.admin.vo.SysUserInternalVO;
  19. import com.ydtech.modules.admin.vo.SysUserVO;
  20. import com.ydtech.modules.esm.model.EsmUserAgentCheck;
  21. import com.ydtech.modules.esm.model.EsmUserInternal;
  22. import com.ydtech.modules.esm.service.EsmUserInternalService;
  23. import com.ydtech.utils.StringUtils;
  24. import com.ydtech.utils.idgen.IdGenerate;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.jdbc.core.BatchPreparedStatementSetter;
  27. import org.springframework.jdbc.core.JdbcTemplate;
  28. import org.springframework.stereotype.Service;
  29. import java.sql.PreparedStatement;
  30. import java.sql.SQLException;
  31. import java.util.*;
  32. import java.util.function.Function;
  33. import java.util.stream.Collectors;
  34. @Service
  35. public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser>
  36. implements SysUserService {
  37. @Autowired
  38. private SysMenuService sysMenuService;
  39. @Autowired
  40. private SysRoleMenuService sysRoleMenuService;
  41. @Autowired
  42. private SysDeptService sysDeptService;
  43. @Override
  44. public SysUser findByUsername(String username) {
  45. SysUser sysUser = null;
  46. if (StringUtils.isNotEmpty(username)) {
  47. sysUser = getById(username);
  48. }
  49. return sysUser;
  50. }
  51. @Override
  52. public SysUser findByPhone(String phone) {
  53. SysUser sysUser = null;
  54. LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
  55. lqw.eq(StringUtils.isNotEmpty(phone),SysUser::getMobile,phone);
  56. List<SysUser> lst = list(lqw);
  57. if (lst.size() > 0) {
  58. sysUser = lst.get(0);
  59. }
  60. return sysUser;
  61. }
  62. @Override
  63. public Set<String> findPermissions(SysUser sysUser) {
  64. Set<String> perms = new HashSet<>();
  65. String sql = "";
  66. List<String> lsPerms = null;
  67. if (sysUser.getId().equalsIgnoreCase("admin")) {
  68. LambdaQueryWrapper<SysMenu> lqw = new LambdaQueryWrapper<>();
  69. lqw.isNotNull(SysMenu::getPerms);
  70. lqw.select(SysMenu::getPerms);
  71. lsPerms = sysMenuService.listObjs(lqw, new Function<Object, String>() {
  72. @Override
  73. public String apply(Object id) {
  74. return id.toString();
  75. }
  76. });
  77. } else {
  78. List<SysMenu> sysMenuList = sysRoleMenuService.gainMenuIds(sysUser.getId());
  79. lsPerms = sysMenuList.stream().filter(a ->StringUtils.isNotEmpty(a.getPerms())).map(SysMenu::getPerms).collect(Collectors.toList());
  80. }
  81. if (lsPerms != null && lsPerms.size() > 0) {
  82. for (String perm : lsPerms) {
  83. if (!StringUtils.isNullOrEmpty(perm)) {
  84. perms.add(perm);
  85. }
  86. }
  87. }
  88. return perms;
  89. }
  90. // @Override
  91. // public Set<String> findPermissions(SysUser sysUser) {
  92. // Set<String> perms = new HashSet<>();
  93. // String sql = "";
  94. // JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
  95. // List<String> lsPerms = null;
  96. //
  97. // if (sysUser.getId().equalsIgnoreCase("admin")) {
  98. // sql = "SELECT perms FROM sys_menu WHERE perms IS NOT NULL AND perms <> ''";
  99. //
  100. // lsPerms = jdbcTemplate.queryForList(sql, String.class);
  101. // } else {
  102. // sql = "SELECT perms FROM sys_menu sm WHERE sm.id IN ( " +
  103. // "SELECT menu_id FROM sys_role_menu srm, sys_user_role sur ,sys_user su " +
  104. // "WHERE srm.role_id=sur.role_id " +
  105. // "AND sur.user_id=su.id AND su.id=?) " +
  106. // "AND perms IS NOT NULL AND perms <> ''"
  107. // ;
  108. //
  109. // lsPerms = jdbcTemplate.queryForList(sql, String.class, sysUser.getId());
  110. // }
  111. //
  112. // if (lsPerms != null && lsPerms.size() > 0) {
  113. // for (String perm : lsPerms) {
  114. // if (!StringUtils.isNullOrEmpty(perm)) {
  115. // perms.add(perm);
  116. // }
  117. // }
  118. // }
  119. //
  120. // return perms;
  121. // }
  122. @Override
  123. public List<SysUserRole> findUserRoles(Long userId) {
  124. return null;
  125. }
  126. @Override
  127. public PageResult selectPagingCustom(int pageNumber, int pageSize, String name, String deptCode) {
  128. return null;
  129. }
  130. @Override
  131. public void findSysUseresmUserInternalVORoles(PageResult pageResult) {
  132. }
  133. @Override
  134. public Integer deleteFlag(List<SysUser> lsSysUser) {
  135. List<String> ids = lsSysUser.stream().map(SysUser::getId).collect(Collectors.toList());
  136. LambdaUpdateWrapper<SysUser> lqw = new LambdaUpdateWrapper<>();
  137. lqw.set(SysUser::getDelFlag,"-1");
  138. lqw.in(SysUser::getId,ids);
  139. return update(lqw)==true?ids.size():0;
  140. }
  141. @Override
  142. public SysUser findById(String id) {
  143. if (!StringUtils.isNullOrEmpty(id)) {
  144. return getById(id);
  145. }
  146. return null;
  147. }
  148. @Override
  149. public SysUser findByUserId(String userId) {
  150. SysUser sysUser = null;
  151. if (!StringUtils.isNullOrEmpty(userId)) {
  152. sysUser = getById(userId);
  153. }
  154. return sysUser;
  155. }
  156. @Override
  157. public SysUserVO gainUserInternal(String userId) {
  158. return super.baseMapper.gainInternalUser(userId);
  159. }
  160. @Override
  161. public SysUserVO gainUserInternalByDeptId(String deptId) {
  162. return super.baseMapper.gainInternalUserByDeptId(deptId);
  163. }
  164. @Override
  165. public PageResult gainUserPage(PageRequest pageRequest) {
  166. PageResult<SysUserBaseVO> pageResult = new PageResult();
  167. //获取分页数量
  168. int total = super.baseMapper.gainUserBaseInfoCount(pageRequest);
  169. //计算mysql分页起索引
  170. int firstIndex = pageRequest.getPageNum()==1?0:(pageRequest.getPageNum()-1) * pageRequest.getPageSize() +1;
  171. //请求替换分页开始索引
  172. pageRequest.setPageNum(firstIndex);
  173. //计算mysql分页总页数
  174. int totalPages = total % pageRequest.getPageSize() == 0?total / pageRequest.getPageSize():total / pageRequest.getPageSize() +1;
  175. // if(pageRequest.getPageNum() > 0){
  176. // int newPageNum = pageRequest.getPageNum() -1;
  177. // pageRequest.setPageNum(newPageNum * pageRequest.getPageSize());
  178. // }
  179. pageResult.setContent(super.baseMapper.gainUserBaseInfo(pageRequest));
  180. //响应
  181. pageResult.setTotalSize(total);
  182. pageResult.setPageNum(pageRequest.getPageNum());
  183. pageResult.setPageSize(pageRequest.getPageSize());
  184. pageResult.setTotalPages(totalPages);
  185. return pageResult;
  186. }
  187. @Override
  188. public String gainNextUserId(String deptId) {
  189. int noCount = 3;//顺序号是几位的
  190. String nextPK;
  191. QueryWrapper<SysUser> lq = new QueryWrapper<>();
  192. lq.select(" MAX(id) as id ");
  193. lq.eq("dept_id",deptId);
  194. SysUser userMaxId = getOne(lq);
  195. String maxId = "";
  196. if(null != userMaxId) maxId = userMaxId.getId();
  197. if (StringUtils.isNullOrEmpty(maxId)) {
  198. nextPK = deptId + "001";
  199. } else {
  200. nextPK = IdGenerate.nextCode(maxId, noCount);
  201. }
  202. return nextPK;
  203. }
  204. @Override
  205. public SysUserInternalVO gainUserSynthesisInfo(String userId) {
  206. SysUserInternalVO vo = new SysUserInternalVO();
  207. SysUser sysUser = getById(userId);
  208. // EsmUserInternal sysUserInternal = esmUserInternalService.selectByPk(userId);
  209. String pDeptId = sysUser.getDeptId();
  210. if(pDeptId.indexOf("D") > 1){
  211. pDeptId = sysUser.getDeptId().substring(0,pDeptId.indexOf("D"));
  212. }
  213. SysDept sysDept = sysDeptService.getById(pDeptId);
  214. vo.setSysUser(sysUser);
  215. vo.setSysDept(sysDept);
  216. // vo.setSysUserInternal(sysUserInternal);
  217. return vo;
  218. }
  219. @Override
  220. public String findMaxId(String deptId) {
  221. QueryWrapper<SysUser> qw = new QueryWrapper<>();
  222. qw.select("IFNULL(MAX(id),0) maxId");
  223. qw.eq("dept_id",deptId);
  224. Map<String,Object> m = getMap(qw);
  225. String maxId = m.get("maxId").toString();
  226. return maxId;
  227. }
  228. @Override
  229. public boolean check(String userId,Integer approvalStatus,String approvalOpinion) {
  230. SysUser user = getById(userId);
  231. user.setApprovalStatus(approvalStatus);
  232. user.setApprovalOpinion(approvalOpinion);
  233. return updateById(user);
  234. }
  235. }