|
@@ -0,0 +1,60 @@
|
|
|
+package com.trade.common.core.service;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
|
|
|
+import com.trade.common.core.domain.BaseI18nEntity;
|
|
|
+import com.trade.common.exception.ServiceException;
|
|
|
+import com.trade.common.utils.I18nUtil;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.jdbc.datasource.DataSourceUtils;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+
|
|
|
+import javax.sql.DataSource;
|
|
|
+import java.sql.Connection;
|
|
|
+import java.util.List;
|
|
|
+import java.util.function.BiConsumer;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class BaseI18nService {
|
|
|
+
|
|
|
+ private static final Logger log = LoggerFactory.getLogger(BaseI18nService.class);
|
|
|
+ private DataSource dataSource;
|
|
|
+
|
|
|
+ public BaseI18nService(DataSource dataSource){
|
|
|
+ this.dataSource = dataSource;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新对象列表的i18n属性
|
|
|
+ *
|
|
|
+ * @param entityList 实体类集合
|
|
|
+ * @param clazz 类信息
|
|
|
+ * @param <T> BaseI18nEntity
|
|
|
+ */
|
|
|
+ public <T extends BaseI18nEntity> List<T> setI18nMap(List<T> entityList, Class<T> clazz) {
|
|
|
+ exeI18nQuery(entityList, clazz,
|
|
|
+ (tableInfo, connection) -> I18nUtil.setI18nMap(entityList, clazz, tableInfo, connection));
|
|
|
+ return entityList;
|
|
|
+ }
|
|
|
+
|
|
|
+ private <T extends BaseI18nEntity> void exeI18nQuery(List<T> entityList, Class<T> clazz,
|
|
|
+ BiConsumer<TableInfo, Connection> biConsumer) {
|
|
|
+ if (CollectionUtils.isEmpty(entityList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ TableInfo tableInfo = TableInfoHelper.getTableInfo(clazz);
|
|
|
+ if (tableInfo == null) {
|
|
|
+ throw new ServiceException("无法获取表信息");
|
|
|
+ }
|
|
|
+ Connection connection = DataSourceUtils.getConnection(dataSource);
|
|
|
+ try {
|
|
|
+ biConsumer.accept(tableInfo, connection);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error(e.getMessage(), e);
|
|
|
+ } finally {
|
|
|
+ DataSourceUtils.releaseConnection(connection, dataSource);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|