UserController.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. package com.diagbot.web;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.diagbot.annotation.SysLogger;
  4. import com.diagbot.dto.GetConsoleUserInfoDTO;
  5. import com.diagbot.dto.JwtDTO;
  6. import com.diagbot.dto.LoginDTO;
  7. import com.diagbot.dto.RespDTO;
  8. import com.diagbot.dto.UserLoginDTO;
  9. import com.diagbot.dto.UserOrgDTO;
  10. import com.diagbot.entity.Permission;
  11. import com.diagbot.entity.Token;
  12. import com.diagbot.entity.User;
  13. import com.diagbot.facade.PermissionFacade;
  14. import com.diagbot.facade.TokenFacade;
  15. import com.diagbot.facade.UserFacade;
  16. import com.diagbot.vo.AppkeySecretVO;
  17. import com.diagbot.vo.BaseIdVO;
  18. import com.diagbot.vo.JwtVO;
  19. import com.diagbot.vo.ModifyPasswordVO;
  20. import com.diagbot.vo.PersonVO;
  21. import com.diagbot.vo.ResetPasswordVO;
  22. import com.diagbot.vo.UserInfoByIdPageVO;
  23. import com.diagbot.vo.UserLoginVO;
  24. import com.diagbot.vo.UserSaveVO;
  25. import com.diagbot.vo.UsernameVO;
  26. import io.swagger.annotations.Api;
  27. import io.swagger.annotations.ApiOperation;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.security.oauth2.common.OAuth2AccessToken;
  30. import org.springframework.transaction.annotation.Transactional;
  31. import org.springframework.web.bind.annotation.GetMapping;
  32. import org.springframework.web.bind.annotation.PostMapping;
  33. import org.springframework.web.bind.annotation.RequestBody;
  34. import org.springframework.web.bind.annotation.RequestMapping;
  35. import org.springframework.web.bind.annotation.RestController;
  36. import springfox.documentation.annotations.ApiIgnore;
  37. import javax.validation.Valid;
  38. import java.util.List;
  39. import java.util.Map;
  40. /**
  41. * @Description: 用户操作API
  42. * @author: gaodm
  43. * @time: 2018/8/2 13:56
  44. */
  45. @RestController
  46. @Api(value = "用户账号注册等API", tags = { "用户账号注册等API" })
  47. @RequestMapping("/user")
  48. @SuppressWarnings("unchecked")
  49. public class UserController {
  50. @Autowired
  51. private UserFacade userFacade;
  52. @Autowired
  53. private TokenFacade tokenFacade;
  54. @Autowired
  55. private PermissionFacade permissionFacade;
  56. @ApiOperation(value = "注册[by:zhoutg]",
  57. notes = "username:用户名,必填<br>" +
  58. "password:密码,必填<br> " +
  59. "organization:组织机构,必填<br>" +
  60. "email:邮箱,必填<br>" +
  61. "linkman:联系人,必填<br>" +
  62. "imgId:图片id,必填<br>" +
  63. "code:图片验证码,必填<br>")
  64. @PostMapping("/registry")
  65. @SysLogger("registry")
  66. @Transactional
  67. public RespDTO<Boolean> createUser(@RequestBody @Valid UserSaveVO userSaveVO) {
  68. Boolean res = userFacade.createUser(userSaveVO);
  69. return RespDTO.onSuc(res);
  70. }
  71. @ApiOperation(value = "验证token有效性[by:zhoutg]",
  72. notes = "token:token信息,必填<br>")
  73. @PostMapping("/verifyToken")
  74. @SysLogger("verifyToken")
  75. @ApiIgnore
  76. public RespDTO<Boolean> verifyToken(@RequestBody Token token) {
  77. Boolean data = tokenFacade.verifyToken(token.getToken(), 1);
  78. return RespDTO.onSuc(data);
  79. }
  80. @ApiOperation(value = "校验用户(手机号)已注册[by:zhoutg]",
  81. notes = "username:用户名(手机号),必填<br>")
  82. @PostMapping("/verifyExistUsername")
  83. @SysLogger("verifyExistUsername")
  84. public RespDTO<Boolean> verifyExistUser(@RequestBody UsernameVO usernameVO) {
  85. Boolean res = userFacade.verifyExistUser(usernameVO);
  86. return RespDTO.onSuc(res);
  87. }
  88. @ApiOperation(value = "校验用户(手机号)未注册[by:zhoutg]",
  89. notes = "username:用户名(手机号),必填<br>")
  90. @PostMapping("/verifyNoUsername")
  91. @SysLogger("verifyNoUsername")
  92. public RespDTO<Boolean> verifyUser(@RequestBody UsernameVO usernameVO) {
  93. Boolean res = userFacade.verifyNoUser(usernameVO);
  94. return RespDTO.onSuc(res);
  95. }
  96. @ApiOperation(value = "登录获取jwt[by:zhoutg]",
  97. notes = "username:用户名,必填<br>" +
  98. "password:密码, 必填, 默认密码:dc483e80a7a0bd9ef71d8cf973673924<br> ")
  99. @PostMapping("/getJwt")
  100. @SysLogger("getJwt")
  101. public RespDTO<JwtDTO> getJwt(@RequestBody UserLoginVO userLoginVO) {
  102. JwtDTO data = userFacade.getJwt(userLoginVO.getUsername(), userLoginVO.getPassword());
  103. return RespDTO.onSuc(data);
  104. }
  105. @ApiOperation(value = "刷新jwt[by:zhoutg]",
  106. notes = "refreshToken:刷新令牌,必填<br>")
  107. @PostMapping("/refreshJwt")
  108. @SysLogger("refreshJwt")
  109. public RespDTO<JwtDTO> refreshJwt(@RequestBody JwtVO jwtVO) {
  110. JwtDTO data = userFacade.refreshJwt(jwtVO.getToken());
  111. return RespDTO.onSuc(data);
  112. }
  113. @ApiOperation(value = "验证Token[by:zhoutg]",
  114. notes = "checkToken:令牌,必填<br>")
  115. @PostMapping("/checkToken")
  116. @SysLogger("checkToken")
  117. public RespDTO<OAuth2AccessToken> checkToken(@RequestBody JwtVO jwtVO) {
  118. OAuth2AccessToken data = userFacade.checkToken(jwtVO.getToken());
  119. return RespDTO.onSuc(data);
  120. }
  121. @ApiOperation(value = "获取用户、机构、菜单信息[by:zhoutg]",
  122. notes = "")
  123. @PostMapping("/getUserOrgMenu")
  124. @SysLogger("getUserOrgMenu")
  125. public RespDTO<LoginDTO> getUserOrgMenu() {
  126. LoginDTO data = userFacade.getUserOrgMenu();
  127. return RespDTO.onSuc(data);
  128. }
  129. @ApiOperation(value = "获取朗通后台个人信息[by:zhoutg]",
  130. notes = "")
  131. @PostMapping("/getPersonInfo")
  132. @SysLogger("getPersonInfo")
  133. public RespDTO<UserLoginDTO> getPersonInfo() {
  134. UserLoginDTO data = userFacade.getPersonInfo();
  135. return RespDTO.onSuc(data);
  136. }
  137. @ApiOperation(value = "修改朗通后台个人信息[by:zhoutg]", notes = "")
  138. @PostMapping("/updatePersonInfo")
  139. @SysLogger("updatePersonInfo")
  140. public RespDTO<String> updatePersonInfo(@RequestBody PersonVO personVO) {
  141. userFacade.updatePersonInfo(personVO);
  142. return RespDTO.onSuc(null);
  143. }
  144. @ApiOperation(value = "重置密码[by:zhoutg]",
  145. notes = "username:用户名,必填<br>" +
  146. "password:密码, 必填<br> " +
  147. "diffPassword:标志,Y:修改的密码不能和上次相同,其他值:不作限制")
  148. @PostMapping("/resetPassword")
  149. @SysLogger("resetPassword")
  150. @Transactional
  151. public RespDTO<Boolean> resetPassword(@RequestBody ResetPasswordVO resetPasswordVO) {
  152. return userFacade.resetPassword(resetPasswordVO.getUsername(), resetPasswordVO.getPassword(), resetPasswordVO.getDiffPassword());
  153. }
  154. @ApiOperation(value = "修改密码[by:zhoutg]",
  155. notes = "password:原密码,必填<br>" +
  156. "modifyPassword:新密码, 必填<br> ")
  157. @PostMapping("/midifyPassword")
  158. @SysLogger("midifyPassword")
  159. @Transactional
  160. public RespDTO<Boolean> midifyPassword(@RequestBody ModifyPasswordVO modifyPasswordVO) {
  161. Boolean flag = userFacade.modifyPassword(modifyPasswordVO.getPassword(), modifyPasswordVO.getModifyPassword());
  162. return RespDTO.onSuc(flag);
  163. }
  164. @PostMapping(value = "/getUserAndOrg")
  165. @SysLogger("getUserAndOrg")
  166. @ApiOperation(value = "获取用户和机构信息[by:zhoutg]")
  167. @ApiIgnore
  168. RespDTO<Map<Long, UserOrgDTO>> getUserAndOrg(@RequestBody List<Long> userIds) {
  169. Map<Long, UserOrgDTO> result = userFacade.getUserAndOrg(userIds);
  170. return RespDTO.onSuc(result);
  171. }
  172. @PostMapping(value = "/getUserAuthStatus")
  173. @SysLogger("getUserAuthStatus")
  174. @ApiOperation(value = "远程调用,获取用户认证状态[by:wangyu]")
  175. @ApiIgnore
  176. RespDTO<User> getUserAuthStatus(@RequestBody Long userId) {
  177. return userFacade.getUserAuthStatus(userId);
  178. }
  179. @PostMapping(value = "/getUserAllInfo")
  180. @SysLogger("getUserAllInfo")
  181. @ApiOperation(value = "远程调用,获取用户信息[by:wangyu]")
  182. @ApiIgnore
  183. RespDTO<List<User>> getUserAllInfo() {
  184. return RespDTO.onSuc(userFacade.getAllUserInfos());
  185. }
  186. @PostMapping(value = "/getUserByOrgName")
  187. @SysLogger("getUserByOrgName")
  188. @ApiOperation(value = "远程调用,根据机构名称获取用户信息[by:zhoutg]")
  189. @ApiIgnore
  190. RespDTO<List<Long>> getUserByOrgName(@RequestBody String name) {
  191. List<Long> data = userFacade.getUserByOrgNameFac(name);
  192. return RespDTO.onSuc(data);
  193. }
  194. @ApiOperation(value = "获取资源信息,接口未用[by:zhoutg]",
  195. notes = "appkey:用户名,必填<br>" +
  196. "secret:密码, 必填<br> ")
  197. @PostMapping("/getPermission")
  198. @ApiIgnore
  199. public RespDTO<Permission> getPermission(@RequestBody AppkeySecretVO appkeySecretVO) {
  200. return permissionFacade.getPermission(appkeySecretVO.getAppkey(), appkeySecretVO.getSecret());
  201. }
  202. @ApiOperation(value = "根据用户名获取用户(示例)[by:gaodm]", notes = "根据用户名获取用户")
  203. @PostMapping("/getByUsername")
  204. @SysLogger("getByUsername")
  205. @ApiIgnore
  206. // @PreAuthorize("hasAnyAuthority('ROLE_USER')")
  207. public RespDTO getUserInfo(@RequestBody UsernameVO usernameVO) {
  208. //参数判读省略
  209. User user = userFacade.getUserInfo(usernameVO.getUsername());
  210. return RespDTO.onSuc(user);
  211. }
  212. @ApiOperation(value = "根据用户id获取用户信息(示例)[by:gaodm]", notes = "根据用户id获取用户信息")
  213. @PostMapping("/getUserInfoByID")
  214. @SysLogger("getUserInfoByID")
  215. @ApiIgnore
  216. public RespDTO getUserInfoByID(@RequestBody UserInfoByIdPageVO userInfoByIdPageVO) {
  217. User userVo = new User();
  218. userVo.setId(userInfoByIdPageVO.getId());
  219. IPage<User> user = userFacade.selectUserListPage(userInfoByIdPageVO, userVo);
  220. return RespDTO.onSuc(user);
  221. }
  222. // @ApiOperation(value = "注册事务", notes = "username和password为必选项")
  223. // @PostMapping("/registryTran")
  224. // @SysLogger("registryTran")
  225. // @Transactional
  226. // public RespDTO createUserTran(@RequestBody User user){
  227. // //参数判读省略,判读该用户在数据库是否已经存在省略
  228. // userFacade.createUser(user);
  229. // throw new CommonException(CommonErrorCode.FAIL);
  230. //// return RespDTO.onSuc(user);
  231. // }
  232. // @Autowired
  233. // private AmqpTemplate rabbitTemplate;
  234. // @GetMapping("/test")
  235. // public void test(){
  236. // rabbitTemplate.convertAndSend(RabbitConfig.queueName, "Hello from RabbitMQ!");
  237. // }
  238. /**
  239. * 增加用户
  240. *
  241. * @param user 用户信息
  242. * @return 增加是否成功
  243. */
  244. @ApiOperation(value = "增加用户(示例)[by:gaodm]", notes = "username和password为必选项")
  245. @PostMapping("/addUser")
  246. @SysLogger("addUser")
  247. @Transactional
  248. @ApiIgnore
  249. public RespDTO addUser(@RequestBody User user) {
  250. //参数判读省略,判读该用户在数据库是否已经存在省略
  251. userFacade.saveUser(user);
  252. // throw new CommonException(ErrorCode.FAIL);
  253. return RespDTO.onSuc(user);
  254. }
  255. /**
  256. * 修改用户
  257. *
  258. * @param user 用户信息
  259. * @return 修改是否成功
  260. */
  261. @ApiOperation(value = "修改用户(示例)[by:gaodm]", notes = "username和password为必选项")
  262. @PostMapping("/updateUser")
  263. @SysLogger("updateUser")
  264. @Transactional
  265. @ApiIgnore
  266. public RespDTO updateUser(@RequestBody User user) {
  267. //参数判读省略,判读该用户在数据库是否已经存在省略
  268. userFacade.updateUser(user);
  269. return RespDTO.onSuc(user);
  270. }
  271. /**
  272. * 查询用户信息
  273. *
  274. * @param baseIdVO 用户ID
  275. * @return 用户信息
  276. */
  277. @ApiOperation(value = "查询用户(示例)[by:gaodm]", notes = "查询用户")
  278. @GetMapping("/getUser")
  279. @SysLogger("getUser")
  280. @Transactional
  281. @ApiIgnore
  282. public RespDTO getUser(@RequestBody BaseIdVO baseIdVO) {
  283. return RespDTO.onSuc(userFacade.getById(baseIdVO.getId()));
  284. }
  285. /**
  286. * 删除用户
  287. *
  288. * @param baseIdVO 用户ID
  289. * @return 删除是否成功
  290. */
  291. @ApiOperation(value = "删除用户(示例)[by:gaodm]", notes = "删除用户")
  292. @PostMapping("/delUser")
  293. @SysLogger("delUser")
  294. @Transactional
  295. @ApiIgnore
  296. public RespDTO delUser(@RequestBody BaseIdVO baseIdVO) {
  297. return RespDTO.onSuc(userFacade.removeById(baseIdVO.getId()));
  298. }
  299. @ApiOperation(value = "控制台账户信息[by:rengb]", notes = "控制台账户信息no")
  300. @PostMapping("/getConsoleUserInfo")
  301. @SysLogger("getConsoleUserInfo")
  302. public RespDTO<GetConsoleUserInfoDTO> getConsoleUserInfo() {
  303. return RespDTO.onSuc(userFacade.getConsoleUserInfo());
  304. }
  305. @ApiOperation(value = "根据用户ID列表获取用户数据(远程调用)[by:gaodm]", notes = "根据用户ID列表获取用户数据")
  306. @PostMapping("/getUserInfoByIds")
  307. @SysLogger("getUserInfoByIds")
  308. @ApiIgnore
  309. public RespDTO<Map<String, String>> getUserInfoByIds(@RequestBody List<String> ids){
  310. return RespDTO.onSuc(userFacade.getUserInfoByIds(ids));
  311. }
  312. }