2
0

feat: add mybatis plus

This commit is contained in:
caiyuchao
2024-12-09 17:07:57 +08:00
parent 735c181fc8
commit af65a433ef
10 changed files with 210 additions and 8 deletions

View File

@@ -19,6 +19,7 @@
<module>wfc-common-datascope</module>
<module>wfc-common-datasource</module>
<module>wfc-common-mail</module>
<module>wfc-common-mybatis</module>
</modules>
<artifactId>wfc-common</artifactId>

View File

@@ -0,0 +1,26 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.wfc</groupId>
<artifactId>wfc-common</artifactId>
<version>1.0.2</version>
</parent>
<artifactId>wfc-common-mybatis</artifactId>
<description>
wfc-common-mybatis服务
</description>
<dependencies>
<dependency>
<groupId>org.wfc</groupId>
<artifactId>wfc-common-security</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,39 @@
package org.wfc.common.mybatis.domain;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @description: 基类
* @author: cyc
* @since: 2024-12-09
*/
@Data
public class BaseData implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Boolean delFlag;
@TableField(fill = FieldFill.INSERT)
private Long createBy;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateBy;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}

View File

@@ -0,0 +1,98 @@
package org.wfc.common.mybatis.handler;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpStatus;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import org.wfc.common.core.domain.LoginUser;
import org.wfc.common.core.exception.ServiceException;
import org.wfc.common.mybatis.domain.BaseData;
import org.wfc.common.security.utils.SecurityUtils;
import java.util.Date;
@Slf4j
@Component
public class InjectionMetaObjectHandler implements MetaObjectHandler {
/**
* 插入填充方法,用于在插入数据时自动填充实体对象中的创建时间、更新时间、创建人、更新人等信息
*
* @param metaObject 元对象,用于获取原始对象并进行填充
*/
@Override
public void insertFill(MetaObject metaObject) {
try {
if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseData) {
BaseData baseData = (BaseData) metaObject.getOriginalObject();
// 获取当前时间作为创建时间和更新时间,如果创建时间不为空,则使用创建时间,否则使用当前时间
Date current = ObjectUtil.isNotNull(baseData.getCreateTime())
? baseData.getCreateTime() : new Date();
baseData.setCreateTime(current);
baseData.setUpdateTime(current);
// 如果创建人为空,则填充当前登录用户的信息
if (ObjectUtil.isNull(baseData.getCreateBy())) {
LoginUser loginUser = getLoginUser();
if (ObjectUtil.isNotNull(loginUser)) {
Long userId = loginUser.getUserid();
// 填充创建人、更新人和创建部门信息
baseData.setCreateBy(userId);
baseData.setUpdateBy(userId);
}
}
} else {
Date date = new Date();
this.strictInsertFill(metaObject, "createTime", Date.class, date);
this.strictInsertFill(metaObject, "updateTime", Date.class, date);
}
} catch (Exception e) {
throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
}
}
/**
* 更新填充方法,用于在更新数据时自动填充实体对象中的更新时间和更新人信息
*
* @param metaObject 元对象,用于获取原始对象并进行填充
*/
@Override
public void updateFill(MetaObject metaObject) {
try {
if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseData) {
BaseData baseData = (BaseData) metaObject.getOriginalObject();
// 获取当前时间作为更新时间,无论原始对象中的更新时间是否为空都填充
Date current = new Date();
baseData.setUpdateTime(current);
// 获取当前登录用户的ID并填充更新人信息
LoginUser loginUser = getLoginUser();
if (ObjectUtil.isNotNull(loginUser)) {
baseData.setUpdateBy(loginUser.getUserid());
}
} else {
this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
}
} catch (Exception e) {
throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
}
}
/**
* 获取当前登录用户信息
*
* @return 当前登录用户的信息,如果用户未登录则返回 null
*/
private LoginUser getLoginUser() {
LoginUser loginUser;
try {
loginUser = SecurityUtils.getLoginUser();
} catch (Exception e) {
log.warn("自动注入警告 => 用户未登录");
return null;
}
return loginUser;
}
}

View File

@@ -0,0 +1 @@
org.wfc.common.mybatis.handler.InjectionMetaObjectHandler