diff --git a/docs/API接口说明-参数配置中心.md b/docs/API接口说明-参数配置中心.md index 86fc494..31cfac9 100644 --- a/docs/API接口说明-参数配置中心.md +++ b/docs/API接口说明-参数配置中心.md @@ -334,6 +334,7 @@ GET /params/my/page?current=1&size=10&fcModel=Pixhawk%204 { "id": 1, "userId": 1, + "username": "张三", "paramName": "默认参数配置", "deviceName": "我的无人机", "description": "这是一个测试参数配置", diff --git a/docs/API接口说明-固件管理.md b/docs/API接口说明-固件管理.md new file mode 100644 index 0000000..98f3c9e --- /dev/null +++ b/docs/API接口说明-固件管理.md @@ -0,0 +1,252 @@ +# 固件管理 API 接口文档 + +## 基本信息 + +- **Base URL**: `http://localhost:8080` +- **接口前缀**: `/firmware` +- **请求头**: + - `Accept-Language`: `zh_CN` 或 `en_US`(可选,默认中文) + +## 统一响应格式 + +所有接口返回格式统一为: + +```json +{ + "code": 200, + "message": "操作成功", + "data": {}, + "success": true +} +``` + +**字段说明:** +- `code`: 状态码(200-成功,500-失败) +- `message`: 提示消息(支持中英文国际化) +- `data`: 返回的数据 +- `success`: 是否成功(true/false) + +--- + +## 1. 根据ID查询固件 + +**接口描述:** 根据固件ID查询固件详细信息 + +**请求方式:** `GET` + +**请求路径:** `/firmware/{id}` + +**路径参数:** + +| 参数名 | 类型 | 必填 | 说明 | +|--------|------|------|------| +| id | Long | 是 | 固件ID | + +**请求示例:** + +```bash +curl -X GET "http://localhost:8080/firmware/1" \ + -H "Accept-Language: zh_CN" +``` + +**成功响应示例:** + +```json +{ + "code": 200, + "message": "操作成功", + "data": { + "id": 1, + "firmwareName": "固件 v2.0.0", + "firmwareSize": 2097152, + "firmwareDescription": "新版本固件,优化性能", + "firmwareType": "主控固件", + "downloadUrl": "https://example.com/firmware/v2.0.0.bin", + "createTime": "2025-01-15 10:30:00", + "updateTime": "2025-01-15 10:30:00" + }, + "success": true +} +``` + +**失败响应示例:** + +```json +{ + "code": 500, + "message": "固件不存在", + "data": null, + "success": false +} +``` + +--- + +## 2. 分页查询固件列表 + +**接口描述:** 分页查询固件列表,支持按固件名称和固件类型筛选 + +**请求方式:** `GET` + +**请求路径:** `/firmware/page` + +**请求参数(Query):** + +| 参数名 | 类型 | 必填 | 默认值 | 说明 | +|--------|------|------|--------|------| +| current | Long | 否 | 1 | 当前页码 | +| size | Long | 否 | 10 | 每页大小 | +| firmwareName | String | 否 | - | 固件名称(模糊查询) | +| firmwareType | String | 否 | - | 固件类型(精确查询) | + +**请求示例:** + +```bash +# 查询第1页,每页10条 +curl -X GET "http://localhost:8080/firmware/page?current=1&size=10" \ + -H "Accept-Language: zh_CN" + +# 按固件名称模糊查询 +curl -X GET "http://localhost:8080/firmware/page?current=1&size=10&firmwareName=v2" + +# 按固件类型查询 +curl -X GET "http://localhost:8080/firmware/page?current=1&size=10&firmwareType=主控固件" + +# 组合查询 +curl -X GET "http://localhost:8080/firmware/page?current=1&size=10&firmwareName=v2&firmwareType=主控固件" +``` + +**成功响应示例:** + +```json +{ + "code": 200, + "message": "操作成功", + "data": { + "records": [ + { + "id": 1, + "firmwareName": "固件 v2.0.0", + "firmwareSize": 2097152, + "firmwareDescription": "新版本固件,优化性能", + "firmwareType": "主控固件", + "downloadUrl": "https://example.com/firmware/v2.0.0.bin", + "createTime": "2025-01-15 10:30:00", + "updateTime": "2025-01-15 10:30:00" + }, + { + "id": 2, + "firmwareName": "固件 v1.0.1", + "firmwareSize": 1049600, + "firmwareDescription": "修复了若干 bug 的版本", + "firmwareType": "主控固件", + "downloadUrl": "https://example.com/firmware/v1.0.1.bin", + "createTime": "2025-01-14 09:20:00", + "updateTime": "2025-01-14 09:20:00" + } + ], + "total": 2, + "size": 10, + "current": 1, + "pages": 1 + }, + "success": true +} +``` + +**响应字段说明:** +- `records`: 当前页的数据列表 +- `total`: 总记录数 +- `size`: 每页大小 +- `current`: 当前页码 +- `pages`: 总页数 + +--- + +## 3. 查询所有固件 + +**接口描述:** 查询所有固件列表(不分页) + +**请求方式:** `GET` + +**请求路径:** `/firmware/list` + +**请求示例:** + +```bash +curl -X GET "http://localhost:8080/firmware/list" \ + -H "Accept-Language: zh_CN" +``` + +**成功响应示例:** + +```json +{ + "code": 200, + "message": "操作成功", + "data": [ + { + "id": 1, + "firmwareName": "固件 v2.0.0", + "firmwareSize": 2097152, + "firmwareDescription": "新版本固件,优化性能", + "firmwareType": "主控固件", + "downloadUrl": "https://example.com/firmware/v2.0.0.bin", + "createTime": "2025-01-15 10:30:00", + "updateTime": "2025-01-15 10:30:00" + }, + { + "id": 2, + "firmwareName": "固件 v1.0.1", + "firmwareSize": 1049600, + "firmwareDescription": "修复了若干 bug 的版本", + "firmwareType": "主控固件", + "downloadUrl": "https://example.com/firmware/v1.0.1.bin", + "createTime": "2025-01-14 09:20:00", + "updateTime": "2025-01-14 09:20:00" + } + ], + "success": true +} +``` + +--- + +## 错误码说明 + +| 错误码 | 说明 | +|--------|------| +| 200 | 请求成功 | +| 500 | 服务器内部错误 | + +--- + +## 国际化支持 + +接口支持中英文双语,通过请求头 `Accept-Language` 或 `lang` 指定语言: + +- `zh_CN` - 中文(默认) +- `en_US` - 英文 + +**示例:** + +```bash +# 中文响应 +curl -X GET "http://localhost:8080/firmware/1" \ + -H "Accept-Language: zh_CN" + +# 英文响应 +curl -X GET "http://localhost:8080/firmware/1" \ + -H "Accept-Language: en_US" +``` + +--- + +## 注意事项 + +1. **文件大小单位**:`firmwareSize` 字段的单位是字节(Byte) +2. **时间格式**:`createTime` 和 `updateTime` 的格式为 `yyyy-MM-dd HH:mm:ss` +3. **分页默认排序**:分页查询默认按创建时间倒序排列(最新的在前面) +4. **模糊查询**:分页查询中的 `firmwareName` 参数支持模糊匹配 +5. **类型查询**:分页查询中的 `firmwareType` 参数是精确匹配 +6. **国际化**:通过 `Accept-Language` 请求头可切换中英文响应消息 diff --git a/src/main/java/com/corewing/app/config/SaTokenConfig.java b/src/main/java/com/corewing/app/config/SaTokenConfig.java index 7ee33fd..733bb80 100644 --- a/src/main/java/com/corewing/app/config/SaTokenConfig.java +++ b/src/main/java/com/corewing/app/config/SaTokenConfig.java @@ -25,6 +25,8 @@ public class SaTokenConfig implements WebMvcConfigurer { .excludePathPatterns("/user/login", "/user/register", "/user/sendCode") // 排除反馈接口(支持匿名提交) .excludePathPatterns("/feedback", "/feedback/**") + // 排除固件查询接口(不需要登录) + .excludePathPatterns("/firmware/**") // 排除静态资源 .excludePathPatterns("/", "/index.html", "/*.html", "/*.css", "/*.js", "/*.ico", "/static/**") // 排除 Druid 监控 diff --git a/src/main/java/com/corewing/app/controller/AppFeedbackController.java b/src/main/java/com/corewing/app/controller/FeedbackController.java similarity index 90% rename from src/main/java/com/corewing/app/controller/AppFeedbackController.java rename to src/main/java/com/corewing/app/controller/FeedbackController.java index a52acdf..60925ee 100644 --- a/src/main/java/com/corewing/app/controller/AppFeedbackController.java +++ b/src/main/java/com/corewing/app/controller/FeedbackController.java @@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.corewing.app.common.Result; import com.corewing.app.dto.FeedbackRequest; -import com.corewing.app.entity.AppFeedback; -import com.corewing.app.service.AppFeedbackService; +import com.corewing.app.entity.Feedback; +import com.corewing.app.service.FeedbackService; import com.corewing.app.util.DingTalkUtil; import com.corewing.app.util.I18nUtil; import com.corewing.app.util.Ip2RegionUtil; @@ -23,13 +23,13 @@ import java.util.List; */ @RestController @RequestMapping("/feedback") -public class AppFeedbackController { +public class FeedbackController { - private final AppFeedbackService feedbackService; + private final FeedbackService feedbackService; private final DingTalkUtil dingTalkUtil; private final Ip2RegionUtil ip2RegionUtil; - public AppFeedbackController(AppFeedbackService feedbackService, DingTalkUtil dingTalkUtil, Ip2RegionUtil ip2RegionUtil) { + public FeedbackController(FeedbackService feedbackService, DingTalkUtil dingTalkUtil, Ip2RegionUtil ip2RegionUtil) { this.feedbackService = feedbackService; this.dingTalkUtil = dingTalkUtil; this.ip2RegionUtil = ip2RegionUtil; @@ -49,7 +49,7 @@ public class AppFeedbackController { // 未登录,userId 保持为 null } - AppFeedback feedback = new AppFeedback(); + Feedback feedback = new Feedback(); feedback.setUserId(userId); feedback.setFeedbackType(request.getFeedbackType()); feedback.setTitle(request.getTitle()); @@ -76,11 +76,11 @@ public class AppFeedbackController { * 查询当前用户的反馈列表 */ @GetMapping("/my") - public Result> getMyFeedbackList() { + public Result> getMyFeedbackList() { try { // 获取当前登录用户ID Long userId = StpUtil.getLoginIdAsLong(); - List feedbackList = feedbackService.listByUserId(userId); + List feedbackList = feedbackService.listByUserId(userId); return Result.success(feedbackList); } catch (Exception e) { return Result.error(e.getMessage()); @@ -91,9 +91,9 @@ public class AppFeedbackController { * 根据ID查询反馈详情 */ @GetMapping("/{id}") - public Result getById(@PathVariable Long id) { + public Result getById(@PathVariable Long id) { try { - AppFeedback feedback = feedbackService.getById(id); + Feedback feedback = feedbackService.getById(id); if (feedback != null) { return Result.success(feedback); } @@ -113,15 +113,15 @@ public class AppFeedbackController { * @param status 状态(可选) */ @GetMapping("/page") - public Result> getPageList( + public Result> getPageList( @RequestParam(defaultValue = "1") Long current, @RequestParam(defaultValue = "10") Long size, @RequestParam(required = false) Long userId, @RequestParam(required = false) String feedbackType, @RequestParam(required = false) Integer status) { try { - Page page = new Page<>(current, size); - IPage pageResult = feedbackService.pageList(page, userId, feedbackType, status); + Page page = new Page<>(current, size); + IPage pageResult = feedbackService.pageList(page, userId, feedbackType, status); return Result.success(pageResult); } catch (Exception e) { return Result.error(e.getMessage()); @@ -184,7 +184,7 @@ public class AppFeedbackController { /** * 发送反馈信息到钉钉 */ - private void sendFeedbackToDingTalk(AppFeedback feedback, String submitIp, String submitRegion) { + private void sendFeedbackToDingTalk(Feedback feedback, String submitIp, String submitRegion) { try { String title = I18nUtil.getMessage("dingtalk.feedback.title"); StringBuilder text = new StringBuilder(); diff --git a/src/main/java/com/corewing/app/controller/FirmwareController.java b/src/main/java/com/corewing/app/controller/FirmwareController.java new file mode 100644 index 0000000..b0ccef3 --- /dev/null +++ b/src/main/java/com/corewing/app/controller/FirmwareController.java @@ -0,0 +1,143 @@ +package com.corewing.app.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.corewing.app.common.Result; +import com.corewing.app.entity.Firmware; +import com.corewing.app.service.FirmwareService; +import com.corewing.app.util.I18nUtil; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; + +/** + * 固件 Controller + */ +@RestController +@RequestMapping("/firmware") +public class FirmwareController { + + private final FirmwareService firmwareService; + + public FirmwareController(FirmwareService firmwareService) { + this.firmwareService = firmwareService; + } + + /** + * 新增固件 + */ + @PostMapping + public Result add(@RequestBody Firmware firmware) { + try { + // 检查固件名称是否已存在 + Firmware existFirmware = firmwareService.getByFirmwareName(firmware.getFirmwareName()); + if (existFirmware != null) { + return Result.error(I18nUtil.getMessage("firmware.name.exists")); + } + + boolean success = firmwareService.save(firmware); + if (success) { + return Result.success(I18nUtil.getMessage("firmware.add.success")); + } + return Result.error(I18nUtil.getMessage("firmware.add.failed")); + } catch (Exception e) { + return Result.error(e.getMessage()); + } + } + + /** + * 删除固件 + */ + @DeleteMapping("/{id}") + public Result delete(@PathVariable Long id) { + try { + boolean success = firmwareService.removeById(id); + if (success) { + return Result.success(I18nUtil.getMessage("firmware.delete.success")); + } + return Result.error(I18nUtil.getMessage("firmware.delete.failed")); + } catch (Exception e) { + return Result.error(e.getMessage()); + } + } + + /** + * 更新固件 + */ + @PutMapping + public Result update(@RequestBody Firmware firmware) { + try { + // 检查固件名称是否与其他固件重复 + if (StringUtils.hasText(firmware.getFirmwareName())) { + Firmware existFirmware = firmwareService.getByFirmwareName(firmware.getFirmwareName()); + if (existFirmware != null && !existFirmware.getId().equals(firmware.getId())) { + return Result.error(I18nUtil.getMessage("firmware.name.exists")); + } + } + + boolean success = firmwareService.updateById(firmware); + if (success) { + return Result.success(I18nUtil.getMessage("firmware.update.success")); + } + return Result.error(I18nUtil.getMessage("firmware.update.failed")); + } catch (Exception e) { + return Result.error(e.getMessage()); + } + } + + /** + * 根据ID查询固件 + */ + @GetMapping("/{id}") + public Result getById(@PathVariable Long id) { + Firmware firmware = firmwareService.getById(id); + if (firmware != null) { + return Result.success(firmware); + } + return Result.error(I18nUtil.getMessage("firmware.not.found")); + } + + /** + * 分页查询固件列表 + * + * @param current 当前页 + * @param size 每页大小 + * @param firmwareName 固件名称(可选) + * @param firmwareType 固件类型(可选) + */ + @GetMapping("/page") + public Result> page( + @RequestParam(defaultValue = "1") Long current, + @RequestParam(defaultValue = "10") Long size, + @RequestParam(required = false) String firmwareName, + @RequestParam(required = false) String firmwareType) { + + Page page = new Page<>(current, size); + QueryWrapper wrapper = new QueryWrapper<>(); + + // 根据固件名称模糊查询 + if (StringUtils.hasText(firmwareName)) { + wrapper.like("firmware_name", firmwareName); + } + + // 根据固件类型查询 + if (StringUtils.hasText(firmwareType)) { + wrapper.eq("firmware_type", firmwareType); + } + + // 按创建时间倒序排列 + wrapper.orderByDesc("create_time"); + + IPage result = firmwareService.page(page, wrapper); + return Result.success(result); + } + + /** + * 查询所有固件 + */ + @GetMapping("/list") + public Result> list() { + java.util.List list = firmwareService.list(); + return Result.success(list); + } +} diff --git a/src/main/java/com/corewing/app/controller/AppParamsCenterController.java b/src/main/java/com/corewing/app/controller/ParamsCenterController.java similarity index 80% rename from src/main/java/com/corewing/app/controller/AppParamsCenterController.java rename to src/main/java/com/corewing/app/controller/ParamsCenterController.java index f3da584..19e9469 100644 --- a/src/main/java/com/corewing/app/controller/AppParamsCenterController.java +++ b/src/main/java/com/corewing/app/controller/ParamsCenterController.java @@ -6,10 +6,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.corewing.app.common.Result; import com.corewing.app.dto.CreateParamRequest; import com.corewing.app.dto.UpdateParamRequest; -import com.corewing.app.entity.AppParamsCenter; -import com.corewing.app.service.AppParamsCenterService; +import com.corewing.app.entity.ParamsCenter; +import com.corewing.app.service.ParamsCenterService; import com.corewing.app.util.I18nUtil; -import com.corewing.app.vo.AppParamsCenterVO; +import com.corewing.app.vo.ParamsCenterVO; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -20,11 +20,11 @@ import java.util.List; */ @RestController @RequestMapping("/params") -public class AppParamsCenterController { +public class ParamsCenterController { - private final AppParamsCenterService paramsService; + private final ParamsCenterService paramsService; - public AppParamsCenterController(AppParamsCenterService paramsService) { + public ParamsCenterController(ParamsCenterService paramsService) { this.paramsService = paramsService; } @@ -36,7 +36,7 @@ public class AppParamsCenterController { try { Long userId = StpUtil.getLoginIdAsLong(); - AppParamsCenter params = new AppParamsCenter(); + ParamsCenter params = new ParamsCenter(); params.setUserId(userId); params.setParamName(request.getParamName()); params.setDeviceName(request.getDeviceName()); @@ -66,7 +66,7 @@ public class AppParamsCenterController { Long userId = StpUtil.getLoginIdAsLong(); // 先查询参数是否存在且属于当前用户 - AppParamsCenter existingParam = paramsService.getById(request.getId()); + ParamsCenter existingParam = paramsService.getById(request.getId()); if (existingParam == null) { return Result.error(I18nUtil.getMessage("params.not.found")); } @@ -74,7 +74,7 @@ public class AppParamsCenterController { return Result.error(I18nUtil.getMessage("params.no.permission")); } - AppParamsCenter params = new AppParamsCenter(); + ParamsCenter params = new ParamsCenter(); params.setId(request.getId()); params.setParamName(request.getParamName()); params.setDeviceName(request.getDeviceName()); @@ -103,7 +103,7 @@ public class AppParamsCenterController { Long userId = StpUtil.getLoginIdAsLong(); // 先查询参数是否存在且属于当前用户 - AppParamsCenter existingParam = paramsService.getById(id); + ParamsCenter existingParam = paramsService.getById(id); if (existingParam == null) { return Result.error(I18nUtil.getMessage("params.not.found")); } @@ -125,11 +125,11 @@ public class AppParamsCenterController { * 根据ID查询参数配置 */ @GetMapping("/{id}") - public Result getById(@PathVariable Long id) { + public Result getById(@PathVariable Long id) { try { Long userId = StpUtil.getLoginIdAsLong(); - AppParamsCenterVO params = paramsService.getVOById(id); + ParamsCenterVO params = paramsService.getVOById(id); if (params == null) { return Result.error(I18nUtil.getMessage("params.not.found")); } @@ -147,9 +147,9 @@ public class AppParamsCenterController { * 查询所有参数列表(公开接口,支持飞控型号过滤) */ @GetMapping("/all/list") - public Result> listAll(@RequestParam(required = false) String fcModel) { + public Result> listAll(@RequestParam(required = false) String fcModel) { try { - List list = paramsService.listAllByFcModel(fcModel); + List list = paramsService.listAllByFcModel(fcModel); return Result.success(list); } catch (Exception e) { return Result.error(e.getMessage()); @@ -160,10 +160,10 @@ public class AppParamsCenterController { * 查询当前用户的参数列表(支持飞控型号过滤) */ @GetMapping("/my/list") - public Result> listMy(@RequestParam(required = false) String fcModel) { + public Result> listMy(@RequestParam(required = false) String fcModel) { try { Long userId = StpUtil.getLoginIdAsLong(); - List list = paramsService.listByUserIdAndFcModel(userId, fcModel); + List list = paramsService.listByUserIdAndFcModel(userId, fcModel); return Result.success(list); } catch (Exception e) { return Result.error(e.getMessage()); @@ -174,13 +174,13 @@ public class AppParamsCenterController { * 分页查询所有参数列表(公开接口,支持飞控型号过滤) */ @GetMapping("/all/page") - public Result> pageAll( + public Result> pageAll( @RequestParam(defaultValue = "1") Long current, @RequestParam(defaultValue = "10") Long size, @RequestParam(required = false) String fcModel) { try { - Page page = new Page<>(current, size); - IPage result = paramsService.pageAllByFcModel(fcModel, page); + Page page = new Page<>(current, size); + IPage result = paramsService.pageAllByFcModel(fcModel, page); return Result.success(result); } catch (Exception e) { return Result.error(e.getMessage()); @@ -191,14 +191,14 @@ public class AppParamsCenterController { * 分页查询当前用户的参数列表(支持飞控型号过滤) */ @GetMapping("/my/page") - public Result> pageMy( + public Result> pageMy( @RequestParam(defaultValue = "1") Long current, @RequestParam(defaultValue = "10") Long size, @RequestParam(required = false) String fcModel) { try { Long userId = StpUtil.getLoginIdAsLong(); - Page page = new Page<>(current, size); - IPage result = paramsService.pageByUserIdAndFcModel(userId, fcModel, page); + Page page = new Page<>(current, size); + IPage result = paramsService.pageByUserIdAndFcModel(userId, fcModel, page); return Result.success(result); } catch (Exception e) { return Result.error(e.getMessage()); @@ -211,13 +211,13 @@ public class AppParamsCenterController { @PostMapping("/{id}/download") public Result incrementDownloadCount(@PathVariable Long id) { try { - AppParamsCenter params = paramsService.getById(id); + ParamsCenter params = paramsService.getById(id); if (params == null) { return Result.error(I18nUtil.getMessage("params.not.found")); } // 增加下载次数 - AppParamsCenter updateParams = new AppParamsCenter(); + ParamsCenter updateParams = new ParamsCenter(); updateParams.setId(id); updateParams.setDownloadCount(params.getDownloadCount() + 1); diff --git a/src/main/java/com/corewing/app/controller/AppUserController.java b/src/main/java/com/corewing/app/controller/UserController.java similarity index 88% rename from src/main/java/com/corewing/app/controller/AppUserController.java rename to src/main/java/com/corewing/app/controller/UserController.java index de8c92a..f411ac0 100644 --- a/src/main/java/com/corewing/app/controller/AppUserController.java +++ b/src/main/java/com/corewing/app/controller/UserController.java @@ -6,8 +6,8 @@ import com.corewing.app.dto.LoginRequest; import com.corewing.app.dto.RegisterRequest; import com.corewing.app.dto.SendCodeRequest; import com.corewing.app.dto.UpdatePasswordRequest; -import com.corewing.app.entity.AppUser; -import com.corewing.app.service.AppUserService; +import com.corewing.app.entity.User; +import com.corewing.app.service.UserService; import com.corewing.app.service.VerifyCodeService; import com.corewing.app.util.I18nUtil; import com.corewing.app.util.IpUtil; @@ -22,12 +22,12 @@ import java.util.Map; */ @RestController @RequestMapping("/user") -public class AppUserController { +public class UserController { - private final AppUserService userService; + private final UserService userService; private final VerifyCodeService verifyCodeService; - public AppUserController(AppUserService userService, VerifyCodeService verifyCodeService) { + public UserController(UserService userService, VerifyCodeService verifyCodeService) { this.userService = userService; this.verifyCodeService = verifyCodeService; } @@ -57,7 +57,7 @@ public class AppUserController { String token = userService.login(request.getAccount(), request.getPassword()); // 更新登录IP和归属地 - AppUser user = userService.getByAccount(request.getAccount()); + User user = userService.getByAccount(request.getAccount()); String loginIp = IpUtil.getClientIp(httpRequest); userService.updateLoginInfo(user.getId(), loginIp); @@ -78,7 +78,7 @@ public class AppUserController { @PostMapping("/register") public Result register(@RequestBody RegisterRequest request, HttpServletRequest httpRequest) { try { - AppUser user = new AppUser(); + User user = new User(); user.setUsername(request.getUsername()); user.setPassword(request.getPassword()); user.setEmail(request.getEmail()); @@ -107,9 +107,9 @@ public class AppUserController { * 获取当前登录用户信息 */ @GetMapping("/info") - public Result getUserInfo() { + public Result getUserInfo() { Long userId = StpUtil.getLoginIdAsLong(); - AppUser user = userService.getById(userId); + User user = userService.getById(userId); // 隐藏密码 user.setPassword(null); return Result.success(user); @@ -119,8 +119,8 @@ public class AppUserController { * 根据ID查询用户 */ @GetMapping("/{id}") - public Result getById(@PathVariable Long id) { - AppUser user = userService.getById(id); + public Result getById(@PathVariable Long id) { + User user = userService.getById(id); if (user != null) { // 隐藏密码 user.setPassword(null); @@ -133,7 +133,7 @@ public class AppUserController { * 更新用户信息 */ @PutMapping - public Result update(@RequestBody AppUser user) { + public Result update(@RequestBody User user) { // 不允许通过此接口修改密码 user.setPassword(null); @@ -151,7 +151,7 @@ public class AppUserController { public Result updatePassword(@RequestBody UpdatePasswordRequest request) { try { Long userId = StpUtil.getLoginIdAsLong(); - AppUser user = userService.getById(userId); + User user = userService.getById(userId); // 验证旧密码 String oldPasswordMd5 = org.springframework.util.DigestUtils.md5DigestAsHex( diff --git a/src/main/java/com/corewing/app/entity/AppFeedback.java b/src/main/java/com/corewing/app/entity/Feedback.java similarity index 96% rename from src/main/java/com/corewing/app/entity/AppFeedback.java rename to src/main/java/com/corewing/app/entity/Feedback.java index a5c80fb..09a99ae 100644 --- a/src/main/java/com/corewing/app/entity/AppFeedback.java +++ b/src/main/java/com/corewing/app/entity/Feedback.java @@ -15,7 +15,7 @@ import java.time.LocalDateTime; */ @Data @TableName("app_feedback") -public class AppFeedback implements Serializable { +public class Feedback implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/corewing/app/entity/Firmware.java b/src/main/java/com/corewing/app/entity/Firmware.java new file mode 100644 index 0000000..c746a61 --- /dev/null +++ b/src/main/java/com/corewing/app/entity/Firmware.java @@ -0,0 +1,64 @@ +package com.corewing.app.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 固件实体类 + */ +@Data +@TableName("app_firmware") +public class Firmware implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 固件ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 固件名称 + */ + private String firmwareName; + + /** + * 固件大小(单位:字节) + */ + private Long firmwareSize; + + /** + * 固件描述 + */ + private String firmwareDescription; + + /** + * 固件类型 + */ + private String firmwareType; + + /** + * 固件下载地址 + */ + private String downloadUrl; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/src/main/java/com/corewing/app/entity/AppParamsCenter.java b/src/main/java/com/corewing/app/entity/ParamsCenter.java similarity index 96% rename from src/main/java/com/corewing/app/entity/AppParamsCenter.java rename to src/main/java/com/corewing/app/entity/ParamsCenter.java index 742d326..f63a07d 100644 --- a/src/main/java/com/corewing/app/entity/AppParamsCenter.java +++ b/src/main/java/com/corewing/app/entity/ParamsCenter.java @@ -15,7 +15,7 @@ import java.time.LocalDateTime; */ @Data @TableName("app_params_center") -public class AppParamsCenter implements Serializable { +public class ParamsCenter implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/corewing/app/entity/AppUser.java b/src/main/java/com/corewing/app/entity/User.java similarity index 96% rename from src/main/java/com/corewing/app/entity/AppUser.java rename to src/main/java/com/corewing/app/entity/User.java index e4beb58..d0e28fe 100644 --- a/src/main/java/com/corewing/app/entity/AppUser.java +++ b/src/main/java/com/corewing/app/entity/User.java @@ -15,7 +15,7 @@ import java.time.LocalDateTime; */ @Data @TableName("app_user") -public class AppUser implements Serializable { +public class User implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/corewing/app/mapper/AppFeedbackMapper.java b/src/main/java/com/corewing/app/mapper/FeedbackMapper.java similarity index 62% rename from src/main/java/com/corewing/app/mapper/AppFeedbackMapper.java rename to src/main/java/com/corewing/app/mapper/FeedbackMapper.java index 971760a..14c0ac3 100644 --- a/src/main/java/com/corewing/app/mapper/AppFeedbackMapper.java +++ b/src/main/java/com/corewing/app/mapper/FeedbackMapper.java @@ -1,13 +1,13 @@ package com.corewing.app.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.corewing.app.entity.AppFeedback; +import com.corewing.app.entity.Feedback; import org.apache.ibatis.annotations.Mapper; /** * 问题反馈 Mapper 接口 */ @Mapper -public interface AppFeedbackMapper extends BaseMapper { +public interface FeedbackMapper extends BaseMapper { } diff --git a/src/main/java/com/corewing/app/mapper/FirmwareMapper.java b/src/main/java/com/corewing/app/mapper/FirmwareMapper.java new file mode 100644 index 0000000..ae4f200 --- /dev/null +++ b/src/main/java/com/corewing/app/mapper/FirmwareMapper.java @@ -0,0 +1,13 @@ +package com.corewing.app.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.corewing.app.entity.Firmware; +import org.apache.ibatis.annotations.Mapper; + +/** + * 固件 Mapper 接口 + */ +@Mapper +public interface FirmwareMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/corewing/app/mapper/AppParamsCenterMapper.java b/src/main/java/com/corewing/app/mapper/ParamsCenterMapper.java similarity index 51% rename from src/main/java/com/corewing/app/mapper/AppParamsCenterMapper.java rename to src/main/java/com/corewing/app/mapper/ParamsCenterMapper.java index 27fa3d9..33c48ab 100644 --- a/src/main/java/com/corewing/app/mapper/AppParamsCenterMapper.java +++ b/src/main/java/com/corewing/app/mapper/ParamsCenterMapper.java @@ -3,8 +3,8 @@ package com.corewing.app.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.corewing.app.entity.AppParamsCenter; -import com.corewing.app.vo.AppParamsCenterVO; +import com.corewing.app.entity.ParamsCenter; +import com.corewing.app.vo.ParamsCenterVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -14,30 +14,30 @@ import java.util.List; * 参数配置中心 Mapper 接口 */ @Mapper -public interface AppParamsCenterMapper extends BaseMapper { +public interface ParamsCenterMapper extends BaseMapper { /** * 根据ID查询带用户名的VO */ - AppParamsCenterVO selectVOById(@Param("id") Long id); + ParamsCenterVO selectVOById(@Param("id") Long id); /** * 查询所有参数列表(带用户名) */ - List selectAllVOList(@Param("fcModel") String fcModel); + List selectAllVOList(@Param("fcModel") String fcModel); /** * 分页查询所有参数列表(带用户名) */ - IPage selectAllVOPage(Page page, @Param("fcModel") String fcModel); + IPage selectAllVOPage(Page page, @Param("fcModel") String fcModel); /** * 查询当前用户的参数列表(带用户名) */ - List selectVOListByUserId(@Param("userId") Long userId, @Param("fcModel") String fcModel); + List selectVOListByUserId(@Param("userId") Long userId, @Param("fcModel") String fcModel); /** * 分页查询当前用户的参数列表(带用户名) */ - IPage selectVOPageByUserId(Page page, @Param("userId") Long userId, @Param("fcModel") String fcModel); + IPage selectVOPageByUserId(Page page, @Param("userId") Long userId, @Param("fcModel") String fcModel); } diff --git a/src/main/java/com/corewing/app/mapper/AppUserMapper.java b/src/main/java/com/corewing/app/mapper/UserMapper.java similarity index 64% rename from src/main/java/com/corewing/app/mapper/AppUserMapper.java rename to src/main/java/com/corewing/app/mapper/UserMapper.java index b991b4d..a429543 100644 --- a/src/main/java/com/corewing/app/mapper/AppUserMapper.java +++ b/src/main/java/com/corewing/app/mapper/UserMapper.java @@ -1,13 +1,13 @@ package com.corewing.app.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.corewing.app.entity.AppUser; +import com.corewing.app.entity.User; import org.apache.ibatis.annotations.Mapper; /** * 应用用户 Mapper 接口 */ @Mapper -public interface AppUserMapper extends BaseMapper { +public interface UserMapper extends BaseMapper { } diff --git a/src/main/java/com/corewing/app/service/AppFeedbackService.java b/src/main/java/com/corewing/app/service/FeedbackService.java similarity index 75% rename from src/main/java/com/corewing/app/service/AppFeedbackService.java rename to src/main/java/com/corewing/app/service/FeedbackService.java index e106575..7d5c818 100644 --- a/src/main/java/com/corewing/app/service/AppFeedbackService.java +++ b/src/main/java/com/corewing/app/service/FeedbackService.java @@ -3,14 +3,14 @@ package com.corewing.app.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.corewing.app.entity.AppFeedback; +import com.corewing.app.entity.Feedback; import java.util.List; /** * 问题反馈 Service 接口 */ -public interface AppFeedbackService extends IService { +public interface FeedbackService extends IService { /** * 创建反馈 @@ -18,7 +18,7 @@ public interface AppFeedbackService extends IService { * @param feedback 反馈信息 * @return 是否成功 */ - boolean createFeedback(AppFeedback feedback); + boolean createFeedback(Feedback feedback); /** * 根据用户ID查询反馈列表 @@ -26,7 +26,7 @@ public interface AppFeedbackService extends IService { * @param userId 用户ID * @return 反馈列表 */ - List listByUserId(Long userId); + List listByUserId(Long userId); /** * 分页查询反馈列表 @@ -37,7 +37,7 @@ public interface AppFeedbackService extends IService { * @param status 状态(可选) * @return 分页结果 */ - IPage pageList(Page page, Long userId, String feedbackType, Integer status); + IPage pageList(Page page, Long userId, String feedbackType, Integer status); /** * 更新反馈状态 diff --git a/src/main/java/com/corewing/app/service/FirmwareService.java b/src/main/java/com/corewing/app/service/FirmwareService.java new file mode 100644 index 0000000..f5f87fa --- /dev/null +++ b/src/main/java/com/corewing/app/service/FirmwareService.java @@ -0,0 +1,18 @@ +package com.corewing.app.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.corewing.app.entity.Firmware; + +/** + * 固件 Service 接口 + */ +public interface FirmwareService extends IService { + + /** + * 根据固件名称查询固件 + * + * @param firmwareName 固件名称 + * @return 固件信息 + */ + Firmware getByFirmwareName(String firmwareName); +} diff --git a/src/main/java/com/corewing/app/service/AppParamsCenterService.java b/src/main/java/com/corewing/app/service/ParamsCenterService.java similarity index 68% rename from src/main/java/com/corewing/app/service/AppParamsCenterService.java rename to src/main/java/com/corewing/app/service/ParamsCenterService.java index 3ef8085..6a183e1 100644 --- a/src/main/java/com/corewing/app/service/AppParamsCenterService.java +++ b/src/main/java/com/corewing/app/service/ParamsCenterService.java @@ -3,15 +3,15 @@ package com.corewing.app.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.corewing.app.entity.AppParamsCenter; -import com.corewing.app.vo.AppParamsCenterVO; +import com.corewing.app.entity.ParamsCenter; +import com.corewing.app.vo.ParamsCenterVO; import java.util.List; /** * 参数配置中心 Service 接口 */ -public interface AppParamsCenterService extends IService { +public interface ParamsCenterService extends IService { /** * 根据ID查询参数VO(带用户名) @@ -19,7 +19,7 @@ public interface AppParamsCenterService extends IService { * @param id 参数ID * @return 参数VO */ - AppParamsCenterVO getVOById(Long id); + ParamsCenterVO getVOById(Long id); /** * 根据用户ID和飞控型号查询参数列表(带用户名) @@ -28,7 +28,7 @@ public interface AppParamsCenterService extends IService { * @param fcModel 飞控型号 * @return 参数列表 */ - List listByUserIdAndFcModel(Long userId, String fcModel); + List listByUserIdAndFcModel(Long userId, String fcModel); /** * 分页查询用户的参数列表(支持飞控型号过滤,带用户名) @@ -38,7 +38,7 @@ public interface AppParamsCenterService extends IService { * @param page 分页对象 * @return 分页结果 */ - IPage pageByUserIdAndFcModel(Long userId, String fcModel, Page page); + IPage pageByUserIdAndFcModel(Long userId, String fcModel, Page page); /** * 根据飞控型号查询所有参数列表(带用户名) @@ -46,7 +46,7 @@ public interface AppParamsCenterService extends IService { * @param fcModel 飞控型号 * @return 参数列表 */ - List listAllByFcModel(String fcModel); + List listAllByFcModel(String fcModel); /** * 分页查询所有参数列表(支持飞控型号过滤,带用户名) @@ -55,5 +55,5 @@ public interface AppParamsCenterService extends IService { * @param page 分页对象 * @return 分页结果 */ - IPage pageAllByFcModel(String fcModel, Page page); + IPage pageAllByFcModel(String fcModel, Page page); } diff --git a/src/main/java/com/corewing/app/service/AppUserService.java b/src/main/java/com/corewing/app/service/UserService.java similarity index 80% rename from src/main/java/com/corewing/app/service/AppUserService.java rename to src/main/java/com/corewing/app/service/UserService.java index 8ab997a..89f42a6 100644 --- a/src/main/java/com/corewing/app/service/AppUserService.java +++ b/src/main/java/com/corewing/app/service/UserService.java @@ -1,12 +1,12 @@ package com.corewing.app.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.corewing.app.entity.AppUser; +import com.corewing.app.entity.User; /** * 应用用户 Service 接口 */ -public interface AppUserService extends IService { +public interface UserService extends IService { /** * 根据用户名查询用户 @@ -14,7 +14,7 @@ public interface AppUserService extends IService { * @param username 用户名 * @return 用户信息 */ - AppUser getByUsername(String username); + User getByUsername(String username); /** * 根据账号查询用户(支持用户名/邮箱/手机号) @@ -22,7 +22,7 @@ public interface AppUserService extends IService { * @param account 账号 * @return 用户信息 */ - AppUser getByAccount(String account); + User getByAccount(String account); /** * 根据邮箱查询用户 @@ -30,7 +30,7 @@ public interface AppUserService extends IService { * @param email 邮箱 * @return 用户信息 */ - AppUser getByEmail(String email); + User getByEmail(String email); /** * 根据手机号查询用户 @@ -38,7 +38,7 @@ public interface AppUserService extends IService { * @param telephone 手机号 * @return 用户信息 */ - AppUser getByTelephone(String telephone); + User getByTelephone(String telephone); /** * 用户登录 @@ -57,7 +57,7 @@ public interface AppUserService extends IService { * @param registerIp 注册IP * @return 是否成功 */ - boolean register(AppUser user, String code, String registerIp); + boolean register(User user, String code, String registerIp); /** * 更新登录IP diff --git a/src/main/java/com/corewing/app/service/impl/AppFeedbackServiceImpl.java b/src/main/java/com/corewing/app/service/impl/FeedbackServiceImpl.java similarity index 60% rename from src/main/java/com/corewing/app/service/impl/AppFeedbackServiceImpl.java rename to src/main/java/com/corewing/app/service/impl/FeedbackServiceImpl.java index 5791158..3263503 100644 --- a/src/main/java/com/corewing/app/service/impl/AppFeedbackServiceImpl.java +++ b/src/main/java/com/corewing/app/service/impl/FeedbackServiceImpl.java @@ -4,9 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.corewing.app.entity.AppFeedback; -import com.corewing.app.mapper.AppFeedbackMapper; -import com.corewing.app.service.AppFeedbackService; +import com.corewing.app.entity.Feedback; +import com.corewing.app.mapper.FeedbackMapper; +import com.corewing.app.service.FeedbackService; import com.corewing.app.util.I18nUtil; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -17,10 +17,10 @@ import java.util.List; * 问题反馈 Service 实现类 */ @Service -public class AppFeedbackServiceImpl extends ServiceImpl implements AppFeedbackService { +public class FeedbackServiceImpl extends ServiceImpl implements FeedbackService { @Override - public boolean createFeedback(AppFeedback feedback) { + public boolean createFeedback(Feedback feedback) { // 设置默认状态为待处理 if (feedback.getStatus() == null) { feedback.setStatus(0); @@ -29,33 +29,33 @@ public class AppFeedbackServiceImpl extends ServiceImpl listByUserId(Long userId) { + public List listByUserId(Long userId) { if (userId == null) { throw new RuntimeException(I18nUtil.getMessage("error.feedback.user.id.empty")); } - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(AppFeedback::getUserId, userId) - .orderByDesc(AppFeedback::getCreateTime); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Feedback::getUserId, userId) + .orderByDesc(Feedback::getCreateTime); return this.list(wrapper); } @Override - public IPage pageList(Page page, Long userId, String feedbackType, Integer status) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + public IPage pageList(Page page, Long userId, String feedbackType, Integer status) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); // 条件查询 if (userId != null) { - wrapper.eq(AppFeedback::getUserId, userId); + wrapper.eq(Feedback::getUserId, userId); } if (StringUtils.hasText(feedbackType)) { - wrapper.eq(AppFeedback::getFeedbackType, feedbackType); + wrapper.eq(Feedback::getFeedbackType, feedbackType); } if (status != null) { - wrapper.eq(AppFeedback::getStatus, status); + wrapper.eq(Feedback::getStatus, status); } // 按创建时间倒序排序 - wrapper.orderByDesc(AppFeedback::getCreateTime); + wrapper.orderByDesc(Feedback::getCreateTime); return this.page(page, wrapper); } @@ -69,7 +69,7 @@ public class AppFeedbackServiceImpl extends ServiceImpl implements FirmwareService { + + @Override + public Firmware getByFirmwareName(String firmwareName) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Firmware::getFirmwareName, firmwareName); + return this.getOne(wrapper); + } +} diff --git a/src/main/java/com/corewing/app/service/impl/AppParamsCenterServiceImpl.java b/src/main/java/com/corewing/app/service/impl/ParamsCenterServiceImpl.java similarity index 50% rename from src/main/java/com/corewing/app/service/impl/AppParamsCenterServiceImpl.java rename to src/main/java/com/corewing/app/service/impl/ParamsCenterServiceImpl.java index a1f18c0..f3ae68b 100644 --- a/src/main/java/com/corewing/app/service/impl/AppParamsCenterServiceImpl.java +++ b/src/main/java/com/corewing/app/service/impl/ParamsCenterServiceImpl.java @@ -3,10 +3,10 @@ package com.corewing.app.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.corewing.app.entity.AppParamsCenter; -import com.corewing.app.mapper.AppParamsCenterMapper; -import com.corewing.app.service.AppParamsCenterService; -import com.corewing.app.vo.AppParamsCenterVO; +import com.corewing.app.entity.ParamsCenter; +import com.corewing.app.mapper.ParamsCenterMapper; +import com.corewing.app.service.ParamsCenterService; +import com.corewing.app.vo.ParamsCenterVO; import org.springframework.stereotype.Service; import java.util.List; @@ -15,30 +15,30 @@ import java.util.List; * 参数配置中心 Service 实现类 */ @Service -public class AppParamsCenterServiceImpl extends ServiceImpl implements AppParamsCenterService { +public class ParamsCenterServiceImpl extends ServiceImpl implements ParamsCenterService { @Override - public AppParamsCenterVO getVOById(Long id) { + public ParamsCenterVO getVOById(Long id) { return this.baseMapper.selectVOById(id); } @Override - public List listByUserIdAndFcModel(Long userId, String fcModel) { + public List listByUserIdAndFcModel(Long userId, String fcModel) { return this.baseMapper.selectVOListByUserId(userId, fcModel); } @Override - public IPage pageByUserIdAndFcModel(Long userId, String fcModel, Page page) { + public IPage pageByUserIdAndFcModel(Long userId, String fcModel, Page page) { return this.baseMapper.selectVOPageByUserId(page, userId, fcModel); } @Override - public List listAllByFcModel(String fcModel) { + public List listAllByFcModel(String fcModel) { return this.baseMapper.selectAllVOList(fcModel); } @Override - public IPage pageAllByFcModel(String fcModel, Page page) { + public IPage pageAllByFcModel(String fcModel, Page page) { return this.baseMapper.selectAllVOPage(page, fcModel); } } diff --git a/src/main/java/com/corewing/app/service/impl/AppUserServiceImpl.java b/src/main/java/com/corewing/app/service/impl/UserServiceImpl.java similarity index 76% rename from src/main/java/com/corewing/app/service/impl/AppUserServiceImpl.java rename to src/main/java/com/corewing/app/service/impl/UserServiceImpl.java index 2ff8df2..1657d3c 100644 --- a/src/main/java/com/corewing/app/service/impl/AppUserServiceImpl.java +++ b/src/main/java/com/corewing/app/service/impl/UserServiceImpl.java @@ -3,9 +3,9 @@ package com.corewing.app.service.impl; import cn.dev33.satoken.stp.StpUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.corewing.app.entity.AppUser; -import com.corewing.app.mapper.AppUserMapper; -import com.corewing.app.service.AppUserService; +import com.corewing.app.entity.User; +import com.corewing.app.mapper.UserMapper; +import com.corewing.app.service.UserService; import com.corewing.app.service.VerifyCodeService; import com.corewing.app.util.I18nUtil; import com.corewing.app.util.Ip2RegionUtil; @@ -19,62 +19,62 @@ import java.nio.charset.StandardCharsets; * 应用用户 Service 实现类 */ @Service -public class AppUserServiceImpl extends ServiceImpl implements AppUserService { +public class UserServiceImpl extends ServiceImpl implements UserService { private final VerifyCodeService verifyCodeService; private final Ip2RegionUtil ip2RegionUtil; - public AppUserServiceImpl(VerifyCodeService verifyCodeService, Ip2RegionUtil ip2RegionUtil) { + public UserServiceImpl(VerifyCodeService verifyCodeService, Ip2RegionUtil ip2RegionUtil) { this.verifyCodeService = verifyCodeService; this.ip2RegionUtil = ip2RegionUtil; } @Override - public AppUser getByUsername(String username) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(AppUser::getUsername, username); + public User getByUsername(String username) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(User::getUsername, username); return this.getOne(wrapper); } @Override - public AppUser getByAccount(String account) { + public User getByAccount(String account) { if (!StringUtils.hasText(account)) { return null; } - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(AppUser::getUsername, account) + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(User::getUsername, account) .or() - .eq(AppUser::getEmail, account) + .eq(User::getEmail, account) .or() - .eq(AppUser::getTelephone, account); + .eq(User::getTelephone, account); return this.getOne(wrapper); } @Override - public AppUser getByEmail(String email) { + public User getByEmail(String email) { if (!StringUtils.hasText(email)) { return null; } - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(AppUser::getEmail, email); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(User::getEmail, email); return this.getOne(wrapper); } @Override - public AppUser getByTelephone(String telephone) { + public User getByTelephone(String telephone) { if (!StringUtils.hasText(telephone)) { return null; } - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(AppUser::getTelephone, telephone); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(User::getTelephone, telephone); return this.getOne(wrapper); } @Override public String login(String account, String password) { // 查询用户(支持用户名/邮箱/手机号) - AppUser user = getByAccount(account); + User user = getByAccount(account); if (user == null) { throw new RuntimeException(I18nUtil.getMessage("error.user.not.found")); } @@ -96,9 +96,9 @@ public class AppUserServiceImpl extends ServiceImpl impl } @Override - public boolean register(AppUser user, String code, String registerIp) { + public boolean register(User user, String code, String registerIp) { // 检查用户名是否已存在 - AppUser existUser = getByUsername(user.getUsername()); + User existUser = getByUsername(user.getUsername()); if (existUser != null) { throw new RuntimeException(I18nUtil.getMessage("error.username.exists")); } @@ -152,7 +152,7 @@ public class AppUserServiceImpl extends ServiceImpl impl @Override public void updateLoginIp(Long userId, String loginIp) { - AppUser user = new AppUser(); + User user = new User(); user.setId(userId); user.setLoginIp(loginIp); this.updateById(user); @@ -160,7 +160,7 @@ public class AppUserServiceImpl extends ServiceImpl impl @Override public void updateLoginInfo(Long userId, String loginIp) { - AppUser user = new AppUser(); + User user = new User(); user.setId(userId); user.setLoginIp(loginIp); user.setLoginRegion(ip2RegionUtil.getRegion(loginIp)); diff --git a/src/main/java/com/corewing/app/vo/AppParamsCenterVO.java b/src/main/java/com/corewing/app/vo/ParamsCenterVO.java similarity index 96% rename from src/main/java/com/corewing/app/vo/AppParamsCenterVO.java rename to src/main/java/com/corewing/app/vo/ParamsCenterVO.java index 41a39c6..27f8133 100644 --- a/src/main/java/com/corewing/app/vo/AppParamsCenterVO.java +++ b/src/main/java/com/corewing/app/vo/ParamsCenterVO.java @@ -8,7 +8,7 @@ import java.time.LocalDateTime; * 参数配置中心 VO(用于返回给前端) */ @Data -public class AppParamsCenterVO { +public class ParamsCenterVO { /** * 主键ID diff --git a/src/main/resources/db/firmware.sql b/src/main/resources/db/firmware.sql new file mode 100644 index 0000000..8c7a000 --- /dev/null +++ b/src/main/resources/db/firmware.sql @@ -0,0 +1,23 @@ +-- 固件表 +DROP TABLE IF EXISTS `app_firmware`; + +CREATE TABLE `app_firmware` ( + `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '固件ID', + `firmware_name` VARCHAR(100) NOT NULL COMMENT '固件名称', + `firmware_size` BIGINT(20) DEFAULT NULL COMMENT '固件大小(单位:字节)', + `firmware_description` TEXT DEFAULT NULL COMMENT '固件描述', + `firmware_type` VARCHAR(50) DEFAULT NULL COMMENT '固件类型', + `download_url` VARCHAR(500) DEFAULT NULL COMMENT '固件下载地址', + `create_time` DATETIME DEFAULT NULL COMMENT '创建时间', + `update_time` DATETIME DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_firmware_name` (`firmware_name`), + KEY `idx_firmware_type` (`firmware_type`), + KEY `idx_create_time` (`create_time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='固件表'; + +-- 插入测试数据(可选) +INSERT INTO `app_firmware` (`firmware_name`, `firmware_size`, `firmware_description`, `firmware_type`, `download_url`) +VALUES +('固件 v1.0.0', 1048576, '第一个版本的固件', '主控固件', 'https://example.com/firmware/v1.0.0.bin'), +('固件 v1.0.1', 1049600, '修复了若干 bug 的版本', '主控固件', 'https://example.com/firmware/v1.0.1.bin'); diff --git a/src/main/resources/i18n/messages_en_US.properties b/src/main/resources/i18n/messages_en_US.properties index 8f655b1..8078f2f 100644 --- a/src/main/resources/i18n/messages_en_US.properties +++ b/src/main/resources/i18n/messages_en_US.properties @@ -129,3 +129,14 @@ params.not.found=Parameter not found params.no.permission=No permission to operate this parameter params.download.success=Download successful params.download.failed=Download failed + +# ==================== Firmware Management Module ==================== +# Firmware Controller +firmware.name.exists=Firmware name already exists +firmware.add.success=Firmware added successfully +firmware.add.failed=Failed to add firmware +firmware.delete.success=Firmware deleted successfully +firmware.delete.failed=Failed to delete firmware +firmware.update.success=Firmware updated successfully +firmware.update.failed=Failed to update firmware +firmware.not.found=Firmware not found diff --git a/src/main/resources/i18n/messages_zh_CN.properties b/src/main/resources/i18n/messages_zh_CN.properties index 8dd8fb5..e2b87f9 100644 --- a/src/main/resources/i18n/messages_zh_CN.properties +++ b/src/main/resources/i18n/messages_zh_CN.properties @@ -129,3 +129,14 @@ params.not.found=参数不存在 params.no.permission=无权限操作该参数 params.download.success=下载成功 params.download.failed=下载失败 + +# ==================== 固件管理模块 ==================== +# 固件Controller +firmware.name.exists=固件名称已存在 +firmware.add.success=固件添加成功 +firmware.add.failed=固件添加失败 +firmware.delete.success=固件删除成功 +firmware.delete.failed=固件删除失败 +firmware.update.success=固件更新成功 +firmware.update.failed=固件更新失败 +firmware.not.found=固件不存在 diff --git a/src/main/resources/mapper/AppParamsCenterMapper.xml b/src/main/resources/mapper/ParamsCenterMapper.xml similarity index 95% rename from src/main/resources/mapper/AppParamsCenterMapper.xml rename to src/main/resources/mapper/ParamsCenterMapper.xml index 92582e8..374f529 100644 --- a/src/main/resources/mapper/AppParamsCenterMapper.xml +++ b/src/main/resources/mapper/ParamsCenterMapper.xml @@ -1,9 +1,9 @@ - + - +