SettingController.java 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872
  1. package com.qxgmat.controller.admin;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.github.pagehelper.Page;
  4. import com.nuliji.tools.*;
  5. import com.nuliji.tools.exception.ParameterException;
  6. import com.qxgmat.data.constants.enums.MessageCategory;
  7. import com.qxgmat.data.constants.enums.MessageMethod;
  8. import com.qxgmat.data.constants.enums.SettingKey;
  9. import com.qxgmat.data.constants.enums.status.AnswerStatus;
  10. import com.qxgmat.data.constants.enums.status.DirectionStatus;
  11. import com.qxgmat.data.constants.enums.user.MoneyRange;
  12. import com.qxgmat.data.dao.entity.*;
  13. import com.qxgmat.dto.admin.extend.InfoExtendDto;
  14. import com.qxgmat.dto.admin.extend.UserExtendDto;
  15. import com.qxgmat.dto.admin.request.*;
  16. import com.qxgmat.dto.admin.response.CommentInfoDto;
  17. import com.qxgmat.dto.admin.response.FaqInfoDto;
  18. import com.qxgmat.help.ShiroHelp;
  19. import com.qxgmat.service.UsersService;
  20. import com.qxgmat.service.extend.MessageExtendService;
  21. import com.qxgmat.service.extend.OrderFlowService;
  22. import com.qxgmat.service.inline.*;
  23. import io.swagger.annotations.Api;
  24. import io.swagger.annotations.ApiOperation;
  25. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  26. import org.apache.poi.ss.usermodel.Cell;
  27. import org.apache.poi.ss.usermodel.Row;
  28. import org.apache.poi.ss.usermodel.Sheet;
  29. import org.apache.poi.ss.usermodel.Workbook;
  30. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  31. import org.slf4j.Logger;
  32. import org.slf4j.LoggerFactory;
  33. import org.springframework.beans.factory.annotation.Autowired;
  34. import org.springframework.http.MediaType;
  35. import org.springframework.validation.annotation.Validated;
  36. import org.springframework.web.bind.annotation.*;
  37. import org.springframework.web.multipart.MultipartFile;
  38. import javax.servlet.http.HttpServletRequest;
  39. import javax.servlet.http.HttpSession;
  40. import java.io.IOException;
  41. import java.util.ArrayList;
  42. import java.util.Collection;
  43. import java.util.Date;
  44. import java.util.List;
  45. import java.util.stream.Collectors;
  46. @RestController("AdminSettingController")
  47. @RequestMapping("/admin/setting")
  48. @Api(tags = "配置信息接口", description = "全局独立配置设置", produces = MediaType.APPLICATION_JSON_VALUE)
  49. public class SettingController {
  50. private static final Logger logger = LoggerFactory.getLogger(SettingController.class);
  51. @Autowired
  52. private ShiroHelp shiroHelp;
  53. @Autowired
  54. private ManagerLogService managerLogService;
  55. @Autowired
  56. private AdService adService;
  57. @Autowired
  58. private SettingService settingService;
  59. @Autowired
  60. private RankService rankService;
  61. @Autowired
  62. private ContractService contractService;
  63. @Autowired
  64. private CommentService commentService;
  65. @Autowired
  66. private FaqService faqService;
  67. @Autowired
  68. private MessageTemplateService messageTemplateService;
  69. @Autowired
  70. private MessageExtendService messageExtendService;
  71. @Autowired
  72. private UsersService usersService;
  73. @Autowired
  74. private CourseService courseService;
  75. @Autowired
  76. private CourseDataService courseDataService;
  77. @Autowired
  78. private OrderFlowService orderFlowService;
  79. @RequestMapping(value = "/index", method = RequestMethod.PUT)
  80. @ApiOperation(value = "修改首页配置", httpMethod = "PUT")
  81. private Response<Boolean> editIndex(@RequestBody @Validated JSONObject dto){
  82. Setting entity = settingService.getByKey(SettingKey.INDEX);
  83. entity.setValue(dto);
  84. settingService.edit(entity);
  85. return ResponseHelp.success(true);
  86. }
  87. @RequestMapping(value = "/index", method = RequestMethod.GET)
  88. @ApiOperation(value = "获取首页配置", httpMethod = "GET")
  89. private Response<JSONObject> getIndex(){
  90. Setting entity = settingService.getByKey(SettingKey.INDEX);
  91. logger.debug("{}", entity);
  92. return ResponseHelp.success(entity.getValue());
  93. }
  94. @RequestMapping(value = "/base", method = RequestMethod.PUT)
  95. @ApiOperation(value = "修改基础配置", httpMethod = "PUT")
  96. private Response<Boolean> editBase(@RequestBody @Validated JSONObject dto){
  97. Setting entity = settingService.getByKey(SettingKey.BASE);
  98. entity.setValue(dto);
  99. settingService.edit(entity);
  100. return ResponseHelp.success(true);
  101. }
  102. @RequestMapping(value = "/base", method = RequestMethod.GET)
  103. @ApiOperation(value = "获取基础配置", httpMethod = "GET")
  104. private Response<JSONObject> getBase(){
  105. Setting entity = settingService.getByKey(SettingKey.BASE);
  106. logger.debug("{}", entity);
  107. return ResponseHelp.success(entity.getValue());
  108. }
  109. @RequestMapping(value = "/place", method = RequestMethod.PUT)
  110. @ApiOperation(value = "修改考点设置", httpMethod = "PUT")
  111. private Response<Boolean> editPlace(@RequestBody @Validated JSONObject dto){
  112. Setting entity = settingService.getByKey(SettingKey.PLACE);
  113. entity.setValue(dto);
  114. settingService.edit(entity);
  115. return ResponseHelp.success(true);
  116. }
  117. @RequestMapping(value = "/place", method = RequestMethod.GET)
  118. @ApiOperation(value = "获取考点配置", httpMethod = "GET")
  119. private Response<JSONObject> getPlace(){
  120. Setting entity = settingService.getByKey(SettingKey.PLACE);
  121. return ResponseHelp.success(entity.getValue());
  122. }
  123. @RequestMapping(value = "/sentence", method = RequestMethod.PUT)
  124. @ApiOperation(value = "修改长难句设置", httpMethod = "PUT")
  125. private Response<Boolean> editSentence(@RequestBody @Validated JSONObject dto){
  126. Setting entity = settingService.getByKey(SettingKey.SENTENCE);
  127. entity.setValue(dto);
  128. settingService.edit(entity);
  129. return ResponseHelp.success(true);
  130. }
  131. @RequestMapping(value = "/sentence", method = RequestMethod.GET)
  132. @ApiOperation(value = "获取长难句配置", httpMethod = "GET")
  133. private Response<JSONObject> getSentence(){
  134. Setting entity = settingService.getByKey(SettingKey.SENTENCE);
  135. return ResponseHelp.success(entity.getValue());
  136. }
  137. @RequestMapping(value = "/exercise_time", method = RequestMethod.PUT)
  138. @ApiOperation(value = "修改做题时间设置", httpMethod = "PUT")
  139. private Response<Boolean> editExerciseTime(@RequestBody @Validated JSONObject dto){
  140. Setting entity = settingService.getByKey(SettingKey.EXERCISE_TIME);
  141. entity.setValue(dto);
  142. settingService.edit(entity);
  143. return ResponseHelp.success(true);
  144. }
  145. @RequestMapping(value = "/exercise_time", method = RequestMethod.GET)
  146. @ApiOperation(value = "获取做题时间配置", httpMethod = "GET")
  147. private Response<JSONObject> getExerciseTime(){
  148. Setting entity = settingService.getByKey(SettingKey.EXERCISE_TIME);
  149. return ResponseHelp.success(entity.getValue());
  150. }
  151. @RequestMapping(value = "/examination_time", method = RequestMethod.PUT)
  152. @ApiOperation(value = "修改做题时间设置", httpMethod = "PUT")
  153. private Response<Boolean> editExaminationTime(@RequestBody @Validated JSONObject dto){
  154. Setting entity = settingService.getByKey(SettingKey.EXAMINATION_TIME);
  155. entity.setValue(dto);
  156. settingService.edit(entity);
  157. return ResponseHelp.success(true);
  158. }
  159. @RequestMapping(value = "/examination_time", method = RequestMethod.GET)
  160. @ApiOperation(value = "获取做题时间配置", httpMethod = "GET")
  161. private Response<JSONObject> getExaminationTime(){
  162. Setting entity = settingService.getByKey(SettingKey.EXAMINATION_TIME);
  163. return ResponseHelp.success(entity.getValue());
  164. }
  165. @RequestMapping(value = "/filter_time", method = RequestMethod.PUT)
  166. @ApiOperation(value = "修改剔除时间设置", httpMethod = "PUT")
  167. private Response<Boolean> editFilterTime(@RequestBody @Validated JSONObject dto){
  168. Setting entity = settingService.getByKey(SettingKey.FILTER_TIME);
  169. entity.setValue(dto);
  170. settingService.edit(entity);
  171. return ResponseHelp.success(true);
  172. }
  173. @RequestMapping(value = "/filter_time", method = RequestMethod.GET)
  174. @ApiOperation(value = "获取剔除时间配置", httpMethod = "GET")
  175. private Response<JSONObject> getFilterTime(){
  176. Setting entity = settingService.getByKey(SettingKey.FILTER_TIME);
  177. return ResponseHelp.success(entity.getValue());
  178. }
  179. @RequestMapping(value = "/exercise_paper_auto", method = RequestMethod.PUT)
  180. @ApiOperation(value = "修改自动组卷时间设置", httpMethod = "PUT")
  181. private Response<Boolean> editExercisePaperAuto(@RequestBody @Validated JSONObject dto){
  182. Setting entity = settingService.getByKey(SettingKey.EXERCISE_PAPER_AUTO);
  183. entity.setValue(dto);
  184. settingService.edit(entity);
  185. return ResponseHelp.success(true);
  186. }
  187. @RequestMapping(value = "/exercise_paper_auto", method = RequestMethod.GET)
  188. @ApiOperation(value = "获取自动组卷时间配置", httpMethod = "GET")
  189. private Response<JSONObject> getExercisePaperAuto(){
  190. Setting entity = settingService.getByKey(SettingKey.EXERCISE_PAPER_AUTO);
  191. return ResponseHelp.success(entity.getValue());
  192. }
  193. @RequestMapping(value = "/sentence_time", method = RequestMethod.PUT)
  194. @ApiOperation(value = "修改长难句时间设置", httpMethod = "PUT")
  195. private Response<Boolean> editSentenceTime(@RequestBody @Validated JSONObject dto){
  196. Setting entity = settingService.getByKey(SettingKey.SENTENCE_TIME);
  197. entity.setValue(dto);
  198. settingService.edit(entity);
  199. return ResponseHelp.success(true);
  200. }
  201. @RequestMapping(value = "/sentence_time", method = RequestMethod.GET)
  202. @ApiOperation(value = "获取长难句时间配置", httpMethod = "GET")
  203. private Response<JSONObject> getSentenceTime(){
  204. Setting entity = settingService.getByKey(SettingKey.SENTENCE_TIME);
  205. return ResponseHelp.success(entity.getValue());
  206. }
  207. @RequestMapping(value = "/textbook_time", method = RequestMethod.PUT)
  208. @ApiOperation(value = "修改机经时间设置", httpMethod = "PUT")
  209. private Response<Boolean> editTextbookTime(@RequestBody @Validated JSONObject dto){
  210. Setting entity = settingService.getByKey(SettingKey.TEXTBOOK_TIME);
  211. entity.setValue(dto);
  212. settingService.edit(entity);
  213. return ResponseHelp.success(true);
  214. }
  215. @RequestMapping(value = "/textbook_time", method = RequestMethod.GET)
  216. @ApiOperation(value = "获取机经时间配置", httpMethod = "GET")
  217. private Response<JSONObject> getTextbookTime(){
  218. Setting entity = settingService.getByKey(SettingKey.TEXTBOOK_TIME);
  219. return ResponseHelp.success(entity.getValue());
  220. }
  221. @RequestMapping(value = "/textbook_config", method = RequestMethod.PUT)
  222. @ApiOperation(value = "修改机经设置", httpMethod = "PUT")
  223. private Response<Boolean> editTextbookConfig(@RequestBody @Validated JSONObject dto){
  224. Setting entity = settingService.getByKey(SettingKey.TEXTBOOK_CONFIG);
  225. entity.setValue(dto);
  226. settingService.edit(entity);
  227. return ResponseHelp.success(true);
  228. }
  229. @RequestMapping(value = "/textbook_config", method = RequestMethod.GET)
  230. @ApiOperation(value = "获取机经配置", httpMethod = "GET")
  231. private Response<JSONObject> getTextbookConfig(){
  232. Setting entity = settingService.getByKey(SettingKey.TEXTBOOK_CONFIG);
  233. return ResponseHelp.success(entity.getValue());
  234. }
  235. @RequestMapping(value = "/score_switch", method = RequestMethod.PUT)
  236. @ApiOperation(value = "修改分数开关", httpMethod = "PUT")
  237. private Response<Boolean> editScoreSwitch(@RequestBody @Validated JSONObject dto){
  238. Setting entity = settingService.getByKey(SettingKey.SCORE_SWITCH);
  239. entity.setValue(dto);
  240. settingService.edit(entity);
  241. return ResponseHelp.success(true);
  242. }
  243. @RequestMapping(value = "/score_switch", method = RequestMethod.GET)
  244. @ApiOperation(value = "获取分数开关", httpMethod = "GET")
  245. private Response<JSONObject> getScoreSwitch(){
  246. Setting entity = settingService.getByKey(SettingKey.SCORE_SWITCH);
  247. return ResponseHelp.success(entity.getValue());
  248. }
  249. @RequestMapping(value = "/service_vip", method = RequestMethod.PUT)
  250. @ApiOperation(value = "修改Vip服务", httpMethod = "PUT")
  251. private Response<Boolean> editServiceVip(@RequestBody @Validated JSONObject dto){
  252. Setting entity = settingService.getByKey(SettingKey.SERVICE_VIP);
  253. entity.setValue(dto);
  254. settingService.edit(entity);
  255. return ResponseHelp.success(true);
  256. }
  257. @RequestMapping(value = "/service_vip", method = RequestMethod.GET)
  258. @ApiOperation(value = "获取Vip服务", httpMethod = "GET")
  259. private Response<JSONObject> getServiceVip(){
  260. Setting entity = settingService.getByKey(SettingKey.SERVICE_VIP);
  261. return ResponseHelp.success(entity.getValue());
  262. }
  263. @RequestMapping(value = "/service_textbook", method = RequestMethod.PUT)
  264. @ApiOperation(value = "修改千行CAT服务", httpMethod = "PUT")
  265. private Response<Boolean> editServiceTextbook(@RequestBody @Validated JSONObject dto){
  266. Setting entity = settingService.getByKey(SettingKey.SERVICE_TEXTBOOK);
  267. entity.setValue(dto);
  268. settingService.edit(entity);
  269. return ResponseHelp.success(true);
  270. }
  271. @RequestMapping(value = "/service_textbook", method = RequestMethod.GET)
  272. @ApiOperation(value = "获取千行CAT服务", httpMethod = "GET")
  273. private Response<JSONObject> getServiceTextbook(){
  274. Setting entity = settingService.getByKey(SettingKey.SERVICE_TEXTBOOK);
  275. return ResponseHelp.success(entity.getValue());
  276. }
  277. @RequestMapping(value = "/service_qx_cat", method = RequestMethod.PUT)
  278. @ApiOperation(value = "修改千行CAT服务", httpMethod = "PUT")
  279. private Response<Boolean> editServiceQXCat(@RequestBody @Validated JSONObject dto){
  280. Setting entity = settingService.getByKey(SettingKey.SERVICE_QX_CAT);
  281. entity.setValue(dto);
  282. settingService.edit(entity);
  283. return ResponseHelp.success(true);
  284. }
  285. @RequestMapping(value = "/service_qx_cat", method = RequestMethod.GET)
  286. @ApiOperation(value = "获取千行CAT服务", httpMethod = "GET")
  287. private Response<JSONObject> getServiceQXCat(){
  288. Setting entity = settingService.getByKey(SettingKey.SERVICE_QX_CAT);
  289. return ResponseHelp.success(entity.getValue());
  290. }
  291. @RequestMapping(value = "/course_index", method = RequestMethod.PUT)
  292. @ApiOperation(value = "修改课程首页", httpMethod = "PUT")
  293. private Response<Boolean> editCourseIndex(@RequestBody @Validated JSONObject dto){
  294. Setting entity = settingService.getByKey(SettingKey.COURSE_INDEX);
  295. entity.setValue(dto);
  296. settingService.edit(entity);
  297. return ResponseHelp.success(true);
  298. }
  299. @RequestMapping(value = "/course_index", method = RequestMethod.GET)
  300. @ApiOperation(value = "获取课程首页", httpMethod = "GET")
  301. private Response<JSONObject> getCourseIndex(){
  302. Setting entity = settingService.getByKey(SettingKey.COURSE_INDEX);
  303. return ResponseHelp.success(entity.getValue());
  304. }
  305. @RequestMapping(value = "/promote", method = RequestMethod.PUT)
  306. @ApiOperation(value = "修改促销", httpMethod = "PUT")
  307. private Response<Boolean> editPromote(@RequestBody @Validated JSONObject dto){
  308. Setting entity = settingService.getByKey(SettingKey.PROMOTE);
  309. entity.setValue(dto);
  310. settingService.edit(entity);
  311. return ResponseHelp.success(true);
  312. }
  313. @RequestMapping(value = "/promote", method = RequestMethod.GET)
  314. @ApiOperation(value = "获取课程促销", httpMethod = "GET")
  315. private Response<JSONObject> getPromote(){
  316. Setting entity = settingService.getByKey(SettingKey.PROMOTE);
  317. return ResponseHelp.success(entity.getValue());
  318. }
  319. @RequestMapping(value = "/prepare_info", method = RequestMethod.PUT)
  320. @ApiOperation(value = "修改备考信息", httpMethod = "PUT")
  321. private Response<Boolean> editPrepareInfo(@RequestBody @Validated JSONObject dto){
  322. Setting entity = settingService.getByKey(SettingKey.PREPARE_INFO);
  323. entity.setValue(dto);
  324. settingService.edit(entity);
  325. return ResponseHelp.success(true);
  326. }
  327. @RequestMapping(value = "/prepare_info", method = RequestMethod.GET)
  328. @ApiOperation(value = "获取备考信息", httpMethod = "GET")
  329. private Response<JSONObject> getPrepareInfo(){
  330. Setting entity = settingService.getByKey(SettingKey.PREPARE_INFO);
  331. return ResponseHelp.success(entity.getValue());
  332. }
  333. @RequestMapping(value = "/experience_info", method = RequestMethod.PUT)
  334. @ApiOperation(value = "修改心经信息", httpMethod = "PUT")
  335. private Response<Boolean> editExperienceInfo(@RequestBody @Validated JSONObject dto){
  336. Setting entity = settingService.getByKey(SettingKey.EXPERIENCE_INFO);
  337. entity.setValue(dto);
  338. settingService.edit(entity);
  339. return ResponseHelp.success(true);
  340. }
  341. @RequestMapping(value = "/experience_info", method = RequestMethod.GET)
  342. @ApiOperation(value = "获取心经信息", httpMethod = "GET")
  343. private Response<JSONObject> getExperienceInfo(){
  344. Setting entity = settingService.getByKey(SettingKey.EXPERIENCE_INFO);
  345. return ResponseHelp.success(entity.getValue());
  346. }
  347. @RequestMapping(value = "/sentence_info", method = RequestMethod.PUT)
  348. @ApiOperation(value = "修改长难句信息", httpMethod = "PUT")
  349. private Response<Boolean> editSentenceInfo(@RequestBody @Validated JSONObject dto){
  350. Setting entity = settingService.getByKey(SettingKey.SENTENCE_INFO);
  351. entity.setValue(dto);
  352. settingService.edit(entity);
  353. return ResponseHelp.success(true);
  354. }
  355. @RequestMapping(value = "/sentence_info", method = RequestMethod.GET)
  356. @ApiOperation(value = "获取长难句信息", httpMethod = "GET")
  357. private Response<JSONObject> getSentenceInfo(){
  358. Setting entity = settingService.getByKey(SettingKey.SENTENCE_INFO);
  359. return ResponseHelp.success(entity.getValue());
  360. }
  361. @RequestMapping(value = "/wechat_info", method = RequestMethod.PUT)
  362. @ApiOperation(value = "修改长难句信息", httpMethod = "PUT")
  363. private Response<Boolean> editWechatInfo(@RequestBody @Validated JSONObject dto){
  364. Setting entity = settingService.getByKey(SettingKey.WECHAT_INFO);
  365. entity.setValue(dto);
  366. settingService.edit(entity);
  367. return ResponseHelp.success(true);
  368. }
  369. @RequestMapping(value = "/wechat_info", method = RequestMethod.GET)
  370. @ApiOperation(value = "获取长难句信息", httpMethod = "GET")
  371. private Response<JSONObject> getWechatInfo(){
  372. Setting entity = settingService.getByKey(SettingKey.WECHAT_INFO);
  373. return ResponseHelp.success(entity.getValue());
  374. }
  375. @RequestMapping(value = "/tips", method = RequestMethod.PUT)
  376. @ApiOperation(value = "修改结构说明", httpMethod = "PUT")
  377. private Response<Boolean> editTips(@RequestBody @Validated JSONObject dto){
  378. Setting entity = settingService.getByKey(SettingKey.TIPS);
  379. entity.setValue(dto);
  380. settingService.edit(entity);
  381. return ResponseHelp.success(true);
  382. }
  383. @RequestMapping(value = "/tips", method = RequestMethod.GET)
  384. @ApiOperation(value = "获取结构说明", httpMethod = "GET")
  385. private Response<JSONObject> getTips(){
  386. Setting entity = settingService.getByKey(SettingKey.TIPS);
  387. return ResponseHelp.success(entity.getValue());
  388. }
  389. @RequestMapping(value = "/ready_read", method = RequestMethod.PUT)
  390. @ApiOperation(value = "修改推荐阅读设置", httpMethod = "PUT")
  391. private Response<Boolean> editReadyRead(@RequestBody @Validated JSONObject dto){
  392. Setting entity = settingService.getByKey(SettingKey.READY_READ);
  393. entity.setValue(dto);
  394. settingService.edit(entity);
  395. return ResponseHelp.success(true);
  396. }
  397. @RequestMapping(value = "/ready_read", method = RequestMethod.GET)
  398. @ApiOperation(value = "获取推荐阅读配置", httpMethod = "GET")
  399. private Response<JSONObject> getReadyRead(){
  400. Setting entity = settingService.getByKey(SettingKey.READY_READ);
  401. return ResponseHelp.success(entity.getValue());
  402. }
  403. @RequestMapping(value = "/comment/add", method = RequestMethod.POST)
  404. @ApiOperation(value = "添加评价", httpMethod = "POST")
  405. private Response<Boolean> addComment(@RequestBody @Validated CommentDto dto){
  406. Comment entity = Transform.dtoToEntity(dto);
  407. entity.setIsSystem(1);
  408. commentService.add(entity);
  409. return ResponseHelp.success(true);
  410. }
  411. @RequestMapping(value = "/comment/edit", method = RequestMethod.PUT)
  412. @ApiOperation(value = "修改评价", httpMethod = "PUT")
  413. private Response<Boolean> editComment(@RequestBody @Validated CommentDto dto){
  414. Comment entity = Transform.dtoToEntity(dto);
  415. commentService.edit(entity);
  416. return ResponseHelp.success(true);
  417. }
  418. @RequestMapping(value = "/comment/delete", method = RequestMethod.DELETE)
  419. @ApiOperation(value = "删除评价", httpMethod = "DELETE")
  420. private Response<Boolean> deleteComment(@RequestParam int id){
  421. commentService.delete(id);
  422. return ResponseHelp.success(true);
  423. }
  424. @RequestMapping(value = "/comment/order", method = RequestMethod.PUT)
  425. @ApiOperation(value = "修改评价排序", httpMethod = "PUT")
  426. private Response<Boolean> orderComment(@RequestBody @Validated CommentOrderDto dto){
  427. commentService.updateOrder(dto.getIds());
  428. return ResponseHelp.success(true);
  429. }
  430. @RequestMapping(value = "/comment/list", method = RequestMethod.GET)
  431. @ApiOperation(value = "获取评价列表", httpMethod = "GET")
  432. private Response<PageMessage<CommentInfoDto>> listComment(
  433. @RequestParam(required = false, defaultValue = "1") int page,
  434. @RequestParam(required = false, defaultValue = "100") int size,
  435. @RequestParam(required = false) Boolean user,
  436. @RequestParam(required = false) String channel,
  437. @RequestParam(required = false) String position,
  438. @RequestParam(required = false) Integer userId,
  439. @RequestParam(required = false) Boolean isSpecial,
  440. @RequestParam(required = false) Boolean isShow,
  441. @RequestParam(required = false) Integer moneyRang,
  442. @RequestParam(required = false, defaultValue = "id") String order,
  443. @RequestParam(required = false, defaultValue = "desc") String direction
  444. ){
  445. Page<Comment> p = commentService.listAdmin(page, size, user, channel, position, userId, isSpecial, isShow, MoneyRange.ValueOf(moneyRang), order, DirectionStatus.ValueOf(direction));
  446. List<CommentInfoDto> pr = Transform.convert(p, CommentInfoDto.class);
  447. // 绑定用户
  448. Collection userIds = Transform.getIds(p, Comment.class, "userId");
  449. List<User> userList = usersService.select(userIds);
  450. Transform.combine(pr, userList, CommentInfoDto.class, "userId", "user", User.class, "id", UserExtendDto.class);
  451. // 绑定课程
  452. List<CommentInfoDto> prCourse = pr.stream().filter((row)-> row.getChannel().equals("course-video")).collect(Collectors.toList());
  453. Collection courseIds = Transform.getIds(prCourse, CommentInfoDto.class, "position");
  454. List<Course> courseList = courseService.select(courseIds);
  455. Transform.combine(prCourse, courseList, CommentInfoDto.class, "position", "positionDetail", Course.class, "id", InfoExtendDto.class);
  456. // 绑定资料
  457. List<CommentInfoDto> prData = pr.stream().filter((row)-> row.getChannel().equals("course_data")).collect(Collectors.toList());
  458. Collection dataIds = Transform.getIds(prData, CommentInfoDto.class, "position");
  459. List<CourseData> dataList = courseDataService.select(dataIds);
  460. Transform.combine(prData, dataList, CommentInfoDto.class, "position", "positionDetail", CourseData.class, "id", InfoExtendDto.class);
  461. return ResponseHelp.success(pr, page, size, p.getTotal());
  462. }
  463. @RequestMapping(value = "/faq/add", method = RequestMethod.POST)
  464. @ApiOperation(value = "添加faq", httpMethod = "POST")
  465. private Response<Boolean> addFaq(@RequestBody @Validated FaqDto dto){
  466. Faq entity = Transform.dtoToEntity(dto);
  467. entity.setIsSystem(1);
  468. if(!entity.getAnswer().isEmpty()){
  469. entity.setAnswerTime(new Date());
  470. entity.setAnswerStatus(AnswerStatus.ANSWER.index);
  471. Manager manager = shiroHelp.getLoginManager();
  472. entity.setManagerId(manager.getId());
  473. }
  474. faqService.add(entity);
  475. return ResponseHelp.success(true);
  476. }
  477. @RequestMapping(value = "/faq/edit", method = RequestMethod.PUT)
  478. @ApiOperation(value = "修改faq", httpMethod = "PUT")
  479. private Response<Boolean> editFaq(@RequestBody @Validated FaqDto dto){
  480. Faq entity = Transform.dtoToEntity(dto);
  481. Faq in = faqService.get(entity.getId());
  482. // 回复
  483. if(in.getAnswerStatus() == 0){
  484. entity.setAnswerTime(new Date());
  485. Manager manager = shiroHelp.getLoginManager();
  486. entity.setManagerId(manager.getId());
  487. entity.setAnswerStatus(dto.getStatus());
  488. in.setAnswerStatus(entity.getAnswerStatus());
  489. in.setAnswer(entity.getAnswer());
  490. if(in.getIsSystem() == 0){
  491. in.setAnswerStatus(dto.getStatus());
  492. User user = usersService.get(in.getUserId());
  493. UserOrderRecord record = null;
  494. messageExtendService.sendFaqCallback(user, in);
  495. }
  496. }
  497. faqService.edit(entity);
  498. return ResponseHelp.success(true);
  499. }
  500. @RequestMapping(value = "/faq/order", method = RequestMethod.PUT)
  501. @ApiOperation(value = "修改faq排序", httpMethod = "PUT")
  502. private Response<Boolean> orderFaq(@RequestBody @Validated FaqOrderDto dto){
  503. faqService.updateOrder(dto.getIds());
  504. return ResponseHelp.success(true);
  505. }
  506. @RequestMapping(value = "/faq/delete", method = RequestMethod.DELETE)
  507. @ApiOperation(value = "删除评价", httpMethod = "DELETE")
  508. private Response<Boolean> deleteFaq(@RequestParam int id){
  509. faqService.delete(id);
  510. return ResponseHelp.success(true);
  511. }
  512. @RequestMapping(value = "/faq/list", method = RequestMethod.GET)
  513. @ApiOperation(value = "获取faq列表", httpMethod = "GET")
  514. private Response<PageMessage<FaqInfoDto>> listFaq(
  515. @RequestParam(required = false, defaultValue = "1") int page,
  516. @RequestParam(required = false, defaultValue = "100") int size,
  517. @RequestParam(required = false) Boolean user,
  518. @RequestParam(required = false) String channel,
  519. @RequestParam(required = false) String position,
  520. @RequestParam(required = false) Integer userId,
  521. @RequestParam(required = false) Integer answerStatus,
  522. @RequestParam(required = false) Boolean isShow,
  523. @RequestParam(required = false) Boolean isSpecial,
  524. @RequestParam(required = false) Integer moneyRang,
  525. @RequestParam(required = false, defaultValue = "id") String order,
  526. @RequestParam(required = false, defaultValue = "desc") String direction
  527. ){
  528. Page<Faq> p = faqService.listAdmin(page, size, user, channel, position, userId, answerStatus, isSpecial, isShow, MoneyRange.ValueOf(moneyRang), order, DirectionStatus.ValueOf(direction));
  529. List<FaqInfoDto> pr = Transform.convert(p, FaqInfoDto.class);
  530. // 绑定用户
  531. Collection userIds = Transform.getIds(p, Faq.class, "userId");
  532. List<User> userList = usersService.select(userIds);
  533. Transform.combine(pr, userList, FaqInfoDto.class, "userId", "user", User.class, "id", UserExtendDto.class);
  534. // 绑定position
  535. // 绑定课程
  536. List<FaqInfoDto> prCourse = pr.stream().filter((row)-> row.getChannel().equals("course-video")).collect(Collectors.toList());
  537. Collection courseIds = Transform.getIds(prCourse, FaqInfoDto.class, "position");
  538. List<Course> courseList = courseService.select(courseIds);
  539. Transform.combine(prCourse, courseList, FaqInfoDto.class, "position", "positionDetail", Course.class, "id", InfoExtendDto.class);
  540. // 绑定资料
  541. List<FaqInfoDto> prData = pr.stream().filter((row)-> row.getChannel().equals("course_data")).collect(Collectors.toList());
  542. Collection dataIds = Transform.getIds(prData, FaqInfoDto.class, "position");
  543. List<CourseData> dataList = courseDataService.select(dataIds);
  544. Transform.combine(prData, dataList, FaqInfoDto.class, "position", "positionDetail", CourseData.class, "id", InfoExtendDto.class);
  545. return ResponseHelp.success(pr, page, size, p.getTotal());
  546. }
  547. @RequestMapping(value = "/message/add", method = RequestMethod.POST)
  548. @ApiOperation(value = "添加消息", httpMethod = "POST")
  549. private Response<Boolean> addMessage(@RequestBody @Validated MessageTemplateDto dto){
  550. MessageTemplate entity = Transform.dtoToEntity(dto);
  551. messageTemplateService.add(entity);
  552. return ResponseHelp.success(true);
  553. }
  554. @RequestMapping(value = "/message/edit", method = RequestMethod.PUT)
  555. @ApiOperation(value = "修改消息", httpMethod = "PUT")
  556. private Response<Boolean> editMessage(@RequestBody @Validated MessageTemplateDto dto){
  557. MessageTemplate entity = Transform.dtoToEntity(dto);
  558. messageTemplateService.edit(entity);
  559. return ResponseHelp.success(true);
  560. }
  561. @RequestMapping(value = "/message/delete", method = RequestMethod.DELETE)
  562. @ApiOperation(value = "删除消息", httpMethod = "DELETE")
  563. private Response<Boolean> deleteMessage(@RequestParam int id){
  564. MessageTemplate in = messageTemplateService.get(id);
  565. if(!in.getMessageCategory().equals(MessageCategory.CUSTOM.key)){
  566. throw new ParameterException("不允许删除非自定义消息模版");
  567. }
  568. messageTemplateService.delete(id);
  569. return ResponseHelp.success(true);
  570. }
  571. @RequestMapping(value = "/message/detail", method = RequestMethod.GET)
  572. @ApiOperation(value = "获取消息", httpMethod = "GET")
  573. public Response<MessageTemplate> detailMessage(@RequestParam int id, HttpSession session) {
  574. MessageTemplate entity = messageTemplateService.get(id);
  575. return ResponseHelp.success(entity);
  576. }
  577. @RequestMapping(value = "/message/list", method = RequestMethod.GET)
  578. @ApiOperation(value = "获取消息列表", httpMethod = "GET")
  579. private Response<PageMessage<MessageTemplate>> listMessage(
  580. @RequestParam(required = false, defaultValue = "1") int page,
  581. @RequestParam(required = false, defaultValue = "100") int size,
  582. @RequestParam(required = false) String messageCategory,
  583. @RequestParam(required = false) String messageMethod,
  584. @RequestParam(required = false) Boolean needCustom,
  585. @RequestParam(required = false, defaultValue = "id") String order,
  586. @RequestParam(required = false, defaultValue = "desc") String direction
  587. ){
  588. Page<MessageTemplate> p = messageTemplateService.listAdmin(page, size, MessageCategory.ValueOf(messageCategory), MessageMethod.ValueOf(messageMethod), needCustom,order, DirectionStatus.ValueOf(direction));
  589. return ResponseHelp.success(p, page, size, p.getTotal());
  590. }
  591. @RequestMapping(value = "/ad/add", method = RequestMethod.POST)
  592. @ApiOperation(value = "添加广告", httpMethod = "POST")
  593. public Response<Ad> addAd(@RequestBody @Validated AdDto dto, HttpServletRequest request) {
  594. Ad entity = Transform.dtoToEntity(dto);
  595. entity = adService.addAd(entity);
  596. managerLogService.log(request);
  597. return ResponseHelp.success(entity);
  598. }
  599. @RequestMapping(value = "/ad/edit", method = RequestMethod.PUT)
  600. @ApiOperation(value = "修改广告", httpMethod = "PUT")
  601. public Response<Boolean> editAd(@RequestBody @Validated AdDto dto, HttpServletRequest request) {
  602. Ad entity = Transform.dtoToEntity(dto);
  603. entity = adService.editAd(entity);
  604. managerLogService.log(request);
  605. return ResponseHelp.success(true);
  606. }
  607. @RequestMapping(value = "/ad/delete", method = RequestMethod.DELETE)
  608. @ApiOperation(value = "删除广告", httpMethod = "DELETE")
  609. public Response<Boolean> deleteAd(@RequestParam int id, HttpServletRequest request) {
  610. adService.delete(id);
  611. managerLogService.log(request);
  612. return ResponseHelp.success(true);
  613. }
  614. @RequestMapping(value = "/ad/detail", method = RequestMethod.GET)
  615. @ApiOperation(value = "获取广告", httpMethod = "GET")
  616. public Response<Ad> detailAd(@RequestParam int id, HttpSession session) {
  617. Ad entity = adService.get(id);
  618. return ResponseHelp.success(entity);
  619. }
  620. @RequestMapping(value = "/ad/list", method = RequestMethod.GET)
  621. @ApiOperation(value = "广告列表", httpMethod = "GET")
  622. public Response<PageMessage<Ad>> listAd(
  623. @RequestParam(required = false, defaultValue = "1") int page,
  624. @RequestParam(required = false, defaultValue = "100") int size,
  625. @RequestParam(required = false) String channel,
  626. @RequestParam(required = false) String position,
  627. @RequestParam(required = false, defaultValue = "id") String order,
  628. @RequestParam(required = false, defaultValue = "desc") String direction,
  629. HttpSession session) {
  630. Page<Ad> p = adService.listAdmin(page, size, channel, position, order, DirectionStatus.ValueOf(direction));
  631. return ResponseHelp.success(p, page, size, p.getTotal());
  632. }
  633. @RequestMapping(value = "/contract/edit", method = RequestMethod.PUT)
  634. @ApiOperation(value = "修改合同", httpMethod = "PUT")
  635. private Response<Boolean> editContract(@RequestBody @Validated ContractDto dto){
  636. Contract entity = Transform.dtoToEntity(dto);
  637. contractService.editContract(entity);
  638. return ResponseHelp.success(true);
  639. }
  640. @RequestMapping(value = "/contract/detail", method = RequestMethod.GET)
  641. @ApiOperation(value = "修改排行", httpMethod = "GET")
  642. private Response<Contract> getContract(String key){
  643. Contract in = contractService.getContract(key);
  644. return ResponseHelp.success(in);
  645. }
  646. @RequestMapping(value = "/contract/all", method = RequestMethod.GET)
  647. @ApiOperation(value = "获取排行设置", httpMethod = "GET")
  648. private Response<List<Contract>> allContract(){
  649. List<Contract> contractList = contractService.all();
  650. return ResponseHelp.success(contractList);
  651. }
  652. @RequestMapping(value = "/rank/add", method = RequestMethod.POST)
  653. @ApiOperation(value = "添加排行", httpMethod = "POST")
  654. private Response<Boolean> addRank(@RequestBody @Validated RankDto dto){
  655. Rank entity = Transform.dtoToEntity(dto);
  656. rankService.add(entity);
  657. return ResponseHelp.success(true);
  658. }
  659. @RequestMapping(value = "/rank/edit", method = RequestMethod.PUT)
  660. @ApiOperation(value = "修改排行", httpMethod = "PUT")
  661. private Response<Boolean> editRank(@RequestBody @Validated RankDto dto){
  662. Rank entity = Transform.dtoToEntity(dto);
  663. rankService.edit(entity);
  664. return ResponseHelp.success(true);
  665. }
  666. @RequestMapping(value = "/rank/delete", method = RequestMethod.DELETE)
  667. @ApiOperation(value = "删除排行", httpMethod = "DELETE")
  668. private Response<Boolean> deleteRank(@RequestParam int id){
  669. rankService.delete(id);
  670. return ResponseHelp.success(true);
  671. }
  672. @RequestMapping(value = "/rank/list", method = RequestMethod.GET)
  673. @ApiOperation(value = "获取排行设置", httpMethod = "GET")
  674. private Response<List<Rank>> getRank(){
  675. List<Rank> rankList = rankService.all();
  676. return ResponseHelp.success(rankList);
  677. }
  678. @RequestMapping(value = "/rank/import", method = RequestMethod.POST)
  679. @ApiOperation(value = "导入排行数据", httpMethod = "POST")
  680. private Response<Integer> importRank(@RequestParam("file") MultipartFile multipartFile) throws IOException {
  681. // 删除所有排行数据, 并导入excel数据
  682. // 读取文件
  683. // InputStream is = new FileInputStream();
  684. // 将文件流解析成 POI 文档
  685. Workbook wb =null;
  686. Row row = null;
  687. Cell cell = null;
  688. if (multipartFile.getOriginalFilename().contains(".xlsx")){
  689. // 再将 POI 文档解析成 Excel 工作簿
  690. wb = new XSSFWorkbook(multipartFile.getInputStream());
  691. }else{
  692. // 再将 POI 文档解析成 Excel 工作簿
  693. wb = new HSSFWorkbook(multipartFile.getInputStream());
  694. }
  695. // 得到第 1 个工作簿
  696. Sheet sheet = wb.getSheetAt(0);
  697. int totalColumns = 8; // total_score, total_rank, quant_score, quant_rank, verbal_score, verbal_rank
  698. // 得到最后一行的坐标
  699. Integer lastRowNum = sheet.getLastRowNum();
  700. System.out.println("lastRowNum => " + lastRowNum);
  701. List<Rank> rankList = new ArrayList<>();
  702. Rank rank = null;
  703. // 从第 2 行开始读
  704. for(int i=1;i<=lastRowNum;i++){
  705. row = sheet.getRow(i);
  706. rank = new Rank();
  707. for(int j=0;j<totalColumns;j++){
  708. cell = row.getCell(j);
  709. if(cell!=null){
  710. switch(j){
  711. case 0:
  712. rank.setTotalScore((int) cell.getNumericCellValue());
  713. break;
  714. case 1:
  715. rank.setTotalRank((int) cell.getNumericCellValue());
  716. break;
  717. case 2:
  718. rank.setQuantScore((int) cell.getNumericCellValue());
  719. break;
  720. case 3:
  721. rank.setQuantRank((int) cell.getNumericCellValue());
  722. break;
  723. case 4:
  724. rank.setVerbalScore((int) cell.getNumericCellValue());
  725. break;
  726. case 5:
  727. rank.setVerbalRank((int) cell.getNumericCellValue());
  728. break;
  729. case 6:
  730. rank.setIrScore((int) cell.getNumericCellValue());
  731. break;
  732. case 7:
  733. rank.setIrRank((int) cell.getNumericCellValue());
  734. break;
  735. }
  736. }else{
  737. throw new ParameterException(String.format("%d行%d列数据为空", i, j));
  738. }
  739. }
  740. rankList.add(rank);
  741. }
  742. rankService.replaceAll(rankList);
  743. return ResponseHelp.success(rankList.size());
  744. }
  745. }