|
@@ -8,15 +8,17 @@ import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.util.StringUtils;
|
|
import org.springframework.util.StringUtils;
|
|
|
import shop.alien.entity.result.R;
|
|
import shop.alien.entity.result.R;
|
|
|
import shop.alien.entity.store.LawyerConsultationOrder;
|
|
import shop.alien.entity.store.LawyerConsultationOrder;
|
|
|
import shop.alien.entity.store.LawyerUser;
|
|
import shop.alien.entity.store.LawyerUser;
|
|
|
|
|
+import shop.alien.entity.store.vo.LawyerConsultationOrderVO;
|
|
|
import shop.alien.mapper.LawyerConsultationOrderMapper;
|
|
import shop.alien.mapper.LawyerConsultationOrderMapper;
|
|
|
import shop.alien.store.service.LawyerConsultationOrderService;
|
|
import shop.alien.store.service.LawyerConsultationOrderService;
|
|
|
import shop.alien.store.service.LawyerUserService;
|
|
import shop.alien.store.service.LawyerUserService;
|
|
|
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -35,7 +37,7 @@ public class LawyerConsultationOrderServiceImpl extends ServiceImpl<LawyerConsul
|
|
|
private final LawyerUserService lawyerUserService;
|
|
private final LawyerUserService lawyerUserService;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public R<IPage<LawyerConsultationOrder>> getConsultationOrderList(int pageNum, int pageSize, String orderNumber,
|
|
|
|
|
|
|
+ public R<IPage<LawyerConsultationOrderVO>> getConsultationOrderList(int pageNum, int pageSize, String orderNumber,
|
|
|
Integer clientUserId, Integer lawyerUserId, String lawyerName, Integer orderStatus) {
|
|
Integer clientUserId, Integer lawyerUserId, String lawyerName, Integer orderStatus) {
|
|
|
log.info("LawyerConsultationOrderServiceImpl.getConsultationOrderList?pageNum={},pageSize={},orderNumber={},clientUserId={},lawyerUserId={},lawyerName={},orderStatus={}",
|
|
log.info("LawyerConsultationOrderServiceImpl.getConsultationOrderList?pageNum={},pageSize={},orderNumber={},clientUserId={},lawyerUserId={},lawyerName={},orderStatus={}",
|
|
|
pageNum, pageSize, orderNumber, clientUserId, lawyerUserId, lawyerName, orderStatus);
|
|
pageNum, pageSize, orderNumber, clientUserId, lawyerUserId, lawyerName, orderStatus);
|
|
@@ -72,7 +74,82 @@ public class LawyerConsultationOrderServiceImpl extends ServiceImpl<LawyerConsul
|
|
|
}
|
|
}
|
|
|
queryWrapper.orderByDesc(LawyerConsultationOrder::getCreatedTime);
|
|
queryWrapper.orderByDesc(LawyerConsultationOrder::getCreatedTime);
|
|
|
IPage<LawyerConsultationOrder> pageResult = this.page(page, queryWrapper);
|
|
IPage<LawyerConsultationOrder> pageResult = this.page(page, queryWrapper);
|
|
|
- return R.data(pageResult);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // 轉換為VO並填充律師信息
|
|
|
|
|
+ IPage<LawyerConsultationOrderVO> voPage = convertToVO(pageResult);
|
|
|
|
|
+
|
|
|
|
|
+ return R.data(voPage);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 將訂單分頁結果轉換為VO並填充律師信息
|
|
|
|
|
+ */
|
|
|
|
|
+ private IPage<LawyerConsultationOrderVO> convertToVO(IPage<LawyerConsultationOrder> pageResult) {
|
|
|
|
|
+ // 創建VO分頁對象
|
|
|
|
|
+ Page<LawyerConsultationOrderVO> voPage = new Page<>(pageResult.getCurrent(), pageResult.getSize(), pageResult.getTotal());
|
|
|
|
|
+
|
|
|
|
|
+ List<LawyerConsultationOrder> records = pageResult.getRecords();
|
|
|
|
|
+ if (records == null || records.isEmpty()) {
|
|
|
|
|
+ voPage.setRecords(Collections.emptyList());
|
|
|
|
|
+ return voPage;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 收集所有律師ID
|
|
|
|
|
+ Set<Integer> lawyerUserIds = records.stream()
|
|
|
|
|
+ .map(LawyerConsultationOrder::getLawyerUserId)
|
|
|
|
|
+ .filter(id -> id != null)
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+
|
|
|
|
|
+ // 批量查詢律師信息
|
|
|
|
|
+ Map<Integer, LawyerUser> lawyerMap = new HashMap<>();
|
|
|
|
|
+ if (!lawyerUserIds.isEmpty()) {
|
|
|
|
|
+ LambdaQueryWrapper<LawyerUser> lawyerWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ lawyerWrapper.in(LawyerUser::getId, lawyerUserIds);
|
|
|
|
|
+ lawyerWrapper.eq(LawyerUser::getDeleteFlag, 0);
|
|
|
|
|
+ List<LawyerUser> lawyerUsers = lawyerUserService.list(lawyerWrapper);
|
|
|
|
|
+ if (lawyerUsers != null && !lawyerUsers.isEmpty()) {
|
|
|
|
|
+ lawyerMap = lawyerUsers.stream()
|
|
|
|
|
+ .collect(Collectors.toMap(LawyerUser::getId, lawyer -> lawyer, (k1, k2) -> k1));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 轉換為VO並填充律師信息
|
|
|
|
|
+ final Map<Integer, LawyerUser> finalLawyerMap = lawyerMap;
|
|
|
|
|
+ List<LawyerConsultationOrderVO> voList = records.stream()
|
|
|
|
|
+ .map(order -> {
|
|
|
|
|
+ LawyerConsultationOrderVO vo = new LawyerConsultationOrderVO();
|
|
|
|
|
+ // 複製訂單基本信息
|
|
|
|
|
+ BeanUtils.copyProperties(order, vo);
|
|
|
|
|
+
|
|
|
|
|
+ // 填充律師信息
|
|
|
|
|
+ LawyerUser lawyer = finalLawyerMap.get(order.getLawyerUserId());
|
|
|
|
|
+ if (lawyer != null) {
|
|
|
|
|
+ vo.setLawyerName(lawyer.getName());
|
|
|
|
|
+ vo.setLawyerPhone(lawyer.getPhone());
|
|
|
|
|
+ vo.setLawyerEmail(lawyer.getEmail());
|
|
|
|
|
+ vo.setLawyerCertificateNo(lawyer.getLawyerCertificateNo());
|
|
|
|
|
+ vo.setLawFirm(lawyer.getLawFirm());
|
|
|
|
|
+ vo.setPracticeYears(lawyer.getPracticeYears());
|
|
|
|
|
+ vo.setSpecialtyFields(lawyer.getSpecialtyFields());
|
|
|
|
|
+ vo.setCertificationStatus(lawyer.getCertificationStatus());
|
|
|
|
|
+ vo.setServiceScore(lawyer.getServiceScore());
|
|
|
|
|
+ vo.setServiceCount(lawyer.getServiceCount());
|
|
|
|
|
+ vo.setLawyerConsultationFee(lawyer.getConsultationFee());
|
|
|
|
|
+ vo.setProvince(lawyer.getProvince());
|
|
|
|
|
+ vo.setCity(lawyer.getCity());
|
|
|
|
|
+ vo.setDistrict(lawyer.getDistrict());
|
|
|
|
|
+ vo.setAddress(lawyer.getAddress());
|
|
|
|
|
+ vo.setHeadImg(lawyer.getHeadImg());
|
|
|
|
|
+ vo.setNickName(lawyer.getNickName());
|
|
|
|
|
+ vo.setPersonalIntroduction(lawyer.getPersonalIntroduction());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return vo;
|
|
|
|
|
+ })
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+
|
|
|
|
|
+ voPage.setRecords(voList);
|
|
|
|
|
+ return voPage;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|