feat(shop): 添加文章详情页面并优化购物车样式

- 新增文章详情页面组件,用于显示文章内容
- 优化购物车页面样式,增加空购物车状态的透明背景
- 添加多个购物相关 API 接口,包括优惠券、订单等
- 更新环境配置,修改 API 基础 URL
- 调整发现页面布局,增加文章详情入口
This commit is contained in:
2025-08-13 01:37:07 +08:00
parent 1802a27234
commit 1c2e00b7ba
21 changed files with 1072 additions and 179 deletions

View File

@@ -0,0 +1,101 @@
import request from '@/utils/request';
import type { ApiResult, PageResult } from '@/api/index';
import type { ShopCoupon, ShopCouponParam } from './model';
/**
* 分页查询优惠券
*/
export async function pageShopCoupon(params: ShopCouponParam) {
const res = await request.get<ApiResult<PageResult<ShopCoupon>>>(
'/shop/shop-coupon/page',
params
);
if (res.code === 0) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 查询优惠券列表
*/
export async function listShopCoupon(params?: ShopCouponParam) {
const res = await request.get<ApiResult<ShopCoupon[]>>(
'/shop/shop-coupon',
params
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 添加优惠券
*/
export async function addShopCoupon(data: ShopCoupon) {
const res = await request.post<ApiResult<unknown>>(
'/shop/shop-coupon',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 修改优惠券
*/
export async function updateShopCoupon(data: ShopCoupon) {
const res = await request.put<ApiResult<unknown>>(
'/shop/shop-coupon',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 删除优惠券
*/
export async function removeShopCoupon(id?: number) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-coupon/' + id
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 批量删除优惠券
*/
export async function removeBatchShopCoupon(data: (number | undefined)[]) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-coupon/batch',
{
data
}
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 根据id查询优惠券
*/
export async function getShopCoupon(id: number) {
const res = await request.get<ApiResult<ShopCoupon>>(
'/shop/shop-coupon/' + id
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}

View File

@@ -0,0 +1,101 @@
import request from '@/utils/request';
import type { ApiResult, PageResult } from '@/api/index';
import type { ShopDealerApply, ShopDealerApplyParam } from './model';
/**
* 分页查询分销商申请记录表
*/
export async function pageShopDealerApply(params: ShopDealerApplyParam) {
const res = await request.get<ApiResult<PageResult<ShopDealerApply>>>(
'/shop/shop-dealer-apply/page',
params
);
if (res.code === 0) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 查询分销商申请记录表列表
*/
export async function listShopDealerApply(params?: ShopDealerApplyParam) {
const res = await request.get<ApiResult<ShopDealerApply[]>>(
'/shop/shop-dealer-apply',
params
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 添加分销商申请记录表
*/
export async function addShopDealerApply(data: ShopDealerApply) {
const res = await request.post<ApiResult<unknown>>(
'/shop/shop-dealer-apply',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 修改分销商申请记录表
*/
export async function updateShopDealerApply(data: ShopDealerApply) {
const res = await request.put<ApiResult<unknown>>(
'/shop/shop-dealer-apply',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 删除分销商申请记录表
*/
export async function removeShopDealerApply(id?: number) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-dealer-apply/' + id
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 批量删除分销商申请记录表
*/
export async function removeBatchShopDealerApply(data: (number | undefined)[]) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-dealer-apply/batch',
{
data
}
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 根据id查询分销商申请记录表
*/
export async function getShopDealerApply(id: number) {
const res = await request.get<ApiResult<ShopDealerApply>>(
'/shop/shop-dealer-apply/' + id
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}

View File

@@ -0,0 +1,101 @@
import request from '@/utils/request';
import type { ApiResult, PageResult } from '@/api/index';
import type { ShopDealerCapital, ShopDealerCapitalParam } from './model';
/**
* 分页查询分销商资金明细表
*/
export async function pageShopDealerCapital(params: ShopDealerCapitalParam) {
const res = await request.get<ApiResult<PageResult<ShopDealerCapital>>>(
'/shop/shop-dealer-capital/page',
params
);
if (res.code === 0) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 查询分销商资金明细表列表
*/
export async function listShopDealerCapital(params?: ShopDealerCapitalParam) {
const res = await request.get<ApiResult<ShopDealerCapital[]>>(
'/shop/shop-dealer-capital',
params
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 添加分销商资金明细表
*/
export async function addShopDealerCapital(data: ShopDealerCapital) {
const res = await request.post<ApiResult<unknown>>(
'/shop/shop-dealer-capital',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 修改分销商资金明细表
*/
export async function updateShopDealerCapital(data: ShopDealerCapital) {
const res = await request.put<ApiResult<unknown>>(
'/shop/shop-dealer-capital',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 删除分销商资金明细表
*/
export async function removeShopDealerCapital(id?: number) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-dealer-capital/' + id
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 批量删除分销商资金明细表
*/
export async function removeBatchShopDealerCapital(data: (number | undefined)[]) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-dealer-capital/batch',
{
data
}
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 根据id查询分销商资金明细表
*/
export async function getShopDealerCapital(id: number) {
const res = await request.get<ApiResult<ShopDealerCapital>>(
'/shop/shop-dealer-capital/' + id
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}

View File

@@ -0,0 +1,101 @@
import request from '@/utils/request';
import type { ApiResult, PageResult } from '@/api/index';
import type { ShopDealerOrder, ShopDealerOrderParam } from './model';
/**
* 分页查询分销商订单记录表
*/
export async function pageShopDealerOrder(params: ShopDealerOrderParam) {
const res = await request.get<ApiResult<PageResult<ShopDealerOrder>>>(
'/shop/shop-dealer-order/page',
params
);
if (res.code === 0) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 查询分销商订单记录表列表
*/
export async function listShopDealerOrder(params?: ShopDealerOrderParam) {
const res = await request.get<ApiResult<ShopDealerOrder[]>>(
'/shop/shop-dealer-order',
params
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 添加分销商订单记录表
*/
export async function addShopDealerOrder(data: ShopDealerOrder) {
const res = await request.post<ApiResult<unknown>>(
'/shop/shop-dealer-order',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 修改分销商订单记录表
*/
export async function updateShopDealerOrder(data: ShopDealerOrder) {
const res = await request.put<ApiResult<unknown>>(
'/shop/shop-dealer-order',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 删除分销商订单记录表
*/
export async function removeShopDealerOrder(id?: number) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-dealer-order/' + id
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 批量删除分销商订单记录表
*/
export async function removeBatchShopDealerOrder(data: (number | undefined)[]) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-dealer-order/batch',
{
data
}
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 根据id查询分销商订单记录表
*/
export async function getShopDealerOrder(id: number) {
const res = await request.get<ApiResult<ShopDealerOrder>>(
'/shop/shop-dealer-order/' + id
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}

View File

@@ -0,0 +1,101 @@
import request from '@/utils/request';
import type { ApiResult, PageResult } from '@/api/index';
import type { ShopDealerReferee, ShopDealerRefereeParam } from './model';
/**
* 分页查询分销商推荐关系表
*/
export async function pageShopDealerReferee(params: ShopDealerRefereeParam) {
const res = await request.get<ApiResult<PageResult<ShopDealerReferee>>>(
'/shop/shop-dealer-referee/page',
params
);
if (res.code === 0) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 查询分销商推荐关系表列表
*/
export async function listShopDealerReferee(params?: ShopDealerRefereeParam) {
const res = await request.get<ApiResult<ShopDealerReferee[]>>(
'/shop/shop-dealer-referee',
params
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 添加分销商推荐关系表
*/
export async function addShopDealerReferee(data: ShopDealerReferee) {
const res = await request.post<ApiResult<unknown>>(
'/shop/shop-dealer-referee',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 修改分销商推荐关系表
*/
export async function updateShopDealerReferee(data: ShopDealerReferee) {
const res = await request.put<ApiResult<unknown>>(
'/shop/shop-dealer-referee',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 删除分销商推荐关系表
*/
export async function removeShopDealerReferee(id?: number) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-dealer-referee/' + id
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 批量删除分销商推荐关系表
*/
export async function removeBatchShopDealerReferee(data: (number | undefined)[]) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-dealer-referee/batch',
{
data
}
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 根据id查询分销商推荐关系表
*/
export async function getShopDealerReferee(id: number) {
const res = await request.get<ApiResult<ShopDealerReferee>>(
'/shop/shop-dealer-referee/' + id
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}

View File

@@ -0,0 +1,101 @@
import request from '@/utils/request';
import type { ApiResult, PageResult } from '@/api/index';
import type { ShopDealerSetting, ShopDealerSettingParam } from './model';
/**
* 分页查询分销商设置表
*/
export async function pageShopDealerSetting(params: ShopDealerSettingParam) {
const res = await request.get<ApiResult<PageResult<ShopDealerSetting>>>(
'/shop/shop-dealer-setting/page',
params
);
if (res.code === 0) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 查询分销商设置表列表
*/
export async function listShopDealerSetting(params?: ShopDealerSettingParam) {
const res = await request.get<ApiResult<ShopDealerSetting[]>>(
'/shop/shop-dealer-setting',
params
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 添加分销商设置表
*/
export async function addShopDealerSetting(data: ShopDealerSetting) {
const res = await request.post<ApiResult<unknown>>(
'/shop/shop-dealer-setting',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 修改分销商设置表
*/
export async function updateShopDealerSetting(data: ShopDealerSetting) {
const res = await request.put<ApiResult<unknown>>(
'/shop/shop-dealer-setting',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 删除分销商设置表
*/
export async function removeShopDealerSetting(id?: number) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-dealer-setting/' + id
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 批量删除分销商设置表
*/
export async function removeBatchShopDealerSetting(data: (number | undefined)[]) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-dealer-setting/batch',
{
data
}
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 根据id查询分销商设置表
*/
export async function getShopDealerSetting(id: number) {
const res = await request.get<ApiResult<ShopDealerSetting>>(
'/shop/shop-dealer-setting/' + id
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}

View File

@@ -0,0 +1,101 @@
import request from '@/utils/request';
import type { ApiResult, PageResult } from '@/api/index';
import type { ShopDealerUser, ShopDealerUserParam } from './model';
/**
* 分页查询分销商用户记录表
*/
export async function pageShopDealerUser(params: ShopDealerUserParam) {
const res = await request.get<ApiResult<PageResult<ShopDealerUser>>>(
'/shop/shop-dealer-user/page',
params
);
if (res.code === 0) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 查询分销商用户记录表列表
*/
export async function listShopDealerUser(params?: ShopDealerUserParam) {
const res = await request.get<ApiResult<ShopDealerUser[]>>(
'/shop/shop-dealer-user',
params
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 添加分销商用户记录表
*/
export async function addShopDealerUser(data: ShopDealerUser) {
const res = await request.post<ApiResult<unknown>>(
'/shop/shop-dealer-user',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 修改分销商用户记录表
*/
export async function updateShopDealerUser(data: ShopDealerUser) {
const res = await request.put<ApiResult<unknown>>(
'/shop/shop-dealer-user',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 删除分销商用户记录表
*/
export async function removeShopDealerUser(id?: number) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-dealer-user/' + id
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 批量删除分销商用户记录表
*/
export async function removeBatchShopDealerUser(data: (number | undefined)[]) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-dealer-user/batch',
{
data
}
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 根据id查询分销商用户记录表
*/
export async function getShopDealerUser(id: number) {
const res = await request.get<ApiResult<ShopDealerUser>>(
'/shop/shop-dealer-user/' + id
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}

View File

@@ -0,0 +1,101 @@
import request from '@/utils/request';
import type { ApiResult, PageResult } from '@/api/index';
import type { ShopDealerWithdraw, ShopDealerWithdrawParam } from './model';
/**
* 分页查询分销商提现明细表
*/
export async function pageShopDealerWithdraw(params: ShopDealerWithdrawParam) {
const res = await request.get<ApiResult<PageResult<ShopDealerWithdraw>>>(
'/shop/shop-dealer-withdraw/page',
params
);
if (res.code === 0) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 查询分销商提现明细表列表
*/
export async function listShopDealerWithdraw(params?: ShopDealerWithdrawParam) {
const res = await request.get<ApiResult<ShopDealerWithdraw[]>>(
'/shop/shop-dealer-withdraw',
params
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 添加分销商提现明细表
*/
export async function addShopDealerWithdraw(data: ShopDealerWithdraw) {
const res = await request.post<ApiResult<unknown>>(
'/shop/shop-dealer-withdraw',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 修改分销商提现明细表
*/
export async function updateShopDealerWithdraw(data: ShopDealerWithdraw) {
const res = await request.put<ApiResult<unknown>>(
'/shop/shop-dealer-withdraw',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 删除分销商提现明细表
*/
export async function removeShopDealerWithdraw(id?: number) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-dealer-withdraw/' + id
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 批量删除分销商提现明细表
*/
export async function removeBatchShopDealerWithdraw(data: (number | undefined)[]) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-dealer-withdraw/batch',
{
data
}
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 根据id查询分销商提现明细表
*/
export async function getShopDealerWithdraw(id: number) {
const res = await request.get<ApiResult<ShopDealerWithdraw>>(
'/shop/shop-dealer-withdraw/' + id
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}

View File

@@ -4,11 +4,11 @@ import type { PageParam } from '@/api/index';
* 运费模板
*/
export interface ShopExpressTemplate {
//
//
id?: number;
//
//
type?: string;
//
//
title?: string;
// 收件价格
firstAmount?: string;
@@ -24,7 +24,7 @@ export interface ShopExpressTemplate {
createTime?: string;
// 修改时间
updateTime?: string;
//
//
sortNumber?: number;
// 首件数量/重量
firstNum?: string;

View File

@@ -4,15 +4,15 @@ import type { PageParam } from '@/api/index';
* 运费模板
*/
export interface ShopExpressTemplateDetail {
//
//
id?: number;
//
//
templateId?: number;
// 0按件
type?: string;
//
//
provinceId?: number;
//
//
cityId?: number;
// 首件数量/重量
firstNum?: string;
@@ -32,7 +32,7 @@ export interface ShopExpressTemplateDetail {
createTime?: string;
// 修改时间
updateTime?: string;
//
//
sortNumber?: number;
}

View File

@@ -1,35 +0,0 @@
import type { PageParam } from '@/api/index';
/**
* 商品优惠券表
*/
export interface ShopGoodsCoupon {
//
id?: number;
// 商品id
goodsId?: number;
// 优惠劵id
issueCouponId?: number;
// 排序(数字越小越靠前)
sortNumber?: number;
// 状态, 0正常, 1冻结
status?: number;
// 是否删除, 0否, 1是
deleted?: number;
// 用户ID
userId?: number;
// 租户id
tenantId?: number;
// 注册时间
createTime?: string;
// 修改时间
updateTime?: string;
}
/**
* 商品优惠券表搜索条件
*/
export interface ShopGoodsCouponParam extends PageParam {
id?: number;
keywords?: string;
}

View File

@@ -1,113 +0,0 @@
import type { PageParam } from '@/api/index';
/**
* 商品评价
*/
export interface ShopGoodsReview {
// 评价ID
reviewId?: number;
// 商品ID
goodsId?: number;
// 订单ID
orderId?: number;
// 用户ID
userId?: number;
// 用户昵称
nickname?: string;
// 用户头像
avatar?: string;
// 评价内容
content?: string;
// 评分 1-5星
rating?: number;
// 评价图片JSON数组格式
images?: string;
// 是否匿名评价
isAnonymous?: boolean;
// 商家回复
reply?: string;
// 商家回复时间
replyTime?: string;
// 评价状态 0待审核 1已通过 2已拒绝
status?: number;
// 是否置顶
isTop?: boolean;
// 点赞数
likeCount?: number;
// 创建时间
createTime?: string;
// 更新时间
updateTime?: string;
// 商品信息
goodsName?: string;
goodsImage?: string;
goodsPrice?: string;
// SKU信息
skuId?: number;
specInfo?: string;
}
/**
* 评价统计
*/
export interface ReviewStats {
// 总评价数
totalCount: number;
// 好评数
goodCount: number;
// 中评数
mediumCount: number;
// 差评数
badCount: number;
// 好评率
goodRate: number;
// 平均评分
avgRating: number;
// 各星级统计
ratingStats: {
[key: number]: number; // 星级 -> 数量
};
}
/**
* 评价查询参数
*/
export interface ShopGoodsReviewParam extends PageParam {
// 商品ID
goodsId?: number;
// 用户ID
userId?: number;
// 订单ID
orderId?: number;
// 评分筛选
rating?: number;
// 状态筛选
status?: number;
// 是否有图片
hasImages?: boolean;
// 排序方式 time:时间 rating:评分 like:点赞数
sortBy?: string;
// 排序方向 asc:升序 desc:降序
sortOrder?: string;
}
/**
* 提交评价请求
*/
export interface SubmitReviewRequest {
// 商品ID
goodsId: number;
// 订单ID
orderId: number;
// 评价内容
content: string;
// 评分
rating: number;
// 评价图片
images?: string[];
// 是否匿名
isAnonymous?: boolean;
// SKU信息
skuId?: number;
specInfo?: string;
}

View File

@@ -0,0 +1,101 @@
import request from '@/utils/request';
import type { ApiResult, PageResult } from '@/api/index';
import type { ShopUserCoupon, ShopUserCouponParam } from './model';
/**
* 分页查询用户优惠券
*/
export async function pageShopUserCoupon(params: ShopUserCouponParam) {
const res = await request.get<ApiResult<PageResult<ShopUserCoupon>>>(
'/shop/shop-user-coupon/page',
params
);
if (res.code === 0) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 查询用户优惠券列表
*/
export async function listShopUserCoupon(params?: ShopUserCouponParam) {
const res = await request.get<ApiResult<ShopUserCoupon[]>>(
'/shop/shop-user-coupon',
params
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 添加用户优惠券
*/
export async function addShopUserCoupon(data: ShopUserCoupon) {
const res = await request.post<ApiResult<unknown>>(
'/shop/shop-user-coupon',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 修改用户优惠券
*/
export async function updateShopUserCoupon(data: ShopUserCoupon) {
const res = await request.put<ApiResult<unknown>>(
'/shop/shop-user-coupon',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 删除用户优惠券
*/
export async function removeShopUserCoupon(id?: number) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-user-coupon/' + id
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 批量删除用户优惠券
*/
export async function removeBatchShopUserCoupon(data: (number | undefined)[]) {
const res = await request.del<ApiResult<unknown>>(
'/shop/shop-user-coupon/batch',
{
data
}
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 根据id查询用户优惠券
*/
export async function getShopUserCoupon(id: number) {
const res = await request.get<ApiResult<ShopUserCoupon>>(
'/shop/shop-user-coupon/' + id
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}