feat: add managed online updates
Signed Release / release (push) Successful in 9m24s

This commit is contained in:
Qiufeng
2026-08-04 20:05:50 +08:00
parent 4f2ea26e8e
commit d3892320dd
20 changed files with 1365 additions and 111 deletions
@@ -4,6 +4,7 @@ import com.kaidi.oa.common.ApiException;
import com.kaidi.oa.common.ApiResp;
import com.kaidi.oa.domain.SysUser;
import com.kaidi.oa.service.AuthService;
import com.kaidi.oa.service.AuthorizationService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.constraints.NotBlank;
import org.springframework.web.bind.annotation.GetMapping;
@@ -14,6 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeSet;
/**
* Authentication endpoints. Issues an opaque token on login; the frontend sends
@@ -25,10 +27,13 @@ public class AuthController {
private final AuthService authService;
private final CurrentUserResolver currentUser;
private final AuthorizationService authorizationService;
public AuthController(AuthService authService, CurrentUserResolver currentUser) {
public AuthController(AuthService authService, CurrentUserResolver currentUser,
AuthorizationService authorizationService) {
this.authService = authService;
this.currentUser = currentUser;
this.authorizationService = authorizationService;
}
public record LoginRequest(@NotBlank String loginName, @NotBlank String password) {
@@ -65,6 +70,7 @@ public class AuthController {
map.put("deptId", user.getDeptId());
map.put("title", user.getTitle());
map.put("email", user.getEmail());
map.put("roles", new TreeSet<>(authorizationService.roleCodesOf(user.getId())));
return map;
}
}
@@ -1,12 +1,16 @@
package com.kaidi.oa.web;
import com.kaidi.oa.common.ApiResp;
import com.kaidi.oa.service.SystemUpdateConfigService;
import com.kaidi.oa.service.SystemUpdateConfigService.UpdateConfig;
import com.kaidi.oa.service.SystemUpdateConfigService.UpdateConfigRequest;
import com.kaidi.oa.service.SystemUpdateService;
import com.kaidi.oa.service.SystemUpdateService.UpdateStatus;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -17,9 +21,24 @@ import org.springframework.web.bind.annotation.RestController;
public class SystemUpdateController {
private final SystemUpdateService updateService;
private final SystemUpdateConfigService configService;
public SystemUpdateController(SystemUpdateService updateService) {
public SystemUpdateController(SystemUpdateService updateService, SystemUpdateConfigService configService) {
this.updateService = updateService;
this.configService = configService;
}
@GetMapping("/config")
public ApiResp<UpdateConfig> config() {
return ApiResp.ok(configService.get());
}
@PutMapping("/config")
public ApiResp<UpdateConfig> saveConfig(@Valid @RequestBody UpdateConfigRequest request) {
updateService.ensureConfigurationMutable();
UpdateConfig saved = configService.save(request);
updateService.configurationChanged();
return ApiResp.ok(saved);
}
@GetMapping("/status")