Browse Source

新增resi-mine

master
yinzuomei 5 years ago
parent
commit
12f23a770b
  1. 4
      epmet-gateway/pom.xml
  2. 11
      epmet-gateway/src/main/resources/bootstrap.yml
  3. 1
      epmet-module/pom.xml
  4. 21
      epmet-module/resi-mine/pom.xml
  5. 35
      epmet-module/resi-mine/resi-mine-client/pom.xml
  6. 0
      epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/form/.gitkeep
  7. 0
      epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/.gitkeep
  8. 154
      epmet-module/resi-mine/resi-mine-server/pom.xml
  9. 31
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/ResiMineApplication.java
  10. 26
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/config/ModuleConfigImpl.java
  11. 68
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/config/SwaggerConfig.java
  12. 35
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/controller/ResiMineGridController.java
  13. 0
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/dao/.gitkeep
  14. 0
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/entity/.gitkeep
  15. 0
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/excel/.gitkeep
  16. 25
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/exception/ModuleErrorCode.java
  17. 27
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java
  18. 29
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallBack.java
  19. 21
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/service/ResiMineGridService.java
  20. 42
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/service/impl/ResiMineGridServiceImpl.java
  21. 30
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/utils/ModuleConstant.java
  22. 106
      epmet-module/resi-mine/resi-mine-server/src/main/resources/bootstrap.yml
  23. 1
      epmet-module/resi-mine/resi-mine-server/src/main/resources/i18n/messages.properties
  24. 1
      epmet-module/resi-mine/resi-mine-server/src/main/resources/i18n/messages_en_US.properties
  25. 1
      epmet-module/resi-mine/resi-mine-server/src/main/resources/i18n/messages_zh_CN.properties
  26. 1
      epmet-module/resi-mine/resi-mine-server/src/main/resources/i18n/messages_zh_TW.properties
  27. 1
      epmet-module/resi-mine/resi-mine-server/src/main/resources/i18n/validation.properties
  28. 1
      epmet-module/resi-mine/resi-mine-server/src/main/resources/i18n/validation_en_US.properties
  29. 1
      epmet-module/resi-mine/resi-mine-server/src/main/resources/i18n/validation_zh_CN.properties
  30. 1
      epmet-module/resi-mine/resi-mine-server/src/main/resources/i18n/validation_zh_TW.properties
  31. 159
      epmet-module/resi-mine/resi-mine-server/src/main/resources/logback-spring.xml
  32. 25
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LatestGridInfoResultDTO.java
  33. 8
      epmet-user/epmet-user-server/src/main/java/com/epmet/constant/GridVisitedConstant.java
  34. 16
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/GridLatestController.java
  35. 12
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GridLatestDao.java
  36. 14
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/GridLatestService.java
  37. 20
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GridLatestServiceImpl.java
  38. 16
      epmet-user/epmet-user-server/src/main/resources/mapper/GridLatestDao.xml

4
epmet-gateway/pom.xml

@ -148,6 +148,8 @@
<gateway.routes.gov-org-server.uri>http://127.0.0.1:8092</gateway.routes.gov-org-server.uri>
<!-- 14、#运营端访问权限控制 -->
<gateway.routes.oper-access-server.uri>http://127.0.0.1:8093</gateway.routes.oper-access-server.uri>
<!-- 15、居民端个人信息 -->
<gateway.routes.resi-mine-server.uri>http://127.0.0.1:8094</gateway.routes.resi-mine-server.uri>
</properties>
</profile>
@ -201,6 +203,8 @@
<gateway.routes.gov-org-server.uri>lb://gov-org-server</gateway.routes.gov-org-server.uri>
<!-- 14、#运营端访问权限控制 -->
<gateway.routes.oper-access-server.uri>lb://oper-access-server</gateway.routes.oper-access-server.uri>
<!-- 15、居民端个人信息 -->
<gateway.routes.resi-mine-server.uri>http://resi-mine-server</gateway.routes.resi-mine-server.uri>
</properties>
</profile>
</profiles>

11
epmet-gateway/src/main/resources/bootstrap.yml

