UserController.java 12 KB

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