Browse Source

Merge remote-tracking branch 'origin/dev_voice' into dev_voice

# Conflicts:
#	epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java
#	epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java
#	epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java
master
sunyuchao 5 years ago
parent
commit
bece7ca2cb
  1. 4
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java
  2. 21
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/CommonGovAccessFeignClient.java
  3. 16
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/fallback/CommonGovAccessFeignClientFallback.java
  4. 26
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java
  5. 2
      epmet-gateway/deploy/docker-compose-dev.yml
  6. 2
      epmet-gateway/pom.xml
  7. 30
      epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java
  8. 29
      epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/LoginUserDetailsResultDTO.java
  9. 43
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/controller/AccessController.java
  10. 5
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/AccessService.java
  11. 11
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessServiceImpl.java
  12. 32
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/feign/GovVoiceFeignClient.java
  13. 23
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/feign/fallback/GovVoiceFeignClientFallBack.java
  14. 25
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ArticleOperationFormDTO.java
  15. 23
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/CorrelationTagListFormDto.java
  16. 25
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DeleteDraftFormDTO.java
  17. 24
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/GovArticleDetailFormDTO.java
  18. 36
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ResiTagListFormDto.java
  19. 19
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/ArticleOperationResultDTO.java
  20. 27
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/CorrelationTagListResultDto.java
  21. 25
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GovArticleContentDTO.java
  22. 69
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GovArticleDetailResultDTO.java
  23. 27
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/TagInfoResultDto.java
  24. 10
      epmet-module/gov-voice/gov-voice-server/pom.xml
  25. 16
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/DraftConstant.java
  26. 23
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/TagConstant.java
  27. 40
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java
  28. 17
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/DraftController.java
  29. 51
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/TagController.java
  30. 45
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleDao.java
  31. 9
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleOperateRecordDao.java
  32. 123
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/redis/TagRedis.java
  33. 11
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleOperateRecordService.java
  34. 13
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java
  35. 10
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/DraftService.java
  36. 37
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/TagService.java
  37. 13
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleOperateRecordServiceImpl.java
  38. 41
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java
  39. 19
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/DraftServiceImpl.java
  40. 67
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/TagServiceImpl.java
  41. 43
      epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml
  42. 15
      epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleOperateRecordDao.xml
  43. 35
      epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/form/ResiTagListFormDto.java
  44. 5
      epmet-module/resi-voice/resi-voice-server/pom.xml
  45. 27
      epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/controller/ArticleController.java
  46. 21
      epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/service/ArticleService.java
  47. 34
      epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java
  48. 10
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/LoginUserDetailsFormDTO.java
  49. 16
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/TagCustomerFormDTO.java
  50. 20
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/TagCustomerResultDTO.java
  51. 29
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserFeignClient.java
  52. 23
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallBack.java
  53. 2
      epmet-user/epmet-user-server/deploy/docker-compose-dev.yml
  54. 2
      epmet-user/epmet-user-server/pom.xml
  55. 13
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserController.java
  56. 11
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserService.java
  57. 8
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java

4
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java

