UserAskQuestionService.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package com.qxgmat.service.inline;
  2. import com.github.pagehelper.Page;
  3. import com.nuliji.tools.AbstractService;
  4. import com.nuliji.tools.Transform;
  5. import com.nuliji.tools.exception.ParameterException;
  6. import com.nuliji.tools.exception.SystemException;
  7. import com.nuliji.tools.mybatis.Example;
  8. import com.qxgmat.data.constants.enums.status.AskStatus;
  9. import com.qxgmat.data.constants.enums.status.DirectionStatus;
  10. import com.qxgmat.data.constants.enums.user.AskTarget;
  11. import com.qxgmat.data.constants.enums.user.MoneyRange;
  12. import com.qxgmat.data.dao.UserAskQuestionMapper;
  13. import com.qxgmat.data.dao.entity.QuestionNo;
  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.List;
  23. import java.util.Map;
  24. @Service
  25. public class UserAskQuestionService extends AbstractService {
  26. private static final Logger logger = LoggerFactory.getLogger(UserAskQuestionService.class);
  27. @Resource
  28. private UserAskQuestionMapper userAskQuestionMapper;
  29. @Resource
  30. private UserAskQuestionRelationMapper userAskQuestionRelationMapper;
  31. public Page<UserAskQuestion> listWithUser(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 order, DirectionStatus direction){
  32. String tk = target != null ? target.key : "";
  33. Integer statusIndex = status != null ? status.index : null;
  34. Integer max = moneyRange != null ? moneyRange.max == Integer.MAX_VALUE ? null : moneyRange.max : null;
  35. Integer min = moneyRange != null ? moneyRange.min : null;
  36. if(order == null || order.isEmpty()) order = "id";
  37. if (direction == null){
  38. direction = DirectionStatus.DESC;
  39. }
  40. String finalOrder = order;
  41. DirectionStatus finalDirection = direction;
  42. Page<UserAskQuestion> p = page(
  43. ()-> userAskQuestionRelationMapper.listWithUser(askModule, questionType, questionModule, userId, questionNoId, tk, statusIndex, showStatus, min, max, hasRecord, finalOrder, finalDirection.key)
  44. , page, size);
  45. Collection ids = Transform.getIds(p, UserAskQuestion.class, "id");
  46. Transform.replace(p, select(ids), UserAskQuestion.class, "id");
  47. return p;
  48. }
  49. public List<UserAskQuestion> listByQuestion(Number questionId, Boolean showStatus){
  50. Example example = new Example(UserAskQuestion.class);
  51. example.and(
  52. example.createCriteria()
  53. .andEqualTo("questionId", questionId)
  54. );
  55. if (showStatus != null)
  56. example.and(
  57. example.createCriteria()
  58. .andEqualTo("showStatus", showStatus?1:0)
  59. .andEqualTo("answerStatus", 1)
  60. );
  61. example.orderBy("order").desc();
  62. return select(userAskQuestionMapper, example);
  63. }
  64. /**
  65. * 根据列表顺序全部更新排序:从大到小
  66. * @param ids
  67. */
  68. @Transactional
  69. public void updateOrder(Integer[] ids){
  70. int order = ids.length;
  71. List<UserAskQuestion> userAskQuestionList = select(userAskQuestionMapper, ids);
  72. Map userAskQuestionMap = Transform.getMap(userAskQuestionList, UserAskQuestion.class, "id");
  73. for (Integer id : ids){
  74. UserAskQuestion userAskQuestion = (UserAskQuestion)userAskQuestionMap.get(id);
  75. if (userAskQuestion == null) continue;
  76. if (userAskQuestion.getOrder() == order) continue;
  77. update(userAskQuestionMapper, UserAskQuestion.builder()
  78. .id(id)
  79. .order(order)
  80. .showStatus(1)
  81. .build()
  82. );
  83. order -= 1;
  84. }
  85. }
  86. public UserAskQuestion add(UserAskQuestion message){
  87. int result = insert(userAskQuestionMapper, message);
  88. message = one(userAskQuestionMapper, message.getId());
  89. if(message == null){
  90. throw new SystemException("提问添加失败");
  91. }
  92. return message;
  93. }
  94. public UserAskQuestion edit(UserAskQuestion message){
  95. UserAskQuestion in = one(userAskQuestionMapper, message.getId());
  96. if(in == null){
  97. throw new ParameterException("提问不存在");
  98. }
  99. int result = update(userAskQuestionMapper, message);
  100. return message;
  101. }
  102. public boolean delete(Number id){
  103. UserAskQuestion in = one(userAskQuestionMapper, id);
  104. if(in == null){
  105. throw new ParameterException("提问不存在");
  106. }
  107. int result = delete(userAskQuestionMapper, id);
  108. return result > 0;
  109. }
  110. public UserAskQuestion get(Number id){
  111. UserAskQuestion in = one(userAskQuestionMapper, id);
  112. if(in == null){
  113. throw new ParameterException("提问不存在");
  114. }
  115. return in;
  116. }
  117. public Page<UserAskQuestion> select(int page, int pageSize){
  118. return select(userAskQuestionMapper, page, pageSize);
  119. }
  120. public Page<UserAskQuestion> select(Integer[] ids){
  121. return page(()->select(userAskQuestionMapper, ids), 1, ids.length);
  122. }
  123. public List<UserAskQuestion> select(Collection ids){
  124. return select(userAskQuestionMapper, ids);
  125. }
  126. }