浏览代码

中台 律师注销列表 商户注销列表

qinxuyang 4 小时之前
父节点
当前提交
996da6e6b8

+ 48 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/LawyerUserLogoutListVo.java

@@ -0,0 +1,48 @@
+package shop.alien.entity.store.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 中台-律师注销列表
+ */
+@Data
+@JsonInclude
+@ApiModel(value = "LawyerUserLogoutListVo", description = "律师注销列表")
+public class LawyerUserLogoutListVo {
+
+    @ApiModelProperty(value = "律师用户ID")
+    private Integer id;
+
+    @ApiModelProperty(value = "律师姓名(lawyer_user.name)")
+    private String name;
+
+    @ApiModelProperty(value = "电话")
+    private String phone;
+
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "申请注销时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date applyLogoutTime;
+
+    @ApiModelProperty(value = "注销时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date logoutFinishTime;
+
+    @ApiModelProperty(value = "状态:-1注销中,2已注销")
+    private Integer status;
+
+    @ApiModelProperty(value = "状态文案:注销中/已注销")
+    private String statusName;
+
+    @ApiModelProperty(value = "注销原因")
+    private String logoutReason;
+}

+ 51 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/StoreUserLogoutListVo.java

@@ -0,0 +1,51 @@
+package shop.alien.entity.store.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 中台-商家注销列表
+ */
+@Data
+@JsonInclude
+@ApiModel(value = "StoreUserLogoutListVo", description = "商家注销列表")
+public class StoreUserLogoutListVo {
+
+    @ApiModelProperty(value = "商家用户ID")
+    private Integer id;
+
+    @ApiModelProperty(value = "用户名(store_user.name)")
+    private String name;
+
+    @ApiModelProperty(value = "真实姓名")
+    private String realName;
+
+    @ApiModelProperty(value = "电话")
+    private String phone;
+
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "申请注销时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date applyLogoutTime;
+
+    @ApiModelProperty(value = "注销时间(预计或完成时间)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date logoutFinishTime;
+
+    @ApiModelProperty(value = "状态:-1注销中,2已注销")
+    private Integer status;
+
+    @ApiModelProperty(value = "状态文案:注销中/已注销")
+    private String statusName;
+
+    @ApiModelProperty(value = "注销原因")
+    private String logoutReason;
+}

+ 9 - 0
alien-entity/src/main/java/shop/alien/mapper/LawyerUserMapper.java

@@ -1,6 +1,7 @@
 package shop.alien.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -142,5 +143,13 @@ Integer updateLawyerUser(LawyerUser user);
                                   @Param("firmId") Integer firmId,
                                   @Param("createdTimeStart") String createdTimeStart);
 
+    /**
+     * 中台-律师注销列表(含已逻辑删除记录,不走 TableLogic)
+     */
+    IPage<LawyerUser> selectLogoutPage(IPage<LawyerUser> page,
+                                       @Param("name") String name,
+                                       @Param("phone") String phone,
+                                       @Param("status") Integer status);
+
 }
 

+ 13 - 0
alien-entity/src/main/resources/mapper/LawyerUserMapper.xml

@@ -138,6 +138,19 @@
         ORDER BY user.created_time DESC
     </select>
 
