UserManagerController.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660
  1. package com.uas.sso.controller;
  2. import com.uas.sso.exception.AccountException;
  3. import com.uas.sso.core.Const;
  4. import com.uas.sso.entity.*;
  5. import com.uas.sso.service.ApplyUserSpaceService;
  6. import com.uas.sso.service.UserService;
  7. import com.uas.sso.service.UserspaceService;
  8. import com.uas.sso.util.encry.Md5Utils;
  9. import org.apache.commons.codec.binary.Base64;
  10. import org.slf4j.Logger;
  11. import org.slf4j.LoggerFactory;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.ui.ModelMap;
  14. import org.springframework.util.StringUtils;
  15. import org.springframework.web.bind.annotation.*;
  16. import java.io.*;
  17. import java.text.ParseException;
  18. import java.text.SimpleDateFormat;
  19. import java.util.*;
  20. /**
  21. * 用户信息管理controller
  22. *
  23. * @author wangmh
  24. * @date 2018/1/2
  25. */
  26. @RestController
  27. @RequestMapping("/api/user")
  28. public class UserManagerController extends BaseController {
  29. @Autowired
  30. private UserService userService;
  31. @Autowired
  32. private UserspaceService userspaceService;
  33. @Autowired
  34. private ApplyUserSpaceService applyUserSpaceService;
  35. private static final Logger LOGGER = LoggerFactory.getLogger(UserManagerController.class);
  36. /**
  37. * 用户信息新增、修改
  38. *
  39. * @param userView
  40. * @return
  41. */
  42. @RequestMapping(method = RequestMethod.POST)
  43. @ResponseBody
  44. public ModelMap apiSave(@RequestBody User userView, String appId) {
  45. if (userView == null || appId == null) {
  46. throw new AccountException("参数错误");
  47. }
  48. User user = new User();
  49. if (userView.getUserUU() != null) {
  50. user = userService.findOne(userView.getUserUU());
  51. }
  52. if (user == null && userView.getMobile() != null) {
  53. user = userService.findByMobile(userView.getMobile());
  54. }
  55. LOGGER.info("开通用户: UserMobile{}", userView.getMobile());
  56. if (user == null) {
  57. user = userService.register(userView, appId);
  58. } else {
  59. user = userService.updateUser(userView.getUserUU(), userView);
  60. }
  61. return success(user);
  62. }
  63. /**
  64. * 校验手机号是否被注册
  65. *
  66. * @param mobile 手机号
  67. * @return
  68. */
  69. @RequestMapping(value = "/checkMobile", method = RequestMethod.GET)
  70. public ModelMap checkMobile(String mobile) {
  71. return new ModelMap("hasRegister", userService.mobileHasRegistered(mobile));
  72. }
  73. /**
  74. * 校验手机号是否被注册
  75. *
  76. * @param email 手机号
  77. * @return
  78. */
  79. @RequestMapping(value = "/checkEmail", method = RequestMethod.GET)
  80. public ModelMap checkEmail(String email) {
  81. return new ModelMap("hasRegister", userService.emailHasRegistered(email));
  82. }
  83. /**
  84. * 校验真实姓名是否被认证
  85. *
  86. * @param realName 真实姓名
  87. * @return
  88. * @author wangmh
  89. * @date 2018/1/11 15:05
  90. */
  91. @RequestMapping(value = "/realName/valid", method = RequestMethod.GET)
  92. public ModelMap realNameIsValid(String realName) {
  93. return success(new ModelMap("isValid", userService.realNameIsValid(realName)));
  94. }
  95. /**
  96. * 校验身份证号是否被认证
  97. *
  98. * @param idCard 身份证号
  99. * @return {"isValid", b} b为true说明已认证
  100. * @author wangmh
  101. * @date 2018/1/11 15:06
  102. */
  103. @RequestMapping(value = "/idCard/valid", method = RequestMethod.GET)
  104. public ModelMap idCardIsValid(String idCard) {
  105. return success(new ModelMap("isValid", userService.idCardIsValid(idCard)));
  106. }
  107. /**
  108. * 根据企业uu号查询企业下所有用户信息
  109. *
  110. * @param page 当前页数
  111. * @param size 每页大小
  112. * @param spaceUU 企业uu号
  113. * @return org.springframework.data.domain.Page, content 为用户信息集合
  114. * @author wangmh
  115. * @date 2018/1/26 14:43
  116. */
  117. @RequestMapping(value = "/find/member", method = RequestMethod.GET)
  118. public ModelMap findMember(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "20") int size, Long spaceUU) {
  119. return success(userService.findMemberBySpaceUU(page, size, spaceUU));
  120. }
  121. /**
  122. * 根据用户uu号查询用户信息
  123. *
  124. * @param userUU 用户uu号
  125. * @return 用户信息
  126. * @author wangmh
  127. * @date 2018/1/26 14:46
  128. */
  129. @RequestMapping(value = "/info", method = RequestMethod.GET)
  130. public ModelMap findOne(@RequestParam Long userUU) {
  131. return success(userService.findOne(userUU));
  132. }
  133. /**
  134. * 根据用户手机号查询用户信息
  135. *
  136. * @param mobile 用户手机号
  137. * @return 用户信息
  138. * @author wangmh
  139. * @date 2018/1/26 14:46
  140. */
  141. @RequestMapping(value = "/info/mobile", method = RequestMethod.GET)
  142. public ModelMap findByMobile(@RequestParam String mobile) {
  143. return success(userService.findByMobile(mobile));
  144. }
  145. /**
  146. * 用户申请绑定企业
  147. *
  148. * @param userUU 用户uu号
  149. * @param spaceUU 企业uu号
  150. * @return 用户信息
  151. * @author wangmh
  152. * @date 2018/1/31 18:22
  153. */
  154. @RequestMapping(value = "/apply/bind", method = RequestMethod.POST)
  155. public ModelMap bindUserSpace(@RequestParam Long userUU, Long spaceUU) {
  156. applyUserSpaceService.applyBindUserSpace(userUU, spaceUU);
  157. User user = userService.findOne(userUU);
  158. Userspace userspace = userspaceService.findOne(spaceUU);
  159. // 发送邮箱通知管理员
  160. SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
  161. ModelMap data = new ModelMap();
  162. data.put("username", user.getVipName());
  163. data.put("time", format.format(new Date()));
  164. data.put("enName", userspace.getSpaceName());
  165. sendEmail("templateForSendMailWhenApplyUserSpace", userspace.getAdmin().getEmail(), data);
  166. // 发送短信通知管理员
  167. sendSms("templateForSendSmsWhenApplyUserSpace", userspace.getAdmin().getMobile(), user.getVipName(), format.format(new Date()), userspace.getSpaceName());
  168. return success();
  169. }
  170. /**
  171. * 根据用户uu号查询分页查询申请信息
  172. *
  173. * @param userUU 用户uu号
  174. * @param page 当前页,默认值为1
  175. * @param size 每页大小,默认值为20
  176. * @return org.springframework.data.domain.Page,content为ApplyUserSpace集合
  177. */
  178. @RequestMapping(value = "/apply/info", method = RequestMethod.GET)
  179. public ModelMap findApplyInfo(Long userUU, @RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "20") int size) {
  180. return success(applyUserSpaceService.findApplyByUserUU(userUU, page, size));
  181. }
  182. /**
  183. * 用户解除绑定企业
  184. *
  185. * @param userUU 用户uu号
  186. * @param spaceUU 企业uu号
  187. * @return
  188. */
  189. @RequestMapping(params = "_operate=unbind", method = RequestMethod.POST)
  190. public ModelMap unbindUserSpace(Long userUU, Long spaceUU) {
  191. userService.unbindUserspace(userUU, spaceUU);
  192. return success();
  193. }
  194. /**
  195. * 企业添加已注册用户
  196. *
  197. * @param appId 应用id
  198. * @param userUU 用户uu号
  199. * @param spaceUU 企业uu号
  200. * @return
  201. */
  202. @RequestMapping(params = "_operate=bind", method = RequestMethod.POST)
  203. public ModelMap addUser(String appId, Long userUU, Long spaceUU) {
  204. userService.bindUserspace(appId, userUU, spaceUU);
  205. return success();
  206. }
  207. /**
  208. * 企业添加未注册用户
  209. *
  210. * @param appId 应用id
  211. * @param user 用户信息
  212. * @param spaceUU 企业uu号
  213. * @return
  214. */
  215. @RequestMapping(params = "_operate=add", method = RequestMethod.POST)
  216. public ModelMap addUser(String appId, User user, Long spaceUU) {
  217. // 参数判断
  218. if (user == null || user.getUserUU() != null || spaceUU == null) {
  219. return error("参数错误");
  220. }
  221. // 根据手机号判断用户是否为新用户,新用户注册,旧用户绑定
  222. User oldUser = userService.findByMobile(user.getMobile());
  223. if (oldUser == null) {
  224. // 注册新用户,无密码则使用默认密码
  225. if (StringUtils.isEmpty(user.getPassword())) {
  226. user.setPassword("111111");
  227. }
  228. user = userService.register(user, appId);
  229. } else {
  230. user = oldUser;
  231. }
  232. // 绑定企业
  233. userService.bindUserspace(appId, user.getUserUU(), spaceUU);
  234. return success(user);
  235. }
  236. /**
  237. * 接口调用验证密码登录
  238. * <p>
  239. * <pre>
  240. * 这个比较特殊,指定应用可能密码为空,需要借用其他应用的密码来校验
  241. * </pre>
  242. *
  243. * @return
  244. */
  245. @RequestMapping(params = "_operate=fuzzyCheck")
  246. public ModelMap apiFuzzyLogin(User user) {
  247. if (null == user || null == user.getPassword()) {
  248. return error("参数错误");
  249. }
  250. if (!StringUtils.isEmpty(user.getMobile())) {
  251. User userInfo = userService.findByMobile(user.getMobile());
  252. if (userInfo == null) {
  253. return error("未找到用户");
  254. }
  255. // 允许应用在调用该接口前,已经将用户输入的明文加密为密文
  256. String encryPwd = user.getPassword().length() >= 32 ? user.getPassword() : userService.getEncryPassword(
  257. Const.ENCRY_FORMAT, user.getPassword(), userInfo.getSalt());
  258. if (encryPwd.equals(userInfo.getPassword())) {
  259. return success();
  260. }
  261. return error("密码错误");
  262. }
  263. return error("请填写手机号");
  264. }
  265. /**
  266. * erp修改用户信息 如果type为password则修改密码,为mobile则修改手机号,为email则修改邮箱
  267. *
  268. * @param type 修改类型
  269. * @param userUU 用户uu号
  270. * @param spaceUU 企业uu号
  271. * @param password 密码
  272. * @param data 其他数据
  273. * @return
  274. */
  275. @RequestMapping(value = "/update/{type}/{userUU}/{spaceUU}", method = RequestMethod.POST)
  276. public ModelMap updatePassword(@PathVariable String type, @PathVariable Long userUU, @PathVariable Long spaceUU, String password, String data) {
  277. // 获取企业密钥
  278. Userspace userspace = userspaceService.findOne(spaceUU);
  279. // 校验请求
  280. checkRequest(userspace.getAccessSecret());
  281. // 修改密码
  282. switch (type) {
  283. case "password":
  284. userService.updatePassword(userUU, password);
  285. break;
  286. case "mobile":
  287. userService.updateMobile(userUU, data);
  288. break;
  289. case "email":
  290. userService.updateEmail(userUU, data);
  291. break;
  292. default:
  293. return error("404", "请求错误");
  294. }
  295. return success();
  296. }
  297. /**
  298. * 众创商机导入注册
  299. *
  300. * @param user 用户信息(主要是用户名,手机号,邮箱和密码,密码base64加密)
  301. * @return
  302. */
  303. @RequestMapping(value = "/sysUserdata/uuzc", method = RequestMethod.POST)
  304. public ModelMap uuzcRegister(User user, @RequestParam String appId) {
  305. // 校验手机号
  306. checkMobile(user.getMobile(), null);
  307. // 用户名不能为空
  308. if (StringUtils.isEmpty(user.getVipName())) {
  309. return error("用户名不能为空");
  310. }
  311. // 获取密码
  312. try {
  313. String pwd = new String(Base64.decodeBase64(user.getPassword().getBytes("utf-8")), "utf-8");
  314. user.setPassword(pwd);
  315. } catch (UnsupportedEncodingException e) {
  316. e.printStackTrace();
  317. }
  318. // 传来的值可能带有uu号,去除uu号
  319. user.setUserUU(null);
  320. user = userService.register(user, appId);
  321. return success(user.getUserUU());
  322. }
  323. /**
  324. * erp根据token获取用户信息
  325. *
  326. * @param token tokenId
  327. * @return
  328. */
  329. @RequestMapping(value = "/getUserByToken", method = RequestMethod.GET)
  330. public ModelMap findUserByToken(String token) {
  331. Token existToken = tokenService.findOne(token);
  332. if (existToken == null) {
  333. return error("验证过期");
  334. }
  335. if (!(existToken.getBind() instanceof ModelMap)) {
  336. return error("验证信息错误");
  337. }
  338. ModelMap data = (ModelMap) existToken.getBind();
  339. User user = userService.findOne((Long) data.get("userUU"));
  340. return success(user);
  341. }
  342. /**
  343. * 根据手机号获取所在企业信息
  344. *
  345. * @param mobile 用户手机号
  346. * @return
  347. */
  348. @RequestMapping(value = "/getSpace", method = RequestMethod.GET)
  349. @Deprecated
  350. public ModelMap getSpace(String mobile) {
  351. User user = userService.findByMobile(mobile);
  352. Set<Userspace> userSpaces = user.getUserSpaces();
  353. ModelMap data = new ModelMap(user);
  354. data.put("spaces", userSpaces);
  355. return data;
  356. }
  357. @RequestMapping(value = "/getToken", method = RequestMethod.GET)
  358. @ResponseBody
  359. public ModelMap getToken(Long userUU, Long spaceUU) {
  360. ModelMap data = new ModelMap();
  361. data.put("userUU", userUU);
  362. data.put("spaceUU", spaceUU);
  363. Token token = new Token(data);
  364. tokenService.save(token);
  365. return success(token.getId());
  366. }
  367. @RequestMapping("/getTokenData")
  368. public ModelMap getTokenData(String token) {
  369. return success(tokenService.findOne(token).getBind());
  370. }
  371. /**
  372. * (消息)根据企业uu号和用户uu号获取用户和企业信息
  373. *
  374. * @param userUU 用户uu号
  375. * @param spaceUU 企业uu号
  376. * @return
  377. */
  378. @RequestMapping("/info/userUU")
  379. public ModelMap getUserInfo(Long userUU, Long spaceUU) {
  380. User user = userService.findOne(userUU);
  381. if (user == null) {
  382. return error("用户不存在");
  383. }
  384. Userspace userspace = userspaceService.findOne(spaceUU);
  385. if (userspace == null) {
  386. return error("企业不存在");
  387. }
  388. if (!user.getUserSpaces().contains(userspace)) {
  389. return error("用户(" + userUU + ")不属于企业(" + spaceUU + ")");
  390. }
  391. ModelMap data = new ModelMap();
  392. data.addAttribute("mobile", user.getMobile());
  393. data.addAttribute("imId", user.getImId());
  394. data.addAttribute("vipName", user.getVipName());
  395. data.addAttribute("email", user.getEmail());
  396. data.addAttribute("spaceName", userspace.getSpaceName());
  397. return success(data);
  398. }
  399. /**
  400. * 优软云个人用户注册总数
  401. */
  402. @RequestMapping(value = "/count", method = RequestMethod.GET)
  403. public ModelMap count() {
  404. return new ModelMap("count", userService.count());
  405. }
  406. /**
  407. * 统计指定应用个人用户总数
  408. *
  409. * @param fromApps
  410. * @return
  411. */
  412. @RequestMapping(value = "/count/apps", method = RequestMethod.GET)
  413. public ModelMap countForApp(String fromApps) {
  414. String[] apps = fromApps.split(",");
  415. return success(userService.count(new ArrayList<>(Arrays.asList(apps))));
  416. }
  417. /**
  418. * 获取本月用户注册数量
  419. *
  420. * @return
  421. */
  422. @RequestMapping(value = "/currentMonth/count", method = RequestMethod.GET)
  423. public ModelMap countInCurrentMonth() {
  424. return new ModelMap("count", userService.countInCurrentMonth());
  425. }
  426. /**
  427. * 获取上个月用户注册数量
  428. *
  429. * @return
  430. */
  431. @RequestMapping(value = "/lastMonth/count", method = RequestMethod.GET)
  432. public ModelMap countInLastMonth() {
  433. return new ModelMap("count", userService.countInLastMonth());
  434. }
  435. /**
  436. * 获取本周用户注册数量
  437. *
  438. * @return
  439. */
  440. @RequestMapping(value = "/currentWeek/count", method = RequestMethod.GET)
  441. public ModelMap countInCurrentWeek() {
  442. return new ModelMap("count", userService.countInCurrentWeek());
  443. }
  444. /**
  445. * 获取指定应用注册数量
  446. *
  447. * @param fromApps 应用id,逗号分隔
  448. * @return
  449. */
  450. @RequestMapping(value = "/count/app", method = RequestMethod.GET)
  451. public ModelMap count(String fromApps) {
  452. String[] apps = fromApps.split(",");
  453. return success(userService.count(Arrays.asList(apps)));
  454. }
  455. /**
  456. * 获取指定应用本月注册数量
  457. *
  458. * @param fromApps 应用id,逗号分隔
  459. * @return
  460. */
  461. @RequestMapping(value = "/currentMonth/count/app", method = RequestMethod.GET)
  462. public ModelMap countInCurrentMonth(String fromApps) {
  463. String[] apps = fromApps.split(",");
  464. return success(userService.countInCurrentMonth(new ArrayList<>(Arrays.asList(apps))));
  465. }
  466. /**
  467. * 获取指定应用本周注册数量
  468. *
  469. * @param fromApps 应用id,逗号分隔
  470. * @return
  471. */
  472. @RequestMapping(value = "/currentWeek/count/app", method = RequestMethod.GET)
  473. public ModelMap countInCurrentWeek(String fromApps) {
  474. String[] apps = fromApps.split(",");
  475. return success(userService.countInCurrentWeek(new ArrayList<>(Arrays.asList(apps))));
  476. }
  477. /**
  478. * 获取指定应用当天注册数量
  479. *
  480. * @param fromApps 应用id,逗号分隔
  481. * @return
  482. */
  483. @RequestMapping(value = "/today/count/app", method = RequestMethod.GET)
  484. public ModelMap countInToday(String fromApps) {
  485. String[] apps = fromApps.split(",");
  486. return success(userService.countInToday(new ArrayList<>(Arrays.asList(apps))));
  487. }
  488. /**
  489. * 获取指定应用前一天注册数量
  490. *
  491. * @param fromApps 应用id,逗号分隔
  492. * @return
  493. */
  494. @RequestMapping(value = "/yesterday/count/app", method = RequestMethod.GET)
  495. public ModelMap countInYesterday(String fromApps) {
  496. String[] apps = fromApps.split(",");
  497. return success(userService.countInYesterday(new ArrayList<>(Arrays.asList(apps))));
  498. }
  499. /**
  500. * 获取指定应用上一个月注册数量
  501. *
  502. * @param fromApps 应用id,逗号分隔
  503. * @return
  504. */
  505. @RequestMapping(value = "/lastMonth/count/app", method = RequestMethod.GET)
  506. public ModelMap countInLastMonth(String fromApps) {
  507. String[] apps = fromApps.split(",");
  508. return success(userService.countgInLastMonth(new ArrayList<>(Arrays.asList(apps))));
  509. }
  510. @RequestMapping(value = "/inputTime/count/apps", method = RequestMethod.GET)
  511. public ModelMap countInInputTime(String start, String end, String fromApps) {
  512. String[] apps = fromApps.split(",");
  513. try {
  514. return success(userService.countInInputTime(start, end, new ArrayList<>(Arrays.asList(apps))));
  515. } catch (Exception e) {
  516. e.printStackTrace();
  517. }
  518. return null;
  519. }
  520. /**
  521. * 统计指定时间内个人用户登录总数
  522. */
  523. @RequestMapping(value = "/count/login", method = RequestMethod.GET)
  524. public ModelMap countByLogin(String start, String end) throws ParseException {
  525. return new ModelMap("count", userService.countByLogin(start, end));
  526. }
  527. /**
  528. * 统计指定时间内X未登录用户数
  529. *
  530. * @param start
  531. * @param end
  532. * @param
  533. * @return
  534. * @throws ParseException
  535. */
  536. @RequestMapping(value = "/count/notlgoin/month", method = RequestMethod.GET)
  537. public Map<String, Long> countByNotLogin(String start, String end, String months) throws ParseException {
  538. Map<String, Long> data = new HashMap<>();
  539. List<String> monthss = Arrays.asList(months.split(","));
  540. for (String smonth : monthss) {
  541. int month = Integer.parseInt(smonth);
  542. long count = userService.countByLoginInputMonth(start, end, month);
  543. data.put("month"+smonth,count);
  544. }
  545. return data;
  546. }
  547. /**
  548. * 统计指定时间内个人用户未登录总数
  549. */
  550. @RequestMapping(value = "/count/notlogin", method = RequestMethod.GET)
  551. public ModelMap countByNotLogin(int month) throws ParseException {
  552. return new ModelMap("count", userService.countByNotLogin(month));
  553. }
  554. /**
  555. * 根据用户IMID获取女用户信息
  556. *
  557. * @param imId 用户的IMID
  558. * @return 用户信息
  559. */
  560. @GetMapping(params = "_operate=getUserByImId")
  561. public ModelMap getUserByImId(String imId) {
  562. return success(userService.findByImId(imId));
  563. }
  564. /**
  565. * 获取用户上周最大uu号
  566. * @return 上周最大uu号(周一算第一天)
  567. */
  568. @GetMapping("/maxuu/lastWeek")
  569. public ModelMap getMaxUUInLastWeek() {
  570. return success(userService.getMaxUUInLastWeek());
  571. }
  572. /**
  573. * 分页获取用户信息
  574. * @param pageNumber 当前页数
  575. * @param pageSize 每页大小
  576. * @param timestamp 时间戳,与当前时间不能相差10分钟
  577. * @param encro 签名 md5(#{pageNumber}, #{pageSize}, #{timestamp}, ssoAccountSync),
  578. * @return
  579. */
  580. @GetMapping("/paging/info")
  581. public ModelMap getUserPaging(int pageNumber, int pageSize, long timestamp, String encro) {
  582. // 验证时间
  583. long current = System.currentTimeMillis();
  584. if (Math.abs(current - timestamp) > 10 * 60 * 1000) {
  585. LOGGER.warn("全量更新:分页获取用户信息请求过期,当前时间:{},请求时间:{}", current, timestamp);
  586. return error("请求过期");
  587. }
  588. // 验证签名
  589. String laws = String.format("%s, %s, %s, %s", pageNumber, pageSize, timestamp, "ssoAccountSync");
  590. String str = Md5Utils.encode(laws, null);
  591. if (!str.equals(encro)) {
  592. LOGGER.warn("全量更新:分页获取用户信息签名错误,明文:{},签名:{}", laws, encro);
  593. return error("签名错误");
  594. }
  595. return success(userService.getUserInfo(pageNumber, pageSize));
  596. }
  597. }