Explorar o código

自定义热点logo模块

wuweihao %!s(int64=3) %!d(string=hai) anos
pai
achega
ed9fdaa903

+ 2 - 2
720yun_fd_consumer/pom.xml

@@ -24,13 +24,13 @@
         <spring.boot.version>2.1.0.RELEASE</spring.boot.version>
         <spring.boot.version>2.1.0.RELEASE</spring.boot.version>
         <gis.version>1.0.0</gis.version>
-        <fastjson.version>1.2.51</fastjson.version>
+        <fastjson.version>1.2.75</fastjson.version>
         <druid.version>1.1.14</druid.version>
         <hutool.version>5.3.3</hutool.version>
         <lombok.version>1.18.2</lombok.version>
         <lang3.version>3.7</lang3.version>
         <mysql.version>8.0.15</mysql.version>
-        <shiro.version>1.4.0</shiro.version>
+        <shiro.version>1.3.2</shiro.version>
         <jwt.version>3.2.0</jwt.version>
         <jjwt.version>0.6.0</jjwt.version>
         <aliyun.core.version>4.0.3</aliyun.core.version>

+ 2 - 2
720yun_fd_manage/gis_application/src/main/resources/application-loc.properties

@@ -91,13 +91,13 @@ swagger.version=1.0
 
 
 #log
-logging.path=E:/javaProject/${project.name}_log
+logging.path=E:/log/${project.name}_log
 logging.config=classpath:logback-spring.xml
 logging.level.com.gis=debug
 
 
 # file info
-server.file.path=F:\\test\\ngin\\${project.name}_data\\
+server.file.path=E:\\data\\${project.name}_data\\
 server.domain=
 
 

+ 3 - 0
720yun_fd_manage/gis_application/src/main/resources/application.properties

@@ -3,6 +3,9 @@ spring.profiles.active=loc
 
 # \uFFFD\uFFFD\u013F\uFFFD\uFFFD\uFFFD\uFFFD
 project.name=720yun_fd_manage
+# redis token \u524D\u7F00; \u56DB\u7EF4\u770B\u770Btoken\u524D\u7F00\uFF1Atoken#
+#redis.token.prefix=${project.en}_token_
+redis.token.prefix=token#
 
 # \uFFFD\uFFFD\u032C\uFFFD\uFFFD\u0534\uFFFD\uFFFD\uFFFD\uFFFD\u00B7\uFFFD\uFFFD
 spring.resources.static-locations=classpath:templates/,classpath:static/,classpath:web/

+ 12 - 1
720yun_fd_manage/gis_common/pom.xml

@@ -80,12 +80,23 @@
             <artifactId>commons-lang3</artifactId>
         </dependency>
 
+
         <!-- shiro -->
         <dependency>
             <groupId>org.apache.shiro</groupId>
             <artifactId>shiro-spring</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.apache.shiro</groupId>
+            <artifactId>shiro-core</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.shiro</groupId>
+            <artifactId>shiro-web</artifactId>
+        </dependency>
+
 
         <!-- jwt -->
         <dependency>
@@ -98,7 +109,7 @@
             <artifactId>jjwt</artifactId>
         </dependency>
 
-        <!--aliyun sdk-->
+        <!--AliYun sdk-->
         <dependency>
             <groupId>com.aliyun</groupId>
             <artifactId>aliyun-java-sdk-core</artifactId>

+ 57 - 0
720yun_fd_manage/gis_common/src/main/java/com/gis/common/config/MyRedisConfig.java

@@ -0,0 +1,57 @@
+package com.gis.common.config;
+
+import com.alibaba.fastjson.support.spring.FastJsonRedisSerializer;
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+/**
+ * Created by owen on 2021/7/16 0016 17:21
+ *
+ * redis 全局序列化
+ * redis管理界面可以看到参数
+ * 对象序列化有字段泛型字段值不丢失
+ *
+ * 不序列化有机会拿不到redis数据
+ */
+
+@Configuration
+public class MyRedisConfig {
+
+
+
+        @Bean
+        public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
+            RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
+            redisTemplate.setConnectionFactory(connectionFactory);
+
+            // 使用Jackson2JsonRedisSerialize替换默认序列化
+            Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
+
+            ObjectMapper objectMapper = new ObjectMapper();
+            objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+            objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+
+            jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
+
+            // 设置key和value的序列化规则
+            redisTemplate.setKeySerializer(new StringRedisSerializer());
+            redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
+            redisTemplate.setHashKeySerializer(new StringRedisSerializer());
+            redisTemplate.setHashValueSerializer(new StringRedisSerializer());
+            redisTemplate.setValueSerializer(new FastJsonRedisSerializer<>(Object.class));
+
+            redisTemplate.afterPropertiesSet();
+
+            return redisTemplate;
+
+        }
+
+
+}

