BaseController.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  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 = "/promote", method = RequestMethod.GET)
  79. @ApiOperation(value = "获取课程促销", httpMethod = "GET")
  80. private Response<JSONObject> getPromote(){
  81. Setting entity = settingService.getByKey(SettingKey.PROMOTE);
  82. return ResponseHelp.success(entity.getValue());
  83. }
  84. @RequestMapping(value = "/tips", method = RequestMethod.GET)
  85. @ApiOperation(value = "获取提示信息", notes = "获取提示信息", httpMethod = "GET")
  86. public Response<Map<String, String>> tips(@RequestParam(required = true) String[] position) {
  87. Setting entity = settingService.getByKey(SettingKey.TIPS);
  88. JSONObject value = entity.getValue();
  89. Map<String, String> map = new HashMap<>();
  90. for (String p: position) {
  91. map.put(p, value.getString(p));
  92. }
  93. return ResponseHelp.success(map);
  94. }
  95. @RequestMapping(value = "/sentence", method = RequestMethod.GET)
  96. @ApiOperation(value = "获取长难句信息", notes = "获取长难句信息", httpMethod = "GET")
  97. public Response<JSONObject> sentence() {
  98. Setting entity = settingService.getByKey(SettingKey.SENTENCE_INFO);
  99. return ResponseHelp.success(entity.getValue());
  100. }
  101. @RequestMapping(value = "/experience", method = RequestMethod.GET)
  102. @ApiOperation(value = "获取心经信息", notes = "获取心经信息", httpMethod = "GET")
  103. public Response<JSONObject> experience() {
  104. Setting entity = settingService.getByKey(SettingKey.EXPERIENCE_INFO);
  105. return ResponseHelp.success(entity.getValue());
  106. }
  107. @RequestMapping(value = "/wechat", method = RequestMethod.GET)
  108. @ApiOperation(value = "获取心经信息", notes = "获取心经信息", httpMethod = "GET")
  109. public Response<JSONObject> wechat() {
  110. Setting entity = settingService.getByKey(SettingKey.WECHAT_INFO);
  111. return ResponseHelp.success(entity.getValue());
  112. }
  113. @RequestMapping(value = "/score", method = RequestMethod.GET)
  114. @ApiOperation(value = "考分计算", notes = "获取考分排行信息", httpMethod = "GET")
  115. public Response<Rank> score(
  116. @RequestParam(required = true) Number total,
  117. @RequestParam(required = true) Number quant
  118. ) {
  119. Rank rank = rankService.compute(total, quant);
  120. if (rank == null){
  121. throw new ParameterException("排名信息为空");
  122. }
  123. return ResponseHelp.success(rank);
  124. }
  125. @RequestMapping(value = "/exercise/main", method = RequestMethod.GET)
  126. @ApiOperation(value = "所有练习头2层", httpMethod = "GET")
  127. public Response<List<ExerciseStruct>> exerciseMain(HttpSession session) {
  128. List<ExerciseStruct> p = exerciseStructService.main();
  129. return ResponseHelp.success(p);
  130. }
  131. @RequestMapping(value = "/exercise/children", method = RequestMethod.GET)
  132. @ApiOperation(value = "所有练习层级", httpMethod = "GET")
  133. public Response<List<ExerciseStruct>> exerciseChildren(
  134. @RequestParam(required = true) Integer id,
  135. @RequestParam(required = false, defaultValue = "false") boolean children,
  136. HttpSession session) {
  137. List<ExerciseStruct> p = exerciseStructService.children(id, children? 1 : 0);
  138. return ResponseHelp.success(p);
  139. }
  140. @RequestMapping(value = "/exercise/parent", method = RequestMethod.GET)
  141. @ApiOperation(value = "练习层级父级", httpMethod = "GET")
  142. public Response<List<ExerciseStruct>> exerciseParent(
  143. @RequestParam(required = true) Integer id,
  144. HttpSession session) {
  145. List<ExerciseStruct> p = exerciseStructService.parent(id);
  146. return ResponseHelp.success(p);
  147. }
  148. @RequestMapping(value = "/exercise/all", method = RequestMethod.GET)
  149. @ApiOperation(value = "练习层级范围", httpMethod = "GET")
  150. public Response<List<ExerciseStruct>> exerciseRange(HttpSession session) {
  151. List<ExerciseStruct> p = exerciseStructService.all();
  152. return ResponseHelp.success(p);
  153. }
  154. @RequestMapping(value = "/examination/main", method = RequestMethod.GET)
  155. @ApiOperation(value = "所有模考头2层", httpMethod = "GET")
  156. public Response<List<ExaminationStruct>> examinationMain(HttpSession session) {
  157. List<ExaminationStruct> p = examinationStructService.main();
  158. return ResponseHelp.success(p);
  159. }
  160. @RequestMapping(value = "/examination/children", method = RequestMethod.GET)
  161. @ApiOperation(value = "所有模考层级", httpMethod = "GET")
  162. public Response<List<ExaminationStruct>> examinationChildren(
  163. @RequestParam(required = true) Integer id,
  164. @RequestParam(required = false, defaultValue = "false") boolean children,
  165. HttpSession session) {
  166. List<ExaminationStruct> p = examinationStructService.children(id, children ? 1 :0);
  167. return ResponseHelp.success(p);
  168. }
  169. @RequestMapping(value = "/examination/parent", method = RequestMethod.GET)
  170. @ApiOperation(value = "模考层级父级", httpMethod = "GET")
  171. public Response<List<ExaminationStruct>> examinationParent(
  172. @RequestParam(required = true) Integer id,
  173. HttpSession session) {
  174. List<ExaminationStruct> p = examinationStructService.parent(id);
  175. return ResponseHelp.success(p);
  176. }
  177. @RequestMapping(value = "/examination/number", method = RequestMethod.GET)
  178. @ApiOperation(value = "模考题目数", notes = "获取模考题目数", httpMethod = "GET")
  179. public Response<JSONObject> examinationNumber() {
  180. Setting entity = settingService.getByKey(SettingKey.EXAMINATION_TIME);
  181. return ResponseHelp.success(entity.getValue());
  182. }
  183. @RequestMapping(value = "/service", method = RequestMethod.GET)
  184. @ApiOperation(value = "获取服务信息", notes = "获取服务信息", httpMethod = "GET")
  185. public Response<JSONObject> service(@RequestParam(required = true) String service) {
  186. SettingKey key;
  187. switch(ServiceKey.ValueOf(service)){
  188. case TEXTBOOK:
  189. key = SettingKey.SERVICE_TEXTBOOK;
  190. break;
  191. case VIP:
  192. key = SettingKey.SERVICE_VIP;
  193. break;
  194. case QX_CAT:
  195. key = SettingKey.SERVICE_QX_CAT;
  196. break;
  197. default:
  198. throw new ParameterException("服务信息错误");
  199. }
  200. Setting setting = settingService.getByKey(key);
  201. return ResponseHelp.success(setting.getValue());
  202. }
  203. @RequestMapping(value = "/contract", method = RequestMethod.GET)
  204. @ApiOperation(value = "获取合同信息", notes = "获取合同信息", httpMethod = "GET")
  205. public Response<Contract> contract(@RequestParam(required = true) String key) {
  206. Contract contract = contractService.getContract(key);
  207. return ResponseHelp.success(contract);
  208. }
  209. @RequestMapping(value = "/faq/list", method = RequestMethod.GET)
  210. @ApiOperation(value = "faq列表", httpMethod = "GET")
  211. public Response<PageMessage<FaqDto>> listFaq(
  212. @RequestParam(required = false, defaultValue = "1") int page,
  213. @RequestParam(required = false, defaultValue = "100") int size,
  214. @RequestParam(required = true) String channel,
  215. @RequestParam(required = false) String position,
  216. @RequestParam(required = false, defaultValue = "id") String order,
  217. @RequestParam(required = false, defaultValue = "desc") String direction,
  218. HttpSession session) {
  219. Page<Faq> p = faqService.list(page, size, channel, position);
  220. List<FaqDto> pr = Transform.convert(p, FaqDto.class);
  221. Collection userIds = Transform.getIds(p, Faq.class, "userId");
  222. List<User> userList = usersService.select(userIds);
  223. Transform.combine(pr, userList, FaqDto.class, "userId", "user", User.class, "id", UserExtendDto.class);
  224. return ResponseHelp.success(pr, page, size, p.getTotal());
  225. }
  226. @RequestMapping(value = "/comment/list", method = RequestMethod.GET)
  227. @ApiOperation(value = "评论列表", httpMethod = "GET")
  228. public Response<PageMessage<CommentDto>> listComment(
  229. @RequestParam(required = false, defaultValue = "1") int page,
  230. @RequestParam(required = false, defaultValue = "100") int size,
  231. @RequestParam(required = true) String channel,
  232. @RequestParam(required = false) String position,
  233. @RequestParam(required = false, defaultValue = "id") String order,
  234. @RequestParam(required = false, defaultValue = "desc") String direction,
  235. HttpSession session) {
  236. Page<Comment> p = commentService.list(page, size, channel, position);
  237. Collection userIds = Transform.getIds(p, Comment.class, "userId");
  238. List<User> userList = usersService.select(userIds);
  239. commentService.replaceUser(p, userList);
  240. List<CommentDto> pr = Transform.convert(p, CommentDto.class);
  241. return ResponseHelp.success(pr, page, size, p.getTotal());
  242. }
  243. @RequestMapping(value = "/ready_info", method = RequestMethod.GET)
  244. @ApiOperation(value = "获取GetReady信息", notes = "获取GetReady信息", httpMethod = "GET")
  245. public Response<JSONObject> readyRead() {
  246. Setting entity = settingService.getByKey(SettingKey.READY_READ);
  247. JSONObject info = entity.getValue();
  248. List<ReadyArticleCategory> articleCategoryList = readyArticleCategoryService.all();
  249. List<ReadyRoomArea> roomAreaList = readyRoomAreaService.all();
  250. JSONObject dto = new JSONObject();
  251. dto.put("read", info);
  252. dto.put("category", articleCategoryList);
  253. dto.put("area", roomAreaList);
  254. return ResponseHelp.success(dto);
  255. }
  256. @RequestMapping(value = "/read/list", method = RequestMethod.GET)
  257. @ApiOperation(value = "推荐阅读", httpMethod = "GET")
  258. public Response<PageMessage<ReadyRead>> listRead(
  259. @RequestParam(required = false, defaultValue = "1") int page,
  260. @RequestParam(required = false, defaultValue = "100") int size,
  261. @RequestParam(required = true) String plate,
  262. @RequestParam(required = false, defaultValue = "id") String order,
  263. @RequestParam(required = false, defaultValue = "desc") String direction,
  264. HttpSession session) {
  265. Page<ReadyRead> p = readyReadService.list(page, size, plate, order, DirectionStatus.ValueOf(direction));
  266. return ResponseHelp.success(p, page, size, p.getTotal());
  267. }
  268. @RequestMapping(value = "/room/list", method = RequestMethod.GET)
  269. @ApiOperation(value = "考场查询", httpMethod = "GET")
  270. public Response<PageMessage<ReadyRoom>> listRoom(
  271. @RequestParam(required = false, defaultValue = "1") int page,
  272. @RequestParam(required = false, defaultValue = "100") int size,
  273. @RequestParam(required = false) String keyword,
  274. @RequestParam(required = false) Integer areaId,
  275. @RequestParam(required = false, defaultValue = "id") String order,
  276. @RequestParam(required = false, defaultValue = "desc") String direction,
  277. HttpSession session) {
  278. Page<ReadyRoom> p = readyRoomService.list(page, size, keyword, areaId, order, DirectionStatus.ValueOf(direction));
  279. return ResponseHelp.success(p, page, size, p.getTotal());
  280. }
  281. @RequestMapping(value = "/data/all", method = RequestMethod.GET)
  282. @ApiOperation(value = "资料", httpMethod = "GET")
  283. public Response<List<ReadyData>> allData(
  284. @RequestParam(required = true) Boolean isOfficial,
  285. HttpSession session) {
  286. List<ReadyData> p = readyDataService.all(isOfficial);
  287. return ResponseHelp.success(p);
  288. }
  289. }