@ -104,8 +104,8 @@ public enum RequirePermissionEnum {
WORK_PARTY_VOICE_OFFLINE_LIST("work_party_voice_offline_list", "党建声音:已下线列表", "已下线文章列表"), WORK_PARTY_VOICE_OFFLINE_LIST("work_party_voice_offline_list", "党建声音:已下线列表", "已下线文章列表"),
WORK_PARTY_VOICE_PUBLISH("work_party_voice_publish", "党建声音:创建文章", ""), WORK_PARTY_VOICE_PUBLISH("work_party_voice_publish", "党建声音:创建文章", ""),
WORK_PARTY_VOICE_EDIT("work_party_voice_edit", "党建声音:重新编辑", ""), WORK_PARTY_VOICE_EDIT("work_party_voice_edit", "党建声音:重新编辑", ""),
WORK_PARTY_VOICE_OFFLINE("work_party_voice_offline", "党建声音:下线文章", ""); WORK_PARTY_VOICE_OFFLINE("work_party_voice_offline", "党建声音:下线文章", ""),
WORK_PARTY_VOICE_OPERATION_LIST("work_party_voice_operation_list","党建声音:查看文章操作记录","");
private String key; private String key;

21
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/CommonGovAccessFeignClient.java

@ -2,40 +2,21 @@ package com.epmet.commons.tools.feign;
import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.dto.form.HasSpecifiedPermissionFormDTO; import com.epmet.commons.tools.dto.form.HasSpecifiedPermissionFormDTO;
import com.epmet.commons.tools.dto.form.LoginUserInfoFormDTO;
import com.epmet.commons.tools.dto.form.LoginUserInfoResultDTO;
import com.epmet.commons.tools.dto.form.RoleOpeScopeResultDTO;
import com.epmet.commons.tools.feign.fallback.CommonGovAccessFeignClientFallback; import com.epmet.commons.tools.feign.fallback.CommonGovAccessFeignClientFallback;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/** /**
* @Description * @Description
* @Author sun * @Author sun
*/ */
//, url = "localhost:8099" //@FeignClient(name = ServiceConstant.GOV_ACCESS_SERVER, fallback = CommonGovAccessFeignClientFallback.class, url = "localhost:8099")
@FeignClient(name = ServiceConstant.GOV_ACCESS_SERVER, fallback = CommonGovAccessFeignClientFallback.class) @FeignClient(name = ServiceConstant.GOV_ACCESS_SERVER, fallback = CommonGovAccessFeignClientFallback.class)
public interface CommonGovAccessFeignClient { public interface CommonGovAccessFeignClient {
/**
* 查询登陆用户信息
* @return
*/
@PostMapping("/gov/access/access/loginuserinfo")
Result<LoginUserInfoResultDTO> getLoginUserInfo(@RequestBody LoginUserInfoFormDTO dto);
/**
* 查询角色所有operation及其范围(缓存)
* @return
*/
@PostMapping("/gov/access/access/roleallopesandscopes/{roleId}")
Result<List<RoleOpeScopeResultDTO>> listRoleAllOperationScopesByRoleId(@PathVariable("roleId") String roleId);
/** /**
* 用户是否具有指定权限 * 用户是否具有指定权限
* @param form * @param form

16
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/fallback/CommonGovAccessFeignClientFallback.java

@ -2,16 +2,10 @@ package com.epmet.commons.tools.feign.fallback;
import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.dto.form.HasSpecifiedPermissionFormDTO; import com.epmet.commons.tools.dto.form.HasSpecifiedPermissionFormDTO;
import com.epmet.commons.tools.dto.form.LoginUserInfoFormDTO;
import com.epmet.commons.tools.dto.form.LoginUserInfoResultDTO;
import com.epmet.commons.tools.dto.form.RoleOpeScopeResultDTO;
import com.epmet.commons.tools.feign.CommonGovAccessFeignClient; import com.epmet.commons.tools.feign.CommonGovAccessFeignClient;
import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
/** /**
* 调用政府端权限 * 调用政府端权限
@ -22,16 +16,6 @@ import java.util.List;
@Component @Component
public class CommonGovAccessFeignClientFallback implements CommonGovAccessFeignClient { public class CommonGovAccessFeignClientFallback implements CommonGovAccessFeignClient {
@Override
public Result<LoginUserInfoResultDTO> getLoginUserInfo(LoginUserInfoFormDTO dto) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ACCESS_SERVER, "getLoginUserInfo", dto);
}
@Override
public Result<List<RoleOpeScopeResultDTO>> listRoleAllOperationScopesByRoleId(@PathVariable("roleId") String roleId){
return ModuleUtils.feignConError(ServiceConstant.GOV_ACCESS_SERVER, "listRoleAllOperationScopesByRoleId", roleId);
}
@Override @Override
public Result<Boolean> hasSpecifiedPermission(HasSpecifiedPermissionFormDTO form) { public Result<Boolean> hasSpecifiedPermission(HasSpecifiedPermissionFormDTO form) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ACCESS_SERVER, "hasSpecifiedPermission", form); return ModuleUtils.feignConError(ServiceConstant.GOV_ACCESS_SERVER, "hasSpecifiedPermission", form);

26
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java

@ -9,6 +9,7 @@
package com.epmet.commons.tools.redis; package com.epmet.commons.tools.redis;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.HashOperations;
@ -262,4 +263,29 @@ public class RedisUtils {
return hGetAll(key); return hGetAll(key);
} }
/**
* @Description 获取集合的元素, 从大到小排序
* @param key
* @param start
* @param end
* @author zxc
*/
public Set<Object> zRevRange(String key, long start, long end) {
return redisTemplate.opsForZSet().reverseRange(key, start, end);
}
/**
* @Description 获取key集合与多个集合的并集
* @param key
* @param otherKeys
* @author zxc
*/
public Set<Object> sUnion(String key, Collection<String> otherKeys) {
return redisTemplate.opsForSet().union(key, otherKeys);
}
public Set<Object> sMembers(String key){
return redisTemplate.opsForSet().members(key);
}
} }

2
epmet-gateway/deploy/docker-compose-dev.yml

@ -2,7 +2,7 @@ version: "3.7"
services: services:
epmet-gateway-server: epmet-gateway-server:
container_name: epmet-gateway-server-dev container_name: epmet-gateway-server-dev
image: 192.168.1.130:10080/epmet-cloud-dev/epmet-gateway:0.3.15 image: 192.168.1.130:10080/epmet-cloud-dev/epmet-gateway:0.3.16
ports: ports:
- "8080:8080" - "8080:8080"
network_mode: host # 使用现有网络 network_mode: host # 使用现有网络

2
epmet-gateway/pom.xml

@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<version>0.3.15</version> <version>0.3.16</version>
<parent> <parent>
<groupId>com.epmet</groupId> <groupId>com.epmet</groupId>
<artifactId>epmet-cloud</artifactId> <artifactId>epmet-cloud</artifactId>

30
epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java

@ -76,29 +76,39 @@ public class CpAuthGatewayFilterFactory extends AbstractGatewayFilterFactory<CpA
String customerId = ""; String customerId = "";
//需要认证 if (baseTokenDto != null) {
if (needAuth(requestUri)) {
if (StringUtils.isBlank(token)) {
return response(exchange,new Result<>().error(EpmetErrorCode.ERR10005.getCode(),EpmetErrorCode.ERR10005.getMsg()));
}
// 校验token
try {
if (AppClientConstant.APP_RESI.equals(baseTokenDto.getApp())) { if (AppClientConstant.APP_RESI.equals(baseTokenDto.getApp())) {
// 居民端 // 居民端
TokenDto resiTokenDto = getLoginUserInfoByToken(token, jwtTokenUtils, cpUserDetailRedis, TokenDto.class); TokenDto resiTokenDto = getLoginUserInfoByToken(token, jwtTokenUtils, cpUserDetailRedis, TokenDto.class);
validateTokenDto(resiTokenDto, token); if (resiTokenDto != null) {
customerId = resiTokenDto.getCustomerId(); customerId = resiTokenDto.getCustomerId();
baseTokenDto = resiTokenDto;
}
} else if (AppClientConstant.APP_GOV.equals(baseTokenDto.getApp())) { } else if (AppClientConstant.APP_GOV.equals(baseTokenDto.getApp())) {
// 政府端 // 政府端
GovTokenDto govTokenDto = getLoginUserInfoByToken(token, jwtTokenUtils, cpUserDetailRedis, GovTokenDto.class); GovTokenDto govTokenDto = getLoginUserInfoByToken(token, jwtTokenUtils, cpUserDetailRedis, GovTokenDto.class);
validateTokenDto(govTokenDto, token); if (govTokenDto != null) {
customerId = govTokenDto.getCustomerId(); customerId = govTokenDto.getCustomerId();
baseTokenDto = govTokenDto;
}
} else if(AppClientConstant.APP_OPER.equals(baseTokenDto.getApp())){ } else if(AppClientConstant.APP_OPER.equals(baseTokenDto.getApp())){
//运营端 //运营端
TokenDto resiTokenDto = getLoginUserInfoByToken(token, jwtTokenUtils, cpUserDetailRedis, TokenDto.class); TokenDto resiTokenDto = getLoginUserInfoByToken(token, jwtTokenUtils, cpUserDetailRedis, TokenDto.class);
validateTokenDto(resiTokenDto, token); if (resiTokenDto != null) {
customerId = resiTokenDto.getCustomerId(); customerId = resiTokenDto.getCustomerId();
baseTokenDto = resiTokenDto;
} }
}
}
//需要认证
if (needAuth(requestUri)) {
if (StringUtils.isBlank(token)) {
return response(exchange,new Result<>().error(EpmetErrorCode.ERR10005.getCode(),EpmetErrorCode.ERR10005.getMsg()));
}
// 校验token
try {
validateTokenDto(baseTokenDto, token);
} catch (RenException e) { } catch (RenException e) {
return response(exchange,new Result<>().error(e.getCode(),e.getMsg())); return response(exchange,new Result<>().error(e.getCode(),e.getMsg()));
} }

29
epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/LoginUserInfoResultDTO.java → epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/LoginUserDetailsResultDTO.java

@ -5,17 +5,22 @@ import lombok.Data;
import java.util.Set; import java.util.Set;
@Data @Data
public class LoginUserInfoResultDTO { public class LoginUserDetailsResultDTO {
/** /**
* 用户ID * 政府端:gov居民端:resi运营端:oper
*/ */
private String userId; private String app;
/**
* PC端:web微信小程序:wxmp
*/
private String client;
/** /**
* 权限列表 * 用户ID
*/ */
private Set<String> permissions; private String userId;
/** /**
* 角色列表 * 角色列表
@ -28,18 +33,24 @@ public class LoginUserInfoResultDTO {
private Set<String> deptIdList; private Set<String> deptIdList;
/** /**
* 组织ID * 当前登录的组织id(顶级)
*/ */
private String orgIdPath; private String agencyId;
/** /**
* 网格ID * 组织ID
*/ */
private String gridId; private String orgIdPath;
/** /**
* 网格ID列表 * 网格ID列表
*/ */
private Set<String> gridIdList; private Set<String> gridIdList;
/**
* 当前工作人员进入的客户id
*/
private String customerId;
} }

43
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/controller/AccessController.java

@ -1,16 +1,13 @@
package com.epmet.controller; package com.epmet.controller;
import com.epmet.commons.tools.security.dto.GovTokenDto;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.LoginUserInfoResultDTO;
import com.epmet.dto.result.RoleOpeScopeResultDTO; import com.epmet.dto.result.RoleOpeScopeResultDTO;
import com.epmet.service.AccessService; import com.epmet.service.AccessService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -46,26 +43,26 @@ public class AccessController {
return new Result(); return new Result();
} }
/** ///**
* 从缓存中查询用户信息(DataFilterAspect中用到) // * 从缓存中查询用户信息(DataFilterAspect中用到)
* @return // * @return
*/ // */
@PostMapping("loginuserinfo") //@PostMapping("loginuserinfo")
public Result<LoginUserInfoResultDTO> getLoginUserInfo(@RequestBody StaffPermCacheFormDTO dto) { //public Result<LoginUserInfoResultDTO> getLoginUserInfo(@RequestBody StaffPermCacheFormDTO dto) {
ValidatorUtils.validateEntity(dto, StaffPermCacheFormDTO.GetStaffCurrPermissions.class); // ValidatorUtils.validateEntity(dto, StaffPermCacheFormDTO.GetStaffCurrPermissions.class);
GovTokenDto govTokenDto = accessService.getUserDetails(dto.getApp(), dto.getClient(), dto.getStaffId()); // GovTokenDto govTokenDto = accessService.getUserDetails(dto.getApp(), dto.getClient(), dto.getStaffId());
LoginUserInfoResultDTO resultDTO = null; // LoginUserInfoResultDTO resultDTO = null;
if (govTokenDto != null) { // if (govTokenDto != null) {
resultDTO = new LoginUserInfoResultDTO(); // resultDTO = new LoginUserInfoResultDTO();
resultDTO.setRoleIdList(govTokenDto.getRoleIdList()); // resultDTO.setRoleIdList(govTokenDto.getRoleIdList());
//resultDTO.setGridId(govTokenDto.getGridId()); // //resultDTO.setGridId(govTokenDto.getGridId());
resultDTO.setOrgIdPath(govTokenDto.getOrgIdPath()); // resultDTO.setOrgIdPath(govTokenDto.getOrgIdPath());
resultDTO.setGridIdList(govTokenDto.getGridIdList()); // resultDTO.setGridIdList(govTokenDto.getGridIdList());
resultDTO.setDeptIdList(govTokenDto.getDeptIdList()); // resultDTO.setDeptIdList(govTokenDto.getDeptIdList());
resultDTO.setUserId(govTokenDto.getUserId()); // resultDTO.setUserId(govTokenDto.getUserId());
} // }
return new Result<LoginUserInfoResultDTO>().ok(resultDTO); // return new Result<LoginUserInfoResultDTO>().ok(resultDTO);
} //}
/** /**
* 查询角色的操作key对应操作范围列表(缓存) * 查询角色的操作key对应操作范围列表(缓存)

5
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/AccessService.java

@ -2,6 +2,7 @@ package com.epmet.service;
import com.epmet.commons.tools.security.dto.GovTokenDto; import com.epmet.commons.tools.security.dto.GovTokenDto;
import com.epmet.dto.form.GetSQLFilterFormDTO; import com.epmet.dto.form.GetSQLFilterFormDTO;
import com.epmet.dto.result.LoginUserDetailsResultDTO;
import com.epmet.dto.result.RoleOpeScopeResultDTO; import com.epmet.dto.result.RoleOpeScopeResultDTO;
import java.util.List; import java.util.List;
@ -17,10 +18,10 @@ public interface AccessService {
void updatePermissionCache(String staffId, String app, String client, Set<String> permissions, Set<String> roleIdList, String orgIdPath, String gridId); void updatePermissionCache(String staffId, String app, String client, Set<String> permissions, Set<String> roleIdList, String orgIdPath, String gridId);
/** /**
* 查询用户当前权限列表 * 查询登陆用户登陆信息
* @return * @return
*/ */
GovTokenDto getUserDetails(String app, String client, String staffId); LoginUserDetailsResultDTO getLoginUserDetails(String app, String client, String staffId);
/** /**
* 查询角色的操作key对应操作范围列表 * 查询角色的操作key对应操作范围列表

11
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessServiceImpl.java

@ -16,6 +16,7 @@ import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.GovStaffRoleDTO; import com.epmet.dto.GovStaffRoleDTO;
import com.epmet.dto.form.GetSQLFilterFormDTO; import com.epmet.dto.form.GetSQLFilterFormDTO;
import com.epmet.dto.form.StaffRoleFormDTO; import com.epmet.dto.form.StaffRoleFormDTO;
import com.epmet.dto.result.LoginUserDetailsResultDTO;
import com.epmet.dto.result.RoleOpeScopeResultDTO; import com.epmet.dto.result.RoleOpeScopeResultDTO;
import com.epmet.feign.EpmetUserFeignClient; import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.feign.GovOrgFeignClient; import com.epmet.feign.GovOrgFeignClient;
@ -90,8 +91,8 @@ public class AccessServiceImpl implements AccessService {
} }
@Override @Override
public GovTokenDto getUserDetails(String app, String client, String staffId) { public LoginUserDetailsResultDTO getLoginUserDetails(String app, String client, String staffId) {
return cpUserDetailRedis.get(app, client, staffId, GovTokenDto.class); return cpUserDetailRedis.get(app, client, staffId, LoginUserDetailsResultDTO.class);
} }
/** /**
@ -132,7 +133,7 @@ public class AccessServiceImpl implements AccessService {
return true; return true;
} }
GovTokenDto userDetails = getUserDetails(app, client, userId); LoginUserDetailsResultDTO userDetails = getLoginUserDetails(app, client, userId);
if (userDetails == null) { if (userDetails == null) {
return false; return false;
} }
@ -157,7 +158,7 @@ public class AccessServiceImpl implements AccessService {
@Override @Override
public String getSqlFilterSegment(GetSQLFilterFormDTO form) { public String getSqlFilterSegment(GetSQLFilterFormDTO form) {
hasConditions.set(false); hasConditions.set(false);
GovTokenDto userDetails = getUserDetails(form.getApp(), form.getClient(), form.getUserId()); LoginUserDetailsResultDTO userDetails = getLoginUserDetails(form.getApp(), form.getClient(), form.getUserId());
if (userDetails == null) { if (userDetails == null) {
logger.error("查询SQL过滤脚本:没有找到用户的登陆信息:app: {}, client: {}, userId:{}", form.getApp(), form.getClient(), form.getUserId()); logger.error("查询SQL过滤脚本:没有找到用户的登陆信息:app: {}, client: {}, userId:{}", form.getApp(), form.getClient(), form.getUserId());
throw new RenException(EpmetErrorCode.ERR10006.getCode()); throw new RenException(EpmetErrorCode.ERR10006.getCode());
@ -453,7 +454,7 @@ public class AccessServiceImpl implements AccessService {
@Override @Override
public Set<String> listOperationPermissions(String staffId, String currAgencyId) { public Set<String> listOperationPermissions(String staffId, String currAgencyId) {
GovTokenDto userDetails = getUserDetails(loginUserUtil.getLoginUserApp(), loginUserUtil.getLoginUserClient(), loginUserUtil.getLoginUserId()); LoginUserDetailsResultDTO userDetails = getLoginUserDetails(loginUserUtil.getLoginUserApp(), loginUserUtil.getLoginUserClient(), loginUserUtil.getLoginUserId());
if (userDetails == null) { if (userDetails == null) {
throw new RenException(EpmetErrorCode.ERR10006.getCode(), EpmetErrorCode.ERR10006.getMsg()); throw new RenException(EpmetErrorCode.ERR10006.getCode(), EpmetErrorCode.ERR10006.getMsg());
} }

32
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/feign/GovVoiceFeignClient.java

@ -0,0 +1,32 @@
package com.epmet.dto.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.feign.fallback.GovVoiceFeignClientFallBack;
import com.epmet.dto.form.ResiTagListFormDto;
import com.epmet.dto.result.TagInfoResultDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
/**
* @Author zxc
* @CreateTime 2020/6/2 16:05
* , url = "localhost:8105"
*/
//@FeignClient(name = ServiceConstant.GOV_VOICE_SERVER, fallback = GovVoiceFeignClientFallBack.class, url = "localhost:8105")
@FeignClient(name = ServiceConstant.GOV_VOICE_SERVER, fallback = GovVoiceFeignClientFallBack.class)
public interface GovVoiceFeignClient {
/**
* @Description 已发布列表页的标签居民端
* @param formDto
* @author zxc
*/
@PostMapping("/gov/voice/tag/resitaglist")
Result<List<TagInfoResultDto>> resiTagList(@RequestBody ResiTagListFormDto formDto);
}

23
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/feign/fallback/GovVoiceFeignClientFallBack.java

@ -0,0 +1,23 @@
package com.epmet.dto.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.feign.GovVoiceFeignClient;
import com.epmet.dto.form.ResiTagListFormDto;
import com.epmet.dto.result.TagInfoResultDto;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @Author zxc
* @CreateTime 2020/6/2 16:07
*/
@Component
public class GovVoiceFeignClientFallBack implements GovVoiceFeignClient {
@Override
public Result<List<TagInfoResultDto>> resiTagList(ResiTagListFormDto formDto) {
return ModuleUtils.feignConError(ServiceConstant.GOV_VOICE_SERVER, "resiTagList", formDto);
}
}

25
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ArticleOperationFormDTO.java

@ -0,0 +1,25 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 查询文章操作记录
*
* @author yinzuomei@elink-cn.com
* @date 2020/6/2 16:42
*/
@Data
public class ArticleOperationFormDTO implements Serializable {
private static final long serialVersionUID = -6659391832410565077L;
public interface AddUserInternalGroup {}
/**
* 文章id
*/
@NotBlank(message = "文章id不能为空", groups = {ArticleOperationFormDTO.AddUserInternalGroup.class})
private String articleId;
}

23
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/CorrelationTagListFormDto.java

@ -0,0 +1,23 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* @Author zxc
* @CreateTime 2020/6/3 9:39
*/
@Data
public class CorrelationTagListFormDto implements Serializable {
private static final long serialVersionUID = -1588825995685146967L;
/**
* 标签id集合
*/
private List<String> tagIdList;
}

25
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DeleteDraftFormDTO.java

@ -0,0 +1,25 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 政府端工作人员,删除草稿入参DTO
*
* @author yinzuomei@elink-cn.com
* @date 2020/6/2 15:25
*/
@Data
public class DeleteDraftFormDTO implements Serializable {
private static final long serialVersionUID = -2424432724401298206L;
public interface AddUserInternalGroup {}
/**
* 草稿id
*/
@NotBlank(message = "草稿id不能为空", groups = {AddUserInternalGroup.class})
private String draftId;
}

24
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/GovArticleDetailFormDTO.java

@ -0,0 +1,24 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 政府端已发布已下线文章详情 入参DTO
*
* @author yinzuomei@elink-cn.com
* @date 2020/6/2 17:21
*/
@Data
public class GovArticleDetailFormDTO implements Serializable {
private static final long serialVersionUID = 2149876964249893025L;
public interface AddUserInternalGroup {}
/**
* 文章id
*/
@NotBlank(message = "文章id不能为空", groups = {GovArticleDetailFormDTO.AddUserInternalGroup.class})
private String articleId;
}

36
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ResiTagListFormDto.java

@ -0,0 +1,36 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Author zxc
* @CreateTime 2020/6/2 15:50
*/
@Data
public class ResiTagListFormDto implements Serializable {
private static final long serialVersionUID = 4337657473061285656L;
public interface ResiTagListForm{}
public interface ResiTagListFormWeb extends CustomerClientShowGroup{}
/**
* 网格id
*/
@NotBlank(message = "网格id不能为空",groups = {ResiTagListForm.class,ResiTagListFormWeb.class})
private String gridId;
/**
* 用户id
*/
private String customerId;
/**
* 用户id
*/
private String userId;
}

19
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/ArticleOperationResultDTO.java

@ -0,0 +1,19 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* 描述一下
*
* @author yinzuomei@elink-cn.com
* @date 2020/6/2 16:44
*/
@Data
public class ArticleOperationResultDTO implements Serializable {
private static final long serialVersionUID = -436748500797911121L;
private String id;
private String content;
private Long createdTime;
}

27
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/CorrelationTagListResultDto.java

@ -0,0 +1,27 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @CreateTime 2020/6/3 9:41
*/
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class CorrelationTagListResultDto implements Serializable {
private static final long serialVersionUID = 5536953304816455733L;
/**
* 标签id
*/
private String tagId;
/**
* 标签名称
*/
private String tagName;
}

25
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GovArticleContentDTO.java

@ -0,0 +1,25 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* 政府端已发布已下线文章内容详情
*
* @author yinzuomei@elink-cn.com
* @date 2020/6/3 9:39
*/
@Data
public class GovArticleContentDTO implements Serializable {
private static final long serialVersionUID = 1519014754254863006L;
/**
* 内容类型图片img文字text
*/
private String contentType;
/**
* 内容
*/
private String content;
}

69
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GovArticleDetailResultDTO.java

@ -0,0 +1,69 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 政府端已发布已下线文章详情 返参DTO
*
* @author yinzuomei@elink-cn.com
* @date 2020/6/3 9:29
*/
@Data
public class GovArticleDetailResultDTO implements Serializable {
private static final long serialVersionUID = -8328304788721564622L;
/**
* 文章id
*/
private String articleId;
/**
* 标题
*/
private String title;
/**
* 发布单位名称
*/
private String publisherName;
/**
* 发布日期
*/
@JsonFormat(pattern="yyyy-MM-dd")
private Date publishDate;
/**
* 访问量
*/
private Integer visitRecordCount;
/**
* 发布范围字符串
*/
private String publishRangeDesc;
/**
* 标签字符串
*/
private String tags;
/**
* 发布状态 已发布:published已下线offline
*/
private String statusFlag;
/**
* 草稿Id重新编辑时使用
*/
private String draftId;
/**
* 内容列表
*/
private List<GovArticleContentDTO> articleContentList;
}

27
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/TagInfoResultDto.java

@ -0,0 +1,27 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @CreateTime 2020/6/2 9:47
*/
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class TagInfoResultDto implements Serializable {
private static final long serialVersionUID = 4366515668545958124L;
/**
* 标签id
*/
private String tagId;
/**
* 标签名称
*/
private String tagName;
}

10
epmet-module/gov-voice/gov-voice-server/pom.xml

@ -19,6 +19,16 @@
<artifactId>gov-voice-client</artifactId> <artifactId>gov-voice-client</artifactId>
<version>2.0.0</version> <version>2.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-user-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>resi-voice-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency> <dependency>
<groupId>com.epmet</groupId> <groupId>com.epmet</groupId>
<artifactId>epmet-commons-tools</artifactId> <artifactId>epmet-commons-tools</artifactId>

16
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/DraftConstant.java

@ -10,8 +10,24 @@ package com.epmet.constant;
/** /**
* 常量 * 常量
*
* @author sun * @author sun
* @since 1.0.0 * @since 1.0.0
*/ */
public interface DraftConstant { public interface DraftConstant {
// 发布状态
/**
* 未发布unpublish
*/
String UNPUBLISH = "unpublish";
/**
* 已发布:published
*/
String PUBLISHED = "published";
/**
* 审核中auditing
*/
String AUDITING = "auditing";
} }

23
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/TagConstant.java

@ -14,4 +14,27 @@ package com.epmet.constant;
* @since 1.0.0 * @since 1.0.0
*/ */
public interface TagConstant { public interface TagConstant {
/**
* 客户维度政府端 热度标签 key的前缀 zset
*/
String GOV_TAG_KEY = "epmet:customer:articletag:";
/**
* 客户维度政府端 关联标签 key的前缀 set
*/
String GOV_RETAG_KEY = "epmet:customer:article:retag:";
/**
* 网格热度标签 key的前缀 zset
*/
String GRID_TAG_KEY = "epmet:grid:articletag:";
/**
* 冒号
*/
String COLON = ":";
} }

40
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java

@ -18,6 +18,8 @@
package com.epmet.controller; package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.enums.RequirePermissionEnum;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.ExcelUtils;
@ -28,11 +30,16 @@ import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.ArticleDTO; import com.epmet.dto.ArticleDTO;
import com.epmet.dto.form.ArticleOperationFormDTO;
import com.epmet.dto.form.DraftContentFromDTO; import com.epmet.dto.form.DraftContentFromDTO;
import com.epmet.dto.form.GovArticleDetailFormDTO;
import com.epmet.dto.result.ArticleGridResultDTO; import com.epmet.dto.result.ArticleGridResultDTO;
import com.epmet.dto.result.ArticleOperationResultDTO;
import com.epmet.dto.result.GovArticleDetailResultDTO;
import com.epmet.dto.result.LatestListResultDTO; import com.epmet.dto.result.LatestListResultDTO;
import com.epmet.dto.result.PublishAgencyListResultDTO; import com.epmet.dto.result.PublishAgencyListResultDTO;
import com.epmet.excel.ArticleExcel; import com.epmet.excel.ArticleExcel;
import com.epmet.service.ArticleOperateRecordService;
import com.epmet.service.ArticleService; import com.epmet.service.ArticleService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -54,6 +61,8 @@ public class ArticleController {
@Autowired @Autowired
private ArticleService articleService; private ArticleService articleService;
@Autowired
private ArticleOperateRecordService articleOperateRecordService;
@GetMapping("page") @GetMapping("page")
public Result<PageData<ArticleDTO>> page(@RequestParam Map<String, Object> params){ public Result<PageData<ArticleDTO>> page(@RequestParam Map<String, Object> params){
@ -119,6 +128,37 @@ public class ArticleController {
return new Result<String>().ok(draftId); return new Result<String>().ok(draftId);
} }
/**
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.form.ArticleOperationResultDTO>>
* @author yinzuomei@elink-cn.com
* @description 政府端查询文章操作记录
* @date 2020/6/2 16:50
**/
@PostMapping("oprationlist")
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_OPERATION_LIST)
public Result<List<ArticleOperationResultDTO>> operationList(@RequestBody ArticleOperationFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, ArticleOperationFormDTO.AddUserInternalGroup.class);
List<ArticleOperationResultDTO> list =
articleOperateRecordService.listOfArticleOperation(formDTO.getArticleId());
return new Result<List<ArticleOperationResultDTO>>().ok(list);
}
/**
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.GovArticleDetailResultDTO>
* @author yinzuomei@elink-cn.com
* @description 政府端已发布已下线文章详情
* @date 2020/6/3 9:44
**/
@PostMapping("articledetail")
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_DETAIL)
public Result<GovArticleDetailResultDTO> articleDetail(@RequestBody GovArticleDetailFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, GovArticleDetailFormDTO.AddUserInternalGroup.class);
GovArticleDetailResultDTO articleDetail = articleService.queryGovArticleDetail(formDTO.getArticleId());
return new Result<GovArticleDetailResultDTO>().ok(articleDetail);
}
/** /**
* @param tokenDTO * @param tokenDTO
* @return * @return

17
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/DraftController.java

@ -17,6 +17,8 @@
package com.epmet.controller; package com.epmet.controller;
import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.enums.RequirePermissionEnum;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
@ -26,6 +28,7 @@ import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.dto.DraftDTO; import com.epmet.dto.DraftDTO;
import com.epmet.dto.form.DeleteDraftFormDTO;
import com.epmet.excel.DraftExcel; import com.epmet.excel.DraftExcel;
import com.epmet.service.DraftService; import com.epmet.service.DraftService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -91,4 +94,18 @@ public class DraftController {
ExcelUtils.exportExcelToTarget(response, null, list, DraftExcel.class); ExcelUtils.exportExcelToTarget(response, null, list, DraftExcel.class);
} }
/**
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
* @author yinzuomei@elink-cn.com
* @description 政府端工作人员,删除草稿
* @date 2020/6/2 16:00
**/
@PostMapping("deletedraft")
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_DRAFT_DELETE)
public Result deleteDraft(@RequestBody DeleteDraftFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, DeleteDraftFormDTO.AddUserInternalGroup.class);
draftService.deleteDraft(formDTO);
return new Result();
}
} }