@ -147,6 +147,15 @@ spring:
filters:
- StripPrefix=1
- CpAuth=true
#居民端个人信息
- id: resi-mine-server
uri: @gateway.routes.resi-mine-server.uri@
order: 15
predicates:
- Path=${server.servlet.context-path}/resi/mine/**
filters:
- StripPrefix=1
- CpAuth=true
nacos:
discovery:
server-addr: @nacos.server-addr@
@ -183,6 +192,7 @@ renren:
- /oper/access/**
- /sys/**
- /resi/guide/**
- /resi/mine/**
management:
endpoints:
web:
@ -245,6 +255,7 @@ epmet:
- /oper/access/**
- /resi/guide/stranger/getgridhome
- /auth/login/logout
- /resi/mine/**
swaggerUrls:
jwt:

1
epmet-module/pom.xml

@ -24,6 +24,7 @@
<module>resi-guide</module>
<module>gov-org</module>
<module>oper-access</module>
<module>resi-mine</module>
</modules>
</project>

21
epmet-module/resi-mine/pom.xml

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.epmet</groupId>
<artifactId>epmet-module</artifactId>
<version>2.0.0</version>
</parent>
<groupId>com.epmet</groupId>
<artifactId>resi-mine</artifactId>
<packaging>pom</packaging>
<modules>
<module>resi-mine-client</module>
<module>resi-mine-server</module>
</modules>
</project>

35
epmet-module/resi-mine/resi-mine-client/pom.xml

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.epmet</groupId>
<artifactId>resi-mine</artifactId>
<version>2.0.0</version>
</parent>
<artifactId>resi-mine-client</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-commons-tools</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
</build>
</project>

0
epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/form/.gitkeep

0
epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/.gitkeep

154
epmet-module/resi-mine/resi-mine-server/pom.xml

@ -0,0 +1,154 @@
<?xml version="1.0" encoding="UTF-8"?>
<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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.epmet</groupId>
<artifactId>resi-mine</artifactId>
<version>2.0.0</version>
</parent>
<artifactId>resi-mine-server</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>resi-mine-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-commons-tools</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-commons-mybatis</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>${spring.boot.admin.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- 替换Feign原生httpclient -->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
<version>10.3.0</version>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-user-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
<resources>
<resource>
<filtering>true</filtering>
<directory>${basedir}/src/main/resources</directory>
</resource>
</resources>
</build>
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<server.port>8094</server.port>
<spring.profiles.active>dev</spring.profiles.active>
<!-- 数据库配置-->
<spring.datasource.druid.url>
<![CDATA[jdbc:mysql://47.104.224.45:3308/epmet_resi_guide?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</spring.datasource.druid.url>
<spring.datasource.druid.username>epmet</spring.datasource.druid.username>
<spring.datasource.druid.password>elink@833066</spring.datasource.druid.password>
<!-- redis配置 -->
<spring.redis.index>0</spring.redis.index>
<spring.redis.host>122.152.200.70</spring.redis.host>
<spring.redis.port>6379</spring.redis.port>
<spring.redis.password>123456</spring.redis.password>
<!-- nacos -->
<nacos.register-enabled>false</nacos.register-enabled>
<nacos.server-addr>122.152.200.70:8848</nacos.server-addr>
<nacos.discovery.namespace>fcd6fc8f-ca3a-4b01-8026-2b05cdc5976b</nacos.discovery.namespace>
<nacos.config.namespace></nacos.config.namespace>
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
</properties>
</profile>
<profile>
<id>test</id>
<!--<activation>
<activeByDefault>true</activeByDefault>
</activation>-->
<properties>
<server.port>8094</server.port>
<spring.profiles.active>test</spring.profiles.active>
<!-- 数据库配置-->
<spring.datasource.druid.url>
<![CDATA[jdbc:mysql://47.104.224.45:3308/epmet_resi_guide?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</spring.datasource.druid.url>
<spring.datasource.druid.username>epmet</spring.datasource.druid.username>
<spring.datasource.druid.password>elink@833066</spring.datasource.druid.password>
<!-- redis配置 -->
<spring.redis.index>0</spring.redis.index>
<spring.redis.host>122.152.200.70</spring.redis.host>
<spring.redis.port>6379</spring.redis.port>
<spring.redis.password>123456</spring.redis.password>
<!-- nacos -->
<nacos.register-enabled>true</nacos.register-enabled>
<nacos.server-addr>122.152.200.70:8848</nacos.server-addr>
<nacos.discovery.namespace>fcd6fc8f-ca3a-4b01-8026-2b05cdc5976b</nacos.discovery.namespace>
<nacos.config.namespace></nacos.config.namespace>
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
</properties>
</profile>
</profiles>
</project>

31
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/ResiMineApplication.java

@ -0,0 +1,31 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有侵权必究
*/
package com.epmet;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
/**
* 模块
*
* @author Mark sunlightcs@gmail.com
* @since 1.0.0
*/
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ResiMineApplication {
public static void main(String[] args) {
SpringApplication.run(ResiMineApplication.class, args);
}
}

