BaseController.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  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.qxgmat.data.constants.enums.ServiceKey;
  10. import com.qxgmat.data.constants.enums.SettingKey;
  11. import com.qxgmat.data.constants.enums.module.ChannelModule;
  12. import com.qxgmat.data.dao.entity.*;
  13. import com.qxgmat.dto.extend.UserExtendDto;
  14. import com.qxgmat.dto.response.CommentDto;
  15. import com.qxgmat.dto.response.FaqDto;
  16. import com.qxgmat.service.UsersService;
  17. import com.qxgmat.service.inline.*;
  18. import io.swagger.annotations.Api;
  19. import io.swagger.annotations.ApiOperation;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.http.MediaType;
  22. import org.springframework.web.bind.annotation.RequestMapping;
  23. import org.springframework.web.bind.annotation.RequestMethod;
  24. import org.springframework.web.bind.annotation.RequestParam;
  25. import org.springframework.web.bind.annotation.RestController;
  26. import javax.servlet.http.HttpSession;
  27. import java.util.Collection;
  28. import java.util.HashMap;
  29. import java.util.List;
  30. import java.util.Map;
  31. @RestController
  32. @RequestMapping("/api/base")
  33. @Api(tags = "基本接口", description = "全站基本数据接口", produces = MediaType.APPLICATION_JSON_VALUE)
  34. public class BaseController {
  35. @Autowired
  36. private SettingService settingService;
  37. @Autowired
  38. private AdService adService;
  39. @Autowired
  40. private RankService rankService;
  41. @Autowired
  42. private ExerciseStructService exerciseStructService;
  43. @Autowired
  44. private ExaminationStructService examinationStructService;
  45. @Autowired
  46. private FaqService faqService;
  47. @Autowired
  48. private CommentService commentService;
  49. @Autowired
  50. private UsersService usersService;
  51. @RequestMapping(value = "/index", method = RequestMethod.GET)
  52. @ApiOperation(value = "获取首页配置", httpMethod = "GET")
  53. private Response<JSONObject> index(){
  54. Setting entity = settingService.getByKey(SettingKey.INDEX);
  55. return ResponseHelp.success(entity.getValue());
  56. }
  57. @RequestMapping(value = "/ad", method = RequestMethod.GET)
  58. @ApiOperation(value = "获取广告", notes = "获取广告列表", httpMethod = "GET")
  59. public Response<List<Ad>> ad() {
  60. List<Ad> adList = adService.all();
  61. return ResponseHelp.success(adList);
  62. }
  63. @RequestMapping(value = "/tips", method = RequestMethod.GET)
  64. @ApiOperation(value = "获取提示信息", notes = "获取提示信息", httpMethod = "GET")
  65. public Response<Map<String, String>> tips(@RequestParam(required = true) String[] position) {
  66. Setting entity = settingService.getByKey(SettingKey.TIPS);
  67. JSONObject value = entity.getValue();
  68. Map<String, String> map = new HashMap<>();
  69. for (String p: position) {
  70. map.put(p, value.getString(p));
  71. }
  72. return ResponseHelp.success(map);
  73. }
  74. @RequestMapping(value = "/sentence", method = RequestMethod.GET)
  75. @ApiOperation(value = "获取长难句信息", notes = "获取长难句信息", httpMethod = "GET")
  76. public Response<JSONObject> sentence() {
  77. Setting entity = settingService.getByKey(SettingKey.SENTENCE_INFO);
  78. return ResponseHelp.success(entity.getValue());
  79. }
  80. @RequestMapping(value = "/experience", method = RequestMethod.GET)
  81. @ApiOperation(value = "获取心经信息", notes = "获取心经信息", httpMethod = "GET")
  82. public Response<JSONObject> experience() {
  83. Setting entity = settingService.getByKey(SettingKey.EXPERIENCE_INFO);
  84. return ResponseHelp.success(entity.getValue());
  85. }
  86. @RequestMapping(value = "/score", method = RequestMethod.GET)
  87. @ApiOperation(value = "考分计算", notes = "获取考分排行信息", httpMethod = "GET")
  88. public Response<Rank> score(
  89. @RequestParam(required = true) Number total,
  90. @RequestParam(required = true) Number quant
  91. ) {
  92. Rank rank = rankService.compute(total, quant);
  93. return ResponseHelp.success(rank);
  94. }
  95. @RequestMapping(value = "/exercise/main", method = RequestMethod.GET)
  96. @ApiOperation(value = "所有练习头2层", httpMethod = "GET")
  97. public Response<List<ExerciseStruct>> exerciseMain(HttpSession session) {
  98. List<ExerciseStruct> p = exerciseStructService.main();
  99. return ResponseHelp.success(p);
  100. }
  101. @RequestMapping(value = "/exercise/children", method = RequestMethod.GET)
  102. @ApiOperation(value = "所有练习层级", httpMethod = "GET")
  103. public Response<List<ExerciseStruct>> exerciseChildren(
  104. @RequestParam(required = true) Integer id,
  105. @RequestParam(required = false, defaultValue = "false") boolean children,
  106. HttpSession session) {
  107. List<ExerciseStruct> p = exerciseStructService.children(id, children? 1 : 0);
  108. return ResponseHelp.success(p);
  109. }
  110. @RequestMapping(value = "/exercise/parent", method = RequestMethod.GET)
  111. @ApiOperation(value = "练习层级父级", httpMethod = "GET")
  112. public Response<List<ExerciseStruct>> exerciseParent(
  113. @RequestParam(required = true) Integer id,
  114. HttpSession session) {
  115. List<ExerciseStruct> p = exerciseStructService.parent(id);
  116. return ResponseHelp.success(p);
  117. }
  118. @RequestMapping(value = "/examination/main", method = RequestMethod.GET)
  119. @ApiOperation(value = "所有模考头2层", httpMethod = "GET")
  120. public Response<List<ExaminationStruct>> examinationMain(HttpSession session) {
  121. List<ExaminationStruct> p = examinationStructService.main();
  122. return ResponseHelp.success(p);
  123. }
  124. @RequestMapping(value = "/examination/children", method = RequestMethod.GET)
  125. @ApiOperation(value = "所有模考层级", httpMethod = "GET")
  126. public Response<List<ExaminationStruct>> examinationChildren(
  127. @RequestParam(required = true) Integer id,
  128. @RequestParam(required = false, defaultValue = "false") boolean children,
  129. HttpSession session) {
  130. List<ExaminationStruct> p = examinationStructService.children(id, children ? 1 :0);
  131. return ResponseHelp.success(p);
  132. }
  133. @RequestMapping(value = "/examination/parent", method = RequestMethod.GET)
  134. @ApiOperation(value = "模考层级父级", httpMethod = "GET")
  135. public Response<List<ExaminationStruct>> examinationParent(
  136. @RequestParam(required = true) Integer id,
  137. HttpSession session) {
  138. List<ExaminationStruct> p = examinationStructService.parent(id);
  139. return ResponseHelp.success(p);
  140. }
  141. @RequestMapping(value = "/examination/number", method = RequestMethod.GET)
  142. @ApiOperation(value = "模考题目数", notes = "获取模考题目数", httpMethod = "GET")
  143. public Response<JSONObject> examinationNumber() {
  144. Setting entity = settingService.getByKey(SettingKey.EXAMINATION_TIME);
  145. return ResponseHelp.success(entity.getValue());
  146. }
  147. @RequestMapping(value = "/service", method = RequestMethod.GET)
  148. @ApiOperation(value = "获取服务信息", notes = "获取服务信息", httpMethod = "GET")
  149. public Response<JSONObject> service(@RequestParam(required = true) String service) {
  150. SettingKey key;
  151. switch(ServiceKey.ValueOf(service)){
  152. case TEXTBOOK:
  153. key = SettingKey.SERVICE_TEXTBOOK;
  154. break;
  155. case VIP:
  156. key = SettingKey.SERVICE_VIP;
  157. break;
  158. case QX_CAT:
  159. key = SettingKey.SERVICE_QX_CAT;
  160. break;
  161. default:
  162. throw new ParameterException("服务信息错误");
  163. }
  164. Setting setting = settingService.getByKey(key);
  165. return ResponseHelp.success(setting.getValue());
  166. }
  167. @RequestMapping(value = "/faq/list", method = RequestMethod.GET)
  168. @ApiOperation(value = "faq列表", httpMethod = "GET")
  169. public Response<PageMessage<FaqDto>> listFaq(
  170. @RequestParam(required = false, defaultValue = "1") int page,
  171. @RequestParam(required = false, defaultValue = "100") int size,
  172. @RequestParam(required = true) String channel,
  173. @RequestParam(required = true) String position,
  174. @RequestParam(required = false, defaultValue = "id") String order,
  175. @RequestParam(required = false, defaultValue = "desc") String direction,
  176. HttpSession session) {
  177. Page<Faq> p = faqService.list(page, size, ChannelModule.ValueOf(channel), position);
  178. List<FaqDto> pr = Transform.convert(p, FaqDto.class);
  179. Collection userIds = Transform.getIds(p, Faq.class, "userId");
  180. List<User> userList = usersService.select(userIds);
  181. Transform.combine(pr, userList, FaqDto.class, "userId", "user", User.class, "id", UserExtendDto.class);
  182. return ResponseHelp.success(pr, page, size, p.getTotal());
  183. }
  184. @RequestMapping(value = "/comment/list", method = RequestMethod.GET)
  185. @ApiOperation(value = "faq列表", httpMethod = "GET")
  186. public Response<PageMessage<CommentDto>> listComment(
  187. @RequestParam(required = false, defaultValue = "1") int page,
  188. @RequestParam(required = false, defaultValue = "100") int size,
  189. @RequestParam(required = true) String channel,
  190. @RequestParam(required = true) String position,
  191. @RequestParam(required = false, defaultValue = "id") String order,
  192. @RequestParam(required = false, defaultValue = "desc") String direction,
  193. HttpSession session) {
  194. Page<Comment> p = commentService.list(page, size, ChannelModule.ValueOf(channel), position);
  195. List<CommentDto> pr = Transform.convert(p, CommentDto.class);
  196. Collection userIds = Transform.getIds(p, Comment.class, "userId");
  197. List<User> userList = usersService.select(userIds);
  198. Transform.combine(pr, userList, CommentDto.class, "userId", "user", User.class, "id", UserExtendDto.class);
  199. return ResponseHelp.success(pr, page, size, p.getTotal());
  200. }
  201. }