猫妈狗爸伴宠师小程序后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

291 lines
14 KiB

5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
3 months ago
3 months ago
5 months ago
5 months ago
5 months ago
  1. package com.ruoyi.model.controller;
  2. import java.io.IOException;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.stream.Collectors;
  6. import javax.servlet.http.HttpServletResponse;
  7. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  8. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  9. import com.ruoyi.common.core.sms.AliyunSmsUtils;
  10. import com.ruoyi.common.utils.SmsUtils;
  11. import com.ruoyi.common.utils.StringUtils;
  12. import com.ruoyi.model.domain.*;
  13. import com.ruoyi.model.mapper.AppletAnswerBaseMapper;
  14. import com.ruoyi.model.mapper.AppletAnswerTrainMapper;
  15. import com.ruoyi.model.mapper.AppletQuestionMapper;
  16. import com.ruoyi.model.service.*;
  17. import org.springframework.security.access.prepost.PreAuthorize;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.web.bind.annotation.GetMapping;
  20. import org.springframework.web.bind.annotation.PostMapping;
  21. import org.springframework.web.bind.annotation.PutMapping;
  22. import org.springframework.web.bind.annotation.DeleteMapping;
  23. import org.springframework.web.bind.annotation.PathVariable;
  24. import org.springframework.web.bind.annotation.RequestBody;
  25. import org.springframework.web.bind.annotation.RequestMapping;
  26. import org.springframework.web.bind.annotation.RestController;
  27. import com.ruoyi.common.annotation.Log;
  28. import com.ruoyi.common.core.controller.BaseController;
  29. import com.ruoyi.common.core.domain.AjaxResult;
  30. import com.ruoyi.common.enums.BusinessType;
  31. import com.ruoyi.common.utils.poi.ExcelUtil;
  32. import com.ruoyi.common.core.page.TableDataInfo;
  33. /**
  34. * 伴宠师认证Controller
  35. *
  36. * @author ruoyi
  37. * @date 2025-03-27
  38. */
  39. @RestController
  40. @RequestMapping("/model/AppletUsersTeacher")
  41. public class AppletUsersTeacherController extends BaseController
  42. {
  43. @Autowired
  44. private IAppletUsersTeacherService appletUsersTeacherService;
  45. @Autowired
  46. private IAppUsersService appUsersService;
  47. @Autowired
  48. private AppletAnswerBaseMapper appletAnswerBaseMapper;
  49. @Autowired
  50. private AppletAnswerTrainMapper appletAnswerTrainMapper;
  51. @Autowired
  52. private AppletQuestionMapper appletQuestionMapper;
  53. /**
  54. * 查询伴宠师认证列表原方法已注释
  55. */
  56. // @PreAuthorize("@ss.hasPermi('model:AppletUsersTeacher:list')")
  57. // @GetMapping("/list")
  58. // public TableDataInfo list(AppletUsersTeacher appletUsersTeacher, String answerStatus)
  59. // {
  60. // if (StringUtils.isNotBlank(answerStatus)){
  61. // appletUsersTeacher.setAnswerStatus(answerStatus);
  62. //
  63. // // 获取培训类型的题目ID
  64. // LambdaQueryWrapper<AppletQuestion> questionWrapper = new LambdaQueryWrapper<>();
  65. // questionWrapper.eq(AppletQuestion::getType, "培训");
  66. // List<AppletQuestion> questions = appletQuestionMapper.selectList(questionWrapper);
  67. // List<Long> questionIds = questions.stream().map(AppletQuestion::getId).collect(Collectors.toList());
  68. //
  69. // if (!questionIds.isEmpty()) {
  70. // // 获取基础答题的用户ID
  71. // QueryWrapper<AppletAnswerBase> baseWrapper = new QueryWrapper<>();
  72. // baseWrapper.in("question_id", questionIds);
  73. // List<AppletAnswerBase> baseAnswers = appletAnswerBaseMapper.selectList(baseWrapper);
  74. // List<Long> baseUserIds = baseAnswers.stream().map(AppletAnswerBase::getUserId).distinct().collect(Collectors.toList());
  75. //
  76. // // 获取培训答题的用户ID
  77. // QueryWrapper<AppletAnswerTrain> trainWrapper = new QueryWrapper<>();
  78. // trainWrapper.in("question_id", questionIds);
  79. // List<AppletAnswerTrain> trainAnswers = appletAnswerTrainMapper.selectList(trainWrapper);
  80. // List<Long> trainUserIds = trainAnswers.stream().map(AppletAnswerTrain::getUserId).distinct().collect(Collectors.toList());
  81. //
  82. // List<Long> userIds = new ArrayList<>();
  83. // if ("1".equals(answerStatus)) {
  84. // // 已完成答题:取交集(同时在基础答题和培训答题中的用户)
  85. // userIds = baseUserIds.stream()
  86. // .filter(trainUserIds::contains)
  87. // .collect(Collectors.toList());
  88. // } else if ("0".equals(answerStatus)) {
  89. // // 未完成答题:取已完成答题的用户ID,用于NOT IN查询
  90. // userIds = baseUserIds.stream()
  91. // .filter(trainUserIds::contains)
  92. // .collect(Collectors.toList());
  93. // }
  94. //
  95. // appletUsersTeacher.setUserIds(userIds);
  96. // }
  97. // }
  98. //
  99. // startPage();
  100. // List<AppletUsersTeacher> list = appletUsersTeacherService.selectAppletUsersTeacherList(appletUsersTeacher);
  101. // //获取用户信息
  102. //// List<AppletUsersTeacher> listVo = new ArrayList<>();
  103. //// for (AppletUsersTeacher teacher : list) {
  104. ////
  105. //// if (StringUtils.isNotBlank(answerStatus)){
  106. ////
  107. //// int i = count + count1;
  108. //// if (i > 0 && "1".equals(answerStatus) ||
  109. //// i == 0 && "0".equals(answerStatus)){
  110. //// listVo.add(teacher);
  111. //// }
  112. //// } else {
  113. //// listVo.add(teacher);
  114. //// }
  115. ////
  116. //// AppUsers appUsers = appUsersService.selectAppUsersByUserId(teacher.getUserId());
  117. //// if(appUsers != null){
  118. //// teacher.setUserName(appUsers.getUserName());
  119. //// }
  120. ////
  121. //// }
  122. // return getDataTable(list);
  123. // }
  124. /**
  125. * 查询伴宠师认证列表使用MyBatis Plus
  126. */
  127. @PreAuthorize("@ss.hasPermi('model:AppletUsersTeacher:list')")
  128. @GetMapping("/list")
  129. public TableDataInfo list(AppletUsersTeacher appletUsersTeacher, String answerStatus)
  130. {
  131. // 构建查询条件
  132. LambdaQueryWrapper<AppletUsersTeacher> queryWrapper = new LambdaQueryWrapper<>();
  133. // 基本查询条件
  134. queryWrapper.eq(appletUsersTeacher.getUserId() != null, AppletUsersTeacher::getUserId, appletUsersTeacher.getUserId())
  135. .like(StringUtils.isNotBlank(appletUsersTeacher.getName()), AppletUsersTeacher::getName, appletUsersTeacher.getName())
  136. .like(StringUtils.isNotBlank(appletUsersTeacher.getIdCard()), AppletUsersTeacher::getIdCard, appletUsersTeacher.getIdCard())
  137. .eq(appletUsersTeacher.getSex() != null, AppletUsersTeacher::getSex, appletUsersTeacher.getSex())
  138. .like(StringUtils.isNotBlank(appletUsersTeacher.getPhone()), AppletUsersTeacher::getPhone, appletUsersTeacher.getPhone())
  139. .eq(StringUtils.isNotBlank(appletUsersTeacher.getExperience()), AppletUsersTeacher::getExperience, appletUsersTeacher.getExperience())
  140. .eq(appletUsersTeacher.getIsHave() != null, AppletUsersTeacher::getIsHave, appletUsersTeacher.getIsHave())
  141. .eq(appletUsersTeacher.getPetType() != null, AppletUsersTeacher::getPetType, appletUsersTeacher.getPetType())
  142. .eq(appletUsersTeacher.getStatus() != null, AppletUsersTeacher::getStatus, appletUsersTeacher.getStatus())
  143. .eq(StringUtils.isNotBlank(appletUsersTeacher.getImages()), AppletUsersTeacher::getImages, appletUsersTeacher.getImages())
  144. .eq(StringUtils.isNotBlank(appletUsersTeacher.getArea()), AppletUsersTeacher::getArea, appletUsersTeacher.getArea())
  145. .eq(StringUtils.isNotBlank(appletUsersTeacher.getAddress()), AppletUsersTeacher::getAddress, appletUsersTeacher.getAddress())
  146. .eq(StringUtils.isNotBlank(appletUsersTeacher.getLongitude()), AppletUsersTeacher::getLongitude, appletUsersTeacher.getLongitude())
  147. .eq(StringUtils.isNotBlank(appletUsersTeacher.getLatitude()), AppletUsersTeacher::getLatitude, appletUsersTeacher.getLatitude())
  148. .eq(appletUsersTeacher.getAge() != null, AppletUsersTeacher::getAge, appletUsersTeacher.getAge())
  149. .eq(StringUtils.isNotBlank(appletUsersTeacher.getLicense()), AppletUsersTeacher::getLicense, appletUsersTeacher.getLicense())
  150. .eq(StringUtils.isNotBlank(appletUsersTeacher.getUserBrief()), AppletUsersTeacher::getUserBrief, appletUsersTeacher.getUserBrief())
  151. .eq(appletUsersTeacher.getThumbsUp() != null, AppletUsersTeacher::getThumbsUp, appletUsersTeacher.getThumbsUp())
  152. .eq(StringUtils.isNotBlank(appletUsersTeacher.getReason()), AppletUsersTeacher::getReason, appletUsersTeacher.getReason());
  153. // 处理答题状态筛选
  154. if (StringUtils.isNotBlank(answerStatus)) {
  155. // 获取培训类型的题目ID
  156. LambdaQueryWrapper<AppletQuestion> questionWrapper = new LambdaQueryWrapper<>();
  157. questionWrapper.eq(AppletQuestion::getType, "培训");
  158. List<AppletQuestion> questions = appletQuestionMapper.selectList(questionWrapper);
  159. List<Long> questionIds = questions.stream().map(AppletQuestion::getId).collect(Collectors.toList());
  160. if (!questionIds.isEmpty()) {
  161. // 获取基础答题的用户ID
  162. LambdaQueryWrapper<AppletAnswerBase> baseWrapper = new LambdaQueryWrapper<>();
  163. baseWrapper.in(AppletAnswerBase::getQuestionId, questionIds);
  164. List<AppletAnswerBase> baseAnswers = appletAnswerBaseMapper.selectList(baseWrapper);
  165. List<Long> baseUserIds = baseAnswers.stream().map(AppletAnswerBase::getUserId).distinct().collect(Collectors.toList());
  166. // 获取培训答题的用户ID
  167. LambdaQueryWrapper<AppletAnswerTrain> trainWrapper = new LambdaQueryWrapper<>();
  168. trainWrapper.in(AppletAnswerTrain::getQuestionId, questionIds);
  169. List<AppletAnswerTrain> trainAnswers = appletAnswerTrainMapper.selectList(trainWrapper);
  170. List<Long> trainUserIds = trainAnswers.stream().map(AppletAnswerTrain::getUserId).distinct().collect(Collectors.toList());
  171. List<Long> userIds = new ArrayList<>();
  172. if ("1".equals(answerStatus)) {
  173. // 已完成答题:取交集(同时在基础答题和培训答题中的用户)
  174. userIds = baseUserIds.stream()
  175. .filter(trainUserIds::contains)
  176. .collect(Collectors.toList());
  177. if (!userIds.isEmpty()) {
  178. queryWrapper.in(AppletUsersTeacher::getUserId, userIds);
  179. } else {
  180. // 如果没有符合条件的用户,返回空结果
  181. queryWrapper.eq(AppletUsersTeacher::getId, -1L);
  182. }
  183. } else if ("0".equals(answerStatus)) {
  184. // 未完成答题:排除已完成答题的用户
  185. userIds = baseUserIds.stream()
  186. .filter(trainUserIds::contains)
  187. .collect(Collectors.toList());
  188. if (!userIds.isEmpty()) {
  189. queryWrapper.notIn(AppletUsersTeacher::getUserId, userIds);
  190. }
  191. }
  192. }
  193. }
  194. // 按创建时间倒序排列
  195. queryWrapper.orderByDesc(AppletUsersTeacher::getCreateTime);
  196. // 分页查询
  197. startPage();
  198. List<AppletUsersTeacher> list = appletUsersTeacherService.list(queryWrapper);
  199. return getDataTable(list);
  200. }
  201. /**
  202. * 导出伴宠师认证列表
  203. */
  204. @PreAuthorize("@ss.hasPermi('model:AppletUsersTeacher:export')")
  205. @Log(title = "伴宠师认证", businessType = BusinessType.EXPORT)
  206. @PostMapping("/export")
  207. public void export(HttpServletResponse response, AppletUsersTeacher appletUsersTeacher) throws IOException {
  208. List<AppletUsersTeacher> list = appletUsersTeacherService.selectAppletUsersTeacherList(appletUsersTeacher);
  209. ExcelUtil<AppletUsersTeacher> util = new ExcelUtil<AppletUsersTeacher>(AppletUsersTeacher.class);
  210. util.exportExcel(response, list, "伴宠师认证数据");
  211. }
  212. /**
  213. * 获取伴宠师认证详细信息
  214. */
  215. @PreAuthorize("@ss.hasPermi('model:AppletUsersTeacher:query')")
  216. @GetMapping(value = "/{id}")
  217. public AjaxResult getInfo(@PathVariable("id") Long id)
  218. {
  219. return success(appletUsersTeacherService.selectAppletUsersTeacherById(id));
  220. }
  221. /**
  222. * 新增伴宠师认证
  223. */
  224. @PreAuthorize("@ss.hasPermi('model:AppletUsersTeacher:add')")
  225. @Log(title = "伴宠师认证", businessType = BusinessType.INSERT)
  226. @PostMapping
  227. public AjaxResult add(@RequestBody AppletUsersTeacher appletUsersTeacher)
  228. {
  229. return toAjax(appletUsersTeacherService.insertAppletUsersTeacher(appletUsersTeacher));
  230. }
  231. /**
  232. * 修改伴宠师认证
  233. */
  234. @PreAuthorize("@ss.hasPermi('model:AppletUsersTeacher:edit')")
  235. @Log(title = "伴宠师认证", businessType = BusinessType.UPDATE)
  236. @PutMapping
  237. public AjaxResult edit(@RequestBody AppletUsersTeacher appletUsersTeacher, String action)
  238. {
  239. // //如果审核状态为通过status = 1
  240. // if(appletUsersTeacher.getStatus() == 1){
  241. // //审核通过,修改用户表
  242. // AppUsers appUsers = appUsersService.selectAppUsersByUserId(appletUsersTeacher.getUserId());
  243. // //用户不存在
  244. // if(appUsers == null){
  245. // return AjaxResult.error("用户不存在");
  246. // }
  247. // appUsers.setUserBcs(1);
  248. // appUsers.setUserBcsRole(1);
  249. // appUsersService.updateAppUsers(appUsers);
  250. // }
  251. // return AjaxResult.success();
  252. if ("check".equals(action) && appletUsersTeacher.getPhone() != null){
  253. if (appletUsersTeacher.getStatus() == 1){//通过
  254. AliyunSmsUtils.sendBcshJoinSuccessSMS(appletUsersTeacher.getPhone());
  255. }
  256. if (appletUsersTeacher.getStatus() == 2){//驳回
  257. AliyunSmsUtils.sendBcshJoinFailSMS(appletUsersTeacher.getPhone());
  258. }
  259. }
  260. return toAjax(appletUsersTeacherService.updateAppletUsersTeacher(appletUsersTeacher));
  261. }
  262. /**
  263. * 删除伴宠师认证
  264. */
  265. @PreAuthorize("@ss.hasPermi('model:AppletUsersTeacher:remove')")
  266. @Log(title = "伴宠师认证", businessType = BusinessType.DELETE)
  267. @DeleteMapping("/{ids}")
  268. public AjaxResult remove(@PathVariable Long[] ids)
  269. {
  270. return toAjax(appletUsersTeacherService.deleteAppletUsersTeacherByIds(ids));
  271. }
  272. }