diff --git a/.gitignore b/.gitignore index 48423ff..45c327e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ xiuosiot-backend/src/main/resources/generatorConfig.xml xiuosiot-backend/src/main/resources/mybatisGenerate/ *.log *.gz +xiuosiot-backend/otafiles/ +.idea/ diff --git a/xiuosiot-backend/pom.xml b/xiuosiot-backend/pom.xml index 115ecc9..dc0ebe6 100644 --- a/xiuosiot-backend/pom.xml +++ b/xiuosiot-backend/pom.xml @@ -98,6 +98,7 @@ org.springframework.integration spring-integration-mqtt + 5.5.14 org.springframework.boot diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/Interceptor/AroundLogAspect.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/Interceptor/AroundLogAspect.java index 9eae3fe..aa404e1 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/Interceptor/AroundLogAspect.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/Interceptor/AroundLogAspect.java @@ -17,6 +17,7 @@ import org.springframework.stereotype.Component; import org.springframework.util.StopWatch; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; + import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Method; import java.lang.reflect.Parameter; @@ -30,11 +31,14 @@ import java.util.Map; public class AroundLogAspect { @Autowired LogInfoService requestLogInfoService; - public AroundLogAspect(){} + + public AroundLogAspect() { + } @Pointcut("execution(* com.aiit.xiuos.controller..*.*(..))") public void normalPointcut() { } + @Pointcut("execution(* com.aiit.xiuos.controller.LoginController.*(..))") public void excludeLogPointcut() { } @@ -59,7 +63,7 @@ public class AroundLogAspect { @Around("pointCutMethod()") public Object aroundLog(ProceedingJoinPoint point) throws ParseException { - RequestLogInfo requestLogInfo =new RequestLogInfo(); + RequestLogInfo requestLogInfo = new RequestLogInfo(); StopWatch started = new StopWatch(); //请求时间 requestLogInfo.setRequesttime(MyUtils.getDateTime()); @@ -69,9 +73,9 @@ public class AroundLogAspect { MethodSignature signature = (MethodSignature) point.getSignature(); Method method = signature.getMethod(); //所属公司 - UserInfo userInfo =(UserInfo) request.getSession().getAttribute("user"); - if(userInfo==null){ - return new ResultRespons(Constant.SessionTimeOut_CODE,"用户尚未登录,请先登录!"); + UserInfo userInfo = (UserInfo) request.getSession().getAttribute("user"); + if (userInfo == null) { + return new ResultRespons(Constant.SessionTimeOut_CODE, "用户尚未登录,请先登录!"); } requestLogInfo.setOrg(userInfo.getOrg()); //IP @@ -85,22 +89,22 @@ public class AroundLogAspect { requestLogInfo.setRequesttype(type); //header 根据header名获取header值 Map headerMap = new HashMap<>(); - headerMap.put("accept-encoding",request.getHeader("accept-encoding")); - headerMap.put("user-agent",request.getHeader("user-agent")); - headerMap.put("connection",request.getHeader("connection")); - headerMap.put("content-type",request.getHeader("content-type")); + headerMap.put("accept-encoding", request.getHeader("accept-encoding")); + headerMap.put("user-agent", request.getHeader("user-agent")); + headerMap.put("connection", request.getHeader("connection")); + headerMap.put("content-type", request.getHeader("content-type")); requestLogInfo.setRequestheader(headerMap.toString()); //类名 - String className= point.getTarget().getClass().getName(); + String className = point.getTarget().getClass().getName(); requestLogInfo.setClassname(className); //方法名 String methodName = method.getName(); requestLogInfo.setMethodname(methodName); //参数名 Parameter[] parameters = method.getParameters(); - String param =""; - for(int i=0;i devs =deviceInfoService.selectbyNo(deviceInfo.getNo()); - if(devs==null||devs.size()>0){ + DeviceInfo devs =deviceInfoService.selectbyNo(deviceInfo.getNo()); + if(devs!=null){ return new ResultRespons(Constant.ERROR_CODE,"设备已存在!"); } UserInfo userInfo =(UserInfo) request.getSession().getAttribute("user"); - if(userInfo==null){ - return new ResultRespons(Constant.SessionTimeOut_CODE,"用户尚未登录,请先登录!"); - } String id =GenerateIdUtil.getId(userInfo.getUsername(),userInfo.getOrg()); deviceInfo.setId(id); deviceInfo.setUpdatetime(MyUtils.getTime()); @@ -49,9 +46,6 @@ public class DeviceController { @GetMapping("/select") public ResultRespons selectDevice(@RequestParam("activestatus") int activestatus, HttpServletRequest request){ UserInfo userInfo =(UserInfo) request.getSession().getAttribute("user"); - if(userInfo==null){ - return new ResultRespons(Constant.SessionTimeOut_CODE,"用户尚未登录,请先登录!"); - } List deviceInfoList =null; if(1==activestatus){ deviceInfoList=deviceInfoService.selectActiveDevice(userInfo.getOrg()); @@ -83,9 +77,6 @@ public class DeviceController { @GetMapping("/getTypeCount") public ResultRespons getTypeCount(HttpServletRequest request){ UserInfo userInfo =(UserInfo) request.getSession().getAttribute("user"); - if(userInfo==null){ - return new ResultRespons(Constant.SessionTimeOut_CODE,"用户尚未登录,请先登录!"); - } List> list=deviceInfoService.getDeviceTypeCount(userInfo.getOrg()); if(list!=null){ return new ResultRespons(Constant.SUCCESS_CODE,"查询设备成功!",list); @@ -96,13 +87,23 @@ public class DeviceController { @GetMapping("/getRunStatusCount") public ResultRespons getRunStatusCount(HttpServletRequest request){ UserInfo userInfo =(UserInfo) request.getSession().getAttribute("user"); - if(userInfo==null){ - return new ResultRespons(Constant.SessionTimeOut_CODE,"用户尚未登录,请先登录!"); - } List> list=deviceInfoService.getDeviceRunStautsCount(userInfo.getOrg()); if(list!=null){ return new ResultRespons(Constant.SUCCESS_CODE,"查询设备成功!",list); } return new ResultRespons(Constant.ERROR_CODE,"查询设备失败!"); } + + @GetMapping("/updateDeviceStatus") + public ResultRespons updateDeviceStatus(HttpServletRequest request){ + UserInfo userInfo =(UserInfo) request.getSession().getAttribute("user"); + if(userInfo==null){ + return new ResultRespons(Constant.SessionTimeOut_CODE,"用户尚未登录,请先登录!"); + } + List list=deviceInfoService.selectActiveDevice(userInfo.getOrg()); + if(list!=null){ + return new ResultRespons(Constant.SUCCESS_CODE,"查询设备成功!",list); + } + return new ResultRespons(Constant.ERROR_CODE,"查询设备失败!"); + } } diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/DeviceDataController.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/DeviceDataController.java index e839817..7c22ced 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/DeviceDataController.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/DeviceDataController.java @@ -52,10 +52,7 @@ public class DeviceDataController { } @PostMapping("/publishData") - public ResultRespons publishData(@RequestBody Map jsonMap){ - if(myMqttClient==null){ - myMqttClient=new MqttConfiguration().getMqttPushClient(); - } + public ResultRespons publishData(@RequestBody Map jsonMap) { myMqttClient.publish("xiuosiot/"+jsonMap.get("deviceno"), JSONObject.toJSONString(jsonMap)); return new ResultRespons(Constant.SUCCESS_CODE,"数据发送成功"); } diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/FirmwareController.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/FirmwareController.java new file mode 100644 index 0000000..62c2904 --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/FirmwareController.java @@ -0,0 +1,162 @@ +package com.aiit.xiuos.controller; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; +import com.aiit.xiuos.Utils.Constant; +import com.aiit.xiuos.Utils.ResultRespons; +import com.aiit.xiuos.model.FirmwareInfo; +import com.aiit.xiuos.model.UserInfo; +import com.aiit.xiuos.service.FirmwareInfoService; +import com.aiit.xiuos.service.OtaInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpRequest; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.util.List; + +import static cn.hutool.core.io.FileUtil.exist; + +@RestController +@RequestMapping("/firmware") +@Slf4j +public class FirmwareController { + @Autowired + FirmwareInfoService firmwareInfoService; + + @Autowired + OtaInfoService otaInfoService; + + /* + 上传固件接口 + */ + //MultipartFile用于接受前端传过来的file对象 + @PostMapping("/upload") + public ResultRespons upload(MultipartFile file,String version) throws IOException { + Long fileSize = file.getSize(); + String md5 = SecureUtil.md5(file.getInputStream()); + String filename = file.getOriginalFilename();//获取文件的名称 + String rootFilePath = System.getProperty("user.dir") + "/otafiles/" + version+"_"+filename; + boolean fileExist=FileUtil.exist(rootFilePath); + if(fileExist){ + return new ResultRespons(Constant.ERROR_CODE, "上传失败,已存在相同文件名,相同版本号的固件"); + } + FileUtil.writeBytes(file.getBytes(), rootFilePath);//使用Hutool工具包将我们接收到文件保存到rootFilePath中 + FirmwareInfo firmwareInfo = new FirmwareInfo(); + firmwareInfo.setFileName(filename); + firmwareInfo.setFileMd5(md5); + firmwareInfo.setFileSize(fileSize); + firmwareInfo.setFileVersion(version); + return new ResultRespons(Constant.SUCCESS_CODE, "上传成功", firmwareInfo); + } + + @PostMapping("/add") + public ResultRespons addFirmwareInfo(@RequestBody FirmwareInfo firmwareInfo, HttpServletRequest request) throws IOException { + UserInfo userInfo = (UserInfo) request.getSession().getAttribute("user"); + firmwareInfo.setOrg(userInfo.getOrg()); + int res = firmwareInfoService.addFirmware(firmwareInfo); + if (1 == res) { + return new ResultRespons(Constant.SUCCESS_CODE, "新增固件成功"); + } else { + return new ResultRespons(Constant.ERROR_CODE, "新增固件失败"); + } + } + + + /* + 下载固件接口 + */ + @GetMapping("/download") + public void getFiles(@RequestParam("fileName") String name, @RequestParam("fileVersion") String version,HttpServletResponse response) { + String realName =version+"_"+name; + OutputStream os;//新建一个输出流对象 + String basePath = System.getProperty("user.dir") + "/otafiles/"; //定义文件上传的根路径 + List fileNames = FileUtil.listFileNames(basePath);//获取所有的文件名称 + String fileName = fileNames.stream().filter(filename -> filename.contains(realName)).findAny().orElse("");//找到跟参数一致的文件 + try { + if (StrUtil.isNotEmpty(fileName)) { + response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); + response.setContentType("application/octet-stream"); + byte[] bytes = FileUtil.readBytes(basePath + fileName);//通过文件的路径读取文件字节流 + os = response.getOutputStream();//通过response的输出流返回文件 + os.write(bytes); + os.flush(); + os.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } + + } + + + @PostMapping("/delete") + public ResultRespons deleteFile(@RequestBody FirmwareInfo firmwareInfo) { + int id = firmwareInfo.getId(); + String fileName = firmwareInfo.getFileName(); + String version = firmwareInfo.getFileVersion(); + String filePath = System.getProperty("user.dir") + "/otafiles/" + version+"_"+fileName; + Boolean flag = FileUtil.del(filePath); + + if (flag) { + int res = firmwareInfoService.deleteFirmware(id); + + if (1 == res) { + otaInfoService.deleteOtaInfo(fileName,version); + return new ResultRespons(Constant.SUCCESS_CODE, "删除成功"); + } else { + return new ResultRespons(Constant.ERROR_CODE, "删除失败"); + } + + } else { + return new ResultRespons(Constant.ERROR_CODE, "固件不存在"); + } + } + + @PostMapping("/verify") + public ResultRespons verifyFile(@RequestBody FirmwareInfo firmwareInfo) throws IOException { + int id = firmwareInfo.getId(); + FirmwareInfo info = firmwareInfoService.getById(id); + String fileName = info.getFileName(); + String fileVersion = info.getFileVersion(); + String filePath = System.getProperty("user.dir") + "/otafiles/" + fileVersion+"_"+fileName; + String md5 = SecureUtil.md5(FileUtil.getInputStream(filePath)); + + if (info.getFileMd5().equals(md5)) { + info.setVerify("验证成功"); + firmwareInfoService.updateFirmware(info); + return new ResultRespons(Constant.SUCCESS_CODE, "验证成功"); + } else { + info.setVerify("验证失败"); + firmwareInfoService.updateFirmware(info); + return new ResultRespons(Constant.ERROR_CODE, "验证失败"); + } + } + + @GetMapping("/getAll") + public ResultRespons getAllFirmware(HttpServletRequest request) { + UserInfo userInfo = (UserInfo) request.getSession().getAttribute("user"); + List firmwareInfoList = firmwareInfoService.getAll(userInfo.getOrg()); + return new ResultRespons(Constant.SUCCESS_CODE, "查询成功", firmwareInfoList); + } + + @GetMapping("/getVerify") + public ResultRespons getAllFirmware(@RequestParam("verify") String verify,HttpServletRequest request) { + UserInfo userInfo = (UserInfo) request.getSession().getAttribute("user"); + List firmwareInfoList = firmwareInfoService.getByVerify(userInfo.getOrg(),verify); + return new ResultRespons(Constant.SUCCESS_CODE, "查询成功", firmwareInfoList); + } + + @GetMapping("/getByName") + public ResultRespons getFirmware(@RequestParam("fileName") String name,HttpServletRequest request) { + List infos = firmwareInfoService.getInfo(name); + return new ResultRespons(Constant.SUCCESS_CODE, "查询成功", infos); + } +} diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/LoginController.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/LoginController.java index 5b6f062..abfe156 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/LoginController.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/LoginController.java @@ -47,7 +47,7 @@ public class LoginController { HttpSession session = request.getSession(); session.removeAttribute("user"); session.invalidate(); - redisUtil.delete("user"); + //redisUtil.delete("user"); return new ResultRespons(Constant.SUCCESS_CODE,"用户登出"); } diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/DeviceInfoMapper.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/DeviceInfoMapper.java index a12022c..e41e5cd 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/DeviceInfoMapper.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/DeviceInfoMapper.java @@ -12,13 +12,13 @@ import java.util.Map; @Repository public interface DeviceInfoMapper { - int deleteByPrimaryKey(@Param("id") String id, @Param("no") String no); + int deleteByPrimaryKey(String no); int insert(DeviceInfo record); int insertSelective(DeviceInfo record); - DeviceInfo selectByPrimaryKey(@Param("id") String id, @Param("no") String no); + DeviceInfo selectByPrimaryKey(String no); int updateByPrimaryKeySelective(DeviceInfo record); @@ -36,9 +36,6 @@ public interface DeviceInfoMapper { @Delete("delete from device_info where no =#{no}") int deleteByNo(@Param("no") String no); - @Select("select * from device_info where no=#{no}") - List selectByNo(@Param("no") String no); - @Select("select type from device_info where no =#{deviceNo}") List selectTypeByNo(@Param("deviceNo") String deviceNo); diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/FirmwareInfoMapper.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/FirmwareInfoMapper.java new file mode 100644 index 0000000..ddac908 --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/FirmwareInfoMapper.java @@ -0,0 +1,35 @@ +package com.aiit.xiuos.dao.mappers; + +import com.aiit.xiuos.model.FirmwareInfo; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface FirmwareInfoMapper { + int deleteByPrimaryKey(Integer id); + + int insert(FirmwareInfo record); + + int insertSelective(FirmwareInfo record); + + FirmwareInfo selectByPrimaryKey(Integer id); + + int updateByPrimaryKeySelective(FirmwareInfo record); + + int updateByPrimaryKey(FirmwareInfo record); + + @Select("select * from firmware_info where org=#{org}") + List getAll(@Param("org") String org); + + @Select("select * from firmware_info where org=#{org} and verify=#{verify}") + List getByVerify(@Param("org") String org,@Param("verify") String verify); + + @Select("select * from firmware_info where file_name=#{name}") + List getByName(@Param("name") String name); + + @Select("select * from firmware_info where file_name=#{name} and file_version=#{version}") + FirmwareInfo getByNameAndVersion(@Param("name") String name,@Param("version") String version); +} \ No newline at end of file diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/OtaInfoMapper.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/OtaInfoMapper.java new file mode 100644 index 0000000..5e5e1c0 --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/OtaInfoMapper.java @@ -0,0 +1,17 @@ +package com.aiit.xiuos.dao.mappers; + +import com.aiit.xiuos.model.OtaInfo; + +public interface OtaInfoMapper { + int deleteByPrimaryKey(Integer id); + + int insert(OtaInfo record); + + int insertSelective(OtaInfo record); + + OtaInfo selectByPrimaryKey(Integer id); + + int updateByPrimaryKeySelective(OtaInfo record); + + int updateByPrimaryKey(OtaInfo record); +} \ No newline at end of file diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/model/FirmwareInfo.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/model/FirmwareInfo.java new file mode 100644 index 0000000..e9fa383 --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/model/FirmwareInfo.java @@ -0,0 +1,45 @@ +package com.aiit.xiuos.model; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class FirmwareInfo { + private Integer id; + + private String fileName; + + private String fileVersion; + @JsonFormat(pattern ="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date createTime; + + private String fileMd5; + + private String fileDesc; + + private String org; + + private String verify; + + private Long fileSize; + + public FirmwareInfo(Integer id, String fileName, String fileVersion, Date createTime, String fileMd5, String fileDesc, String org, String verify, Long fileSize) { + this.id = id; + this.fileName = fileName; + this.fileVersion = fileVersion; + this.createTime = createTime; + this.fileMd5 = fileMd5; + this.fileDesc = fileDesc; + this.org = org; + this.verify = verify; + this.fileSize = fileSize; + } + + public FirmwareInfo() { + super(); + } +} \ No newline at end of file diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/model/OtaInfo.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/model/OtaInfo.java new file mode 100644 index 0000000..5aed9ea --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/model/OtaInfo.java @@ -0,0 +1,43 @@ +package com.aiit.xiuos.model; + +import java.util.Date; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class OtaInfo { + private Integer id; + + private String fileName; + + private String deviceId; + + private Integer currentProcess; + + private Integer status; + + private Date createTime; + + private Integer updateType; + + private Date timeout; + + private String fileVersion; + + public OtaInfo(Integer id, String fileName, String deviceId, Integer currentProcess, Integer status, Date createTime, Integer updateType, Date timeout, String fileVersion) { + this.id = id; + this.fileName = fileName; + this.deviceId = deviceId; + this.currentProcess = currentProcess; + this.status = status; + this.createTime = createTime; + this.updateType = updateType; + this.timeout = timeout; + this.fileVersion = fileVersion; + } + + public OtaInfo() { + super(); + } +} \ No newline at end of file diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/mqtt/MsgReceiveHandle.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/mqtt/MsgReceiveHandle.java new file mode 100644 index 0000000..e246aa2 --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/mqtt/MsgReceiveHandle.java @@ -0,0 +1,4 @@ +package com.aiit.xiuos.mqtt; + +public class MsgReceiveHandle { +} diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/scheduled/OTATaskScheduled.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/scheduled/OTATaskScheduled.java new file mode 100644 index 0000000..373ace9 --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/scheduled/OTATaskScheduled.java @@ -0,0 +1,4 @@ +package com.aiit.xiuos.scheduled; + +public class OTATaskScheduled { +} diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/FirmwareInfoService.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/FirmwareInfoService.java new file mode 100644 index 0000000..7a86952 --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/FirmwareInfoService.java @@ -0,0 +1,17 @@ +package com.aiit.xiuos.service; + +import com.aiit.xiuos.model.FirmwareInfo; + +import java.util.List; + +public interface FirmwareInfoService { + List getAll(String org); + int updateFirmware(FirmwareInfo firmwareInfo); + int deleteFirmware(int id); + int addFirmware(FirmwareInfo firmwareInfo); + FirmwareInfo getById(int id); + FirmwareInfo getByNameAndVersion(String name,String version); + List getInfo(String name); + List getByVerify(String org,String verify); + +} diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/OtaInfoService.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/OtaInfoService.java new file mode 100644 index 0000000..fb91d19 --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/OtaInfoService.java @@ -0,0 +1,4 @@ +package com.aiit.xiuos.service; + +public interface OtaInfoService { +} diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/impl/FirmwareInfoServiceImpl.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/impl/FirmwareInfoServiceImpl.java new file mode 100644 index 0000000..d1e1779 --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/impl/FirmwareInfoServiceImpl.java @@ -0,0 +1,53 @@ +package com.aiit.xiuos.service.impl; + +import com.aiit.xiuos.dao.mappers.FirmwareInfoMapper; +import com.aiit.xiuos.model.FirmwareInfo; +import com.aiit.xiuos.service.FirmwareInfoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +@Service +public class FirmwareInfoServiceImpl implements FirmwareInfoService { + @Autowired + FirmwareInfoMapper firmwareInfoMapper; + @Override + public List getAll(String org) { + return firmwareInfoMapper.getAll(org); + } + + @Override + public int updateFirmware(FirmwareInfo firmwareInfo) { + return firmwareInfoMapper.updateByPrimaryKeySelective(firmwareInfo); + } + + @Override + public int deleteFirmware(int id) { + return firmwareInfoMapper.deleteByPrimaryKey(id); + } + + @Override + public int addFirmware(FirmwareInfo firmwareInfo) { + return firmwareInfoMapper.insertSelective(firmwareInfo); + } + + @Override + public FirmwareInfo getById(int id) { + return firmwareInfoMapper.selectByPrimaryKey(id); + } + + @Override + public FirmwareInfo getByNameAndVersion(String name, String version) { + return firmwareInfoMapper.getByNameAndVersion(name,version); + } + + @Override + public List getInfo(String name) { + return firmwareInfoMapper.getByName(name); + } + + @Override + public List getByVerify(String org, String verify) { + return firmwareInfoMapper.getByVerify(org,verify); + } +} diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/impl/OtaInfoServiceImpl.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/impl/OtaInfoServiceImpl.java new file mode 100644 index 0000000..df4b38a --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/impl/OtaInfoServiceImpl.java @@ -0,0 +1,4 @@ +package com.aiit.xiuos.service.impl; + +public class OtaInfoServiceImpl { +} diff --git a/xiuosiot-backend/src/main/resources/application-local.yml b/xiuosiot-backend/src/main/resources/application-local.yml index e9b6596..4e48282 100644 --- a/xiuosiot-backend/src/main/resources/application-local.yml +++ b/xiuosiot-backend/src/main/resources/application-local.yml @@ -62,19 +62,23 @@ mybatis: #MQTT Config mqtt: #MQTT-服务器连接地 - hostUrl: tcp://115.238.53.59:1883 + hostUrl: tcp://8.140.53.225:1883 #MQTT-连接服务器默认客户端ID clientId: local-xiuosiot #MQTT-用户名 - username: xiuosiot + username: xiuos #MQTT-密码 - password: xiuosiot + password: xiuos #连接超时 timeout: 100 #设置会话心跳时间 keepalive: 100 #默认主题 default-topic: xiuosiot/# + #api key + apikey: 6eea245a7f531f2f + #secret key + secretkey: XsyKpCXGvPfWifwOjsK2J2JP3E9AouxezXm8SqaJXcYP tdengine: url: jdbc:TAOS://taosnode1:6030/xiuosiot?user=root&password=taosdata diff --git a/xiuosiot-backend/src/main/resources/application-prod.yml b/xiuosiot-backend/src/main/resources/application-prod.yml index 5d9ebca..0c8909d 100644 --- a/xiuosiot-backend/src/main/resources/application-prod.yml +++ b/xiuosiot-backend/src/main/resources/application-prod.yml @@ -43,6 +43,7 @@ spring: max-idle: 10 min-idle: 2 timeout: 6000 + config: activate: on-profile: prod @@ -56,7 +57,7 @@ mybatis: #MQTT Config mqtt: #MQTT-服务器连接地 - hostUrl: tcp://115.238.53.59:1883 + hostUrl: tcp://localhost:1883 #MQTT-连接服务器默认客户端ID clientId: xiuosiot-client #MQTT-用户名 @@ -69,6 +70,10 @@ mqtt: keepalive: 100 #默认主题 default-topic: xiuosiot/# + #api key + apikey: 13e1c0be6d573f86 + #secret key + secretkey: 9BLxyWslygS5oFTz8TX5ssJ7JMiBY9CefU9B35uWx3ltqN tdengine: url: jdbc:TAOS://xiuosiot.taosnode1:6030/xiuosiot?user=root&password=taosdata diff --git a/xiuosiot-backend/src/main/resources/mappers/FirmwareInfoMapper.xml b/xiuosiot-backend/src/main/resources/mappers/FirmwareInfoMapper.xml new file mode 100644 index 0000000..c265677 --- /dev/null +++ b/xiuosiot-backend/src/main/resources/mappers/FirmwareInfoMapper.xml @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + id, file_name, file_version, create_time, file_md5, file_desc, org, verify, file_size + + + + delete from firmware_info + where id = #{id,jdbcType=INTEGER} + + + insert into firmware_info (id, file_name, file_version, + create_time, file_md5, file_desc, + org, verify, file_size + ) + values (#{id,jdbcType=INTEGER}, #{fileName,jdbcType=VARCHAR}, #{fileVersion,jdbcType=VARCHAR}, + #{createTime,jdbcType=TIMESTAMP}, #{fileMd5,jdbcType=VARCHAR}, #{fileDesc,jdbcType=VARCHAR}, + #{org,jdbcType=VARCHAR}, #{verify,jdbcType=VARCHAR}, #{fileSize,jdbcType=BIGINT} + ) + + + insert into firmware_info + + + id, + + + file_name, + + + file_version, + + + create_time, + + + file_md5, + + + file_desc, + + + org, + + + verify, + + + file_size, + + + + + #{id,jdbcType=INTEGER}, + + + #{fileName,jdbcType=VARCHAR}, + + + #{fileVersion,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{fileMd5,jdbcType=VARCHAR}, + + + #{fileDesc,jdbcType=VARCHAR}, + + + #{org,jdbcType=VARCHAR}, + + + #{verify,jdbcType=VARCHAR}, + + + #{fileSize,jdbcType=BIGINT}, + + + + + update firmware_info + + + file_name = #{fileName,jdbcType=VARCHAR}, + + + file_version = #{fileVersion,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + file_md5 = #{fileMd5,jdbcType=VARCHAR}, + + + file_desc = #{fileDesc,jdbcType=VARCHAR}, + + + org = #{org,jdbcType=VARCHAR}, + + + verify = #{verify,jdbcType=VARCHAR}, + + + file_size = #{fileSize,jdbcType=BIGINT}, + + + where id = #{id,jdbcType=INTEGER} + + + update firmware_info + set file_name = #{fileName,jdbcType=VARCHAR}, + file_version = #{fileVersion,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + file_md5 = #{fileMd5,jdbcType=VARCHAR}, + file_desc = #{fileDesc,jdbcType=VARCHAR}, + org = #{org,jdbcType=VARCHAR}, + verify = #{verify,jdbcType=VARCHAR}, + file_size = #{fileSize,jdbcType=BIGINT} + where id = #{id,jdbcType=INTEGER} + + \ No newline at end of file