qxy 3 тижнів тому
батько
коміт
246afb7e50

+ 2 - 0
alien-entity/src/main/java/shop/alien/mapper/CommentAppealMapper.java

@@ -40,6 +40,7 @@ public interface CommentAppealMapper extends BaseMapper<CommentAppeal> {
      *
      * @param page         分页对象
      * @param status       申诉状态
+     * @param orderNumber  评价单号(模糊查询)
      * @param userName     用户姓名(模糊查询)
      * @param userPhone    用户电话
      * @param lawyerName   律师姓名
@@ -51,6 +52,7 @@ public interface CommentAppealMapper extends BaseMapper<CommentAppeal> {
     com.baomidou.mybatisplus.core.metadata.IPage<CommentAppealVo> getAppealPageWithFilters(
             com.baomidou.mybatisplus.core.metadata.IPage<CommentAppealVo> page,
             @Param("status") Integer status,
+            @Param("orderNumber") String orderNumber,
             @Param("userName") String userName,
             @Param("userPhone") String userPhone,
             @Param("lawyerName") String lawyerName,

+ 2 - 1
alien-entity/src/main/java/shop/alien/mapper/LawyerUserMapper.java

@@ -130,7 +130,8 @@ Integer updateLawyerUser(LawyerUser user);
    List<LawyerUserVo> selectLawyerUserList(@Param("name") String name,
                                           @Param("phone") String phone,
                                           @Param("firmId") Integer firmId,
-                                          @Param("createdTimeStart") String createdTimeStart);
+                                          @Param("startTime") String startTime,
+                                           @Param("endTime") String endTime);
    
    Long selectLawyerUserListCount(@Param("name") String name,
                                   @Param("phone") String phone,

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

@@ -186,6 +186,9 @@
         <if test="status != null">
             AND ca.status = #{status}
         </if>
+        <if test="orderNumber != null and orderNumber != ''">
+            AND orv.order_number LIKE CONCAT('%', #{orderNumber}, '%')
+        </if>
         <if test="userName != null and userName != ''">
             AND lu.user_name LIKE CONCAT('%', #{userName}, '%')
         </if>

+ 2 - 1
alien-entity/src/main/resources/mapper/LawyerUserMapper.xml

@@ -128,7 +128,8 @@
         <if test="name != null and name != ''">AND user.name LIKE CONCAT('%', #{name}, '%')</if>
         <if test="phone != null and phone != ''">AND user.phone LIKE CONCAT('%', #{phone}, '%')</if>
         <if test="firmId != null">AND user.firm_id = #{firmId}</if>
-        <if test="createdTimeStart != null and createdTimeStart != ''">AND user.created_time &gt;= #{createdTimeStart}</if>
+        <if test="startTime != null and startTime != ''">AND user.practice_start_date &gt;= #{startTime}</if>
+        <if test="endTime != null and endTime != ''">AND user.practice_start_date &lt;= #{endTime}</if>
         GROUP BY
         user.id
         ORDER BY user.created_time DESC

+ 31 - 6
alien-gateway/src/main/java/shop/alien/gateway/controller/SystemController.java

@@ -44,15 +44,40 @@ public class SystemController {
         return R.data(systemService.login(systemLogin.getUsername(), systemLogin.getPassword()));
     }
 
-    @ApiOperation("web中台退出登录")
+    /**
+     * web中台退出登录
+     * <p>
+     * 退出登录时会执行以下操作:
+     * 1. 参数校验:验证用户登录信息是否有效
+     * 2. 删除Redis中的token缓存
+     * 3. 记录退出登录日志
+     * </p>
+     *
+     * @param userLoginInfo 用户登录信息(从token中解析,包含userId、userName等信息)
+     * @return R<SystemLoginVo> 退出登录结果,包含退出状态信息
+     * @throws RuntimeException 当用户信息为空或退出登录失败时抛出异常
+     */
+    @ApiOperation(value = "web中台退出登录", notes = "用户退出登录,清除Redis中的token缓存")
     @ApiOperationSupport(order = 2)
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "userName", value = "用户名", dataType = "String", paramType = "query"),
-            @ApiImplicitParam(name = "userPassword", value = "密码", dataType = "String", paramType = "query"),
-    })
     @PostMapping(value = "/logout")
     public R<SystemLoginVo> logout(@ApiIgnore @TokenInfo UserLoginInfo userLoginInfo) {
-        return R.success("退出成功");
+        log.info("SystemController.logout?userId={}, userName={}", 
+                userLoginInfo != null ? userLoginInfo.getUserId() : null,
+                userLoginInfo != null ? userLoginInfo.getUserName() : null);
+        
+        try {
+            SystemLoginVo result = systemService.logout(userLoginInfo);
+            log.info("SystemController.logout成功?userId={}, userName={}", 
+                    userLoginInfo != null ? userLoginInfo.getUserId() : null,
+                    userLoginInfo != null ? userLoginInfo.getUserName() : null);
+            return R.data(result, "退出成功");
+        } catch (Exception e) {
+            log.error("SystemController.logout失败?userId={}, userName={}, error={}", 
+                    userLoginInfo != null ? userLoginInfo.getUserId() : null,
+                    userLoginInfo != null ? userLoginInfo.getUserName() : null,
+                    e.getMessage(), e);
+            return R.fail("退出登录失败:" + e.getMessage());
+        }
     }
 
     @ApiOperation("web中台系统用户注册")

+ 14 - 1
alien-gateway/src/main/java/shop/alien/gateway/service/SystemService.java

@@ -17,7 +17,20 @@ public interface SystemService {
 
     public SystemLoginVo login(String username, String password);
 
-    public SystemLoginVo logout(UserLoginInfo userLoginInfo);
+    /**
+     * 退出登录
+     * <p>
+     * 退出登录时会执行以下操作:
+     * 1. 参数校验:验证用户登录信息是否有效
+     * 2. 删除Redis中的token缓存(key格式:web_用户名)
+     * 3. 返回退出登录结果
+     * </p>
+     *
+     * @param userLoginInfo 用户登录信息,包含userId、userName等信息
+     * @return SystemLoginVo 退出登录结果,包含退出状态信息
+     * @throws IllegalArgumentException 当用户信息为空或用户名为空时抛出
+     */
+    SystemLoginVo logout(UserLoginInfo userLoginInfo);
 
     /**
      * 系统用户注册

+ 54 - 2
alien-gateway/src/main/java/shop/alien/gateway/service/impl/SystemServiceImpl.java

@@ -3,6 +3,7 @@ package shop.alien.gateway.service.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -30,6 +31,7 @@ import java.util.Map;
  * @author ssk
  * @since 2025-02-20
  */
+@Slf4j
 @Service
 @RequiredArgsConstructor
 public class SystemServiceImpl implements SystemService {
@@ -92,10 +94,60 @@ public class SystemServiceImpl implements SystemService {
         return result;
     }
 
+    /**
+     * 退出登录
+     * <p>
+     * 退出登录时会执行以下操作:
+     * 1. 参数校验:验证用户登录信息是否有效
+     * 2. 删除Redis中的token缓存(key格式:web_用户名)
+     * 3. 返回退出登录结果
+     * </p>
+     *
+     * @param userLoginInfo 用户登录信息,包含userId、userName等信息
+     * @return SystemLoginVo 退出登录结果,包含退出状态信息
+     * @throws IllegalArgumentException 当用户信息为空或用户名为空时抛出
+     */
     @Override
     public SystemLoginVo logout(UserLoginInfo userLoginInfo) {
-        //JWT移除token
-        return null;
+        // 参数校验
+        if (userLoginInfo == null) {
+            log.warn("退出登录失败:用户登录信息为空");
+            throw new IllegalArgumentException("用户登录信息不能为空");
+        }
+        
+        if (!StringUtils.hasText(userLoginInfo.getUserName())) {
+            log.warn("退出登录失败:用户名为空,userId={}", userLoginInfo.getUserId());
+            throw new IllegalArgumentException("用户名不能为空");
+        }
+        
+        log.info("开始退出登录,userId={}, userName={}", userLoginInfo.getUserId(), userLoginInfo.getUserName());
+        
+        try {
+            // 删除Redis中的token缓存
+            String redisKey = "web_" + userLoginInfo.getUserName();
+            String existingToken = baseRedisService.getString(redisKey);
+            
+            if (StringUtils.hasText(existingToken)) {
+                baseRedisService.delete(redisKey);
+                log.info("删除Redis token成功,redisKey={}, userId={}, userName={}", 
+                        redisKey, userLoginInfo.getUserId(), userLoginInfo.getUserName());
+            } else {
+                log.warn("Redis中不存在token,可能已过期或已删除,redisKey={}, userId={}, userName={}", 
+                        redisKey, userLoginInfo.getUserId(), userLoginInfo.getUserName());
+            }
+            
+            // 构建返回结果
+            SystemLoginVo result = new SystemLoginVo();
+            result.setResult(true);
+            result.setMessage("退出登录成功");
+            
+            log.info("退出登录成功,userId={}, userName={}", userLoginInfo.getUserId(), userLoginInfo.getUserName());
+            return result;
+        } catch (Exception e) {
+            log.error("退出登录失败,userId={}, userName={}, error={}", 
+                    userLoginInfo.getUserId(), userLoginInfo.getUserName(), e.getMessage(), e);
+            throw new RuntimeException("退出登录失败:" + e.getMessage(), e);
+        }
     }
 
     @Override

+ 10 - 12
alien-lawyer/src/main/java/shop/alien/lawyer/controller/CommentAppealController.java

@@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.CommentAppeal;
+import shop.alien.entity.store.dto.AuditAppealRequestDto;
 import shop.alien.entity.store.vo.CommentAppealVo;
 import shop.alien.lawyer.service.CommentAppealService;
 
@@ -49,17 +50,12 @@ public class CommentAppealController {
     @ApiOperation(value = "审核申诉", notes = "管理员审核申诉,状态:1-已通过,2-已驳回。审核通过时会删除评价及回复,并发送通知给相关用户")
     @ApiOperationSupport(order = 2)
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "id", value = "申诉ID", dataType = "Integer", paramType = "query", required = true),
-            @ApiImplicitParam(name = "status", value = "审核状态:1-已通过,2-已驳回", dataType = "Integer", paramType = "query", required = true),
-            @ApiImplicitParam(name = "reviewReasons", value = "审核原因", dataType = "String", paramType = "query")
+            @ApiImplicitParam(name = "auditAppealRequestDto", value = "审核申诉请求", dataType = "AuditAppealRequestDto", paramType = "body", required = true)
     })
     @PostMapping("/audit")
-    public R<Boolean> auditAppeal(
-            @RequestParam("id") Integer id,
-            @RequestParam("status") Integer status,
-            @RequestParam(required = false) String reviewReasons) {
-        log.info("CommentAppealController.auditAppeal?id={}, status={}, reviewReasons={}", id, status, reviewReasons);
-        return commentAppealService.auditAppeal(id, status, reviewReasons);
+    public R<Boolean> auditAppeal(@RequestBody AuditAppealRequestDto auditAppealRequestDto) {
+        log.info("CommentAppealController.auditAppeal?auditAppealRequestDto={}", auditAppealRequestDto);
+        return commentAppealService.auditAppeal(auditAppealRequestDto.getId(), auditAppealRequestDto.getStatus(), auditAppealRequestDto.getReviewReasons());
     }
 
     @ApiOperation(value = "中台申诉列表", notes = "分页查询申诉列表,支持多条件筛选,包含订单编号、用户信息、律师信息等")
@@ -68,6 +64,7 @@ public class CommentAppealController {
             @ApiImplicitParam(name = "pageNum", value = "页数(默认1)", dataType = "int", paramType = "query"),
             @ApiImplicitParam(name = "pageSize", value = "页容(默认10)", dataType = "int", paramType = "query"),
             @ApiImplicitParam(name = "status", value = "申诉状态:0-待处理,1-已通过,2-已驳回", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "orderNumber", value = "评价单号(模糊查询)", dataType = "String", paramType = "query"),
             @ApiImplicitParam(name = "userName", value = "用户姓名(模糊查询)", dataType = "String", paramType = "query"),
             @ApiImplicitParam(name = "userPhone", value = "用户电话(模糊查询)", dataType = "String", paramType = "query"),
             @ApiImplicitParam(name = "lawyerName", value = "律师姓名(模糊查询)", dataType = "String", paramType = "query"),
@@ -80,15 +77,16 @@ public class CommentAppealController {
             @RequestParam int pageNum,
             @RequestParam int pageSize,
             @RequestParam(required = false) Integer status,
+            @RequestParam(required = false) String orderNumber,
             @RequestParam(required = false) String userName,
             @RequestParam(required = false) String userPhone,
             @RequestParam(required = false) String lawyerName,
             @RequestParam(required = false) String lawyerPhone,
             @RequestParam(required = false) String startTime,
             @RequestParam(required = false) String endTime) {
-        log.info("CommentAppealController.getAppealPage?pageNum={}, pageSize={}, status={}, userName={}, userPhone={}, lawyerName={}, lawyerPhone={}, startTime={}, endTime={}",
-                pageNum, pageSize, status, userName, userPhone, lawyerName, lawyerPhone, startTime, endTime);
-        return commentAppealService.getAppealPage(pageNum, pageSize, status, userName, userPhone, lawyerName, lawyerPhone, startTime, endTime);
+        log.info("CommentAppealController.getAppealPage?pageNum={}, pageSize={}, status={}, orderNumber={}, userName={}, userPhone={}, lawyerName={}, lawyerPhone={}, startTime={}, endTime={}",
+                pageNum, pageSize, status, orderNumber, userName, userPhone, lawyerName, lawyerPhone, startTime, endTime);
+        return commentAppealService.getAppealPage(pageNum, pageSize, status, orderNumber, userName, userPhone, lawyerName, lawyerPhone, startTime, endTime);
     }
 
     @ApiOperation(value = "获取申诉详情", notes = "根据申诉ID获取申诉详情,包含评价和用户信息")

+ 8 - 6
alien-lawyer/src/main/java/shop/alien/lawyer/controller/LawyerUserController.java

@@ -236,20 +236,22 @@ public class LawyerUserController {
             @ApiImplicitParam(name = "name", value = "姓名(支持模糊查询)", dataType = "String", paramType = "query", required = false),
             @ApiImplicitParam(name = "phone", value = "手机号(支持模糊查询)", dataType = "String", paramType = "query", required = false),
             @ApiImplicitParam(name = "firmId", value = "律所ID", dataType = "Integer", paramType = "query", required = false),
-            @ApiImplicitParam(name = "createdTimeStart", value = "创建时间开始", dataType = "String", paramType = "query", required = false),
+            @ApiImplicitParam(name = "startTime", value = "开始日期(用于查询执业开始日期practice_start_date,格式:yyyy-MM-dd)", dataType = "String", paramType = "query", required = false),
+            @ApiImplicitParam(name = "endTime", value = "结束日期(用于查询执业开始日期practice_start_date,格式:yyyy-MM-dd)", dataType = "String", paramType = "query", required = false),
             @ApiImplicitParam(name = "page", value = "页码(默认1)", dataType = "int", paramType = "query"),
-            @ApiImplicitParam(name = "pageSize", value = "每页数量(默认10)", dataType = "int", paramType = "query")
+            @ApiImplicitParam(name = "size", value = "每页数量(默认10)", dataType = "int", paramType = "query")
     })
     @GetMapping("/getLawyerList")
     public R<IPage<LawyerUserVo>> getLawyerList(@RequestParam(required = false) String name,
                                                 @RequestParam(required = false) String phone,
                                                 @RequestParam(required = false) Integer firmId,
-                                                @RequestParam(required = false) String createdTimeStart,
+                                                @RequestParam(required = false) String startTime,
+                                                @RequestParam(required = false) String endTime,
                                                 @RequestParam int page,
                                                 @RequestParam int size) {
-        log.info("LawyerUserController.getLawyerList?name={},phone={},firmId={},createdTimeStart={},page={},size={}",
-                name, phone, firmId, createdTimeStart, page, size);
-        return lawyerUserService.getLawyerList(name, phone, firmId, createdTimeStart, page, size);
+        log.info("LawyerUserController.getLawyerList?name={},phone={},firmId={},startTime={},endTime={},page={},size={}",
+                name, phone, firmId, startTime, endTime, page, size);
+        return lawyerUserService.getLawyerList(name, phone, firmId, startTime, endTime, page, size);
     }
 
 

+ 2 - 1
alien-lawyer/src/main/java/shop/alien/lawyer/service/CommentAppealService.java

@@ -40,6 +40,7 @@ public interface CommentAppealService extends IService<CommentAppeal> {
      * @param pageNum     页数
      * @param pageSize    页容
      * @param status      申诉状态 0:待处理, 1:已通过, 2:已驳回
+     * @param orderNumber 评价单号(可选,模糊查询)
      * @param userName    用户姓名(可选,模糊查询)
      * @param userPhone   用户电话(可选)
      * @param lawyerName  律师姓名(可选)
@@ -49,7 +50,7 @@ public interface CommentAppealService extends IService<CommentAppeal> {
      * @return 分页结果
      */
     R<IPage<CommentAppealVo>> getAppealPage(Integer pageNum, Integer pageSize, Integer status,
-                                             String userName, String userPhone, String lawyerName, String lawyerPhone,
+                                             String orderNumber, String userName, String userPhone, String lawyerName, String lawyerPhone,
                                              String startTime, String endTime);
 
     /**

+ 2 - 1
alien-lawyer/src/main/java/shop/alien/lawyer/service/LawyerUserService.java

@@ -157,7 +157,8 @@ public interface LawyerUserService extends IService<LawyerUser> {
     R<IPage<LawyerUserVo>> getLawyerList(String name,
                                          String phone,
                                          Integer firmId,
-                                         String createdTimeStart,
+                                         String startTime,
+                                         String endTime,
                                          int page,
                                          int pageSize);
 }

+ 6 - 5
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/CommentAppealServiceImpl.java

@@ -151,7 +151,8 @@ public class CommentAppealServiceImpl extends ServiceImpl<CommentAppealMapper, C
 
             // 如果申诉通过,删除评价及该评价下的所有评论和回复
             if (status == 1) {
-                deleteReviewAndRelatedData(appeal.getCommentId());
+//                deleteReviewAndRelatedData(appeal.getCommentId());
+                orderReviewService.deleteReview(appeal.getCommentId(),null);
             }
 
             // 发送通知
@@ -352,13 +353,13 @@ public class CommentAppealServiceImpl extends ServiceImpl<CommentAppealMapper, C
 
     @Override
     public R<IPage<CommentAppealVo>> getAppealPage(Integer pageNum, Integer pageSize, Integer status,
-                                                     String userName, String userPhone, String lawyerName, String lawyerPhone,
+                                                     String orderNumber, String userName, String userPhone, String lawyerName, String lawyerPhone,
                                                      String startTime, String endTime) {
-        log.info("CommentAppealServiceImpl.getAppealPage?pageNum={}, pageSize={}, status={}, userName={}, userPhone={}, lawyerName={}, lawyerPhone={}, startTime={}, endTime={}",
-                pageNum, pageSize, status, userName, userPhone, lawyerName, lawyerPhone, startTime, endTime);
+        log.info("CommentAppealServiceImpl.getAppealPage?pageNum={}, pageSize={}, status={}, orderNumber={}, userName={}, userPhone={}, lawyerName={}, lawyerPhone={}, startTime={}, endTime={}",
+                pageNum, pageSize, status, orderNumber, userName, userPhone, lawyerName, lawyerPhone, startTime, endTime);
 
         Page<CommentAppealVo> page = new Page<>(pageNum, pageSize);
-        IPage<CommentAppealVo> pageResult = baseMapper.getAppealPageWithFilters(page, status, userName, userPhone, lawyerName, lawyerPhone, startTime, endTime);
+        IPage<CommentAppealVo> pageResult = baseMapper.getAppealPageWithFilters(page, status, orderNumber, userName, userPhone, lawyerName, lawyerPhone, startTime, endTime);
 
         // 处理数据转换
         for (CommentAppealVo vo : pageResult.getRecords()) {

+ 2 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/LawFirmPaymentServiceImpl.java

@@ -29,3 +29,5 @@ public class LawFirmPaymentServiceImpl extends ServiceImpl<LawFirmPaymentMapper,
 
 
 
+
+

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

@@ -676,14 +676,15 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
     public R<IPage<LawyerUserVo>> getLawyerList(String name,
                                                 String phone,
                                                 Integer firmId,
-                                                String createdTimeStart,
+                                                String startTime,
+                                                String endTime,
                                                 int page,
                                                 int size) {
-        log.info("LawyerUserServiceImpl.getLawyerList?name={},phone={},firmId={},createdTimeStart={},page={},pageSize={}",
-                name, phone, firmId, createdTimeStart, page, size);
+        log.info("LawyerUserServiceImpl.getLawyerList?name={},phone={},firmId={},startTime={},endTime={},page={},pageSize={}",
+                name, phone, firmId, startTime, endTime, page, size);
 
         // 查询分页数据(在SQL层面使用LIMIT进行分页)
-        List<LawyerUserVo> list = lawyerUserMapper.selectLawyerUserList(name, phone, firmId, createdTimeStart);
+        List<LawyerUserVo> list = lawyerUserMapper.selectLawyerUserList(name, phone, firmId, startTime, endTime);
         if (list == null) {
             list = new ArrayList<>();
         }

+ 2 - 2
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/OrderReviewServiceImpl.java

@@ -329,13 +329,13 @@ public class OrderReviewServiceImpl extends ServiceImpl<OrderReviewMapper, Order
                 replyUpdateWrapper.set(ReviewComment::getDeleteFlag, 1);
                 replyUpdateWrapper.set(ReviewComment::getUpdatedUserId, userId);
                 replyUpdateWrapper.set(ReviewComment::getUpdatedTime, new Date());
-                reviewCommentService.update(replyUpdateWrapper);
+                reviewCommentService.remove(replyUpdateWrapper);
                 
                 // 删除评论
                 comment.setDeleteFlag(1);
                 comment.setUpdatedUserId(userId);
                 comment.setUpdatedTime(new Date());
-                reviewCommentService.updateById(comment);
+                reviewCommentService.removeById(comment.getId());
             }
             
             log.info("删除评价成功,评价ID={}", reviewId);