26
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/config/ModuleConfigImpl.java

@ -0,0 +1,26 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有侵权必究
*/
package com.epmet.config;
import com.epmet.commons.tools.config.ModuleConfig;
import org.springframework.stereotype.Service;
/**
* 模块配置信息
*
* @author Mark sunlightcs@gmail.com
* @since 1.0.0
*/
@Service
public class ModuleConfigImpl implements ModuleConfig {
@Override
public String getName() {
return "resimine";
}
}

68
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/config/SwaggerConfig.java

@ -0,0 +1,68 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有侵权必究
*/
package com.epmet.config;
import com.epmet.commons.tools.constant.Constant;
import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.ApiKey;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.List;
import static com.google.common.collect.Lists.newArrayList;
/**
* Swagger配置
*
* @author Mark sunlightcs@gmail.com
* @since 1.0.0
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig implements WebMvcConfigurer {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//加了ApiOperation注解的类,才生成接口文档
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build()
.directModelSubstitute(java.util.Date.class, String.class)
.securitySchemes(security());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("人人开源")
.description("模块接口文档")
.termsOfServiceUrl("https://www.renren.io")
.version("1.1.0")
.build();
}
private List<ApiKey> security() {
return newArrayList(
new ApiKey(Constant.TOKEN_HEADER, Constant.TOKEN_HEADER, "header")
);
}
}

35
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/controller/ResiMineGridController.java

@ -0,0 +1,35 @@
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.dto.result.LatestGridInfoResultDTO;
import com.epmet.service.ResiMineGridService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description 居民端用户网格信息相关接口入口
* @Author yinzuomei
* @Date 2020/3/24 11:02
*/
@RestController
@RequestMapping("minegrid")
public class ResiMineGridController {
@Autowired
private ResiMineGridService resiMineGridService;
/**
* @return com.epmet.resi.mine.dto.result.LatestGridInfoResultDTO
* @param tokenDto
* @Author yinzuomei
* @Description 获取用户最近访问网格
* @Date 2020/3/24 11:10
**/
@GetMapping("getlatestgridinfo")
public Result<LatestGridInfoResultDTO> getLatestGridInfo(@LoginUser TokenDto tokenDto){
return resiMineGridService.getLatestGridInfo(tokenDto);
}
}

0
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/dao/.gitkeep

0
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/entity/.gitkeep

0
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/excel/.gitkeep

25
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/exception/ModuleErrorCode.java

@ -0,0 +1,25 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有侵权必究
*/
package com.epmet.exception;
import com.epmet.commons.tools.exception.ErrorCode;
/**
* 模块错误编码由9位数字组成前6位为模块编码后3位为业务编码
* <p>
* 100001001100001代表模块001代表业务代码
* </p>
*
* @author Mark sunlightcs@gmail.com
* @since 1.0.0
*/
public interface ModuleErrorCode extends ErrorCode {
}

27
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java

