消息任务管理
parent
3e33ad5c14
commit
f0db03d3f0
@ -0,0 +1,66 @@
|
||||
package com.docus.server.archivefile.controller;
|
||||
|
||||
import com.docus.infrastructure.web.request.SearchRequest;
|
||||
import com.docus.infrastructure.web.response.PageResult;
|
||||
import com.docus.server.api.archivefile.TaskConfigApi;
|
||||
import com.docus.server.archivefile.service.ITaskConfigService;
|
||||
import com.docus.server.entity.TaskConfig;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Controller
|
||||
* Generated on 2023-06-28
|
||||
*/
|
||||
@RestController
|
||||
public class TaskConfigController implements TaskConfigApi {
|
||||
@Resource
|
||||
private ITaskConfigService taskConfigService;
|
||||
|
||||
/**
|
||||
* 按主键查询
|
||||
*
|
||||
* @param id 主键Id
|
||||
* @return 实体
|
||||
*/
|
||||
@Override
|
||||
public TaskConfig find(String id) {
|
||||
return taskConfigService.getTaskConfigById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关键字搜素
|
||||
*
|
||||
* @param searchRequest 搜索参数
|
||||
* @return 分页列表
|
||||
*/
|
||||
@Override
|
||||
public PageResult<TaskConfig> search(SearchRequest searchRequest) {
|
||||
return taskConfigService.search(searchRequest);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增或编辑
|
||||
*
|
||||
* @param taskConfig 编辑参数
|
||||
* @return 成功或失败
|
||||
*/
|
||||
@Override
|
||||
public boolean saveOrUpdate(TaskConfig taskConfig) {
|
||||
return taskConfigService.updateTaskConfig(taskConfig);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids 主键ids
|
||||
* @return 成功或失败
|
||||
*/
|
||||
@Override
|
||||
public int delete(List<Long> ids) {
|
||||
return taskConfigService.deleteTaskConfig(ids);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,56 @@
|
||||
package com.docus.server.archivefile.controller;
|
||||
|
||||
import com.docus.core.util.ListUtils;
|
||||
import com.docus.infrastructure.web.request.SearchRequest;
|
||||
import com.docus.infrastructure.web.response.PageResult;
|
||||
import com.docus.server.api.archivefile.TaskMessageApi;
|
||||
import com.docus.server.archivefile.convert.TaskMessageConvert;
|
||||
import com.docus.server.archivefile.convert.TaskMessageConverter;
|
||||
import com.docus.server.archivefile.service.ITaskMessageRetryLogService;
|
||||
import com.docus.server.archivefile.service.ITaskMessageService;
|
||||
import com.docus.server.entity.TaskMessage;
|
||||
import com.docus.server.entity.TaskMessageRetryLog;
|
||||
import com.docus.server.vo.TaskMessageVO;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 被动接收任务表 Controller
|
||||
* Generated on 2023-06-28
|
||||
*/
|
||||
@RestController
|
||||
public class TaskMessageController implements TaskMessageApi {
|
||||
@Resource
|
||||
private ITaskMessageService taskMessageService;
|
||||
@Resource
|
||||
private ITaskMessageRetryLogService taskMessageRetryLogService;
|
||||
@Resource
|
||||
private TaskMessageConverter taskMessageConverter;
|
||||
|
||||
/**
|
||||
* 按主键查询
|
||||
*
|
||||
* @param id 主键Id
|
||||
* @return实体
|
||||
*/
|
||||
@Override
|
||||
public TaskMessageVO find(String id) {
|
||||
TaskMessage taskMessage = taskMessageService.findById(id);
|
||||
return TaskMessageConvert.INSTANCE.convert(taskMessage);
|
||||
}
|
||||
|
||||
/*
|
||||
* 关键字搜素
|
||||
* @param searchRequest 搜索参数
|
||||
* @return 分页列表
|
||||
*/
|
||||
@Override
|
||||
public PageResult<TaskMessageVO> search(SearchRequest searchRequest) {
|
||||
PageResult<TaskMessage> pageResult = taskMessageService.search(searchRequest);
|
||||
List<TaskMessageRetryLog> retryLogs = taskMessageRetryLogService.findByTaskIds(ListUtils.distinctSelect(pageResult.getList(), TaskMessage::getId));
|
||||
List<TaskMessageVO> taskMessages = taskMessageConverter.toTaskMessageVO(pageResult.getList(), retryLogs);
|
||||
return new PageResult<>(taskMessages, pageResult.getTotal(), pageResult.getPageNum(), pageResult.getPageSize());
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package com.docus.server.archivefile.controller;
|
||||
|
||||
import com.docus.infrastructure.web.request.SearchRequest;
|
||||
import com.docus.infrastructure.web.response.PageResult;
|
||||
import com.docus.server.api.archivefile.TaskMessageRetryLogApi;
|
||||
import com.docus.server.archivefile.service.ITaskMessageRetryLogService;
|
||||
import com.docus.server.entity.TaskMessageRetryLog;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 任务消息重试表 Controller
|
||||
* Generated on 2023-06-28
|
||||
*/
|
||||
@RestController
|
||||
public class TaskMessageRetryLogController implements TaskMessageRetryLogApi {
|
||||
@Autowired
|
||||
private ITaskMessageRetryLogService taskMessageRetryLogService;
|
||||
|
||||
/**
|
||||
* 按主键查询
|
||||
*
|
||||
* @param id 主键Id
|
||||
* @return实体
|
||||
*/
|
||||
@Override
|
||||
public TaskMessageRetryLog find(String id) {
|
||||
return taskMessageRetryLogService.findById(id);
|
||||
}
|
||||
|
||||
/*
|
||||
* 关键字搜素
|
||||
* @param searchRequest 搜索参数
|
||||
* @return 分页列表
|
||||
*/
|
||||
@Override
|
||||
public PageResult<TaskMessageRetryLog> search(SearchRequest searchRequest) {
|
||||
return taskMessageRetryLogService.search(searchRequest);
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package com.docus.server.archivefile.convert;
|
||||
|
||||
import com.docus.server.entity.TaskMessage;
|
||||
import com.docus.server.vo.TaskMessageVO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mappings;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface TaskMessageConvert {
|
||||
|
||||
TaskMessageConvert INSTANCE = Mappers.getMapper(TaskMessageConvert.class);
|
||||
|
||||
@Mappings({})
|
||||
TaskMessageVO convert(TaskMessage taskMessage);
|
||||
|
||||
@Mappings({})
|
||||
List<TaskMessageVO> convert(List<TaskMessage> taskMessages);
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.docus.server.archivefile.convert;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class TaskMessageRetryLogConverter {
|
||||
|
||||
}
|
@ -1,7 +1,10 @@
|
||||
package com.docus.server.archivefile.infrastructure.dao;
|
||||
|
||||
import com.docus.infrastructure.core.db.dao.IBaseDao;
|
||||
import com.docus.server.archivefile.infrastructure.entity.TaskConfig;
|
||||
import com.docus.infrastructure.web.request.SearchRequest;
|
||||
import com.docus.infrastructure.web.response.PageResult;
|
||||
import com.docus.server.entity.TaskConfig;
|
||||
|
||||
public interface ITaskConfigDao extends IBaseDao<TaskConfig> {
|
||||
PageResult<TaskConfig> searchTaskConfig(SearchRequest searchRequest);
|
||||
}
|
||||
|
@ -1,8 +1,11 @@
|
||||
package com.docus.server.archivefile.infrastructure.dao;
|
||||
|
||||
|
||||
import com.docus.infrastructure.core.db.dao.IBaseDao;
|
||||
import com.docus.server.archivefile.infrastructure.entity.TaskMessage;
|
||||
import com.docus.infrastructure.web.request.SearchRequest;
|
||||
import com.docus.infrastructure.web.response.PageResult;
|
||||
import com.docus.server.entity.TaskMessage;
|
||||
|
||||
public interface ITaskMessageDao extends IBaseDao<TaskMessage> {
|
||||
|
||||
PageResult<TaskMessage> searchTaskMessage(SearchRequest request);
|
||||
}
|
||||
|
@ -1,7 +1,10 @@
|
||||
package com.docus.server.archivefile.infrastructure.dao;
|
||||
|
||||
import com.docus.infrastructure.core.db.dao.IBaseDao;
|
||||
import com.docus.server.archivefile.infrastructure.entity.TaskMessageRetryLog;
|
||||
import com.docus.infrastructure.web.request.SearchRequest;
|
||||
import com.docus.infrastructure.web.response.PageResult;
|
||||
import com.docus.server.entity.TaskMessageRetryLog;
|
||||
|
||||
public interface ITaskMessageRetryLogDao extends IBaseDao<TaskMessageRetryLog> {
|
||||
PageResult<TaskMessageRetryLog> search(SearchRequest searchRequest);
|
||||
}
|
||||
|
@ -1,4 +1,15 @@
|
||||
package com.docus.server.archivefile.service;
|
||||
|
||||
import com.docus.infrastructure.web.request.SearchRequest;
|
||||
import com.docus.infrastructure.web.response.PageResult;
|
||||
import com.docus.server.entity.TaskMessageRetryLog;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ITaskMessageRetryLogService {
|
||||
List<TaskMessageRetryLog> findByTaskIds(List<Long> taskIds);
|
||||
|
||||
TaskMessageRetryLog findById(String id);
|
||||
|
||||
PageResult<TaskMessageRetryLog> search(SearchRequest searchRequest);
|
||||
}
|
||||
|
@ -1,17 +1,35 @@
|
||||
package com.docus.server.archivefile.service.impl;
|
||||
|
||||
import com.docus.server.archivefile.convert.TaskMessageConverter;
|
||||
import com.docus.server.archivefile.infrastructure.dao.ITaskMessageDao;
|
||||
import com.docus.infrastructure.web.request.SearchRequest;
|
||||
import com.docus.infrastructure.web.response.PageResult;
|
||||
import com.docus.server.archivefile.convert.TaskMessageRetryLogConverter;
|
||||
import com.docus.server.archivefile.infrastructure.dao.ITaskMessageRetryLogDao;
|
||||
import com.docus.server.archivefile.service.ITaskMessageRetryLogService;
|
||||
import com.docus.server.entity.TaskMessageRetryLog;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class TaskMessageRetryLogServiceImpl implements ITaskMessageRetryLogService {
|
||||
@Resource
|
||||
private TaskMessageConverter converter;
|
||||
private TaskMessageRetryLogConverter taskMessageRetryLogConverter;
|
||||
@Resource
|
||||
private ITaskMessageDao taskMessageDao;
|
||||
private ITaskMessageRetryLogDao taskMessageRetryLogDao;
|
||||
|
||||
@Override
|
||||
public List<TaskMessageRetryLog> findByTaskIds(List<Long> taskIds) {
|
||||
return taskMessageRetryLogDao.findBy("messageId", taskIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TaskMessageRetryLog findById(String id) {
|
||||
return taskMessageRetryLogDao.findById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<TaskMessageRetryLog> search(SearchRequest searchRequest) {
|
||||
return taskMessageRetryLogDao.search(searchRequest);
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.xmgps.tsms.auth.api.mapper.TaskConfigMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap"
|
||||
type="com.docus.server.entity.TaskConfig">
|
||||
<id column="id" property="id"/>
|
||||
<result column="name" property="name"/>
|
||||
<result column="type" property="type"/>
|
||||
<result column="start_time" property="startTime"/>
|
||||
<result column="end_time" property="endTime"/>
|
||||
<result column="all_pointer_time" property="allPointerTime"/>
|
||||
<result column="page_size" property="pageSize"/>
|
||||
<result column="spilt_period" property="spiltPeriod"/>
|
||||
<result column="inc_pointer_time" property="incPointerTime"/>
|
||||
<result column="param" property="param"/>
|
||||
<result column="state" property="state"/>
|
||||
<result column="last_error_msg" property="lastErrorMsg"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
id, name, type, start_time, end_time, all_pointer_time, page_size, spilt_period, inc_pointer_time, param, state, last_error_msg
|
||||
</sql>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.xmgps.tsms.auth.api.mapper.TaskMessageMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap"
|
||||
type="com.docus.server.entity.TaskMessage">
|
||||
<id column="id" property="id"/>
|
||||
<result column="name" property="name"/>
|
||||
<result column="memo" property="memo"/>
|
||||
<result column="collect_type" property="collectType"/>
|
||||
<result column="retry_key" property="retryKey"/>
|
||||
<result column="json_str" property="jsonStr"/>
|
||||
<result column="source" property="source"/>
|
||||
<result column="state" property="state"/>
|
||||
<result column="error_msg" property="errorMsg"/>
|
||||
<result column="create_time" property="createTime"/>
|
||||
<result column="update_time" property="updateTime"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
id, name, memo, collect_type, retry_key, json_str, source, state, error_msg, create_time, update_time
|
||||
</sql>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.xmgps.tsms.auth.api.mapper.TaskMessageRetryLogMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap"
|
||||
type="com.docus.server.entity.TaskMessageRetryLog">
|
||||
<id column="id" property="id"/>
|
||||
<result column="message_id" property="messageId"/>
|
||||
<result column="name" property="name"/>
|
||||
<result column="memo" property="memo"/>
|
||||
<result column="collect_type" property="collectType"/>
|
||||
<result column="retry_key" property="retryKey"/>
|
||||
<result column="json_str" property="jsonStr"/>
|
||||
<result column="source" property="source"/>
|
||||
<result column="state" property="state"/>
|
||||
<result column="error_msg" property="errorMsg"/>
|
||||
<result column="create_time" property="createTime"/>
|
||||
<result column="update_time" property="updateTime"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
id, message_id, name, memo, collect_type, retry_key, json_str, source, state, error_msg, create_time, update_time
|
||||
</sql>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,67 @@
|
||||
package com.docus.server.api.archivefile;
|
||||
|
||||
import com.docus.infrastructure.web.request.SearchRequest;
|
||||
import com.docus.infrastructure.web.response.PageResult;
|
||||
import com.docus.server.entity.TaskConfig;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* API
|
||||
* Generated on 2023-06-28
|
||||
*/
|
||||
@Api(value = "主动消息任务管理接口", tags = "主动消息任务管理接口")
|
||||
@FeignClient(value = "docus-collector-api", contextId = "docus-collector-api.TaskConfigApi")
|
||||
@RequestMapping("/taskConfig")
|
||||
public interface TaskConfigApi {
|
||||
|
||||
/**
|
||||
* 按主键查询
|
||||
*
|
||||
* @param id 主键id
|
||||
* @return 实体
|
||||
*/
|
||||
@ApiOperation("按主键查询")
|
||||
@GetMapping("/find/{id}")
|
||||
TaskConfig find(@PathVariable(value = "id") String id);
|
||||
|
||||
/**
|
||||
* 关键字搜素
|
||||
*
|
||||
* @param searchRequest 搜索参数
|
||||
* @return 分页列表
|
||||
*/
|
||||
@ApiOperation("关键字搜素")
|
||||
@PostMapping("/search")
|
||||
PageResult<TaskConfig> search(@RequestBody SearchRequest searchRequest);
|
||||
|
||||
/**
|
||||
* 新增或编辑
|
||||
*
|
||||
* @param taskConfig 编辑参数
|
||||
* @return 成功或失败
|
||||
*/
|
||||
@ApiOperation("新增或编辑")
|
||||
@PostMapping("/saveOrUpdate")
|
||||
boolean saveOrUpdate(@RequestBody TaskConfig taskConfig);
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids 主键ids
|
||||
* @return 成功或失败
|
||||
*/
|
||||
@ApiOperation("批量删除")
|
||||
@DeleteMapping("/delete")
|
||||
int delete(@RequestBody List<Long> ids);
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package com.docus.server.api.archivefile;
|
||||
|
||||
import com.docus.infrastructure.web.request.SearchRequest;
|
||||
import com.docus.infrastructure.web.response.PageResult;
|
||||
import com.docus.server.vo.TaskMessageVO;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
|
||||
/**
|
||||
* 被动接收任务表 API
|
||||
* Generated on 2023-06-28
|
||||
*/
|
||||
@FeignClient(value = "docus-collector-api", contextId = "docus-collector-api.TaskMessageApi")
|
||||
@RequestMapping("/taskMessage")
|
||||
public interface TaskMessageApi {
|
||||
|
||||
/**
|
||||
* 按主键查询
|
||||
*
|
||||
* @param id 主键id
|
||||
* @return 实体
|
||||
*/
|
||||
@GetMapping("/find/{id}")
|
||||
TaskMessageVO find(@PathVariable(value = "id") String id);
|
||||
|
||||
/*
|
||||
* 关键字搜素
|
||||
* @param searchRequest 搜索参数
|
||||
* @return 分页列表
|
||||
*/
|
||||
@PostMapping("/search")
|
||||
PageResult<TaskMessageVO> search(@RequestBody SearchRequest searchRequest);
|
||||
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package com.docus.server.api.archivefile;
|
||||
|
||||
import com.docus.infrastructure.web.request.SearchRequest;
|
||||
import com.docus.infrastructure.web.response.PageResult;
|
||||
import com.docus.server.entity.TaskMessageRetryLog;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
|
||||
/**
|
||||
* 任务消息重试表 API
|
||||
* Generated on 2023-06-28
|
||||
*/
|
||||
@FeignClient(value = "docus-collector-api", contextId = "docus-collector-api.TaskMessageRetryLogApi")
|
||||
@RequestMapping("/taskMessageRetryLog")
|
||||
public interface TaskMessageRetryLogApi {
|
||||
|
||||
/**
|
||||
* 按主键查询
|
||||
*
|
||||
* @param id 主键id
|
||||
* @return 实体
|
||||
*/
|
||||
@GetMapping("/find/{id}")
|
||||
TaskMessageRetryLog find(@PathVariable(value = "id") String id);
|
||||
|
||||
/*
|
||||
* 关键字搜素
|
||||
* @param searchRequest 搜索参数
|
||||
* @return 分页列表
|
||||
*/
|
||||
@PostMapping("/search")
|
||||
PageResult<TaskMessageRetryLog> search(@RequestBody SearchRequest searchRequest);
|
||||
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
package com.docus.server.entity;
|
||||
|
||||
public class A {
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.docus.server.archivefile.infrastructure.entity;
|
||||
package com.docus.server.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
@ -0,0 +1,14 @@
|
||||
package com.docus.server.entity;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class TaskMessageExt extends TaskMessage {
|
||||
|
||||
@ApiModelProperty(value = "是否有重试详情日志")
|
||||
private boolean haveRetryLog;
|
||||
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.docus.server.archivefile.infrastructure.entity;
|
||||
package com.docus.server.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
Loading…
Reference in New Issue