shuhao 2 tuần trước cách đây
mục cha
commit
d1d644b5a7

+ 59 - 1
admin/pom.xml

@@ -63,6 +63,64 @@
             <version>1.18.1</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+            <version>${latest.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
+            <version>${latest.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+            <version>${latest.version}</version>
+        </dependency>
+
+        <!--feign远程接口调用-->
+        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign -->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+            <version>${latest.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
+            <version>${latest.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-dependencies</artifactId>
+            <version>${spring-cloud.version}</version>
+            <type>pom</type>
+            <scope>import</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dashscope-sdk-java</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-simple</artifactId>
+                </exclusion>
+            </exclusions>
+            <version>2.18.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.squareup.okhttp3</groupId>
+            <artifactId>okhttp</artifactId>
+            <version>3.14.9</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.8.9</version> <!-- 你可以根据需要选择其他版本 -->
+        </dependency>
+
     </dependencies>
 
     <build>
@@ -74,4 +132,4 @@
             </plugin>
         </plugins>
     </build>
-</project>
+</project>

+ 2 - 0
admin/src/main/java/com/flyer/foster/AdminApplication.java

@@ -3,6 +3,7 @@ package com.flyer.foster;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
 /**
@@ -13,6 +14,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
  */
 @SpringBootApplication(scanBasePackages = {"com.flyer"})
 @EnableScheduling
+@EnableFeignClients()
 public class AdminApplication {
     public static void main(String[] args) {
         SpringApplication.run(AdminApplication.class, args);

+ 0 - 1
admin/src/main/java/com/flyer/foster/config/CorsConfig.java

@@ -20,7 +20,6 @@ public class CorsConfig {
         config.addAllowedOrigin("*");
         config.addAllowedMethod("*");
         config.addAllowedHeader("*");
-        config.addExposedHeader("*");
         config.setAllowCredentials(true);
         UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
         corsConfigurationSource.registerCorsConfiguration("/**", config);

+ 90 - 0
admin/src/main/java/com/flyer/foster/config/feign/FeignConfig.java

@@ -0,0 +1,90 @@
+/*
+ * @(#)FeignConfig.java	2020年6月18日下午5:16:16
+ * Copyright All rights reserved.
+ */
+package com.flyer.foster.config.feign;
+import cn.dev33.satoken.stp.StpUtil;
+import com.flyer.foster.pojo.CheckUtil;
+import feign.Feign;
+import feign.Logger;
+import feign.RequestInterceptor;
+import feign.codec.Encoder;
+import feign.form.spring.SpringFormEncoder;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.ObjectFactory;
+import org.springframework.boot.autoconfigure.AutoConfigureBefore;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.cloud.openfeign.FeignAutoConfiguration;
+import org.springframework.cloud.openfeign.support.SpringEncoder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.context.annotation.Scope;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ *
+ * Feign自定义配置
+ * @author: wangyf
+ * @version: 1.0 Date: 2020年6月18日 下午5:16:16
+ */
+@Configuration
+@ConditionalOnClass(Feign.class)
+@AutoConfigureBefore(FeignAutoConfiguration.class)
+@Slf4j
+public class FeignConfig {
+
+    @Bean
+    public RequestInterceptor requestInterceptor() {
+        return requestTemplate -> {
+            ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
+            if (null != attributes) {
+                HttpServletRequest request = attributes.getRequest();
+                log.info("Feign request: {}", request.getRequestURI());
+                // 将token信息放入header中
+                requestTemplate.header(StpUtil.getTokenName(), request.getHeader(StpUtil.getTokenName()));
+                requestTemplate.header("appId", request.getHeader("appId"));
+                String key = request.getParameter("key");
+                if(StringUtils.isNotBlank(key)){
+                    requestTemplate.query("key",key);
+                }
+                requestTemplate.query("key", CheckUtil.key);
+            }else{
+                requestTemplate.query("key", CheckUtil.key);
+            }
+        };
+    }
+
+
+
+    /**
+     * Feign 客户端的日志记录,默认级别为NONE
+     * Logger.Level 的具体级别如下:
+     * NONE:不记录任何信息
+     * BASIC:仅记录请求方法、URL以及响应状态码和执行时间
+     * HEADERS:除了记录 BASIC级别的信息外,还会记录请求和响应的头信息
+     * FULL:记录所有请求与响应的明细,包括头信息、请求体、元数据
+     */
+    @Bean
+    Logger.Level feignLoggerLevel() {
+        return Logger.Level.FULL;
+    }
+
+    /**
+     * Feign支持文件上传
+     * @param messageConverters
+     * @return
+     */
+    @Bean
+    @Primary
+    @Scope("prototype")
+    public Encoder multipartFormEncoder(ObjectFactory<HttpMessageConverters> messageConverters) {
+        return new SpringFormEncoder(new SpringEncoder(messageConverters));
+    }
+}
+

+ 1 - 1
admin/src/main/java/com/flyer/foster/controller/OSSController.java

@@ -40,7 +40,7 @@ public class OSSController {
             IAcsClient client = new DefaultAcsClient(profile);
 
             AssumeRoleRequest request = new AssumeRoleRequest();
-            request.setDurationSeconds(3600l);
+            request.setDurationSeconds(3600L);
             request.setRoleArn("acs:ram::1359375599298722:role/ramosstest");
             request.setRoleSessionName("SessionTest");
 

+ 1 - 1
admin/src/main/java/com/flyer/foster/entity/Garden.java

@@ -24,7 +24,7 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-@TableName("tb_garden")
+@TableName("tb_farm")
 public class Garden implements Serializable {
 
     private static final long serialVersionUID = 1L;

+ 66 - 0
admin/src/main/java/generate/GenerateCode.java

@@ -0,0 +1,66 @@
+package generate;
+
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
+
+public class GenerateCode {
+
+    private static final String URL = "jdbc:mysql://106.53.222.208:3306/foster?serverTimezone=GMT%2B8&characterEncoding=utf-8";
+    private static final String USER_NAME = "foster";
+    private static final String PASSWORD = "tKLGm42dSzaaNJPK";
+    private static final String PROJECT_PATH = System.getProperty("user.dir");
+
+    // 表名
+    private static final String TABLE_NAME = "tb_farm_foster_code";
+    // 表前缀
+    private static final String TABLE_PREFIX = "";
+
+    // 指定包名
+    private static final String PACKAGE_NAME = "com.flyer.foster";
+
+    // 演示例子
+    public static void main(String[] args) {
+        System.out.println("当前处理的表 ------------- " + TABLE_NAME);
+        generateCode(TABLE_NAME);
+    }
+
+    private static void generateCode(String tableName){
+        // 数据源配置
+        DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(URL, USER_NAME, PASSWORD)
+                .build();
+
+        // 全局配置
+        GlobalConfig globalConfig = new GlobalConfig.Builder()
+                .outputDir(PROJECT_PATH + "/admin/src/main/java/")
+                .author("shuhao") // 生成文件的作者
+                .disableOpenDir() // 生成完成后是否打开目录
+                .build();
+
+        // 包配置
+        PackageConfig packageConfig = new PackageConfig.Builder()
+                .parent(PACKAGE_NAME) // 父包名
+                .entity("entity") // 实体类包名
+                .service("service")
+                .build();
+
+        // 策略配置
+        StrategyConfig strategyConfig = new StrategyConfig.Builder()
+                .addInclude(tableName) // 设置需要生成的表名
+                .addTablePrefix(TABLE_PREFIX) // 设置表名前缀
+                .entityBuilder()
+                .naming(NamingStrategy.underline_to_camel) // 数据库表字段映射到Java实体类属性名的策略
+                .enableLombok() // 是否使用Lombok注解
+                .build();
+
+
+        AutoGenerator generator = new AutoGenerator(dataSourceConfig)
+                .global(globalConfig)
+                .packageInfo(packageConfig)
+                .strategy(strategyConfig);
+
+        // 执行生成
+        generator.execute();
+    }
+}

+ 9 - 0
admin/src/main/resources/application-dev.yml

@@ -1,4 +1,10 @@
 spring:
+  cloud:
+    nacos:
+      discovery:
+        server-addr: nacos.sysuimars.cn
+        namespace: public
+        ip: 106.53.222.208
 #  datasource:
 #    type: com.zaxxer.hikari.HikariDataSource
 #    driver-class-name: com.mysql.cj.jdbc.Driver
@@ -33,6 +39,9 @@ mybatis-plus:
   configuration:
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 
+
+
+
 sa-token:
   # token 名称(同时也是 cookie 名称)
   token-name: token

+ 65 - 0
admin/src/main/resources/application-local.yml

@@ -0,0 +1,65 @@
+spring:
+  cloud:
+    nacos:
+      discovery:
+        server-addr: nacos.sysuimars.cn
+        namespace: local
+        ip: 127.0.0.1
+
+#  datasource:
+#    type: com.zaxxer.hikari.HikariDataSource
+#    driver-class-name: com.mysql.cj.jdbc.Driver
+#    url: jdbc:mysql://106.53.222.208:3306/foster?serverTimezone=GMT%2B8&characterEncoding=utf-8
+#    username: foster
+#    password: tKLGm42dSzaaNJPK
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://106.53.222.208:3306/foster?serverTimezone=GMT%2B8&characterEncoding=utf-8
+    username: foster
+    password: tKLGm42dSzaaNJPK
+    druid:
+      initial-size: 5
+      min-idle: 5
+      max-active: 20
+      max-wait: 30000
+      time-between-eviction-runs-millis: 60000
+      min-evictable-idle-time-millis: 300000
+      validation-query: SELECT 1 FROM DUAL
+      test-while-idle: true
+      test-on-borrow: false
+      test-on-return: false
+      pool-prepared-statements: true
+      max-pool-prepared-statement-per-connection-size: 20
+  redis:
+    password: flyer_foster
+    timeout: 20000
+    host: 106.53.222.208
+    database: 1
+mybatis-plus:
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+
+
+
+sa-token:
+  # token 名称(同时也是 cookie 名称)
+  token-name: token
+  is_read_cookie: false
+  # token 有效期(单位:秒) 默认30天,-1 代表永久有效
+  # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结
+  active-timeout: -1
+  # 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录)
+  is-concurrent: true
+  # 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token)
+  is-share: true
+  # token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)
+  token-style: uuid
+  # 是否输出操作日志
+  is-log: true
+  is-write-header: false
+
+use-local-private-key: true
+rsa-private-key: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIbvJIya52tj9POUUqqBPXQLuRXlkD+6afWC6ZX4Q3bSbmv+O+1BfFHdDoEuSsxydckTQckwQ5n+LQRC6pdldHpJxwaahMwOGQPS9XbrHy/7d6IIdkvG7+sv89W87kG2RrWXG8eaCBvxJHABOGf6q+N5PvwiL7gemba432qzoO1xAgMBAAECgYAWwDefZXbjioUAlN+jVAsyh897O6uosxuug5Yy7Rsi67QmjUU5abM2cllBurZt5lapwo9zBqo/SrX4Y/f98uNChHokiSKTq6EHoyqugu9Sckff1kJfkuTFxnNu0LFLnYlMb4NdMWB5S2PTyZh/GdvW48SMov1Yt+U5vjNCkfRiCQJBAMDnzHULgirBVYgg6osQwf18vln7MRddFHUb/201K6aNsoHXol86Mg72kERm+bDP9UdJ9x9Upd1stUE5GKqKbhsCQQCzEVaFISQe0fm4izUukxnDus45tlL0DGfqNzYVJzeK0C4b/Uh5LcPMp2ILZTkKovez8Hgp9nZDQx2m+wyNKptjAkBurI7BGDk2DnXkA/6MirDBnjAXr+YaYWy7Q7ToEvlYNTOVCwI9YEYYD531oJ7gsm8m12jQsN/4icX0Ba4BKirBAkEAgNK8V9Jb1gBhky4y+GrDYliF/Gb6jrBOIeXOdrFb9/WE9oXlGaie8CCLHH+Z5dkQMteQ2z+AHSuvrW12vigk2QJAIZDW6/EQmX4B2/w7MCCpNlJqwvUOrN2icbxC73hnjFvGgiRPkAxeSEiEi0Zk9QsYe1ljmRQn6vDyF64dbuUD7Q==
+rsa-public-key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCG7ySMmudrY/TzlFKqgT10C7kV5ZA/umn1gumV+EN20m5r/jvtQXxR3Q6BLkrMcnXJE0HJMEOZ/i0EQuqXZXR6SccGmoTMDhkD0vV26x8v+3eiCHZLxu/rL/PVvO5Btka1lxvHmggb8SRwAThn+qvjeT78Ii+4Hpm2uN9qs6DtcQIDAQAB

+ 2 - 0
admin/src/main/resources/application.yml

@@ -10,6 +10,8 @@ spring:
   mvc:
     async:
       request-timeout: 60000
+  application:
+    name: foster-api
 
 sa-token:
   # token 名称(同时也是 cookie 名称)

+ 1 - 1
admin/src/main/resources/mapper/AreaMapper.xml

@@ -19,7 +19,7 @@
                a.created_time as createdTime,
                a.updated_time as updatedTime
         from tb_area a
-                 inner join tb_garden b on a.garden_id = b.id
+                 inner join tb_farm b on a.garden_id = b.id
         where a.tenant_id = #{queryDTO.tenantId}
         <if test="queryDTO.gardenName!=null and queryDTO.gardenName!=''">
             and b.name like concat('%',#{queryDTO.gardenName},'%')

+ 1 - 1
admin/src/main/resources/mapper/FosterRecordMapper.xml

@@ -12,6 +12,6 @@
                b.name         as appUserName
         from tb_foster_record a
                  inner join tb_app_user b on a.app_user_id = b.id
-                 left join tb_garden c on a.garden_id = c.id
+                 left join tb_farm c on a.garden_id = c.id
     </select>
 </mapper>

+ 2 - 2
admin/src/main/resources/mapper/GardenMapper.xml

@@ -3,7 +3,7 @@
 <mapper namespace="com.flyer.foster.mapper.IGardenMapper">
 
     <delete id="deleteByIdList">
-        delete from tb_garden where id in
+        delete from tb_farm where id in
         <foreach collection="idList" item="id" open="(" separator="," close=")">
             #{id}
         </foreach>
@@ -24,7 +24,7 @@
                    end        as statusName,
                a.created_time as createdTime,
                a.updated_time as updatedTime
-        from tb_garden a
+        from tb_farm a
                  left join tb_user b on a.user_id = b.id
                  left join tb_world_map c on a.world_map_id = c.id
     </select>

+ 1 - 1
admin/src/main/resources/mapper/TreeMapper.xml

@@ -23,7 +23,7 @@
                a.updated_by                                        as updatedBy,
                a.updated_time                                      as updatedTime
         from tb_tree a
-                 left join tb_garden b on a.garden_id = b.id
+                 left join tb_farm b on a.garden_id = b.id
                  left join tb_area c on a.area_id = c.id
         <where>
             <if test="gardenId!=null">

+ 1 - 1
admin/src/main/resources/mysql/ddl/init-table.sql

@@ -112,7 +112,7 @@ create table tb_foster_record
 )
     comment '领养记录';
 
-create table tb_garden
+create table tb_farm
 (
     id                 int auto_increment comment '主键'
         primary key,

+ 2 - 2
common/src/main/java/com/flyer/util/GeoCastUtil.java

@@ -297,8 +297,8 @@ public class GeoCastUtil {
     // 假设的参数113.746646,22.970229
     private static final double REFERENCE_LATITUDE = 22.970229; // 参考点的纬度
     private static final double REFERENCE_LONGITUDE = 113.746646; // 参考点的经度
-    private static final double M_PER_PIXEL_X = 0.00001; // 每个像素的米数(x方向)
-    private static final double M_PER_PIXEL_Y = 0.00001; // 每个像素的米数(y方向)
+    private static final double M_PER_PIXEL_X = 0.001; // 每个像素的米数(x方向)
+    private static final double M_PER_PIXEL_Y = 0.001; // 每个像素的米数(y方向)
 
     public static Coordinate pixelToLatLng(double pixelX, double pixelY, double imageWidth, double imageHeight) {
         // 计算像素到米的转换

+ 5 - 2
pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.3.12.RELEASE</version>
+        <version>2.3.4.RELEASE</version>
         <relativePath/>
     </parent>
     <modelVersion>4.0.0</modelVersion>
@@ -35,6 +35,9 @@
         <satoken.version>1.37.0</satoken.version>
         <easyexcel.version>3.1.1</easyexcel.version>
         <druid.version>1.2.6</druid.version>
+        <latest.version>2.2.6.RELEASE</latest.version>
+        <!--添加springcloud版本-->
+        <spring-cloud.version>Hoxton.SR4</spring-cloud.version>
     </properties>
 
     <dependencyManagement>
@@ -115,4 +118,4 @@
             </dependency>
         </dependencies>
     </dependencyManagement>
-</project>
+</project>