51
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/TagController.java

@ -1,9 +1,60 @@
package com.epmet.controller; package com.epmet.controller;
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.form.CorrelationTagListFormDto;
import com.epmet.dto.form.ResiTagListFormDto;
import com.epmet.dto.result.CorrelationTagListResultDto;
import com.epmet.dto.result.TagInfoResultDto;
import com.epmet.service.TagService;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController @RestController
@RequestMapping("tag") @RequestMapping("tag")
public class TagController { public class TagController {
@Autowired
private TagService tagService;
/**
* @Description 已发布列表页的标签政府端
* @param tokenDto
* @author zxc
*/
@PostMapping("taglist")
public Result<List<TagInfoResultDto>> tagList(@LoginUser TokenDto tokenDto){
ValidatorUtils.validateEntity(tokenDto);
return new Result<List<TagInfoResultDto>>().ok(tagService.tagList(tokenDto));
}
/**
* @Description 已发布列表页的标签居民端
* @param formDto
* @author zxc
*/
@PostMapping("resitaglist")
public Result<List<TagInfoResultDto>> resiTagList(@RequestBody ResiTagListFormDto formDto){
ValidatorUtils.validateEntity(formDto, ResiTagListFormDto.ResiTagListForm.class, ResiTagListFormDto.ResiTagListFormWeb.class);
return new Result<List<TagInfoResultDto>>().ok(tagService.resiTagList(formDto));
}
/**
* @Description 已发布列表页-获取关联标签政府端
* @param tokenDto
* @param formDto
* @author zxc
*/
@PostMapping("correlationtaglist")
public Result<List<CorrelationTagListResultDto>> correlationTagList(@LoginUser TokenDto tokenDto, @RequestBody CorrelationTagListFormDto formDto){
return new Result<List<CorrelationTagListResultDto>>().ok(tagService.correlationTagList(tokenDto,formDto));
}
} }

