From 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a Mon Sep 17 00:00:00 2001 From: xiejun <xiejun@vci-tech.com> Date: 星期五, 01 十一月 2024 15:11:19 +0800 Subject: [PATCH] Revert "集成获取mdm分发通用数据格式接口集成" --- 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