package com.ruoyi.model.controller; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import javax.servlet.http.HttpServletResponse; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.sms.AliyunSmsUtils; import com.ruoyi.common.utils.SmsUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.model.domain.*; import com.ruoyi.model.mapper.AppletAnswerBaseMapper; import com.ruoyi.model.mapper.AppletAnswerTrainMapper; import com.ruoyi.model.mapper.AppletQuestionMapper; import com.ruoyi.model.service.*; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; /** * 伴宠师认证Controller * * @author ruoyi * @date 2025-03-27 */ @RestController @RequestMapping("/model/AppletUsersTeacher") public class AppletUsersTeacherController extends BaseController { @Autowired private IAppletUsersTeacherService appletUsersTeacherService; @Autowired private IAppUsersService appUsersService; @Autowired private AppletAnswerBaseMapper appletAnswerBaseMapper; @Autowired private AppletAnswerTrainMapper appletAnswerTrainMapper; @Autowired private AppletQuestionMapper appletQuestionMapper; /** * 查询伴宠师认证列表(原方法已注释) */ // @PreAuthorize("@ss.hasPermi('model:AppletUsersTeacher:list')") // @GetMapping("/list") // public TableDataInfo list(AppletUsersTeacher appletUsersTeacher, String answerStatus) // { // if (StringUtils.isNotBlank(answerStatus)){ // appletUsersTeacher.setAnswerStatus(answerStatus); // // // 获取培训类型的题目ID // LambdaQueryWrapper questionWrapper = new LambdaQueryWrapper<>(); // questionWrapper.eq(AppletQuestion::getType, "培训"); // List questions = appletQuestionMapper.selectList(questionWrapper); // List questionIds = questions.stream().map(AppletQuestion::getId).collect(Collectors.toList()); // // if (!questionIds.isEmpty()) { // // 获取基础答题的用户ID // QueryWrapper baseWrapper = new QueryWrapper<>(); // baseWrapper.in("question_id", questionIds); // List baseAnswers = appletAnswerBaseMapper.selectList(baseWrapper); // List baseUserIds = baseAnswers.stream().map(AppletAnswerBase::getUserId).distinct().collect(Collectors.toList()); // // // 获取培训答题的用户ID // QueryWrapper trainWrapper = new QueryWrapper<>(); // trainWrapper.in("question_id", questionIds); // List trainAnswers = appletAnswerTrainMapper.selectList(trainWrapper); // List trainUserIds = trainAnswers.stream().map(AppletAnswerTrain::getUserId).distinct().collect(Collectors.toList()); // // List userIds = new ArrayList<>(); // if ("1".equals(answerStatus)) { // // 已完成答题:取交集(同时在基础答题和培训答题中的用户) // userIds = baseUserIds.stream() // .filter(trainUserIds::contains) // .collect(Collectors.toList()); // } else if ("0".equals(answerStatus)) { // // 未完成答题:取已完成答题的用户ID,用于NOT IN查询 // userIds = baseUserIds.stream() // .filter(trainUserIds::contains) // .collect(Collectors.toList()); // } // // appletUsersTeacher.setUserIds(userIds); // } // } // // startPage(); // List list = appletUsersTeacherService.selectAppletUsersTeacherList(appletUsersTeacher); // //获取用户信息 //// List listVo = new ArrayList<>(); //// for (AppletUsersTeacher teacher : list) { //// //// if (StringUtils.isNotBlank(answerStatus)){ //// //// int i = count + count1; //// if (i > 0 && "1".equals(answerStatus) || //// i == 0 && "0".equals(answerStatus)){ //// listVo.add(teacher); //// } //// } else { //// listVo.add(teacher); //// } //// //// AppUsers appUsers = appUsersService.selectAppUsersByUserId(teacher.getUserId()); //// if(appUsers != null){ //// teacher.setUserName(appUsers.getUserName()); //// } //// //// } // return getDataTable(list); // } /** * 查询伴宠师认证列表(使用MyBatis Plus) */ @PreAuthorize("@ss.hasPermi('model:AppletUsersTeacher:list')") @GetMapping("/list") public TableDataInfo list(AppletUsersTeacher appletUsersTeacher, String answerStatus) { // 构建查询条件 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); // 基本查询条件 queryWrapper.eq(appletUsersTeacher.getUserId() != null, AppletUsersTeacher::getUserId, appletUsersTeacher.getUserId()) .like(StringUtils.isNotBlank(appletUsersTeacher.getName()), AppletUsersTeacher::getName, appletUsersTeacher.getName()) .like(StringUtils.isNotBlank(appletUsersTeacher.getIdCard()), AppletUsersTeacher::getIdCard, appletUsersTeacher.getIdCard()) .eq(appletUsersTeacher.getSex() != null, AppletUsersTeacher::getSex, appletUsersTeacher.getSex()) .like(StringUtils.isNotBlank(appletUsersTeacher.getPhone()), AppletUsersTeacher::getPhone, appletUsersTeacher.getPhone()) .eq(StringUtils.isNotBlank(appletUsersTeacher.getExperience()), AppletUsersTeacher::getExperience, appletUsersTeacher.getExperience()) .eq(appletUsersTeacher.getIsHave() != null, AppletUsersTeacher::getIsHave, appletUsersTeacher.getIsHave()) .eq(appletUsersTeacher.getPetType() != null, AppletUsersTeacher::getPetType, appletUsersTeacher.getPetType()) .eq(appletUsersTeacher.getStatus() != null, AppletUsersTeacher::getStatus, appletUsersTeacher.getStatus()) .eq(StringUtils.isNotBlank(appletUsersTeacher.getImages()), AppletUsersTeacher::getImages, appletUsersTeacher.getImages()) .eq(StringUtils.isNotBlank(appletUsersTeacher.getArea()), AppletUsersTeacher::getArea, appletUsersTeacher.getArea()) .eq(StringUtils.isNotBlank(appletUsersTeacher.getAddress()), AppletUsersTeacher::getAddress, appletUsersTeacher.getAddress()) .eq(StringUtils.isNotBlank(appletUsersTeacher.getLongitude()), AppletUsersTeacher::getLongitude, appletUsersTeacher.getLongitude()) .eq(StringUtils.isNotBlank(appletUsersTeacher.getLatitude()), AppletUsersTeacher::getLatitude, appletUsersTeacher.getLatitude()) .eq(appletUsersTeacher.getAge() != null, AppletUsersTeacher::getAge, appletUsersTeacher.getAge()) .eq(StringUtils.isNotBlank(appletUsersTeacher.getLicense()), AppletUsersTeacher::getLicense, appletUsersTeacher.getLicense()) .eq(StringUtils.isNotBlank(appletUsersTeacher.getUserBrief()), AppletUsersTeacher::getUserBrief, appletUsersTeacher.getUserBrief()) .eq(appletUsersTeacher.getThumbsUp() != null, AppletUsersTeacher::getThumbsUp, appletUsersTeacher.getThumbsUp()) .eq(StringUtils.isNotBlank(appletUsersTeacher.getReason()), AppletUsersTeacher::getReason, appletUsersTeacher.getReason()); // 处理答题状态筛选 if (StringUtils.isNotBlank(answerStatus)) { // 获取培训类型的题目ID LambdaQueryWrapper questionWrapper = new LambdaQueryWrapper<>(); questionWrapper.eq(AppletQuestion::getType, "培训"); List questions = appletQuestionMapper.selectList(questionWrapper); List questionIds = questions.stream().map(AppletQuestion::getId).collect(Collectors.toList()); if (!questionIds.isEmpty()) { // 获取基础答题的用户ID LambdaQueryWrapper baseWrapper = new LambdaQueryWrapper<>(); baseWrapper.in(AppletAnswerBase::getQuestionId, questionIds); List baseAnswers = appletAnswerBaseMapper.selectList(baseWrapper); List baseUserIds = baseAnswers.stream().map(AppletAnswerBase::getUserId).distinct().collect(Collectors.toList()); // 获取培训答题的用户ID LambdaQueryWrapper trainWrapper = new LambdaQueryWrapper<>(); trainWrapper.in(AppletAnswerTrain::getQuestionId, questionIds); List trainAnswers = appletAnswerTrainMapper.selectList(trainWrapper); List trainUserIds = trainAnswers.stream().map(AppletAnswerTrain::getUserId).distinct().collect(Collectors.toList()); List userIds = new ArrayList<>(); if ("1".equals(answerStatus)) { // 已完成答题:取交集(同时在基础答题和培训答题中的用户) userIds = baseUserIds.stream() .filter(trainUserIds::contains) .collect(Collectors.toList()); if (!userIds.isEmpty()) { queryWrapper.in(AppletUsersTeacher::getUserId, userIds); } else { // 如果没有符合条件的用户,返回空结果 queryWrapper.eq(AppletUsersTeacher::getId, -1L); } } else if ("0".equals(answerStatus)) { // 未完成答题:排除已完成答题的用户 userIds = baseUserIds.stream() .filter(trainUserIds::contains) .collect(Collectors.toList()); if (!userIds.isEmpty()) { queryWrapper.notIn(AppletUsersTeacher::getUserId, userIds); } } } } // 按创建时间倒序排列 queryWrapper.orderByDesc(AppletUsersTeacher::getCreateTime); // 分页查询 startPage(); List list = appletUsersTeacherService.list(queryWrapper); return getDataTable(list); } /** * 导出伴宠师认证列表 */ @PreAuthorize("@ss.hasPermi('model:AppletUsersTeacher:export')") @Log(title = "伴宠师认证", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, AppletUsersTeacher appletUsersTeacher) throws IOException { List list = appletUsersTeacherService.selectAppletUsersTeacherList(appletUsersTeacher); ExcelUtil util = new ExcelUtil(AppletUsersTeacher.class); util.exportExcel(response, list, "伴宠师认证数据"); } /** * 获取伴宠师认证详细信息 */ @PreAuthorize("@ss.hasPermi('model:AppletUsersTeacher:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return success(appletUsersTeacherService.selectAppletUsersTeacherById(id)); } /** * 新增伴宠师认证 */ @PreAuthorize("@ss.hasPermi('model:AppletUsersTeacher:add')") @Log(title = "伴宠师认证", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody AppletUsersTeacher appletUsersTeacher) { return toAjax(appletUsersTeacherService.insertAppletUsersTeacher(appletUsersTeacher)); } /** * 修改伴宠师认证 */ @PreAuthorize("@ss.hasPermi('model:AppletUsersTeacher:edit')") @Log(title = "伴宠师认证", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody AppletUsersTeacher appletUsersTeacher, String action) { // //如果审核状态为通过status = 1 // if(appletUsersTeacher.getStatus() == 1){ // //审核通过,修改用户表 // AppUsers appUsers = appUsersService.selectAppUsersByUserId(appletUsersTeacher.getUserId()); // //用户不存在 // if(appUsers == null){ // return AjaxResult.error("用户不存在"); // } // appUsers.setUserBcs(1); // appUsers.setUserBcsRole(1); // appUsersService.updateAppUsers(appUsers); // } // return AjaxResult.success(); if ("check".equals(action) && appletUsersTeacher.getPhone() != null){ if (appletUsersTeacher.getStatus() == 1){//通过 AliyunSmsUtils.sendBcshJoinSuccessSMS(appletUsersTeacher.getPhone()); } if (appletUsersTeacher.getStatus() == 2){//驳回 AliyunSmsUtils.sendBcshJoinFailSMS(appletUsersTeacher.getPhone()); } } return toAjax(appletUsersTeacherService.updateAppletUsersTeacher(appletUsersTeacher)); } /** * 删除伴宠师认证 */ @PreAuthorize("@ss.hasPermi('model:AppletUsersTeacher:remove')") @Log(title = "伴宠师认证", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(appletUsersTeacherService.deleteAppletUsersTeacherByIds(ids)); } }