45
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleDao.java

@ -1,26 +1,28 @@
/** /**
* Copyright 2018 人人开源 https://www.renren.io * Copyright 2018 人人开源 https://www.renren.io
* <p> * <p>
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
* it under the terms of the GNU General Public License as published by * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later
* the Free Software Foundation, either version 3 of the License, or * version.
* (at your option) any later version.
* <p> * <p>
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* but WITHOUT ANY WARRANTY; without even the implied warranty of * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p> * <p>
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License along with this program. If not, see
* along with this program. If not, see <http://www.gnu.org/licenses/>. * <http://www.gnu.org/licenses/>.
*/ */
package com.epmet.dao; package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.result.GovArticleContentDTO;
import com.epmet.dto.result.GovArticleDetailResultDTO;
import com.epmet.dto.form.ResiTagListFormDto;
import com.epmet.entity.ArticleEntity; import com.epmet.entity.ArticleEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** /**
* 文章表 * 文章表
* *
@ -30,4 +32,27 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface ArticleDao extends BaseDao<ArticleEntity> { public interface ArticleDao extends BaseDao<ArticleEntity> {
/**
* 政府端查询文章详情
*
* @param articleId
* 文章id
*/
GovArticleDetailResultDTO queryGovArticleDetail(String articleId);
/**
* 政府端查询文章详情-内容
*
* @param articleId
* 文章id
*/
List<GovArticleContentDTO> queryGovArticleContent(String articleId);
/**
* @Description
* @param formDto
* @author zxc
*/
Integer checkPublishArticle(ResiTagListFormDto formDto);
} }