@ -0,0 +1,27 @@
package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.result.LatestGridInfoResultDTO;
import com.epmet.feign.fallback.EpmetUserFeignClientFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
/**
* @Description 居民端陌生人导览 调用epmet-user服务
* @Author sun
*/
@FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallback = EpmetUserFeignClientFallBack.class)
public interface EpmetUserFeignClient {
/**
* @param userId
* @return com.epmet.resi.mine.dto.result.LatestGridInfoResultDTO
* @Author yinzuomei
* @Description 根据居民id查询最后一次访问的网格信息
* @Date 2020/3/24 13:05
**/
@GetMapping(value = "epmetuser/gridlatest/getLatestGridInfoByUserId/{userId}")
Result<LatestGridInfoResultDTO> getLatestGridInfoByUserId(@PathVariable("userId") String userId);
}

29
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallBack.java

@ -0,0 +1,29 @@
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.LatestGridInfoResultDTO;
import com.epmet.feign.EpmetUserFeignClient;
import org.springframework.stereotype.Component;
/**
* @Description 居民端-陌生人导览 调用epmet-user服务
* @Author sun
* @Date 2020/3/16
*/
@Component
public class EpmetUserFeignClientFallBack implements EpmetUserFeignClient {
/**
* @param userId
* @return com.epmet.resi.mine.dto.result.LatestGridInfoResultDTO
* @Author yinzuomei
* @Description 根据居民id查询最后一次访问的网格信息
* @Date 2020/3/24 13:05
**/
@Override
public Result<LatestGridInfoResultDTO> getLatestGridInfoByUserId(String userId) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getLatestGridInfoByUserId", userId);
}
}

21
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/service/ResiMineGridService.java

@ -0,0 +1,21 @@
package com.epmet.service;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.result.LatestGridInfoResultDTO;
/**
* @Description 居民端用户网格信息service
* @Author yinzuomei
* @Date 2020/3/24 11:04
*/
public interface ResiMineGridService {
/**
* 获取用户最近访问网格
*
* @Author yinzuomei
* @param tokenDto
* @return com.epmet.commons.tools.utils.Result<com.epmet.resi.mine.dto.result.LatestGridInfoResultDTO>
*/
Result<LatestGridInfoResultDTO> getLatestGridInfo(TokenDto tokenDto);
}

42
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/service/impl/ResiMineGridServiceImpl.java

@ -0,0 +1,42 @@
package com.epmet.service.impl;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.result.LatestGridInfoResultDTO;
import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.service.ResiMineGridService;
import com.epmet.utils.ModuleConstant;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @Description 居民端用户网格信息service
* @Author yinzuomei
* @Date 2020/3/24 11:04
*/
@Service
public class ResiMineGridServiceImpl implements ResiMineGridService {
@Autowired
private EpmetUserFeignClient epmetUserFeignClient;
/**
* @param tokenDto
* @return com.epmet.commons.tools.utils.Result<com.epmet.resi.mine.dto.result.LatestGridInfoResultDTO>
* @Author yinzuomei
* @Description 获取用户最近访问网格
* @Date 2020/3/24 11:11
**/
@Override
public Result<LatestGridInfoResultDTO> getLatestGridInfo(TokenDto tokenDto) {
if (null == tokenDto || StringUtils.isBlank(tokenDto.getUserId())) {
return new Result<LatestGridInfoResultDTO>().error(ModuleConstant.USER_NOT_NULL);
}
if(!AppClientConstant.APP_RESI.equals(tokenDto.getApp())){
return new Result<LatestGridInfoResultDTO>().error(ModuleConstant.FOR_RESI_CALL);
}
return epmetUserFeignClient.getLatestGridInfoByUserId(tokenDto.getUserId());
}
}

30
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/utils/ModuleConstant.java

@ -0,0 +1,30 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有侵权必究
*/
package com.epmet.utils;
import com.epmet.commons.tools.constant.Constant;
/**
* 模块常量
*
* @author Mark sunlightcs@gmail.com
* @since 1.1.0
*/
public interface ModuleConstant extends Constant {
/**
* tokenDto不能为null userId不能为空
*/
String USER_NOT_NULL="用户信息不能为空";
/**
* 接口只限居民端调用
*/
String FOR_RESI_CALL="当前接口只限居民端调用";
}

