Bladeren bron

气象数据对接

523096025 1 maand geleden
bovenliggende
commit
49398251fe
26 gewijzigde bestanden met toevoegingen van 410 en 12 verwijderingen
  1. 20 0
      app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/controller/QiXiangController.java
  2. 15 0
      app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/dto/QiXiangDto.java
  3. 57 0
      app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/entity/QiXiang.java
  4. 75 0
      app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/huicunutil/HuiCunDanDianController.java
  5. 16 0
      app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/mapper/QiXiangMapper.java
  6. 16 0
      app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/service/IQiXiangService.java
  7. 34 3
      app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/service/impl/HuiCunServiceImpl.java
  8. 20 0
      app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/service/impl/QiXiangServiceImpl.java
  9. 17 0
      app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/timer/HaiKangTimer.java
  10. 38 0
      app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/timer/QiXiangTimer.java
  11. 6 0
      app-admin/src/main/java/com/ruoyi/web/controller/system/HouseInfoController.java
  12. 15 0
      app-admin/src/main/java/com/ruoyi/web/controller/system/LotVideoController.java
  13. 1 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/person/PersonInfoAddRequest.java
  14. 1 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/person/PersonInfoEditRequest.java
  15. 2 0
      app-admin/src/main/java/com/ruoyi/web/domain/entity/HouseInfo.java
  16. 2 0
      app-admin/src/main/java/com/ruoyi/web/domain/entity/PersonInfo.java
  17. 1 0
      app-admin/src/main/java/com/ruoyi/web/domain/vo/HouseInfoByVo.java
  18. 1 1
      app-admin/src/main/java/com/ruoyi/web/domain/vo/PersonInfoVO.java
  19. 4 0
      app-admin/src/main/java/com/ruoyi/web/service/HouseInfoService.java
  20. 15 4
      app-admin/src/main/java/com/ruoyi/web/service/impl/HouseInfoServiceImpl.java
  21. 0 1
      app-admin/src/main/java/com/ruoyi/web/service/impl/PersonHouseRelationServiceImpl.java
  22. 21 0
      app-admin/src/main/resources/mapper/QiXiangMapper.xml
  23. 1 1
      app-admin/src/main/resources/mapper/web/PersonHouseRelationMapper.xml
  24. 1 1
      app-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
  25. 30 0
      app-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
  26. 1 1
      app-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java

+ 20 - 0
app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/controller/QiXiangController.java

@@ -0,0 +1,20 @@
+package com.ruoyi.web.controller.chenyanlogin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-09-29
+ */
+@RestController
+@RequestMapping("/qi-xiang")
+public class QiXiangController {
+
+}

+ 15 - 0
app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/dto/QiXiangDto.java

@@ -0,0 +1,15 @@
+package com.ruoyi.web.controller.chenyanlogin.dto;
+
+import com.ruoyi.web.controller.chenyanlogin.entity.QiXiang;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+public class QiXiangDto {
+    private int code;
+    private String msg;
+    private QiXiang data;
+
+
+}

+ 57 - 0
app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/entity/QiXiang.java

@@ -0,0 +1,57 @@
+package com.ruoyi.web.controller.chenyanlogin.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2025-09-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("qi_xiang")
+public class QiXiang implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String airTemperature;
+
+    private String airHumidity;
+
+    private String windSpeed;
+
+    private String windDirectionstr;
+
+    private String windDirection;
+
+    private String lightIntensity;
+
+    private String rainfall;
+
+    private String airp;
+
+    private String airPm25;
+
+    private String deviceId;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date time;
+
+
+}

+ 75 - 0
app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/huicunutil/HuiCunDanDianController.java