9
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleOperateRecordDao.java

@ -18,9 +18,12 @@
package com.epmet.dao; package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.result.ArticleOperationResultDTO;
import com.epmet.entity.ArticleOperateRecordEntity; import com.epmet.entity.ArticleOperateRecordEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** /**
* 文章操作记录表 * 文章操作记录表
* *
@ -30,4 +33,10 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface ArticleOperateRecordDao extends BaseDao<ArticleOperateRecordEntity> { public interface ArticleOperateRecordDao extends BaseDao<ArticleOperateRecordEntity> {
/**
* 根据文章id查询操作记录
*
* @param articleId
*/
List<ArticleOperationResultDTO> selectListByArticleId(String articleId);
} }

123
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/redis/TagRedis.java

@ -0,0 +1,123 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.redis;
import com.alibaba.druid.sql.visitor.functions.Concat;
import com.epmet.commons.tools.constant.Constant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.constant.TagConstant;
import com.epmet.dto.form.CorrelationTagListFormDto;
import com.epmet.dto.result.CorrelationTagListResultDto;
import com.epmet.dto.result.TagInfoResultDto;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
@Component
public class TagRedis {
@Autowired
private RedisUtils redisUtils;
public void delete(Object[] ids) {
}
public void set(){
}
public List<CorrelationTagListResultDto> get(String customerId, CorrelationTagListFormDto formDto){
List<String> tagIdList = formDto.getTagIdList();
Set<Object> objects ;
Collection<String> keys = new ArrayList<>();
if (tagIdList.size() > 1){
for (int i = NumConstant.ONE; i < tagIdList.size(); i++) {
String tagId = tagIdList.get(i);
tagId = TagConstant.GOV_RETAG_KEY+customerId+TagConstant.COLON+tagId;
keys.add(tagId);
}
String key = TagConstant.GOV_RETAG_KEY+customerId+TagConstant.COLON+tagIdList.get(0);
objects = redisUtils.sUnion(key, keys);
}else {
String key = TagConstant.GOV_RETAG_KEY+customerId+TagConstant.COLON+tagIdList.get(0);
objects = redisUtils.sMembers(key);
}
List<CorrelationTagListResultDto> resultList = new ArrayList<>();
if (objects.size()==NumConstant.ZERO){
return resultList;
}
ObjectMapper objectMapper = new ObjectMapper();
for (Object object : objects) {
CorrelationTagListResultDto correlationTag = objectMapper.convertValue(object, CorrelationTagListResultDto.class);
resultList.add(correlationTag);
}
return resultList;
}
/**
* @Description 获取标签政府端按使用次数倒叙
* @param key == customerId
* @author zxc
*/
public List<TagInfoResultDto> zRevRange(String key){
long start = 0;
long end = -1;
String tagKey = TagConstant.GOV_TAG_KEY+key;
Set<Object> objects = redisUtils.zRevRange(tagKey, start, end);
if (objects.size()== NumConstant.ZERO){
return new ArrayList<>();
}
List<TagInfoResultDto> result = new ArrayList<TagInfoResultDto>();
ObjectMapper objectMapper = new ObjectMapper();
for (Object object : objects) {
TagInfoResultDto tagInfoResultDto = objectMapper.convertValue(object, TagInfoResultDto.class);
result.add(tagInfoResultDto);
}
return result;
}
/**
* @Description 获取标签居民端
* @param key == gridId
* @author zxc
*/
public List<TagInfoResultDto> zGridRevRange(String key){
long start = 0;
long end = -1;
String tagKey = TagConstant.GRID_TAG_KEY+key;
Set<Object> objects = redisUtils.zRevRange(tagKey, start, end);
if (objects.size()== NumConstant.ZERO){
return new ArrayList<>();
}
List<TagInfoResultDto> result = new ArrayList<TagInfoResultDto>();
ObjectMapper objectMapper = new ObjectMapper();
for (Object object : objects) {
TagInfoResultDto tagInfoResultDto = objectMapper.convertValue(object, TagInfoResultDto.class);
result.add(tagInfoResultDto);
}
return result;
}
}

11
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleOperateRecordService.java

@ -20,6 +20,7 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.ArticleOperateRecordDTO; import com.epmet.dto.ArticleOperateRecordDTO;
import com.epmet.dto.result.ArticleOperationResultDTO;
import com.epmet.entity.ArticleOperateRecordEntity; import com.epmet.entity.ArticleOperateRecordEntity;
import java.util.List; import java.util.List;
@ -92,4 +93,14 @@ public interface ArticleOperateRecordService extends BaseService<ArticleOperateR
* @date 2020-06-02 * @date 2020-06-02
*/ */
void delete(String[] ids); void delete(String[] ids);
/**
* 查询文章操作记录
*
* @param articleId
* @return com.epmet.dto.form.ArticleOperationResultDTO
* @author yinzuomei@elink-cn.com
* @date 2020-06-02
*/
List<ArticleOperationResultDTO> listOfArticleOperation(String articleId);
} }

13
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java

