Ver código fonte

Merge remote-tracking branch 'origin/master'

523096025 11 meses atrás
pai
commit
37323357dc

+ 5 - 0
huimv-env-admin/pom.xml

@@ -148,6 +148,11 @@
             <version>2.1.7</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+
 
 
     </dependencies>

+ 32 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/config/RedisConfig.java

@@ -0,0 +1,32 @@
+package com.huimv.env.admin.config;
+
+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.GenericJackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.RedisSerializer;
+
+import java.net.UnknownHostException;
+
+@Configuration
+public class RedisConfig {
+    @Bean
+    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
+            throws UnknownHostException {
+        // 创建模板
+        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
+        // 设置连接工厂
+        redisTemplate.setConnectionFactory(redisConnectionFactory);
+        // 设置序列化工具
+        GenericJackson2JsonRedisSerializer jsonRedisSerializer =
+                new GenericJackson2JsonRedisSerializer();
+        // key和 hashKey采用 string序列化
+        redisTemplate.setKeySerializer(RedisSerializer.string());
+        redisTemplate.setHashKeySerializer(RedisSerializer.string());
+        // value和 hashValue采用 JSON序列化
+        redisTemplate.setValueSerializer(jsonRedisSerializer);
+        redisTemplate.setHashValueSerializer(jsonRedisSerializer);
+        return redisTemplate;
+    }
+}

+ 3 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/LoginController.java