106
epmet-module/resi-mine/resi-mine-server/src/main/resources/bootstrap.yml

@ -0,0 +1,106 @@
server:
port: @server.port@
servlet:
context-path: /resi/mine
spring:
main:
allow-bean-definition-overriding: true
application:
name: resi-mine-server
#环境 dev|test|prod
profiles:
active: dev
messages:
encoding: UTF-8
basename: i18n/messages,i18n/messages_common
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
redis:
database: @spring.redis.index@
host: @spring.redis.host@
port: @spring.redis.port@
password: @spring.redis.password@
timeout: 30s
datasource:
druid:
#MySQL
driver-class-name: com.mysql.cj.jdbc.Driver
url: @spring.datasource.druid.url@
username: @spring.datasource.druid.username@
password: @spring.datasource.druid.password@
cloud:
nacos:
discovery:
server-addr: @nacos.server-addr@
#nacos的命名空间ID,默认是public
namespace: @nacos.discovery.namespace@
#不把自己注册到注册中心的地址
register-enabled: @nacos.register-enabled@
ip: @nacos.ip@
config:
enabled: @nacos.config-enabled@
server-addr: @nacos.server-addr@
namespace: @nacos.config.namespace@
group: @nacos.config.group@
file-extension: yaml
#指定共享配置,且支持动态刷新
# ext-config:
# - data-id: datasource.yaml
# group: ${spring.cloud.nacos.config.group}
# refresh: true
# - data-id: common.yaml
# group: ${spring.cloud.nacos.config.group}
# refresh: true
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.epmet.resi.mine.entity
global-config:
#数据库相关配置
db-config:
#主键类型 AUTO:"数据库ID自增", INPUT:"用户输入ID", ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
id-type: ID_WORKER
#字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断"
field-strategy: NOT_NULL
#驼峰下划线转换
column-underline: true
banner: false
#原生配置
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
call-setters-on-nulls: true
jdbc-type-for-null: 'null'
feign:
hystrix:
enabled: true
client:
config:
default:
loggerLevel: BASIC
httpclient:
enabled: true
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 60000 #缺省为1000
ribbon:
ReadTimeout: 300000
ConnectTimeout: 300000

1
epmet-module/resi-mine/resi-mine-server/src/main/resources/i18n/messages.properties

@ -0,0 +1 @@
#Default

1
epmet-module/resi-mine/resi-mine-server/src/main/resources/i18n/messages_en_US.properties

@ -0,0 +1 @@
#English

1
epmet-module/resi-mine/resi-mine-server/src/main/resources/i18n/messages_zh_CN.properties

@ -0,0 +1 @@
#\u7B80\u4F53\u4E2D\u6587

1
epmet-module/resi-mine/resi-mine-server/src/main/resources/i18n/messages_zh_TW.properties

@ -0,0 +1 @@
#\u7E41\u4F53\u4E2D\u6587

1
epmet-module/resi-mine/resi-mine-server/src/main/resources/i18n/validation.properties

@ -0,0 +1 @@
#Default

1
epmet-module/resi-mine/resi-mine-server/src/main/resources/i18n/validation_en_US.properties

@ -0,0 +1 @@
#English

1
epmet-module/resi-mine/resi-mine-server/src/main/resources/i18n/validation_zh_CN.properties

@ -0,0 +1 @@
#\u7B80\u4F53\u4E2D\u6587

1
epmet-module/resi-mine/resi-mine-server/src/main/resources/i18n/validation_zh_TW.properties

@ -0,0 +1 @@
#\u7E41\u4F53\u4E2D\u6587

159
epmet-module/resi-mine/resi-mine-server/src/main/resources/logback-spring.xml

