40 lines
1.7 KiB
TypeScript
40 lines
1.7 KiB
TypeScript
/** 数据权限分组 API 适配(任务 59;module 13 task 253 扩展 CRUD)。 */
|
||
import { http } from '@/api/http'
|
||
import { unwrap } from '@/api/envelope'
|
||
import {
|
||
parseShopGroupItem,
|
||
parseShopGroupList,
|
||
toShopGroupCreatePayload,
|
||
toShopGroupUpdatePayload,
|
||
type ShopGroupItem,
|
||
} from './shop-group-model'
|
||
|
||
export const SHOP_GROUPS_ENDPOINT = '/api/admin/shop-manages/groups'
|
||
|
||
export async function fetchShopGroups(): Promise<ShopGroupItem[]> {
|
||
const { data } = await http.get<unknown>(SHOP_GROUPS_ENDPOINT)
|
||
return parseShopGroupList(data)
|
||
}
|
||
|
||
/** 新建分组:POST /api/admin/shop-manages/groups(创建人 = 组长 = 当前操作者)。 */
|
||
export async function createShopGroup(name: string, memberUserIds: number[], createdById: number): Promise<ShopGroupItem> {
|
||
const { data } = await http.post<unknown>(SHOP_GROUPS_ENDPOINT, toShopGroupCreatePayload(name, memberUserIds, createdById))
|
||
const created = parseShopGroupItem(unwrap<unknown>(data))
|
||
if (!created) throw new Error('创建分组响应异常:缺少分组数据')
|
||
return created
|
||
}
|
||
|
||
/** 更新分组:PUT /api/admin/shop-manages/groups/{id}。 */
|
||
export async function updateShopGroup(id: number, name: string, memberUserIds: number[]): Promise<ShopGroupItem> {
|
||
const { data } = await http.put<unknown>(`${SHOP_GROUPS_ENDPOINT}/${id}`, toShopGroupUpdatePayload(name, memberUserIds))
|
||
const updated = parseShopGroupItem(unwrap<unknown>(data))
|
||
if (!updated) throw new Error('更新分组响应异常:缺少分组数据')
|
||
return updated
|
||
}
|
||
|
||
/** 删除分组:DELETE /api/admin/shop-manages/groups/{id}。 */
|
||
export async function deleteShopGroup(id: number): Promise<void> {
|
||
const { data } = await http.delete<unknown>(`${SHOP_GROUPS_ENDPOINT}/${id}`)
|
||
unwrap<unknown>(data)
|
||
}
|