+    <!-- 中台-律师注销列表(含已逻辑删除记录) -->
+    <select id="selectLogoutPage" resultMap="BaseResultMap">
+        SELECT
+            id, phone, name, created_time, updated_time, logout_flag, logout_reason, logout_time, delete_flag, status
+        FROM lawyer_user
+        WHERE logout_flag = 1
+        <if test="name != null and name != ''">AND name LIKE CONCAT('%', #{name}, '%')</if>
+        <if test="phone != null and phone != ''">AND phone LIKE CONCAT('%', #{phone}, '%')</if>
+        <if test="status != null and status == -1">AND (delete_flag = 0 OR delete_flag IS NULL)</if>
+        <if test="status != null and status == 2">AND delete_flag = 1</if>
+        ORDER BY logout_time DESC, created_time DESC
+    </select>
+
     <!-- 查询律师列表总数 -->
     <select id="selectLawyerUserListCount" resultType="java.lang.Long">
         SELECT COUNT(DISTINCT user.id)

+ 22 - 0
alien-store/src/main/java/shop/alien/store/controller/LawyerUserController.java

@@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.LawyerUser;
+import shop.alien.entity.store.vo.LawyerUserLogoutListVo;
 import shop.alien.entity.store.vo.LawyerUserVo;
 import shop.alien.store.service.LawyerUserService;
 import shop.alien.util.myBaticsPlus.QueryBuilder;
@@ -232,6 +233,27 @@ public class LawyerUserController {
         return lawyerUserService.getLawyerList(name, phone, practiceStartDate, firmId, startTime, endTime, page, size);
     }
 
+    @ApiOperation(value = "律师注销列表", notes = "中台系统管理-律师管理-律师注销数据,数据源 lawyer_user")
+    @ApiOperationSupport(order = 18)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "页码", dataType = "int", paramType = "query", defaultValue = "1"),
+            @ApiImplicitParam(name = "pageSize", value = "页大小", dataType = "int", paramType = "query", defaultValue = "10"),
+            @ApiImplicitParam(name = "name", value = "律师姓名(lawyer_user.name)", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "status", value = "状态:-1注销中,2已注销", dataType = "int", paramType = "query")
+    })
+    @GetMapping("/lawyer_user")
+    public R<IPage<LawyerUserLogoutListVo>> getLawyerUserLogoutPage(
+            @RequestParam(defaultValue = "1") int pageNum,
+            @RequestParam(defaultValue = "10") int pageSize,
+            @RequestParam(required = false) String name,
+            @RequestParam(required = false) String phone,
+            @RequestParam(required = false) Integer status) {
+        log.info("LawyerUserController.getLawyerUserLogoutPage?pageNum={},pageSize={},name={},phone={},status={}",
+                pageNum, pageSize, name, phone, status);
+        return R.data(lawyerUserService.getLawyerUserLogoutPage(pageNum, pageSize, name, phone, status));
+    }
+
     @ApiOperation("导出中台律师列表")
     @ApiOperationSupport(order = 19)
     @ApiImplicitParams({

+ 23 - 0
alien-store/src/main/java/shop/alien/store/controller/StoreInfoController.java

@@ -56,6 +56,8 @@ public class StoreInfoController {
 
     private final StoreInfoService storeInfoService;
 
+    private final StoreUserService storeUserService;
+
     private final StoreQualificationService storeQualificationService;
 
     private final TagsMainMapper tagsMainMapper;
@@ -629,6 +631,27 @@ public class StoreInfoController {
         return R.success("撤销注销成功");
     }
 
+    @ApiOperation(value = "商家注销列表", notes = "中台系统管理-商家管理-商家注销列表,数据源 store_user")
+    @ApiOperationSupport(order = 16)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "页码", dataType = "int", paramType = "query", defaultValue = "1"),
+            @ApiImplicitParam(name = "pageSize", value = "页大小", dataType = "int", paramType = "query", defaultValue = "10"),
+            @ApiImplicitParam(name = "userName", value = "用户名(store_user.name)", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "status", value = "状态:-1注销中,2已注销", dataType = "int", paramType = "query")
+    })
+    @GetMapping("/store_user")
+    public R<IPage<StoreUserLogoutListVo>> getStoreUserLogoutPage(
+            @RequestParam(defaultValue = "1") int pageNum,
+            @RequestParam(defaultValue = "10") int pageSize,
+            @RequestParam(required = false) String userName,
+            @RequestParam(required = false) String phone,
+            @RequestParam(required = false) Integer status) {
+        log.info("StoreInfoController.getStoreUserLogoutPage?pageNum={},pageSize={},userName={},phone={},status={}",
+                pageNum, pageSize, userName, phone, status);
+        return R.data(storeUserService.getStoreUserLogoutPage(pageNum, pageSize, userName, phone, status));
+    }
+
     /**
      * 八大类用户端筛选
      * 根据筛选条件获取门店信息列表

+ 8 - 0
alien-store/src/main/java/shop/alien/store/service/LawyerUserService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.LawyerUser;
+import shop.alien.entity.store.vo.LawyerUserLogoutListVo;
 import shop.alien.entity.store.vo.LawyerUserVo;
 
 import javax.servlet.http.HttpServletResponse;
@@ -146,5 +147,12 @@ public interface LawyerUserService extends IService<LawyerUser> {
                           String endTime,
                           Integer pageNum,
                           Integer pageSize) throws Exception;
+
+    /**
+     * 中台-律师注销列表(lawyer_user)
+     *
+     * @param name 律师姓名(lawyer_user.name 模糊)
+     */
+    IPage<LawyerUserLogoutListVo> getLawyerUserLogoutPage(int pageNum, int pageSize, String name, String phone, Integer status);
 }
 

