aiccs-api/src/main/java/com/chinaweal/aiccs/config/handler/LocalUserMetaObjectHandler....

74 lines
2.3 KiB
Java

package com.chinaweal.aiccs.config.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.chinaweal.aiccs.common.util.StringUtils;
import com.chinaweal.aicorg.model.AICUser;
import com.chinaweal.youfool.framework.springboot.user.entity.UserBase;
import com.chinaweal.youfool.framework.springboot.util.WebUtil;
import com.chinaweal.youfool.framework.sso.util.SSOUtil;
import org.apache.ibatis.reflection.MetaObject;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
/**
* 本地用户元数据信息处理
*
* @author lroyia
* @since 2026/3/19 11:27
**/
public class LocalUserMetaObjectHandler implements MetaObjectHandler {
/**
* 修改时间
*/
private final String updateTime = "updateTime";
/**
* 插入时间
*/
private final String createTime = "createTime";
/**
* 创建人
*/
private final String createBy = "createBy";
/**
* 更新人
*/
private final String updateBy = "updateBy";
@Override
public void insertFill(MetaObject metaObject) {
String username = UserBase.currentUsername();
username = username != null ? username : "";
if (StringUtils.isBlank(username)) {
username = getUsernameBySSO();
}
setFieldValByName(createTime, LocalDateTime.now(), metaObject);
setFieldValByName(updateTime, LocalDateTime.now(), metaObject);
setFieldValByName(createBy, username, metaObject);
setFieldValByName(updateBy, username, metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
String username = UserBase.currentUsername();
username = username != null ? username : "";
if (StringUtils.isBlank(username)) {
username = getUsernameBySSO();
}
setFieldValByName(updateTime, LocalDateTime.now(), metaObject);
setFieldValByName(updateBy, username, metaObject);
}
private String getUsernameBySSO() {
try {
HttpServletRequest request = WebUtil.getRequest();
AICUser user = SSOUtil.getUser(request);
return user == null ? StringUtils.EMPTY : user.getName();
} catch (Exception e) {
return StringUtils.EMPTY;
}
}
}