ClientController.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500
  1. package com.qmth.distributed.print.api;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.qmth.boot.api.annotation.Aac;
  7. import com.qmth.boot.api.annotation.BOOL;
  8. import com.qmth.boot.api.constant.ApiConstant;
  9. import com.qmth.distributed.print.business.bean.dto.*;
  10. import com.qmth.distributed.print.business.bean.params.ClientLoginParam;
  11. import com.qmth.distributed.print.business.service.ClientService;
  12. import com.qmth.teachcloud.common.bean.dto.SchoolDto;
  13. import com.qmth.teachcloud.common.bean.result.LoginResult;
  14. import com.qmth.teachcloud.common.contant.SystemConstant;
  15. import com.qmth.teachcloud.common.entity.BasicSchool;
  16. import com.qmth.teachcloud.common.entity.SysUser;
  17. import com.qmth.teachcloud.common.enums.AppSourceEnum;
  18. import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
  19. import com.qmth.teachcloud.common.service.CommonCacheService;
  20. import com.qmth.teachcloud.common.service.SysUserService;
  21. import com.qmth.teachcloud.common.service.TeachcloudCommonService;
  22. import com.qmth.teachcloud.common.util.Result;
  23. import com.qmth.teachcloud.common.util.ResultUtil;
  24. import io.swagger.annotations.*;
  25. import org.springframework.validation.BindingResult;
  26. import org.springframework.web.bind.annotation.*;
  27. import javax.annotation.Resource;
  28. import javax.servlet.http.HttpServletResponse;
  29. import javax.validation.Valid;
  30. import java.security.NoSuchAlgorithmException;
  31. import java.util.List;
  32. import java.util.Map;
  33. import java.util.Objects;
  34. /**
  35. * 客户端接口(打印端)
  36. */
  37. @Api(tags = "客户端Controller")
  38. @RestController
  39. @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_CLIENT)
  40. //@Validated
  41. public class ClientController {
  42. @Resource
  43. ClientService clientService;
  44. @Resource
  45. SysUserService sysUserService;
  46. @Resource
  47. CommonCacheService commonCacheService;
  48. @Resource
  49. TeachcloudCommonService teachcloudCommonService;
  50. /**
  51. * 登录
  52. *
  53. * @param login 登录参数
  54. */
  55. @ApiOperation(value = "登录")
  56. @PostMapping("/user/login")
  57. @ApiResponses({@ApiResponse(code = 200, message = "用户信息", response = LoginResult.class)})
  58. @Aac(auth = BOOL.FALSE)
  59. public Result login(@ApiParam(value = "用户信息", required = true) @Valid @RequestBody ClientLoginParam login, BindingResult bindingResult) throws NoSuchAlgorithmException {
  60. if (bindingResult.hasErrors()) {
  61. return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
  62. }
  63. BasicSchool basicSchool = commonCacheService.schoolCache(login.getSchoolCode());
  64. if (Objects.isNull(basicSchool)) {
  65. throw ExceptionResultEnum.SCHOOL_NO_DATA.exception();
  66. }
  67. QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
  68. wrapper.lambda().eq(SysUser::getSchoolId, basicSchool.getId()).eq(SysUser::getLoginName, login.getLoginName());
  69. SysUser sysUser = sysUserService.getOne(wrapper);
  70. // 用户不存在
  71. if (Objects.isNull(sysUser)) {
  72. throw ExceptionResultEnum.USER_NO_DATA.exception();
  73. }
  74. // 校验密码
  75. if (!Objects.equals(sysUser.getPassword(), login.getPassword())) {
  76. throw ExceptionResultEnum.PASSWORD_ERROR.exception();
  77. }
  78. // 是否有客户端权限
  79. clientService.checkPrivilege(sysUser.getId());
  80. return ResultUtil.ok(teachcloudCommonService.login(login.getPassword(), sysUser, AppSourceEnum.SYSTEM));
  81. }
  82. /**
  83. * 试卷打样-列表
  84. *
  85. * @param machineCode 机器唯一码
  86. * @param orgId 机构ID
  87. * @param printPlanId 印刷计划ID
  88. * @param courseCode 课程代码
  89. * @param paperNumber 试卷编号
  90. * @param isTry 是否打样
  91. * @param isPass 是否合格
  92. * @param pageNumber 分页参数
  93. * @param pageSize 分页参数
  94. */
  95. @ApiOperation(value = "试卷打样-列表")
  96. @PostMapping("/paper_try/list")
  97. public Result paperTryList(@RequestParam("machineCode") String machineCode,
  98. @RequestParam("orgId") Long orgId,
  99. @RequestParam(value = "printPlanId", required = false) Long printPlanId,
  100. @RequestParam(value = "courseCode", required = false) String courseCode,
  101. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  102. @RequestParam(value = "isTry", required = false) Boolean isTry,
  103. @RequestParam(value = "isPass", required = false) Boolean isPass,
  104. @RequestParam Integer pageNumber,
  105. @RequestParam Integer pageSize) {
  106. IPage<ClientExamTaskDto> examTasks = clientService.listTryTask(machineCode, orgId, printPlanId, courseCode, paperNumber, isTry, isPass, pageNumber, pageSize);
  107. return ResultUtil.ok(examTasks);
  108. }
  109. /**
  110. * 试卷打样-查看/试印/重印
  111. *
  112. * @param data 多任务集合
  113. */
  114. @ApiOperation(value = "试卷打样-查看/试印/重印")
  115. @PostMapping("/paper_try/print")
  116. public Result paperTryPrint(@RequestParam("data") String data) {
  117. List<JSONObject> objects = JSON.parseArray(data, JSONObject.class);
  118. List<Map<String, Object>> list = clientService.getPaperUrl(objects);
  119. return ResultUtil.ok(list);
  120. }
  121. /**
  122. * 试卷打样-批量试印
  123. *
  124. * @param machineCode 机器码
  125. * @param orgId 机构ID
  126. * @param printPlanId 印刷计划ID
  127. * @param courseCode 课程代码
  128. * @param paperNumber 试卷编号
  129. * @param isTry 是否打样
  130. * @param isPass 是否通过
  131. */
  132. @ApiOperation(value = "试卷打样-批量试印")
  133. @PostMapping("/paper_try/print_batch")
  134. public Result printBatch(@RequestParam("machineCode") String machineCode,
  135. @RequestParam("orgId") Long orgId,
  136. @RequestParam(value = "printPlanId", required = false) Long printPlanId,
  137. @RequestParam(value = "courseCode", required = false) String courseCode,
  138. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  139. @RequestParam(value = "isTry", required = false) Boolean isTry,
  140. @RequestParam(value = "isPass", required = false) Boolean isPass) {
  141. List<Map<String, Object>> urls = clientService.getBatchUrl(machineCode, orgId, printPlanId, courseCode, paperNumber, isTry, isPass);
  142. return ResultUtil.ok(urls);
  143. }
  144. /**
  145. * 试卷打样-标记合格状态
  146. *
  147. * @param machineCode 机器码
  148. * @param isPass 是否通过
  149. * @param userId 用户Id
  150. */
  151. @ApiOperation(value = "试卷打样-标记合格状态")
  152. @PostMapping("/paper_try/tag_pass")
  153. public Result paperTryTagPass(@RequestParam("printPlanId") Long printPlanId,
  154. @RequestParam("courseCode") String courseCode,
  155. @RequestParam("courseName") String courseName,
  156. @RequestParam("paperNumber") String paperNumber,
  157. @RequestParam("machineCode") String machineCode,
  158. @RequestParam("isPass") Boolean isPass,
  159. @RequestParam("userId") Long userId) {
  160. Boolean isSuccess = clientService.tagPass(printPlanId, courseCode, courseName, paperNumber, machineCode, isPass, userId);
  161. return ResultUtil.ok(isSuccess);
  162. }
  163. /**
  164. * 印刷管理-查询列表
  165. *
  166. * @param machineCode 机器码
  167. * @param orgId 机构ID
  168. * @param printPlanId 印刷计划ID
  169. * @param status 状态
  170. * @param courseCode 课程代码
  171. * @param paperNumber 试卷编号
  172. * @param examPlace 考点
  173. * @param examRoom 考场
  174. * @param examStartTime 考试时间(开始)
  175. * @param examEndTime 考试时间(结束)
  176. * @param isDownload 是否缓存
  177. * @param validate 是否校验
  178. * @param pageNumber 分页参数
  179. * @param pageSize 分页参数
  180. */
  181. @ApiOperation(value = "印刷管理-查询列表")
  182. @PostMapping("/print/task_list")
  183. public Result printTaskList(@RequestParam("machineCode") String machineCode,
  184. @RequestParam("orgId") Long orgId,
  185. @RequestParam(value = "printPlanId", required = false) String printPlanId,
  186. @RequestParam(value = "status", required = false) String status,
  187. @RequestParam(value = "courseCode", required = false) String courseCode,
  188. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  189. @RequestParam(value = "examPlace", required = false) String examPlace,
  190. @RequestParam(value = "examRoom", required = false) String examRoom,
  191. @RequestParam(value = "examStartTime", required = false) Long examStartTime,
  192. @RequestParam(value = "examEndTime", required = false) Long examEndTime,
  193. @RequestParam(value = "isDownload", required = false) Boolean isDownload,
  194. @RequestParam(value = "validate", required = false) Boolean validate,
  195. @RequestParam Integer pageNumber,
  196. @RequestParam Integer pageSize) {
  197. IPage<ClientPrintTaskDto> printTaskDtoIPage = clientService.listClientPrintTask(machineCode, orgId, printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, isDownload, validate, pageNumber, pageSize);
  198. return ResultUtil.ok(printTaskDtoIPage);
  199. }
  200. /**
  201. * 印刷管理-导出
  202. *
  203. * @param response response
  204. * @param machineCode 机器码
  205. * @param orgId 机构ID
  206. * @param printPlanId 印刷计划ID
  207. * @param status 状态
  208. * @param courseCode 课程代码
  209. * @param paperNumber 试卷编号
  210. * @param examPlace 考点
  211. * @param examRoom 考场
  212. * @param examStartTime 考试时间(开始)
  213. * @param examEndTime 考试时间(结束)
  214. * @param isDownload 是否缓存
  215. * @param validate 是否核验
  216. */
  217. @ApiOperation(value = "印刷管理-导出")
  218. @PostMapping("/print/task_list_export")
  219. public void printTaskListExport(HttpServletResponse response,
  220. @RequestParam("machineCode") String machineCode,
  221. @RequestParam("orgId") Long orgId,
  222. @RequestParam(value = "printPlanId", required = false) String printPlanId,
  223. @RequestParam(value = "status", required = false) String status,
  224. @RequestParam(value = "courseCode", required = false) String courseCode,
  225. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  226. @RequestParam(value = "examPlace", required = false) String examPlace,
  227. @RequestParam(value = "examRoom", required = false) String examRoom,
  228. @RequestParam(value = "examStartTime", required = false) Long examStartTime,
  229. @RequestParam(value = "examEndTime", required = false) Long examEndTime,
  230. @RequestParam(value = "isDownload", required = false) Boolean isDownload,
  231. @RequestParam(value = "validate", required = false) Boolean validate) throws Exception {
  232. clientService.exportClientPrintTask(response, machineCode, orgId, printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, isDownload, validate);
  233. }
  234. /**
  235. * 印刷管理-汇总数据查询
  236. *
  237. * @param machineCode 机器码
  238. * @param orgId 机构ID
  239. * @param printPlanId 印刷计划ID
  240. * @param status 状态
  241. * @param courseCode 课程代码
  242. * @param paperNumber 试卷编号
  243. * @param examPlace 考点
  244. * @param examRoom 考场
  245. * @param examStartTime 考试时间(开始)
  246. * @param examEndTime 考试时间(结束)
  247. * @param isDownload 是否缓存
  248. * @param validate 是否校验
  249. */
  250. @ApiOperation(value = "印刷管理-汇总数据查询")
  251. @PostMapping("/print/task_total_data")
  252. public Result printTaskTotalData(@RequestParam("machineCode") String machineCode,
  253. @RequestParam("orgId") Long orgId,
  254. @RequestParam(value = "printPlanId", required = false) String printPlanId,
  255. @RequestParam(value = "status", required = false) String status,
  256. @RequestParam(value = "courseCode", required = false) String courseCode,
  257. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  258. @RequestParam(value = "examPlace", required = false) String examPlace,
  259. @RequestParam(value = "examRoom", required = false) String examRoom,
  260. @RequestParam(value = "examStartTime", required = false) Long examStartTime,
  261. @RequestParam(value = "examEndTime", required = false) Long examEndTime,
  262. @RequestParam(value = "isDownload", required = false) Boolean isDownload,
  263. @RequestParam(value = "validate", required = false) Boolean validate) {
  264. ClientPrintTaskTotalDto clientPrintTaskTotalDto = clientService.taskTotalData(printPlanId, orgId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, isDownload, validate, machineCode);
  265. return ResultUtil.ok(clientPrintTaskTotalDto);
  266. }
  267. /**
  268. * 印刷管理-查看
  269. *
  270. * @param examDetailId 命题任务ID
  271. */
  272. @ApiOperation(value = "印刷管理-查看")
  273. @PostMapping("/print/preview")
  274. public Result printPreview(@RequestParam("examDetailId") Long examDetailId) {
  275. Map<String, Object> map = clientService.getUrlByExamDetailId(examDetailId);
  276. return ResultUtil.ok(map);
  277. }
  278. /**
  279. * 印刷管理-印刷/缓存数据
  280. *
  281. * @param examDetailId 考场ID
  282. * @param machineCode 机器码
  283. * @param printUser 打印员
  284. */
  285. @ApiOperation(value = "印刷管理-印刷/缓存数据")
  286. @PostMapping("/print/get_print_data")
  287. public Result printGetPrintData(@RequestParam("examDetailId") String examDetailId,
  288. @RequestParam("machineCode") String machineCode,
  289. @RequestParam("isPrint") Boolean isPrint,
  290. @RequestParam(value = "printUser", required = false) String printUser) {
  291. List<Map<String, Object>> mapList = clientService.getPrintData(examDetailId, machineCode, isPrint, printUser);
  292. return ResultUtil.ok(mapList);
  293. }
  294. /**
  295. * 印刷管理-批量缓存数据
  296. *
  297. * @param orgId 机构ID
  298. * @param machineCode 机器码
  299. */
  300. @ApiOperation(value = "印刷管理-批量缓存数据")
  301. @PostMapping("/print/get_print_data_batch")
  302. public Result printGetPrintDataBatch(@RequestParam("machineCode") String machineCode,
  303. @RequestParam("orgId") Long orgId,
  304. @RequestParam(value = "printPlanId", required = false) String printPlanId,
  305. @RequestParam(value = "status", required = false) String status,
  306. @RequestParam(value = "courseCode", required = false) String courseCode,
  307. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  308. @RequestParam(value = "examPlace", required = false) String examPlace,
  309. @RequestParam(value = "examRoom", required = false) String examRoom,
  310. @RequestParam(value = "examStartTime", required = false) Long examStartTime,
  311. @RequestParam(value = "examEndTime", required = false) Long examEndTime,
  312. @RequestParam(value = "isDownload", required = false) Boolean isDownload,
  313. @RequestParam(value = "validate", required = false) Boolean validate) {
  314. List<Map<String, Object>> list = clientService.getPrintDataBatch(machineCode, orgId, printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, isDownload, validate);
  315. return ResultUtil.ok(list);
  316. }
  317. /**
  318. * @param examDetailId 考场ID
  319. * @param machineCode 机器码
  320. * @param isDownload 是否缓存
  321. */
  322. @ApiOperation(value = "印刷管理-缓存后更新状态")
  323. @PostMapping("/print/update_download")
  324. public Result updateDownload(@RequestParam("examDetailId") Long examDetailId,
  325. @RequestParam("machineCode") String machineCode,
  326. @RequestParam("isDownload") Boolean isDownload) {
  327. Boolean isSuccess = clientService.updateDownload(examDetailId, machineCode, isDownload);
  328. return ResultUtil.ok(isSuccess);
  329. }
  330. /**
  331. * 印刷管理-校验
  332. *
  333. * @param examDetailId 考场ID
  334. * @param packageCode 机器码
  335. * @param lastCode 校验条码号
  336. */
  337. @ApiOperation(value = "印刷管理-校验")
  338. @PostMapping("/print/validate_data")
  339. public Result dataCheck(@RequestParam("examDetailId") Long examDetailId,
  340. @RequestParam("packageCode") String packageCode,
  341. @RequestParam("lastCode") String lastCode) {
  342. Boolean isSuccess = clientService.validateData(examDetailId, packageCode, lastCode);
  343. return ResultUtil.ok(isSuccess);
  344. }
  345. /**
  346. * 印刷管理-更新打印进度
  347. *
  348. * @param examDetailId 考场ID
  349. * @param machineCode 机器码
  350. * @param printProgress 打印进度
  351. */
  352. @ApiOperation(value = "印刷管理-更新打印进度")
  353. @PostMapping("/print/update_progress")
  354. public Result updateProgress(@RequestParam("examDetailId") Long examDetailId,
  355. @RequestParam("machineCode") String machineCode,
  356. @RequestParam("printProgress") Integer printProgress,
  357. @RequestParam(value = "isPrint", required = false) Boolean isPrint) {
  358. Boolean isSuccess = clientService.updatePrintProgress(examDetailId, machineCode, printProgress, isPrint);
  359. return ResultUtil.ok(isSuccess);
  360. }
  361. /**
  362. * 重打-查询考生列表
  363. *
  364. * @param examDetailId 考场ID
  365. * @param ticketNumber 准考证号
  366. * @param studentName 学号
  367. * @param courseCode 课程代码
  368. */
  369. @ApiOperation(value = "重打-查询考生列表")
  370. @PostMapping("/print/list_student")
  371. public Result listStudent(@RequestParam("examDetailId") Long examDetailId,
  372. @RequestParam(value = "ticketNumber", required = false) String ticketNumber,
  373. @RequestParam(value = "studentName", required = false) String studentName,
  374. @RequestParam(value = "courseCode", required = false) String courseCode,
  375. @RequestParam Integer pageNumber,
  376. @RequestParam Integer pageSize) {
  377. IPage<ClientExamStudentDto> examStudentDtoIPage = clientService.listStudent(examDetailId, ticketNumber, studentName, courseCode, pageNumber, pageSize);
  378. return ResultUtil.ok(examStudentDtoIPage);
  379. }
  380. /**
  381. * 重打-内容查询
  382. *
  383. * @param examDetailId 考场ID
  384. * @param ticketNumber 准考证号
  385. * @param type 类型
  386. */
  387. @ApiOperation(value = "重打-内容查询")
  388. @PostMapping("/print/get_reprint_data")
  389. public Result getReprintData(@RequestParam("examDetailId") Long examDetailId,
  390. @RequestParam("ticketNumber") String ticketNumber,
  391. @RequestParam("type") String type) {
  392. Map<String, Object> map = clientService.getReprintData(examDetailId, ticketNumber, type);
  393. return ResultUtil.ok(map);
  394. }
  395. /**
  396. * 统计查询-查询列表
  397. *
  398. * @param orgId 机构ID
  399. * @param printPlanId 印刷计划ID
  400. * @param examPlace 考点
  401. * @param examStartTime 考试时间(开始)
  402. * @param examEndTime 考试时间(结束)
  403. * @param courseCode 课程代码
  404. * @param paperNumber 试卷编号
  405. * @param pageNumber 分页参数
  406. * @param pageSize 分页参数
  407. */
  408. @ApiOperation(value = "统计查询-查询列表")
  409. @PostMapping("/print/statistics_list")
  410. public Result printStatisticsList(@RequestParam("orgId") Long orgId,
  411. @RequestParam(value = "printPlanId", required = false) String printPlanId,
  412. @RequestParam(value = "examPlace", required = false) String examPlace,
  413. @RequestParam(value = "examStartTime", required = false) Long examStartTime,
  414. @RequestParam(value = "examEndTime", required = false) Long examEndTime,
  415. @RequestParam(value = "courseCode", required = false) String courseCode,
  416. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  417. @RequestParam Integer pageNumber,
  418. @RequestParam Integer pageSize) {
  419. IPage<ClientPrintStatisticsDto> statisticsDtoIPage = clientService.listClientPrintStatistics(orgId, printPlanId, examPlace, examStartTime, examEndTime, courseCode, paperNumber, pageNumber, pageSize);
  420. return ResultUtil.ok(statisticsDtoIPage);
  421. }
  422. /**
  423. * 统计查询-汇总数据查询
  424. *
  425. * @param orgId 机构ID
  426. * @param printPlanId 印刷计划Id
  427. * @param examPlace 考点
  428. * @param examStartTime 考试时间(开始)
  429. * @param examEndTime 考试时间(结束)
  430. * @param courseCode 课程代码
  431. * @param paperNumber 试卷编号
  432. */
  433. @ApiOperation(value = "统计查询-汇总数据查询")
  434. @PostMapping("/print/statistics_total_data")
  435. public Result printStatisticsTotalData(@RequestParam("orgId") Long orgId,
  436. @RequestParam(value = "printPlanId", required = false) Long printPlanId,
  437. @RequestParam(value = "examPlace", required = false) String examPlace,
  438. @RequestParam(value = "examStartTime", required = false) Long examStartTime,
  439. @RequestParam(value = "examEndTime", required = false) Long examEndTime,
  440. @RequestParam(value = "courseCode", required = false) String courseCode,
  441. @RequestParam(value = "paperNumber", required = false) String paperNumber) {
  442. ClientPrintStatisticsTotalDto statisticsTotalDto = clientService.clientStatisticsTotalData(orgId, printPlanId, examPlace, examStartTime, examEndTime, courseCode, paperNumber);
  443. return ResultUtil.ok(statisticsTotalDto);
  444. }
  445. /**
  446. * 学校查询
  447. * @return
  448. */
  449. @ApiOperation(value = "查询")
  450. @RequestMapping(value = "/school/list", method = RequestMethod.POST)
  451. @Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
  452. public Result list() {
  453. List<SchoolDto> list = clientService.listSchool();
  454. return ResultUtil.ok(list);
  455. }
  456. /**
  457. * 修改密码
  458. *
  459. * @return
  460. */
  461. @ApiOperation(value = "修改密码")
  462. @RequestMapping(value = "/user/update_password", method = RequestMethod.POST)
  463. @Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
  464. public Result updatePassword(@RequestParam Long userId,
  465. @RequestParam String password) {
  466. return ResultUtil.ok(clientService.updatePassword(userId, password));
  467. }
  468. }