UserFacade.java 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306
  1. package com.diagbot.facade;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.diagbot.client.AuthServiceClient;
  6. import com.diagbot.client.DiagbotmanClient;
  7. import com.diagbot.dto.AuthenticationDTO;
  8. import com.diagbot.dto.CustomerDTO;
  9. import com.diagbot.dto.ExportKemaDTO;
  10. import com.diagbot.dto.ExportOrganizationDTO;
  11. import com.diagbot.dto.ExportUserInfoDTO;
  12. import com.diagbot.dto.ExportVerifiedDTO;
  13. import com.diagbot.dto.GetConsoleUserInfoDTO;
  14. import com.diagbot.dto.JwtDTO;
  15. import com.diagbot.dto.LoginDTO;
  16. import com.diagbot.dto.OrganizationDTO;
  17. import com.diagbot.dto.RespDTO;
  18. import com.diagbot.dto.UserAllDTO;
  19. import com.diagbot.dto.UserAndProdutUDTO;
  20. import com.diagbot.dto.UserInfoDTO;
  21. import com.diagbot.dto.UserInfoExportDTO;
  22. import com.diagbot.dto.UserLoginDTO;
  23. import com.diagbot.dto.UserOrgDTO;
  24. import com.diagbot.dto.UserOrgizationProductDTO;
  25. import com.diagbot.entity.JWT;
  26. import com.diagbot.entity.Organization;
  27. import com.diagbot.entity.User;
  28. import com.diagbot.entity.UserAuthentication;
  29. import com.diagbot.entity.UserOrganization;
  30. import com.diagbot.entity.UserRole;
  31. import com.diagbot.entity.wrapper.MenuWrapper;
  32. import com.diagbot.enums.AuthStatusEnum;
  33. import com.diagbot.enums.ConstantEnum;
  34. import com.diagbot.enums.IsDeleteEnum;
  35. import com.diagbot.enums.OrganizationTypeEnum;
  36. import com.diagbot.enums.RejectEnum;
  37. import com.diagbot.exception.CommonErrorCode;
  38. import com.diagbot.exception.CommonException;
  39. import com.diagbot.exception.ServiceErrorCode;
  40. import com.diagbot.service.impl.UserServiceImpl;
  41. import com.diagbot.util.BeanUtil;
  42. import com.diagbot.util.DateUtil;
  43. import com.diagbot.util.EntityUtil;
  44. import com.diagbot.util.ExportBeanExcelUtil;
  45. import com.diagbot.util.GsonUtil;
  46. import com.diagbot.util.ListUtil;
  47. import com.diagbot.util.RegexValidateUtil;
  48. import com.diagbot.util.StringUtil;
  49. import com.diagbot.util.UserUtils;
  50. import com.diagbot.vo.AmendOrgVO;
  51. import com.diagbot.vo.AmendUserInfoVO;
  52. import com.diagbot.vo.BaseIdVO;
  53. import com.diagbot.vo.ImgVerVerVO;
  54. import com.diagbot.vo.OrganizationVO;
  55. import com.diagbot.vo.PersonVO;
  56. import com.diagbot.vo.UserAndOrganizationVO;
  57. import com.diagbot.vo.UserExportVO;
  58. import com.diagbot.vo.UserInfoAuditVO;
  59. import com.diagbot.vo.UserInfoOrganizationsVO;
  60. import com.diagbot.vo.UserSaveVO;
  61. import com.diagbot.vo.UsernameVO;
  62. import org.springframework.beans.factory.annotation.Autowired;
  63. import org.springframework.security.crypto.factory.PasswordEncoderFactories;
  64. import org.springframework.security.crypto.password.PasswordEncoder;
  65. import org.springframework.security.oauth2.common.OAuth2AccessToken;
  66. import org.springframework.stereotype.Component;
  67. import javax.servlet.http.HttpServletResponse;
  68. import java.io.Serializable;
  69. import java.util.ArrayList;
  70. import java.util.Date;
  71. import java.util.HashMap;
  72. import java.util.List;
  73. import java.util.Map;
  74. /**
  75. * @Description: 用户业务层
  76. * @author: gaodm
  77. * @time: 2018/8/6 9:00
  78. */
  79. @Component
  80. public class UserFacade extends UserServiceImpl {
  81. private static final String CACHE_NAME = "UserInfo";
  82. @Autowired
  83. AuthServiceClient authServiceClient;
  84. @Autowired
  85. VerFacade verFacade;
  86. @Autowired
  87. OrganizationFacade organizationFacade;
  88. @Autowired
  89. UserOrganizationFacade userOrganizationFacade;
  90. @Autowired
  91. UserRoleFacade userRoleFacade;
  92. @Autowired
  93. MenuFacade menuFacade;
  94. @Autowired
  95. UserAuthenticationFacade userAuthenticationFacade;
  96. @Autowired
  97. PermissionFacade permissionFacade;
  98. @Autowired
  99. DiagbotmanClient diagbotmanClient;
  100. /**
  101. * 注册
  102. *
  103. * @param userSaveVO 参数
  104. * @return 用户信息
  105. */
  106. public Boolean createUser(UserSaveVO userSaveVO) {
  107. User user = new User();
  108. BeanUtil.copyProperties(userSaveVO, user);
  109. user.setGmtCreate(new Date());
  110. ImgVerVerVO imgVerVerVO = new ImgVerVerVO();
  111. BeanUtil.copyProperties(userSaveVO, imgVerVerVO);
  112. User bean = findByName(user.getUsername());
  113. if (bean != null) {
  114. throw new CommonException(ServiceErrorCode.USER_EXIST);
  115. }
  116. if (!RegexValidateUtil.checkMobileNumber(userSaveVO.getUsername())) {
  117. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "请输入正确的手机号");
  118. }
  119. verFacade.verifyImgVerification(imgVerVerVO); //保存时再次校验图形验证码,主要是为了防止跳过前端校验直接调用接口
  120. PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
  121. String entryPassword = passwordEncoder.encode(user.getPassword());
  122. user.setPassword(entryPassword);
  123. this.save(user);
  124. // 机构相关业务
  125. doOrganization(userSaveVO, user);
  126. //权限相关业务
  127. doPermisson(userSaveVO, user);
  128. //用户认证业务
  129. doUserAuthentication(userSaveVO, user);
  130. return true;
  131. }
  132. /**
  133. * 校验用户(手机号)未注册
  134. *
  135. * @param usernameVO 参数
  136. * @return 返回状态
  137. */
  138. public Boolean verifyNoUser(UsernameVO usernameVO) {
  139. String username = usernameVO.getUsername();
  140. if(StringUtil.isEmpty(username)) {
  141. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "请输入手机号");
  142. }
  143. if(!RegexValidateUtil.checkMobileNumber(username)) {
  144. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "请输入正确的手机号");
  145. }
  146. User bean = findByName(username);
  147. if (bean != null) {
  148. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该手机已注册");
  149. }
  150. return true;
  151. }
  152. /**
  153. * 校验用户(手机号)已注册
  154. *
  155. * @param usernameVO 参数
  156. * @return 返回状态
  157. */
  158. public Boolean verifyExistUser(UsernameVO usernameVO) {
  159. String username = usernameVO.getUsername();
  160. if(StringUtil.isEmpty(username)) {
  161. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "请输入手机号");
  162. }
  163. if(!RegexValidateUtil.checkMobileNumber(username)) {
  164. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "请输入正确的手机号");
  165. }
  166. User bean = findByName(username);
  167. if (bean == null) {
  168. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该手机未注册");
  169. }
  170. return true;
  171. }
  172. /**
  173. * @param page 分页参数
  174. * @param userSaveVO 参数
  175. * @return 用户列表
  176. */
  177. public RespDTO<IPage<User>> index(Page page, UserSaveVO userSaveVO) {
  178. User user = new User();
  179. BeanUtil.copyProperties(userSaveVO, user);
  180. IPage<User> res = this.indexPage(page, user);
  181. return RespDTO.onSuc(res);
  182. }
  183. /**
  184. * 添加一条默认用户认证信息
  185. *
  186. * @param userSaveVO 参数
  187. * @param user 参数
  188. */
  189. public void doUserAuthentication(UserSaveVO userSaveVO, User user) {
  190. UserAuthentication ua = new UserAuthentication();
  191. ua.setGmtCreate(new Date());
  192. ua.setUserId(user.getId());
  193. userAuthenticationFacade.save(ua);
  194. }
  195. /**
  196. * 如果机构已存在,只要添加用户与机构的映射即可;如果机构不存在,先添加机构信息
  197. *
  198. * @param userSaveVO 参数
  199. * @param user 参数
  200. */
  201. public void doPermisson(UserSaveVO userSaveVO, User user) {
  202. UserRole userRole = new UserRole();
  203. userRole.setUserId(user.getId());
  204. userRole.setRoleId(1L);
  205. userRole.setGmtCreate(new Date());
  206. userRoleFacade.save(userRole);
  207. }
  208. /**
  209. * 如果机构已存在,只要添加用户与机构的映射即可;如果机构不存在,先添加机构信息
  210. *
  211. * @param userSaveVO 参数
  212. * @param user 参数
  213. */
  214. public void doOrganization(UserSaveVO userSaveVO, User user) {
  215. Map<String, Object> paramMap = new HashMap<>();
  216. String name = userSaveVO.getOrganization();
  217. paramMap.put("name", name);
  218. Long orgId = 0L;
  219. List<Organization> list = organizationFacade.selectByMap(paramMap);
  220. if (ListUtil.isEmpty(list)) {
  221. Organization org = new Organization();
  222. org.setName(name);
  223. org.setGmtCreate(new Date());
  224. organizationFacade.save(org);
  225. orgId = org.getId();
  226. } else {
  227. orgId = list.get(0).getId();
  228. //查询机构下是否已存在用户信息,如已存在,就抛异常,需求核实2018.10.16
  229. Map paramMap1 = new HashMap();
  230. paramMap1.put("organization_id", orgId);
  231. paramMap1.put("is_deleted", IsDeleteEnum.N.getKey());
  232. List<UserOrganization> res1 = userOrganizationFacade.selectByMap(paramMap1);
  233. if (ListUtil.isNotEmpty(res1)) {
  234. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该机构下已存在用户,不能再添加别的用户");
  235. }
  236. }
  237. UserOrganization userOrganization = new UserOrganization();
  238. userOrganization.setUserId(user.getId());
  239. userOrganization.setOrganizationId(orgId);
  240. userOrganization.setGmtCreate(new Date());
  241. userOrganizationFacade.save(userOrganization);
  242. }
  243. /**
  244. * 根据用户名获取用户信息
  245. *
  246. * @param username 用户名
  247. * @return 用户信息
  248. */
  249. //@Cacheable(value = "UserName", key = "'username:'+#p0")
  250. public User getUserInfo(String username) {
  251. return this.findByName(username);
  252. }
  253. /**
  254. * 登录
  255. *
  256. * @return 登录相关信息
  257. */
  258. public LoginDTO getUserOrgMenu() {
  259. LoginDTO data = new LoginDTO();
  260. Long userId = Long.parseLong(UserUtils.getCurrentPrincipleID());
  261. User user = this.getById(userId);
  262. if (user == null) {
  263. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
  264. "用户不存在【" + userId + "】");
  265. }
  266. //添加用户
  267. UserLoginDTO userLoginDTO = new UserLoginDTO();
  268. BeanUtil.copyProperties(user, userLoginDTO);
  269. data.setUserLoginDTO(userLoginDTO);
  270. //添加机构信息
  271. Organization org = organizationFacade.getById(user.getId());
  272. data.setOrganization(org);
  273. //添加菜单信息
  274. List<MenuWrapper> menuList = menuFacade.getByRole(user.getId());
  275. Map<Long, List<MenuWrapper>> menuMap = EntityUtil.makeEntityListMap(menuList, "parentId");
  276. List<MenuWrapper> menuRes = menuMap.get(-1L);
  277. for (MenuWrapper bean : menuRes) {
  278. getSonMenu(bean, menuMap);
  279. }
  280. data.setMenuWrappers(menuRes);
  281. return data;
  282. }
  283. /**
  284. * 获取朗通后台个人信息
  285. *
  286. * @return 获取个人信息
  287. */
  288. public UserLoginDTO getPersonInfo() {
  289. Long userId = Long.parseLong(UserUtils.getCurrentPrincipleID());
  290. User user = this.getById(userId);
  291. if (user == null) {
  292. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
  293. "用户不存在【" + userId + "】");
  294. }
  295. UserLoginDTO userLoginDTO = new UserLoginDTO();
  296. BeanUtil.copyProperties(user, userLoginDTO);
  297. return userLoginDTO;
  298. }
  299. /**
  300. * 修改朗通后台个人信息
  301. */
  302. public void updatePersonInfo(PersonVO personVO) {
  303. if(!RegexValidateUtil.checkMobileNumber(personVO.getPhone())) {
  304. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
  305. "请输入正确的手机号");
  306. }
  307. Long userId = Long.parseLong(UserUtils.getCurrentPrincipleID());
  308. User user = this.getById(userId);
  309. if (user == null) {
  310. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
  311. "用户不存在【" + userId + "】");
  312. }
  313. user.setGmtModified(DateUtil.now());
  314. user.setPhone(personVO.getPhone());
  315. user.setLinkman(personVO.getLinkman());
  316. user.setDept(personVO.getDept());
  317. user.setPosition(personVO.getPosition());
  318. user.setEmail(personVO.getEmail());
  319. this.updateById(user);
  320. }
  321. /**
  322. * 获取jwt
  323. *
  324. * @param username 用户名
  325. * @param password 密码
  326. * @return jwt
  327. */
  328. public JwtDTO getJwt(String username, String password) {
  329. JwtDTO data = new JwtDTO();
  330. if (StringUtil.isBlank(username)) {
  331. throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
  332. "请输入手机号");
  333. }
  334. if (StringUtil.isBlank(password)) {
  335. throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
  336. "请输入密码");
  337. }
  338. User user = this.findByName(username);
  339. if (null == user) {
  340. throw new CommonException(ServiceErrorCode.USER_NOT_FOUND);
  341. }
  342. PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
  343. if (!passwordEncoder.matches(password, user.getPassword())) {
  344. throw new CommonException(ServiceErrorCode.USER_PASSWORD_ERROR);
  345. }
  346. JWT jwt = authServiceClient.getToken("Basic dWFhLXNlcnZpY2U6MTIzNDU2", "password", username, password);
  347. if (null == jwt) {
  348. throw new CommonException(ServiceErrorCode.GET_TOKEN_FAIL);
  349. }
  350. data.setAccessToken(jwt.getAccess_token());
  351. data.setRefreshToken(jwt.getRefresh_token());
  352. data.setType(user.getType());
  353. data.setTypeCn(ConstantEnum.getName(user.getType()));//返回中文
  354. return data;
  355. }
  356. /**
  357. * 刷新jwt
  358. *
  359. * @param refreshToken
  360. * @return jwt
  361. */
  362. public JwtDTO refreshJwt(String refreshToken) {
  363. JwtDTO data = new JwtDTO();
  364. if (StringUtil.isBlank(refreshToken)) {
  365. throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
  366. "刷新令牌不能为空");
  367. }
  368. JWT jwt = authServiceClient.refreshToken("Basic dWFhLXNlcnZpY2U6MTIzNDU2", "refresh_token", refreshToken);
  369. if (null == jwt) {
  370. throw new CommonException(ServiceErrorCode.GET_TOKEN_FAIL);
  371. }
  372. data.setAccessToken(jwt.getAccess_token());
  373. data.setRefreshToken(jwt.getRefresh_token());
  374. return data;
  375. }
  376. /**
  377. * 验证jwt
  378. *
  379. * @param token
  380. * @return jwt
  381. */
  382. public OAuth2AccessToken checkToken(String token) {
  383. if (StringUtil.isBlank(token)) {
  384. throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
  385. "令牌不能为空");
  386. }
  387. OAuth2AccessToken jwt = authServiceClient.checkToken("Basic dWFhLXNlcnZpY2U6MTIzNDU2", token);
  388. if (null == jwt) {
  389. throw new CommonException(ServiceErrorCode.GET_TOKEN_FAIL);
  390. }
  391. return jwt;
  392. }
  393. /**
  394. * 递归获取菜单结构
  395. *
  396. * @param menu 当前菜单
  397. * @param menuMap 菜单集
  398. * @return 菜单结构
  399. */
  400. public List<MenuWrapper> getSonMenu(MenuWrapper menu, Map<Long, List<MenuWrapper>> menuMap) {
  401. List<MenuWrapper> res = new ArrayList<>();
  402. List<MenuWrapper> list = menuMap.get(menu.getId());
  403. if (ListUtil.isNotEmpty(list)) {
  404. menu.setSubMenuList(list);
  405. for (MenuWrapper bean : list) {
  406. getSonMenu(bean, menuMap);
  407. }
  408. }
  409. return res;
  410. }
  411. /**
  412. * 递归获取菜单结构
  413. *
  414. * @param menuList 菜单参数
  415. */
  416. public void getMenuStruct(List<MenuWrapper> menuList) {
  417. for (MenuWrapper m : menuList) {
  418. m.setSubMenuList(recursion(m));
  419. }
  420. }
  421. /**
  422. * 递归查询菜单信息
  423. *
  424. * @param m 参数
  425. * @return 菜单信息
  426. */
  427. public List<MenuWrapper> recursion(MenuWrapper m) {
  428. List<MenuWrapper> subMenu = menuFacade.getSubMenuById(m.getId());
  429. for (MenuWrapper sub : subMenu) {
  430. sub.setSubMenuList(recursion(sub));
  431. }
  432. return subMenu;
  433. }
  434. /**
  435. * 获取用户相关信息和机构信息
  436. *
  437. * @param userIds 用户ids
  438. * @return 用户相关信息和机构信息
  439. */
  440. public Map<Long, UserOrgDTO> getUserAndOrg(List<Long> userIds) {
  441. Map<Long, UserOrgDTO> data = new HashMap();
  442. if (ListUtil.isEmpty(userIds)) {
  443. return data;
  444. }
  445. List<UserOrgDTO> list = this.getUserOrgByIds(userIds);
  446. // for(UserOrgDTO bean : list) {
  447. // data.put(bean.getUserId(), bean);
  448. // }
  449. data = EntityUtil.makeEntityMap(list, "userId");
  450. return data;
  451. }
  452. /**
  453. * 重置密码
  454. *
  455. * @param username 用户名
  456. * @param password 重置密码
  457. * @param diffPassword 是否与上次密码不同标识
  458. * @return 重置密码是否成功
  459. */
  460. public RespDTO resetPassword(String username, String password, String diffPassword) {
  461. if (StringUtil.isBlank(username)) {
  462. throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
  463. "请输入手机号");
  464. }
  465. if (StringUtil.isBlank(password)) {
  466. throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
  467. "请输入密码");
  468. }
  469. User user = this.findByName(username);
  470. if (null == user) {
  471. throw new CommonException(ServiceErrorCode.USER_NOT_FOUND);
  472. }
  473. PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
  474. if (!StringUtil.isBlank(diffPassword) && "Y".equals(diffPassword)) {
  475. if (passwordEncoder.matches(password, user.getPassword())) {
  476. throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "修改后密码不能与修改前相同");
  477. }
  478. }
  479. String entryPassword = passwordEncoder.encode(password);
  480. user.setPassword(entryPassword);
  481. user.setGmtModified(new Date());
  482. this.updateById(user);
  483. return RespDTO.onSuc(true);
  484. }
  485. /**
  486. * 修改密码
  487. *
  488. * @param password 原密码
  489. * @param modifyPassword 新密码
  490. * @return 修改密码是否成功
  491. */
  492. public Boolean modifyPassword(String password, String modifyPassword) {
  493. if (StringUtil.isBlank(password)) {
  494. throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
  495. "请输入密码");
  496. }
  497. if (StringUtil.isBlank(modifyPassword)) {
  498. throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
  499. "请输入新密码");
  500. }
  501. if(password.equals(modifyPassword)) {
  502. throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
  503. "原密码和新密码不能相同");
  504. }
  505. Long userId = Long.parseLong(UserUtils.getCurrentPrincipleID());
  506. User user = this.getById(userId);
  507. if (user == null) {
  508. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
  509. "用户不存在【" + userId + "】");
  510. }
  511. PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
  512. if (!passwordEncoder.matches(password, user.getPassword())) {
  513. throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "原密码错误");
  514. }
  515. String entryPassword = passwordEncoder.encode(modifyPassword);
  516. user.setPassword(entryPassword);
  517. user.setGmtModified(new Date());
  518. this.updateById(user);
  519. return true;
  520. }
  521. //---------------缓存演示开始-------------------------------------
  522. /**
  523. * 新建用户
  524. *
  525. * @param user 新建用户信息输入参数
  526. * @return 用户信息
  527. */
  528. //@CachePut(value = CACHE_NAME, key = "'user:'+#p0['id']")
  529. public User saveUser(User user) {
  530. PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
  531. String entryPassword = passwordEncoder.encode(user.getPassword());
  532. user.setPassword(entryPassword);
  533. user.setGmtCreate(new Date());
  534. user.setCreator(UserUtils.getCurrentPrincipleID());
  535. super.save(user);
  536. return user;
  537. }
  538. /**
  539. * 更新用户信息
  540. *
  541. * @param user 更新用户信息输入参数
  542. * @return 用户信息
  543. */
  544. //@CachePut(value = CACHE_NAME, key = "'user:'+#p0['id']")
  545. public User updateUser(User user) {
  546. PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
  547. String entryPassword = passwordEncoder.encode(user.getPassword());
  548. user.setPassword(entryPassword);
  549. user.setGmtModified(new Date());
  550. user.setModifier(UserUtils.getCurrentPrincipleID());
  551. super.updateById(user);
  552. return user;
  553. }
  554. /**
  555. * 根据用户ID获取用户信息
  556. *
  557. * @param id 用户ID
  558. * @return 用户信息
  559. */
  560. @Override
  561. //@Cacheable(value = CACHE_NAME, key = "'user:'+#p0")
  562. public User getById(Serializable id) {
  563. return super.getById(id);
  564. }
  565. /**
  566. * 根据用户ID删除用户(物理删除)
  567. *
  568. * @param id 用户ID
  569. * @return 是否成功
  570. */
  571. @Override
  572. //@CacheEvict(value = CACHE_NAME, key = "'user:'+#p0")
  573. public boolean removeById(Serializable id) {
  574. return super.removeById(id);
  575. }
  576. /**
  577. * 获取控制台用户信息
  578. *
  579. * @return 用户信息
  580. */
  581. public GetConsoleUserInfoDTO getConsoleUserInfo() {
  582. Long userId = Long.parseLong(UserUtils.getCurrentPrincipleID());
  583. User user = this.getById(userId);
  584. Organization organization = organizationFacade.getByUserId(userId);
  585. QueryWrapper<UserAuthentication> qw = new QueryWrapper<>();
  586. qw.eq("user_id", userId).
  587. eq("is_deleted", IsDeleteEnum.N.getKey());
  588. UserAuthentication userAuthentication = userAuthenticationFacade.getOne(qw);
  589. GetConsoleUserInfoDTO getConsoleUserInfoDTO = new GetConsoleUserInfoDTO();
  590. getConsoleUserInfoDTO.setUserName(user.getUsername());
  591. getConsoleUserInfoDTO.setOrganizationName(organization.getName());
  592. getConsoleUserInfoDTO.setUserStatus(AuthStatusEnum.getName(userAuthentication.getStatus()));
  593. // getConsoleUserInfoDTO.setUser(user);
  594. // getConsoleUserInfoDTO.setOrganization(organization);
  595. // getConsoleUserInfoDTO.setUserAuthentication(userAuthentication);
  596. return getConsoleUserInfoDTO;
  597. }
  598. //---------------缓存演示结束-------------------------------------
  599. /**
  600. * 远程调用,根据机构名称获取用户信息
  601. *
  602. * @param orgName 机构信息
  603. * @return 用户ids
  604. */
  605. public List<Long> getUserByOrgNameFac(String orgName) {
  606. List<Long> userIdList = new ArrayList<>();
  607. if (StringUtil.isEmpty(orgName)) {
  608. return userIdList;
  609. }
  610. List<User> userList = this.getUserByOrgName(orgName);
  611. for (User bean : userList) {
  612. userIdList.add(bean.getId());
  613. }
  614. return userIdList;
  615. }
  616. /**
  617. * @param userExportVO
  618. * @return
  619. * @return 导出Excel文件
  620. */
  621. public void export(UserExportVO userExportVO,HttpServletResponse response) {
  622. Map<String, Object> userMap = new HashMap<String, Object>();
  623. userMap.put("startTime", userExportVO.getStartTime());
  624. userMap.put("endTime", userExportVO.getEndTime());
  625. userMap.put("autStatus",userExportVO.getAutStatus());
  626. userMap.put("orgName",userExportVO.getOrgName());
  627. userMap.put("userName",userExportVO.getUserName());
  628. List<UserInfoDTO> datas = dependentuserInfoByTime(userMap);
  629. GsonUtil.toJson(datas);
  630. List<String> listName = new ArrayList<>();
  631. listName.add("用户id");
  632. listName.add("记录创建时间");
  633. listName.add("用户名");
  634. listName.add("联系人");
  635. listName.add("邮箱");
  636. listName.add("机构ID");
  637. listName.add("机构名称");
  638. listName.add("机构属性");
  639. listName.add("负责人");
  640. listName.add("机构地址");
  641. listName.add("上级机构id");
  642. listName.add("下属机构数量");
  643. listName.add("岗位信息");
  644. listName.add("是否通过认证 ");
  645. listName.add("认证状态");
  646. List<String> listId = new ArrayList<>();
  647. listId.add("userId");//用户ID
  648. listId.add("userGmtCreate");//记录创建时间
  649. listId.add("userName");// 用户名
  650. listId.add("linKman");//联系人
  651. listId.add("email");// 邮箱
  652. listId.add("orgId");//机构ID
  653. //listId.add("orgGmtCreate");//记录创建时间
  654. listId.add("orgName");//机构名称
  655. listId.add("orgType");//机构属性
  656. listId.add("orgPrincipal");//负责人
  657. listId.add("orgAddress");//机构地址
  658. listId.add("orgParentId");//上级机构id
  659. listId.add("orgSubNum");//下属机构数量
  660. listId.add("autPosition");//岗位信息
  661. listId.add("autIsReject");//是否通过认证 N:未通过,Y:已通过
  662. listId.add("autStatus");//认证状态
  663. List<UserInfoExportDTO> list = new ArrayList<>();
  664. for (int i = 0; i < datas.size(); i++) {
  665. UserInfoDTO userInfo = datas.get(i);
  666. list.add(new UserInfoExportDTO(String.valueOf(userInfo.getUserId()),
  667. DateUtil.formatDate(userInfo.getUserGmtCreate()),
  668. userInfo.getUserName(),
  669. userInfo.getLinKman(),
  670. userInfo.getEmail(),
  671. String.valueOf(userInfo.getOrgId()),
  672. userInfo.getOrgName(),
  673. OrganizationTypeEnum.getName(userInfo.getOrgType()),
  674. userInfo.getOrgPrincipal(),
  675. userInfo.getOrgAddress(),
  676. String.valueOf(userInfo.getOrgParentId()),
  677. String.valueOf(userInfo.getOrgSubNum()),
  678. userInfo.getAutPosition(),
  679. String.valueOf(userInfo.getAutIsReject()),
  680. AuthStatusEnum.getName(userInfo.getAutStatus())));
  681. }
  682. //response.setContentType("text/html;charset=UTF-8");
  683. /* String filePath = userExportVO.getFilePath();//文件路径
  684. String fileName = userExportVO.getFileName();//文件名
  685. ExportBeanExcelUtil ex = new ExportBeanExcelUtil();
  686. RespDTO resul = ex.exportExcel("测试POI导出EXCEL文档", listName, listId, list, filePath, fileName);*/
  687. response.setContentType("text/html;charset=UTF-8");
  688. ExportBeanExcelUtil ex = new ExportBeanExcelUtil();
  689. ex.exportExcelNew("用户信息详情", listName, listId, list,response);
  690. }
  691. /**
  692. * @param userInfoOrganizationsVO
  693. * @return 修改用户信息和机构信息
  694. */
  695. public RespDTO<UserInfoOrganizationsVO> updateUserInfoAlls(UserInfoOrganizationsVO userInfoOrganizationsVO) {
  696. Map<String, Object> userMap = new HashMap<String, Object>();
  697. userMap.put("modifier", UserUtils.getCurrentPrincipleID());
  698. userMap.put("gmtModified", DateUtil.now());
  699. userMap.put("email", userInfoOrganizationsVO.getEmail());
  700. userMap.put("principal", userInfoOrganizationsVO.getPrincipal());
  701. userMap.put("address", userInfoOrganizationsVO.getAddress());
  702. userMap.put("type", userInfoOrganizationsVO.getType());
  703. userMap.put("position", userInfoOrganizationsVO.getPosition());
  704. userMap.put("userId", userInfoOrganizationsVO.getUserId());
  705. userMap.put("orgId", userInfoOrganizationsVO.getOrgId());
  706. userMap.put("orgSubNum", userInfoOrganizationsVO.getOrgSubNum());
  707. boolean res = updateUserInfoAll(userMap);
  708. if (!res) {
  709. throw new CommonException(CommonErrorCode.UPDATE_INFO_FAIL);
  710. }
  711. return RespDTO.onSuc(res);
  712. }
  713. /**
  714. * @param userInfoAuditVO
  715. * @return 审核用户信息和机构信息
  716. */
  717. public RespDTO<Boolean> auditUserInfoAlls(UserInfoAuditVO userInfoAuditVO) {
  718. Map<String, Object> auditMap = new HashMap<String, Object>();
  719. auditMap.put("userId", userInfoAuditVO.getUserId());
  720. auditMap.put("modifier", UserUtils.getCurrentPrincipleID());
  721. auditMap.put("gmtModified", DateUtil.now());
  722. auditMap.put("certificationDate", DateUtil.now());
  723. auditMap.put("isReject", userInfoAuditVO.getIsReject());
  724. auditMap.put("rejectComment", userInfoAuditVO.getRejectComment());
  725. auditMap.put("rejectType", userInfoAuditVO.getRejectType());
  726. auditMap.put("status", userInfoAuditVO.getStatus());
  727. // TODO 审核前先验证该用户的的认证状态
  728. auditUserInfoAll(auditMap);
  729. return RespDTO.onSuc(true);
  730. }
  731. /**
  732. * 添加机构信息
  733. * @param organizationVO
  734. * @return
  735. */
  736. public RespDTO<Boolean> addOrganizations(OrganizationVO organizationVO) {
  737. String organizationName = organizationVO.getOrganizationName();
  738. List<Organization> organizationList = organizationFacade.findOrganizationAll(organizationName);
  739. if (ListUtil.isNotEmpty(organizationList)) {
  740. throw new CommonException(CommonErrorCode.NOT_EXISTS, "该机构存在");
  741. }
  742. Organization organization = new Organization();
  743. organization.setName(organizationVO.getOrganizationName());
  744. organization.setType(organizationVO.getType());
  745. organization.setPrincipal(organizationVO.getPrincipal());
  746. organization.setSubNum(organizationVO.getSubNum());
  747. organization.setAddress(organizationVO.getAddress());
  748. organization.setGmtCreate(DateUtil.now());
  749. organization.setModifier(UserUtils.getCurrentPrincipleID());
  750. boolean res = organizationFacade.save(organization);
  751. // System.out.println(GsonUtil.toJson(organization));
  752. if (!res) {
  753. throw new CommonException(CommonErrorCode.UPDATE_INFO_FAIL);
  754. }
  755. return RespDTO.onSuc(res);
  756. }
  757. /**
  758. * 添加用户信息和机构信息管理员
  759. * @param userAndOrganizationVO
  760. * @return
  761. */
  762. public RespDTO<Boolean> addUserInfos(UserAndOrganizationVO userAndOrganizationVO) {
  763. // TODO 先查找机构,获取机构id,再注册用户,返回用户id, 取到用户id和 机构id ,查询用户机构关联表,在进行绑定
  764. // User user = new User();
  765. // 验证用户是否存在
  766. String username = userAndOrganizationVO.getUserName();
  767. User userData = getUserInfo(username);
  768. // System.out.println(user);
  769. if (userData != null) {
  770. throw new CommonException(CommonErrorCode.IS_EXISTS, "该用户已存在");
  771. }
  772. // 验证机构是否被绑定
  773. UserOrganization userORG = new UserOrganization();
  774. userORG.setOrganizationId(userAndOrganizationVO.getOrganizationid());
  775. List<UserOrganization> userOrganizationData = userOrganizationFacade.getAgencyPersonnel(userORG);
  776. if (ListUtil.isNotEmpty(userOrganizationData)) {
  777. throw new CommonException(CommonErrorCode.IS_EXISTS, "该机构绑定了用户");
  778. }
  779. User user = new User();
  780. user.setCreator(UserUtils.getCurrentPrincipleID());
  781. user.setUsername(userAndOrganizationVO.getUserName());
  782. PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
  783. String entryPassword = passwordEncoder.encode(userAndOrganizationVO.getPassWord());
  784. user.setPassword(entryPassword);
  785. user.setLinkman(userAndOrganizationVO.getLinkman());
  786. user.setGmtCreate(DateUtil.now());
  787. user.setEmail(userAndOrganizationVO.getEmail());
  788. save(user);
  789. Long userId = user.getId();
  790. // 用户信息的认证
  791. UserAuthentication userAuthentication = new UserAuthentication();
  792. userAuthentication.setCreator(UserUtils.getCurrentPrincipleID());//
  793. // 创建人Id
  794. userAuthentication.setGmtCreate(DateUtil.now());// 记录创建时间
  795. userAuthentication.setPosition(userAndOrganizationVO.getPosition());// 岗位信息
  796. userAuthentication.setUserId(userId);// 用户id
  797. userAuthentication.setIsReject(RejectEnum.PASS.getKey());// 是否通过认证 0:未通过,1:已通过
  798. userAuthentication.setStatus(AuthStatusEnum.Authorized.getKey());// 认证状态(0:未认证,1:已认证,2:认证中)
  799. userAuthenticationFacade.save(userAuthentication);
  800. // 用户信息和机构信息的绑定
  801. UserOrganization userOrganization = new UserOrganization();
  802. userOrganization.setCreator(UserUtils.getCurrentPrincipleID());//
  803. // 创建人Id
  804. userOrganization.setGmtCreate(DateUtil.now());
  805. userOrganization.setOrganizationId(userAndOrganizationVO.getOrganizationid());// 机构id
  806. userOrganization.setUserId(userId);// 用户id
  807. userOrganizationFacade.save(userOrganization);
  808. UserRole userRole = new UserRole();
  809. userRole.setUserId(user.getId());
  810. userRole.setRoleId(1L);
  811. userRole.setGmtCreate(new Date());
  812. userRole.setCreator(UserUtils.getCurrentPrincipleID());
  813. userRoleFacade.save(userRole);
  814. return RespDTO.onSuc(true);
  815. }
  816. /**
  817. * 删除用户信息和机构信息
  818. *
  819. * @param baseIdVO 参数
  820. * @return 删除用户信息和机构信息
  821. */
  822. public RespDTO<Boolean> updateDeleteds(BaseIdVO baseIdVO) {
  823. Map<String, Object> map = new HashMap<String, Object>();
  824. map.put("userId", baseIdVO.getId());
  825. map.put("modifier", UserUtils.getCurrentPrincipleID());
  826. map.put("gmtModified", DateUtil.now());
  827. updateDeleted(map);
  828. return RespDTO.onSuc(true);
  829. }
  830. /**
  831. * @param page
  832. * @param orgName
  833. * @param autStatus
  834. * @return 分页查询用户信息和机构信息开通产品
  835. */
  836. public RespDTO<IPage<UserInfoDTO>> getUserOrganProductAlls(Page page, String orgName, Integer autStatus) {
  837. UserInfoDTO userInfo = new UserInfoDTO();
  838. userInfo.setOrgName(orgName);
  839. userInfo.setAutStatus(autStatus);
  840. IPage<UserInfoDTO> user = selectUserInfoListPage(page, userInfo);
  841. List<UserInfoDTO> userData = user.getRecords();
  842. List<Long> userIds = new ArrayList<>();
  843. for (UserInfoDTO userInfoDTO : userData) {
  844. Long userInfoId = userInfoDTO.getUserId();
  845. userIds.add(userInfoId);
  846. }
  847. RespDTO<List<UserAndProdutUDTO>> InformationData = diagbotmanClient.getInformationAvailableAll(userIds);
  848. if (InformationData == null || !"0".equals(InformationData.code)) {
  849. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
  850. "获取所有开通信息失败");
  851. }
  852. Map<Long, List<UserAndProdutUDTO>> map = new HashMap<>();
  853. //获取所有用户开通的产品信息
  854. List<UserAndProdutUDTO> dataList = InformationData.data;
  855. map = EntityUtil.makeEntityListMap(dataList, "userId");
  856. if (map.size() > 0) {
  857. for (UserInfoDTO userInfoDTO : userData) {
  858. List<UserAndProdutUDTO> userAndProdutUDTO = map.get(userInfoDTO.getUserId());
  859. if (ListUtil.isNotEmpty(userAndProdutUDTO)) {
  860. userInfoDTO.setUserAndProdutUDTO(userAndProdutUDTO);
  861. }
  862. }
  863. }
  864. System.out.println("====================" + GsonUtil.toJson(userData));
  865. user.setRecords(userData);
  866. return RespDTO.onSuc(user);
  867. }
  868. /**
  869. * 1.分页查询注册用户信息接口 queryUserInformation
  870. * @param page
  871. * @param userName
  872. * @param autStatus
  873. * @return
  874. */
  875. public RespDTO<IPage<UserAllDTO>> queryUserInformations(Page page, String userName, Integer autStatus,String startTime,String endTime){
  876. CustomerDTO userInfo = new CustomerDTO();
  877. if(userName != null && userName.length() != 0){
  878. userInfo.setUserName(userName);
  879. }
  880. if(autStatus!=null){
  881. userInfo.setAutStatus(autStatus);
  882. }
  883. if(startTime != null && startTime.length() != 0){
  884. userInfo.setStartTime(startTime);
  885. }
  886. if(endTime != null && endTime.length() != 0){
  887. userInfo.setEndTime(endTime);
  888. }
  889. return RespDTO.onSuc(queryUserInformation(page, userInfo));
  890. }
  891. /**
  892. * 2.分页查询机构信息接口 queryMechanismInformation
  893. * @param page
  894. * @param orgName
  895. * @return
  896. */
  897. public RespDTO<IPage<OrganizationDTO>> queryMechanismInformations(Page page, String orgName,String startTime,String endTime){
  898. CustomerDTO userInfo = new CustomerDTO();
  899. if(orgName != null && orgName.length() != 0){
  900. userInfo.setOrgName(orgName);
  901. }
  902. if(startTime != null && startTime.length() != 0){
  903. userInfo.setStartTime(startTime);
  904. }
  905. if(endTime != null && endTime.length() != 0){
  906. userInfo.setEndTime(endTime);
  907. }
  908. return RespDTO.onSuc(queryMechanismInformation(page, userInfo));
  909. }
  910. /**
  911. * 3.分页查询已认证用户信息和机构信息及开通产品接口 queryVerifiedUserOrganizationProduct
  912. * @param page
  913. * @param orgName
  914. * @param userName
  915. * @return
  916. */
  917. public RespDTO<IPage<UserOrgizationProductDTO>> queryVerifiedUserOrganizationProducts(Page page,String orgName,String userName,String startTime,String endTime) {
  918. CustomerDTO userInfo = new CustomerDTO();
  919. if(userName != null && userName.length() != 0){
  920. userInfo.setUserName(userName);
  921. }
  922. if(orgName != null && orgName.length() != 0){
  923. userInfo.setOrgName(orgName);
  924. }
  925. if(startTime != null && startTime.length() != 0){
  926. userInfo.setStartTime(startTime);
  927. }
  928. if(endTime != null && endTime.length() != 0){
  929. userInfo.setEndTime(endTime);
  930. }
  931. IPage<UserOrgizationProductDTO> user = queryVerifiedUserOrganizationProduct(page, userInfo);
  932. List<UserOrgizationProductDTO> userData = user.getRecords();
  933. List<Long> userIds = new ArrayList<>();
  934. for (UserOrgizationProductDTO userInfoDTO : userData) {
  935. Long userInfoId = userInfoDTO.getUserId();
  936. userIds.add(userInfoId);
  937. }
  938. if(userIds.size()>0){
  939. RespDTO<List<UserAndProdutUDTO>> InformationData = diagbotmanClient.getInformationAvailableAll(userIds);
  940. if (InformationData == null || !"0".equals(InformationData.code)) {
  941. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
  942. "获取所有开通信息失败");
  943. }
  944. Map<Long, List<UserAndProdutUDTO>> map = new HashMap<>();
  945. //获取所有用户开通的产品信息
  946. List<UserAndProdutUDTO> dataList = InformationData.data;
  947. map = EntityUtil.makeEntityListMap(dataList, "userId");
  948. if (map.size() > 0) {
  949. for (UserOrgizationProductDTO userInfoDTO : userData) {
  950. List<UserAndProdutUDTO> userAndProdutUDTO = map.get(userInfoDTO.getUserId());
  951. if (ListUtil.isNotEmpty(userAndProdutUDTO)) {
  952. userInfoDTO.setUserAndProdutUDTO(userAndProdutUDTO);
  953. }
  954. }
  955. }
  956. }
  957. //System.out.println("====================" + GsonUtil.toJson(userData));
  958. user.setRecords(userData);
  959. return RespDTO.onSuc(user);
  960. }
  961. /**
  962. * 4.分页查询认证中的用户信息接口 queryAuthentication
  963. * @param page
  964. * @param orgName
  965. * @param userName
  966. * @return
  967. */
  968. public RespDTO<IPage<AuthenticationDTO>> queryAuthentications(Page page,String orgName,String userName,String startTime,String endTime) {
  969. CustomerDTO userInfo = new CustomerDTO();
  970. if(userName != null && userName.length() != 0){
  971. userInfo.setUserName(userName);
  972. }
  973. if(orgName != null && orgName.length() != 0){
  974. userInfo.setOrgName(orgName);
  975. }
  976. if(startTime != null && startTime.length() != 0){
  977. userInfo.setStartTime(startTime);
  978. }
  979. if(endTime != null && endTime.length() != 0){
  980. userInfo.setEndTime(endTime);
  981. }
  982. return RespDTO.onSuc(queryAuthentication(page, userInfo));
  983. }
  984. /**
  985. * 导出用户信息
  986. * @param userExportVO
  987. * @param response
  988. */
  989. public void exportUserInfo(UserExportVO userExportVO, HttpServletResponse response) {
  990. Map<String, Object> userMap = new HashMap<String, Object>();
  991. userMap.put("startTime", userExportVO.getStartTime());
  992. userMap.put("endTime", userExportVO.getEndTime());
  993. userMap.put("autStatus",userExportVO.getAutStatus());
  994. userMap.put("orgName",userExportVO.getOrgName());
  995. userMap.put("userName",userExportVO.getUserName());
  996. List<UserInfoDTO> datas = dependentuserInfoByTime(userMap);
  997. GsonUtil.toJson(datas);
  998. List<String> listName = new ArrayList<>();
  999. listName.add("用户id");
  1000. listName.add("创建时间");
  1001. listName.add("联系人");
  1002. listName.add("认证状态");
  1003. listName.add("用户名");
  1004. listName.add("邮箱");
  1005. listName.add("机构名称");
  1006. List<String> listId = new ArrayList<>();
  1007. listId.add("userId");//用户ID
  1008. listId.add("userGmtCreate");//记录创建时间
  1009. listId.add("linKman");//联系人
  1010. listId.add("autStatus");//认证状态
  1011. listId.add("userName");// 用户名
  1012. listId.add("email");// 邮箱
  1013. listId.add("orgName");//机构名称
  1014. List<ExportUserInfoDTO> list = new ArrayList<>();
  1015. for (int i = 0; i < datas.size(); i++) {
  1016. UserInfoDTO userInfo = datas.get(i);
  1017. list.add(new ExportUserInfoDTO(String.valueOf(userInfo.getUserId()),
  1018. DateUtil.formatDate(userInfo.getUserGmtCreate()),
  1019. userInfo.getLinKman(),
  1020. AuthStatusEnum.getName(userInfo.getAutStatus()),
  1021. userInfo.getUserName(),
  1022. userInfo.getEmail(),
  1023. userInfo.getOrgName()));
  1024. }
  1025. response.setContentType("text/html;charset=UTF-8");
  1026. ExportBeanExcelUtil ex = new ExportBeanExcelUtil();
  1027. ex.exportExcelNew("注册用户信息", listName, listId, list,response);
  1028. }
  1029. //导出机构信息数据
  1030. public void exportOrganization(UserExportVO userExportVO, HttpServletResponse response) {
  1031. Map<String, Object> userMap = new HashMap<String, Object>();
  1032. userMap.put("startTime", userExportVO.getStartTime());
  1033. userMap.put("endTime", userExportVO.getEndTime());
  1034. /*userMap.put("autStatus",userExportVO.getAutStatus());*/
  1035. userMap.put("orgName",userExportVO.getOrgName());
  1036. /*userMap.put("userName",userExportVO.getUserName());*/
  1037. List<UserInfoDTO> datas = exportOrganizations(userMap);
  1038. GsonUtil.toJson(datas);
  1039. List<String> listName = new ArrayList<>();
  1040. listName.add("机构ID");
  1041. listName.add("注册时间");
  1042. listName.add("注册机构");
  1043. listName.add("机构负责人");
  1044. listName.add("机构属性");
  1045. listName.add("机构地址");
  1046. listName.add("超管名称");
  1047. List<String> listId = new ArrayList<>();
  1048. listId.add("orgId");//机构ID
  1049. listId.add("orgGmtCreate");//记录创建时间
  1050. listId.add("orgName");//机构名称
  1051. listId.add("orgPrincipal");//负责人
  1052. listId.add("orgType");//机构属性
  1053. listId.add("orgAddress");//机构地址
  1054. listId.add("userName");// 用户名
  1055. List<ExportOrganizationDTO> list = new ArrayList<>();
  1056. for (int i = 0; i < datas.size(); i++) {
  1057. UserInfoDTO userInfo = datas.get(i);
  1058. list.add(new ExportOrganizationDTO(
  1059. String.valueOf(userInfo.getOrgId()),
  1060. DateUtil.formatDate(userInfo.getOrgGmtCreate()),
  1061. userInfo.getOrgName(),
  1062. userInfo.getOrgPrincipal(),
  1063. OrganizationTypeEnum.getName(userInfo.getOrgType()),
  1064. userInfo.getOrgAddress(),
  1065. userInfo.getUserName()));
  1066. }
  1067. response.setContentType("text/html;charset=UTF-8");
  1068. ExportBeanExcelUtil ex = new ExportBeanExcelUtil();
  1069. ex.exportExcelNew("机构信息详情", listName, listId, list,response);
  1070. }
  1071. //导出认证中数据
  1072. public void exportKema(UserExportVO userExportVO, HttpServletResponse response) {
  1073. Map<String, Object> userMap = new HashMap<String, Object>();
  1074. userMap.put("startTime", userExportVO.getStartTime());
  1075. userMap.put("endTime", userExportVO.getEndTime());
  1076. userMap.put("autStatus",userExportVO.getAutStatus());
  1077. userMap.put("orgName",userExportVO.getOrgName());
  1078. userMap.put("userName",userExportVO.getUserName());
  1079. List<UserInfoDTO> datas = dependentuserInfoByTime(userMap);
  1080. GsonUtil.toJson(datas);
  1081. List<String> listName = new ArrayList<>();
  1082. listName.add("编号");
  1083. listName.add("创建时间");
  1084. listName.add("超管理名称");
  1085. listName.add("所在机构");
  1086. listName.add("岗位名称");
  1087. listName.add("手机号");
  1088. listName.add("邮箱");
  1089. listName.add("认证状态");
  1090. List<String> listId = new ArrayList<>();
  1091. listId.add("userId");//用户ID
  1092. listId.add("userGmtCreate");//记录创建时间
  1093. listId.add("linKman");//联系人
  1094. listId.add("orgName");//机构名称
  1095. listId.add("autPosition");//岗位信息
  1096. listId.add("userName");// 用户名
  1097. listId.add("email");// 邮箱
  1098. listId.add("autStatus");//认证状态
  1099. List<ExportKemaDTO> list = new ArrayList<>();
  1100. for (int i = 0; i < datas.size(); i++) {
  1101. UserInfoDTO userInfo = datas.get(i);
  1102. list.add(new ExportKemaDTO(String.valueOf(userInfo.getUserId()),
  1103. DateUtil.formatDate(userInfo.getUserGmtCreate()),
  1104. userInfo.getLinKman(),
  1105. userInfo.getOrgName(),
  1106. userInfo.getAutPosition(),
  1107. userInfo.getUserName(),
  1108. userInfo.getEmail(),
  1109. AuthStatusEnum.getName(userInfo.getAutStatus())));
  1110. }
  1111. response.setContentType("text/html;charset=UTF-8");
  1112. ExportBeanExcelUtil ex = new ExportBeanExcelUtil();
  1113. ex.exportExcelNew("认证用户信息详情", listName, listId, list,response);
  1114. }
  1115. //导出已认证数据
  1116. public void exportVerified(UserExportVO userExportVO, HttpServletResponse response) {
  1117. Map<String, Object> userMap = new HashMap<String, Object>();
  1118. userMap.put("startTime", userExportVO.getStartTime());
  1119. userMap.put("endTime", userExportVO.getEndTime());
  1120. userMap.put("autStatus",userExportVO.getAutStatus());
  1121. userMap.put("orgName",userExportVO.getOrgName());
  1122. userMap.put("userName",userExportVO.getUserName());
  1123. List<UserInfoDTO> datas = dependentuserInfoByTime(userMap);
  1124. GsonUtil.toJson(datas);
  1125. List<String> listName = new ArrayList<>();
  1126. listName.add("编号");
  1127. listName.add("注册时间");
  1128. listName.add("审核通过时间");
  1129. listName.add("超管理名称");
  1130. listName.add("所在机构");
  1131. listName.add("岗位名称");
  1132. listName.add("手机号");
  1133. listName.add("邮箱");
  1134. listName.add("状态");
  1135. List<String> listId = new ArrayList<>();
  1136. listId.add("userId");//用户ID
  1137. listId.add("userGmtCreate");//记录创建时间
  1138. listId.add("userGmtModified");
  1139. listId.add("linKman");//联系人
  1140. listId.add("orgName");//机构名称
  1141. listId.add("autPosition");//岗位信息
  1142. listId.add("userName");// 用户名
  1143. listId.add("email");// 邮箱
  1144. listId.add("autStatus");//认证状态
  1145. List<ExportVerifiedDTO> list = new ArrayList<>();
  1146. for (int i = 0; i < datas.size(); i++) {
  1147. UserInfoDTO userInfo = datas.get(i);
  1148. list.add(new ExportVerifiedDTO(String.valueOf(userInfo.getUserId()),
  1149. DateUtil.formatDate(userInfo.getUserGmtCreate()),
  1150. DateUtil.formatDate(userInfo.getUserGmtModified()),
  1151. userInfo.getLinKman(),
  1152. userInfo.getOrgName(),
  1153. userInfo.getOrgPrincipal(),
  1154. userInfo.getUserName(),
  1155. userInfo.getEmail(),
  1156. AuthStatusEnum.getName(userInfo.getAutStatus())));
  1157. }
  1158. response.setContentType("text/html;charset=UTF-8");
  1159. ExportBeanExcelUtil ex = new ExportBeanExcelUtil();
  1160. ex.exportExcelNew("已认证用户信息", listName, listId, list,response);
  1161. }
  1162. //超管修改用户信息接口
  1163. public RespDTO<Boolean> updateUserInfos(AmendUserInfoVO amendUserInfoVO) {
  1164. Map<String, Object> amendUserInfo = new HashMap<String, Object>();
  1165. amendUserInfo.put("modifier", UserUtils.getCurrentPrincipleID());
  1166. amendUserInfo.put("gmtModified", DateUtil.now());
  1167. amendUserInfo.put("email", amendUserInfoVO.getEmail());
  1168. amendUserInfo.put("userId", amendUserInfoVO.getUserId());
  1169. amendUserInfo.put("autPosition",amendUserInfoVO.getAutPosition());
  1170. amendUserInfo.put("linKman",amendUserInfoVO.getLinKman());
  1171. updateUserInfo(amendUserInfo);
  1172. return RespDTO.onSuc(true);
  1173. }
  1174. //超管修改机构信息
  1175. public RespDTO<Boolean> updateOrganizations(AmendOrgVO amendOrgVO) {
  1176. Map<String, Object> amendOrg = new HashMap<String, Object>();
  1177. amendOrg.put("modifier", UserUtils.getCurrentPrincipleID());
  1178. amendOrg.put("gmtModified", DateUtil.now());
  1179. amendOrg.put("address", amendOrgVO.getOrgAddress());
  1180. amendOrg.put("type", amendOrgVO.getOrgType());
  1181. amendOrg.put("orgId", amendOrgVO.getOrgId());
  1182. amendOrg.put("orgSubNum", amendOrgVO.getOrgSubNum());
  1183. updateOrganizations(amendOrg);
  1184. return RespDTO.onSuc(true);
  1185. }
  1186. }