SettingController.java 38 KB

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