SysUserController.java 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662
  1. package com.tianhu.system.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.tianhu.common.core.constant.CacheConstants;
  4. import com.tianhu.common.core.constant.Constants;
  5. import com.tianhu.common.core.constant.SalaryConstants;
  6. import com.tianhu.common.core.constant.UserConstants;
  7. import com.tianhu.common.core.domain.R;
  8. import com.tianhu.common.core.exception.BaseException;
  9. import com.tianhu.common.core.utils.CommonUtil;
  10. import com.tianhu.common.core.utils.IdUtils;
  11. import com.tianhu.common.core.utils.SecurityUtils;
  12. import com.tianhu.common.core.utils.StringUtils;
  13. import com.tianhu.common.core.utils.poi.ExcelUtil;
  14. import com.tianhu.common.core.web.controller.BaseController;
  15. import com.tianhu.common.core.web.domain.AjaxResult;
  16. import com.tianhu.common.log.annotation.Log;
  17. import com.tianhu.common.log.enums.BusinessType;
  18. import com.tianhu.common.redis.service.RedisService;
  19. import com.tianhu.common.security.annotation.PreAuthorize;
  20. import com.tianhu.common.security.service.TokenService;
  21. import com.tianhu.system.api.RemoteSystemService;
  22. import com.tianhu.system.api.domain.SysDept;
  23. import com.tianhu.system.api.domain.SysRole;
  24. import com.tianhu.system.api.domain.SysUser;
  25. import com.tianhu.system.api.model.LoginUser;
  26. import com.tianhu.system.common.IMessageUtilsService;
  27. import com.tianhu.system.common.ValidateCodeService;
  28. import com.tianhu.system.domain.*;
  29. import com.tianhu.system.domain.vo.TreeSelect;
  30. import com.tianhu.system.mapper.SysDeptMapper;
  31. import com.tianhu.system.mapper.SysUserMapper;
  32. import com.tianhu.system.mapper.SysUserRoleMapper;
  33. import com.tianhu.system.service.*;
  34. import com.tianhu.system.utils.FlowableService;
  35. import com.tianhu.system.utils.SysConstant;
  36. import org.springframework.beans.factory.annotation.Autowired;
  37. import org.springframework.transaction.annotation.Transactional;
  38. import org.springframework.validation.annotation.Validated;
  39. import org.springframework.web.bind.annotation.*;
  40. import org.springframework.web.multipart.MultipartFile;
  41. import javax.servlet.http.HttpServletRequest;
  42. import javax.servlet.http.HttpServletResponse;
  43. import java.io.IOException;
  44. import java.text.SimpleDateFormat;
  45. import java.util.*;
  46. import java.util.concurrent.TimeUnit;
  47. import java.util.regex.Matcher;
  48. import java.util.regex.Pattern;
  49. import java.util.stream.Collectors;
  50. /**
  51. * 用户信息
  52. *
  53. * @author tianhu
  54. */
  55. @RestController
  56. @RequestMapping("/user")
  57. public class SysUserController extends BaseController
  58. {
  59. @Autowired
  60. private ISysUserService userService;
  61. @Autowired
  62. private ISysRoleService roleService;
  63. @Autowired
  64. private ISysDeptService deptService;
  65. @Autowired
  66. private ISysPermissionService permissionService;
  67. @Autowired
  68. private ISysUserRoleService iSysUserRoleService;
  69. @Autowired
  70. private TokenService tokenService;
  71. @Autowired
  72. private ISysUserCompanyRelService userCompanyRelService;
  73. @Autowired
  74. private ISysCompanyService companyService;
  75. @Autowired
  76. private IPubVerifyCodeService iPubVerifyCodeService;
  77. @Autowired
  78. private ISysConfigService configService;
  79. @Autowired
  80. private RedisService redisService;
  81. @Autowired
  82. private ISysWeChatService iSysWeChatService;
  83. @Autowired
  84. private FlowableService flowableService;
  85. @Autowired
  86. private SysUserMapper userMapper;
  87. @Autowired
  88. private SysUserRoleMapper userRoleMapper;
  89. @Autowired
  90. private SysDeptMapper deptMapper;
  91. @Autowired
  92. private IMessageUtilsService messageUtilsService;
  93. @Autowired
  94. private ISysCompanyService sysCompanyService;
  95. @Autowired
  96. private RemoteSystemService remoteSystemService;
  97. /**
  98. * 用户注册成功
  99. */
  100. private String zhucechenggong = "zhucechenggong";
  101. @Autowired
  102. private ValidateCodeService validateCodeService;
  103. // 下载模板
  104. @PostMapping("/importTemplate")
  105. public void importTemplate(HttpServletResponse response) throws IOException
  106. {
  107. ExcelUtil<OwnSysUser> util = new ExcelUtil<OwnSysUser>(OwnSysUser.class);
  108. util.importTemplateExcel(response, "用户数据");
  109. }
  110. // 导入
  111. @Log(title = "用户管理", businessType = BusinessType.IMPORT)
  112. @PreAuthorize(hasPermi = "system:user:import")
  113. @PostMapping("/importData")
  114. public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
  115. {
  116. ExcelUtil<OwnSysUser> util = new ExcelUtil<OwnSysUser>(OwnSysUser.class);
  117. List<OwnSysUser> userList = util.importExcel(file.getInputStream());
  118. //获取当前用户名
  119. LoginUser user = tokenService.getLoginUser();
  120. String operName = user.getSysUser().getNickName();
  121. String message = userService.importUser(userList, updateSupport, operName);
  122. return AjaxResult.success(message);
  123. }
  124. // // 下载模板
  125. // @PostMapping("/importTemplate")
  126. // public void importTemplate(HttpServletResponse response) throws IOException
  127. // {
  128. // ExcelUtil<OwnSysUser> util = new ExcelUtil<OwnSysUser>(OwnSysUser.class);
  129. // util.importTemplateExcel(response, "用户数据");
  130. // }
  131. /**
  132. * 获取当前用户信息
  133. */
  134. @PostMapping("/zcInfo")
  135. @Transactional(rollbackFor = Exception.class)
  136. public R<Map<String, Object>> info(@RequestParam(value = "type", required = false) String type,
  137. @RequestParam(value = "code", required = false) String code,
  138. @RequestParam(value = "uuid", required = false) String uuid,
  139. @RequestParam(value = "unionId", required = false) String unionId,
  140. @RequestParam(value = "username") String username,
  141. @RequestParam(value = "shortMessageCode", required = false) String shortMessageCode)
  142. {
  143. Map<String, Object> resMap = new HashMap<>();
  144. validateCodeService.checkCapcha(code, uuid, true);
  145. SysUser sysUser = userService.selectUserByUserName(username);
  146. // 短信验证码登陆 或者 验证码注册
  147. if ("1".equals(type) || "2".equals(type)) {
  148. // 验证短信验证码
  149. if(CommonUtil.isNotEmpty(shortMessageCode)){
  150. LambdaQueryWrapper<PubVerifyCode> pubVerifyCode = new LambdaQueryWrapper<>();
  151. pubVerifyCode.eq(PubVerifyCode::getPvcPhone,username);
  152. pubVerifyCode.eq(PubVerifyCode::getPvcCode,shortMessageCode);
  153. pubVerifyCode.orderByDesc(PubVerifyCode::getPvcLastTime);
  154. List<PubVerifyCode> staffInf = iPubVerifyCodeService.findPubVerifyCodes(pubVerifyCode);
  155. if(staffInf.size()>0){
  156. if("01".equals(staffInf.get(0).getPvcState())){
  157. throw new BaseException("验证码已使用,请重新获取!");
  158. }
  159. //取得指定时间间隔后的系统时间
  160. GregorianCalendar calendar = (GregorianCalendar) Calendar.getInstance();
  161. calendar.add( Calendar.MINUTE, -5);
  162. SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
  163. if(formatter.format(calendar.getTime()).compareTo(formatter.format(staffInf.get(0).getPvcLastTime()))>0){
  164. throw new BaseException("验证码已过期,请重新获取!");
  165. }
  166. staffInf.get(0).setPvcState("01");
  167. iPubVerifyCodeService.updatePubVerifyCode(staffInf.get(0));
  168. }else{
  169. throw new BaseException("验证码校验失败请重新发送验证码!");
  170. }
  171. }else{
  172. throw new BaseException("请填写验证码!");
  173. }
  174. // 未注册账号,自动注册一个账号
  175. if ("1".equals(type) && StringUtils.isNull(sysUser)) {
  176. sysUser = new SysUser();
  177. sysUser.setUserName(username);
  178. sysUser.setNickName(username);
  179. String password = configService.selectConfigByKey("sys.user.initPassword");
  180. sysUser.setPassword(SecurityUtils.encryptPassword(password));
  181. userService.insertUser(sysUser);
  182. sysUser = userService.selectUserByUserName(username);
  183. LoginUser sysUserVo = new LoginUser();
  184. sysUserVo.setSysUser(sysUser);
  185. resMap.put("code", "0");
  186. resMap.put("message", "用户未绑定企业");
  187. resMap.put("loginUser", sysUserVo);
  188. return R.ok(resMap);
  189. }
  190. // 扫码后注册
  191. if ("2".equals(type)) {
  192. if (StringUtils.isNotNull(sysUser)) {
  193. throw new BaseException("手机号已被注册!");
  194. }
  195. if (StringUtils.isEmpty(unionId)) {
  196. throw new BaseException("unionId数据错误!");
  197. }
  198. //查询微信关联表找到员工信息
  199. LambdaQueryWrapper<SysWeChat> weChatLambdaQueryWrapper = new LambdaQueryWrapper<>();
  200. weChatLambdaQueryWrapper.eq(SysWeChat::getSwcWxUuid, unionId);
  201. List<SysWeChat> list = iSysWeChatService.findSysWeChats(weChatLambdaQueryWrapper);
  202. if (list.size() != 0) {
  203. throw new BaseException("此微信已绑定账号!");
  204. }
  205. sysUser = new SysUser();
  206. sysUser.setUserName(username);
  207. sysUser.setNickName(username);
  208. String password = configService.selectConfigByKey("sys.user.initPassword");
  209. sysUser.setPassword(SecurityUtils.encryptPassword(password));
  210. userService.insertUser(sysUser);
  211. sysUser = userService.selectUserByUserName(username);
  212. String wechatId = IdUtils.fastSimpleUUID();
  213. SysWeChat sysWeChat = new SysWeChat();
  214. sysWeChat.setSwcId(wechatId);
  215. sysWeChat.setSwcUserId(String.valueOf(sysUser.getUserId()));
  216. sysWeChat.setSwcStatus("00");
  217. sysWeChat.setSwcWxUuid(unionId);
  218. iSysWeChatService.createSysWeChat(sysWeChat);
  219. LoginUser sysUserVo = new LoginUser();
  220. sysUserVo.setSysUser(sysUser);
  221. resMap.put("code", "0");
  222. resMap.put("message", "用户未绑定企业");
  223. resMap.put("loginUser", sysUserVo);
  224. return R.ok(resMap);
  225. }
  226. // 密码登陆
  227. } else {
  228. if (StringUtils.isNull(sysUser))
  229. {
  230. throw new BaseException("用户名或密码错误");
  231. }
  232. }
  233. // 查询是否实名认证
  234. LambdaQueryWrapper<SysUserCompanyRel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  235. lambdaQueryWrapper.eq(SysUserCompanyRel::getSucrUserId, sysUser.getUserId());
  236. List<SysUserCompanyRel> userCompanyRelList = userCompanyRelService.findSysUserCompanyRels(lambdaQueryWrapper);
  237. // 未认证
  238. if (userCompanyRelList.size() == 0) {
  239. resMap.put("code", "0");
  240. resMap.put("message", "用户未绑定企业");
  241. LoginUser sysUserVo = new LoginUser();
  242. sysUserVo.setSysUser(sysUser);
  243. resMap.put("loginUser", sysUserVo);
  244. // 只绑定了一家企业
  245. } else if (userCompanyRelList.size() == 1) {
  246. resMap.put("code", "1");
  247. resMap.put("message", "用户已绑定一家企业");
  248. // 绑定企业
  249. sysUser.setCompanyId(userCompanyRelList.get(0).getSucrCompanyId());
  250. // 不是平台
  251. if(!SysConstant.PLATFORM_NO.equals(sysUser.getCompanyId()) ){
  252. // 绑定部门
  253. sysUser.setDeptId(userCompanyRelList.get(0).getSucrDeptId());
  254. SysDept dept = deptService.selectDeptById(userCompanyRelList.get(0).getSucrDeptId());
  255. sysUser.setDept(dept);
  256. // 存放企业类型
  257. SysCompany company = companyService.getById(userCompanyRelList.get(0).getSucrCompanyId());
  258. sysUser.setCompanyType(company.getScyType());
  259. if ("01".equals(company.getScyStatus()) || "99".equals(company.getScyStatus())) {
  260. throw new BaseException("企业状态异常,请联系管理员!");
  261. }
  262. sysUser.setCompanyStatus(company.getScyStatus());
  263. // 平台用户
  264. } else {
  265. sysUser.setCompanyType("00");
  266. sysUser.setCompanyStatus("00");
  267. }
  268. // 角色集合
  269. Set<String> roles = permissionService.getRolePermission(sysUser.getUserId(), sysUser.getCompanyId());
  270. Set<String> permissions = this.getPermissions(sysUser);
  271. LoginUser sysUserVo = new LoginUser();
  272. sysUserVo.setRoles(roles);
  273. sysUserVo.setPermissions(permissions);
  274. sysUserVo.setSysUser(sysUser);
  275. resMap.put("loginUser", sysUserVo);
  276. // 绑定多加企业
  277. } else {
  278. LoginUser sysUserVo = new LoginUser();
  279. sysUserVo.setSysUser(sysUser);
  280. resMap.put("loginUser", sysUserVo);
  281. List<String> companyIdList = new ArrayList<>();
  282. for (SysUserCompanyRel companyRel : userCompanyRelList) {
  283. companyIdList.add(companyRel.getSucrCompanyId());
  284. }
  285. LambdaQueryWrapper<SysCompany> companyLambdaQueryWrapper = new LambdaQueryWrapper<>();
  286. companyLambdaQueryWrapper.in(SysCompany::getScyId, companyIdList);
  287. List<SysCompany> companyList = companyService.findSysCompanys(companyLambdaQueryWrapper);
  288. resMap.put("code", "2");
  289. resMap.put("message", "用户已绑定" + userCompanyRelList.size() + "家企业");
  290. resMap.put("companyList", companyList);
  291. }
  292. return R.ok(resMap);
  293. }
  294. @PostMapping("/chooseCompanyLogin")
  295. public R<LoginUser> chooseCompanyLogin(@RequestBody Map<String, String> param, HttpServletRequest request)
  296. {
  297. String companyId = param.get("companyId");
  298. if (StringUtils.isEmpty(companyId)) {
  299. return R.fail("请选择登陆企业!");
  300. }
  301. LoginUser loginUser = tokenService.getLoginUser();
  302. LambdaQueryWrapper<SysUserCompanyRel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  303. lambdaQueryWrapper.eq(SysUserCompanyRel::getSucrUserId, loginUser.getUserid());
  304. lambdaQueryWrapper.eq(SysUserCompanyRel::getSucrCompanyId, companyId);
  305. List<SysUserCompanyRel> userCompanyRelList = userCompanyRelService.findSysUserCompanyRels(lambdaQueryWrapper);
  306. if (userCompanyRelList.size() == 0) {
  307. return R.fail("用户未关联选择企业!");
  308. }
  309. // 查询企业信息
  310. SysCompany company = companyService.getById(companyId);
  311. if ("01".equals(company.getScyStatus()) || "99".equals(company.getScyStatus())) {
  312. return R.fail("企业状态异常,请联系管理员!");
  313. }
  314. SysUser sysUser = loginUser.getSysUser();
  315. sysUser.setCompanyId(companyId);
  316. sysUser.setCompanyType(company.getScyType());
  317. sysUser.setCompanyStatus(company.getScyStatus());
  318. // 角色集合
  319. Set<String> roles = permissionService.getRolePermission(sysUser.getUserId(), sysUser.getCompanyId());
  320. Set<String> permissions = this.getPermissions(sysUser);
  321. loginUser.setRoles(roles);
  322. loginUser.setPermissions(permissions);
  323. loginUser.setSysUser(sysUser);
  324. String token = SecurityUtils.getToken(request);
  325. redisService.setCacheObject(CacheConstants.LOGIN_TOKEN_KEY + token, loginUser, Constants.TOKEN_EXPIRE * 60, TimeUnit.SECONDS);
  326. return R.ok(loginUser);
  327. }
  328. /**
  329. * 获取用户信息
  330. *
  331. * @return 用户信息
  332. */
  333. @GetMapping("getInfo")
  334. public AjaxResult getInfo()
  335. {
  336. Long userId = SecurityUtils.getUserId();
  337. SysUser user = tokenService.getLoginUser().getSysUser();
  338. // 角色集合
  339. Set<String> roles = permissionService.getRolePermission(userId, user.getCompanyId());
  340. //公司用户判断角色isAuto是否包括1数据,如包含则菜单权限数据取企业-产品-菜单数据
  341. //不包含则取角色-菜单 与 企业产品菜单数据并集
  342. //获取用户角色列表,判断是否存在isAuto
  343. // SysUser user = userService.selectUserById(userId);
  344. // 权限集合
  345. System.out.println("getInfo 菜单权限加载开始");
  346. Set<String> permissions = this.getPermissions(user);
  347. for(String p:permissions){
  348. System.out.println(p);
  349. }
  350. System.out.println("getInfo 菜单权限加载结束");
  351. AjaxResult ajax = AjaxResult.success();
  352. ajax.put("user", user);
  353. ajax.put("roles", roles);
  354. ajax.put("permissions", permissions);
  355. return ajax;
  356. }
  357. /**
  358. * 获取用户权限
  359. * @param user
  360. * @return
  361. */
  362. private Set<String> getPermissions(SysUser user){
  363. Set<String> permissions = new HashSet<String>();
  364. //平台走原流程
  365. if(SysConstant.PLATFORM_NO.equals(user.getCompanyId()) ){
  366. permissions = permissionService.getMenuPermission(user.getUserId());
  367. System.out.println("平台用户");
  368. }else{
  369. List<String> roleList = permissionService.getRoles(user.getUserId().toString(), user.getCompanyId());
  370. //初始用户,菜单权限数据取企业产品菜单数据
  371. if(roleList.contains(SysConstant.ROLE_IS_AUTO)){
  372. permissions = permissionService.getMenuByAutoUser(user);
  373. System.out.println("企业初始用户");
  374. }else{
  375. //非初始用户菜单数据取 角色菜单-公司产品菜单数据并集
  376. permissions = permissionService.getMenuByCommonUser(user);
  377. System.out.println("企业普通用户");
  378. }
  379. }
  380. return permissions;
  381. }
  382. /**
  383. * 根据用户编号获取详细信息
  384. */
  385. @PreAuthorize(hasPermi = "system:user:query")
  386. @GetMapping(value = { "/", "/{userId}" })
  387. public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId)
  388. {
  389. //获取当前操作人员
  390. LoginUser userInfo = tokenService.getLoginUser();
  391. String companyId = userInfo.getSysUser().getCompanyId();
  392. AjaxResult ajax = AjaxResult.success();
  393. //角色
  394. SysRole role = new SysRole();
  395. role.setIsAuto("0");
  396. Map map = new HashMap<>();
  397. // if(!SalaryConstants.OPEX.equals(companyId)){
  398. map.put("companyId",companyId);
  399. role.setCompanyId(companyId);
  400. // }
  401. List<SysRole> roles = roleService.selectRoleAll(role);
  402. ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin() ).collect(Collectors.toList()));
  403. if (StringUtils.isNotNull(userId))
  404. {
  405. ajax.put(AjaxResult.DATA_TAG, userService.selectUserById(userId, companyId));
  406. ajax.put("roleIds", roleService.selectRoleListByUserId(userId));
  407. }
  408. return ajax;
  409. }
  410. /**
  411. * 新增用户
  412. */
  413. @PreAuthorize(hasPermi = "system:user:add")
  414. @Log(title = "用户管理", businessType = BusinessType.INSERT)
  415. @PostMapping
  416. @Transactional(rollbackFor=Exception.class)
  417. public AjaxResult add(@Validated @RequestBody SysUser user) throws Exception {
  418. LoginUser userInfo = tokenService.getLoginUser();
  419. SysUser use = userInfo.getSysUser();
  420. String companyId = use.getCompanyId();
  421. //000000:代表运维人员
  422. if(!SalaryConstants.OPEX.equals(use.getCompanyId())){
  423. user.setCompanyId(companyId);
  424. }else {
  425. if(user.getCompanyId() == null){
  426. user.setCompanyId(companyId);
  427. }
  428. }
  429. if(user.getRoleIds().length == 0){
  430. return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,请先选择角色");
  431. }
  432. String password = configService.selectConfigByKey("sys.user.initPassword");
  433. //查询用户是否存在
  434. Map useMap = new HashMap();
  435. useMap.put("userName",user.getUserName());
  436. List<Map> listNormalUser = userService.selectNormalUser(useMap);
  437. if(listNormalUser.size() > 0){
  438. //获取用户Id
  439. String userId = listNormalUser.get(0).get("userId")+"";
  440. //查询此企业是否存在此用户
  441. LambdaQueryWrapper<SysUserCompanyRel> queryWrapper = new LambdaQueryWrapper<>();
  442. queryWrapper.eq(SysUserCompanyRel::getSucrUserId,userId);
  443. queryWrapper.eq(SysUserCompanyRel::getSucrCompanyId,companyId);
  444. List<SysUserCompanyRel> list = userCompanyRelService.findSysUserCompanyRels(queryWrapper);
  445. if(list.size() > 0){
  446. return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,用户已存在");
  447. }
  448. } else{
  449. user.setStatus("0");
  450. user.setPassword(password);
  451. user.setCreateBy(SecurityUtils.getUsername());
  452. userMapper.insertUser(user);
  453. }
  454. SysUser queryUser = userService.selectUserByUserName(user.getUserName());
  455. Long[] roles = user.getRoleIds();
  456. if (StringUtils.isNotNull(roles))
  457. {
  458. // 新增用户与角色管理
  459. List<SysUserRole> list = new ArrayList<SysUserRole>();
  460. for (Long roleId : roles)
  461. {
  462. SysUserRole ur = new SysUserRole();
  463. ur.setUserId(queryUser.getUserId());
  464. ur.setRoleId(roleId);
  465. list.add(ur);
  466. }
  467. if (list.size() > 0)
  468. {
  469. userRoleMapper.batchUserRole(list);
  470. }
  471. }
  472. SysUserCompanyRel userCompanyRel = new SysUserCompanyRel();
  473. userCompanyRel.setSucrUserId(queryUser.getUserId());
  474. userCompanyRel.setSucrCompanyId(companyId);
  475. userCompanyRel.setSucrHandler("0");
  476. userCompanyRel.setSucrDeptId(user.getDeptId());
  477. userCompanyRelService.createSysUserCompanyRel(userCompanyRel);
  478. // 审批表增加数据
  479. // Map<String, Object> flowableRes = flowableService.addFlowableUser(String.valueOf(queryUser.getUserId()), user.getNickName(), use.getCompanyId());
  480. // if (!"200".equals(flowableRes.get("code"))) {
  481. // throw new Exception("审批数据新增失败!");
  482. // }
  483. // SysDept dept = deptMapper.selectDeptById(use.getDeptId());
  484. // flowableRes = flowableService.addFlowableUser(String.valueOf(queryUser.getUserId()), user.getNickName(), dept.getAlternateNumber());
  485. // if (!"200".equals(flowableRes.get("code"))) {
  486. // throw new Exception("审批数据新增失败!");
  487. // }
  488. // //获取企业信息
  489. // SysCompany sysCompany = sysCompanyService.getById(companyId);
  490. // //待办标题
  491. // String tittle = "【" +sysCompany.getScyName()+"】尊敬的用户,您好! 欢迎您来到招采云链医疗供应链金融平台,平台将提供:" +
  492. // "医疗招商、医疗集采、供应链金融等企业级服务,如果您再平台使用中遇到任何问题," +
  493. // "请再首页查看并拨打平台客服专线电话,我们将竭尽所能为您提供免费的咨询服务";
  494. // remoteSystemService.sendNotice(use.getCompanyId(),use.getCompanyId(),tittle,"01","00",null,"0",String.valueOf(queryUser.getUserId()),null);
  495. if (listNormalUser.size() < 0) {
  496. Map passwordMap =new HashMap();
  497. passwordMap.put("password",password);
  498. messageUtilsService.sendMessageCode(user.getPhonenumber(),zhucechenggong,passwordMap,null);
  499. }
  500. return toAjax(1);
  501. }
  502. /**
  503. * 修改用户
  504. */
  505. @PreAuthorize(hasPermi = "system:user:edit")
  506. @Transactional(rollbackFor=Exception.class)
  507. @Log(title = "用户管理", businessType = BusinessType.UPDATE)
  508. @PutMapping
  509. public AjaxResult edit(@Validated @RequestBody SysUser user)
  510. {
  511. LoginUser userInfo = tokenService.getLoginUser();
  512. SysUser use = userInfo.getSysUser();
  513. String companyId = use.getCompanyId();
  514. if(SalaryConstants.OPEX.equals(companyId)) {
  515. String com = user.getCompanyId();
  516. if (CommonUtil.isEmpty(com)) {
  517. return AjaxResult.error("修改用户'" + user.getNickName() + "'失败,请选择公司");
  518. }
  519. userService.checkUserAllowed(user);
  520. if (UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
  521. return AjaxResult.error("修改用户'" + user.getNickName() + "'失败,手机号码已存在");
  522. }
  523. else if (UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {
  524. return AjaxResult.error("修改用户'" + user.getNickName() + "'失败,邮箱账号已存在");
  525. }
  526. user.setUpdateBy(CommonUtil.objToString(SecurityUtils.getUserId()));
  527. }else if(!SalaryConstants.OPEX.equals(companyId)){
  528. userService.checkUserAllowed(user);
  529. if (UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
  530. return AjaxResult.error("修改用户'" + user.getNickName() + "'失败,手机号码已存在");
  531. }
  532. else if (UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {
  533. return AjaxResult.error("修改用户'" + user.getNickName() + "'失败,邮箱账号已存在");
  534. }
  535. user.setUpdateBy(CommonUtil.objToString(SecurityUtils.getUserId()));
  536. }
  537. return toAjax(userService.updateUser(user));
  538. }
  539. /**
  540. * 删除用户
  541. */
  542. @PreAuthorize(hasPermi = "system:user:remove")
  543. @Log(title = "用户管理", businessType = BusinessType.DELETE)
  544. @DeleteMapping("/{userIds}")
  545. public AjaxResult remove(@PathVariable Long[] userIds)
  546. {
  547. return toAjax(userService.deleteUserByIds(userIds));
  548. }
  549. /**
  550. * 重置密码
  551. */
  552. @PreAuthorize(hasPermi = "system:user:edit")
  553. @Log(title = "用户管理", businessType = BusinessType.UPDATE)
  554. @PutMapping("/resetPwd")
  555. public AjaxResult resetPwd(@RequestBody SysUser user)
  556. {
  557. String regEx = "[\u4e00-\u9fa5]";
  558. Pattern p = Pattern.compile(regEx);
  559. Matcher m = p.matcher(user.getPassword());
  560. if(m.find()){
  561. return AjaxResult.error("请输入字母、数字、特殊符号格式编码");
  562. }
  563. userService.checkUserAllowed(user);
  564. user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
  565. user.setUpdateBy(SecurityUtils.getUsername());
  566. return toAjax(userService.resetPwd(user));
  567. }
  568. /**
  569. * 状态修改
  570. */
  571. @PreAuthorize(hasPermi = "system:user:edit")
  572. @Log(title = "用户管理", businessType = BusinessType.UPDATE)
  573. @PutMapping("/changeStatus")
  574. public AjaxResult changeStatus(@RequestBody SysUser user)
  575. {
  576. userService.checkUserAllowed(user);
  577. user.setUpdateBy(SecurityUtils.getUsername());
  578. return toAjax(userService.updateUserStatus(user));
  579. }
  580. /**
  581. * 根据企业id获取部门与角色信息
  582. * @param companyId
  583. * @return
  584. */
  585. @GetMapping("getRoleDept/{companyId}")
  586. public AjaxResult getRoleDept(@PathVariable String companyId)
  587. {
  588. //获取部门信息
  589. SysDept sysDept = new SysDept();
  590. sysDept.setCompanyId(companyId);
  591. sysDept.setStatus("0");
  592. sysDept.setDelFlag("0");
  593. List<SysDept> deptList = deptService.selectDeptList(sysDept);
  594. List<TreeSelect> deptTreeSelect = deptService.buildDeptTreeSelect(deptList);
  595. //获取角色信息
  596. SysRole sysRole = new SysRole();
  597. sysRole.setIsAuto("0");
  598. sysRole.setCompanyId(companyId);
  599. sysRole.setStatus("0");
  600. sysRole.setDelFlag("0");
  601. List<SysRole> roleList = roleService.selectRoleList(sysRole);
  602. //传入前台
  603. AjaxResult ajax = AjaxResult.success();
  604. ajax.put("deptList", deptTreeSelect);
  605. ajax.put("roleList", roleList);
  606. return ajax;
  607. }
  608. }