fix(): DDD升级,mybatis-plus升级

boot3.0
DongZeLiang 2024-12-25 22:18:37 +08:00
parent ccf22d62ec
commit 52c0664cd4
25 changed files with 281 additions and 56 deletions

View File

@ -51,23 +51,10 @@
<dependency> <dependency>
<groupId>com.baomidou</groupId> <groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId> <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.6</version>
<exclusions>
<exclusion>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
</exclusion>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.mybatis</groupId> <groupId>com.baomidou</groupId>
<artifactId>mybatis</artifactId> <artifactId>mybatis-plus-jsqlparser</artifactId>
<version>3.5.16</version>
</dependency> </dependency>
<!-- Hibernate Validator --> <!-- Hibernate Validator -->

View File

@ -0,0 +1,21 @@
package com.muyu.common.core.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
/**
*
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加
return interceptor;
}
}

View File

@ -3,6 +3,7 @@ package com.muyu.common.core.web.model;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.web.page.PageReq; import com.muyu.common.core.web.page.PageReq;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -62,8 +63,10 @@ public class QueryModel<T> {
*/ */
public <I> Page<I> buildPage(){ public <I> Page<I> buildPage(){
Page<I> page = Page.of(this.getPageNum(), this.getPageSize()); Page<I> page = Page.of(this.getPageNum(), this.getPageSize());
if(StringUtils.isNotBlank(this.getOrderByColumn())){
page.setOrders(List.of(this.isAsc() page.setOrders(List.of(this.isAsc()
? OrderItem.asc(this.getOrderByColumn()) : OrderItem.desc(this.getOrderByColumn()))); ? OrderItem.asc(this.getOrderByColumn()) : OrderItem.desc(this.getOrderByColumn())));
}
return page; return page;
} }
} }

View File

@ -1,2 +1,3 @@
com.muyu.common.core.utils.SpringUtils com.muyu.common.core.utils.SpringUtils
com.muyu.common.core.feign.FeginConfig com.muyu.common.core.feign.FeginConfig
com.muyu.common.core.config.MybatisPlusConfig

View File

