diff --git a/epmet-admin/epmet-admin-client/src/main/java/com/epmet/dto/form/CorsConfigFormDTO.java b/epmet-admin/epmet-admin-client/src/main/java/com/epmet/dto/form/CorsConfigFormDTO.java new file mode 100644 index 0000000000..18668f87fe --- /dev/null +++ b/epmet-admin/epmet-admin-client/src/main/java/com/epmet/dto/form/CorsConfigFormDTO.java @@ -0,0 +1,37 @@ +package com.epmet.dto.form; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CorsConfigFormDTO { + + public interface Add {} + public interface Update {} + + @NotBlank(message = "ID不能为空", groups = { Update.class }) + private String id; + + /** + * 首部type + */ + @NotBlank(message = "首部类型不能为空", groups = { Add.class, Update.class }) + private String headerType; + + /** + * 首部value + */ + @NotBlank(message = "首部值不能为空", groups = { Add.class, Update.class }) + private String headerValue; + + /** + * 备注 + */ + private String comment; + +} diff --git a/epmet-admin/epmet-admin-client/src/main/java/com/epmet/dto/result/CorsConfigResultDTO.java b/epmet-admin/epmet-admin-client/src/main/java/com/epmet/dto/result/CorsConfigResultDTO.java new file mode 100644 index 0000000000..828e2998ae --- /dev/null +++ b/epmet-admin/epmet-admin-client/src/main/java/com/epmet/dto/result/CorsConfigResultDTO.java @@ -0,0 +1,27 @@ +package com.epmet.dto.result; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CorsConfigResultDTO { + + private String id; + /** + * 首部类型 + */ + private String headerType; + + /** + * 首部值 + */ + private String headerValue; + + /** + * 首部备注 + */ + private String comment; +} diff --git a/epmet-admin/epmet-admin-client/src/main/java/com/epmet/feign/EpmetAdminOpenFeignClient.java b/epmet-admin/epmet-admin-client/src/main/java/com/epmet/feign/EpmetAdminOpenFeignClient.java new file mode 100644 index 0000000000..e1b48a9186 --- /dev/null +++ b/epmet-admin/epmet-admin-client/src/main/java/com/epmet/feign/EpmetAdminOpenFeignClient.java @@ -0,0 +1,24 @@ +package com.epmet.feign; + +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.result.CorsConfigResultDTO; +import com.epmet.feign.fallback.EpmetAdminOpenFeignClientFallback; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; + +import java.util.List; + +@FeignClient(name = ServiceConstant.EPMET_ADMIN_SERVER, fallback = EpmetAdminOpenFeignClientFallback.class) +//@FeignClient(name = ServiceConstant.EPMET_ADMIN_SERVER, fallback = EpmetAdminOpenFeignClientFallback.class, url = "localhost:8082") +public interface EpmetAdminOpenFeignClient { + + /** + * @Description 查询跨域配置列表 + * @return + * @author wxz + * @date 2021.06.25 10:00 + */ + @PostMapping("/sys/cors-config/list") + Result> list(); +} diff --git a/epmet-admin/epmet-admin-client/src/main/java/com/epmet/feign/fallback/EpmetAdminOpenFeignClientFallback.java b/epmet-admin/epmet-admin-client/src/main/java/com/epmet/feign/fallback/EpmetAdminOpenFeignClientFallback.java new file mode 100644 index 0000000000..72edce3446 --- /dev/null +++ b/epmet-admin/epmet-admin-client/src/main/java/com/epmet/feign/fallback/EpmetAdminOpenFeignClientFallback.java @@ -0,0 +1,18 @@ +package com.epmet.feign.fallback; + +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.ModuleUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.result.CorsConfigResultDTO; +import com.epmet.feign.EpmetAdminOpenFeignClient; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +public class EpmetAdminOpenFeignClientFallback implements EpmetAdminOpenFeignClient { + @Override + public Result> list() { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "list", null); + } +} diff --git a/epmet-admin/epmet-admin-server/src/main/java/com/epmet/controller/CorsConfigController.java b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/controller/CorsConfigController.java new file mode 100644 index 0000000000..6ccf102354 --- /dev/null +++ b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/controller/CorsConfigController.java @@ -0,0 +1,70 @@ +package com.epmet.controller; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.form.CorsConfigFormDTO; +import com.epmet.dto.result.CorsConfigResultDTO; +import com.epmet.service.CorsConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("cors-config") +public class CorsConfigController { + + @Autowired + private CorsConfigService corsConfigService; + + /** + * @Description 查询跨域配置列表 + * @return + * @author wxz + * @date 2021.06.25 10:00 + */ + @PostMapping("/list") + public Result> list() { + List list = corsConfigService.list(); + return new Result>().ok(list); + } + + /** + * @Description 添加跨域配置 + * @return + * @author wxz + * @date 2021.06.25 13:51 + */ + @PostMapping("/add") + public Result addConfig(@RequestBody CorsConfigFormDTO input) { + ValidatorUtils.validateEntity(input, CorsConfigFormDTO.Add.class); + CorsConfigResultDTO data = corsConfigService.addConfig(input.getHeaderType(), input.getHeaderValue(), input.getComment()); + return new Result().ok(data); + } + + /** + * @Description 通过id删除配置 + * @return + * @author wxz + * @date 2021.06.25 14:18 + */ + @PostMapping("/delete/{id}") + public Result deleteConfigById(@PathVariable("id") String configId) { + corsConfigService.deleteById(configId); + return new Result<>(); + } + + /** + * @Description 根据id更新 + * @return + * @author wxz + * @date 2021.06.25 14:23 + */ + @PostMapping("/update") + public Result updateById(@RequestBody CorsConfigFormDTO input) { + ValidatorUtils.validateEntity(input, CorsConfigFormDTO.Update.class); + corsConfigService.updateById(input.getId(), input.getHeaderType(), input.getHeaderValue(), input.getComment()); + return new Result<>(); + } + +} diff --git a/epmet-admin/epmet-admin-server/src/main/java/com/epmet/dao/CorsConfigDao.java b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/dao/CorsConfigDao.java new file mode 100644 index 0000000000..0b6c499833 --- /dev/null +++ b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/dao/CorsConfigDao.java @@ -0,0 +1,33 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.CorsConfigEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 跨域配置表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-06-25 + */ +@Mapper +public interface CorsConfigDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-admin/epmet-admin-server/src/main/java/com/epmet/entity/CorsConfigEntity.java b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/entity/CorsConfigEntity.java new file mode 100644 index 0000000000..0a717f1c50 --- /dev/null +++ b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/entity/CorsConfigEntity.java @@ -0,0 +1,56 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 跨域配置表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-06-25 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("cors_config") +public class CorsConfigEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 首部类型 + */ + private String headerType; + + /** + * 首部值 + */ + private String headerValue; + + /** + * 说明 + */ + private String comment; + +} diff --git a/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/CorsConfigService.java b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/CorsConfigService.java new file mode 100644 index 0000000000..93a6b358a3 --- /dev/null +++ b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/CorsConfigService.java @@ -0,0 +1,20 @@ +package com.epmet.service; + +import com.epmet.dto.result.CorsConfigResultDTO; + +import java.util.List; + +/** + * @Description 跨域配置service接口 + * @author wxz + * @date 2021-06-44 09:52:44 +*/ +public interface CorsConfigService { + List list(); + + CorsConfigResultDTO addConfig(String headerType, String headerValue, String comment); + + void deleteById(String configId); + + void updateById(String configId, String headerType, String headerValue, String comment); +} diff --git a/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/CorsConfigServiceImpl.java b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/CorsConfigServiceImpl.java new file mode 100644 index 0000000000..2441882ea3 --- /dev/null +++ b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/CorsConfigServiceImpl.java @@ -0,0 +1,110 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.redis.RedisKeys; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.dao.CorsConfigDao; +import com.epmet.dto.result.CorsConfigResultDTO; +import com.epmet.entity.CorsConfigEntity; +import com.epmet.service.CorsConfigService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.HashOperations; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Description 跨域配置 + * @author wxz + * @date 2021.06.25 09:53:57 +*/ +@Service +public class CorsConfigServiceImpl implements CorsConfigService { + + @Autowired + private CorsConfigDao corsConfigDao; + + @Autowired + private RedisTemplate redisTemplate; + + private Logger logger = LoggerFactory.getLogger(getClass()); + + /** + * @Description 查询配置列表 + * @return + * @author wxz + * @date 2021.06.25 09:58 + */ + @Override + public List list() { + LambdaQueryWrapper conditions = new LambdaQueryWrapper<>(); + return ConvertUtils.sourceToTarget(corsConfigDao.selectList(conditions), CorsConfigResultDTO.class); + } + + @Override + public CorsConfigResultDTO addConfig(String headerType, String headerValue, String comment) { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.eq(CorsConfigEntity::getHeaderType, headerType.trim()); + w.eq(CorsConfigEntity::getHeaderValue, headerValue.trim()); + if (corsConfigDao.selectCount(w) > 0) { + throw new RenException(EpmetErrorCode.OPER_CORS_CONFIG_ERROR.getCode(), "已存在该跨域配置,请勿重复添加"); + } + + CorsConfigEntity insert = new CorsConfigEntity(); + insert.setHeaderType(headerType); + insert.setHeaderValue(headerValue); + insert.setComment(comment); + if (corsConfigDao.insert(insert) == 0) { + throw new RenException(EpmetErrorCode.OPER_CORS_CONFIG_ERROR.getCode(), "插入跨域配置出错"); + } + + deleteFromRedis(); + return new CorsConfigResultDTO(insert.getId(), headerType, headerValue, comment); + } + + @Override + public void deleteById(String configId) { + if (corsConfigDao.deleteById(configId) == 0) { + String msg = "删除出错,不存在该项数据"; + throw new RenException(EpmetErrorCode.OPER_CORS_CONFIG_ERROR.getCode(), msg, msg, RenException.MessageMode.CODE_INTERNAL_EXTERNAL); + } + deleteFromRedis(); + } + + @Override + public void updateById(String configId, String headerType, String headerValue, String comment) { + CorsConfigEntity exists = corsConfigDao.selectById(configId); + if (exists == null) { + String msg = "该项数据不存在"; + throw new RenException(EpmetErrorCode.OPER_CORS_CONFIG_ERROR.getCode(), msg, msg, RenException.MessageMode.CODE_INTERNAL_EXTERNAL); + } + exists.setHeaderType(headerType); + exists.setHeaderValue(headerValue); + exists.setComment(comment); + if (corsConfigDao.updateById(exists) == 0) { + throw new RenException(EpmetErrorCode.OPER_CORS_CONFIG_ERROR.getCode(), "更新出错,影响条数为0"); + } + deleteFromRedis(); + } + + /** + * @Description 从缓存中删除 + * @return + * @author wxz + * @date 2021.06.25 14:26 + */ + private void deleteFromRedis() { + try { + redisTemplate.delete(RedisKeys.getCorsConfigKey()); + } catch (Exception e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + logger.error(String.format("从Redis中删除Cors跨域信息失败,程序继续执行。错误信息:%s", errorMsg)); + } + } +} diff --git a/epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.5__cors_config_tbl.sql b/epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.5__cors_config_tbl.sql new file mode 100644 index 0000000000..f240aff0bc --- /dev/null +++ b/epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.5__cors_config_tbl.sql @@ -0,0 +1,13 @@ +CREATE TABLE `cors_config` ( + `ID` varchar(64) NOT NULL, + `HEADER_TYPE` varchar(32) NOT NULL COMMENT '首部类型', + `HEADER_VALUE` varchar(128) NOT NULL COMMENT '首部值', + `COMMENT` varchar(512) DEFAULT NULL COMMENT '说明', + `DEL_FLAG` int(11) NOT NULL DEFAULT '0' COMMENT '删除标识 0.未删除 1.已删除', + `REVISION` int(11) NOT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='跨域配置表' \ No newline at end of file diff --git a/epmet-admin/epmet-admin-server/src/main/resources/mapper/CorsConfigDao.xml b/epmet-admin/epmet-admin-server/src/main/resources/mapper/CorsConfigDao.xml new file mode 100644 index 0000000000..36201beb73 --- /dev/null +++ b/epmet-admin/epmet-admin-server/src/main/resources/mapper/CorsConfigDao.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java index 86edad6f0b..2538492bb8 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java @@ -128,6 +128,7 @@ public enum EpmetErrorCode { USER_LIST_ROLES_BY_KEY_FAIL(8715, "根据角色key查询角色列表失败"), OPER_UPLOAD_IMG_TYPE_ERROR(8716, "请上传PNG格式的图片"), OPER_UPLOAD_IMG_SIZE_ERROR(8717, "请上传200*200的图片"), + OPER_CORS_CONFIG_ERROR(8718, "跨域配置错误"), // 党建声音 前端提示 88段 DRAFT_CONTENT_IS_NULL(8801, "至少需要添加一个段落"), diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java index 0dfa22915c..68c417c580 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java @@ -459,4 +459,14 @@ public class RedisKeys { String currentMonth= DateUtils.getBeforeNMonth(NumConstant.ZERO); return "groupread:user:".concat(currentMonth).concat(":").concat(source).concat(":").concat(groupId).concat(":").concat(sourceId); } + + /** + * @Description 跨域配置key + * @return + * @author wxz + * @date 2021.06.25 10:31 + */ + public static String getCorsConfigKey() { + return rootPrefix.concat("sys:cors"); + } } diff --git a/epmet-gateway/pom.xml b/epmet-gateway/pom.xml index b89bc59c0e..6d62b56d53 100644 --- a/epmet-gateway/pom.xml +++ b/epmet-gateway/pom.xml @@ -81,6 +81,11 @@ epmet-commons-openapi 2.0.0 + + com.epmet + epmet-admin-client + 2.0.0 + diff --git a/epmet-gateway/src/main/java/com/epmet/bean/CorsConfigCache.java b/epmet-gateway/src/main/java/com/epmet/bean/CorsConfigCache.java new file mode 100644 index 0000000000..3a44510959 --- /dev/null +++ b/epmet-gateway/src/main/java/com/epmet/bean/CorsConfigCache.java @@ -0,0 +1,21 @@ +package com.epmet.bean; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @Description 跨域配置缓存 + * @author wxz + * @date 2021.06.25 10:59:44 +*/ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CorsConfigCache { + + private List accessControlAllowOrigins; + +} diff --git a/epmet-gateway/src/main/java/com/epmet/config/CorsConfig.java b/epmet-gateway/src/main/java/com/epmet/config/CorsConfig.java index ffec185a98..bb95213c1f 100644 --- a/epmet-gateway/src/main/java/com/epmet/config/CorsConfig.java +++ b/epmet-gateway/src/main/java/com/epmet/config/CorsConfig.java @@ -1,15 +1,29 @@ /** * Copyright (c) 2018 人人开源 All rights reserved. - * + *