+ 12 - 0
alien-store/src/main/java/shop/alien/store/service/StoreUserService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.StoreUser;
+import shop.alien.entity.store.vo.StoreUserLogoutListVo;
 import shop.alien.entity.store.vo.StoreUserVo;
 
 import java.io.IOException;
@@ -193,4 +194,15 @@ public interface StoreUserService extends IService<StoreUser> {
 
 
     List<StoreUser> getChildAccountsByParentId(String Id);
+
+    /**
+     * 中台-商家注销列表(store_user)
+     *
+     * @param pageNum  页码
+     * @param pageSize 页大小
+     * @param userName 用户名(store_user.name 模糊)
+     * @param phone    手机号模糊
+     * @param status   状态:-1注销中,2已注销
+     */
+    IPage<StoreUserLogoutListVo> getStoreUserLogoutPage(int pageNum, int pageSize, String userName, String phone, Integer status);
 }

+ 33 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LawyerUserServiceImpl.java

@@ -14,6 +14,7 @@ import org.springframework.util.StringUtils;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.*;
 import shop.alien.entity.store.excelVo.LawyerUserExcelVo;
+import shop.alien.entity.store.vo.LawyerUserLogoutListVo;
 import shop.alien.entity.store.vo.LawyerUserVo;
 import shop.alien.mapper.LawFirmMapper;
 import shop.alien.mapper.LawyerUserMapper;
@@ -575,5 +576,37 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
             return excelVo;
         }).collect(Collectors.toList());
     }
+
+    @Override
+    public IPage<LawyerUserLogoutListVo> getLawyerUserLogoutPage(int pageNum, int pageSize, String name, String phone, Integer status) {
+        Page<LawyerUser> page = new Page<>(pageNum, pageSize);
+        IPage<LawyerUser> userPage = lawyerUserMapper.selectLogoutPage(page, name, phone, status);
+        Page<LawyerUserLogoutListVo> result = new Page<>(userPage.getCurrent(), userPage.getSize(), userPage.getTotal());
+        result.setRecords(userPage.getRecords().stream().map(this::toLawyerUserLogoutListVo).collect(Collectors.toList()));
+        return result;
+    }
+
+    private LawyerUserLogoutListVo toLawyerUserLogoutListVo(LawyerUser user) {
+        LawyerUserLogoutListVo vo = new LawyerUserLogoutListVo();
+        vo.setId(user.getId());
+        vo.setName(user.getName());
+        vo.setPhone(user.getPhone());
+        vo.setCreatedTime(user.getCreatedTime());
+        vo.setApplyLogoutTime(user.getLogoutTime());
+        vo.setLogoutReason(user.getLogoutReason());
+
+        int rowStatus = resolveLawyerLogoutListStatus(user);
+        vo.setStatus(rowStatus);
+        vo.setStatusName(rowStatus == -1 ? "注销中" : "已注销");
+        vo.setLogoutFinishTime(rowStatus == 2 ? user.getLogoutTime() : null);
+        return vo;
+    }
+
+    private int resolveLawyerLogoutListStatus(LawyerUser user) {
+        if (user.getDeleteFlag() == null || user.getDeleteFlag() == 0) {
+            return -1;
+        }
+        return 2;
+    }
 }
 

