每日总结


package com.mentalhealth.service;
import com.mentalhealth.dto.ConsultantProfileDTO;
import com.mentalhealth.entity.Consultant;
import com.mentalhealth.entity.User;
import com.mentalhealth.repository.ConsultantRepository;
import com.mentalhealth.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
@Service
@RequiredArgsConstructor
public class ConsultantManagementService {
private final ConsultantRepository consultantRepository;
private final UserRepository userRepository;
@Transactional
public Consultant createConsultantProfile(Long userId, ConsultantProfileDTO profileDTO) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new RuntimeException("用户不存在"));
Consultant consultant = new Consultant();
consultant.setUser(user);
consultant.setRealName(profileDTO.getRealName());
consultant.setIdCard(profileDTO.getIdCard());
consultant.setExperienceYears(profileDTO.getExperienceYears());
consultant.setQualificationCert(profileDTO.getQualificationCert());
consultant.setExpertiseAreas(profileDTO.getExpertiseAreas());
consultant.setTherapyMethods(profileDTO.getTherapyMethods());
consultant.setIntroduction(profileDTO.getIntroduction());
consultant.setPricePerHour(profileDTO.getPricePerHour()); // 直接使用 Double
consultant.setRating(0.0);
consultant.setTotalSessions(0);
consultant.setAvailable(true);
consultant.setStatus("PENDING"); // 设置初始状态
return consultantRepository.save(consultant);
}
@Transactional
public Consultant updateConsultantProfile(Long consultantId, ConsultantProfileDTO profileDTO) {
Consultant consultant = consultantRepository.findById(consultantId)
.orElseThrow(() -> new RuntimeException("咨询师不存在"));
consultant.setRealName(profileDTO.getRealName());
consultant.setExperienceYears(profileDTO.getExperienceYears());
consultant.setQualificationCert(profileDTO.getQualificationCert());
consultant.setExpertiseAreas(profileDTO.getExpertiseAreas());
consultant.setTherapyMethods(profileDTO.getTherapyMethods());
consultant.setIntroduction(profileDTO.getIntroduction());
consultant.setPricePerHour(profileDTO.getPricePerHour()); // 直接使用 Double
// 注意:available 字段在 ConsultantProfileDTO 中可能不存在,需要检查
// consultant.setAvailable(profileDTO.getAvailable());
return consultantRepository.save(consultant);
}
public List<Consultant> getTopRatedConsultants(int limit) {
return consultantRepository.findAll().stream()
.filter(Consultant::getAvailable)
.filter(c -> "APPROVED".equals(c.getStatus())) // 只显示已批准的咨询师
.sorted((c1, c2) -> Double.compare(c2.getRating(), c1.getRating()))
.limit(limit)
.collect(java.util.stream.Collectors.toList());
}
public List<String> getAllExpertiseAreas() {
return Arrays.asList(
"焦虑症", "抑郁症", "婚姻家庭", "亲子关系", "职场压力",
"人际关系", "情绪管理", "创伤治疗", "睡眠问题", "成瘾问题"
);
}
public List<String> getAllTherapyMethods() {
return Arrays.asList(
"认知行为疗法", "精神分析", "人本主义疗法", "家庭系统治疗",
"艺术治疗", "沙盘游戏", "正念疗法", "短期焦点解决"
);
}
}

浙公网安备 33010602011771号