* https://www.renren.io - * + *

* 版权所有,侵权必究! */ package com.epmet.config; +import com.epmet.bean.CorsConfigCache; +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.feign.ResultDataResolver; +import com.epmet.commons.tools.redis.RedisKeys; +import com.epmet.dto.result.CorsConfigResultDTO; +import com.epmet.feign.EpmetAdminOpenFeignClient; +import org.apache.commons.collections4.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.core.HashOperations; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; @@ -21,6 +35,11 @@ import org.springframework.web.server.WebFilter; import org.springframework.web.server.WebFilterChain; import reactor.core.publisher.Mono; +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + /** * Cors跨域 * @@ -29,33 +48,105 @@ import reactor.core.publisher.Mono; */ @Configuration public class CorsConfig { - private static final String MAX_AGE = "18000L"; @Bean public WebFilter corsFilter() { - return (ServerWebExchange ctx, WebFilterChain chain) -> { - ServerHttpRequest request = ctx.getRequest(); - if (!CorsUtils.isCorsRequest(request)) { - return chain.filter(ctx); - } - HttpHeaders requestHeaders = request.getHeaders(); - ServerHttpResponse response = ctx.getResponse(); - HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod(); - HttpHeaders headers = response.getHeaders(); + return new EpmetWebFilter(); + } +} + +/** + * @Description 用于CORS等操作的判断 + * @return + * @author wxz + * @date 2021.06.25 10:42 + */ +class EpmetWebFilter implements WebFilter, ResultDataResolver { + + private static final String MAX_AGE = "18000L"; + + @Autowired + private EpmetAdminOpenFeignClient adminOpenFeignClient; + + @Resource + private RedisTemplate redisTemplate; + + private Logger logger = LoggerFactory.getLogger(getClass()); + + @Override + public Mono filter(ServerWebExchange ctx, WebFilterChain chain) { + ServerHttpRequest request = ctx.getRequest(); + if (!CorsUtils.isCorsRequest(request)) { + return chain.filter(ctx); + } + HttpHeaders requestHeaders = request.getHeaders(); + ServerHttpResponse response = ctx.getResponse(); + HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod(); + HttpHeaders headers = response.getHeaders(); + if (isAllowed(requestHeaders.getOrigin())) { headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, requestHeaders.getOrigin()); - headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, requestHeaders.getAccessControlRequestHeaders()); - if (requestMethod != null) { - headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, requestMethod.name()); + } + headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, requestHeaders.getAccessControlRequestHeaders()); + if (requestMethod != null) { + headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, requestMethod.name()); + } + headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true"); + headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "*"); + headers.add(HttpHeaders.ACCESS_CONTROL_MAX_AGE, MAX_AGE); + if (request.getMethod() == HttpMethod.OPTIONS) { + response.setStatusCode(HttpStatus.OK); + return Mono.empty(); + } + return chain.filter(ctx); + } + + /** + * @Description 是否允许跨域 + * @return + * @author wxz + * @date 2021.06.25 10:43 + */ + private Boolean isAllowed(String origin) { + HashOperations> ope = redisTemplate.opsForHash(); + Map> configMap = ope.entries(RedisKeys.getCorsConfigKey()); + + if (configMap == null || configMap.size() == 0) { + List data = null; + try { + data = getResultDataOrThrowsException( + adminOpenFeignClient.list(), + ServiceConstant.EPMET_ADMIN_SERVER, + EpmetErrorCode.SERVER_ERROR.getCode(), + "调用Admin服务查询Cors配置失败"); + } catch (Exception e) { + logger.error("调用Admin服务查询Cors配置失败"); } - headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true"); - headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "*"); - headers.add(HttpHeaders.ACCESS_CONTROL_MAX_AGE, MAX_AGE); - if (request.getMethod() == HttpMethod.OPTIONS) { - response.setStatusCode(HttpStatus.OK); - return Mono.empty(); + + // 将origin集合 + List origins = data.stream() + .filter((c) -> HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN.equals(c.getHeaderType())) + .map((c) -> c.getHeaderValue()) + .collect(Collectors.toList()); + + try { + configMap.put(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, origins); + ope.putAll(RedisKeys.getCorsConfigKey(), configMap); + } catch (Exception e) { + logger.error(String.format("gateway缓存跨域配置出错:%s", ExceptionUtils.getErrorStackTrace(e))); } - return chain.filter(ctx); - }; - } + } -} + List accessControlAllowOrigins = configMap.get(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN); + + logger.info("accessControlAllowOrigins:" + accessControlAllowOrigins); + logger.info("origin:" + origin); + + if (CollectionUtils.isEmpty(accessControlAllowOrigins)) { + return false; + } + if (accessControlAllowOrigins.contains("*")) { + return true; + } + return accessControlAllowOrigins.contains(origin); + } +} \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java index 2ebc6b4613..175525d16d 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java @@ -7,7 +7,6 @@ import com.epmet.dataaggre.constant.DataSourceConstant; import com.epmet.dataaggre.dao.epmetuser.StaffPatrolRecordDao; import com.epmet.dataaggre.dao.epmetuser.StaffRoleDao; import com.epmet.dataaggre.dao.epmetuser.UserBaseInfoDao; -import com.epmet.dataaggre.dto.datastats.result.SubAgencyUserResultDTO; import com.epmet.dataaggre.dto.epmetuser.StaffPatrolDetailDTO; import com.epmet.dataaggre.dto.epmetuser.StaffPatrolRecordDTO; import com.epmet.dataaggre.dto.epmetuser.form.PatrolDateListFormDTO; @@ -21,9 +20,7 @@ import com.epmet.dataaggre.service.epmetuser.StaffPatrolDetailService; import com.epmet.dataaggre.service.epmetuser.StaffPatrolRecordService; import com.epmet.dataaggre.service.govorg.GovOrgService; import lombok.extern.slf4j.Slf4j; -import oracle.sql.NUMBER; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -78,6 +75,7 @@ public class EpmetUserServiceImpl implements EpmetUserService { /** * @Param formDTO * @Description 001、各人员巡查记录列表查询 + * @remark 因为是yi以人为单位的数据 所以要内存分页 * @author sun */ @Override diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/indexcal/AgencyScoreDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/indexcal/AgencyScoreDao.java index d0f1ab08df..05ed692454 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/indexcal/AgencyScoreDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/indexcal/AgencyScoreDao.java @@ -94,7 +94,7 @@ public interface AgencyScoreDao extends BaseDao { * @date 2021/1/18 上午9:09 */ List selectAgencyScoreAvgExistsSub(@Param("monthId")String monthId, @Param("indexCode")String indexCode,@Param("areaCode")String areaCode); - List selectAgencyScoreAvgExistsSubNew(@Param("monthId")String monthId, @Param("indexCode")String indexCode,@Param("areaCode")String areaCode,@Param("quarterId")String quarterId,@Param("yearId")String yearId); + List selectAgencyScoreAvgExistsSubNew(@Param("monthId")String monthId, @Param("indexCode")String indexCode,@Param("areaCode")String areaCode,@Param("quarterId")String quarterId,@Param("yearId")String yearId,@Param("customerId")String customerId); List selectAgencyScoreAvgByOrgIds(@Param("monthId")String monthId, @Param("indexCode")String indexCode,@Param("orgIds")List orgIds); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateDistrictServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateDistrictServiceImpl.java index 9c8e1579d9..1a40acf7aa 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateDistrictServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateDistrictServiceImpl.java @@ -649,10 +649,10 @@ public class IndexCalculateDistrictServiceImpl implements IndexCalculateDistrict Map gridPartyScoreSampleCountMap = new HashMap<>(); indexDetailList.forEach(detail -> { if (IndexCodeEnum.QU_XIA_JI_JIE_DDJNLHZPJZ.getCode().equals(detail.getIndexCode())) { - List subGridPartyAvgScore = agencyScoreDao.selectAgencyScoreAvgExistsSubNew(monthId,IndexCodeEnum.DANG_JIAN_NENG_LI.getCode(),form.getCustomerAreaCode(),quarterId,yearId); + List subGridPartyAvgScore = agencyScoreDao.selectAgencyScoreAvgExistsSubNew(monthId,IndexCodeEnum.DANG_JIAN_NENG_LI.getCode(),form.getCustomerAreaCode(),quarterId,yearId,customerId); log.info("subGridPartyAvgScore:::"+subGridPartyAvgScore.toString()); subGridPartyAvgScore.forEach(s -> { - gridPartyScoreSampleCountMap.put(s.getAgencyId().concat(":").concat(IndexCodeEnum.QU_XIA_JI_JIE_DDJNLHZPJZ.getCode()), s.getSampleCount()); + gridPartyScoreSampleCountMap.put(s.getParentId().concat(":").concat(IndexCodeEnum.QU_XIA_JI_JIE_DDJNLHZPJZ.getCode()), s.getSampleCount()); }); if (CollectionUtils.isEmpty(subGridPartyAvgScore)) { log.warn(IndexCalConstant.DISTRICT_PARTY_AVG_NULL); @@ -745,10 +745,10 @@ public class IndexCalculateDistrictServiceImpl implements IndexCalculateDistrict detailListByParentCode.forEach(detail -> { if (IndexCodeEnum.SUO_YOU_JIE_DAO_ZLNLPJZ.getCode().equals(detail.getIndexCode())) { // 治理能力平均值 - List districtGovernAvgList = agencyScoreDao.selectAgencyScoreAvgExistsSubNew(monthId, IndexCodeEnum.ZHI_LI_NENG_LI.getCode(),form.getCustomerAreaCode(),quarterId,yearId); + List districtGovernAvgList = agencyScoreDao.selectAgencyScoreAvgExistsSubNew(monthId, IndexCodeEnum.ZHI_LI_NENG_LI.getCode(),form.getCustomerAreaCode(),quarterId,yearId,customerId); log.info("districtGovernAvgList:::"+districtGovernAvgList.toString()); districtGovernAvgList.forEach(s -> { - gridPartyScoreSampleCountMap.put(s.getAgencyId().concat(":").concat(IndexCodeEnum.SUO_YOU_JIE_DAO_ZLNLPJZ.getCode()), s.getSampleCount()); + gridPartyScoreSampleCountMap.put(s.getParentId().concat(":").concat(IndexCodeEnum.SUO_YOU_JIE_DAO_ZLNLPJZ.getCode()), s.getSampleCount()); }); for (int i = 0; i < districtGovernAvgList.size(); i++) { if (districtGovernAvgList.get(i).getAgencyId().equals(NumConstant.ZERO_STR)){ @@ -790,6 +790,9 @@ public class IndexCalculateDistrictServiceImpl implements IndexCalculateDistrict if (CollectionUtils.isEmpty(deptScoreAvgList)) { log.warn("查询所有直属部门治理能力平均值集合为空"); } else{ + deptScoreAvgList.forEach(d -> { + gridPartyScoreSampleCountMap.put(d.getAgencyId().concat(":").concat(IndexCodeEnum.SUO_YOU_ZHI_SHU_BMZLNLPJZ.getCode()), d.getSampleCount()); + }); MaxAndMinBigDecimalResultDTO maxAndMinBigDecimal = this.getMaxAndMinBigDecimal(deptScoreAvgList.stream().map(o -> o.getScore()).collect(Collectors.toList())); List> governAvg = ListUtils.partition(deptScoreAvgList, IndexCalConstant.PAGE_SIZE); governAvg.forEach(avg -> { @@ -845,10 +848,10 @@ public class IndexCalculateDistrictServiceImpl implements IndexCalculateDistrict detailListByParentCode.forEach(detail -> { String indexCode = detail.getIndexCode(); if (IndexCodeEnum.QU_XIA_SHU_JIE_DFWNLHZPJZ.getCode().equals(indexCode)) { - List subStreetAvgList = agencyScoreDao.selectAgencyScoreAvgExistsSubNew(monthId,IndexCodeEnum.FU_WU_NENG_LI.getCode(),form.getCustomerAreaCode(),quarterId,yearId); + List subStreetAvgList = agencyScoreDao.selectAgencyScoreAvgExistsSubNew(monthId,IndexCodeEnum.FU_WU_NENG_LI.getCode(),form.getCustomerAreaCode(),quarterId,yearId,customerId); log.info("subStreetAvgList:::"+subStreetAvgList.toString()); subStreetAvgList.forEach(s -> { - gridPartyScoreSampleCountMap.put(s.getAgencyId().concat(":").concat(IndexCodeEnum.QU_XIA_SHU_JIE_DFWNLHZPJZ.getCode()), s.getSampleCount()); + gridPartyScoreSampleCountMap.put(s.getParentId().concat(":").concat(IndexCodeEnum.QU_XIA_SHU_JIE_DFWNLHZPJZ.getCode()), s.getSampleCount()); }); for (int i = 0; i < subStreetAvgList.size(); i++) { if (subStreetAvgList.get(i).getAgencyId().equals(NumConstant.ZERO_STR)){ diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateStreetServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateStreetServiceImpl.java index b19e564503..ca12d8058f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateStreetServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateStreetServiceImpl.java @@ -667,7 +667,7 @@ public class IndexCalculateStreetServiceImpl implements IndexCalculateStreetServ List dispose = communityScoreDao.selectSubCommAvgScoreExistSubNotSelfNew(monthId,IndexCodeEnum.DANG_JIAN_NENG_LI.getCode(),form.getCustomerAreaCode(),quarterId,yearId); // 数据处理 List subCommPartyAvgScore = disposeSubAvg(dispose, form); - dispose.forEach(s -> { + subCommPartyAvgScore.forEach(s -> { gridPartyScoreSampleCountMap.put(s.getAgencyId().concat(":").concat(IndexCodeEnum.JIE_DAO_XIA_SHU_SYSQDJNLHZPJZ.getCode()), s.getSampleCount()); }); if (CollectionUtils.isEmpty(subCommPartyAvgScore)) { @@ -971,6 +971,7 @@ public class IndexCalculateStreetServiceImpl implements IndexCalculateStreetServ avgScore.forEach(avg -> { if (subScore.getAgencyId().equals(avg.getParentId())){ subScore.setScore(avg.getScore()); + subScore.setSampleCount(avg.getSampleCount()); avg.setScoreStatus(true); } }); @@ -991,6 +992,8 @@ public class IndexCalculateStreetServiceImpl implements IndexCalculateStreetServ // 孔村单独处理 if (s.getAgencyId().equals(PingYinConstant.KONG_CUN_AGENCY_ID)){ s.setScore(divide); + // 党总支数量求平均数 + s.setSampleCount(subAvgResultDTOS.size()); } }); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/indexcal/AgencyScoreDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/indexcal/AgencyScoreDao.xml index 9cceffc4df..10868e075f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/indexcal/AgencyScoreDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/indexcal/AgencyScoreDao.xml @@ -263,7 +263,9 @@ (fics.agency_id = sca.agency_id AND fics.del_flag = '0' AND fics.month_id = #{monthId} - AND fics.index_code = #{indexCode}) + AND fics.index_code = #{indexCode} + AND fics.CUSTOMER_ID = #{customerId} + ) WHERE sca.DEL_FLAG = '0' AND sca.PARENT_AREA_CODE = #{areaCode} GROUP BY parentId diff --git a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/InitPointRuleResultDTO.java b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/InitPointRuleResultDTO.java index 4f486cba66..205b69db19 100644 --- a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/InitPointRuleResultDTO.java +++ b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/InitPointRuleResultDTO.java @@ -42,4 +42,6 @@ public class InitPointRuleResultDTO implements Serializable { * 已经初始化总数 */ private Integer initedTotal; -} \ No newline at end of file + + private String InitedDetail; +} diff --git a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/feign/EpmetPointOpenFeignClient.java b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/feign/EpmetPointOpenFeignClient.java index 63ffc6a3c0..8093ad3fee 100644 --- a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/feign/EpmetPointOpenFeignClient.java +++ b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/feign/EpmetPointOpenFeignClient.java @@ -2,12 +2,15 @@ package com.epmet.feign; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.BizPointTotalDetailDTO; import com.epmet.dto.InitPointRuleResultDTO; import com.epmet.dto.form.CommonUserFormDTO; +import com.epmet.dto.form.GroupPointFormDTO; import com.epmet.dto.result.ResiPointDetailResultDTO; import com.epmet.feign.fallback.EpmetPointOpenFeignClientFallback; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; /** * 本服务对外开放的API,其他服务通过引用此client调用该服务 @@ -33,5 +36,16 @@ public interface EpmetPointOpenFeignClient { * @author sun **/ @PostMapping("/point/opback/initpointrule") - Result initPointRule(); + Result initPointRule(String customerId); + + /** + * 获取小组积分 + * @author zhaoqifeng + * @date 2021/6/24 12:24 + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("/point/group/point/grouppoint") + Result getGroupPoint(@RequestBody GroupPointFormDTO formDTO); + } diff --git a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/feign/fallback/EpmetPointOpenFeignClientFallback.java b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/feign/fallback/EpmetPointOpenFeignClientFallback.java index ab0688e134..04e953edc9 100644 --- a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/feign/fallback/EpmetPointOpenFeignClientFallback.java +++ b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/feign/fallback/EpmetPointOpenFeignClientFallback.java @@ -3,11 +3,14 @@ package com.epmet.feign.fallback; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.BizPointTotalDetailDTO; import com.epmet.dto.InitPointRuleResultDTO; import com.epmet.dto.form.CommonUserFormDTO; +import com.epmet.dto.form.GroupPointFormDTO; import com.epmet.dto.result.ResiPointDetailResultDTO; import com.epmet.feign.EpmetPointOpenFeignClient; import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.RequestParam; /** * @Description @@ -23,7 +26,20 @@ public class EpmetPointOpenFeignClientFallback implements EpmetPointOpenFeignCli } @Override - public Result initPointRule() { - return ModuleUtils.feignConError(ServiceConstant.EPMET_POINT_SERVER, "initPointRule"); + public Result initPointRule(@RequestParam String customerId) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_POINT_SERVER, "initPointRule",customerId); + } + + /** + * 获取小组积分 + * + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author zhaoqifeng + * @date 2021/6/24 12:24 + */ + @Override + public Result getGroupPoint(GroupPointFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_POINT_SERVER, "formDTO"); } } diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/BackDoorController.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/BackDoorController.java index cbbbbeebf5..047ae55ce6 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/BackDoorController.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/BackDoorController.java @@ -9,10 +9,7 @@ import com.epmet.dto.InitPointRuleResultDTO; import com.epmet.dto.form.PointRuleFormDTO; import com.epmet.service.PointRuleService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -44,12 +41,12 @@ public class BackDoorController { /** * desc:批量添加规则 * - * @param list + * @param customerId * @return */ - @PostMapping(value = "initpointrule") - public Result initPointRule() { - InitPointRuleResultDTO resultDTO = pointRuleService.initPointRule(); + @GetMapping(value = "initpointrule") + public Result initPointRule(@RequestParam(required = false) String customerId) { + InitPointRuleResultDTO resultDTO = pointRuleService.initPointRule(customerId); return new Result().ok(resultDTO); } diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/GroupPointController.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/GroupPointController.java index eed49d25d6..9fd48f00a1 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/GroupPointController.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/GroupPointController.java @@ -4,6 +4,7 @@ import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.BizPointTotalDetailDTO; import com.epmet.dto.form.GroupPointFormDTO; import com.epmet.dto.result.GroupPointRankingResultDTO; import com.epmet.dto.result.GroupPointRuleResultDTO; @@ -97,4 +98,19 @@ public class GroupPointController { result.setGroupSummary(ModuleConstant.GROUP_RULE_SUMMARY); return new Result().ok(result); } + + /** + * 获取小组积分 + * @author zhaoqifeng + * @date 2021/6/24 12:17 + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("grouppoint") + public Result getGroupPoint(@RequestBody GroupPointFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, GroupPointFormDTO.GroupPoint.class); + BizPointTotalDetailDTO result = bizPointTotalDetailService.getGroupPoint(formDTO); + return new Result().ok(result); + } + } diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/BizPointTotalDetailService.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/BizPointTotalDetailService.java index f72e49ba39..8a81ff5ffb 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/BizPointTotalDetailService.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/BizPointTotalDetailService.java @@ -126,4 +126,13 @@ public interface BizPointTotalDetailService extends BaseService groupPointRanking(GroupPointFormDTO formDTO); + + /** + * 获取小组积分 + * @author zhaoqifeng + * @date 2021/6/24 12:17 + * @param formDTO + * @return com.epmet.dto.BizPointTotalDetailDTO + */ + BizPointTotalDetailDTO getGroupPoint(GroupPointFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/PointRuleService.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/PointRuleService.java index cd39750f34..101261fe55 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/PointRuleService.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/PointRuleService.java @@ -69,7 +69,7 @@ public interface PointRuleService extends BaseService { **/ PointRuleEntity getByEventCodeAndCustomerId(String customerId,String eventCode); - InitPointRuleResultDTO initPointRule(); + InitPointRuleResultDTO initPointRule(String customerId); /** * 获取小组积分规则 @@ -79,4 +79,4 @@ public interface PointRuleService extends BaseService { * @return com.epmet.dto.result.GroupPointRuleResultDTO */ GroupPointRuleResultDTO getGroupRule(String customerId); -} \ No newline at end of file +} diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/BizPointTotalDetailServiceImpl.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/BizPointTotalDetailServiceImpl.java index 683347a350..c1a7dbe14b 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/BizPointTotalDetailServiceImpl.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/BizPointTotalDetailServiceImpl.java @@ -17,6 +17,7 @@ package com.epmet.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; @@ -29,6 +30,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.dao.BizPointTotalDetailDao; import com.epmet.dto.BizPointTotalDetailDTO; import com.epmet.dto.form.GroupPointFormDTO; +import com.epmet.resi.group.dto.group.form.GroupPointDetailFormDTO; import com.epmet.resi.group.dto.group.result.GroupPointDetailResultDTO; import com.epmet.dto.result.GroupPointRankingResultDTO; import com.epmet.entity.BizPointTotalDetailEntity; @@ -140,16 +142,20 @@ public class BizPointTotalDetailServiceImpl extends BaseServiceImpl result = resiGroupOpenFeignClient.groupPointDetail(formDTO.getGroupId()); - if (!result.success() || null == result.getData()) { - throw new RenException(result.getCode(), result.getMsg()); - } - GroupPointDetailResultDTO detail = result.getData(); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("BIZ_TYPE", "group") .eq("OBJECT_ID", formDTO.getGroupId()) .eq("DEL_FLAG", NumConstant.ZERO_STR); BizPointTotalDetailEntity entity = baseDao.selectOne(wrapper); + + GroupPointDetailFormDTO groupPointDetailFormDTO = new GroupPointDetailFormDTO(); + groupPointDetailFormDTO.setGroupId(formDTO.getGroupId()); + groupPointDetailFormDTO.setPoint(null == entity?NumConstant.ZERO:entity.getTotalPoint()); + Result result = resiGroupOpenFeignClient.groupPointDetail(groupPointDetailFormDTO); + if (!result.success() || null == result.getData()) { + throw new RenException(result.getCode(), result.getMsg()); + } + GroupPointDetailResultDTO detail = result.getData(); Integer increase = userPointActionLogService.getIncrease("group", formDTO.getGroupId()); detail.setIncrease(increase.toString()); if (null == entity) { @@ -215,4 +221,22 @@ public class BizPointTotalDetailServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(BizPointTotalDetailEntity :: getBizType, "group") + .eq(BizPointTotalDetailEntity ::getObjectId, formDTO.getGroupId()) + .eq(BizPointTotalDetailEntity ::getDelFlag, NumConstant.ZERO_STR); + BizPointTotalDetailEntity entity = baseDao.selectOne(wrapper); + return ConvertUtils.sourceToTarget(entity, BizPointTotalDetailDTO.class); + } + } \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointRuleServiceImpl.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointRuleServiceImpl.java index 2e31394868..de0f13ac4d 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointRuleServiceImpl.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointRuleServiceImpl.java @@ -16,7 +16,6 @@ */ package com.epmet.service.impl; - import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.epmet.common.enu.PointUnitEnum; @@ -196,14 +195,23 @@ public class PointRuleServiceImpl extends BaseServiceImpl> customerListResult = operCrmOpenFeignClient.getAllCustomerList(); - log.info("initPointRule operCrmOpenFeignClient.getAllCustomerList result:{}",JSON.toJSONString(customerListResult)); - if (!customerListResult.success() || CollectionUtils.isEmpty(customerListResult.getData())) { - throw new RenException("获取所有客户列表失败"); + List customerDTOList = null; + if (StringUtils.isBlank(customerId)){ + Result> customerListResult = operCrmOpenFeignClient.getAllCustomerList(); + log.info("initPointRule operCrmOpenFeignClient.getAllCustomerList result:{}",JSON.toJSONString(customerListResult)); + if (!customerListResult.success() || CollectionUtils.isEmpty(customerListResult.getData())) { + throw new RenException("获取所有客户列表失败"); + } + customerDTOList = customerListResult.getData(); + }else{ + customerDTOList = new ArrayList<>(); + CustomerDTO customerDTO = new CustomerDTO(); + customerDTO.setId(customerId); + customerDTOList.add(customerDTO); } - List customerDTOList = customerListResult.getData(); + //获取默认规则列表 List ruleDefaultEntities = pointRuleDefaultDao.selectList(null); if (CollectionUtils.isEmpty(ruleDefaultEntities)) { @@ -221,7 +229,7 @@ public class PointRuleServiceImpl extends BaseServiceImpl> customerRuleMap = customerRule.stream().collect(Collectors.groupingBy(PointRuleEntity :: getCustomerId)); - customerRuleMap.forEach((customerId,ruleList) -> { + customerRuleMap.forEach((cId,ruleList) -> { if(null != ruleList){ List event = new LinkedList<>(defaultEventCodeList); //取差集,event只剩下当前客户没有的积分规则 @@ -234,7 +242,7 @@ public class PointRuleServiceImpl extends BaseServiceImpl registerInfo(@LoginUser TokenDto tokenDTO, @RequestBody RegisterInfoFormDTO formDTO) { + public Result registerInfo( @RequestBody RegisterInfoFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO); return new Result().ok(paCustomerService.registerInfo(formDTO)); } @@ -140,7 +139,7 @@ public class PaCustomerController { /** * 获取小程序基础库版本 * @author zhaoqifeng - * @date 2020/8/5 16:55 + * @date 2020/8/5 16:55 * @param formDTO * @return com.epmet.commons.tools.utils.Result */ diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/CommonArticleListFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/CommonArticleListFormDTO.java index 5602cabf48..e86357966e 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/CommonArticleListFormDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/CommonArticleListFormDTO.java @@ -31,4 +31,13 @@ public class CommonArticleListFormDTO implements Serializable { * */ private Integer num; + /** + * 标签名称(高级配置里的参数) + * */ + private String tagName; + /** + * 排除的标签名称(高级配置里的参数) + * */ + private String excludeTagName; + } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleDao.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleDao.java index 39109fbc0b..b0c4af6252 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleDao.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleDao.java @@ -23,7 +23,6 @@ import com.epmet.dto.result.GovArticleDetailResultDTO; import com.epmet.dto.result.ArticleBannerResultDTO; import com.epmet.dto.result.ArticleDetailResultDTO; import com.epmet.dto.result.ArticleLatestResultDTO; -import com.epmet.dto.result.ArticleWithTagsResultDTO; import com.epmet.entity.ArticleEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -41,107 +40,110 @@ import java.util.Set; public interface ArticleDao extends BaseDao { /** - * 政府端查询文章详情 - * - * @param articleId - * 文章id - */ + * 政府端查询文章详情 + * + * @param articleId 文章id + */ GovArticleDetailResultDTO queryGovArticleDetail(String articleId); /** - * 政府端查询文章详情-内容 - * - * @param articleId - * 文章id - */ + * 政府端查询文章详情-内容 + * + * @param articleId 文章id + */ List queryGovArticleContent(String articleId); /** - * @Description - * @param formDto - * @author zxc - */ + * @param formDto + * @Description + * @author zxc + */ Integer checkPublishArticle(ResiTagListFormDTO formDto); /** * 已发布列表---组织工作人员 - * @author zhaoqifeng - * @date 2020/6/2 16:59 + * * @param customerId * @param tagIdList * @return java.util.List + * @author zhaoqifeng + * @date 2020/6/2 16:59 */ @DataFilter(tableAliases = "a", gridIdsArgName = "gridList") List selectArticleListForAgency(@Param("customerId") String customerId, @Param("tagIdList") List tagIdList, Set gridList); /** * 已发布列表---网格工作人员 - * @author zhaoqifeng - * @date 2020/6/5 16:35 + * * @param customerId * @param tagIdList * @param gridList * @return java.util.List + * @author zhaoqifeng + * @date 2020/6/5 16:35 */ List selectArticleListForGrid(@Param("customerId") String customerId, @Param("tagIdList") List tagIdList, - @Param("gridList")Set gridList); + @Param("gridList") Set gridList); /** * 已下线文章列表 - * @author zhaoqifeng - * @date 2020/6/3 15:16 + * * @param gridList * @return java.util.List + * @author zhaoqifeng + * @date 2020/6/3 15:16 */ @DataFilter(tableAliases = "a", gridIdsArgName = "gridList") List selectOfflineList(Set gridList); /** - * @Description 根据网格Id查找置顶文章的相关信息列表 用处:居民端首页轮播 - * @param gridId - * @param num - * @return List - * @author wangc - * @date 2020.06.02 16:04 - **/ - List selectTopArticleMsg (@Param("gridId")String gridId,@Param("num")Integer num); + * @param gridId + * @param num + * @return List + * @Description 根据网格Id查找置顶文章的相关信息列表 用处:居民端首页轮播 + * @author wangc + * @date 2020.06.02 16:04 + **/ + List selectTopArticleMsg(@Param("gridId") String gridId, @Param("num") Integer num); /** - * @Description 根据网格Id查找最新文章的相关信息列表 用处:居民端最新文章列表 - * @param gridId - * @param num - * @return List - * @author wangc - * @date 2020.06.02 16:04 - **/ - List selectLatestArticleMsg(@Param("gridId")String gridId,@Param("num")Integer num); + * @param gridId + * @param tagName + * @param excludeTagName + * @param num + * @return List + * @Description 根据网格Id查找最新文章的相关信息列表 用处:居民端最新文章列表 + * @author wangc + * @date 2020.06.02 16:04 + **/ + List selectLatestArticleMsg(@Param("gridId") String gridId, @Param("tagName") String tagName, @Param("excludeTagName") String excludeTagName, @Param("num") Integer num); /** - * @Description 根据网格Id和标签列表查找文章的相关信息列表 用处:居民端党建声音列表 - * @param gridId - * @param tagIdList - * @return List - * @author wangc - * @date 2020.06.03 14:19 - **/ - List selectArticleList(@Param("gridId") String gridId, @Param("tagIdList")List tagIdList); + * @param gridId + * @param tagIdList + * @return List + * @Description 根据网格Id和标签列表查找文章的相关信息列表 用处:居民端党建声音列表 + * @author wangc + * @date 2020.06.03 14:19 + **/ + List selectArticleList(@Param("gridId") String gridId, @Param("tagIdList") List tagIdList); /** - * @Description 根绝文章Id查询出文章的内容、封面等相关信息,如果居民端传入的网格Id不在该文章的发布范围内,则返回NULL - * @param gridId - * @param articleId - * @return ArticleDetailResultDTO - * @author wangc - * @date 2020.06.03 18:28 - **/ - ArticleDetailResultDTO selectArticleDetail(@Param("gridId")String gridId,@Param("articleId")String articleId); + * @param gridId + * @param articleId + * @return ArticleDetailResultDTO + * @Description 根绝文章Id查询出文章的内容、封面等相关信息,如果居民端传入的网格Id不在该文章的发布范围内,则返回NULL + * @author wangc + * @date 2020.06.03 18:28 + **/ + ArticleDetailResultDTO selectArticleDetail(@Param("gridId") String gridId, @Param("articleId") String articleId); /** - * @Description 根据draftId获取文章id - * @param draftId - * @author zxc - */ - String getArticleIdByDraftId(@Param("draftId")String draftId); -} \ No newline at end of file + * @param draftId + * @Description 根据draftId获取文章id + * @author zxc + */ + String getArticleIdByDraftId(@Param("draftId") String draftId); +} diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java index d00baf70d3..d7786573ff 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java @@ -688,7 +688,7 @@ public class ArticleServiceImpl extends BaseServiceImpl getLatestArticleList(CommonArticleListFormDTO commonArticleListFormDTO) { - return baseDao.selectLatestArticleMsg(commonArticleListFormDTO.getGridId(), + return baseDao.selectLatestArticleMsg(commonArticleListFormDTO.getGridId(),commonArticleListFormDTO.getTagName(),commonArticleListFormDTO.getExcludeTagName(), null == commonArticleListFormDTO.getNum() || commonArticleListFormDTO.getNum() <= NumConstant.ZERO ? NumConstant.FIVE : commonArticleListFormDTO.getNum()); } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/logback-spring.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/logback-spring.xml index da83651e0c..a2d26ca0d7 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/logback-spring.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/logback-spring.xml @@ -139,7 +139,7 @@ - + diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml index 924f52a59f..b781bbd889 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml @@ -193,9 +193,11 @@ art.TITLE AS articleTitle , IFNULL(artcover.IMG_URL,'') AS articleCoverImg, art.PUBLISHER_NAME AS publishName, - art.PUBLISH_DATE AS publishDate + art.PUBLISH_DATE AS publishDate, + group_concat(tag.TAG_NAME) tags #条件筛选用 FROM ARTICLE art + LEFT JOIN article_tags tag ON tag.ARTICLE_ID = art.ID AND tag.DEL_FLAG = '0' LEFT JOIN ( SELECT @@ -223,6 +225,14 @@ AND art.STATUS_FLAG = 'published' + GROUP BY art.ID + HAVING 1 = 1 + + AND FIND_IN_SET(#{tagName},tags) + + + AND !FIND_IN_SET(#{excludeTagName},tags) + ORDER BY art.PUBLISH_DATE DESC , art.CREATED_TIME DESC LIMIT #{num} diff --git a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java index 3abde74e8f..f66c547f6c 100644 --- a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java +++ b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java @@ -569,7 +569,7 @@ public class CustomerServiceImpl extends BaseServiceImpl resultPoint = epmetPointOpenFeignClient.initPointRule(); + Result resultPoint = epmetPointOpenFeignClient.initPointRule(formDTO.getCustomerId()); if (!resultPoint.success()) { throw new RenException(resultPoint.getCode(), resultPoint.getInternalMsg()); } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupPointDetailFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupPointDetailFormDTO.java new file mode 100644 index 0000000000..31a012c22f --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupPointDetailFormDTO.java @@ -0,0 +1,19 @@ +package com.epmet.resi.group.dto.group.form; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/6/24 10:50 + */ +@Data +public class GroupPointDetailFormDTO implements Serializable { + private static final long serialVersionUID = 2668579587643641113L; + private String groupId; + private Integer point; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java index e0828ce468..3401323760 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java @@ -246,11 +246,11 @@ public interface ResiGroupOpenFeignClient { * 小组积分详情 * @author zhaoqifeng * @date 2021/4/21 16:30 - * @param groupId + * @param formDTO * @return com.epmet.commons.tools.utils.Result */ - @PostMapping("resi/group/group/groupPointDetail/{groupId}") - Result groupPointDetail(@PathVariable String groupId); + @PostMapping("resi/group/group/groupPointDetail") + Result groupPointDetail(@RequestBody GroupPointDetailFormDTO formDTO); /** * @Description 查询话题的创建者 diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java index f4f4db750f..a5e3eb06fe 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java @@ -14,6 +14,7 @@ import com.epmet.resi.group.dto.topic.result.TopicInfoResultDTO; import com.epmet.resi.group.feign.ResiGroupOpenFeignClient; import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO; import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.RequestBody; import java.util.HashMap; import java.util.List; @@ -190,14 +191,14 @@ public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClien /** * 小组积分详情 * - * @param groupId + * @param formDTO * @return com.epmet.commons.tools.utils.Result * @author zhaoqifeng * @date 2021/4/21 16:30 */ @Override - public Result groupPointDetail(String groupId) { - return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "groupPointDetail", groupId); + public Result groupPointDetail(GroupPointDetailFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "groupPointDetail", formDTO); } @Override diff --git a/epmet-module/resi-group/resi-group-server/pom.xml b/epmet-module/resi-group/resi-group-server/pom.xml index 018f200219..856b79afc0 100644 --- a/epmet-module/resi-group/resi-group-server/pom.xml +++ b/epmet-module/resi-group/resi-group-server/pom.xml @@ -124,6 +124,12 @@ 2.0.0 compile + + com.epmet + epmet-point-client + 2.0.0 + compile + diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java index 0cbfbe2e52..e3d5565f29 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java @@ -558,12 +558,12 @@ public class ResiGroupController { * 小组积分详情 * @author zhaoqifeng * @date 2021/4/21 16:22 - * @param groupId + * @param formDTO * @return com.epmet.commons.tools.utils.Result */ - @PostMapping("groupPointDetail/{groupId}") - public Result groupPointDetail(@PathVariable String groupId) { - return new Result().ok(resiGroupService.groupPointDetail(groupId)); + @PostMapping("groupPointDetail") + public Result groupPointDetail(@RequestBody GroupPointDetailFormDTO formDTO) { + return new Result().ok(resiGroupService.groupPointDetail(formDTO)); } /** diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/redis/ResiGroupRedis.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/redis/ResiGroupRedis.java index 9d52a420b1..5cb1b48027 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/redis/ResiGroupRedis.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/redis/ResiGroupRedis.java @@ -19,15 +19,20 @@ package com.epmet.modules.group.redis; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.BizPointTotalDetailDTO; +import com.epmet.dto.form.GroupPointFormDTO; import com.epmet.dto.result.UserBaseInfoResultDTO; +import com.epmet.feign.EpmetPointOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.modules.constant.ResiGroupRedisKeys; import com.epmet.modules.group.service.ResiGroupService; import com.epmet.modules.group.service.ResiGroupStatisticalService; +import com.epmet.modules.support.GroupLevelUtils; import com.epmet.modules.utils.ModuleConstant; import com.epmet.resi.group.constant.TopicConstant; import com.epmet.resi.group.dto.group.ResiGroupDTO; @@ -64,6 +69,8 @@ public class ResiGroupRedis { @Autowired private EpmetUserOpenFeignClient epmetUserOpenFeignClient; + @Autowired + private EpmetPointOpenFeignClient epmetPointOpenFeignClient; public void delete(Object[] ids) { @@ -92,16 +99,37 @@ public class ResiGroupRedis { public ResiGroupInfoRedisDTO get(String groupId){ if(StringUtils.isNotBlank(groupId)){ + GroupPointFormDTO groupPointFormDTO = new GroupPointFormDTO(); + groupPointFormDTO.setGroupId(groupId); + Result bizPointTotalDetailResult = epmetPointOpenFeignClient.getGroupPoint(groupPointFormDTO); + if (!bizPointTotalDetailResult.success()) { + throw new RenException(bizPointTotalDetailResult.getCode(), bizPointTotalDetailResult.getMsg()); + } + Integer level = 1; + if (null != bizPointTotalDetailResult.getData()) { + level = GroupLevelUtils.getLevel(bizPointTotalDetailResult.getData().getTotalPoint()); + if (null == level) { + level = 1; + } + } + ResiGroupDTO groupMySql = groupService.get(groupId); + + if (!level.equals(groupMySql.getLevel())) { + ResiGroupDTO dto = new ResiGroupDTO(); + dto.setId(groupMySql.getId()); + dto.setLevel(level); + groupService.update(dto); + } + ResiGroupInfoRedisDTO groupCache = (ResiGroupInfoRedisDTO) redisUtils.get(ResiGroupRedisKeys.getResiGroupInfoKey(groupId)); if(null == groupCache || StringUtils.isBlank(groupCache.getGroupId()) || null == groupCache.getGroupStatisticalInfo()){ //如果缓存中没有该组信息,从数据库中查询并放入缓存 - ResiGroupDTO groupMySql = groupService.get(groupId); - if(null != groupMySql && StringUtils.isNotBlank(groupMySql.getId())){ + if(StringUtils.isNotBlank(groupMySql.getId())){ ResiGroupInfoRedisDTO groupRedis = ConvertUtils.sourceToTarget(groupMySql,ResiGroupInfoRedisDTO.class); groupRedis.setGroupId(groupMySql.getId()); groupRedis.setGroupState(groupMySql.getState()); - groupRedis.setLevel("LV" + groupMySql.getLevel()); + groupRedis.setLevel("LV" + level); Map param = new HashMap<>(); param.put(TopicConstant.RESI_GROUP_ID,groupId); param.put(FieldConstant.DEL_FLAG, NumConstant.ZERO_STR); @@ -127,6 +155,9 @@ public class ResiGroupRedis { //返回数据 return groupRedis; } + } else { + groupCache.setLevel("LV" + level); + set(groupCache); } return groupCache; } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java index d5ae200dd7..d42a0d25e9 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java @@ -404,10 +404,10 @@ public interface ResiGroupService extends BaseService { * 小组积分详情 * @author zhaoqifeng * @date 2021/4/21 16:22 - * @param groupId + * @param formDTO * @return com.epmet.resi.group.dto.group.result.GroupPointDetailResultDTO */ - GroupPointDetailResultDTO groupPointDetail(String groupId); + GroupPointDetailResultDTO groupPointDetail(GroupPointDetailFormDTO formDTO); /** * 小组近段时间实现的成就列表 diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java index 5616ddb4b3..2ff53e4651 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java @@ -1318,20 +1318,30 @@ public class ResiGroupServiceImpl extends BaseServiceImpl