@@ -0,0 +1,75 @@
+package com.ruoyi.web.controller.chenyanlogin.huicunutil;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.framework.web.service.SysLoginService;
+import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.domain.SysUserRole;
+import com.ruoyi.system.mapper.SysUserRoleMapper;
+import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.web.controller.chenyanlogin.service.HuiCunService;
+import com.ruoyi.web.domain.entity.PersonInfo;
+import com.ruoyi.web.service.PersonInfoService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.ruoyi.common.core.domain.AjaxResult.error;
+
+@Api(tags ="慧村接口 同步")
+@RestController
+@RequestMapping("/huicun")
+public class HuiCunDanDianController {
+    @Autowired
+    private PersonInfoService personInfoService;
+    @Autowired
+    private ISysUserService sysUserService;
+
+    @Autowired
+    private SysLoginService loginService;
+
+
+    //基础数据查询接口
+    @ApiOperation("验证token")
+    @PostMapping("/verification")
+    public AjaxResult getBasicData(@RequestBody Map<String ,String> map){
+        String hcToken = map.get("hcToken");
+        
+        //TODO 手机号应该从hcTOken 中验证获取
+        String phone = "";
+        if ("1".equals(hcToken)){
+             phone = "13980669640";
+        }else {
+            phone = "15330094466";
+        }
+        
+        //逻辑,拿到手机号,实现登录,获取token ,然后去人员查类型
+
+        SysUser phonenumber = sysUserService.selectUserByPhone(phone);
+        if (ObjectUtil.isEmpty(phonenumber)){
+            return error("用户不存在");
+        }else{
+            AjaxResult ajax = AjaxResult.success();
+
+            String token = loginService.loginNoCaptcha(phonenumber.getUserName(),"admin123");
+            Map endMap = new HashMap();
+            endMap.put("token",token);
+            PersonInfo byId = personInfoService.getById(phonenumber.getUserId());
+            endMap.put("userType",byId.getUserType());
+            ajax.put(Constants.TOKEN, endMap);
+            return ajax;
+        }
+
+
+    }
+
+}

+ 16 - 0
app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/mapper/QiXiangMapper.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.controller.chenyanlogin.mapper;
+
+import com.ruoyi.web.controller.chenyanlogin.entity.QiXiang;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-09-29
+ */
+public interface QiXiangMapper extends BaseMapper<QiXiang> {
+
+}

+ 16 - 0
app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/service/IQiXiangService.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.controller.chenyanlogin.service;
+
+import com.ruoyi.web.controller.chenyanlogin.entity.QiXiang;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-09-29
+ */
+public interface IQiXiangService extends IService<QiXiang> {
+
+}

+ 34 - 3
app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/service/impl/HuiCunServiceImpl.java

@@ -7,7 +7,13 @@ import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.framework.web.service.SysLoginService;
+import com.ruoyi.system.domain.SysUserRole;
+import com.ruoyi.system.mapper.SysUserRoleMapper;
+import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.web.controller.chenyanlogin.ChengYanAesUtil;
 import com.ruoyi.web.controller.chenyanlogin.dto.*;
 import com.ruoyi.web.controller.chenyanlogin.dto.HouseVillagerRelation;
@@ -211,13 +217,20 @@ public class HuiCunServiceImpl implements HuiCunService {
         }
     }
 
+
+
     @Autowired
     private PersonInfoMapper personInfoMapper;
     @Autowired
     private TagsMapper tagsMapper;
     @Autowired
     private TagsPersonMapper tagsPersonMapper;
