|
|
@@ -15,7 +15,10 @@ import com.ylx.base.BaseServiceImpl;
|
|
|
import com.ylx.common.core.domain.entity.SysDictData;
|
|
|
import com.ylx.common.core.domain.model.WxLoginUser;
|
|
|
import com.ylx.common.exception.ServiceException;
|
|
|
-import com.ylx.common.utils.*;
|
|
|
+import com.ylx.common.utils.DateUtils;
|
|
|
+import com.ylx.common.utils.DictUtils;
|
|
|
+import com.ylx.common.utils.PhoneUtils;
|
|
|
+import com.ylx.common.utils.TimeSlotUtil;
|
|
|
import com.ylx.common.weixinPay.enums.WxPayTypeEnum;
|
|
|
import com.ylx.common.weixinPay.service.WxPayV3Service;
|
|
|
import com.ylx.coupon.service.CouponService;
|
|
|
@@ -58,7 +61,6 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.LocalTime;
|
|
|
@@ -69,18 +71,12 @@ import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.ylx.order.constant.OrderConstant.*;
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 订单表 服务实现类
|
|
|
*/
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
public class TOrderServiceImpl extends BaseServiceImpl<TOrderMapper, TOrder> implements TOrderService {
|
|
|
- private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
-
|
|
|
- private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
- private final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("M月d日");
|
|
|
- private final DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm");
|
|
|
|
|
|
@Resource
|
|
|
private ProjectService projectService;
|
|
|
@@ -250,7 +246,6 @@ public class TOrderServiceImpl extends BaseServiceImpl<TOrderMapper, TOrder> imp
|
|
|
// 4. 转换 VO
|
|
|
List<OrderDateQueryVo> voList = orderPage.getRecords().stream().map(this::convertToVo).collect(Collectors.toList());
|
|
|
|
|
|
-
|
|
|
// 5. 返回分页结果
|
|
|
Page<OrderDateQueryVo> voPage = new Page<>(orderPage.getCurrent(), orderPage.getSize(), orderPage.getTotal());
|
|
|
voPage.setRecords(voList);
|
|
|
@@ -894,8 +889,7 @@ public class TOrderServiceImpl extends BaseServiceImpl<TOrderMapper, TOrder> imp
|
|
|
vo.setOrderStatus(order.getStatus());
|
|
|
vo.setOrderStatusName(getOrderStatusName(order.getStatus()));
|
|
|
// 服务时间范围:预约开始时间 + 项目时长(分钟)
|
|
|
- // 使用 startTime 和 completedTime 构建服务时间展示
|
|
|
- String serviceTime = buildServiceTime(order.getStartTime(), order.getCompletedTime());
|
|
|
+ String serviceTime = formatTimeRange(order.getAppointmentStartTime(), order.getProjectDuration());
|
|
|
vo.setServiceTime(serviceTime);
|
|
|
|
|
|
// 获取订单售后数据
|
|
|
@@ -911,19 +905,6 @@ public class TOrderServiceImpl extends BaseServiceImpl<TOrderMapper, TOrder> imp
|
|
|
return OrderStatusEnum.getInfoByCode(status);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 拼接服务时间字符串,例如 “2026-06-08 14:30 (90分钟)”
|
|
|
- */
|
|
|
- private String buildServiceTime(LocalDateTime startTime, LocalDateTime completedTime) {
|
|
|
- if (startTime == null || completedTime == null) {
|
|
|
- return "";
|
|
|
- }
|
|
|
- String date = startTime.format(dateFormatter);
|
|
|
- String start = startTime.format(timeFormatter);
|
|
|
- String end = completedTime.format(timeFormatter);
|
|
|
- return date + " " + start + "-" + end;
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 组装订单对象
|
|
|
*/
|
|
|
@@ -1037,9 +1018,9 @@ public class TOrderServiceImpl extends BaseServiceImpl<TOrderMapper, TOrder> imp
|
|
|
OrderDetailVO vo = new OrderDetailVO();
|
|
|
|
|
|
// 基础订单信息
|
|
|
+ BeanUtil.copyProperties(order, vo);
|
|
|
vo.setOrderStatus(order.getStatus());
|
|
|
vo.setOrderStatusName(OrderStatusEnum.getInfoByCode(order.getStatus()));
|
|
|
- vo.setMerchantAvatar(order.getMerchantAvatar());
|
|
|
// 1. 获取服务次数(从项目表获取 projectUsersNum)
|
|
|
Integer serviceNum = null;
|
|
|
if (order.getProjectId() != null && order.getMerchantId() != null) {
|
|
|
@@ -1067,44 +1048,16 @@ public class TOrderServiceImpl extends BaseServiceImpl<TOrderMapper, TOrder> imp
|
|
|
vo.setBrief(null);
|
|
|
}
|
|
|
|
|
|
- vo.setProjectName(order.getProjectName());
|
|
|
- vo.setProjectDuration(order.getProjectDuration());
|
|
|
- vo.setHighlight(order.getHighlight());
|
|
|
- vo.setFinalAmount(order.getFinalAmount());
|
|
|
- vo.setBasePrice(order.getBasePrice());
|
|
|
- vo.setTrafficFee(order.getTrafficFee());
|
|
|
- vo.setCouponDiscount(order.getCouponDiscount());
|
|
|
- vo.setOrderNo(order.getOrderNo());
|
|
|
vo.setOrderId(String.valueOf(order.getId()));
|
|
|
vo.setMerchantName(order.getMerchantNickName());
|
|
|
- vo.setMerchantId(order.getMerchantId());
|
|
|
- // 时间处理
|
|
|
- if (order.getAppointmentStartTime() != null) {
|
|
|
- LocalDateTime start = order.getAppointmentStartTime();
|
|
|
- // 预约结束时间 = 开始时间 + 项目时长(分钟)
|
|
|
- LocalDateTime end = start.plusMinutes(order.getProjectDuration() == null ? 0 : order.getProjectDuration());
|
|
|
|
|
|
- // 原始格式
|
|
|
- vo.setAppointmentStartTime(start.format(DATE_TIME_FORMATTER));
|
|
|
- vo.setAppointmentEndTime(end.format(DATE_TIME_FORMATTER));
|
|
|
+ // 生成“5月12日 16:00-18:00”格式
|
|
|
+ String timeRange = formatTimeRange(order.getAppointmentStartTime(), order.getProjectDuration());
|
|
|
+ vo.setAppointmentTimeRange(timeRange);
|
|
|
|
|
|
- // 生成“5月12日 16:00-18:00”格式
|
|
|
- String timeRange = formatAppointmentTimeRange(start, end);
|
|
|
- vo.setAppointmentTimeRange(timeRange);
|
|
|
- }
|
|
|
- if (order.getCreateTime() != null) {
|
|
|
- vo.setCreateTime(DATE_FORMAT.format(order.getCreateTime()));
|
|
|
- }
|
|
|
- if (order.getPaidTime() != null) {
|
|
|
- vo.setPaidTime(order.getPaidTime().format(DATE_TIME_FORMATTER));
|
|
|
- }
|
|
|
-
|
|
|
- vo.setContactAddresInfo(order.getContactAddressInfo());
|
|
|
// 联系信息组合:姓名 + 手机号(中间4位脱敏)
|
|
|
String contactInfo = buildContactInfo(order.getContactPersonName(), order.getContactPhoneNumber());
|
|
|
vo.setContactInfo(contactInfo);
|
|
|
-
|
|
|
- vo.setPaymentMethod(order.getPaymentMethod());
|
|
|
vo.setPaymentMethodName(PaymentMethodEnum.getNameByCode(order.getPaymentMethod()));
|
|
|
|
|
|
// 获取订单售后数据
|
|
|
@@ -1117,27 +1070,6 @@ public class TOrderServiceImpl extends BaseServiceImpl<TOrderMapper, TOrder> imp
|
|
|
return vo;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 格式化预约时间范围
|
|
|
- *
|
|
|
- * @param start 预约开始时间
|
|
|
- * @param end 预约结束时间
|
|
|
- * @return 示例:5月12日 16:00-18:00
|
|
|
- */
|
|
|
- private String formatAppointmentTimeRange(LocalDateTime start, LocalDateTime end) {
|
|
|
- if (start == null) {
|
|
|
- return "";
|
|
|
- }
|
|
|
- // 日期格式:M月d日(不带年份,同一年内)
|
|
|
- DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("M月d日");
|
|
|
- String dateStr = start.format(dateFormatter);
|
|
|
- // 时间格式:HH:mm
|
|
|
- DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm");
|
|
|
- String startTime = start.format(timeFormatter);
|
|
|
- String endTime = (end != null) ? end.format(timeFormatter) : "";
|
|
|
- return dateStr + " " + startTime + "-" + endTime;
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 构建联系信息(姓名 + 脱敏手机号)
|
|
|
* 示例:王先生,188******55
|
|
|
@@ -1164,9 +1096,7 @@ public class TOrderServiceImpl extends BaseServiceImpl<TOrderMapper, TOrder> imp
|
|
|
private OrderStatusFlowVO convertToFlowVO(OrderStatusFlow flow) {
|
|
|
OrderStatusFlowVO vo = new OrderStatusFlowVO();
|
|
|
vo.setStatusName(OrderStatusEnum.getInfoByCode(flow.getStatus()));
|
|
|
- if (flow.getCreateTime() != null) {
|
|
|
- vo.setCreateTime(DATE_FORMAT.format(flow.getCreateTime()));
|
|
|
- }
|
|
|
+ vo.setCreateTime(flow.getCreateTime());
|
|
|
return vo;
|
|
|
}
|
|
|
|