@ -21,8 +21,9 @@ import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.ArticleDTO; import com.epmet.dto.ArticleDTO;
import com.epmet.dto.result.ArticleGridResultDTO;
import com.epmet.dto.form.DraftContentFromDTO; import com.epmet.dto.form.DraftContentFromDTO;
import com.epmet.dto.result.ArticleGridResultDTO;
import com.epmet.dto.result.GovArticleDetailResultDTO;
import com.epmet.dto.result.PublishAgencyListResultDTO; import com.epmet.dto.result.PublishAgencyListResultDTO;
import com.epmet.entity.ArticleEntity; import com.epmet.entity.ArticleEntity;
@ -114,6 +115,16 @@ public interface ArticleService extends BaseService<ArticleEntity> {
*/ */
String saveOrUpdateContent(TokenDto tokenDto, DraftContentFromDTO fromDTO); String saveOrUpdateContent(TokenDto tokenDto, DraftContentFromDTO fromDTO);
/**
* 政府端已发布已下线文章详情
*
* @param articleId
* @return com.epmet.dto.result.GovArticleDetailResultDTO
* @author yinzuomei@elink-cn.com
* @date 2020-06-03
*/
GovArticleDetailResultDTO queryGovArticleDetail(String articleId);
/** /**
* @param tokenDTO * @param tokenDTO
* @return * @return

10
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/DraftService.java

@ -20,6 +20,7 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.DraftDTO; import com.epmet.dto.DraftDTO;
import com.epmet.dto.form.DeleteDraftFormDTO;
import com.epmet.entity.DraftEntity; import com.epmet.entity.DraftEntity;
import java.util.List; import java.util.List;
@ -92,4 +93,13 @@ public interface DraftService extends BaseService<DraftEntity> {
* @date 2020-06-02 * @date 2020-06-02
*/ */
void delete(String[] ids); void delete(String[] ids);
/**
* @param formDTO
* @return void
* @author yinzuomei@elink-cn.com
* @description 政府端工作人员,删除草稿
* @date 2020/6/2 16:09
**/
void deleteDraft(DeleteDraftFormDTO formDTO);
} }

37
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/TagService.java

@ -0,0 +1,37 @@
package com.epmet.service;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.form.CorrelationTagListFormDto;
import com.epmet.dto.form.ResiTagListFormDto;
import com.epmet.dto.result.CorrelationTagListResultDto;
import com.epmet.dto.result.TagInfoResultDto;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
public interface TagService {
/**
* @Description 已发布列表页的标签政府端
* @param tokenDto
* @author zxc
*/
List<TagInfoResultDto> tagList(TokenDto tokenDto);
/**
* @Description 已发布列表页的标签居民端
* @param formDto
* @author zxc
*/
List<TagInfoResultDto> resiTagList( ResiTagListFormDto formDto);
/**
* @Description 已发布列表页-获取关联标签政府端
* @param tokenDto
* @param formDto
* @author zxc
*/
List<CorrelationTagListResultDto> correlationTagList(TokenDto tokenDto, CorrelationTagListFormDto formDto);
}

13
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleOperateRecordServiceImpl.java

@ -20,11 +20,12 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.ArticleOperateRecordDao; import com.epmet.dao.ArticleOperateRecordDao;
import com.epmet.dto.ArticleOperateRecordDTO; import com.epmet.dto.ArticleOperateRecordDTO;
import com.epmet.dto.result.ArticleOperationResultDTO;
import com.epmet.entity.ArticleOperateRecordEntity; import com.epmet.entity.ArticleOperateRecordEntity;
import com.epmet.redis.ArticleOperateRecordRedis; import com.epmet.redis.ArticleOperateRecordRedis;
import com.epmet.service.ArticleOperateRecordService; import com.epmet.service.ArticleOperateRecordService;
@ -33,6 +34,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -101,4 +103,13 @@ public class ArticleOperateRecordServiceImpl extends BaseServiceImpl<ArticleOper
baseDao.deleteBatchIds(Arrays.asList(ids)); baseDao.deleteBatchIds(Arrays.asList(ids));
} }
@Override
public List<ArticleOperationResultDTO> listOfArticleOperation(String articleId) {
List<ArticleOperationResultDTO> list = baseDao.selectListByArticleId(articleId);
if (null == list) {
return new ArrayList<>();
}
return list;
}
} }

41
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java

@ -16,6 +16,7 @@
*/ */
package com.epmet.service.impl; package com.epmet.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -37,6 +38,8 @@ import com.epmet.dto.ArticleDTO;
import com.epmet.dto.feign.GovOrgSelfFeignClient; import com.epmet.dto.feign.GovOrgSelfFeignClient;
import com.epmet.dto.form.DraftContentFromDTO; import com.epmet.dto.form.DraftContentFromDTO;
import com.epmet.dto.result.ArticleGridResultDTO; import com.epmet.dto.result.ArticleGridResultDTO;
import com.epmet.dto.result.GovArticleContentDTO;
import com.epmet.dto.result.GovArticleDetailResultDTO;
import com.epmet.dto.result.PublishAgencyListResultDTO; import com.epmet.dto.result.PublishAgencyListResultDTO;
import com.epmet.entity.ArticleEntity; import com.epmet.entity.ArticleEntity;
import com.epmet.entity.DraftContentEntity; import com.epmet.entity.DraftContentEntity;
@ -66,14 +69,10 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
private ArticleRedis articleRedis; private ArticleRedis articleRedis;
@Autowired @Autowired
private GovOrgSelfFeignClient govOrgSelfFeignClient; private GovOrgSelfFeignClient govOrgSelfFeignClient;
@Autowired @Autowired
private DraftDao draftDao; private DraftDao draftDao;
@Autowired @Autowired
private DraftContentDao draftContentDao; private DraftContentDao draftContentDao;
@Autowired
private ArticleDao articleDao;
@Override @Override
public PageData<ArticleDTO> page(Map<String, Object> params) { public PageData<ArticleDTO> page(Map<String, Object> params) {
@ -138,6 +137,17 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
Result<ArticleGridResultDTO> result = govOrgSelfFeignClient.getAgencyGridList(tokenDTO.getUserId()); Result<ArticleGridResultDTO> result = govOrgSelfFeignClient.getAgencyGridList(tokenDTO.getUserId());
return result.getData(); return result.getData();
} }
/**
* @param tokenDTO
* @return
* @Author sun
* @Description 党建声音-政府端-可选发布范围
**/
@Override
public ArticleGridResultDTO agencyGridList(TokenDto tokenDTO) {
Result<ArticleGridResultDTO> result = govOrgSelfFeignClient.getAgencyGridList(tokenDTO.getUserId());
return result.getData();
}
/** /**
* @param tokenDTO * @param tokenDTO
@ -209,33 +219,38 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
return draftId; return draftId;
} }
@Override
public GovArticleDetailResultDTO queryGovArticleDetail(String articleId) {
GovArticleDetailResultDTO articleDetail = baseDao.queryGovArticleDetail(articleId);
if (null != articleDetail) {
List<GovArticleContentDTO> articleContentList = baseDao.queryGovArticleContent(articleId);
articleDetail.setArticleContentList(articleContentList);
}
return articleDetail;
}
/** /**
* desc构建 内容对象 * desc构建 内容对象
* *
*
* @param tokenDto * @param tokenDto
* @param fromDTO * @param fromDTO
* @return * @return
*/ */
private List<DraftContentEntity> buildDraftContent(TokenDto tokenDto, DraftContentFromDTO fromDTO) { private List<DraftContentEntity> buildDraftContent(TokenDto tokenDto, DraftContentFromDTO fromDTO) {
//如果已发布 则需要校验内容是否更改过 没有更改则 不对审核状态进行重置
List<DraftContentEntity> newContentList = new ArrayList<>(); List<DraftContentEntity> newContentList = new ArrayList<>();
List<DraftContentFromDTO.DraftContentDTO> contentList = fromDTO.getContentList(); List<DraftContentFromDTO.DraftContentDTO> contentList = fromDTO.getContentList();
Set<Integer> orderNumSet = new HashSet<>(); for (int i = 0; i < contentList.size(); i++) {
contentList.forEach(content -> { DraftContentFromDTO.DraftContentDTO content = contentList.get(i);
DraftContentEntity entity = ConvertUtils.sourceToTarget(content, DraftContentEntity.class); DraftContentEntity entity = ConvertUtils.sourceToTarget(content, DraftContentEntity.class);
entity.setId(content.getDraftContentId()); entity.setId(content.getDraftContentId());
entity.setCustomerId(tokenDto.getCustomerId()); entity.setCustomerId(tokenDto.getCustomerId());
entity.setDraftId(fromDTO.getDraftId()); entity.setDraftId(fromDTO.getDraftId());
orderNumSet.add(content.getOrderNum()); entity.setOrderNum(i + 1);
newContentList.add(entity); newContentList.add(entity);
});
if (orderNumSet.size() != newContentList.size()) {
logger.warn("saveOrUpdateContent contentList orderNum is repeat");
throw new RenException("参数错误");
} }
return newContentList; return newContentList;
} }

