From 9b4433fddf5b401edb0aace8a404ac733b122702 Mon Sep 17 00:00:00 2001
From: 田源 <tianyuan@vci-tech.com>
Date: 星期四, 03 四月 2025 14:35:02 +0800
Subject: [PATCH] 添加非密字段显示
---
Source/BladeX-Tool/blade-starter-mybatis/src/main/java/org/springblade/core/mp/base/BaseServiceImpl.java | 154 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 154 insertions(+), 0 deletions(-)
diff --git a/Source/BladeX-Tool/blade-starter-mybatis/src/main/java/org/springblade/core/mp/base/BaseServiceImpl.java b/Source/BladeX-Tool/blade-starter-mybatis/src/main/java/org/springblade/core/mp/base/BaseServiceImpl.java
new file mode 100644
index 0000000..4fee53b
--- /dev/null
+++ b/Source/BladeX-Tool/blade-starter-mybatis/src/main/java/org/springblade/core/mp/base/BaseServiceImpl.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package org.springblade.core.mp.base;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.SneakyThrows;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.utils.*;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.constraints.NotEmpty;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 涓氬姟灏佽鍩虹绫�
+ *
+ * @param <M> mapper
+ * @param <T> model
+ * @author Chill
+ */
+@Validated
+public class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseEntity> extends ServiceImpl<M, T> implements BaseService<T> {
+
+ @Override
+ public boolean save(T entity) {
+ this.resolveEntity(entity);
+ return super.save(entity);
+ }
+
+ @Override
+ public boolean saveBatch(Collection<T> entityList, int batchSize) {
+ entityList.forEach(this::resolveEntity);
+ return super.saveBatch(entityList, batchSize);
+ }
+
+ @Override
+ public boolean updateById(T entity) {
+ this.resolveEntity(entity);
+ return super.updateById(entity);
+ }
+
+ @Override
+ public boolean updateBatchById(Collection<T> entityList, int batchSize) {
+ entityList.forEach(this::resolveEntity);
+ return super.updateBatchById(entityList, batchSize);
+ }
+
+ @Override
+ public boolean saveOrUpdate(T entity) {
+ if (entity.getId() == null) {
+ return this.save(entity);
+ } else {
+ return this.updateById(entity);
+ }
+ }
+
+ @Override
+ public boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize) {
+ entityList.forEach(this::resolveEntity);
+ return super.saveOrUpdateBatch(entityList, batchSize);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean deleteLogic(@NotEmpty List<Long> ids) {
+ BladeUser user = AuthUtil.getUser();
+ List<T> list = new ArrayList<>();
+ ids.forEach(id -> {
+ T entity = BeanUtil.newInstance(currentModelClass());
+ if (user != null) {
+ entity.setUpdateUser(user.getUserId());
+ }
+ entity.setUpdateTime(DateUtil.now());
+ entity.setId(id);
+ list.add(entity);
+ });
+ return super.updateBatchById(list) && super.removeByIds(ids);
+ }
+
+ @Override
+ public boolean changeStatus(@NotEmpty List<Long> ids, Integer status) {
+ BladeUser user = AuthUtil.getUser();
+ List<T> list = new ArrayList<>();
+ ids.forEach(id -> {
+ T entity = BeanUtil.newInstance(currentModelClass());
+ if (user != null) {
+ entity.setUpdateUser(user.getUserId());
+ }
+ entity.setUpdateTime(DateUtil.now());
+ entity.setId(id);
+ entity.setStatus(status);
+ list.add(entity);
+ });
+ return super.updateBatchById(list);
+ }
+
+ @SneakyThrows
+ private void resolveEntity(T entity) {
+ BladeUser user = AuthUtil.getUser();
+ Date now = DateUtil.now();
+ if (entity.getId() == null) {
+ // 澶勭悊鏂板閫昏緫
+ if (user != null) {
+ entity.setCreateUser(user.getUserId());
+ entity.setCreateDept(Func.firstLong(user.getDeptId()));
+ entity.setUpdateUser(user.getUserId());
+ }
+ if (entity.getStatus() == null) {
+ entity.setStatus(BladeConstant.DB_STATUS_NORMAL);
+ }
+ entity.setCreateTime(now);
+ } else if (user != null) {
+ // 澶勭悊淇敼閫昏緫
+ entity.setUpdateUser(user.getUserId());
+ }
+ // 澶勭悊閫氱敤閫昏緫
+ entity.setUpdateTime(now);
+ entity.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+ // 澶勭悊澶氱鎴烽�昏緫锛岃嫢瀛楁鍊间负绌猴紝鍒欎笉杩涜鎿嶄綔
+ Field field = ReflectUtil.getField(entity.getClass(), BladeConstant.DB_TENANT_KEY);
+ if (ObjectUtil.isNotEmpty(field)) {
+ Method getTenantId = ClassUtil.getMethod(entity.getClass(), BladeConstant.DB_TENANT_KEY_GET_METHOD);
+ String tenantId = String.valueOf(getTenantId.invoke(entity));
+ if (ObjectUtil.isEmpty(tenantId)) {
+ Method setTenantId = ClassUtil.getMethod(entity.getClass(), BladeConstant.DB_TENANT_KEY_SET_METHOD, String.class);
+ setTenantId.invoke(entity, (Object) null);
+ }
+ }
+ }
+
+}
--
Gitblit v1.9.3