feat(app-version): 加批量创建接口
This commit is contained in:
1 parent
47f19a98eb
commit
4f80a691d1
3 files changed
+69
No files matched your search
+13
@@ -12,6 +12,8 @@ import com.fruitshorts.system.vo.AppVersionSaveReqVO;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -56,6 +58,17 @@ public class AppVersionAdminController {
|
||||
return Result.ok(appVersionService.create(req));
|
||||
}
|
||||
|
||||
@Operation(summary = "批量新建版本(一次事务)")
|
||||
@PostMapping("/batch")
|
||||
@PreAuthorize("@ss.hasPermission('app-version:create')")
|
||||
@OperationLog(module = "版本管理", action = "批量新建版本")
|
||||
public Result<java.util.List<Long>> batchCreate(
|
||||
@NotEmpty(message = "请至少传一条")
|
||||
@Size(max = 16, message = "单次不超过 16 条")
|
||||
@Valid @RequestBody java.util.List<@Valid AppVersionSaveReqVO> reqs) {
|
||||
return Result.ok(appVersionService.batchCreate(reqs));
|
||||
}
|
||||
|
||||
@Operation(summary = "编辑版本")
|
||||
@PutMapping("/{id}")
|
||||
@PreAuthorize("@ss.hasPermission('app-version:update')")
|
||||
|
||||
+24
@@ -64,6 +64,30 @@ public class AppVersionService {
|
||||
return v.getId();
|
||||
}
|
||||
|
||||
/** 批量新建:一次事务全插或全回滚。 */
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public List<Long> batchCreate(List<AppVersionSaveReqVO> reqs) {
|
||||
if (reqs == null || reqs.isEmpty()) {
|
||||
throw new ServiceException(ErrorCode.BAD_REQUEST, "请至少传一条");
|
||||
}
|
||||
if (reqs.size() > 16) {
|
||||
throw new ServiceException(ErrorCode.BAD_REQUEST, "单次不超过 16 条");
|
||||
}
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
List<Long> ids = new java.util.ArrayList<>();
|
||||
for (AppVersionSaveReqVO req : reqs) {
|
||||
String platform = normalizePlatform(req.getPlatform());
|
||||
checkDuplicate(platform, req.getVersionCode(), null);
|
||||
AppVersion v = new AppVersion();
|
||||
applyFields(v, req, platform);
|
||||
v.setStatus(1);
|
||||
v.setReleasedAt(now);
|
||||
versionMapper.insert(v);
|
||||
ids.add(v.getId());
|
||||
}
|
||||
return ids;
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(Long id, AppVersionSaveReqVO req) {
|
||||
String platform = normalizePlatform(req.getPlatform());
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
-- Author: fruit.com.cn
|
||||
-- 修正 App 版本管理的菜单与权限:
|
||||
-- 1) 删除误加的 BUTTON 类型菜单 40-44(项目其他模块都只在 permission_code 里挂权限点,
|
||||
-- 不在 sys_menu 里建按钮行,否则前端菜单渲染会多出无用条目)
|
||||
-- 2) 在 sys_permission 里加 app-version 完整权限点
|
||||
-- 3) 给超级管理员(role_id=1)授权这些权限点
|
||||
|
||||
-- 1) 删除多余的 BUTTON 菜单
|
||||
DELETE FROM sys_role_menu WHERE menu_id IN (40, 41, 42, 43, 44);
|
||||
DELETE FROM sys_menu WHERE id IN (40, 41, 42, 43, 44);
|
||||
|
||||
-- 2) 权限点(code 唯一约束兜底)
|
||||
INSERT INTO sys_permission (id, code, name, group_name, type, sort) VALUES
|
||||
(50000101, 'app-version:list', '版本管理-查看', 'App 版本', 'BUTTON', 1),
|
||||
(50000102, 'app-version:create', '版本管理-新增', 'App 版本', 'BUTTON', 2),
|
||||
(50000103, 'app-version:update', '版本管理-编辑', 'App 版本', 'BUTTON', 3),
|
||||
(50000104, 'app-version:delete', '版本管理-删除', 'App 版本', 'BUTTON', 4)
|
||||
ON CONFLICT (code) DO NOTHING;
|
||||
|
||||
-- 3) 超管授权(id 按现有 MAX+1 顺延)
|
||||
INSERT INTO sys_role_permission (id, role_id, permission_id)
|
||||
SELECT 50001, 1, p.id FROM sys_permission p WHERE p.code = 'app-version:list'
|
||||
ON CONFLICT DO NOTHING;
|
||||
INSERT INTO sys_role_permission (id, role_id, permission_id)
|
||||
SELECT 50002, 1, p.id FROM sys_permission p WHERE p.code = 'app-version:create'
|
||||
ON CONFLICT DO NOTHING;
|
||||
INSERT INTO sys_role_permission (id, role_id, permission_id)
|
||||
SELECT 50003, 1, p.id FROM sys_permission p WHERE p.code = 'app-version:update'
|
||||
ON CONFLICT DO NOTHING;
|
||||
INSERT INTO sys_role_permission (id, role_id, permission_id)
|
||||
SELECT 50004, 1, p.id FROM sys_permission p WHERE p.code = 'app-version:delete'
|
||||
ON CONFLICT DO NOTHING;
|
||||
Reference in new issue
Block a user