UserAskController.java 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package com.qxgmat.controller.admin;
  2. import com.github.pagehelper.Page;
  3. import com.nuliji.tools.PageMessage;
  4. import com.nuliji.tools.Response;
  5. import com.nuliji.tools.ResponseHelp;
  6. import com.nuliji.tools.Transform;
  7. import com.qxgmat.data.constants.enums.status.AskStatus;
  8. import com.qxgmat.data.constants.enums.status.DirectionStatus;
  9. import com.qxgmat.data.constants.enums.user.AskTarget;
  10. import com.qxgmat.data.constants.enums.user.MoneyRange;
  11. import com.qxgmat.data.dao.entity.*;
  12. import com.qxgmat.dto.admin.extend.*;
  13. import com.qxgmat.dto.admin.request.UserAskDto;
  14. import com.qxgmat.dto.admin.response.UserAskDetailDto;
  15. import com.qxgmat.dto.admin.response.UserAskListDto;
  16. import com.qxgmat.help.ShiroHelp;
  17. import com.qxgmat.service.ManagerService;
  18. import com.qxgmat.service.UsersService;
  19. import com.qxgmat.service.inline.ManagerLogService;
  20. import com.qxgmat.service.inline.QuestionNoService;
  21. import com.qxgmat.service.inline.QuestionService;
  22. import com.qxgmat.service.inline.UserAskQuestionService;
  23. import io.swagger.annotations.Api;
  24. import io.swagger.annotations.ApiOperation;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.http.MediaType;
  27. import org.springframework.validation.annotation.Validated;
  28. import org.springframework.web.bind.annotation.*;
  29. import javax.servlet.http.HttpServletRequest;
  30. import javax.servlet.http.HttpSession;
  31. import java.util.Collection;
  32. import java.util.Date;
  33. import java.util.List;
  34. @RestController("AdminUserAskController")
  35. @RequestMapping("/admin/user/ask")
  36. @Api(tags = "用户提问接口", description = "用户提问相关", produces = MediaType.APPLICATION_JSON_VALUE)
  37. public class UserAskController {
  38. @Autowired
  39. private ManagerLogService managerLogService;
  40. @Autowired
  41. private ShiroHelp shiroHelp;
  42. @Autowired
  43. private UserAskQuestionService userAskQuestionService;
  44. @Autowired
  45. private QuestionService questionService;
  46. @Autowired
  47. private QuestionNoService questionNoService;
  48. @Autowired
  49. private UsersService usersService;
  50. @Autowired
  51. private ManagerService managerService;
  52. @RequestMapping(value = "/edit", method = RequestMethod.PUT)
  53. @ApiOperation(value = "修改提问信息", httpMethod = "PUT")
  54. public Response<Boolean> edit(@RequestBody @Validated UserAskDto dto, HttpServletRequest request) {
  55. UserAskQuestion entity = Transform.dtoToEntity(dto);
  56. if(!entity.getAnswer().isEmpty()){
  57. entity.setAnswerTime(new Date());
  58. entity.setAnswerStatus(AskStatus.ANSWER.index);
  59. }
  60. Manager manager = shiroHelp.getLoginManager();
  61. entity.setManagerId(manager.getId());
  62. entity = userAskQuestionService.edit(entity);
  63. // 更新回答排序
  64. userAskQuestionService.updateOrder(dto.getOther());
  65. managerLogService.log(request);
  66. return ResponseHelp.success(true);
  67. }
  68. // @RequestMapping(value = "/order", method = RequestMethod.PUT)
  69. // @ApiOperation(value = "修改提问排序", httpMethod = "PUT")
  70. // public Response<Boolean> order(@RequestBody @Validated UserAskOrderDto dto, HttpServletRequest request) {
  71. // userAskQuestionService.order(dto.getId(), dto.getOrder());
  72. // return ResponseHelp.success(true);
  73. // }
  74. @RequestMapping(value = "/detail", method = RequestMethod.GET)
  75. @ApiOperation(value = "提问详情", httpMethod = "GET")
  76. public Response<UserAskDetailDto> detail(@RequestParam int id, HttpServletRequest request) {
  77. UserAskQuestion entity = userAskQuestionService.get(id);
  78. UserAskDetailDto dto = Transform.convert(entity, UserAskDetailDto.class);
  79. if (entity.getManagerId() != null && entity.getManagerId() > 0){
  80. Manager manager = managerService.get(entity.getManagerId());
  81. if (manager != null)
  82. dto.setManager(Transform.convert(manager, ManagerExtendDto.class));
  83. }
  84. User user = usersService.get(entity.getUserId());
  85. dto.setUser(Transform.convert(user, UserExtendDto.class));
  86. Question question = questionService.get(entity.getQuestionId());
  87. dto.setQuestion(Transform.convert(question, QuestionExtendDto.class));
  88. QuestionNo questionNo = questionNoService.get(entity.getQuestionNoId());
  89. dto.setQuestionNo(Transform.convert(questionNo, QuestionNoExtendDto.class));
  90. // 所有回答
  91. List<UserAskQuestion> userAskList = userAskQuestionService.listByQuestion(entity.getQuestionId(), null);
  92. dto.setOthers(Transform.convert(userAskList, UserAskExtendDto.class));
  93. return ResponseHelp.success(dto);
  94. }
  95. @RequestMapping(value = "/list", method = RequestMethod.GET)
  96. @ApiOperation(value = "提问列表", httpMethod = "GET")
  97. public Response<PageMessage<UserAskListDto>> list(
  98. @RequestParam(required = false, defaultValue = "1") int page,
  99. @RequestParam(required = false, defaultValue = "100") int size,
  100. @RequestParam(required = false) String type,
  101. @RequestParam(required = false) Integer category,
  102. @RequestParam(required = false, name = "user_id") Number userId,
  103. @RequestParam(required = false, name = "question_no_id") Number questionNoId,
  104. @RequestParam(required = false, name="target") String target,
  105. @RequestParam(required = false, name="status") Integer status,
  106. @RequestParam(required = false, name="show_status") Integer showStatus,
  107. @RequestParam(required = false, name="money_rang") Integer moneyRang,
  108. @RequestParam(required = false, defaultValue = "id") String order,
  109. @RequestParam(required = false, defaultValue = "desc") String direction,
  110. HttpSession session) {
  111. Page<UserAskQuestion> p = userAskQuestionService.listWithUser(page, size, type, category, userId, questionNoId, AskTarget.ValueOf(target), AskStatus.ValueOf(status), showStatus, MoneyRange.ValueOf(moneyRang), order, DirectionStatus.ValueOf(direction));
  112. List<UserAskListDto> pr = Transform.convert(p, UserAskListDto.class);
  113. // 绑定题目
  114. Collection questionIds = Transform.getIds(p, UserAskQuestion.class, "questionId");
  115. List<Question> questionList = questionService.select(questionIds);
  116. Transform.combine(pr, questionList, UserAskListDto.class, "questionId", "question", Question.class, "id", QuestionExtendDto.class);
  117. // 绑定题目编号
  118. Collection questionNoIds = Transform.getIds(p, UserAskQuestion.class, "questionNoId");
  119. List<QuestionNo> questionNoList = questionNoService.select(questionNoIds);
  120. Transform.combine(pr, questionNoList, UserAskListDto.class, "questionNoId", "questionNo", QuestionNo.class, "id", QuestionNoExtendDto.class);
  121. // 绑定用户
  122. Collection userIds = Transform.getIds(p, UserAskQuestion.class, "userId");
  123. List<User> userList = usersService.select(userIds);
  124. Transform.combine(pr, userList, UserAskListDto.class, "userId", "user", User.class, "id", UserExtendDto.class);
  125. // 绑定管理员
  126. Collection managerIds = Transform.getIds(p, UserAskQuestion.class, "managerId");
  127. List<Manager> managerList = managerService.select(managerIds);
  128. Transform.combine(pr, managerList, UserAskListDto.class, "managerId", "manager", Manager.class, "id", ManagerExtendDto.class);
  129. return ResponseHelp.success(pr, page, size, p.getTotal());
  130. }
  131. }