@ -0,0 +1,159 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<property name="log.path" value="logs/resi-mine"/>
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!--1. 输出到控制台-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
<!-- 设置字符集 -->
<charset>UTF-8</charset>
</encoder>
</appender>
<!--2. 输出到文档-->
<!-- 2.1 level为 DEBUG 日志,时间滚动输出 -->
<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文档的路径及文档名 -->
<file>${log.path}/debug.log</file>
<!--日志文档输出格式-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset> <!-- 设置字符集 -->
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志归档 -->
<fileNamePattern>${log.path}/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文档保留天数-->
<maxHistory>15</maxHistory>
</rollingPolicy>
<!-- 此日志文档只记录debug级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>debug</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 2.2 level为 INFO 日志,时间滚动输出 -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文档的路径及文档名 -->
<file>${log.path}/info.log</file>
<!--日志文档输出格式-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 每天日志归档路径以及格式 -->
<fileNamePattern>${log.path}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文档保留天数-->
<maxHistory>15</maxHistory>
</rollingPolicy>
<!-- 此日志文档只记录info级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 2.3 level为 WARN 日志,时间滚动输出 -->
<appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文档的路径及文档名 -->
<file>${log.path}/warn.log</file>
<!--日志文档输出格式-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文档保留天数-->
<maxHistory>15</maxHistory>
</rollingPolicy>
<!-- 此日志文档只记录warn级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>warn</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 2.4 level为 ERROR 日志,时间滚动输出 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文档的路径及文档名 -->
<file>${log.path}/error.log</file>
<!--日志文档输出格式-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文档保留天数-->
<maxHistory>15</maxHistory>
</rollingPolicy>
<!-- 此日志文档只记录ERROR级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 开发、测试环境 -->
<springProfile name="dev,test">
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springboot.sample" level="INFO"/>
<logger name="com.epmet.dao" level="INFO"/>
<logger name="com.epmet.dao" level="DEBUG"/>
<root level="INFO">
<appender-ref ref="DEBUG_FILE"/>
<appender-ref ref="INFO_FILE"/>
<appender-ref ref="WARN_FILE"/>
<appender-ref ref="ERROR_FILE"/>
</root>
</springProfile>
<!-- 生产环境 -->
<springProfile name="prod">
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springboot.sample" level="INFO"/>
<logger name="com.epmet.dao" level="INFO"/>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="DEBUG_FILE"/>
<appender-ref ref="INFO_FILE"/>
<appender-ref ref="WARN_FILE"/>
<appender-ref ref="ERROR_FILE"/>
</root>
</springProfile>
</configuration>

25
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LatestGridInfoResultDTO.java

@ -0,0 +1,25 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 获取用户最近访问网格返参DTO
* @Author yinzuomei
* @Date 2020/3/24 11:09
*/
@Data
public class LatestGridInfoResultDTO implements Serializable {
private static final long serialVersionUID = 8548569698676898706L;
/**
* 用户最后一次访问的网格对应的客户id
*/
private String customerId;
/**
* 用户最后一次访问的网格
*/
private String gridId;
}

8
epmet-user/epmet-user-server/src/main/java/com/epmet/constant/GridVisitedConstant.java

@ -14,16 +14,24 @@ package com.epmet.constant;
* @since 1.0.0
*/
public interface GridVisitedConstant {
/**
* 查询异常
*/
String QUERY_EXCEPTION = "查询客户网格表数据失败!";
/**
* 网格访问记录表新增数据失败
*/
String SAVE_VISITED = "网格访问记录表新增数据失败!";
/**
* 最近访问网格表新增数据失败
*/
String SAVE_LATEST = "最近访问网格表新增数据失败!";
/**
* tokenDto中的userId不能为空
*/
String USER_ID_NOTNULL="用户id不能为空";
}

16
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/GridLatestController.java

@ -26,6 +26,7 @@ import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.dto.GridLatestDTO;
import com.epmet.dto.result.LatestGridInfoResultDTO;
import com.epmet.excel.GridLatestExcel;
import com.epmet.service.GridLatestService;
import org.springframework.beans.factory.annotation.Autowired;
@ -45,7 +46,7 @@ import java.util.Map;
@RestController
@RequestMapping("gridlatest")
public class GridLatestController {
@Autowired
private GridLatestService gridLatestService;
@ -91,4 +92,15 @@ public class GridLatestController {
ExcelUtils.exportExcelToTarget(response, null, list, GridLatestExcel.class);
}
}
/**
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.LatestGridInfoResultDTO>
* @param userId
* @Author yinzuomei
* @Description 根据居民id查询最后一次访问的网格信息
* @Date 2020/3/24 13:09
**/
@GetMapping("getLatestGridInfoByUserId/{userId}")
public Result<LatestGridInfoResultDTO> getLatestGridInfoByUserId(@PathVariable("userId") String userId){
return gridLatestService.getLatestGridInfoByUserId(userId);
}
}