19
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/DraftServiceImpl.java

@ -20,15 +20,20 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.constant.DraftConstant;
import com.epmet.dao.DraftDao; import com.epmet.dao.DraftDao;
import com.epmet.dto.DraftDTO; import com.epmet.dto.DraftDTO;
import com.epmet.dto.form.DeleteDraftFormDTO;
import com.epmet.entity.DraftEntity; import com.epmet.entity.DraftEntity;
import com.epmet.redis.DraftRedis; import com.epmet.redis.DraftRedis;
import com.epmet.service.DraftService; import com.epmet.service.DraftService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -45,7 +50,7 @@ import java.util.Map;
*/ */
@Service @Service
public class DraftServiceImpl extends BaseServiceImpl<DraftDao, DraftEntity> implements DraftService { public class DraftServiceImpl extends BaseServiceImpl<DraftDao, DraftEntity> implements DraftService {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired @Autowired
private DraftRedis draftRedis; private DraftRedis draftRedis;
@ -101,4 +106,16 @@ public class DraftServiceImpl extends BaseServiceImpl<DraftDao, DraftEntity> imp
baseDao.deleteBatchIds(Arrays.asList(ids)); baseDao.deleteBatchIds(Arrays.asList(ids));
} }
@Override
public void deleteDraft(DeleteDraftFormDTO formDTO) {
DraftDTO draftDTO = this.get(formDTO.getDraftId());
// 已发布的草稿不能删除
if (null == draftDTO || DraftConstant.PUBLISHED.equals(draftDTO.getStatusFlag())) {
logger.error(String.format("删除草稿错误,已发布的草稿不能删除。草稿id%s", formDTO.getDraftId()));
return;
}
draftDTO.setDelFlag(NumConstant.ONE);
this.update(draftDTO);
}
} }

67
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/TagServiceImpl.java

@ -0,0 +1,67 @@
package com.epmet.service.impl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dao.ArticleDao;
import com.epmet.dto.form.CorrelationTagListFormDto;
import com.epmet.dto.form.ResiTagListFormDto;
import com.epmet.dto.result.CorrelationTagListResultDto;
import com.epmet.dto.result.TagInfoResultDto;
import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.redis.TagRedis;
import com.epmet.service.TagService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class TagServiceImpl implements TagService {
@Autowired
private TagRedis tagRedis;
@Autowired
private EpmetUserFeignClient epmetUserFeignClient;
@Autowired
private ArticleDao articleDao;
/**
* @Description 已发布列表页的标签政府端
* @param tokenDto
* @author zxc
*/
@Override
public List<TagInfoResultDto> tagList(TokenDto tokenDto) {
String customerId = tokenDto.getCustomerId();
List<TagInfoResultDto> resultDtos = tagRedis.zRevRange(customerId);
return resultDtos;
}
/**
* @Description 已发布列表页的标签居民端
* @param formDto
* @author zxc
*/
@Override
public List<TagInfoResultDto> resiTagList(ResiTagListFormDto formDto) {
//校验 在本网格是否发布过文章
Integer articleCounts = articleDao.checkPublishArticle(formDto);
if (articleCounts== NumConstant.ZERO){
return new ArrayList<>();
}
return tagRedis.zGridRevRange(formDto.getGridId());
}
/**
* @Description 已发布列表页-获取关联标签政府端
* @param tokenDto
* @param formDto
* @author zxc
*/
@Override
public List<CorrelationTagListResultDto> correlationTagList(TokenDto tokenDto, CorrelationTagListFormDto formDto) {
String customerId = tokenDto.getCustomerId();
return tagRedis.get(customerId,formDto);
}
}

43
epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml

@ -2,5 +2,48 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.ArticleDao"> <mapper namespace="com.epmet.dao.ArticleDao">
<!-- 政府端:(已发布、已下线)文章详情 属性 -->
<select id="queryGovArticleDetail" parameterType="java.lang.String" resultType="com.epmet.dto.result.GovArticleDetailResultDTO">
SELECT
id AS ARTICLE_ID,
TITLE,
PUBLISHER_NAME,
PUBLISH_DATE,
( SELECT count( 1 ) FROM article_visit_record avr WHERE avr.DEL_FLAG = '0' AND avr.ARTICLE_ID =#{articleId}) AS VISIT_RECORD_COUNT,
PUBLISH_RANGE_DESC,
TAGS,
STATUS_FLAG,
DRAFT_ID
FROM
article
WHERE
DEL_FLAG = '0'
AND id =#{articleId}
</select>
<!-- 政府端:(已发布、已下线)文章详情 内容 -->
<select id="queryGovArticleContent" parameterType="java.lang.String" resultType="com.epmet.dto.result.GovArticleContentDTO">
SELECT
ac.CONTENT_TYPE,
ac.CONTENT
FROM
article_content ac
WHERE
ac.DEL_FLAG = '0'
and ac.ARTICLE_ID=#{articleId}
ORDER BY
ac.ORDER_NUM ASC
</select>
<select id="checkPublishArticle" resultType="integer" parameterType="com.epmet.dto.form.ResiTagListFormDto">
SELECT
COUNT(*) AS articleCounts
FROM
article
WHERE
del_flag = 0
AND grid_id = #{gridId}
AND customer_id = #{customerId}
AND created_by = #{userId}
</select>
</mapper> </mapper>

15
epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleOperateRecordDao.xml

@ -3,5 +3,18 @@
<mapper namespace="com.epmet.dao.ArticleOperateRecordDao"> <mapper namespace="com.epmet.dao.ArticleOperateRecordDao">
<!-- 根据文章id查询操作记录 -->
<select id="selectListByArticleId" parameterType="java.lang.String" resultType="com.epmet.dto.result.ArticleOperationResultDTO">
SELECT
id,
content,
UNIX_TIMESTAMP( CREATED_TIME ) AS createdTime
FROM
article_operate_record
WHERE
DEL_FLAG = '0'
AND ARTICLE_ID =#{articleId}
ORDER BY
CREATED_TIME DESC
</select>
</mapper> </mapper>

35
epmet-module/resi-voice/resi-voice-client/src/main/java/com/epmet/dto/form/ResiTagListFormDto.java

@ -0,0 +1,35 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Author zxc
* @CreateTime 2020/6/2 15:50
*/
@Data
public class ResiTagListFormDto implements Serializable {
private static final long serialVersionUID = -794399801200532922L;
public interface ResiTagList{}
public interface ResiTagListWeb extends CustomerClientShowGroup {}
/**
* 网格id
*/
@NotBlank(message = "网格id不能为空",groups = {ResiTagList.class,ResiTagListWeb.class})
private String gridId;
/**
* 客户id
*/
private String customerId;
/**
* 用户id
*/
private String userId;
}

5
epmet-module/resi-voice/resi-voice-server/pom.xml

@ -19,6 +19,11 @@
<artifactId>resi-voice-client</artifactId> <artifactId>resi-voice-client</artifactId>
<version>2.0.0</version> <version>2.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>gov-voice-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency> <dependency>
<groupId>com.epmet</groupId> <groupId>com.epmet</groupId>
<artifactId>epmet-commons-tools</artifactId> <artifactId>epmet-commons-tools</artifactId>

27
epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/controller/ArticleController.java

@ -1,9 +1,36 @@
package com.epmet.controller; package com.epmet.controller;
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.form.ResiTagListFormDto;
import com.epmet.dto.result.TagInfoResultDto;
import com.epmet.service.ArticleService;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController @RestController
@RequestMapping("article") @RequestMapping("article")
public class ArticleController { public class ArticleController {
@Autowired
private ArticleService articleService;
/**
* @Description 首页标签及更多居民端
* @param formDto
* @author zxc
*/
@PostMapping("taglist")
public Result<List<TagInfoResultDto>> resiTagList(@LoginUser TokenDto tokenDto, @RequestBody ResiTagListFormDto formDto){
ValidatorUtils.validateEntity(formDto, ResiTagListFormDto.ResiTagList.class, ResiTagListFormDto.ResiTagListWeb.class);
return new Result<List<TagInfoResultDto>>().ok(articleService.resiTagList(tokenDto,formDto));
}
} }

21
epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/service/ArticleService.java

@ -0,0 +1,21 @@
package com.epmet.service;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.form.ResiTagListFormDto;
import com.epmet.dto.result.TagInfoResultDto;
import java.util.List;
/**
* @Author zxc
* @CreateTime 2020/6/2 15:59
*/
public interface ArticleService {
/**
* @Description 首页标签及更多居民端
* @param formDto
* @author zxc
*/
List<TagInfoResultDto> resiTagList(TokenDto tokenDto, ResiTagListFormDto formDto);
}

34
epmet-module/resi-voice/resi-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java

@ -0,0 +1,34 @@
package com.epmet.service.impl;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.feign.GovVoiceFeignClient;
import com.epmet.dto.form.ResiTagListFormDto;
import com.epmet.dto.result.TagInfoResultDto;
import com.epmet.service.ArticleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Author zxc
* @CreateTime 2020/6/2 16:00
*/
@Service
public class ArticleServiceImpl implements ArticleService {
@Autowired
private GovVoiceFeignClient govVoiceFeignClient;
/**
* @Description 首页标签及更多居民端
* @param formDto
* @author zxc
*/
@Override
public List<TagInfoResultDto> resiTagList(TokenDto tokenDto, ResiTagListFormDto formDto) {
formDto.setCustomerId(tokenDto.getCustomerId());
formDto.setUserId(tokenDto.getUserId());
return govVoiceFeignClient.resiTagList(formDto).getData();
}
}

10
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/LoginUserDetailsFormDTO.java

@ -0,0 +1,10 @@
package com.epmet.dto.form;
import lombok.Data;
@Data
public class LoginUserDetailsFormDTO {
private String app;
private String client;
private String userId;
}

16
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/TagCustomerFormDTO.java

@ -0,0 +1,16 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@Data
public class TagCustomerFormDTO implements Serializable{
private static final long serialVersionUID = -6722269597588807655L;
/**
* 用户Id
* */
private String userId;
}

20
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/TagCustomerResultDTO.java

@ -0,0 +1,20 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description
* @Author zxc
*/
@Data
public class TagCustomerResultDTO implements Serializable {
private static final long serialVersionUID = 4890020932450803062L;
/**
* 客户id
* */
private String customerId;
}

29
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserFeignClient.java

@ -0,0 +1,29 @@
package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.TagCustomerFormDTO;
import com.epmet.dto.result.TagCustomerResultDTO;
import com.epmet.feign.fallback.EpmetUserFeignClientFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* @Author zxc
* @CreateTime 2020/6/2 14:05
* , url = "localhost:8087"
*/
//@FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallback = EpmetUserFeignClientFallBack.class, url = "localhost:8087")
@FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallback = EpmetUserFeignClientFallBack.class)
public interface EpmetUserFeignClient {
/**
* @Description 根据userId获取customerId
* @param formDTO
* @author zxc
*/
@PostMapping("/epmetuser/user/getcustomeridbyuserid")
Result<TagCustomerResultDTO> getCustomerIdByUserId(@RequestBody TagCustomerFormDTO formDTO);
}