-
+    @Autowired
+    private ISysUserService sysUserService;
+    @Autowired
+    private SysUserRoleMapper sysUserRoleMapper;
+    @Autowired
+    private SysLoginService loginService;
     @Transactional
     public void saveVillager(SyncVillagerDataDto villageNewsDataDto) {
 
@@ -231,6 +244,7 @@ public class HuiCunServiceImpl implements HuiCunService {
         List<VillagerList> villagerList = villageNewsDataDto.getVillagerList();
         for (VillagerList list : villagerList) {
             PersonInfo personInfo = personInfoMapper.selectById(list.getId());
+            saveUser(personInfo.getPhone());
             if (ObjectUtil.isEmpty(personInfo)){
                 personInfo =  copyVillagerToPerson(personInfo,list);
                 personInfo.setId(list.getId());
@@ -241,10 +255,27 @@ public class HuiCunServiceImpl implements HuiCunService {
                 personInfoMapper.updateById(personInfo);
             }
         }
-
-
     }
 
+    private void  saveUser(String phone){
+        SysUser phonenumber = sysUserService.selectUserByPhone(phone);
+        if (ObjectUtil.isEmpty(phonenumber)){
+            phonenumber  = new SysUser();
+            phonenumber.setUserName(phone);
+            phonenumber.setPhonenumber(phone);
+            phonenumber.setNickName("测试");
+            phonenumber.setSex("0");
+            phonenumber.setPassword("$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2");
+            sysUserService.registerUser(phonenumber);
+            SysUserRole sysUserRole = new SysUserRole();
+            sysUserRole.setRoleId(4L);
+            SysUser sysUser = sysUserService.selectUserByPhone(phone);
+            sysUserRole.setUserId(sysUser.getUserId());
+            List list = new ArrayList();
+            list.add(sysUserRole);
+            sysUserRoleMapper.batchUserRole(list);
+        }
+    }
     private void saveVillagerTag(List<VillagerTagList> villagerTagList) {
         if (ObjectUtil.isNotEmpty(villagerTagList)){
             for (VillagerTagList list : villagerTagList) {

+ 20 - 0
app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/service/impl/QiXiangServiceImpl.java

@@ -0,0 +1,20 @@
+package com.ruoyi.web.controller.chenyanlogin.service.impl;
+
+import com.ruoyi.web.controller.chenyanlogin.entity.QiXiang;
+import com.ruoyi.web.controller.chenyanlogin.mapper.QiXiangMapper;
+import com.ruoyi.web.controller.chenyanlogin.service.IQiXiangService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-09-29
+ */
+@Service
+public class QiXiangServiceImpl extends ServiceImpl<QiXiangMapper, QiXiang> implements IQiXiangService {
+
+}

+ 17 - 0
app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/timer/HaiKangTimer.java

@@ -34,6 +34,9 @@ public class HaiKangTimer {
    private  String camerList =  "/api/resource/v1/camera/advance/cameraList";
     private  String  cameras =  "/api/resource/v1/cameras/indexCode";
 //   private  String  =  "/api/resource/v1/camera/advance/cameraList";
+    //获取传感器
+   private  String  search =  "/api/pems/v1/monitor/search";
+
     //获取所有监控
     @Transactional
     @Scheduled(cron = "0 0 0 * * ? ")
@@ -88,6 +91,20 @@ public class HaiKangTimer {
         }
     }
 
+    //获取传感器
+    @Scheduled(cron = "0 0 0 * * ? ")
+//    @Scheduled(cron = "0 * * * * ? ")
+    public  void search() throws Exception {
+        JSONObject jsonBody = new JSONObject();
+        jsonBody.put("pageNo",  1);
+        jsonBody.put("pageSize",  10000);
+        String body = jsonBody.toJSONString();
+        String getCameraPreviewURL = GetCameraPreviewURL.GetCameraPreviewURL(search, body);
+        CameraStatusResponse cameraResponse = JSON.parseObject(getCameraPreviewURL, CameraStatusResponse.class);
+        if (ObjectUtil.isNotEmpty(cameraResponse) && "0".equals(cameraResponse.getCode())){
+            System.out.println(cameraResponse);
+        }
+    }
 
 
 }

+ 38 - 0
app-admin/src/main/java/com/ruoyi/web/controller/chenyanlogin/timer/QiXiangTimer.java

@@ -0,0 +1,38 @@
+package com.ruoyi.web.controller.chenyanlogin.timer;
+
+import com.ruoyi.web.controller.chenyanlogin.dto.QiXiangDto;
+import com.ruoyi.web.controller.chenyanlogin.entity.QiXiang;
+import com.ruoyi.web.controller.chenyanlogin.service.IQiXiangService;
+import com.ruoyi.web.domain.entity.LotVideo;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.ResponseEntity;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.List;
+
+
+@Configuration
+@EnableScheduling
+@CrossOrigin
+public class QiXiangTimer {
+    @Autowired
+    private IQiXiangService qiXiangService;
+    @Autowired
+    private RestTemplate restTemplate;
+
+    //获取气象数据
+    @Scheduled(cron = "0 0/10 * * * ? ")
+    public  void statusCamerList() throws Exception {
+        ResponseEntity<QiXiangDto> forEntity = restTemplate.getForEntity("https://yun-api.bigdata5s.com/open-api/open/weather/getCurrentDeviceData?username=18802880368&password=123456&deviceId=1965660599109943299", QiXiangDto.class);
+        if (forEntity.getBody().getCode() == 200){
+            qiXiangService.save(forEntity.getBody().getData());
+        }
+    }
+
+
+}

+ 6 - 0
app-admin/src/main/java/com/ruoyi/web/controller/system/HouseInfoController.java

@@ -124,4 +124,10 @@ public class HouseInfoController {
     public AjaxResult getHouseInfoBy(@RequestBody Map<String ,Integer> map ) {
         return success(houseInfoService.getHouseInfoBy(map.get("id")));
     }
+    @ApiOperation("存geoData")
+    @PutMapping("/saveGeoData")
+    public AjaxResult saveGeoData(@RequestBody Map<String ,Object> map ) {
+        houseInfoService.saveGeoData(map);
+        return success();
+    }
 }

+ 15 - 0
app-admin/src/main/java/com/ruoyi/web/controller/system/LotVideoController.java

@@ -13,6 +13,7 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.web.controller.chenyanlogin.haikang.CameraInfo;
 import com.ruoyi.web.controller.chenyanlogin.haikang.CameraResponse;
+import com.ruoyi.web.controller.chenyanlogin.haikang.CameraStatusResponse;
 import com.ruoyi.web.controller.chenyanlogin.timer.GetCameraPreviewURL;
 import com.ruoyi.web.domain.dto.lotVideo.LotVideoAddRequest;
 import com.ruoyi.web.domain.dto.lotVideo.LotVideoEditRequest;
@@ -23,6 +24,7 @@ import com.ruoyi.web.service.LotVideoService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.*;
 
 import javax.xml.crypto.Data;
@@ -41,11 +43,13 @@ public class LotVideoController {
 
     @Autowired
     private LotVideoService lotVideoService;
+
     private  String camerList =  "/api/resource/v1/camera/advance/cameraList";
     private  String previewURLs =  "/api/video/v2/cameras/previewURLs";
     private  String  cameras =  "/api/resource/v1/cameras/indexCode";
     private  String  pictureInfos =  "/api/video/v1/pictureInfos";
     private  String  manualCapture =  "/api/video/v1/manualCapture";
+    private  String  search =  "/api/pems/v1/monitor/search";
     /**
      * 同步列表
      * @return
@@ -140,6 +144,17 @@ public class LotVideoController {
 
     }
 
+    @ApiOperation("获取传感器")
+    @GetMapping("/search")
+    public  CameraStatusResponse search() throws Exception {
+        JSONObject jsonBody = new JSONObject();
+        jsonBody.put("pageNo",  1);
+        jsonBody.put("pageSize",  10000);
+        String body = jsonBody.toJSONString();
+        String getCameraPreviewURL = GetCameraPreviewURL.GetCameraPreviewURL(search, body);
+        CameraStatusResponse cameraResponse = JSON.parseObject(getCameraPreviewURL, CameraStatusResponse.class);
+        return cameraResponse;
+    }
 
 
     /**

+ 1 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/person/PersonInfoAddRequest.java

@@ -37,6 +37,7 @@ public class PersonInfoAddRequest implements Serializable {
      * 性别: 1-男, 2-女, 0-未知
      */
     private Integer gender;
+    private int userType;
 
     /**
      * 出生日期

+ 1 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/person/PersonInfoEditRequest.java

@@ -30,6 +30,7 @@ public class PersonInfoEditRequest implements Serializable {
      * 民族
      */
     private String ethnic;
+    private int userType;
 
     /**
      * 年龄

+ 2 - 0
app-admin/src/main/java/com/ruoyi/web/domain/entity/HouseInfo.java

@@ -76,6 +76,8 @@ public class HouseInfo implements Serializable {
      */
     private String houseTags;
 
+    private String geoData;
+
     /**
      * 创建时间
      */

+ 2 - 0
app-admin/src/main/java/com/ruoyi/web/domain/entity/PersonInfo.java

@@ -31,6 +31,7 @@ public class PersonInfo implements Serializable {
      */
     private String realname;
 
+
     /**
      * 身份证号
      */
@@ -142,6 +143,7 @@ public class PersonInfo implements Serializable {
      * 修改人
      */
     private String updateBy;
+    private int userType;
 
     /**
      * 删除标志

+ 1 - 0
app-admin/src/main/java/com/ruoyi/web/domain/vo/HouseInfoByVo.java

@@ -20,6 +20,7 @@ public class HouseInfoByVo {
     //二维码地址
     private String qrCode;
     private String housePicture;
+    private String geoData;
     private List<Event> events;
 
 }

+ 1 - 1
app-admin/src/main/java/com/ruoyi/web/domain/vo/PersonInfoVO.java

@@ -34,7 +34,7 @@ public class PersonInfoVO implements Serializable {
      */
     @ApiModelProperty(value = "姓名")
     private String realname;
-
+    private int userType;
     /**
      * 身份证号
      */

+ 4 - 0
app-admin/src/main/java/com/ruoyi/web/service/HouseInfoService.java

@@ -11,6 +11,8 @@ import com.ruoyi.web.domain.entity.HouseInfo;
 import com.ruoyi.web.domain.vo.HouseInfoByVo;
 import com.ruoyi.web.domain.vo.HouseInfoVO;
 
+import java.util.Map;
+
 
 /**
  * 房屋接口
@@ -57,4 +59,6 @@ public interface HouseInfoService extends IService<HouseInfo> {
     QueryWrapper<HouseInfo> getQueryWrapper(HouseInfoQueryRequest houseInfoQueryRequest);
 
     HouseInfoByVo getHouseInfoBy(Integer doorplateNumber);
+
+    String saveGeoData(Map<String, Object> map);
 }

+ 15 - 4
app-admin/src/main/java/com/ruoyi/web/service/impl/HouseInfoServiceImpl.java

@@ -35,10 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -327,12 +324,26 @@ public class HouseInfoServiceImpl extends ServiceImpl<HouseInfoMapper, HouseInfo
 
             //事件
             houseInfoVO.setEvents(getEvent(id));
+            houseInfoVO.setGeoData(byId.getGeoData());
 
         }
 
 
         return houseInfoVO;
     }
+
+    @Override
+    public String saveGeoData(Map<String, Object> map) {
+        int id = (Integer)map.get("id");
+        String geoData = (String)map.get("geoData");
+        HouseInfo houseInfo = new HouseInfo();
+        houseInfo.setId((long) id);
+        houseInfo.setGeoData(geoData);
+        this.updateById(houseInfo);
+
+        return null;
+    }
+
     @Autowired
     private EventService eventService;
 

+ 0 - 1
app-admin/src/main/java/com/ruoyi/web/service/impl/PersonHouseRelationServiceImpl.java

@@ -24,7 +24,6 @@ public class PersonHouseRelationServiceImpl extends ServiceImpl<PersonHouseRelat
     @Override
     public List<String> getName(Integer id) {
        return personHouseRelationMapper.getName(id);
-
     }
 }
 

+ 21 - 0
app-admin/src/main/resources/mapper/QiXiangMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.web.controller.chenyanlogin.mapper.QiXiangMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.web.controller.chenyanlogin.entity.QiXiang">
+        <id column="id" property="id" />
+        <result column="air_temperature" property="airTemperature" />
+        <result column="air_humidity" property="airHumidity" />
+        <result column="wind_speed" property="windSpeed" />
+        <result column="wind_directionStr" property="windDirectionstr" />
+        <result column="wind_direction" property="windDirection" />
+        <result column="light_intensity" property="lightIntensity" />
+        <result column="rainfall" property="rainfall" />
+        <result column="airp" property="airp" />
+        <result column="air_pm25" property="airPm25" />
+        <result column="device_id" property="deviceId" />
+        <result column="time" property="time" />
+    </resultMap>
+
+</mapper>

+ 1 - 1
app-admin/src/main/resources/mapper/web/PersonHouseRelationMapper.xml

@@ -19,6 +19,6 @@
     </sql>
     <select id="getName" resultType="java.lang.String" parameterType="java.lang.Integer">
         SELECT p.realname FROM `person_house_relation` phr
-LEFT JOIN `person_info` p ON phr.person_id  = p.id WHERE phr.house_id =  #{id} and phr.villager_type = 0 and del_flag = 0
+LEFT JOIN `person_info` p ON phr.person_id  = p.id WHERE phr.house_id =  #{id} and phr.villager_type = 0 and phr.del_flag = 0
     </select>
 </mapper>

+ 1 - 1
app-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -111,7 +111,7 @@ public class SecurityConfig
             .authorizeHttpRequests((requests) -> {
                 permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                requests.antMatchers("/system/getToken","/login", "/loginNoCaptcha","/register", "/captchaImage","/common/addBatch","/app/NFIDReadRecord/subscribe/{clientId}").permitAll()
+                requests.antMatchers("/huicun/verification","/system/getToken","/login", "/loginNoCaptcha","/register", "/captchaImage","/common/addBatch","/app/NFIDReadRecord/subscribe/{clientId}").permitAll()
                     // 静态资源,可匿名访问
                     .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                     .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()

+ 30 - 0
app-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java

@@ -6,6 +6,10 @@ import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.stereotype.Component;
 import com.ruoyi.common.constant.CacheConstants;
 import com.ruoyi.common.constant.Constants;
@@ -143,6 +147,32 @@ public class SysLoginService
         // 生成token
         return tokenService.createToken(loginUser);
     }
+    @Autowired
+    private UserDetailsService userDetailsService;
+
+    public String getUsername(String username)
+    {
+        // 1. 验证用户是否存在(不验证密码)
+        UserDetails userDetails = userDetailsService.loadUserByUsername(username);
+        if (userDetails == null) {
+            throw new UsernameNotFoundException("用户不存在");
+        }
+
+        // 2. 创建无密码的认证令牌
+        UsernamePasswordAuthenticationToken authenticationToken =
+                new UsernamePasswordAuthenticationToken(username, null, userDetails.getAuthorities());
+
+        // 3. 手动设置认证通过
+        Authentication authentication = authenticationManager.authenticate(authenticationToken);
+        SecurityContextHolder.getContext().setAuthentication(authentication);
+
+        // 4. 生成Token
+        LoginUser loginUser = (LoginUser) authentication.getPrincipal();
+        recordLoginInfo(loginUser.getUserId());
+        return tokenService.createToken(loginUser);
+
+    }
+
 
     /**
      * 校验验证码

+ 1 - 1
app-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java

@@ -54,7 +54,7 @@ public class UserDetailsServiceImpl implements UserDetailsService
             throw new ServiceException(MessageUtils.message("user.blocked"));
         }
 
-        passwordService.validate(user);
+//        passwordService.validate(user);
 
         return createLoginUser(user);
     }