12
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GridLatestDao.java

@ -19,6 +19,7 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.GridLatestDTO;
import com.epmet.dto.result.LatestGridInfoResultDTO;
import com.epmet.entity.GridLatestEntity;
import org.apache.ibatis.annotations.Mapper;
@ -32,4 +33,13 @@ import org.apache.ibatis.annotations.Mapper;
public interface GridLatestDao extends BaseDao<GridLatestEntity> {
GridLatestEntity getGridLatestByIds(GridLatestDTO formDTO);
}
/**
* @return com.epmet.dto.result.LatestGridInfoResultDTO
* @param userId
* @Author yinzuomei
* @Description 根据居民id查询最后一次访问的网格信息
* @Date 2020/3/24 13:17
**/
LatestGridInfoResultDTO selectLatestGridInfoByUserId(String userId);
}

14
epmet-user/epmet-user-server/src/main/java/com/epmet/service/GridLatestService.java

@ -19,9 +19,11 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.GridLatestDTO;
import com.epmet.dto.form.VisitedFormDTO;
import com.epmet.dto.result.LatestGridInfoResultDTO;
import com.epmet.entity.GridLatestEntity;
import java.util.List;
@ -100,4 +102,14 @@ public interface GridLatestService extends BaseService<GridLatestEntity> {
* @param formDTO
*/
boolean saveGridLatest(VisitedFormDTO formDTO, CustomerGridDTO cu);
}
/**
* @param userId
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.LatestGridInfoResultDTO>
* @Author yinzuomei
* @Description 根据居民id查询最后一次访问的网格信息
* @Date 2020/3/24 13:10
**/
Result<LatestGridInfoResultDTO> getLatestGridInfoByUserId(String userId);
}

20
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GridLatestServiceImpl.java

@ -23,10 +23,13 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.GridVisitedConstant;
import com.epmet.dao.GridLatestDao;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.GridLatestDTO;
import com.epmet.dto.form.VisitedFormDTO;
import com.epmet.dto.result.LatestGridInfoResultDTO;
import com.epmet.entity.GridLatestEntity;
import com.epmet.redis.GridLatestRedis;
import com.epmet.service.GridLatestService;
@ -132,5 +135,18 @@ public class GridLatestServiceImpl extends BaseServiceImpl<GridLatestDao, GridLa
}
}
/**
* @param userId
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.LatestGridInfoResultDTO>
* @Author yinzuomei
* @Description 根据居民id查询最后一次访问的网格信息
* @Date 2020/3/24 13:10
**/
@Override
public Result<LatestGridInfoResultDTO> getLatestGridInfoByUserId(String userId) {
if(StringUtils.isBlank(userId)){
return new Result<LatestGridInfoResultDTO>().error(GridVisitedConstant.USER_ID_NOTNULL);
}
return new Result<LatestGridInfoResultDTO>().ok(baseDao.selectLatestGridInfoByUserId(userId));
}
}

16
epmet-user/epmet-user-server/src/main/resources/mapper/GridLatestDao.xml

@ -49,4 +49,18 @@
</if>
</select>
</mapper>
<!-- 根据居民id查询最后一次访问的网格信息 -->
<select id="selectLatestGridInfoByUserId" resultType="com.epmet.dto.result.LatestGridInfoResultDTO" parameterType="java.lang.String">
SELECT
gl.GRID_ID,
gl.CUSTOMER_ID
FROM
grid_latest gl
WHERE
gl.DEL_FLAG = '0'
AND gl.CUSTOMER_USER_ID = #{userId}
ORDER BY
gl.LATEST_TIME DESC
LIMIT 1
</select>
</mapper>

Loading…
Cancel
Save