23
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallBack.java

@ -0,0 +1,23 @@
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.form.TagCustomerFormDTO;
import com.epmet.dto.result.TagCustomerResultDTO;
import com.epmet.feign.EpmetUserFeignClient;
import org.springframework.stereotype.Component;
/**
* @Description 居民端-陌生人导览 调用gov-org服务
* @Author sun
* @Date 2020/3/16
*/
@Component
public class EpmetUserFeignClientFallBack implements EpmetUserFeignClient {
@Override
public Result<TagCustomerResultDTO> getCustomerIdByUserId(TagCustomerFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getCustomerIdByUserId", formDTO);
}
}

2
epmet-user/epmet-user-server/deploy/docker-compose-dev.yml

@ -2,7 +2,7 @@ version: "3.7"
services: services:
epmet-user-server: epmet-user-server:
container_name: epmet-user-server-dev container_name: epmet-user-server-dev
image: 192.168.1.130:10080/epmet-cloud-dev/epmet-user-server:0.3.53 image: 192.168.1.130:10080/epmet-cloud-dev/epmet-user-server:0.3.55
ports: ports:
- "8087:8087" - "8087:8087"
network_mode: host # 不会创建新的网络 network_mode: host # 不会创建新的网络

2
epmet-user/epmet-user-server/pom.xml

@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<version>0.3.53</version> <version>0.3.55</version>
<parent> <parent>
<groupId>com.epmet</groupId> <groupId>com.epmet</groupId>
<artifactId>epmet-user</artifactId> <artifactId>epmet-user</artifactId>

13
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserController.java

@ -10,11 +10,11 @@ import com.epmet.dto.UserDTO;
import com.epmet.dto.UserWechatDTO; import com.epmet.dto.UserWechatDTO;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.CreatedTimeByUserIdResultDTO; import com.epmet.dto.result.CreatedTimeByUserIdResultDTO;
import com.epmet.dto.result.LoginUserDetailsResultDTO;
import com.epmet.dto.result.MyResiUserInfoResultDTO; import com.epmet.dto.result.MyResiUserInfoResultDTO;
import com.epmet.dto.result.PasswordLoginUserInfoResultDTO; import com.epmet.dto.result.PasswordLoginUserInfoResultDTO;
import com.epmet.service.UserService; import com.epmet.service.UserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -111,4 +111,15 @@ public class UserController {
return new Result<MyResiUserInfoResultDTO>().ok(userService.resiMyselfMsg(myResiUserInfoFormDTO)); return new Result<MyResiUserInfoResultDTO>().ok(userService.resiMyselfMsg(myResiUserInfoFormDTO));
} }
/**
* 从缓存中查询已登录用户的基本信息以及角色等相关信息
* @return
*/
@PostMapping("loginuserdetails")
public Result<LoginUserDetailsResultDTO> getLoginUserDetails(@RequestBody LoginUserDetailsFormDTO dto) {
ValidatorUtils.validateEntity(dto, StaffPermCacheFormDTO.GetStaffCurrPermissions.class);
LoginUserDetailsResultDTO govTokenDto = userService.getLoginUserDetails(dto.getApp(), dto.getClient(), dto.getUserId());
return new Result<LoginUserDetailsResultDTO>().ok(govTokenDto);
}
} }

11
epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserService.java

@ -1,19 +1,16 @@
package com.epmet.service; package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.UserDTO; import com.epmet.dto.UserDTO;
import com.epmet.dto.UserWechatDTO; import com.epmet.dto.UserWechatDTO;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.CreatedTimeByUserIdResultDTO; import com.epmet.dto.result.CreatedTimeByUserIdResultDTO;
import com.epmet.dto.result.LoginUserDetailsResultDTO;
import com.epmet.dto.result.MyResiUserInfoResultDTO; import com.epmet.dto.result.MyResiUserInfoResultDTO;
import com.epmet.dto.result.PasswordLoginUserInfoResultDTO; import com.epmet.dto.result.PasswordLoginUserInfoResultDTO;
import com.epmet.entity.UserEntity; import com.epmet.entity.UserEntity;
import java.util.List;
import java.util.Map;
/** /**
* @Description * @Description
* @IntefaceName UserService * @IntefaceName UserService
@ -73,4 +70,10 @@ public interface UserService extends BaseService<UserEntity> {
* @date 2020.05.22 19:24 * @date 2020.05.22 19:24
**/ **/
MyResiUserInfoResultDTO resiMyselfMsg(MyResiUserInfoFormDTO myResiUserInfoFormDTO); MyResiUserInfoResultDTO resiMyselfMsg(MyResiUserInfoFormDTO myResiUserInfoFormDTO);
/**
* 查询登陆用户信息
* @return
*/
LoginUserDetailsResultDTO getLoginUserDetails(String app, String client, String staffId);
} }

8
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java

@ -2,6 +2,7 @@ package com.epmet.service.impl;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.CpUserDetailRedis;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.UserConstant; import com.epmet.constant.UserConstant;
import com.epmet.dao.UserDao; import com.epmet.dao.UserDao;
@ -42,6 +43,8 @@ public class UserServiceImpl extends BaseServiceImpl<UserDao, UserEntity> implem
private GovOrgFeignClient govOrgFeignClient; private GovOrgFeignClient govOrgFeignClient;
@Autowired @Autowired
private UserRoleDao userRoleDao; private UserRoleDao userRoleDao;
@Autowired
private CpUserDetailRedis cpUserDetailRedis;
private static final Logger log = LoggerFactory.getLogger(UserServiceImpl.class); private static final Logger log = LoggerFactory.getLogger(UserServiceImpl.class);
@ -174,4 +177,9 @@ public class UserServiceImpl extends BaseServiceImpl<UserDao, UserEntity> implem
return null; return null;
} }
@Override
public LoginUserDetailsResultDTO getLoginUserDetails(String app, String client, String userId) {
return cpUserDetailRedis.get(app, client, userId, LoginUserDetailsResultDTO.class);
}
} }

Loading…
Cancel
Save