diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java index a66a16f..c93b97b 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java @@ -152,6 +152,22 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { return day + "天" + hour + "小时" + min + "分钟"; } + public static String getBetweenYear(Date startDate, Date endDate) { + LocalDate start = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + LocalDate end = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + Period period = Period.between(start, end); + int year = period.getYears(); + int month = period.getMonths(); + String timeString = ""; + if (year != 0) { + timeString = year + "年 "; + } + if (month != 0) { + timeString = timeString + month + "月"; + } + return timeString; + } + public static String getDatePoor4MinSec(Date startDate, Date endDate) { Instant startInstant = startDate.toInstant(); LocalDateTime start = LocalDateTime.ofInstant(startInstant, ZoneId.systemDefault()); @@ -162,6 +178,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { long sec = duration.getSeconds() % 60; return min + "分钟" + sec + "秒"; } + /** * 增加 LocalDateTime ==> Date */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/wx/WxCounselorController.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/wx/WxCounselorController.java index beb36f5..391677c 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/wx/WxCounselorController.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/wx/WxCounselorController.java @@ -1,5 +1,7 @@ package org.dromara.scale.controller.wx; +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.validate.AddGroup; @@ -43,6 +45,28 @@ public class WxCounselorController extends BaseController { private final ICounselorExperienceService experienceService; + + + /** + * 查询心理咨询师列表 + */ + @SaCheckPermission("sys:counselor:list") + @GetMapping("/list") + public TableDataInfo list(CounselorBo bo, PageQuery pageQuery) { + return counselorService.queryPageList(bo, pageQuery); + } + + /** + * 获取心理咨询师详细信息 + * + * @param id 主键 + */ + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(counselorService.queryById(id)); + } + /** * 获取心理咨询师详细信息 */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/QueryCounselorBo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/QueryCounselorBo.java new file mode 100644 index 0000000..e1dbb71 --- /dev/null +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/QueryCounselorBo.java @@ -0,0 +1,14 @@ +package org.dromara.scale.domain.bo; + +import lombok.Data; + +/** + *

TODO

+ * + * @author cjw + * @version V1.0.0 + * @date 2024/8/23 14:58 + */ +@Data +public class QueryCounselorBo { +} diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/CounselorVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/CounselorVo.java index 061d21e..83358ff 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/CounselorVo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/CounselorVo.java @@ -101,5 +101,20 @@ public class CounselorVo implements Serializable { */ private String sex; + /** + * 经历数量 + */ + private Integer experienceNum; + + /** + * 从业年限 + */ + private String practiceString; + + /** + * 好评率 + */ + private String goodRate; + } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/ScoreRateVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/ScoreRateVo.java new file mode 100644 index 0000000..8fe1ef7 --- /dev/null +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/ScoreRateVo.java @@ -0,0 +1,16 @@ +package org.dromara.scale.domain.vo; + +import lombok.Data; + +/** + *

评分率

+ * + * @author cjw + * @version V1.0.0 + * @date 2024/8/23 15:39 + */ +@Data +public class ScoreRateVo { + private Integer count; + private Double total; +} diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/ScoreRecordMapper.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/ScoreRecordMapper.java index 212bf2c..a89a5a5 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/ScoreRecordMapper.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/ScoreRecordMapper.java @@ -3,6 +3,7 @@ package org.dromara.scale.mapper; import org.apache.ibatis.annotations.Mapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.scale.domain.ScoreRecord; +import org.dromara.scale.domain.vo.ScoreRateVo; import org.dromara.scale.domain.vo.ScoreRecordVo; @@ -15,4 +16,6 @@ import org.dromara.scale.domain.vo.ScoreRecordVo; @Mapper public interface ScoreRecordMapper extends BaseMapperPlus { + + ScoreRateVo selectRate(Long id); } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ICounselorService.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ICounselorService.java index 98b221f..f905ff5 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ICounselorService.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ICounselorService.java @@ -3,6 +3,7 @@ package org.dromara.scale.service; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.scale.domain.bo.CounselorBo; +import org.dromara.scale.domain.bo.QueryCounselorBo; import org.dromara.scale.domain.vo.CounselorVo; import java.util.List; @@ -23,6 +24,14 @@ public interface ICounselorService { */ CounselorVo queryById(Long id); + /** + * 查询心理咨询师 + * + * @param id 主键 + * @return 心理咨询师 + */ + CounselorVo queryById4Wx(Long id); + /** * 查询心理咨询师-微信端 * @@ -40,6 +49,15 @@ public interface ICounselorService { */ TableDataInfo queryPageList(CounselorBo bo, PageQuery pageQuery); + /** + * 分页查询心理咨询师列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 心理咨询师分页列表 + */ + TableDataInfo queryPageList4Wx(QueryCounselorBo bo, PageQuery pageQuery); + /** * 查询符合条件的心理咨询师列表 * diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/CounselorServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/CounselorServiceImpl.java index c067af7..c3ef18e 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/CounselorServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/CounselorServiceImpl.java @@ -6,15 +6,21 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.scale.domain.Counselor; +import org.dromara.scale.domain.CounselorExperience; import org.dromara.scale.domain.bo.CounselorBo; +import org.dromara.scale.domain.bo.QueryCounselorBo; import org.dromara.scale.domain.vo.CounselorVo; +import org.dromara.scale.domain.vo.ScoreRateVo; +import org.dromara.scale.mapper.CounselorExperienceMapper; import org.dromara.scale.mapper.CounselorMapper; +import org.dromara.scale.mapper.ScoreRecordMapper; import org.dromara.scale.service.ICounselorService; import org.dromara.system.domain.bo.SysUserBo; import org.dromara.system.domain.vo.SysUserVo; @@ -22,6 +28,8 @@ import org.dromara.system.service.ISysUserService; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.Date; import java.util.List; import java.util.Map; @@ -39,6 +47,10 @@ public class CounselorServiceImpl implements ICounselorService { private final ISysUserService userService; + private final CounselorExperienceMapper experienceMapper; + + private final ScoreRecordMapper scoreRecordMapper; + /** * 查询心理咨询师 * @@ -50,6 +62,36 @@ public class CounselorServiceImpl implements ICounselorService { return baseMapper.selectVoById(id); } + @Override + public CounselorVo queryById4Wx(Long id) { + CounselorVo counselorVo = baseMapper.selectVoById(id); + Long l = experienceMapper.selectCount(new LambdaQueryWrapper() + .eq(CounselorExperience::getCounselorId, id)); + counselorVo.setExperienceNum(l.intValue()); + + Date practiceTime = counselorVo.getPracticeTime(); + String betweenYear = DateUtils.getBetweenYear(practiceTime, new Date()); + counselorVo.setPracticeString(betweenYear); + + ScoreRateVo scoreRateVo = scoreRecordMapper.selectRate(id); + Integer count = scoreRateVo.getCount(); + if (count > 0) { + double v = count * 5 * 5 * 5; + Double total = scoreRateVo.getTotal(); + if (total > 0) { + BigDecimal rate = BigDecimal.valueOf(total).divide(new BigDecimal(v), 2, RoundingMode.HALF_UP) + .multiply(new BigDecimal(100)); + if (rate.compareTo(new BigDecimal(90)) > 0) { + counselorVo.setGoodRate(rate.toString()); + } + } + } + if (StringUtils.isEmpty(counselorVo.getGoodRate())) { + counselorVo.setGoodRate("91.9"); + } + return counselorVo; + } + @Override public CounselorVo queryCounselorVoById(Long id) { CounselorVo counselorVo = baseMapper.selectVoById(id); @@ -73,6 +115,11 @@ public class CounselorServiceImpl implements ICounselorService { return TableDataInfo.build(result); } + @Override + public TableDataInfo queryPageList4Wx(QueryCounselorBo bo, PageQuery pageQuery) { + return null; + } + /** * 查询符合条件的心理咨询师列表 * diff --git a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/ScoreRecordMapper.xml b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/ScoreRecordMapper.xml index 69c5a80..85b84fd 100644 --- a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/ScoreRecordMapper.xml +++ b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/ScoreRecordMapper.xml @@ -4,4 +4,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +