MyController.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. package com.qxgmat.controller.api;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.github.pagehelper.Page;
  4. import com.nuliji.tools.PageMessage;
  5. import com.nuliji.tools.Response;
  6. import com.nuliji.tools.ResponseHelp;
  7. import com.nuliji.tools.Transform;
  8. import com.nuliji.tools.exception.ParameterException;
  9. import com.nuliji.tools.exception.SystemException;
  10. import com.qxgmat.data.constants.enums.SettingKey;
  11. import com.qxgmat.data.dao.entity.*;
  12. import com.qxgmat.data.relation.entity.UserHomeworkPreviewRelation;
  13. import com.qxgmat.dto.extend.UserHomeworkPreviewExtendDto;
  14. import com.qxgmat.dto.request.*;
  15. import com.qxgmat.dto.response.UserClassDetailDto;
  16. import com.qxgmat.dto.response.UserPrepareDetailDto;
  17. import com.qxgmat.dto.response.UserRealDto;
  18. import com.qxgmat.help.ShiroHelp;
  19. import com.qxgmat.service.HomeworkPreviewService;
  20. import com.qxgmat.service.UsersService;
  21. import com.qxgmat.service.inline.*;
  22. import io.swagger.annotations.Api;
  23. import io.swagger.annotations.ApiOperation;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.beans.factory.annotation.Value;
  26. import org.springframework.http.MediaType;
  27. import org.springframework.validation.annotation.Validated;
  28. import org.springframework.web.bind.annotation.*;
  29. import org.springframework.web.multipart.MultipartFile;
  30. import javax.servlet.http.HttpServletRequest;
  31. import javax.servlet.http.HttpSession;
  32. import javax.validation.Validator;
  33. import java.io.File;
  34. import java.io.IOException;
  35. import java.text.DateFormat;
  36. import java.text.ParseException;
  37. import java.util.Date;
  38. import java.util.List;
  39. import java.util.UUID;
  40. /**
  41. * Created by GaoJie on 2017/10/31.
  42. */
  43. @RestController
  44. @RequestMapping("/api/auth")
  45. @Api(tags = "登录用户接口", description = "获取与操作当前用户信息", produces = MediaType.APPLICATION_JSON_VALUE)
  46. public class MyController {
  47. @Value("${upload.local_path}")
  48. private String localPath;
  49. @Value("${upload.web_url}")
  50. private String webUrl;
  51. @Autowired
  52. private Validator validator;
  53. @Autowired
  54. private ShiroHelp shiroHelp;
  55. @Autowired
  56. private UsersService usersService;
  57. @Autowired
  58. private UserMessageService userMessageService;
  59. @Autowired
  60. private SettingService settingService;
  61. @Autowired
  62. private StatDayService statDayService;
  63. @Autowired
  64. private UserClassService userClassService;
  65. @Autowired
  66. private UserServiceService userServiceService;
  67. @Autowired
  68. private UserCollectService userCollectService;
  69. @Autowired
  70. private UserNoteService userNoteService;
  71. @Autowired
  72. private UserQuestionService userQuestionService;
  73. @RequestMapping(value = "/email", method = RequestMethod.POST)
  74. @ApiOperation(value = "绑定邮箱", httpMethod = "POST")
  75. public Response<Boolean> email(@RequestBody @Validated UserEmailDto dto, HttpSession session, HttpServletRequest request) {
  76. User user = (User) shiroHelp.getLoginUser();
  77. usersService.edit(User.builder()
  78. .id(user.getId())
  79. .email(dto.getEmail())
  80. .build());
  81. return ResponseHelp.success(true);
  82. }
  83. @RequestMapping(value = "/info", method = RequestMethod.POST)
  84. @ApiOperation(value = "修改用户信息", httpMethod = "POST")
  85. public Response<Boolean> info(@RequestBody @Validated UserInfoDto dto){
  86. User user = (User) shiroHelp.getLoginUser();
  87. usersService.edit(User.builder()
  88. .id(user.getId())
  89. .nickname(dto.getNickname())
  90. .avatar(dto.getAvatar())
  91. .build());
  92. return ResponseHelp.success(true);
  93. }
  94. @RequestMapping(value = "/real", produces = MediaType.IMAGE_JPEG_VALUE, method = RequestMethod.POST)
  95. @ApiOperation(value = "实名认证", notes = "保存用户实名信息", httpMethod = "POST")
  96. public Response<UserRealDto> real(@RequestParam("file") MultipartFile multipartFile) {
  97. if (multipartFile.isEmpty()) {
  98. throw new ParameterException("上传文件为空");
  99. }
  100. String contentType = multipartFile.getContentType();
  101. if (!contentType.contains("")) {
  102. throw new ParameterException("文件类型错误");
  103. }
  104. User user = (User) shiroHelp.getLoginUser();
  105. UserRealDto dto = new UserRealDto();
  106. // todo 随机文件名
  107. String file = UUID.randomUUID().toString();
  108. try {
  109. File dest = new File(localPath + File.separator+file);
  110. multipartFile.transferTo(dest);
  111. dto.setPhoto(webUrl+file);
  112. usersService.edit(User.builder()
  113. .id(user.getId())
  114. .realAddress(dto.getAddress())
  115. .realName(dto.getName())
  116. .realIdentity(dto.getIdentity())
  117. .realPhoto(dto.getPhoto())
  118. .build());
  119. return ResponseHelp.success(dto);
  120. } catch (IOException e) {
  121. e.printStackTrace();
  122. return ResponseHelp.exception(new SystemException("图片上传失败"));
  123. }
  124. }
  125. @RequestMapping(value = "/message", method = RequestMethod.GET)
  126. @ApiOperation(value = "用户站内信", notes = "用户消息列表", httpMethod = "GET")
  127. public Response<PageMessage<UserMessage>> message(
  128. @RequestParam(required = false, defaultValue = "1") int page,
  129. @RequestParam(required = false, defaultValue = "100") int size,
  130. @RequestParam(required = false) String type,
  131. @RequestParam(required = false) Integer read
  132. ) {
  133. User user = (User) shiroHelp.getLoginUser();
  134. Page<UserMessage> p = userMessageService.select(page, size, user.getId(), type, read);
  135. return ResponseHelp.success(p, page, size, p.getTotal());
  136. }
  137. @RequestMapping(value = "/message/read", method = RequestMethod.PUT)
  138. @ApiOperation(value = "读取消息", notes = "读取用户消息/全部", httpMethod = "PUT")
  139. public Response<Boolean> readMessage() {
  140. User user = (User) shiroHelp.getLoginUser();
  141. userMessageService.clear(user.getId());
  142. return ResponseHelp.success(true);
  143. }
  144. @RequestMapping(value = "/prepare", method = RequestMethod.PUT)
  145. @ApiOperation(value = "修改备考信息", notes = "修改用户备考信息", httpMethod = "PUT")
  146. public Response<Boolean> prepareEdit(@RequestBody @Validated UserPrepareDto dto) {
  147. User entity = Transform.dtoToEntity(dto);
  148. User user = (User) shiroHelp.getLoginUser();
  149. userMessageService.clear(user.getId());
  150. return ResponseHelp.success(true);
  151. }
  152. @RequestMapping(value = "/prepare", method = RequestMethod.GET)
  153. @ApiOperation(value = "获取备考信息", notes = "获取备考信息及分布", httpMethod = "GET")
  154. public Response<UserPrepareDetailDto> prepareGet() {
  155. User user = (User) shiroHelp.getLoginUser();
  156. User entity = usersService.get(user.getId());
  157. UserPrepareDetailDto dto = Transform.convert(entity, UserPrepareDetailDto.class);
  158. Setting setting = settingService.getByKey(SettingKey.PREPARE_INFO);
  159. JSONObject value = setting.getValue();
  160. return ResponseHelp.success(dto);
  161. }
  162. @RequestMapping(value = "/study", method = RequestMethod.GET)
  163. @ApiOperation(value = "获取学习记录", notes = "获取选择那天的做题信息", httpMethod = "GET")
  164. public Response<UserPrepareDetailDto> studyTime(
  165. @RequestParam(required = false) String date
  166. ) {
  167. User user = (User) shiroHelp.getLoginUser();
  168. try {
  169. Date day = DateFormat.getDateInstance().parse(date);
  170. } catch (ParseException e) {
  171. throw new ParameterException("日期格式错误");
  172. }
  173. User entity = usersService.get(user.getId());
  174. UserPrepareDetailDto dto = Transform.convert(entity, UserPrepareDetailDto.class);
  175. Setting setting = settingService.getByKey(SettingKey.PREPARE_INFO);
  176. JSONObject value = setting.getValue();
  177. return ResponseHelp.success(dto);
  178. }
  179. @RequestMapping(value = "/collect", method = RequestMethod.PUT)
  180. @ApiOperation(value = "添加收藏", notes = "添加收藏", httpMethod = "PUT")
  181. public Response<Boolean> collectAdd(@RequestBody @Validated UserCollectDto dto) {
  182. UserCollect entity = Transform.dtoToEntity(dto);
  183. User user = (User) shiroHelp.getLoginUser();
  184. userCollectService.addQuestion(user.getId(), entity.getQuestionNoId());
  185. return ResponseHelp.success(true);
  186. }
  187. @RequestMapping(value = "/collect", method = RequestMethod.DELETE)
  188. @ApiOperation(value = "移除收藏", notes = "移除收藏", httpMethod = "DELETE")
  189. public Response<Boolean> collectDelete(int id) {
  190. User user = (User) shiroHelp.getLoginUser();
  191. Boolean result = userCollectService.deleteQuestion(user.getId(), id);
  192. return ResponseHelp.success(result);
  193. }
  194. @RequestMapping(value = "/collect/list", method = RequestMethod.GET)
  195. @ApiOperation(value = "获取收藏列表", notes = "获取收藏列表", httpMethod = "GET")
  196. public Response<PageMessage<UserHomeworkPreviewExtendDto>> collectList(
  197. @RequestParam(required = false, defaultValue = "1") int page,
  198. @RequestParam(required = false, defaultValue = "100") int size,
  199. @RequestParam(required = true) String module,
  200. @RequestParam(required = false) Number category,
  201. @RequestParam(required = false) String endTime,
  202. @RequestParam(required = false) Boolean finish
  203. ) {
  204. User user = (User) shiroHelp.getLoginUser();
  205. Page<UserHomeworkPreviewRelation> p = userCollectService.list(page, size, category, user.getId(), endTime, finish);
  206. List<UserHomeworkPreviewExtendDto> pr = Transform.convert(p, UserHomeworkPreviewExtendDto.class);
  207. return ResponseHelp.success(pr, page, size, p.getTotal());
  208. }
  209. @RequestMapping(value = "/error/list", method = RequestMethod.GET)
  210. @ApiOperation(value = "获取错题列表", notes = "获取错题列表", httpMethod = "GET")
  211. public Response<PageMessage<UserHomeworkPreviewExtendDto>> errorList(
  212. @RequestParam(required = false, defaultValue = "1") int page,
  213. @RequestParam(required = false, defaultValue = "100") int size,
  214. @RequestParam(required = true) String module,
  215. @RequestParam(required = false) Number category,
  216. @RequestParam(required = false) String endTime,
  217. @RequestParam(required = false) Boolean finish
  218. ) {
  219. User user = (User) shiroHelp.getLoginUser();
  220. Page<UserHomeworkPreviewRelation> p = userQuestionService.list(page, size, category, user.getId(), endTime, finish);
  221. List<UserHomeworkPreviewExtendDto> pr = Transform.convert(p, UserHomeworkPreviewExtendDto.class);
  222. return ResponseHelp.success(pr, page, size, p.getTotal());
  223. }
  224. @RequestMapping(value = "/note", method = RequestMethod.PUT)
  225. @ApiOperation(value = "更新笔记", notes = "更新笔记", httpMethod = "PUT")
  226. public Response<Boolean> noteUpdate(@RequestBody @Validated UserNoteDto dto) {
  227. UserNote entity = Transform.dtoToEntity(dto);
  228. User user = (User) shiroHelp.getLoginUser();
  229. entity.setUserId(user.getId());
  230. userNoteService.update(entity);
  231. return ResponseHelp.success(true);
  232. }
  233. @RequestMapping(value = "/note/list", method = RequestMethod.GET)
  234. @ApiOperation(value = "获取笔记列表", notes = "获取笔记列表", httpMethod = "GET")
  235. public Response<PageMessage<UserHomeworkPreviewExtendDto>> noteList(
  236. @RequestParam(required = false, defaultValue = "1") int page,
  237. @RequestParam(required = false, defaultValue = "100") int size,
  238. @RequestParam(required = true) String module,
  239. @RequestParam(required = false) Number category,
  240. @RequestParam(required = false) String endTime,
  241. @RequestParam(required = false) Boolean finish
  242. ) {
  243. User user = (User) shiroHelp.getLoginUser();
  244. Page<UserHomeworkPreviewRelation> p = userNoteService.list(page, size, category, user.getId(), endTime, finish);
  245. List<UserHomeworkPreviewExtendDto> pr = Transform.convert(p, UserHomeworkPreviewExtendDto.class);
  246. return ResponseHelp.success(pr, page, size, p.getTotal());
  247. }
  248. @RequestMapping(value = "/report/list", method = RequestMethod.GET)
  249. @ApiOperation(value = "获取报告列表", notes = "获取报告列表", httpMethod = "GET")
  250. public Response<PageMessage<UserHomeworkPreviewExtendDto>> reportList(
  251. @RequestParam(required = false, defaultValue = "1") int page,
  252. @RequestParam(required = false, defaultValue = "100") int size,
  253. @RequestParam(required = true) String module,
  254. @RequestParam(required = false) Number category,
  255. @RequestParam(required = false) String endTime,
  256. @RequestParam(required = false) Boolean finish
  257. ) {
  258. User user = (User) shiroHelp.getLoginUser();
  259. Page<UserHomeworkPreviewRelation> p = userNoteService.list(page, size, category, user.getId(), endTime, finish);
  260. List<UserHomeworkPreviewExtendDto> pr = Transform.convert(p, UserHomeworkPreviewExtendDto.class);
  261. return ResponseHelp.success(pr, page, size, p.getTotal());
  262. }
  263. }