新增咨询师详情微信端

This commit is contained in:
cjw 2024-08-23 16:06:32 +08:00
parent 2ed8182fcd
commit aa4dfa7cd3
9 changed files with 160 additions and 0 deletions

View File

@ -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
*/

View File

@ -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<CounselorVo> list(CounselorBo bo, PageQuery pageQuery) {
return counselorService.queryPageList(bo, pageQuery);
}
/**
* 获取心理咨询师详细信息
*
* @param id 主键
*/
@GetMapping("/{id}")
public R<CounselorVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(counselorService.queryById(id));
}
/**
* 获取心理咨询师详细信息
*/

View File

@ -0,0 +1,14 @@
package org.dromara.scale.domain.bo;
import lombok.Data;
/**
* <p>TODO<p>
*
* @author cjw
* @version V1.0.0
* @date 2024/8/23 14:58
*/
@Data
public class QueryCounselorBo {
}

View File

@ -101,5 +101,20 @@ public class CounselorVo implements Serializable {
*/
private String sex;
/**
* 经历数量
*/
private Integer experienceNum;
/**
* 从业年限
*/
private String practiceString;
/**
* 好评率
*/
private String goodRate;
}

View File

@ -0,0 +1,16 @@
package org.dromara.scale.domain.vo;
import lombok.Data;
/**
* <p>评分率<p>
*
* @author cjw
* @version V1.0.0
* @date 2024/8/23 15:39
*/
@Data
public class ScoreRateVo {
private Integer count;
private Double total;
}

View File

@ -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<ScoreRecord, ScoreRecordVo> {
ScoreRateVo selectRate(Long id);
}

View File

@ -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<CounselorVo> queryPageList(CounselorBo bo, PageQuery pageQuery);
/**
* 分页查询心理咨询师列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 心理咨询师分页列表
*/
TableDataInfo<CounselorVo> queryPageList4Wx(QueryCounselorBo bo, PageQuery pageQuery);
/**
* 查询符合条件的心理咨询师列表
*

View File

@ -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<CounselorExperience>()
.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<CounselorVo> queryPageList4Wx(QueryCounselorBo bo, PageQuery pageQuery) {
return null;
}
/**
* 查询符合条件的心理咨询师列表
*

View File

@ -4,4 +4,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.scale.mapper.ScoreRecordMapper">
<select id="selectRate" resultType="org.dromara.scale.domain.vo.ScoreRateVo">
select count(business_id) as `count`, SUM(one_score) + SUM(two_score) + SUM(three_score) as `total`
from m_score_record
where business_id = #{id}
group by business_id
</select>
</mapper>