mirror of
https://gitee.com/orangeform/orange-admin.git
synced 2026-01-17 10:36:31 +08:00
commit:同步2.3版本
This commit is contained in:
@@ -2,8 +2,8 @@ package com.orangeforms.common.core.base.client;
|
||||
|
||||
import com.orangeforms.common.core.constant.ErrorCodeEnum;
|
||||
import com.orangeforms.common.core.object.*;
|
||||
import feign.hystrix.FallbackFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.cloud.openfeign.FallbackFactory;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
|
||||
@@ -3,9 +3,11 @@ package com.orangeforms.common.core.base.controller;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ReflectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.orangeforms.common.core.base.mapper.BaseModelMapper;
|
||||
import com.orangeforms.common.core.base.service.IBaseService;
|
||||
import com.orangeforms.common.core.config.CoreProperties;
|
||||
import com.orangeforms.common.core.constant.AggregationKind;
|
||||
import com.orangeforms.common.core.constant.AggregationType;
|
||||
import com.orangeforms.common.core.constant.ErrorCodeEnum;
|
||||
@@ -19,6 +21,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.collections4.MapUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Field;
|
||||
@@ -42,6 +45,8 @@ import java.util.stream.Collectors;
|
||||
@Slf4j
|
||||
public abstract class BaseController<M, V, K extends Serializable> {
|
||||
|
||||
@Autowired
|
||||
private CoreProperties coreProperties;
|
||||
/**
|
||||
* 当前Service关联的主Model实体对象的Class。
|
||||
*/
|
||||
@@ -245,7 +250,42 @@ public abstract class BaseController<M, V, K extends Serializable> {
|
||||
}
|
||||
}
|
||||
M filter = queryParam.getFilterDto(modelClass);
|
||||
if (StrUtil.isNotBlank(queryParam.getInFilterField())
|
||||
&& CollUtil.isNotEmpty(queryParam.getInFilterValues())) {
|
||||
if (queryParam.getCriteriaList() == null) {
|
||||
queryParam.setCriteriaList(new LinkedList<>());
|
||||
}
|
||||
MyWhereCriteria whereCriteria = new MyWhereCriteria();
|
||||
whereCriteria.setFieldName(queryParam.getInFilterField());
|
||||
whereCriteria.setOperatorType(MyWhereCriteria.OPERATOR_IN);
|
||||
whereCriteria.setValue(queryParam.getInFilterValues());
|
||||
queryParam.getCriteriaList().add(whereCriteria);
|
||||
}
|
||||
String whereClause = MyWhereCriteria.makeCriteriaString(queryParam.getCriteriaList(), modelClass);
|
||||
if (CollUtil.isNotEmpty(queryParam.getSearchStringFieldList())
|
||||
&& StrUtil.isNotBlank(queryParam.getSearchStringValue())) {
|
||||
String tableName = MyModelUtil.mapToTableName(modelClass);
|
||||
StringBuilder sb = new StringBuilder(128);
|
||||
if (StrUtil.isNotBlank(whereClause)) {
|
||||
sb.append(" AND ");
|
||||
}
|
||||
sb.append(" CONCAT(");
|
||||
for (int i = 0; i < queryParam.getSearchStringFieldList().size(); i++) {
|
||||
String fieldName = queryParam.getSearchStringFieldList().get(i);
|
||||
String columnName = MyModelUtil.mapToColumnInfo(fieldName, modelClass).getFirst();
|
||||
if (coreProperties.isMySql()) {
|
||||
sb.append("IFNULL(");
|
||||
} else if (coreProperties.isPostgresql()) {
|
||||
sb.append("COALESCE(");
|
||||
}
|
||||
sb.append(tableName).append(".").append(columnName).append(", '')");
|
||||
if (i != queryParam.getSearchStringFieldList().size() - 1) {
|
||||
sb.append(", ");
|
||||
}
|
||||
}
|
||||
sb.append(") LIKE ").append("'").append(queryParam.getSearchStringValue()).append("'");
|
||||
whereClause = whereClause + sb.toString();
|
||||
}
|
||||
String orderBy = MyOrderParam.buildOrderBy(queryParam.getOrderParam(), modelClass);
|
||||
MyPageParam pageParam = queryParam.getPageParam();
|
||||
if (pageParam != null) {
|
||||
@@ -364,9 +404,9 @@ public abstract class BaseController<M, V, K extends Serializable> {
|
||||
for (Map.Entry<Object, Set<Object>> entry : param.getGroupedInFilterValues().entrySet()) {
|
||||
StringBuilder groupedSelectList = new StringBuilder(64);
|
||||
if (stringKey) {
|
||||
groupedSelectList.append("'").append(entry.getKey()).append("' ");
|
||||
groupedSelectList.append("'").append(entry.getKey()).append("' as ");
|
||||
} else {
|
||||
groupedSelectList.append(entry.getKey()).append(" ");
|
||||
groupedSelectList.append(entry.getKey()).append(" as ");
|
||||
}
|
||||
groupedSelectList.append(MyAggregationParam.KEY_NAME).append(", ").append(selectList);
|
||||
MyWhereCriteria criteria = new MyWhereCriteria();
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.orangeforms.common.core.object.TokenData;
|
||||
import com.orangeforms.common.core.util.ContextUtil;
|
||||
import feign.RequestInterceptor;
|
||||
import feign.RequestTemplate;
|
||||
import lombok.SneakyThrows;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@@ -17,6 +18,7 @@ import org.springframework.context.annotation.Configuration;
|
||||
@Configuration
|
||||
public class FeignConfig implements RequestInterceptor {
|
||||
|
||||
@SneakyThrows
|
||||
@Override
|
||||
public void apply(RequestTemplate requestTemplate) {
|
||||
// 对于非servlet请求发起的远程调用,由于无法获取到标识用户身份的TokenData,因此需要略过下面的HEADER注入。
|
||||
|
||||
@@ -19,13 +19,13 @@ public class MyAggregationParam {
|
||||
* 聚合返回数据中,聚合键的常量字段名。
|
||||
* 如select groupColumn groupedKey, max(aggregationColumn) aggregatedValue。
|
||||
*/
|
||||
public static final String KEY_NAME = "groupedKey";
|
||||
public static final String KEY_NAME = "grouped_key";
|
||||
|
||||
/**
|
||||
* 聚合返回数据中,聚合值的常量字段名。
|
||||
* 如select groupColumn groupedKey, max(aggregationColumn) aggregatedValue。
|
||||
*/
|
||||
public static final String VALUE_NAME = "aggregatedValue";
|
||||
public static final String VALUE_NAME = "aggregated_value";
|
||||
|
||||
/**
|
||||
* 聚合计算是否使用数据权限进行过滤。true表示数据过滤将产生作用,否则SQL中不会包含数据过滤。
|
||||
|
||||
@@ -61,6 +61,16 @@ public class MyQueryParam {
|
||||
*/
|
||||
private Boolean withDict = false;
|
||||
|
||||
/**
|
||||
* 参与模糊搜索的Java字段列表。
|
||||
*/
|
||||
private List<String> searchStringFieldList;
|
||||
|
||||
/**
|
||||
* 模糊搜索的字符串值,该值要包含百分号,这样可以精确控制搜索参数中百分号的配置。
|
||||
*/
|
||||
private String searchStringValue;
|
||||
|
||||
/**
|
||||
* 缺省构造函数。
|
||||
*/
|
||||
|
||||
@@ -43,6 +43,12 @@ public class MyDateUtil {
|
||||
private static final DateTimeFormatter DATETIME_PARSE_FORMATTER =
|
||||
DateTimeFormat.forPattern(MyDateUtil.COMMON_DATETIME_FORMAT);
|
||||
|
||||
/**
|
||||
* 缺省短日期时间格式化器,提前获取提升运行时效率。
|
||||
*/
|
||||
private static final DateTimeFormatter DATETIME_SHORT_PARSE_FORMATTER =
|
||||
DateTimeFormat.forPattern(MyDateUtil.COMMON_SHORT_DATETIME_FORMAT);
|
||||
|
||||
/**
|
||||
* 获取一天的开始时间的字符串格式,如2019-08-03 00:00:00.000。
|
||||
*
|
||||
@@ -144,6 +150,16 @@ public class MyDateUtil {
|
||||
return DATETIME_PARSE_FORMATTER.parseDateTime(dateTimeString);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将缺省格式的(不包含毫秒的)日期时间字符串解析为日期对象。
|
||||
*
|
||||
* @param dateTimeString 待解析的字符串。
|
||||
* @return 解析后的日期对象。
|
||||
*/
|
||||
public static DateTime toDateTimeWithoutMs(String dateTimeString) {
|
||||
return DATETIME_SHORT_PARSE_FORMATTER.parseDateTime(dateTimeString);
|
||||
}
|
||||
|
||||
/**
|
||||
* 截取时间到天。如2019-10-03 01:20:30 转换为 2019-10-03 00:00:00。
|
||||
* 由于没有字符串的中间转换,因此效率更高。
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<result column="request_arguments" jdbcType="VARCHAR" property="requestArguments"/>
|
||||
<result column="response_result" jdbcType="VARCHAR" property="responseResult"/>
|
||||
<result column="request_ip" jdbcType="VARCHAR" property="requestIp"/>
|
||||
<result column="success" jdbcType="BIT" property="success"/>
|
||||
<result column="success" jdbcType="BOOLEAN" property="success"/>
|
||||
<result column="error_msg" jdbcType="VARCHAR" property="errorMsg"/>
|
||||
<result column="tenant_id" jdbcType="BIGINT" property="tenantId"/>
|
||||
<result column="operator_id" jdbcType="BIGINT" property="operatorId"/>
|
||||
|
||||
Reference in New Issue
Block a user