Преглед изворни кода

Merge remote-tracking branch 'origin/sit' into sit

刘云鑫 пре 3 недеља
родитељ
комит
ec914c6ee1

+ 1 - 1
alien-entity/src/main/java/shop/alien/entity/store/dto/StoreRenovationRequirementDto.java

@@ -86,7 +86,7 @@ public class StoreRenovationRequirementDto {
     private List<String> attachmentUrls;
 
     @ApiModelProperty(value = "创建时间")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "M月d日 H:mm", timezone = "GMT+8")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createdTime;
 

+ 3 - 1
alien-entity/src/main/java/shop/alien/mapper/StoreReservationMapper.java

@@ -24,6 +24,7 @@ public interface StoreReservationMapper extends BaseMapper<UserReservation> {
      * @param dateFrom   预约日期起(可选)
      * @param dateTo     预约日期止(可选)
      * @param orderStatus 订单状态(可选,0:待支付 1:待使用 2:已完成 3:已过期 4:已取消 5:已关闭 6:退款中 7:已退款 8:商家预订)
+     * @param reservationUserName 预约用户姓名(可选,模糊查询)
      * @return 预约信息列表
      */
     List<StoreReservationListVo> getStoreReservationList(
@@ -31,6 +32,7 @@ public interface StoreReservationMapper extends BaseMapper<UserReservation> {
             @Param("status") Integer status,
             @Param("dateFrom") Date dateFrom,
             @Param("dateTo") Date dateTo,
-            @Param("orderStatus") Integer orderStatus
+            @Param("orderStatus") Integer orderStatus,
+            @Param("reservationUserName") String reservationUserName
     );
 }

+ 3 - 0
alien-entity/src/main/resources/mapper/StoreReservationMapper.xml

@@ -110,6 +110,9 @@
         <if test="dateTo != null">
             AND ur.reservation_date &lt;= #{dateTo}
         </if>
+        <if test="reservationUserName != null and reservationUserName != ''">
+            AND ur.reservation_user_name LIKE CONCAT('%', #{reservationUserName}, '%')
+        </if>
         <choose>
             <when test="orderStatus != null">
                 AND uro.order_status = #{orderStatus}

+ 4 - 6
alien-entity/src/main/resources/mapper/UserReservationMapper.xml

@@ -181,7 +181,7 @@
 
     <!-- 查询分类下是否有符合条件的预订信息
          条件:订单状态为"待使用"(1)或"已完成"(2)
-         对于"已完成"状态的订单,结束时间需要在当前时间3小时内 -->
+         对于"已完成"状态的订单,要求 当前时间 < 结束时间 + 3小时 -->
     <select id="countReservationsByCategoryAndOrderStatus" resultType="java.lang.Long">
         SELECT COUNT(DISTINCT ur.id)
         FROM user_reservation ur
@@ -194,7 +194,7 @@
             -- 订单状态为"待使用"(1),直接符合条件
             uro.order_status = 1
             OR
-            -- 订单状态为"已完成"(2),需要检查结束时间在3小时内
+            -- 订单状态为"已完成"(2),需要检查 当前时间 小于 订单结束时间+ 3小时
             (
               uro.order_status = 2
               AND ur.end_time IS NOT NULL
@@ -204,8 +204,7 @@
                 (
                   LENGTH(TRIM(ur.end_time)) &gt; 5
                   AND STR_TO_DATE(TRIM(ur.end_time), '%Y-%m-%d %H:%i') IS NOT NULL
-                  AND STR_TO_DATE(TRIM(ur.end_time), '%Y-%m-%d %H:%i') &lt; NOW()
-                  AND STR_TO_DATE(TRIM(ur.end_time), '%Y-%m-%d %H:%i') &gt; DATE_SUB(NOW(), INTERVAL 3 HOUR)
+                  AND DATE_ADD(STR_TO_DATE(TRIM(ur.end_time), '%Y-%m-%d %H:%i'), INTERVAL 3 HOUR) &gt; NOW()
                 )
                 OR
                 -- 如果 end_time 是时间格式 (HH:mm),需要结合 reservation_date
@@ -213,8 +212,7 @@
                   LENGTH(TRIM(ur.end_time)) &lt;= 5
                   AND ur.reservation_date IS NOT NULL
                   AND STR_TO_DATE(CONCAT(DATE_FORMAT(ur.reservation_date, '%Y-%m-%d'), ' ', TRIM(ur.end_time)), '%Y-%m-%d %H:%i') IS NOT NULL
-                  AND STR_TO_DATE(CONCAT(DATE_FORMAT(ur.reservation_date, '%Y-%m-%d'), ' ', TRIM(ur.end_time)), '%Y-%m-%d %H:%i') &lt; NOW()
-                  AND STR_TO_DATE(CONCAT(DATE_FORMAT(ur.reservation_date, '%Y-%m-%d'), ' ', TRIM(ur.end_time)), '%Y-%m-%d %H:%i') &gt; DATE_SUB(NOW(), INTERVAL 3 HOUR)
+                  AND DATE_ADD(STR_TO_DATE(CONCAT(DATE_FORMAT(ur.reservation_date, '%Y-%m-%d'), ' ', TRIM(ur.end_time)), '%Y-%m-%d %H:%i'), INTERVAL 3 HOUR) &gt; NOW()
                 )
               )
             )