@ -21,8 +21,7 @@ import java.util.Date;
@SuperBuilder @SuperBuilder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@EqualsAndHashCode(callSuper = true) public class SysLogininfor {
public class SysLogininfor extends BaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**

View File

@ -40,7 +40,7 @@ public class GenController extends BaseController {
* *
*/ */
@RequiresPermissions("tool:gen:list") @RequiresPermissions("tool:gen:list")
@GetMapping("/list") @PostMapping("/list")
public Result<DataPageResp<GenTable>> genList (GenTable genTable) { public Result<DataPageResp<GenTable>> genList (GenTable genTable) {
List<GenTable> list = genTableService.selectGenTableList(genTable); List<GenTable> list = genTableService.selectGenTableList(genTable);
return Result.success(new DataPageResp<>(0,list)); return Result.success(new DataPageResp<>(0,list));

View File

@ -42,7 +42,7 @@ public class ${ClassName}Controller extends BaseController
* 查询${functionName}列表 * 查询${functionName}列表
*/ */
@RequiresPermissions("${permissionPrefix}:list") @RequiresPermissions("${permissionPrefix}:list")
@GetMapping("/list") @PostMapping("/list")
#if($table.crud || $table.sub) #if($table.crud || $table.sub)
public Result<DataPageResp> list(${ClassName} ${className}) public Result<DataPageResp> list(${ClassName} ${className})
{ {

View File

@ -40,9 +40,9 @@ public class SysConfigController extends BaseController {
* *
*/ */
@RequiresPermissions("system:config:list") @RequiresPermissions("system:config:list")
@GetMapping("/list") @PostMapping("/list")
@Operation(summary = "查询集合", description = "更新水果信息") @Operation(summary = "查询集合", description = "更新水果信息")
public Result<DataPageResp<SysConfig>> list (SysConfigListReq sysConfigListReq) { public Result<DataPageResp<SysConfig>> list (@RequestBody SysConfigListReq sysConfigListReq) {
PageQueryModel<SysConfig> pageQueryModel = configService.pageQuery(SysConfigPageQueryModel.reqBuild(sysConfigListReq)); PageQueryModel<SysConfig> pageQueryModel = configService.pageQuery(SysConfigPageQueryModel.reqBuild(sysConfigListReq));
return resultList(pageQueryModel); return resultList(pageQueryModel);
} }

View File

@ -35,8 +35,8 @@ public class SysDeptController extends BaseController {
* *
*/ */
@RequiresPermissions("system:dept:list") @RequiresPermissions("system:dept:list")
@GetMapping("/list") @PostMapping("/list")
public Result list (SysDept dept) { public Result list (@RequestBody SysDept dept) {
List<SysDept> depts = deptService.selectDeptList(dept); List<SysDept> depts = deptService.selectDeptList(dept);
return success(depts); return success(depts);
} }

View File

@ -35,8 +35,8 @@ public class SysDictDataController extends BaseController {
private SysDictTypeService dictTypeService; private SysDictTypeService dictTypeService;
@RequiresPermissions("system:dict:list") @RequiresPermissions("system:dict:list")
@GetMapping("/list") @PostMapping("/list")
public Result<DataPageResp<SysDictData>> list (SysDictData dictData) { public Result<DataPageResp<SysDictData>> list (@RequestBody SysDictData dictData) {
List<SysDictData> list = dictDataService.selectDictDataList(dictData); List<SysDictData> list = dictDataService.selectDictDataList(dictData);
return Result.success(new DataPageResp<>(0,list)); return Result.success(new DataPageResp<>(0,list));
} }

View File

@ -29,8 +29,8 @@ public class SysDictTypeController extends BaseController {
private SysDictTypeService dictTypeService; private SysDictTypeService dictTypeService;
@RequiresPermissions("system:dict:list") @RequiresPermissions("system:dict:list")
@GetMapping("/list") @PostMapping("/list")
public Result<DataPageResp<SysDictType>> list (SysDictType dictType) { public Result<DataPageResp<SysDictType>> list (@RequestBody SysDictType dictType) {
List<SysDictType> list = dictTypeService.selectDictTypeList(dictType); List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
return Result.success(new DataPageResp<>(0,list)); return Result.success(new DataPageResp<>(0,list));
} }

View File

@ -5,12 +5,16 @@ import com.muyu.common.core.utils.poi.ExcelUtil;
import com.muyu.common.core.web.controller.BaseController; import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.core.domain.Result; import com.muyu.common.core.domain.Result;
import com.muyu.common.core.web.page.DataPageResp; import com.muyu.common.core.web.page.DataPageResp;
import com.muyu.common.core.web.page.PageQueryModel;
import com.muyu.common.log.annotation.Log; import com.muyu.common.log.annotation.Log;
import com.muyu.common.log.enums.BusinessType; import com.muyu.common.log.enums.BusinessType;
import com.muyu.common.redis.service.RedisService; import com.muyu.common.redis.service.RedisService;
import com.muyu.common.security.annotation.InnerAuth; import com.muyu.common.security.annotation.InnerAuth;
import com.muyu.common.security.annotation.RequiresPermissions; import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.common.system.domain.SysLogininfor; import com.muyu.common.system.domain.SysLogininfor;
import com.muyu.system.domain.model.SysLogininforExportModel;
import com.muyu.system.domain.model.SysLogininforListModel;
import com.muyu.system.domain.rep.SysLogininforListReq;
import com.muyu.system.service.SysLogininforService; import com.muyu.system.service.SysLogininforService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -33,19 +37,21 @@ public class SysLogininforController extends BaseController {
private RedisService redisService; private RedisService redisService;
@RequiresPermissions("system:logininfor:list") @RequiresPermissions("system:logininfor:list")
@GetMapping("/list") @PostMapping("/list")
public Result<DataPageResp<SysLogininfor>> list (SysLogininfor logininfor) { public Result<DataPageResp<SysLogininfor>> list (@RequestBody SysLogininforListReq sysLogininforListReq) {
List<SysLogininfor> list = logininforService.selectLogininforList(logininfor); PageQueryModel<SysLogininfor> pageQueryModel = logininforService.pageQuery(SysLogininforListModel.reqBuild(sysLogininforListReq));
return Result.success(new DataPageResp<>(0,list)); return Result.success(
DataPageResp.of(pageQueryModel)
);
} }
@Log(title = "登录日志", businessType = BusinessType.EXPORT) @Log(title = "登录日志", businessType = BusinessType.EXPORT)
@RequiresPermissions("system:logininfor:export") @RequiresPermissions("system:logininfor:export")
@PostMapping("/export") @PostMapping("/export")
public void export (HttpServletResponse response, SysLogininfor logininfor) { public void export (HttpServletResponse response, SysLogininforListReq sysLogininforListReq) {
List<SysLogininfor> list = logininforService.selectLogininforList(logininfor); List<SysLogininfor> sysLogininforList = logininforService.exportQuery(SysLogininforExportModel.reqBuild(sysLogininforListReq));
ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class); ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class);
util.exportExcel(response, list, "登录日志"); util.exportExcel(response, sysLogininforList, "登录日志");
} }
@RequiresPermissions("system:logininfor:remove") @RequiresPermissions("system:logininfor:remove")

View File

@ -32,8 +32,8 @@ public class SysMenuController extends BaseController {
* *
*/ */
@RequiresPermissions("system:menu:list") @RequiresPermissions("system:menu:list")
@GetMapping("/list") @PostMapping("/list")
public Result list (SysMenu menu) { public Result list (@RequestBody SysMenu menu) {
Long userId = SecurityUtils.getUserId(); Long userId = SecurityUtils.getUserId();
List<SysMenu> menus = menuService.selectMenuList(menu, userId); List<SysMenu> menus = menuService.selectMenuList(menu, userId);
return success(menus); return success(menus);

View File

@ -30,8 +30,8 @@ public class SysNoticeController extends BaseController {
* *
*/ */
@RequiresPermissions("system:notice:list") @RequiresPermissions("system:notice:list")
@GetMapping("/list") @PostMapping("/list")
public Result<DataPageResp<SysNotice>> list (SysNotice notice) { public Result<DataPageResp<SysNotice>> list (@RequestBody SysNotice notice) {
List<SysNotice> list = noticeService.selectNoticeList(notice); List<SysNotice> list = noticeService.selectNoticeList(notice);
return Result.success(new DataPageResp<>(0,list)); return Result.success(new DataPageResp<>(0,list));
} }

View File

@ -28,8 +28,8 @@ public class SysOperlogController extends BaseController {
private SysOperLogService operLogService; private SysOperLogService operLogService;
@RequiresPermissions("system:operlog:list") @RequiresPermissions("system:operlog:list")
@GetMapping("/list") @PostMapping("/list")
public Result<DataPageResp<SysOperLog>> list (SysOperLog operLog) { public Result<DataPageResp<SysOperLog>> list (@RequestBody SysOperLog operLog) {
List<SysOperLog> list = operLogService.selectOperLogList(operLog); List<SysOperLog> list = operLogService.selectOperLogList(operLog);
return Result.success(new DataPageResp<>(0,list)); return Result.success(new DataPageResp<>(0,list));
} }

View File

@ -32,8 +32,8 @@ public class SysPostController extends BaseController {
* *
*/ */
@RequiresPermissions("system:post:list") @RequiresPermissions("system:post:list")
@GetMapping("/list") @PostMapping("/list")
public Result<DataPageResp<SysPost>> list (SysPost post) { public Result<DataPageResp<SysPost>> list (@RequestBody SysPost post) {
List<SysPost> list = postService.selectPostList(post); List<SysPost> list = postService.selectPostList(post);
return Result.success(new DataPageResp<>(0,list)); return Result.success(new DataPageResp<>(0,list));
} }

View File

@ -41,8 +41,8 @@ public class SysRoleController extends BaseController {
private SysDeptService deptService; private SysDeptService deptService;
@RequiresPermissions("system:role:list") @RequiresPermissions("system:role:list")
@GetMapping("/list") @PostMapping("/list")
public Result<DataPageResp<SysRole>> list (SysRole role) { public Result<DataPageResp<SysRole>> list (@RequestBody SysRole role) {
List<SysRole> list = roleService.selectRoleList(role); List<SysRole> list = roleService.selectRoleList(role);
return Result.success(new DataPageResp<>(0,list)); return Result.success(new DataPageResp<>(0,list));
} }

View File

@ -60,8 +60,8 @@ public class SysUserController extends BaseController {
* *
*/ */
@RequiresPermissions("system:user:list") @RequiresPermissions("system:user:list")
@GetMapping("/list") @PostMapping("/list")
public Result<DataPageResp<SysUser>> list (SysUser user) { public Result<DataPageResp<SysUser>> list (@RequestBody SysUser user) {
List<SysUser> list = userService.selectUserList(user); List<SysUser> list = userService.selectUserList(user);
return Result.success(new DataPageResp<>(0,list)); return Result.success(new DataPageResp<>(0,list));
} }
@ -134,7 +134,7 @@ public class SysUserController extends BaseController {
* *
* @return * @return
*/ */
@GetMapping("getInfo") @GetMapping("/getInfo")
public Result getInfo () { public Result getInfo () {
SysUser user = userService.selectUserById(SecurityUtils.getUserId()); SysUser user = userService.selectUserById(SecurityUtils.getUserId());
// 角色集合 // 角色集合

View File

@ -35,8 +35,8 @@ public class SysUserOnlineController extends BaseController {
private RedisService redisService; private RedisService redisService;
@RequiresPermissions("monitor:online:list") @RequiresPermissions("monitor:online:list")
@GetMapping("/list") @PostMapping("/list")
public Result<DataPageResp<SysUserOnline>> list (String ipaddr, String userName) { public Result<DataPageResp<SysUserOnline>> list (@RequestBody String ipaddr, String userName) {
Collection<String> keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); Collection<String> keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>(); List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
for (String key : keys) { for (String key : keys) {

View File

@ -0,0 +1,53 @@
package com.muyu.system.domain.model;
import com.muyu.common.core.web.model.QueryModel;
import com.muyu.system.domain.rep.SysLogininforListReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
/**
*
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class SysLogininforExportModel {
/**
* IP
*/
private String ipaddr;
/**
*
*/
private String userName;
/**
*
*/
private String status;
/**
*
*/
private Date beginTime;
/**
*
*/
private Date endTime;
public static SysLogininforExportModel reqBuild(SysLogininforListReq req){
return SysLogininforExportModel.builder()
.ipaddr(req.getIpaddr())
.userName(req.getUserName())
.beginTime(req.getBeginTime())
.endTime(req.getEndTime())
.build();
}
}

View File

@ -0,0 +1,56 @@
package com.muyu.system.domain.model;
import com.muyu.common.core.web.model.QueryModel;
import com.muyu.common.core.web.page.PageQueryModel;
import com.muyu.common.core.web.page.PageReq;
import com.muyu.system.domain.rep.SysLogininforListReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
/**
*
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class SysLogininforListModel extends QueryModel<SysLogininforListModel> {
/**
* IP
*/
private String ipaddr;
/**
*
*/
private String userName;
/**
*
*/
private String status;
/**
*
*/
private Date beginTime;
/**
*
*/
private Date endTime;
public static SysLogininforListModel reqBuild(SysLogininforListReq req){
return SysLogininforListModel.builder()
.ipaddr(req.getIpaddr())
.userName(req.getUserName())
.beginTime(req.getBeginTime())
.endTime(req.getEndTime())
.build()
.domainBuild(req);
}
}

View File

@ -0,0 +1,45 @@
package com.muyu.system.domain.rep;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.muyu.common.core.web.page.PageReq;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
/**
*
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class SysLogininforListReq extends PageReq {
/**
* IP
*/
private String ipaddr;
/**
*
*/
private String userName;
/**
*
*/
private String status;
/**
*
*/
private Date beginTime;
/**
*
*/
private Date endTime;
}

View File

@ -1,7 +1,10 @@
package com.muyu.system.service; package com.muyu.system.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.common.core.web.page.PageQueryModel;
import com.muyu.common.system.domain.SysLogininfor; import com.muyu.common.system.domain.SysLogininfor;
import com.muyu.system.domain.model.SysLogininforExportModel;
import com.muyu.system.domain.model.SysLogininforListModel;
import java.util.List; import java.util.List;
@ -21,11 +24,11 @@ public interface SysLogininforService extends IService<SysLogininfor> {
/** /**
* *
* *
* @param logininfor 访 * @param sysLogininforListModel 访
* *
* @return * @return
*/ */
public List<SysLogininfor> selectLogininforList (SysLogininfor logininfor); public PageQueryModel<SysLogininfor> pageQuery(SysLogininforListModel sysLogininforListModel);
/** /**
* *
@ -40,4 +43,11 @@ public interface SysLogininforService extends IService<SysLogininfor> {
* *
*/ */
public void cleanLogininfor (); public void cleanLogininfor ();
/**
*
* @param sysLogininforExportModel
* @return
*/
List<SysLogininfor> exportQuery(SysLogininforExportModel sysLogininforExportModel);
} }

View File

@ -1,7 +1,15 @@
package com.muyu.system.service.impl; package com.muyu.system.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.web.page.PageQueryModel;
import com.muyu.common.system.domain.SysLogininfor; import com.muyu.common.system.domain.SysLogininfor;
import com.muyu.system.domain.SysConfig;
import com.muyu.system.domain.model.SysLogininforExportModel;
import com.muyu.system.domain.model.SysLogininforListModel;
import com.muyu.system.mapper.SysLogininforMapper; import com.muyu.system.mapper.SysLogininforMapper;
import com.muyu.system.service.SysLogininforService; import com.muyu.system.service.SysLogininforService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -33,13 +41,19 @@ public class SysLogininforServiceImpl extends ServiceImpl<SysLogininforMapper, S
/** /**
* *
* *
* @param logininfor 访 * @param pageQueryModel 访
* *
* @return * @return
*/ */
@Override @Override
public List<SysLogininfor> selectLogininforList (SysLogininfor logininfor) { public PageQueryModel<SysLogininfor> pageQuery(SysLogininforListModel pageQueryModel) {
return logininforMapper.selectLogininforList(logininfor); LambdaQueryWrapper<SysLogininfor> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(StringUtils.isNotEmpty(pageQueryModel.getIpaddr()), SysLogininfor::getIpaddr, pageQueryModel.getIpaddr());
queryWrapper.eq(StringUtils.isNotEmpty(pageQueryModel.getStatus()), SysLogininfor::getStatus, pageQueryModel.getStatus());
queryWrapper.like(StringUtils.isNotEmpty(pageQueryModel.getUserName()), SysLogininfor::getUserName, pageQueryModel.getUserName());
queryWrapper.between(!ObjectUtil.hasNull(pageQueryModel.getBeginTime(),pageQueryModel.getEndTime()), SysLogininfor::getAccessTime, pageQueryModel.getBeginTime(), pageQueryModel.getEndTime());
Page<SysLogininfor> page = this.page(pageQueryModel.buildPage(), queryWrapper);
return PageQueryModel.of(page);
} }
/** /**
@ -61,4 +75,19 @@ public class SysLogininforServiceImpl extends ServiceImpl<SysLogininforMapper, S
public void cleanLogininfor () { public void cleanLogininfor () {
logininforMapper.cleanLogininfor(); logininforMapper.cleanLogininfor();
} }
/**
*
* @param exportModel
* @return
*/
@Override
public List<SysLogininfor> exportQuery(SysLogininforExportModel exportModel) {
LambdaQueryWrapper<SysLogininfor> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(StringUtils.isNotEmpty(exportModel.getIpaddr()), SysLogininfor::getIpaddr, exportModel.getIpaddr());
queryWrapper.eq(StringUtils.isNotEmpty(exportModel.getStatus()), SysLogininfor::getStatus, exportModel.getStatus());
queryWrapper.like(StringUtils.isNotEmpty(exportModel.getUserName()), SysLogininfor::getUserName, exportModel.getUserName());
queryWrapper.between(!ObjectUtil.hasNull(exportModel.getBeginTime(),exportModel.getEndTime()), SysLogininfor::getAccessTime, exportModel.getBeginTime(), exportModel.getEndTime());
return this.list(queryWrapper);
}
} }

15
pom.xml
View File

@ -41,6 +41,7 @@
<hutool.version>5.8.27</hutool.version> <hutool.version>5.8.27</hutool.version>
<knife4j-openapi3.version>4.1.0</knife4j-openapi3.version> <knife4j-openapi3.version>4.1.0</knife4j-openapi3.version>
<xxl-job-core.version>2.4.1</xxl-job-core.version> <xxl-job-core.version>2.4.1</xxl-job-core.version>
<mybatis-plus.version>3.5.9</mybatis-plus.version>
</properties> </properties>
<!-- 依赖声明 --> <!-- 依赖声明 -->
@ -140,6 +141,20 @@
<version>${commons.io.version}</version> <version>${commons.io.version}</version>
</dependency> </dependency>
<!-- mybatis - plus 依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-jsqlparser</artifactId>
<!-- 确保版本和 MyBatis Plus 主包一致 -->
<version>${mybatis-plus.version}</version>
</dependency>
<!-- excel工具 --> <!-- excel工具 -->
<dependency> <dependency>
<groupId>org.apache.poi</groupId> <groupId>org.apache.poi</groupId>