BaseController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. package com.qxgmat.controller.api;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.github.pagehelper.Page;
  5. import com.nuliji.tools.PageMessage;
  6. import com.nuliji.tools.Response;
  7. import com.nuliji.tools.ResponseHelp;
  8. import com.nuliji.tools.Transform;
  9. import com.nuliji.tools.exception.ParameterException;
  10. import com.qxgmat.data.constants.enums.ServiceKey;
  11. import com.qxgmat.data.constants.enums.SettingKey;
  12. import com.qxgmat.data.constants.enums.status.DirectionStatus;
  13. import com.qxgmat.data.dao.entity.*;
  14. import com.qxgmat.dto.extend.UserExtendDto;
  15. import com.qxgmat.dto.response.CommentDto;
  16. import com.qxgmat.dto.response.FaqDto;
  17. import com.qxgmat.service.UsersService;
  18. import com.qxgmat.service.inline.*;
  19. import io.swagger.annotations.Api;
  20. import io.swagger.annotations.ApiOperation;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.http.MediaType;
  23. import org.springframework.web.bind.annotation.RequestMapping;
  24. import org.springframework.web.bind.annotation.RequestMethod;
  25. import org.springframework.web.bind.annotation.RequestParam;
  26. import org.springframework.web.bind.annotation.RestController;
  27. import javax.servlet.http.HttpSession;
  28. import java.util.Collection;
  29. import java.util.HashMap;
  30. import java.util.List;
  31. import java.util.Map;
  32. @RestController
  33. @RequestMapping("/api/base")
  34. @Api(tags = "基本接口", description = "全站基本数据接口", produces = MediaType.APPLICATION_JSON_VALUE)
  35. public class BaseController {
  36. @Autowired
  37. private SettingService settingService;
  38. @Autowired
  39. private AdService adService;
  40. @Autowired
  41. private RankService rankService;
  42. @Autowired
  43. private ContractService contractService;
  44. @Autowired
  45. private ExerciseStructService exerciseStructService;
  46. @Autowired
  47. private ExaminationStructService examinationStructService;
  48. @Autowired
  49. private FaqService faqService;
  50. @Autowired
  51. private CommentService commentService;
  52. @Autowired
  53. private ReadyReadService readyReadService;
  54. @Autowired
  55. private ReadyDataService readyDataService;
  56. @Autowired
  57. private ReadyRoomService readyRoomService;
  58. @Autowired
  59. private ReadyArticleCategoryService readyArticleCategoryService;
  60. @Autowired
  61. private ReadyRoomAreaService readyRoomAreaService;
  62. @Autowired
  63. private UsersService usersService;
  64. @RequestMapping(value = "/index", method = RequestMethod.GET)
  65. @ApiOperation(value = "获取首页配置", httpMethod = "GET")
  66. private Response<JSONObject> index(){
  67. Setting entity = settingService.getByKey(SettingKey.INDEX);
  68. return ResponseHelp.success(entity.getValue());
  69. }
  70. @RequestMapping(value = "/ad", method = RequestMethod.GET)
  71. @ApiOperation(value = "获取广告", notes = "获取广告列表", httpMethod = "GET")
  72. public Response<List<Ad>> ad(
  73. @RequestParam(required = true) String channel
  74. ) {
  75. List<Ad> adList = adService.all(channel);
  76. return ResponseHelp.success(adList);
  77. }
  78. @RequestMapping(value = "/tips", method = RequestMethod.GET)
  79. @ApiOperation(value = "获取提示信息", notes = "获取提示信息", httpMethod = "GET")
  80. public Response<Map<String, String>> tips(@RequestParam(required = true) String[] position) {
  81. Setting entity = settingService.getByKey(SettingKey.TIPS);
  82. JSONObject value = entity.getValue();
  83. Map<String, String> map = new HashMap<>();
  84. for (String p: position) {
  85. map.put(p, value.getString(p));
  86. }
  87. return ResponseHelp.success(map);
  88. }
  89. @RequestMapping(value = "/sentence", method = RequestMethod.GET)
  90. @ApiOperation(value = "获取长难句信息", notes = "获取长难句信息", httpMethod = "GET")
  91. public Response<JSONObject> sentence() {
  92. Setting entity = settingService.getByKey(SettingKey.SENTENCE_INFO);
  93. return ResponseHelp.success(entity.getValue());
  94. }
  95. @RequestMapping(value = "/experience", method = RequestMethod.GET)
  96. @ApiOperation(value = "获取心经信息", notes = "获取心经信息", httpMethod = "GET")
  97. public Response<JSONObject> experience() {
  98. Setting entity = settingService.getByKey(SettingKey.EXPERIENCE_INFO);
  99. return ResponseHelp.success(entity.getValue());
  100. }
  101. @RequestMapping(value = "/wechat", method = RequestMethod.GET)
  102. @ApiOperation(value = "获取心经信息", notes = "获取心经信息", httpMethod = "GET")
  103. public Response<JSONObject> wechat() {
  104. Setting entity = settingService.getByKey(SettingKey.WECHAT_INFO);
  105. return ResponseHelp.success(entity.getValue());
  106. }
  107. @RequestMapping(value = "/score", method = RequestMethod.GET)
  108. @ApiOperation(value = "考分计算", notes = "获取考分排行信息", httpMethod = "GET")
  109. public Response<Rank> score(
  110. @RequestParam(required = true) Number total,
  111. @RequestParam(required = true) Number quant
  112. ) {
  113. Rank rank = rankService.compute(total, quant);
  114. if (rank == null){
  115. throw new ParameterException("排名信息为空");
  116. }
  117. return ResponseHelp.success(rank);
  118. }
  119. @RequestMapping(value = "/exercise/main", method = RequestMethod.GET)
  120. @ApiOperation(value = "所有练习头2层", httpMethod = "GET")
  121. public Response<List<ExerciseStruct>> exerciseMain(HttpSession session) {
  122. List<ExerciseStruct> p = exerciseStructService.main();
  123. return ResponseHelp.success(p);
  124. }
  125. @RequestMapping(value = "/exercise/children", method = RequestMethod.GET)
  126. @ApiOperation(value = "所有练习层级", httpMethod = "GET")
  127. public Response<List<ExerciseStruct>> exerciseChildren(
  128. @RequestParam(required = true) Integer id,
  129. @RequestParam(required = false, defaultValue = "false") boolean children,
  130. HttpSession session) {
  131. List<ExerciseStruct> p = exerciseStructService.children(id, children? 1 : 0);
  132. return ResponseHelp.success(p);
  133. }
  134. @RequestMapping(value = "/exercise/parent", method = RequestMethod.GET)
  135. @ApiOperation(value = "练习层级父级", httpMethod = "GET")
  136. public Response<List<ExerciseStruct>> exerciseParent(
  137. @RequestParam(required = true) Integer id,
  138. HttpSession session) {
  139. List<ExerciseStruct> p = exerciseStructService.parent(id);
  140. return ResponseHelp.success(p);
  141. }
  142. @RequestMapping(value = "/exercise/all", method = RequestMethod.GET)
  143. @ApiOperation(value = "练习层级范围", httpMethod = "GET")
  144. public Response<List<ExerciseStruct>> exerciseRange(HttpSession session) {
  145. List<ExerciseStruct> p = exerciseStructService.all();
  146. return ResponseHelp.success(p);
  147. }
  148. @RequestMapping(value = "/examination/main", method = RequestMethod.GET)
  149. @ApiOperation(value = "所有模考头2层", httpMethod = "GET")
  150. public Response<List<ExaminationStruct>> examinationMain(HttpSession session) {
  151. List<ExaminationStruct> p = examinationStructService.main();
  152. return ResponseHelp.success(p);
  153. }
  154. @RequestMapping(value = "/examination/children", method = RequestMethod.GET)
  155. @ApiOperation(value = "所有模考层级", httpMethod = "GET")
  156. public Response<List<ExaminationStruct>> examinationChildren(
  157. @RequestParam(required = true) Integer id,
  158. @RequestParam(required = false, defaultValue = "false") boolean children,
  159. HttpSession session) {
  160. List<ExaminationStruct> p = examinationStructService.children(id, children ? 1 :0);
  161. return ResponseHelp.success(p);
  162. }
  163. @RequestMapping(value = "/examination/parent", method = RequestMethod.GET)
  164. @ApiOperation(value = "模考层级父级", httpMethod = "GET")
  165. public Response<List<ExaminationStruct>> examinationParent(
  166. @RequestParam(required = true) Integer id,
  167. HttpSession session) {
  168. List<ExaminationStruct> p = examinationStructService.parent(id);
  169. return ResponseHelp.success(p);
  170. }
  171. @RequestMapping(value = "/examination/number", method = RequestMethod.GET)
  172. @ApiOperation(value = "模考题目数", notes = "获取模考题目数", httpMethod = "GET")
  173. public Response<JSONObject> examinationNumber() {
  174. Setting entity = settingService.getByKey(SettingKey.EXAMINATION_TIME);
  175. return ResponseHelp.success(entity.getValue());
  176. }
  177. @RequestMapping(value = "/service", method = RequestMethod.GET)
  178. @ApiOperation(value = "获取服务信息", notes = "获取服务信息", httpMethod = "GET")
  179. public Response<JSONObject> service(@RequestParam(required = true) String service) {
  180. SettingKey key;
  181. switch(ServiceKey.ValueOf(service)){
  182. case TEXTBOOK:
  183. key = SettingKey.SERVICE_TEXTBOOK;
  184. break;
  185. case VIP:
  186. key = SettingKey.SERVICE_VIP;
  187. break;
  188. case QX_CAT:
  189. key = SettingKey.SERVICE_QX_CAT;
  190. break;
  191. default:
  192. throw new ParameterException("服务信息错误");
  193. }
  194. Setting setting = settingService.getByKey(key);
  195. return ResponseHelp.success(setting.getValue());
  196. }
  197. @RequestMapping(value = "/contract", method = RequestMethod.GET)
  198. @ApiOperation(value = "获取合同信息", notes = "获取合同信息", httpMethod = "GET")
  199. public Response<Contract> contract(@RequestParam(required = true) String key) {
  200. Contract contract = contractService.getContract(key);
  201. return ResponseHelp.success(contract);
  202. }
  203. @RequestMapping(value = "/faq/list", method = RequestMethod.GET)
  204. @ApiOperation(value = "faq列表", httpMethod = "GET")
  205. public Response<PageMessage<FaqDto>> listFaq(
  206. @RequestParam(required = false, defaultValue = "1") int page,
  207. @RequestParam(required = false, defaultValue = "100") int size,
  208. @RequestParam(required = true) String channel,
  209. @RequestParam(required = false) String position,
  210. @RequestParam(required = false, defaultValue = "id") String order,
  211. @RequestParam(required = false, defaultValue = "desc") String direction,
  212. HttpSession session) {
  213. Page<Faq> p = faqService.list(page, size, channel, position);
  214. List<FaqDto> pr = Transform.convert(p, FaqDto.class);
  215. Collection userIds = Transform.getIds(p, Faq.class, "userId");
  216. List<User> userList = usersService.select(userIds);
  217. Transform.combine(pr, userList, FaqDto.class, "userId", "user", User.class, "id", UserExtendDto.class);
  218. return ResponseHelp.success(pr, page, size, p.getTotal());
  219. }
  220. @RequestMapping(value = "/comment/list", method = RequestMethod.GET)
  221. @ApiOperation(value = "评论列表", httpMethod = "GET")
  222. public Response<PageMessage<CommentDto>> listComment(
  223. @RequestParam(required = false, defaultValue = "1") int page,
  224. @RequestParam(required = false, defaultValue = "100") int size,
  225. @RequestParam(required = true) String channel,
  226. @RequestParam(required = false) String position,
  227. @RequestParam(required = false, defaultValue = "id") String order,
  228. @RequestParam(required = false, defaultValue = "desc") String direction,
  229. HttpSession session) {
  230. Page<Comment> p = commentService.list(page, size, channel, position);
  231. Collection userIds = Transform.getIds(p, Comment.class, "userId");
  232. List<User> userList = usersService.select(userIds);
  233. commentService.replaceUser(p, userList);
  234. List<CommentDto> pr = Transform.convert(p, CommentDto.class);
  235. return ResponseHelp.success(pr, page, size, p.getTotal());
  236. }
  237. @RequestMapping(value = "/ready_info", method = RequestMethod.GET)
  238. @ApiOperation(value = "获取GetReady信息", notes = "获取GetReady信息", httpMethod = "GET")
  239. public Response<JSONObject> readyRead() {
  240. Setting entity = settingService.getByKey(SettingKey.READY_READ);
  241. JSONObject info = entity.getValue();
  242. List<ReadyArticleCategory> articleCategoryList = readyArticleCategoryService.all();
  243. List<ReadyRoomArea> roomAreaList = readyRoomAreaService.all();
  244. JSONObject dto = new JSONObject();
  245. dto.put("read", info);
  246. dto.put("category", articleCategoryList);
  247. dto.put("area", roomAreaList);
  248. return ResponseHelp.success(dto);
  249. }
  250. @RequestMapping(value = "/read/list", method = RequestMethod.GET)
  251. @ApiOperation(value = "推荐阅读", httpMethod = "GET")
  252. public Response<PageMessage<ReadyRead>> listRead(
  253. @RequestParam(required = false, defaultValue = "1") int page,
  254. @RequestParam(required = false, defaultValue = "100") int size,
  255. @RequestParam(required = true) String plate,
  256. @RequestParam(required = false, defaultValue = "id") String order,
  257. @RequestParam(required = false, defaultValue = "desc") String direction,
  258. HttpSession session) {
  259. Page<ReadyRead> p = readyReadService.list(page, size, plate, order, DirectionStatus.ValueOf(direction));
  260. return ResponseHelp.success(p, page, size, p.getTotal());
  261. }
  262. @RequestMapping(value = "/room/list", method = RequestMethod.GET)
  263. @ApiOperation(value = "考场查询", httpMethod = "GET")
  264. public Response<PageMessage<ReadyRoom>> listRoom(
  265. @RequestParam(required = false, defaultValue = "1") int page,
  266. @RequestParam(required = false, defaultValue = "100") int size,
  267. @RequestParam(required = false) String keyword,
  268. @RequestParam(required = false) Integer areaId,
  269. @RequestParam(required = false, defaultValue = "id") String order,
  270. @RequestParam(required = false, defaultValue = "desc") String direction,
  271. HttpSession session) {
  272. Page<ReadyRoom> p = readyRoomService.list(page, size, keyword, areaId, order, DirectionStatus.ValueOf(direction));
  273. return ResponseHelp.success(p, page, size, p.getTotal());
  274. }
  275. @RequestMapping(value = "/data/all", method = RequestMethod.GET)
  276. @ApiOperation(value = "资料", httpMethod = "GET")
  277. public Response<List<ReadyData>> allData(
  278. @RequestParam(required = true) Boolean isOfficial,
  279. HttpSession session) {
  280. List<ReadyData> p = readyDataService.all(isOfficial);
  281. return ResponseHelp.success(p);
  282. }
  283. }