+ 9 - 9
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/LawyerUserServiceImpl.java

@@ -736,15 +736,15 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
         }
 
         // 修改执业证、姓名或头像时,先走 AI 执业证核验(与库中数据合并后校验)
-        if (lawyerUserVo.getCertificateImage() != null || lawyerUserVo.getName() != null || lawyerUserVo.getHeadImg() != null) {
-            String certUrl = lawyerUserVo.getCertificateImage() != null ? lawyerUserVo.getCertificateImage() : existing.getCertificateImage();
-            String name = lawyerUserVo.getName() != null ? lawyerUserVo.getName() : existing.getName();
-            String headUrl = lawyerUserVo.getHeadImg() != null ? lawyerUserVo.getHeadImg() : existing.getHeadImg();
-            LawyerLicenseVerifyUtil.VerifyResult licenseResult = lawyerLicenseVerifyUtil.verify(certUrl, name, headUrl);
-            if (!licenseResult.isPassed()) {
-                return R.fail("执业证核验失败");
-            }
-        }
+//        if (lawyerUserVo.getCertificateImage() != null || lawyerUserVo.getName() != null || lawyerUserVo.getHeadImg() != null) {
+//            String certUrl = lawyerUserVo.getCertificateImage() != null ? lawyerUserVo.getCertificateImage() : existing.getCertificateImage();
+//            String name = lawyerUserVo.getName() != null ? lawyerUserVo.getName() : existing.getName();
+//            String headUrl = lawyerUserVo.getHeadImg() != null ? lawyerUserVo.getHeadImg() : existing.getHeadImg();
+//            LawyerLicenseVerifyUtil.VerifyResult licenseResult = lawyerLicenseVerifyUtil.verify(certUrl, name, headUrl);
+//            if (!licenseResult.isPassed()) {
+//                return R.fail("执业证核验失败");
+//            }
+//        }
 
 // 只有当有字段需要更新时才执行更新操作
         if (hasUpdate) {

+ 8 - 5
alien-store/src/main/java/shop/alien/store/controller/StoreReservationController.java

@@ -39,7 +39,8 @@ public class StoreReservationController {
             @ApiImplicitParam(name = "status", value = "预约状态(可选,0:待确认 1:已确认 2:已到店 3:已取消 4:未到店超时)", dataType = "Integer", paramType = "query", required = false),
             @ApiImplicitParam(name = "dateFrom", value = "预约日期起 yyyy-MM-dd", dataType = "String", paramType = "query", required = false),
             @ApiImplicitParam(name = "dateTo", value = "预约日期止 yyyy-MM-dd", dataType = "String", paramType = "query", required = false),
-            @ApiImplicitParam(name = "orderStatus", value = "订单状态(可选,0:待支付 1:待使用 2:已完成 3:已过期 4:已取消 5:已关闭 6:退款中 7:已退款 8:商家预订;不传则默认查询:待使用、已完成、已退款三种状态)", dataType = "Integer", paramType = "query", required = false)
+            @ApiImplicitParam(name = "orderStatus", value = "订单状态(可选,0:待支付 1:待使用 2:已完成 3:已过期 4:已取消 5:已关闭 6:退款中 7:已退款 8:商家预订;不传则默认查询:待使用、已完成、已退款三种状态)", dataType = "Integer", paramType = "query", required = false),
+            @ApiImplicitParam(name = "reservationUserName", value = "预约用户姓名(可选,模糊查询)", dataType = "String", paramType = "query", required = false)
     })
     @GetMapping("/list")
     public R<List<StoreReservationListVo>> getReservationList(
@@ -47,16 +48,18 @@ public class StoreReservationController {
             @RequestParam(required = false) Integer status,
             @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date dateFrom,
             @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date dateTo,
-            @RequestParam(required = false) Integer orderStatus) {
-        log.info("StoreReservationController.getReservationList?storeId={}, status={}, dateFrom={}, dateTo={}, orderStatus={}",
-                storeId, status, dateFrom, dateTo, orderStatus);
+            @RequestParam(required = false) Integer orderStatus,
+            @RequestParam(required = false) String reservationUserName) {
+        log.info("StoreReservationController.getReservationList?storeId={}, status={}, dateFrom={}, dateTo={}, orderStatus={}, reservationUserName={}",
+                storeId, status, dateFrom, dateTo, orderStatus, reservationUserName);
 
         if (storeId == null) {
             return R.fail("门店ID不能为空");
         }
 
         try {
-            List<StoreReservationListVo> list = storeReservationService.getStoreReservationList(storeId, status, dateFrom, dateTo, orderStatus);
+            List<StoreReservationListVo> list = storeReservationService.getStoreReservationList(
+                    storeId, status, dateFrom, dateTo, orderStatus, reservationUserName);
             return R.data(list);
         } catch (Exception e) {
             log.error("查询商家端预约信息列表失败", e);

+ 2 - 1
alien-store/src/main/java/shop/alien/store/service/StoreReservationService.java

@@ -21,10 +21,11 @@ public interface StoreReservationService {
      * @param dateFrom   预约日期起(可选)
      * @param dateTo     预约日期止(可选)
      * @param orderStatus 订单状态(可选,0:待支付 1:待使用 2:已完成 3:已过期 4:已取消 5:已关闭 6:退款中 7:已退款 8:商家预订)
+     * @param reservationUserName 预约用户姓名(可选,模糊查询)
      * @return 预约信息列表
      */
     List<StoreReservationListVo> getStoreReservationList(
-            Integer storeId, Integer status, Date dateFrom, Date dateTo, Integer orderStatus);
+            Integer storeId, Integer status, Date dateFrom, Date dateTo, Integer orderStatus, String reservationUserName);
 
     /**
      * 商家端取消预约

+ 16 - 15
alien-store/src/main/java/shop/alien/store/service/impl/StoreReservationServiceImpl.java

@@ -95,15 +95,16 @@ public class StoreReservationServiceImpl extends ServiceImpl<StoreReservationMap
     }
 
     @Override
-    public List<StoreReservationListVo> getStoreReservationList(Integer storeId, Integer status, Date dateFrom, Date dateTo, Integer orderStatus) {
-        log.info("StoreReservationServiceImpl.getStoreReservationList?storeId={}, status={}, dateFrom={}, dateTo={}, orderStatus={}",
-                storeId, status, dateFrom, dateTo, orderStatus);
+    public List<StoreReservationListVo> getStoreReservationList(Integer storeId, Integer status, Date dateFrom, Date dateTo,
+                                                                 Integer orderStatus, String reservationUserName) {
+        log.info("StoreReservationServiceImpl.getStoreReservationList?storeId={}, status={}, dateFrom={}, dateTo={}, orderStatus={}, reservationUserName={}",
+                storeId, status, dateFrom, dateTo, orderStatus, reservationUserName);
 
         if (storeId == null) {
             throw new RuntimeException("门店ID不能为空");
         }
 
-        return baseMapper.getStoreReservationList(storeId, status, dateFrom, dateTo, orderStatus);
+        return baseMapper.getStoreReservationList(storeId, status, dateFrom, dateTo, orderStatus, reservationUserName);
     }
 
     @Override
@@ -540,22 +541,22 @@ public class StoreReservationServiceImpl extends ServiceImpl<StoreReservationMap
             return true;
         }
 
-        // 判断订单状态:只有已取消(4)、已退款(7)、已完成(2)状态才能删除
+        // 判断订单状态:只有已取消(4)、已退款(7)、已完成(2)、已过期(3)状态才能删除
         Integer orderStatus = order.getOrderStatus();
         if (orderStatus == null) {
             throw new RuntimeException("订单状态异常,无法删除");
         }
 
-        // 定义可删除的订单状态:2:已完成, 4:已取消, 7:已退款
-        boolean canDelete = orderStatus == 2 || orderStatus == 4 || orderStatus == 7;
+        // 定义可删除的订单状态:2:已完成, 3:已过期, 4:已取消, 7:已退款
+        boolean canDelete = orderStatus == 2 || orderStatus == 3 || orderStatus == 4 || orderStatus == 7;
 
         if (!canDelete) {
             String statusText = getOrderStatusText(orderStatus);
-            throw new RuntimeException("订单状态为" + statusText + ",不允许删除。只有已取消、已退款、已完成状态的订单可以删除");
+            throw new RuntimeException("订单状态为" + statusText + ",不允许删除。只有已取消、已退款、已完成、已过期状态的订单可以删除");
         }
 
-        // 已完成订单:仅当当前时间 > 预约结束时间 + 3小时才允许删除
-        validateCompletedReservationDeleteTimeWindow(reservation, orderStatus);
+        // 已过期订单:仅当当前时间 > 预约结束时间 + 3小时才允许删除
+        validateExpiredReservationDeleteTimeWindow(reservation, orderStatus);
 
         // 删除订单记录(逻辑删除)
         boolean orderDeleteResult = userReservationOrderService.removeById(order.getId());
@@ -575,11 +576,11 @@ public class StoreReservationServiceImpl extends ServiceImpl<StoreReservationMap
     }
 
     /**
-     * 删除校验:已完成状态的预订,需满足“当前时间 > 结束时间 + 3小时”。
+     * 删除校验:已过期状态的预订,需满足“当前时间 > 结束时间 + 3小时”。
      */
-    private void validateCompletedReservationDeleteTimeWindow(UserReservation reservation, Integer orderStatus) {
-        // 仅校验已完成状态
-        if (orderStatus == null || orderStatus != 2) {
+    private void validateExpiredReservationDeleteTimeWindow(UserReservation reservation, Integer orderStatus) {
+        // 仅校验已过期状态
+        if (orderStatus == null || orderStatus != 3) {
             return;
         }
 
@@ -594,7 +595,7 @@ public class StoreReservationServiceImpl extends ServiceImpl<StoreReservationMap
         Date endPlusThreeHours = calendar.getTime();
 
         if (!new Date().after(endPlusThreeHours)) {
-            throw new RuntimeException("已完成订单需在结束3小时后才可删除");
+            throw new RuntimeException("已过期订单需在结束3小时后才可删除");
         }
     }