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.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.Size;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@@ -56,6 +58,17 @@ public class AppVersionAdminController {
|
|||||||
return Result.ok(appVersionService.create(req));
|
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 = "编辑版本")
|
@Operation(summary = "编辑版本")
|
||||||
@PutMapping("/{id}")
|
@PutMapping("/{id}")
|
||||||
@PreAuthorize("@ss.hasPermission('app-version:update')")
|
@PreAuthorize("@ss.hasPermission('app-version:update')")
|
||||||
|
|||||||
+24
@@ -64,6 +64,30 @@ public class AppVersionService {
|
|||||||
return v.getId();
|
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)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void update(Long id, AppVersionSaveReqVO req) {
|
public void update(Long id, AppVersionSaveReqVO req) {
|
||||||
String platform = normalizePlatform(req.getPlatform());
|
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