UserAskQuestionService.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. package com.qxgmat.service.inline;
  2. import com.github.pagehelper.Page;
  3. import com.nuliji.tools.AbstractService;
  4. import com.nuliji.tools.Tools;
  5. import com.nuliji.tools.Transform;
  6. import com.nuliji.tools.exception.ParameterException;
  7. import com.nuliji.tools.exception.SystemException;
  8. import com.nuliji.tools.mybatis.Example;
  9. import com.qxgmat.data.constants.enums.status.AskStatus;
  10. import com.qxgmat.data.constants.enums.status.DirectionStatus;
  11. import com.qxgmat.data.constants.enums.user.AskTarget;
  12. import com.qxgmat.data.constants.enums.user.MoneyRange;
  13. import com.qxgmat.data.dao.UserAskQuestionMapper;
  14. import com.qxgmat.data.dao.entity.UserAskQuestion;
  15. import com.qxgmat.data.relation.UserAskQuestionRelationMapper;
  16. import org.slf4j.Logger;
  17. import org.slf4j.LoggerFactory;
  18. import org.springframework.stereotype.Service;
  19. import org.springframework.transaction.annotation.Transactional;
  20. import javax.annotation.Resource;
  21. import java.util.Collection;
  22. import java.util.HashMap;
  23. import java.util.List;
  24. import java.util.Map;
  25. @Service
  26. public class UserAskQuestionService extends AbstractService {
  27. private static final Logger logger = LoggerFactory.getLogger(UserAskQuestionService.class);
  28. @Resource
  29. private UserAskQuestionMapper userAskQuestionMapper;
  30. @Resource
  31. private UserAskQuestionRelationMapper userAskQuestionRelationMapper;
  32. public Page<UserAskQuestion> listExercise(int page, int size, Integer userId, String keyword, String[] questionTypes, Integer[] structIds, AskStatus status, String startTime, String endTime, String order){
  33. Page<UserAskQuestion> p = page(
  34. ()-> userAskQuestionRelationMapper.listExercise(userId, keyword, questionTypes, structIds, status != null ? status.index:null, startTime, endTime, order)
  35. , page, size);
  36. Collection ids = Transform.getIds(p, UserAskQuestion.class, "id");
  37. Transform.replace(p, select(ids), UserAskQuestion.class, "id");
  38. return p;
  39. }
  40. public Page<UserAskQuestion> listExamination(int page, int size, Integer userId, String keyword, String[] questionTypes, Integer[] structIds, Integer libraryId, String year, AskStatus status, String startTime, String endTime, String order){
  41. Page<UserAskQuestion> p = page(
  42. ()-> userAskQuestionRelationMapper.listExamination(userId, keyword, questionTypes, structIds, libraryId, year, status != null ? status.index:null, startTime, endTime, order)
  43. , page, size);
  44. Collection ids = Transform.getIds(p, UserAskQuestion.class, "id");
  45. Transform.replace(p, select(ids), UserAskQuestion.class, "id");
  46. return p;
  47. }
  48. private Map<String, String> adminMap = new HashMap<String, String>(){{
  49. put("", "uaq");
  50. }};
  51. public Page<UserAskQuestion> listAdmin(int page, int size, String askModule, String questionType, String questionModule, Number userId, Number questionNoId, AskTarget target, AskStatus status, Integer showStatus, MoneyRange moneyRange, Boolean hasRecord, String startTime, String endTime, String order, DirectionStatus direction){
  52. String tk = target != null ? target.key : "";
  53. Integer statusIndex = status != null ? status.index : null;
  54. Integer max = moneyRange != null ? moneyRange.max == Integer.MAX_VALUE ? null : moneyRange.max : null;
  55. Integer min = moneyRange != null ? moneyRange.min : null;
  56. if(order == null || order.isEmpty()){
  57. order = "id";
  58. }
  59. if(adminMap.containsKey(order)){
  60. order = adminMap.get(order)+".`"+Tools.underscoreName(order)+"`";
  61. }else{
  62. order = adminMap.get("")+".`"+Tools.underscoreName(order)+"`";
  63. }
  64. if (direction == null){
  65. direction = DirectionStatus.DESC;
  66. }
  67. String finalOrder = order;
  68. DirectionStatus finalDirection = direction;
  69. Page<UserAskQuestion> p = page(
  70. ()-> userAskQuestionRelationMapper.listAdmin(askModule, questionType, questionModule, userId, questionNoId, tk, statusIndex, showStatus, min, max, hasRecord, startTime, endTime, finalOrder, finalDirection.key)
  71. , page, size);
  72. Collection ids = Transform.getIds(p, UserAskQuestion.class, "id");
  73. Transform.replace(p, select(ids), UserAskQuestion.class, "id");
  74. return p;
  75. }
  76. public List<UserAskQuestion> listByQuestion(Number questionId, Boolean showStatus){
  77. Example example = new Example(UserAskQuestion.class);
  78. example.and(
  79. example.createCriteria()
  80. .andEqualTo("questionId", questionId)
  81. );
  82. if (showStatus != null)
  83. example.and(
  84. example.createCriteria()
  85. .andEqualTo("showStatus", showStatus?1:0)
  86. .andEqualTo("answerStatus", 1)
  87. );
  88. example.orderBy("sort").desc();
  89. return select(userAskQuestionMapper, example);
  90. }
  91. /**
  92. * 根据列表顺序全部更新排序:从大到小
  93. * @param ids
  94. */
  95. @Transactional
  96. public void updateOrder(Integer[] ids){
  97. int sort = ids.length;
  98. List<UserAskQuestion> userAskQuestionList = select(userAskQuestionMapper, ids);
  99. Map userAskQuestionMap = Transform.getMap(userAskQuestionList, UserAskQuestion.class, "id");
  100. for (Integer id : ids){
  101. sort -= 1;
  102. UserAskQuestion userAskQuestion = (UserAskQuestion)userAskQuestionMap.get(id);
  103. if (userAskQuestion == null) continue;
  104. if (userAskQuestion.getSort() == sort) continue;
  105. update(userAskQuestionMapper, UserAskQuestion.builder()
  106. .id(id)
  107. .sort(sort)
  108. .showStatus(1)
  109. .build()
  110. );
  111. }
  112. }
  113. public UserAskQuestion add(UserAskQuestion message){
  114. int result = insert(userAskQuestionMapper, message);
  115. message = one(userAskQuestionMapper, message.getId());
  116. if(message == null){
  117. throw new SystemException("提问添加失败");
  118. }
  119. return message;
  120. }
  121. public UserAskQuestion edit(UserAskQuestion message){
  122. UserAskQuestion in = one(userAskQuestionMapper, message.getId());
  123. if(in == null){
  124. throw new ParameterException("提问不存在");
  125. }
  126. int result = update(userAskQuestionMapper, message);
  127. return message;
  128. }
  129. public boolean delete(Number id){
  130. UserAskQuestion in = one(userAskQuestionMapper, id);
  131. if(in == null){
  132. throw new ParameterException("提问不存在");
  133. }
  134. int result = delete(userAskQuestionMapper, id);
  135. return result > 0;
  136. }
  137. public UserAskQuestion get(Number id){
  138. UserAskQuestion in = one(userAskQuestionMapper, id);
  139. if(in == null){
  140. throw new ParameterException("提问不存在");
  141. }
  142. return in;
  143. }
  144. public Page<UserAskQuestion> select(int page, int pageSize){
  145. return select(userAskQuestionMapper, page, pageSize);
  146. }
  147. public Page<UserAskQuestion> select(Integer[] ids){
  148. return page(()->select(userAskQuestionMapper, ids), 1, ids.length);
  149. }
  150. public List<UserAskQuestion> select(Collection ids){
  151. return select(userAskQuestionMapper, ids);
  152. }
  153. }