diff --git a/CatmDogd-Mall-Front-test/.env.development b/CatmDogd-Mall-Front-test/.env.development index d8a74eb..a25a7b7 100644 --- a/CatmDogd-Mall-Front-test/.env.development +++ b/CatmDogd-Mall-Front-test/.env.development @@ -8,7 +8,7 @@ VUE_APP_TITLE = 下单伴宠师综合管理平台 # VUE_APP_BASE_API = 'https://api.catmdogd.com' # VUE_APP_BASE_API = 'https://pet-admin.hhlm1688.com/api/' # VUE_APP_BASE_API = 'http://h5.xzaiyp.top' -VUE_APP_BASE_API = 'http://localhost:8002' +VUE_APP_BASE_API = 'http://localhost:8080' # 路由懒加载 VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/CatmDogd-Mall-Front-test/vue.config.js b/CatmDogd-Mall-Front-test/vue.config.js index 8921c8e..e548de9 100644 --- a/CatmDogd-Mall-Front-test/vue.config.js +++ b/CatmDogd-Mall-Front-test/vue.config.js @@ -35,7 +35,7 @@ module.exports = { proxy: { // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VUE_APP_BASE_API]: { - target: `http://localhost:8002`, + target: `http://localhost:8080`, changeOrigin: true, pathRewrite: { ['^' + process.env.VUE_APP_BASE_API]: '' diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/controller/AppletUsersTeacherController.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/controller/AppletUsersTeacherController.java index c9848e5..40c5754 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/controller/AppletUsersTeacherController.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/controller/AppletUsersTeacherController.java @@ -6,11 +6,15 @@ 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; @@ -43,64 +47,168 @@ public class AppletUsersTeacherController extends BaseController private IAppletUsersTeacherService appletUsersTeacherService; @Autowired private IAppUsersService appUsersService; - - //用户培训考核答案 @Autowired - private IAppletAnswerTrainService appletAnswerTrainService; - - //用户培训考核答案 + private AppletAnswerBaseMapper appletAnswerBaseMapper; @Autowired - private IAppletAnswerBaseService appletAnswerBaseService; - //题目信息 + private AppletAnswerTrainMapper appletAnswerTrainMapper; @Autowired - private IAppletQuestionService appletQuestionService; + 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) { - startPage(); - List list = appletUsersTeacherService.selectAppletUsersTeacherList(appletUsersTeacher); - //获取用户信息 - List listVo = new ArrayList<>(); - for (AppletUsersTeacher teacher : list) { - - if (StringUtils.isNotBlank(answerStatus)){ - List ids = appletQuestionService.lambdaQuery() - .eq(AppletQuestion::getType, "培训") - .select(AppletQuestion::getId) - .list() - .stream().map(AppletQuestion::getId) - .collect(Collectors.toList()); - - Integer count = appletAnswerBaseService.lambdaQuery() - .in(AppletAnswerBase::getQuestionId, ids) - .eq(AppletAnswerBase::getUserId, teacher.getUserId()) - .count(); - - Integer count1 = appletAnswerTrainService.lambdaQuery() - .in(AppletAnswerTrain::getQuestionId, ids) - .eq(AppletAnswerTrain::getUserId, teacher.getUserId()) - .count(); + // 构建查询条件 + 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()); - int i = count + count1; - if (i > 0 && "1".equals(answerStatus) || - i == 0 && "0".equals(answerStatus)){ - listVo.add(teacher); + // 处理答题状态筛选 + 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); + } } - } else { - listVo.add(teacher); } - - AppUsers appUsers = appUsersService.selectAppUsersByUserId(teacher.getUserId()); - if(appUsers != null){ - teacher.setUserName(appUsers.getUserName()); - } - } - return getDataTable(listVo); + + // 按创建时间倒序排列 + queryWrapper.orderByDesc(AppletUsersTeacher::getCreateTime); + + // 分页查询 + startPage(); + List list = appletUsersTeacherService.list(queryWrapper); + + return getDataTable(list); } /** diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAnswerBase.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAnswerBase.java index cc656f2..05768b0 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAnswerBase.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAnswerBase.java @@ -34,6 +34,11 @@ public class AppletAnswerBase extends BaseEntity /** 删除标识 */ private Integer delFlag; + /** + * 备注 + */ + @TableField(exist = false) + private String remark; //答案信息 @TableField(exist = false) private AppletAnswer answer; diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAnswerTrain.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAnswerTrain.java index 38f7a45..023f799 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAnswerTrain.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAnswerTrain.java @@ -34,6 +34,11 @@ public class AppletAnswerTrain extends BaseEntity /** 删除标识 */ private Integer delFlag; + /** + * 备注 + */ + @TableField(exist = false) + private String remark; //题目信息 @TableField(exist = false) private AppletQuestion question; diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletQuestion.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletQuestion.java index a8a48b9..5953228 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletQuestion.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletQuestion.java @@ -44,6 +44,11 @@ public class AppletQuestion extends BaseEntity /** 答题类型 0选这题 1填空题 */ private Integer typeAnswer; + /** + * 备注 + */ + @TableField(exist = false) + private String remark; @TableField(exist = false) private List answerList; diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletUsersTeacher.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletUsersTeacher.java index 7991152..0e7a3e5 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletUsersTeacher.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletUsersTeacher.java @@ -124,5 +124,9 @@ public class AppletUsersTeacher { @TableField(exist = false) private String userName; + @TableField(exist = false) + private String answerStatus; + @TableField(exist = false) + private List userIds; } diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletUsersTeacherService.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletUsersTeacherService.java index 7bff5bb..0df7203 100644 --- a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletUsersTeacherService.java +++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletUsersTeacherService.java @@ -33,6 +33,14 @@ public interface IAppletUsersTeacherService extends IService */ public List selectAppletUsersTeacherList(AppletUsersTeacher appletUsersTeacher); + /** + * 查询伴宠师认证列表(使用MyBatis Plus分页) + * + * @param queryWrapper 查询条件 + * @return 伴宠师认证集合 + */ + public List selectAppletUsersTeacherListWithPage(com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper queryWrapper); + /** * 新增伴宠师认证 * diff --git a/ruoyi-catdog/src/main/resources/mapper/model/AppletUsersTeacherMapper.xml b/ruoyi-catdog/src/main/resources/mapper/model/AppletUsersTeacherMapper.xml index 6d8399e..1934aa9 100644 --- a/ruoyi-catdog/src/main/resources/mapper/model/AppletUsersTeacherMapper.xml +++ b/ruoyi-catdog/src/main/resources/mapper/model/AppletUsersTeacherMapper.xml @@ -48,9 +48,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and user_id = #{userId} and name like concat('%', #{name}, '%') - and id_card = #{idCard} + and id_card like concat('%', #{idCard}, '%') and sex = #{sex} - and phone = #{phone} + and phone like concat('%', #{phone}, '%') and experience = #{experience} and is_have = #{isHave} and pet_type = #{petType} @@ -65,6 +65,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and user_brief = #{userBrief} and thumbs_up = #{thumbsUp} and reason = #{reason} + + + and user_id in + + #{userId} + + + + and user_id not in + + #{userId} + + order by create_time desc