@@ -109,10 +109,13 @@ public class LoginController {
             accessToken.setToken(token);
 
             accessToken.setId(id);
+            accessToken.setAvatarUrl(accountEntity.getAvatarUrl());
+            accessToken.setNickName(accountEntity.getNickName());
             accessToken.setLoginIp(remoteHost);
             accessToken.setType(accountEntity.getType());
             accessToken.setLat(farm.getLat());
             accessToken.setLng(farm.getLng());
+            accessToken.setWechatId(accountEntity.getWechatId());
             accessToken.setUserName(accountEntity.getUserName());
 
             return new Result(ResultCode.SUCCESS, accessToken);

+ 36 - 4
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/PortWarningInfoController.java

@@ -5,24 +5,26 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.env.admin.common.token.TokenSign;
 import com.huimv.env.admin.common.utils.Result;
 import com.huimv.env.admin.common.utils.ResultCode;
 import com.huimv.env.admin.entity.BasePigpen;
 import com.huimv.env.admin.entity.PortWarningInfo;
 import com.huimv.env.admin.entity.Terminal;
-import com.huimv.env.admin.entity.vo.WarningPageParam;
-import com.huimv.env.admin.entity.vo.WarningTotalByLocationIdParam;
-import com.huimv.env.admin.entity.vo.WarningTotalResult;
+import com.huimv.env.admin.entity.vo.*;
 import com.huimv.env.admin.mapper.TerminalMapper;
 import com.huimv.env.admin.mapper.TerminalPortMapper;
 import com.huimv.env.admin.service.IBasePigpenService;
 import com.huimv.env.admin.service.IPortWarningInfoService;
 import com.huimv.env.admin.service.ITerminalService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -46,15 +48,18 @@ public class PortWarningInfoController {
     private TerminalMapper terminalMapper;
     @Autowired
     private IBasePigpenService basePigpenService;
+    @Autowired
+    private RedisTemplate redisTemplate;
 
     @PostMapping("/page")
-    public Result page(@RequestBody WarningPageParam warningPageParam){
+    public Result page(HttpServletRequest httpServletRequest,@RequestBody WarningPageParam warningPageParam){
         String startTime = warningPageParam.getStartTime();
         String endTime = warningPageParam.getEndTime();
         if (ObjectUtil.isNotEmpty(startTime)){
             startTime = startTime + " 00:00:00";
             endTime = endTime + " 23:59:59";
         }
+        Integer userId = TokenSign.getMemberIdByJwtToken(httpServletRequest);
         Page<PortWarningInfo> page = new Page<>(warningPageParam.getPageNum(),warningPageParam.getPageSize());
         LambdaQueryWrapper<PortWarningInfo> queryWrapper = new QueryWrapper<PortWarningInfo>().lambda()
                 .eq(PortWarningInfo::getFarmId,warningPageParam.getFarmId())
@@ -69,8 +74,35 @@ public class PortWarningInfoController {
             queryWrapper.in(PortWarningInfo::getLocationId,buildIds);
         }
         Page<PortWarningInfo> warningInfoPage = portWarningInfoService.page(page, queryWrapper);
+        List<PortWarningInfo> records = warningInfoPage.getRecords();
+        for (PortWarningInfo record : records) {
+            if (!redisTemplate.opsForSet().isMember("User:"+userId+":read",record.getId())) {
+                record.setIsRead(0);
+            }else {
+                record.setIsRead(1);
+            }
+        }
+        warningInfoPage.setRecords(records);
         return new Result(ResultCode.SUCCESS,warningInfoPage);
     }
 
+    @PostMapping("/read")
+    public Result read(HttpServletRequest httpServletRequest, @RequestBody WarningReadParam warningReadParam){
+        Integer userId = TokenSign.getMemberIdByJwtToken(httpServletRequest);
+        Integer warningId = warningReadParam.getWarningId();
+        redisTemplate.opsForSet().add("User:"+userId+":read",warningId);
+        return Result.SUCCESS();
+    }
+
+    @PostMapping("/unReadCount")
+    public Result unReadCount(HttpServletRequest httpServletRequest, @RequestBody WarningUnReadCountParam warningUnReadCountParam){
+        Integer userId = TokenSign.getMemberIdByJwtToken(httpServletRequest);
+        Integer farmId = warningUnReadCountParam.getFarmId();
+        int count = portWarningInfoService.count(new QueryWrapper<PortWarningInfo>().lambda().eq(PortWarningInfo::getFarmId,farmId));
+        Set<Integer> members = redisTemplate.opsForSet().members("User:" + userId + ":read");
+        int size = members.size();
+        return new Result(ResultCode.SUCCESS,count - size);
+    }
+
 
 }

+ 95 - 1
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/SysAccountMultilevelController.java

@@ -11,6 +11,7 @@ import com.huimv.env.admin.entity.AccountGroup;
 import com.huimv.env.admin.entity.BaseFarm;
 import com.huimv.env.admin.entity.Farm;
 import com.huimv.env.admin.entity.SysAccountMultilevel;
+import com.huimv.env.admin.mapper.SysAccountMultilevelMapper;
 import com.huimv.env.admin.service.IAccountGroupService;
 import com.huimv.env.admin.service.IBaseFarmService;
 import com.huimv.env.admin.service.ISysAccountGroupService;
@@ -20,7 +21,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.util.UriComponentsBuilder;
 
 import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
@@ -44,6 +47,8 @@ public class SysAccountMultilevelController {
     private ISysAccountMultilevelService accountMultilevelService;
     @Autowired
     private IBaseFarmService farmService;
+    @Autowired
+    private SysAccountMultilevelMapper sysAccountMultilevelMapper;
 
     @Autowired
     private IAccountGroupService accountGroupService;
@@ -102,12 +107,14 @@ public class SysAccountMultilevelController {
         BaseFarm farm = farmService.getById(lastFarmId);
         String token = TokenSign.sign(sysAccountMultilevel.getAccount(), sysAccountMultilevel.getId(), sysAccountMultilevel.getFarmIds(), null, null,farm.getLng(),farm.getLat());
         accessToken.setToken(token);
-
+        accessToken.setNickName(sysAccountMultilevel.getNickName());
+        accessToken.setAvatarUrl(sysAccountMultilevel.getAvatarUrl());
         accessToken.setId(sysAccountMultilevel.getId());
         accessToken.setLoginIp(remoteHost);
         accessToken.setType(sysAccountMultilevel.getType());
         accessToken.setLat(farm.getLat());
         accessToken.setLng(farm.getLng());
+        accessToken.setWechatId(sysAccountMultilevel.getWechatId());
         accessToken.setUserName(sysAccountMultilevel.getUserName());
         return new Result(ResultCode.SUCCESS,accessToken);
 
@@ -189,4 +196,91 @@ public class SysAccountMultilevelController {
     public Result getDetail(HttpServletRequest httpServletRequest){
         return new Result(ResultCode.SUCCESS,accountMultilevelService.getById(TokenSign.getMemberIdByJwtToken(httpServletRequest)));
     }
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @GetMapping("/wechatLogin")
+    public String wechatLogin(@RequestParam(name = "js_code")String js_code){
+        //TODO 等一个AppID
+        String URL  = "https://api.weixin.qq.com/sns/jscode2session";
+        String appid  = "wx707fcfd7d09e02eb";
+        String secret  = "cf69d556bbc962fa60a59b0fece3fa95";
+        String grant_type  = "authorization_code";
+
+        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(URL)
+                .queryParam("appid", appid)
+                .queryParam("secret", secret)
+                .queryParam("grant_type", grant_type)
+                .queryParam("js_code", js_code);
+
+        String urlWithParams = builder.toUriString();
+
+        try {
+            String forObject = restTemplate.getForObject(urlWithParams, String.class);
+            System.out.println(forObject);
+            return forObject;
+        } catch (Exception e) {
+            // 处理异常,例如记录日志、返回错误信息等
+            e.printStackTrace();
+            // 根据需要返回错误信息或处理逻辑
+            System.out.println(e.getMessage());
+            return "Error occurred: " + e.getMessage();
+        }
+    }
+
+    @PostMapping("/saveWechat")
+    public Result saveWechat(HttpServletRequest request,@RequestBody Map<String,String> map){
+        String wechatId = map.get("wechatId");
+        String avatarUrl = map.get("avatarUrl");
+        String nickName = map.get("nickName");
+        String farmId = map.get("farmId");
+        String remoteHost = request.getRemoteHost();
+
+        BaseFarm farm = farmService.getById(farmId);
+
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        SysAccountMultilevel sysAccountMultilevel = sysAccountMultilevelMapper.selectById(userId);
+        sysAccountMultilevel.setWechatId(wechatId);
+        sysAccountMultilevel.setAvatarUrl(avatarUrl);
+        sysAccountMultilevel.setNickName(nickName);
+        sysAccountMultilevel.setSubscribe(0);
+        sysAccountMultilevelMapper.updateById(sysAccountMultilevel);
+
+        AccessToken accessToken = new AccessToken();
+        accessToken.setCreated(new Date());
+        accessToken.setAccountName(sysAccountMultilevel.getAccount());
+        accessToken.setFarmId(sysAccountMultilevel.getFarmIds());
+        accessToken.setLastFarmId(sysAccountMultilevel.getLastFarmId());
+        String token = TokenSign.sign(sysAccountMultilevel.getUserName(), userId, sysAccountMultilevel.getFarmIds(), null, null,farm.getLng(),farm.getLat());
+        accessToken.setToken(token);
+        accessToken.setNickName(sysAccountMultilevel.getNickName());
+        accessToken.setAvatarUrl(sysAccountMultilevel.getAvatarUrl());
+        accessToken.setId(sysAccountMultilevel.getId());
+        accessToken.setLoginIp(remoteHost);
+        accessToken.setType(sysAccountMultilevel.getType());
+        accessToken.setLat(farm.getLat());
+        accessToken.setLng(farm.getLng());
+        accessToken.setWechatId(wechatId);
+        accessToken.setUserName(sysAccountMultilevel.getUserName());
+        return Result.SUCCESS();
+    }
+    @PostMapping("/getSubscribe")
+    public Result getSubscribe(HttpServletRequest request){
+        Integer memberIdByJwtToken = TokenSign.getMemberIdByJwtToken(request);
+        SysAccountMultilevel sysAccountMultilevel = sysAccountMultilevelMapper.selectById(memberIdByJwtToken);
+        if (ObjectUtil.isNull(sysAccountMultilevel.getSubscribe())){
+            sysAccountMultilevel.setSubscribe(0);
+        }
+        sysAccountMultilevelMapper.updateById(sysAccountMultilevel);
+        return new Result(ResultCode.SUCCESS,sysAccountMultilevel.getSubscribe());
+    }
+    @PostMapping("/subscribe")
+    public Result subscribe(HttpServletRequest request){
+        Integer memberIdByJwtToken = TokenSign.getMemberIdByJwtToken(request);
+        SysAccountMultilevel sysAccountMultilevel = sysAccountMultilevelMapper.selectById(memberIdByJwtToken);
+        sysAccountMultilevel.setSubscribe(1);
+        sysAccountMultilevelMapper.updateById(sysAccountMultilevel);
+        return Result.SUCCESS();
+    }
 }

+ 3 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/entity/PortWarningInfo.java

@@ -68,5 +68,8 @@ public class PortWarningInfo implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" ,timezone = "GMT+8")
     private LocalDateTime createTime;
 
+    @TableField(exist = false)
+    private Integer isRead;
+
 
 }

+ 4 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/entity/SysAccountMultilevel.java

@@ -126,5 +126,9 @@ public class SysAccountMultilevel implements Serializable {
 
     private String lat;
 
+    private Integer subscribe;
 
+    private String avatarUrl;
+
+    private String nickName;
 }

+ 1 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/entity/vo/TerminalPortConfigParam.java

@@ -4,6 +4,7 @@ import com.huimv.env.admin.entity.TerminalPort;
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
+import java.nio.ByteBuffer;
 import java.util.List;
 
 @Data

+ 24 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/entity/vo/WarningAppPageParam.java

@@ -0,0 +1,24 @@
+package com.huimv.env.admin.entity.vo;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+public class WarningAppPageParam {
+    private Integer warningType;
+
+    private Integer locationId;
+
+    private String startTime;
+
+    private String endTime;
+
+    private Integer farmId;
+
+    @NotNull(message = "pageNum不能为空")
+    private Integer pageNum;
+
+    @NotNull(message = "pageSize不能为空")
+    private Integer pageSize;
+}

+ 1 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/entity/vo/WarningPageParam.java

@@ -6,6 +6,7 @@ import javax.validation.constraints.NotNull;
 
 @Data
 public class WarningPageParam {
+    //
     private Integer warningType;
 
     private Integer locationId;

+ 8 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/entity/vo/WarningReadParam.java

@@ -0,0 +1,8 @@
+package com.huimv.env.admin.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class WarningReadParam {
+    private Integer warningId;
+}

+ 8 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/entity/vo/WarningUnReadCountParam.java

@@ -0,0 +1,8 @@
+package com.huimv.env.admin.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class WarningUnReadCountParam {
+    private Integer farmId;
+}

+ 27 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/session/AccessToken.java

@@ -23,6 +23,33 @@ public class AccessToken {
     private String userName;
     private String lng;
     private String lat;
+    private String avatarUrl;
+    private String nickName;
+    private String wechatId;
+
+    public String getWechatId() {
+        return wechatId;
+    }
+
+    public void setWechatId(String wechatId) {
+        this.wechatId = wechatId;
+    }
+
+    public String getAvatarUrl() {
+        return avatarUrl;
+    }
+
+    public void setAvatarUrl(String avatarUrl) {
+        this.avatarUrl = avatarUrl;
+    }
+
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
+    }
 
     public String getLng() {
         return lng;