+ 4 - 0
720yun_fd_manage/gis_common/src/main/java/com/gis/common/constant/ConfigConstant.java

@@ -59,6 +59,10 @@ public class ConfigConstant {
     @Value("${domain.4dkk}")
     public  String domain4dKK;
 
+    /**redis token前缀*/
+    @Value("${redis.token.prefix}")
+    public  String redisTokenPrefix;
+
 
 
 

+ 53 - 0
720yun_fd_manage/gis_common/src/main/java/com/gis/common/util/FileUtils.java

@@ -266,6 +266,59 @@ public class FileUtils {
     }
 
 
+    /**
+     * 文件流上传,不存本地服务器,直接上传oss
+     * @param file
+     * @param ossBasePath
+     * @param ossDomain
+     * @param dirPath oss目录 结束需要带斜杠
+     * @return
+     */
+    public Map<String, Object> renameUploadOssBye(MultipartFile file, String ossBasePath, String ossDomain, String dirPath)  {
+
+        if (file == null) {
+            log.error("文件不能为空");
+            return null;
+        }
+
+        long size = file.getSize();
+        log.info("文件大小:" + size );
+        log.info("文件大小:" + (size/1000) + "kb");
+
+
+        String time = DateUtil.format(new Date(), "yyyyMMdd_HHmmssSSS");
+
+        String fileName = file.getOriginalFilename();
+        log.info("上传的文件名:" + fileName);
+
+
+        String suffix = StringUtils.substringAfterLast(fileName, ".");
+        String newName = time  + "."  +suffix;
+
+        // 上传oss
+        String ossPath;
+        if (dirPath != null) {
+            ossPath = ossBasePath + dirPath + newName;
+        } else {
+            ossPath = ossBasePath + newName;
+        }
+        try {
+            aliyunOssUtil.upload(file.getBytes(), ossPath);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        String ossUrl = ossDomain + ossPath;
+        log.info("ossUrl: {}", ossUrl);
+        HashMap<String, Object> result = new HashMap<>();
+        result.put("fileName", fileName);
+        result.put("ossUrl", ossUrl);
+
+        return result;
+
+    }
+
+
 
 
 

+ 158 - 0
720yun_fd_manage/gis_common/src/main/java/com/gis/common/util/RedisUtil.java

@@ -0,0 +1,158 @@
+package com.gis.common.util;
+
+import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Created by owen on 2021/7/9 0009 14:32
+ */
+@Component
+public class RedisUtil {
+
+//    @Autowired
+    @Resource
+    private RedisTemplate<String, Object> redisTemplate;
+
+
+    /**
+     * 普通缓存放入并设置时间
+     *
+     * @param key   键
+     * @param value 值
+     * @param time  时间(秒) time要大于0 如果time小于等于0 将设置无限期
+     * @return true成功 false 失败
+     */
+    public boolean set(String key, Object value, long time) {
+        try {
+            if (time > 0) {
+                redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
+            } else {
+                set(key, value);
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+
+
+    /**
+     * 普通缓存放入
+     *
+     * @param key   键
+     * @param value 值
+     * @return true成功 false失败
+     */
+    public boolean set(String key, Object value) {
+        try {
+            redisTemplate.opsForValue().set(key, value);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+
+    }
+
+    /**
+     * 删除缓存
+     *
+     * @param key 可以传一个值 或多个
+     */
+    @SuppressWarnings("unchecked")
+    public void del(String... key) {
+        if (key != null && key.length > 0) {
+            if (key.length == 1) {
+                redisTemplate.delete(key[0]);
+            } else {
+                redisTemplate.delete(CollectionUtils.arrayToList(key));
+            }
+        }
+    }
+
+
+    /**
+     * 普通缓存获取
+     *
+     * @param key 键
+     * @return 值
+     */
+    public Object get(String key) {
+        return key == null ? null : redisTemplate.opsForValue().get(key);
+    }
+
+
+    /**
+     * list to JSON
+     * @param key
+     * @param value
+     * @param time
+     * @return
+     */
+    public boolean setObjectToJson(String key, Object value, long time) {
+        try {
+            redisTemplate.opsForValue().set(key, JSON.toJSONString(value), time, TimeUnit.SECONDS);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+
+    /**
+     * json to list
+     * @param key
+     * @param classType
+     * @return
+     */
+    public List getJsonList(String key, Class classType) {
+        try {
+            String o = (String)get(key);
+            if (o == null) {
+                return null;
+            }
+            JSONArray objects = JSONArray.parseArray(o);
+            List list = objects.toJavaList(classType);
+            return list;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public Set<Object> getJsonSet(String key) {
+        try {
+            String o = (String)get(key);
+            if (o == null) {
+                return null;
+            }
+            JSONArray array = JSONArray.parseArray(o);
+            Set<Object> set = CollUtil.newHashSet(array);
+            return set;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 判断redis key是否存在
+     * @param key
+     * @return true:存在
+     */
+    public Boolean hasKey(String key){
+        return redisTemplate.hasKey(key);
+    }
+}

+ 11 - 7
720yun_fd_manage/gis_common/src/main/java/com/gis/common/util/Result.java

@@ -6,6 +6,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
+import java.time.LocalDateTime;
 
 /**
  * 通用返回类
@@ -25,7 +26,7 @@ public class Result<T> implements Serializable {
     /**
      * 处理状态:0: 成功, 1: 失败
      */
-    @ApiModelProperty(value = "处理状态:0: 成功, 1: 失败", name = "code")
+    @ApiModelProperty(value = "处理状态:0: 成功, -1: 失败", name = "code")
     private int code;
     /**
      * 消息
@@ -37,6 +38,9 @@ public class Result<T> implements Serializable {
      */
     @ApiModelProperty(value = "返回数据", name = "data")
     private T data;
+
+    @ApiModelProperty(value = "时间戳", name = "timestamp")
+    private LocalDateTime timestamp;
     /**
      * 处理成功,并返回数据
      *
@@ -44,7 +48,7 @@ public class Result<T> implements Serializable {
      * @return data
      */
     public static Result success(Object data) {
-        return new Result(CODE_SUCCESS, SUCCESS_MSG, data);
+        return new Result(CODE_SUCCESS, SUCCESS_MSG, data, LocalDateTime.now());
     }
     /**
      * 处理成功
@@ -52,7 +56,7 @@ public class Result<T> implements Serializable {
      * @return data
      */
     public static Result success() {
-        return new Result(CODE_SUCCESS, SUCCESS_MSG, NOOP);
+        return new Result(CODE_SUCCESS, SUCCESS_MSG, NOOP, LocalDateTime.now());
     }
     /**
      * 处理成功
@@ -61,7 +65,7 @@ public class Result<T> implements Serializable {
      * @return data
      */
     public static Result success(String msg) {
-        return new Result(CODE_SUCCESS, msg, NOOP);
+        return new Result(CODE_SUCCESS, msg, NOOP, LocalDateTime.now());
     }
     /**
      * 处理成功
@@ -71,7 +75,7 @@ public class Result<T> implements Serializable {
      * @return data
      */
     public static Result success(String msg, Object data) {
-        return new Result(CODE_SUCCESS, msg, data);
+        return new Result(CODE_SUCCESS, msg, data, LocalDateTime.now());
     }
     /**
      * 处理失败,并返回数据(一般为错误信息)
@@ -81,7 +85,7 @@ public class Result<T> implements Serializable {
      * @return data
      */
     public static Result failure(int code, String msg) {
-        return new Result(code, msg, NOOP);
+        return new Result(code, msg, NOOP , LocalDateTime.now());
     }
     /**
      * 处理失败
@@ -96,6 +100,6 @@ public class Result<T> implements Serializable {
     @Override
     public String toString() {
         return "JsonResult [code=" + code + ", msg=" + msg + ", data="
-                + data + "]";
+                + data + ", timestamp="+ timestamp + "]";
     }
 }

+ 56 - 0
720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/entity/IconEntity.java

@@ -0,0 +1,56 @@
+package com.gis.domain.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import java.io.Serializable;
+
+/**
+ * 热点图标
+ */
+
+@Data
+@Table(name = "tb_icon")
+public class IconEntity extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 2744429162237851630L;
+//    @ApiModelProperty(value = "名称")
+//    private String name;
+
+//    @ApiModelProperty(value = "存放地址")
+//    private String filePath;
+
+    @ApiModelProperty(value = "oss存放地址")
+    private String ossPath;
+
+//    @ApiModelProperty(value = "状态 1:切图中, 2:失败, 3:完成")
+//    private Integer status;
+
+//    @ApiModelProperty(value = "类型, 全景图:pano, 图片:image, 音频:audio, 视频:video")
+//    private String type;
+
+//    @ApiModelProperty(value = "创建人")
+//    private String userId;
+
+//    @ApiModelProperty(value = "封面图")
+//    private String icon;
+
+//    @ApiModelProperty(value = "预览图(全景图使用)")
+//    private String previewIcon;
+
+    @ApiModelProperty(value = "文件名")
+    private String fileName;
+
+
+
+
+
+
+
+
+
+
+}

+ 23 - 0
720yun_fd_manage/gis_mapper/src/main/java/com/gis/mapper/IconMapper.java

@@ -0,0 +1,23 @@
+package com.gis.mapper;
+
+
+import com.gis.domain.entity.FodderEntity;
+import com.gis.domain.entity.IconEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Component;
+
+
+
+@Component
+@Mapper
+public interface IconMapper extends IBaseMapper<IconEntity, Long> {
+
+
+
+//    @SelectProvider(type = FodderProvider.class, method = "searchPano")
+//    List<FodderEntity> searchPano(PageDto param, String userId);
+//
+//    @SelectProvider(type = FodderProvider.class, method = "checkStatus")
+////    @Select("select * from tb_fodder where is_delete = 0 and user_id = #{userId} AND id in #{ids}")
+//    List<FodderEntity> checkStatus(String ids, String userId);
+}

+ 32 - 0
720yun_fd_manage/gis_service/src/main/java/com/gis/service/IconService.java

@@ -0,0 +1,32 @@
+package com.gis.service;
+
+
+import com.gis.common.util.Result;
+import com.gis.domain.dto.FodderPageDto;
+import com.gis.domain.dto.PageDto;
+import com.gis.domain.entity.FodderEntity;
+import com.gis.domain.entity.IconEntity;
+import org.springframework.web.multipart.MultipartFile;
+
+
+/**
+ * Created by owen on 2020/3/11 0011 16:14
+ */
+public interface IconService extends IBaseService<IconEntity, Long> {
+    Result upload(MultipartFile file);
+
+
+//    Result upload2(MultipartFile file, String type) ;
+//
+//    Result upload(MultipartFile file, String type, String tempId) ;
+//
+//    Result search(FodderPageDto param);
+//
+//    Result selectFodderPano(PageDto param, Long workId);
+//
+//
+//
+//    Result checkStatus(String ids);
+
+
+}

+ 57 - 0
720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/IconServiceImpl.java

@@ -0,0 +1,57 @@
+package com.gis.service.impl;
+
+import com.gis.common.constant.ConfigConstant;
+import com.gis.common.util.*;
+import com.gis.domain.entity.IconEntity;
+import com.gis.mapper.IBaseMapper;
+import com.gis.mapper.IconMapper;
+import com.gis.service.IconService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Map;
+
+
+/**
+ * Created by owen on 2021/11/08 0011 16:16
+ */
+@Slf4j
+@Service
+public class IconServiceImpl extends IBaseServiceImpl<IconEntity, Long> implements IconService {
+
+    @Autowired
+    private IconMapper entityMapper;
+
+
+
+    @Autowired
+    ConfigConstant configConstant;
+
+    @Autowired
+    FileUtils fileUtils;
+
+    @Autowired
+    AliyunOssUtil aliyunOssUtil;
+
+
+    @Override
+    public IBaseMapper<IconEntity, Long> getBaseMapper() {
+        return this.entityMapper;
+    }
+
+
+    @Override
+    public Result upload(MultipartFile file) {
+        Map<String, Object>  map = fileUtils.renameUploadOssBye(file, configConstant.ossBasePath, configConstant.ossDomain, "icon/");
+        IconEntity entity = new IconEntity();
+        entity.setFileName((String) map.get("fileName"));
+        Object ossUrl = map.get("ossUrl");
+        entity.setOssPath(ossUrl.toString());
+
+        this.save(entity);
+
+        return Result.success(ossUrl);
+    }
+}

+ 67 - 0
720yun_fd_manage/gis_web/src/main/java/com/gis/web/controller/IconController.java

@@ -0,0 +1,67 @@
+package com.gis.web.controller;
+
+
+import com.gis.common.constant.MsgCode;
+import com.gis.common.util.Result;
+import com.gis.domain.dto.FodderDto;
+import com.gis.domain.dto.FodderPageDto;
+import com.gis.domain.dto.PageDto;
+import com.gis.domain.entity.FodderEntity;
+import com.gis.domain.entity.IconEntity;
+import com.gis.domain.entity.WorkEntity;
+import com.gis.service.FodderService;
+import com.gis.service.IconService;
+import com.gis.service.WorkService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.log4j.Log4j2;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * Created by owen on 2021/11/08 0018 12:17
+ */
+@Slf4j
+@Api(tags = "图标管理")
+@RestController
+@RequestMapping("manage/icon")
+public class IconController extends BaseController {
+
+    @Autowired
+    private IconService entityService;
+
+
+    @ApiOperation(value = "上传图标")
+    @PostMapping("upload")
+    public Result upload(MultipartFile file) {
+        return entityService.upload(file);
+    }
+
+
+    @ApiOperation(value = "列表")
+    @GetMapping("list")
+    public Result<IconEntity> list() {
+        return Result.success(entityService.findAll());
+    }
+
+
+        @ApiOperation(value = "详情")
+    @GetMapping("detail/{id}")
+    public Result<IconEntity> detail(@PathVariable Long id) {
+            IconEntity entity = entityService.findById(id);
+        if (entity == null) {
+            return Result.failure("对象不存在");
+        }
+        return Result.success(entity);
+    }
+
+
+
+}

+ 80 - 0
720yun_fd_manage/gis_web/src/main/java/com/gis/web/controller/LoginController.java

@@ -0,0 +1,80 @@
+package com.gis.web.controller;
+
+import com.gis.common.constant.ConfigConstant;
+import com.gis.common.util.RedisUtil;
+import com.gis.common.util.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDateTime;
+
+/**
+ * Created by owen on 2021/11/08 0019 15:53
+ * 公用四维看看登录体系,公用token, redisTokenKey:token#+token
+ *
+ */
+@Api(tags = "sys-登录")
+@RestController
+@Slf4j
+public class LoginController {
+
+
+
+    @Autowired
+    ConfigConstant configConstant;
+
+    @Resource
+    HttpServletRequest request;
+
+    @Autowired
+    RedisUtil redisUtil;
+
+
+
+
+    // 目前是24h
+    private static Integer TOKEN_EXPIRE = 1000 * 60 * 60 * 24;
+
+
+    @ApiOperation("退出")
+    @GetMapping("admin/logout")
+    public Result logout() {
+        String token = request.getHeader("token");
+        if (StringUtils.isBlank(token)) {
+            log.info("token is null");
+        }
+        redisUtil.del(configConstant.redisTokenPrefix + token);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "检查登录状态", notes = "true:已登录, false:已退出")
+    @GetMapping("admin/checkLogin")
+    public Result checkLogin() {
+        String token = request.getHeader("token");
+        if (StringUtils.isBlank(token)) {
+            log.info("token is null");
+        }
+        // 四维看看token key只能判断是否存在, 获取不到value
+        Boolean hasKey = redisUtil.hasKey(configConstant.redisTokenPrefix + token);
+        return Result.success(hasKey);
+    }
+
+
+    @ApiIgnore
+    @GetMapping("admin/test")
+    public String test(){
+        return LocalDateTime.now().toString();
+    }
+
+
+
+
+}

+ 14 - 2
720yun_fd_manage/pom.xml

@@ -32,13 +32,13 @@
         <java.version>1.8</java.version>
         <spring.boot.version>2.1.0.RELEASE</spring.boot.version>
         <gis.version>1.0.0</gis.version>
-        <fastjson.version>1.2.51</fastjson.version>
+        <fastjson.version>1.2.75</fastjson.version>
         <druid.version>1.1.14</druid.version>
         <hutool.version>5.3.3</hutool.version>
         <lombok.version>1.18.2</lombok.version>
         <lang3.version>3.7</lang3.version>
         <mysql.version>8.0.15</mysql.version>
-        <shiro.version>1.4.0</shiro.version>
+        <shiro.version>1.3.2</shiro.version>
         <jwt.version>3.2.0</jwt.version>
         <jjwt.version>0.6.0</jjwt.version>
         <aliyun.core.version>4.0.3</aliyun.core.version>
@@ -210,6 +210,18 @@
                 <version>${shiro.version}</version>
             </dependency>
 
+            <dependency>
+                <groupId>org.apache.shiro</groupId>
+                <artifactId>shiro-core</artifactId>
+                <version>${shiro.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.shiro</groupId>
+                <artifactId>shiro-web</artifactId>
+                <version>${shiro.version}</version>
+            </dependency>
+
 
             <!-- jwt -->
             <dependency>

+ 2 - 1
720yun_fd_manage/remark-m.md

@@ -70,5 +70,6 @@
 
     
 
- 
+# 开发进去
+    1. 2021-11-08  完成热点自定义logo开发、退出登录接口开发。其他接口待对接时开发