+ 67 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreUserServiceImpl.java

@@ -23,6 +23,7 @@ import shop.alien.entity.store.*;
 import shop.alien.entity.store.excelVo.StoreUserExcelVo;
 import shop.alien.entity.store.excelVo.util.ExcelGenerator;
 import shop.alien.entity.store.vo.StoreSubExcelVo;
+import shop.alien.entity.store.vo.StoreUserLogoutListVo;
 import shop.alien.entity.store.vo.StoreUserVo;
 import shop.alien.entity.store.vo.WebSocketVo;
 import shop.alien.mapper.*;
@@ -1312,4 +1313,70 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
             return null;
         }
     }
+
+    @Override
+    public IPage<StoreUserLogoutListVo> getStoreUserLogoutPage(int pageNum, int pageSize, String userName, String phone, Integer status) {
+        Page<StoreUser> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<StoreUser> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(StoreUser::getDeleteFlag, 0)
+                .and(w -> w.eq(StoreUser::getLogoutFlag, 1)
+                        .or().eq(StoreUser::getStatus, -1)
+                        .or().eq(StoreUser::getStatus, 2));
+        if (status != null && status == -1) {
+            wrapper.eq(StoreUser::getStatus, -1);
+        } else if (status != null && status == 2) {
+            wrapper.and(w -> w.eq(StoreUser::getStatus, 2)
+                    .or(sub -> sub.eq(StoreUser::getLogoutFlag, 1)
+                            .and(inner -> inner.isNull(StoreUser::getStatus).or().ne(StoreUser::getStatus, -1))));
+        }
+        if (StringUtils.isNotEmpty(userName)) {
+            wrapper.like(StoreUser::getName, userName);
+        }
+        wrapper.like(StringUtils.isNotEmpty(phone), StoreUser::getPhone, phone)
+                .orderByDesc(StoreUser::getLogoutTime)
+                .orderByDesc(StoreUser::getCreatedTime);
+
+        IPage<StoreUser> userPage = storeUserMapper.selectPage(page, wrapper);
+        Page<StoreUserLogoutListVo> result = new Page<>(userPage.getCurrent(), userPage.getSize(), userPage.getTotal());
+        result.setRecords(userPage.getRecords().stream().map(this::toStoreUserLogoutListVo).collect(Collectors.toList()));
+        return result;
+    }
+
+    private StoreUserLogoutListVo toStoreUserLogoutListVo(StoreUser user) {
+        StoreUserLogoutListVo vo = new StoreUserLogoutListVo();
+        vo.setId(user.getId());
+        vo.setName(user.getName());
+        vo.setRealName(user.getName());
+        vo.setPhone(user.getPhone());
+        vo.setCreatedTime(user.getCreatedTime());
+        vo.setApplyLogoutTime(user.getLogoutTime());
+        vo.setLogoutReason(user.getLogoutReason());
+
+        int rowStatus = resolveLogoutListStatus(user);
+        vo.setStatus(rowStatus);
+        vo.setStatusName(rowStatus == -1 ? "注销中" : "已注销");
+        vo.setLogoutFinishTime(resolveLogoutFinishTime(user, rowStatus));
+        return vo;
+    }
+
+    private int resolveLogoutListStatus(StoreUser user) {
+        if (user.getStatus() != null && user.getStatus() == -1) {
+            return -1;
+        }
+        if ((user.getStatus() != null && user.getStatus() == 2)
+                || (user.getLogoutFlag() != null && user.getLogoutFlag() == 1)) {
+            return 2;
+        }
+        return user.getStatus() != null ? user.getStatus() : 0;
+    }
+
+    private Date resolveLogoutFinishTime(StoreUser user, int rowStatus) {
+        if (rowStatus == -1 && user.getLogoutTime() != null) {
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(user.getLogoutTime());
+            calendar.add(Calendar.DAY_OF_YEAR, 7);
+            return calendar.getTime();
+        }
+        return user.getUpdatedTime();
+    }
 }