feat(device): 重构应用图标静态资源路径并新增停止应用功能
- 将图标访问路径从 /api/v1/device/app_icon 迁移至 /static/app_icon,避免与业务 Controller 命名空间冲突,并添加 immutable 长缓存策略 - 新增 STOP_APP(39) 操作类型及 DeviceOpsController.stopApp 接口,支持强制停止应用 - 图标上传接口增加 appName 参数,支持应用名称上报与刷新,并做长度截断保护 - 图标锁定场景改用 BusinessException(APP_ICON_LOCKED) 替代 RuntimeException,设备端可据此识别终态不再重试 - 新增 /static/** 路径到安全白名单,允许 img 标签无 token 访问图标资源 - 同步更新数据库表结构注释及实体/VO 字段
This commit is contained in:
@@ -5,6 +5,7 @@ import com.youlai.boot.common.annotation.Log;
|
||||
import com.youlai.boot.common.config.FilePath;
|
||||
import com.youlai.boot.common.enums.ActionTypeEnum;
|
||||
import com.youlai.boot.common.enums.LogModuleEnum;
|
||||
import com.youlai.boot.common.exception.BusinessException;
|
||||
import com.youlai.boot.common.result.Result;
|
||||
import com.youlai.boot.common.util.HashUtils;
|
||||
import com.youlai.boot.device.model.entity.SnDeviceSystemInfo;
|
||||
@@ -489,6 +490,7 @@ public class MobileController {
|
||||
public Result<String> uploadAppIcon(
|
||||
@RequestHeader(value = "X-Device-SN") String sn,
|
||||
@RequestParam String packageName,
|
||||
@RequestParam(required = false) String appName,
|
||||
@RequestPart(value = "file") MultipartFile file
|
||||
) {
|
||||
try {
|
||||
@@ -498,8 +500,13 @@ public class MobileController {
|
||||
if (packageName == null || packageName.trim().isEmpty()) {
|
||||
return Result.failed("应用包名不能为空");
|
||||
}
|
||||
String iconUrl = appIconService.uploadIcon(packageName, file, "device");
|
||||
String iconUrl = appIconService.uploadIcon(packageName, appName, file, "device");
|
||||
return Result.success(iconUrl);
|
||||
} catch (BusinessException e) {
|
||||
// 业务异常(如图标已锁定)需保留原始业务码,供设备端识别为终态、不再重试;
|
||||
// 不可被下方 catch(Exception) 压平成通用系统错误码
|
||||
logger.info("uploadAppIcon rejected, sn: {}, packageName: {}, reason: {}", sn, packageName, e.getMessage());
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
logger.error("uploadAppIcon error, sn: {}", sn, e);
|
||||
return Result.failed("上传应用图标失败: " + e.getMessage());
|
||||
|
||||
Reference in New Issue
Block a user