BaseController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  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/range", method = RequestMethod.GET)
  143. @ApiOperation(value = "练习层级范围", httpMethod = "GET")
  144. public Response<List<ExerciseStruct>> exerciseRange(
  145. @RequestParam(required = true) Integer id,
  146. HttpSession session) {
  147. List<ExerciseStruct> p = exerciseStructService.all();
  148. return ResponseHelp.success(p);
  149. }
  150. @RequestMapping(value = "/examination/main", method = RequestMethod.GET)
  151. @ApiOperation(value = "所有模考头2层", httpMethod = "GET")
  152. public Response<List<ExaminationStruct>> examinationMain(HttpSession session) {
  153. List<ExaminationStruct> p = examinationStructService.main();
  154. return ResponseHelp.success(p);
  155. }
  156. @RequestMapping(value = "/examination/children", method = RequestMethod.GET)
  157. @ApiOperation(value = "所有模考层级", httpMethod = "GET")
  158. public Response<List<ExaminationStruct>> examinationChildren(
  159. @RequestParam(required = true) Integer id,
  160. @RequestParam(required = false, defaultValue = "false") boolean children,
  161. HttpSession session) {
  162. List<ExaminationStruct> p = examinationStructService.children(id, children ? 1 :0);
  163. return ResponseHelp.success(p);
  164. }
  165. @RequestMapping(value = "/examination/parent", method = RequestMethod.GET)
  166. @ApiOperation(value = "模考层级父级", httpMethod = "GET")
  167. public Response<List<ExaminationStruct>> examinationParent(
  168. @RequestParam(required = true) Integer id,
  169. HttpSession session) {
  170. List<ExaminationStruct> p = examinationStructService.parent(id);
  171. return ResponseHelp.success(p);
  172. }
  173. @RequestMapping(value = "/examination/number", method = RequestMethod.GET)
  174. @ApiOperation(value = "模考题目数", notes = "获取模考题目数", httpMethod = "GET")
  175. public Response<JSONObject> examinationNumber() {
  176. Setting entity = settingService.getByKey(SettingKey.EXAMINATION_TIME);
  177. return ResponseHelp.success(entity.getValue());
  178. }
  179. @RequestMapping(value = "/service", method = RequestMethod.GET)
  180. @ApiOperation(value = "获取服务信息", notes = "获取服务信息", httpMethod = "GET")
  181. public Response<JSONObject> service(@RequestParam(required = true) String service) {
  182. SettingKey key;
  183. switch(ServiceKey.ValueOf(service)){
  184. case TEXTBOOK:
  185. key = SettingKey.SERVICE_TEXTBOOK;
  186. break;
  187. case VIP:
  188. key = SettingKey.SERVICE_VIP;
  189. break;
  190. case QX_CAT:
  191. key = SettingKey.SERVICE_QX_CAT;
  192. break;
  193. default:
  194. throw new ParameterException("服务信息错误");
  195. }
  196. Setting setting = settingService.getByKey(key);
  197. return ResponseHelp.success(setting.getValue());
  198. }
  199. @RequestMapping(value = "/contract", method = RequestMethod.GET)
  200. @ApiOperation(value = "获取合同信息", notes = "获取合同信息", httpMethod = "GET")
  201. public Response<Contract> contract(@RequestParam(required = true) String key) {
  202. Contract contract = contractService.getContract(key);
  203. return ResponseHelp.success(contract);
  204. }
  205. @RequestMapping(value = "/faq/list", method = RequestMethod.GET)
  206. @ApiOperation(value = "faq列表", httpMethod = "GET")
  207. public Response<PageMessage<FaqDto>> listFaq(
  208. @RequestParam(required = false, defaultValue = "1") int page,
  209. @RequestParam(required = false, defaultValue = "100") int size,
  210. @RequestParam(required = true) String channel,
  211. @RequestParam(required = false) String position,
  212. @RequestParam(required = false, defaultValue = "id") String order,
  213. @RequestParam(required = false, defaultValue = "desc") String direction,
  214. HttpSession session) {
  215. Page<Faq> p = faqService.list(page, size, channel, position);
  216. List<FaqDto> pr = Transform.convert(p, FaqDto.class);
  217. Collection userIds = Transform.getIds(p, Faq.class, "userId");
  218. List<User> userList = usersService.select(userIds);
  219. Transform.combine(pr, userList, FaqDto.class, "userId", "user", User.class, "id", UserExtendDto.class);
  220. return ResponseHelp.success(pr, page, size, p.getTotal());
  221. }
  222. @RequestMapping(value = "/comment/list", method = RequestMethod.GET)
  223. @ApiOperation(value = "评论列表", httpMethod = "GET")
  224. public Response<PageMessage<CommentDto>> listComment(
  225. @RequestParam(required = false, defaultValue = "1") int page,
  226. @RequestParam(required = false, defaultValue = "100") int size,
  227. @RequestParam(required = true) String channel,
  228. @RequestParam(required = false) String position,
  229. @RequestParam(required = false, defaultValue = "id") String order,
  230. @RequestParam(required = false, defaultValue = "desc") String direction,
  231. HttpSession session) {
  232. Page<Comment> p = commentService.list(page, size, channel, position);
  233. Collection userIds = Transform.getIds(p, Comment.class, "userId");
  234. List<User> userList = usersService.select(userIds);
  235. commentService.replaceUser(p, userList);
  236. List<CommentDto> pr = Transform.convert(p, CommentDto.class);
  237. return ResponseHelp.success(pr, page, size, p.getTotal());
  238. }
  239. @RequestMapping(value = "/ready_info", method = RequestMethod.GET)
  240. @ApiOperation(value = "获取GetReady信息", notes = "获取GetReady信息", httpMethod = "GET")
  241. public Response<JSONObject> readyRead() {
  242. Setting entity = settingService.getByKey(SettingKey.READY_READ);
  243. JSONObject info = entity.getValue();
  244. List<ReadyArticleCategory> articleCategoryList = readyArticleCategoryService.all();
  245. List<ReadyRoomArea> roomAreaList = readyRoomAreaService.all();
  246. JSONObject dto = new JSONObject();
  247. dto.put("read", info);
  248. dto.put("category", articleCategoryList);
  249. dto.put("area", roomAreaList);
  250. return ResponseHelp.success(dto);
  251. }
  252. @RequestMapping(value = "/read/list", method = RequestMethod.GET)
  253. @ApiOperation(value = "推荐阅读", httpMethod = "GET")
  254. public Response<PageMessage<ReadyRead>> listRead(
  255. @RequestParam(required = false, defaultValue = "1") int page,
  256. @RequestParam(required = false, defaultValue = "100") int size,
  257. @RequestParam(required = true) String plate,
  258. @RequestParam(required = false, defaultValue = "id") String order,
  259. @RequestParam(required = false, defaultValue = "desc") String direction,
  260. HttpSession session) {
  261. Page<ReadyRead> p = readyReadService.list(page, size, plate, order, DirectionStatus.ValueOf(direction));
  262. return ResponseHelp.success(p, page, size, p.getTotal());
  263. }
  264. @RequestMapping(value = "/room/list", method = RequestMethod.GET)
  265. @ApiOperation(value = "考场查询", httpMethod = "GET")
  266. public Response<PageMessage<ReadyRoom>> listRoom(
  267. @RequestParam(required = false, defaultValue = "1") int page,
  268. @RequestParam(required = false, defaultValue = "100") int size,
  269. @RequestParam(required = false) String keyword,
  270. @RequestParam(required = false) Integer areaId,
  271. @RequestParam(required = false, defaultValue = "id") String order,
  272. @RequestParam(required = false, defaultValue = "desc") String direction,
  273. HttpSession session) {
  274. Page<ReadyRoom> p = readyRoomService.list(page, size, keyword, areaId, order, DirectionStatus.ValueOf(direction));
  275. return ResponseHelp.success(p, page, size, p.getTotal());
  276. }
  277. @RequestMapping(value = "/data/all", method = RequestMethod.GET)
  278. @ApiOperation(value = "资料", httpMethod = "GET")
  279. public Response<List<ReadyData>> allData(
  280. @RequestParam(required = true) Boolean isOfficial,
  281. HttpSession session) {
  282. List<ReadyData> p = readyDataService.all(isOfficial);
  283. return ResponseHelp.success(p);
  284. }
  285. }