商城
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
2025-07-19 19:17:41 +08:00
parent 34fa7a1c1a
commit f18b3ae03e
150 changed files with 18531 additions and 1 deletions

View File

@@ -0,0 +1,65 @@
import type { PageParam, PageResult } from '../../../types';
import { requestClient } from '#/api/request';
export namespace MallArticleApi {
/** 文章管理 */
export interface Article {
/** 文章编号 */
id: number;
/** 分类编号 */
categoryId: number;
/** 文章标题 */
title: string;
/** 作者 */
author: string;
/** 封面图 */
picUrl: string;
/** 文章简介 */
introduction: string;
/** 浏览数量 */
browseCount: string;
/** 排序 */
sort: number;
/** 状态 */
status: number;
/** 商品编号 */
spuId: number;
/** 是否热门 */
recommendHot: boolean;
/** 是否轮播图 */
recommendBanner: boolean;
/** 文章内容 */
content: string;
}
}
/** 查询文章管理列表 */
export function getArticlePage(params: PageParam) {
return requestClient.get<PageResult<MallArticleApi.Article>>(
'/promotion/article/page',
{ params },
);
}
/** 查询文章管理详情 */
export function getArticle(id: number) {
return requestClient.get<MallArticleApi.Article>(
`/promotion/article/get?id=${id}`,
);
}
/** 新增文章管理 */
export function createArticle(data: MallArticleApi.Article) {
return requestClient.post('/promotion/article/create', data);
}
/** 修改文章管理 */
export function updateArticle(data: MallArticleApi.Article) {
return requestClient.put('/promotion/article/update', data);
}
/** 删除文章管理 */
export function deleteArticle(id: number) {
return requestClient.delete(`/promotion/article/delete?id=${id}`);
}

View File

@@ -0,0 +1,60 @@
import type { PageParam, PageResult } from '../../../types';
import { requestClient } from '#/api/request';
export namespace MallArticleCategoryApi {
/** 文章分类 */
export interface ArticleCategory {
/** 分类编号 */
id: number;
/** 分类名称 */
name: string;
/** 分类图片 */
picUrl: string;
/** 状态 */
status: number;
/** 排序 */
sort: number;
}
}
/** 查询文章分类列表 */
export function getArticleCategoryPage(params: PageParam) {
return requestClient.get<PageResult<MallArticleCategoryApi.ArticleCategory>>(
'/promotion/article-category/page',
{ params },
);
}
/** 查询文章分类精简信息列表 */
export function getSimpleArticleCategoryList() {
return requestClient.get<MallArticleCategoryApi.ArticleCategory[]>(
'/promotion/article-category/list-all-simple',
);
}
/** 查询文章分类详情 */
export function getArticleCategory(id: number) {
return requestClient.get<MallArticleCategoryApi.ArticleCategory>(
`/promotion/article-category/get?id=${id}`,
);
}
/** 新增文章分类 */
export function createArticleCategory(
data: MallArticleCategoryApi.ArticleCategory,
) {
return requestClient.post('/promotion/article-category/create', data);
}
/** 修改文章分类 */
export function updateArticleCategory(
data: MallArticleCategoryApi.ArticleCategory,
) {
return requestClient.put('/promotion/article-category/update', data);
}
/** 删除文章分类 */
export function deleteArticleCategory(id: number) {
return requestClient.delete(`/promotion/article-category/delete?id=${id}`);
}

View File

@@ -0,0 +1,106 @@
import type { PageParam, PageResult } from '../../../types';
import type { MallSpuApi } from '#/api/mall/product/spu';
import { requestClient } from '#/api/request';
export namespace MallBargainActivityApi {
/** 砍价活动 */
export interface BargainActivity {
/** 活动编号 */
id?: number;
/** 活动名称 */
name?: string;
/** 开始时间 */
startTime?: Date;
/** 结束时间 */
endTime?: Date;
/** 状态 */
status?: number;
/** 达到该人数,才能砍到低价 */
helpMaxCount?: number;
/** 最大帮砍次数 */
bargainCount?: number;
/** 最大购买次数 */
totalLimitCount?: number;
/** 商品 SPU 编号 */
spuId: number;
/** 商品 SKU 编号 */
skuId: number;
/** 砍价起始价格,单位分 */
bargainFirstPrice: number;
/** 砍价底价 */
bargainMinPrice: number;
/** 活动库存 */
stock: number;
/** 用户每次砍价的最小金额,单位:分 */
randomMinPrice?: number;
/** 用户每次砍价的最大金额,单位:分 */
randomMaxPrice?: number;
}
/** 砍价活动所需属性。选择的商品和属性的时候使用方便使用活动的通用封装 */
export interface BargainProduct {
/** 商品 SPU 编号 */
spuId: number;
/** 商品 SKU 编号 */
skuId: number;
/** 砍价起始价格,单位分 */
bargainFirstPrice: number;
/** 砍价底价 */
bargainMinPrice: number;
/** 活动库存 */
stock: number;
}
/** 扩展 SKU 配置 */
export type SkuExtension = {
/** 砍价活动配置 */
productConfig: BargainProduct;
} & MallSpuApi.Sku;
/** 扩展 SPU 配置 */
export interface SpuExtension extends MallSpuApi.Spu {
/** SKU 列表 */
skus: SkuExtension[];
}
}
/** 查询砍价活动列表 */
export function getBargainActivityPage(params: PageParam) {
return requestClient.get<PageResult<MallBargainActivityApi.BargainActivity>>(
'/promotion/bargain-activity/page',
{ params },
);
}
/** 查询砍价活动详情 */
export function getBargainActivity(id: number) {
return requestClient.get<MallBargainActivityApi.BargainActivity>(
`/promotion/bargain-activity/get?id=${id}`,
);
}
/** 新增砍价活动 */
export function createBargainActivity(
data: MallBargainActivityApi.BargainActivity,
) {
return requestClient.post('/promotion/bargain-activity/create', data);
}
/** 修改砍价活动 */
export function updateBargainActivity(
data: MallBargainActivityApi.BargainActivity,
) {
return requestClient.put('/promotion/bargain-activity/update', data);
}
/** 关闭砍价活动 */
export function closeBargainActivity(id: number) {
return requestClient.put(`/promotion/bargain-activity/close?id=${id}`);
}
/** 删除砍价活动 */
export function deleteBargainActivity(id: number) {
return requestClient.delete(`/promotion/bargain-activity/delete?id=${id}`);
}

View File

@@ -0,0 +1,27 @@
import type { PageParam, PageResult } from '../../../types';
import { requestClient } from '#/api/request';
export namespace MallBargainHelpApi {
/** 砍价记录 */
export interface BargainHelp {
/** 记录编号 */
id: number;
/** 砍价记录编号 */
record: number;
/** 用户编号 */
userId: number;
/** 砍掉金额 */
reducePrice: number;
/** 结束时间 */
endTime: Date;
}
}
/** 查询砍价记录列表 */
export function getBargainHelpPage(params: PageParam) {
return requestClient.get<PageResult<MallBargainHelpApi.BargainHelp>>(
'/promotion/bargain-help/page',
{ params },
);
}

View File

@@ -0,0 +1,37 @@
import type { PageParam, PageResult } from '../../../types';
import { requestClient } from '#/api/request';
export namespace MallBargainRecordApi {
/** 砍价记录 */
export interface BargainRecord {
/** 记录编号 */
id: number;
/** 活动编号 */
activityId: number;
/** 用户编号 */
userId: number;
/** 商品 SPU 编号 */
spuId: number;
/** 商品 SKU 编号 */
skuId: number;
/** 砍价起始价格 */
bargainFirstPrice: number;
/** 砍价价格 */
bargainPrice: number;
/** 状态 */
status: number;
/** 订单编号 */
orderId: number;
/** 结束时间 */
endTime: Date;
}
}
/** 查询砍价记录列表 */
export function getBargainRecordPage(params: PageParam) {
return requestClient.get<PageResult<MallBargainRecordApi.BargainRecord>>(
'/promotion/bargain-record/page',
{ params },
);
}

View File

@@ -0,0 +1,111 @@
import type { PageParam, PageResult } from '../../../types';
import type { MallSpuApi } from '#/api/mall/product/spu';
import { requestClient } from '#/api/request';
export namespace MallCombinationActivityApi {
/** 拼团活动所需属性 */
export interface CombinationProduct {
/** 商品 SPU 编号 */
spuId: number;
/** 商品 SKU 编号 */
skuId: number;
/** 拼团价格 */
combinationPrice: number;
}
/** 拼团活动 */
export interface CombinationActivity {
/** 活动编号 */
id?: number;
/** 活动名称 */
name?: string;
/** 商品 SPU 编号 */
spuId?: number;
/** 总限购数量 */
totalLimitCount?: number;
/** 单次限购数量 */
singleLimitCount?: number;
/** 开始时间 */
startTime?: Date;
/** 结束时间 */
endTime?: Date;
/** 用户数量 */
userSize?: number;
/** 总数量 */
totalCount?: number;
/** 成功数量 */
successCount?: number;
/** 订单用户数量 */
orderUserCount?: number;
/** 虚拟成团 */
virtualGroup?: number;
/** 状态 */
status?: number;
/** 限制时长 */
limitDuration?: number;
/** 拼团价格 */
combinationPrice?: number;
/** 商品列表 */
products: CombinationProduct[];
}
/** 扩展 SKU 配置 */
export type SkuExtension = {
/** 拼团活动配置 */
productConfig: CombinationProduct;
} & MallSpuApi.Sku;
/** 扩展 SPU 配置 */
export interface SpuExtension extends MallSpuApi.Spu {
/** SKU 列表 */
skus: SkuExtension[];
}
}
/** 查询拼团活动列表 */
export function getCombinationActivityPage(params: PageParam) {
return requestClient.get<
PageResult<MallCombinationActivityApi.CombinationActivity>
>('/promotion/combination-activity/page', { params });
}
/** 查询拼团活动详情 */
export function getCombinationActivity(id: number) {
return requestClient.get<MallCombinationActivityApi.CombinationActivity>(
`/promotion/combination-activity/get?id=${id}`,
);
}
/** 获得拼团活动列表,基于活动编号数组 */
export function getCombinationActivityListByIds(ids: number[]) {
return requestClient.get<MallCombinationActivityApi.CombinationActivity[]>(
`/promotion/combination-activity/list-by-ids?ids=${ids}`,
);
}
/** 新增拼团活动 */
export function createCombinationActivity(
data: MallCombinationActivityApi.CombinationActivity,
) {
return requestClient.post('/promotion/combination-activity/create', data);
}
/** 修改拼团活动 */
export function updateCombinationActivity(
data: MallCombinationActivityApi.CombinationActivity,
) {
return requestClient.put('/promotion/combination-activity/update', data);
}
/** 关闭拼团活动 */
export function closeCombinationActivity(id: number) {
return requestClient.put(`/promotion/combination-activity/close?id=${id}`);
}
/** 删除拼团活动 */
export function deleteCombinationActivity(id: number) {
return requestClient.delete(
`/promotion/combination-activity/delete?id=${id}`,
);
}

View File

@@ -0,0 +1,61 @@
import type { PageParam, PageResult } from '../../../types';
import { requestClient } from '#/api/request';
export namespace MallCombinationRecordApi {
/** 拼团记录 */
export interface CombinationRecord {
/** 拼团记录编号 */
id: number;
/** 拼团活动编号 */
activityId: number;
/** 用户昵称 */
nickname: string;
/** 用户头像 */
avatar: string;
/** 团长编号 */
headId: number;
/** 过期时间 */
expireTime: string;
/** 可参团人数 */
userSize: number;
/** 已参团人数 */
userCount: number;
/** 拼团状态 */
status: number;
/** 商品名字 */
spuName: string;
/** 商品图片 */
picUrl: string;
/** 是否虚拟成团 */
virtualGroup: boolean;
/** 开始时间 (订单付款后开始的时间) */
startTime: string;
/** 结束时间(成团时间/失败时间) */
endTime: string;
}
/** 拼团记录概要信息 */
export interface RecordSummary {
/** 待成团数量 */
pendingCount: number;
/** 已成团数量 */
successCount: number;
/** 已失败数量 */
failCount: number;
}
}
/** 查询拼团记录列表 */
export function getCombinationRecordPage(params: PageParam) {
return requestClient.get<
PageResult<MallCombinationRecordApi.CombinationRecord>
>('/promotion/combination-record/page', { params });
}
/** 获得拼团记录的概要信息 */
export function getCombinationRecordSummary() {
return requestClient.get<MallCombinationRecordApi.RecordSummary>(
'/promotion/combination-record/get-summary',
);
}

View File

@@ -0,0 +1,67 @@
import type { PageParam, PageResult } from '../../../types';
import { requestClient } from '#/api/request';
export namespace MallCouponApi {
/** 优惠券 */
export interface Coupon {
/** 优惠券编号 */
id: number;
/** 优惠券名称 */
name: string;
/** 优惠券状态 */
status: number;
/** 优惠券类型 */
type: number;
/** 优惠券金额 */
price: number;
/** 使用门槛 */
usePrice: number;
/** 商品范围 */
productScope: number;
/** 商品编号数组 */
productSpuIds: number[];
/** 有效期类型 */
validityType: number;
/** 固定日期-生效开始时间 */
validStartTime: Date;
/** 固定日期-生效结束时间 */
validEndTime: Date;
/** 领取日期-开始天数 */
fixedStartTerm: number;
/** 领取日期-结束天数 */
fixedEndTerm: number;
/** 每人限领个数 */
takeLimitCount: number;
/** 是否设置满多少金额可用 */
usePriceEnabled: boolean;
/** 商品分类编号数组 */
productCategoryIds: number[];
}
/** 发送优惠券 */
export interface SendCoupon {
/** 优惠券编号 */
couponId: number;
/** 用户编号数组 */
userIds: number[];
}
}
/** 删除优惠劵 */
export function deleteCoupon(id: number) {
return requestClient.delete(`/promotion/coupon/delete?id=${id}`);
}
/** 获得优惠劵分页 */
export function getCouponPage(params: PageParam) {
return requestClient.get<PageResult<MallCouponApi.Coupon>>(
'/promotion/coupon/page',
{ params },
);
}
/** 发送优惠券 */
export function sendCoupon(data: MallCouponApi.SendCoupon) {
return requestClient.post('/promotion/coupon/send', data);
}

View File

@@ -0,0 +1,112 @@
import type { PageParam, PageResult } from '../../../types';
import { requestClient } from '#/api/request';
export namespace MallCouponTemplateApi {
/** 优惠券模板 */
export interface CouponTemplate {
/** 模板编号 */
id: number;
/** 模板名称 */
name: string;
/** 状态 */
status: number;
/** 发放数量 */
totalCount: number;
/** 每人限领个数 */
takeLimitCount: number;
/** 领取方式 */
takeType: number;
/** 使用门槛 */
usePrice: number;
/** 商品范围 */
productScope: number;
/** 商品范围值 */
productScopeValues: number[];
/** 有效期类型 */
validityType: number;
/** 固定日期-生效开始时间 */
validStartTime: Date;
/** 固定日期-生效结束时间 */
validEndTime: Date;
/** 领取日期-开始天数 */
fixedStartTerm: number;
/** 领取日期-结束天数 */
fixedEndTerm: number;
/** 优惠类型 */
discountType: number;
/** 折扣百分比 */
discountPercent: number;
/** 优惠金额 */
discountPrice: number;
/** 折扣上限 */
discountLimitPrice: number;
/** 已领取数量 */
takeCount: number;
/** 已使用数量 */
useCount: number;
}
/** 优惠券模板状态更新 */
export interface StatusUpdate {
/** 模板编号 */
id: number;
/** 状态 */
status: 0 | 1;
}
}
/** 创建优惠劵模板 */
export function createCouponTemplate(
data: MallCouponTemplateApi.CouponTemplate,
) {
return requestClient.post('/promotion/coupon-template/create', data);
}
/** 更新优惠劵模板 */
export function updateCouponTemplate(
data: MallCouponTemplateApi.CouponTemplate,
) {
return requestClient.put('/promotion/coupon-template/update', data);
}
/** 更新优惠劵模板的状态 */
export function updateCouponTemplateStatus(id: number, status: 0 | 1) {
const data: MallCouponTemplateApi.StatusUpdate = { id, status };
return requestClient.put('/promotion/coupon-template/update-status', data);
}
/** 删除优惠劵模板 */
export function deleteCouponTemplate(id: number) {
return requestClient.delete(`/promotion/coupon-template/delete?id=${id}`);
}
/** 获得优惠劵模板 */
export function getCouponTemplate(id: number) {
return requestClient.get<MallCouponTemplateApi.CouponTemplate>(
`/promotion/coupon-template/get?id=${id}`,
);
}
/** 获得优惠劵模板分页 */
export function getCouponTemplatePage(params: PageParam) {
return requestClient.get<PageResult<MallCouponTemplateApi.CouponTemplate>>(
'/promotion/coupon-template/page',
{ params },
);
}
/** 获得优惠劵模板列表 */
export function getCouponTemplateList(ids: number[]) {
return requestClient.get<MallCouponTemplateApi.CouponTemplate[]>(
`/promotion/coupon-template/list?ids=${ids}`,
);
}
/** 导出优惠劵模板 Excel */
export function exportCouponTemplateExcel(params: PageParam) {
return requestClient.get('/promotion/coupon-template/export-excel', {
params,
responseType: 'blob',
});
}

View File

@@ -0,0 +1,91 @@
import type { PageParam, PageResult } from '../../../types';
import type { MallSpuApi } from '#/api/mall/product/spu';
import { requestClient } from '#/api/request';
export namespace MallDiscountActivityApi {
/** 限时折扣相关属性 */
export interface DiscountProduct {
/** 商品 SPU 编号 */
spuId: number;
/** 商品 SKU 编号 */
skuId: number;
/** 折扣类型 */
discountType: number;
/** 折扣百分比 */
discountPercent: number;
/** 折扣价格 */
discountPrice: number;
}
/** 限时折扣活动 */
export interface DiscountActivity {
/** 活动编号 */
id?: number;
/** 商品 SPU 编号 */
spuId?: number;
/** 活动名称 */
name?: string;
/** 状态 */
status?: number;
/** 备注 */
remark?: string;
/** 开始时间 */
startTime?: Date;
/** 结束时间 */
endTime?: Date;
/** 商品列表 */
products?: DiscountProduct[];
}
/** 扩展 SKU 配置 */
export type SkuExtension = {
/** 限时折扣配置 */
productConfig: DiscountProduct;
} & MallSpuApi.Sku;
/** 扩展 SPU 配置 */
export interface SpuExtension extends MallSpuApi.Spu {
/** SKU 列表 */
skus: SkuExtension[];
}
}
/** 查询限时折扣活动列表 */
export function getDiscountActivityPage(params: PageParam) {
return requestClient.get<
PageResult<MallDiscountActivityApi.DiscountActivity>
>('/promotion/discount-activity/page', { params });
}
/** 查询限时折扣活动详情 */
export function getDiscountActivity(id: number) {
return requestClient.get<MallDiscountActivityApi.DiscountActivity>(
`/promotion/discount-activity/get?id=${id}`,
);
}
/** 新增限时折扣活动 */
export function createDiscountActivity(
data: MallDiscountActivityApi.DiscountActivity,
) {
return requestClient.post('/promotion/discount-activity/create', data);
}
/** 修改限时折扣活动 */
export function updateDiscountActivity(
data: MallDiscountActivityApi.DiscountActivity,
) {
return requestClient.put('/promotion/discount-activity/update', data);
}
/** 关闭限时折扣活动 */
export function closeDiscountActivity(id: number) {
return requestClient.put(`/promotion/discount-activity/close?id=${id}`);
}
/** 删除限时折扣活动 */
export function deleteDiscountActivity(id: number) {
return requestClient.delete(`/promotion/discount-activity/delete?id=${id}`);
}

View File

@@ -0,0 +1,61 @@
import type { PageParam, PageResult } from '../../../types';
import { requestClient } from '#/api/request';
export namespace MallDiyPageApi {
/** 装修页面 */
export interface DiyPage {
/** 页面编号 */
id?: number;
/** 模板编号 */
templateId?: number;
/** 页面名称 */
name: string;
/** 备注 */
remark: string;
/** 预览图片地址数组 */
previewPicUrls: string[];
/** 页面属性 */
property: string;
}
}
/** 查询装修页面列表 */
export function getDiyPagePage(params: PageParam) {
return requestClient.get<PageResult<MallDiyPageApi.DiyPage>>(
'/promotion/diy-page/page',
{ params },
);
}
/** 查询装修页面详情 */
export function getDiyPage(id: number) {
return requestClient.get<MallDiyPageApi.DiyPage>(
`/promotion/diy-page/get?id=${id}`,
);
}
/** 新增装修页面 */
export function createDiyPage(data: MallDiyPageApi.DiyPage) {
return requestClient.post('/promotion/diy-page/create', data);
}
/** 修改装修页面 */
export function updateDiyPage(data: MallDiyPageApi.DiyPage) {
return requestClient.put('/promotion/diy-page/update', data);
}
/** 删除装修页面 */
export function deleteDiyPage(id: number) {
return requestClient.delete(`/promotion/diy-page/delete?id=${id}`);
}
/** 获得装修页面属性 */
export function getDiyPageProperty(id: number) {
return requestClient.get<string>(`/promotion/diy-page/get-property?id=${id}`);
}
/** 更新装修页面属性 */
export function updateDiyPageProperty(data: MallDiyPageApi.DiyPage) {
return requestClient.put('/promotion/diy-page/update-property', data);
}

View File

@@ -0,0 +1,80 @@
import type { PageParam, PageResult } from '../../../types';
import type { MallDiyPageApi } from './page';
import { requestClient } from '#/api/request';
export namespace MallDiyTemplateApi {
/** 装修模板 */
export interface DiyTemplate {
/** 模板编号 */
id?: number;
/** 模板名称 */
name: string;
/** 是否使用 */
used: boolean;
/** 使用时间 */
usedTime?: Date;
/** 备注 */
remark: string;
/** 预览图片地址数组 */
previewPicUrls: string[];
/** 模板属性 */
property: string;
}
/** 装修模板属性(包含页面列表) */
export interface DiyTemplateProperty extends DiyTemplate {
/** 页面列表 */
pages: MallDiyPageApi.DiyPage[];
}
}
/** 查询装修模板列表 */
export function getDiyTemplatePage(params: PageParam) {
return requestClient.get<PageResult<MallDiyTemplateApi.DiyTemplate>>(
'/promotion/diy-template/page',
{ params },
);
}
/** 查询装修模板详情 */
export function getDiyTemplate(id: number) {
return requestClient.get<MallDiyTemplateApi.DiyTemplate>(
`/promotion/diy-template/get?id=${id}`,
);
}
/** 新增装修模板 */
export function createDiyTemplate(data: MallDiyTemplateApi.DiyTemplate) {
return requestClient.post('/promotion/diy-template/create', data);
}
/** 修改装修模板 */
export function updateDiyTemplate(data: MallDiyTemplateApi.DiyTemplate) {
return requestClient.put('/promotion/diy-template/update', data);
}
/** 删除装修模板 */
export function deleteDiyTemplate(id: number) {
return requestClient.delete(`/promotion/diy-template/delete?id=${id}`);
}
/** 使用装修模板 */
export function useDiyTemplate(id: number) {
return requestClient.put(`/promotion/diy-template/use?id=${id}`);
}
/** 获得装修模板属性 */
export function getDiyTemplateProperty(id: number) {
return requestClient.get<MallDiyTemplateApi.DiyTemplateProperty>(
`/promotion/diy-template/get-property?id=${id}`,
);
}
/** 更新装修模板属性 */
export function updateDiyTemplateProperty(
data: MallDiyTemplateApi.DiyTemplate,
) {
return requestClient.put('/promotion/diy-template/update-property', data);
}

View File

@@ -0,0 +1,70 @@
import type { PageResult } from '@vben/request';
import { requestClient } from '#/api/request';
export namespace MallKefuConversationApi {
/** 客服会话 */
export interface Conversation {
/** 编号 */
id: number;
/** 会话所属用户 */
userId: number;
/** 会话所属用户头像 */
userAvatar: string;
/** 会话所属用户昵称 */
userNickname: string;
/** 最后聊天时间 */
lastMessageTime: Date;
/** 最后聊天内容 */
lastMessageContent: string;
/** 最后发送的消息类型 */
lastMessageContentType: number;
/** 管理端置顶 */
adminPinned: boolean;
/** 用户是否可见 */
userDeleted: boolean;
/** 管理员是否可见 */
adminDeleted: boolean;
/** 管理员未读消息数 */
adminUnreadMessageCount: number;
/** 创建时间 */
createTime?: string;
}
/** 会话置顶请求 */
export interface ConversationPinnedUpdate {
/** 会话编号 */
id: number;
/** 是否置顶 */
pinned: boolean;
}
}
/** 获得客服会话列表 */
export function getConversationList() {
return requestClient.get<PageResult<MallKefuConversationApi.Conversation>>(
'/promotion/kefu-conversation/list',
);
}
/** 获得客服会话 */
export function getConversation(id: number) {
return requestClient.get<MallKefuConversationApi.Conversation>(
`/promotion/kefu-conversation/get?id=${id}`,
);
}
/** 客服会话置顶 */
export function updateConversationPinned(
data: MallKefuConversationApi.ConversationPinnedUpdate,
) {
return requestClient.put(
'/promotion/kefu-conversation/update-conversation-pinned',
data,
);
}
/** 删除客服会话 */
export function deleteConversation(id: number) {
return requestClient.delete(`/promotion/kefu-conversation/delete?id=${id}`);
}

View File

@@ -0,0 +1,67 @@
import type { PageParam, PageResult } from '../../../types';
import { requestClient } from '#/api/request';
export namespace MallKefuMessageApi {
/** 客服消息 */
export interface Message {
/** 编号 */
id: number;
/** 会话编号 */
conversationId: number;
/** 发送人编号 */
senderId: number;
/** 发送人头像 */
senderAvatar: string;
/** 发送人类型 */
senderType: number;
/** 接收人编号 */
receiverId: number;
/** 接收人类型 */
receiverType: number;
/** 消息类型 */
contentType: number;
/** 消息内容 */
content: string;
/** 是否已读 */
readStatus: boolean;
/** 创建时间 */
createTime: Date;
}
/** 发送消息请求 */
export interface MessageSend {
/** 会话编号 */
conversationId: number;
/** 消息类型 */
contentType: number;
/** 消息内容 */
content: string;
}
/** 消息列表查询参数 */
export interface MessageQuery extends PageParam {
/** 会话编号 */
conversationId: number;
}
}
/** 发送客服消息 */
export function sendKeFuMessage(data: MallKefuMessageApi.MessageSend) {
return requestClient.post('/promotion/kefu-message/send', data);
}
/** 更新客服消息已读状态 */
export function updateKeFuMessageReadStatus(conversationId: number) {
return requestClient.put(
`/promotion/kefu-message/update-read-status?conversationId=${conversationId}`,
);
}
/** 获得消息列表(流式加载) */
export function getKeFuMessageList(params: MallKefuMessageApi.MessageQuery) {
return requestClient.get<PageResult<MallKefuMessageApi.Message>>(
'/promotion/kefu-message/list',
{ params },
);
}

View File

@@ -0,0 +1,127 @@
import type { PageParam, PageResult } from '../../../types';
import type { MallSpuApi } from '#/api/mall/product/spu';
import { requestClient } from '#/api/request';
export namespace MallPointActivityApi {
/** 积分商城商品 */
export interface PointProduct {
/** 积分商城商品编号 */
id?: number;
/** 积分商城活动 id */
activityId?: number;
/** 商品 SPU 编号 */
spuId?: number;
/** 商品 SKU 编号 */
skuId: number;
/** 可兑换数量 */
count: number;
/** 兑换积分 */
point: number;
/** 兑换金额,单位:分 */
price: number;
/** 积分商城商品库存 */
stock: number;
/** 积分商城商品状态 */
activityStatus?: number;
}
/** 积分商城活动 */
export interface PointActivity {
/** 积分商城活动编号 */
id: number;
/** 积分商城活动商品 */
spuId: number;
/** 活动状态 */
status: number;
/** 积分商城活动库存 */
stock: number;
/** 积分商城活动总库存 */
totalStock: number;
/** 备注 */
remark?: string;
/** 排序 */
sort: number;
/** 创建时间 */
createTime: string;
/** 积分商城商品 */
products: PointProduct[];
/** 商品名称 */
spuName: string;
/** 商品主图 */
picUrl: string;
/** 商品市场价,单位:分 */
marketPrice: number;
/** 兑换积分 */
point: number;
/** 兑换金额,单位:分 */
price: number;
}
/** 扩展 SKU 配置 */
export type SkuExtension = {
/** 积分商城商品配置 */
productConfig: PointProduct;
} & MallSpuApi.Sku;
/** 扩展 SPU 配置 */
export interface SpuExtension extends MallSpuApi.Spu {
/** SKU 列表 */
skus: SkuExtension[];
}
/** 扩展 SPU 配置(带积分信息) */
export interface SpuExtensionWithPoint extends MallSpuApi.Spu {
/** 积分商城活动库存 */
pointStock: number;
/** 积分商城活动总库存 */
pointTotalStock: number;
/** 兑换积分 */
point: number;
/** 兑换金额,单位:分 */
pointPrice: number;
}
}
/** 查询积分商城活动分页 */
export function getPointActivityPage(params: PageParam) {
return requestClient.get<PageResult<MallPointActivityApi.PointActivity>>(
'/promotion/point-activity/page',
{ params },
);
}
/** 查询积分商城活动详情 */
export function getPointActivity(id: number) {
return requestClient.get<MallPointActivityApi.PointActivity>(
`/promotion/point-activity/get?id=${id}`,
);
}
/** 查询积分商城活动列表,基于活动编号数组 */
export function getPointActivityListByIds(ids: number[]) {
return requestClient.get<MallPointActivityApi.PointActivity[]>(
`/promotion/point-activity/list-by-ids?ids=${ids}`,
);
}
/** 新增积分商城活动 */
export function createPointActivity(data: MallPointActivityApi.PointActivity) {
return requestClient.post('/promotion/point-activity/create', data);
}
/** 修改积分商城活动 */
export function updatePointActivity(data: MallPointActivityApi.PointActivity) {
return requestClient.put('/promotion/point-activity/update', data);
}
/** 删除积分商城活动 */
export function deletePointActivity(id: number) {
return requestClient.delete(`/promotion/point-activity/delete?id=${id}`);
}
/** 关闭积分商城活动 */
export function closePointActivity(id: number) {
return requestClient.put(`/promotion/point-activity/close?id=${id}`);
}

View File

@@ -0,0 +1,88 @@
import type { PageParam, PageResult } from '../../../types';
import { requestClient } from '#/api/request';
export namespace MallRewardActivityApi {
/** 优惠规则 */
export interface RewardRule {
/** 满足金额 */
limit?: number;
/** 优惠金额 */
discountPrice?: number;
/** 是否包邮 */
freeDelivery?: boolean;
/** 赠送积分 */
point: number;
/** 赠送优惠券数量 */
giveCouponTemplateCounts?: {
[key: number]: number;
};
}
/** 满减送活动 */
export interface RewardActivity {
/** 活动编号 */
id?: number;
/** 活动名称 */
name?: string;
/** 开始时间 */
startTime?: Date;
/** 结束时间 */
endTime?: Date;
/** 开始和结束时间(仅前端使用) */
startAndEndTime?: Date[];
/** 备注 */
remark?: string;
/** 条件类型 */
conditionType?: number;
/** 商品范围 */
productScope?: number;
/** 优惠规则列表 */
rules: RewardRule[];
/** 商品范围值(仅表单使用):值为品类编号列表、商品编号列表 */
productScopeValues?: number[];
/** 商品分类编号列表(仅表单使用) */
productCategoryIds?: number[];
/** 商品 SPU 编号列表(仅表单使用) */
productSpuIds?: number[];
}
}
/** 新增满减送活动 */
export function createRewardActivity(
data: MallRewardActivityApi.RewardActivity,
) {
return requestClient.post('/promotion/reward-activity/create', data);
}
/** 更新满减送活动 */
export function updateRewardActivity(
data: MallRewardActivityApi.RewardActivity,
) {
return requestClient.put('/promotion/reward-activity/update', data);
}
/** 查询满减送活动列表 */
export function getRewardActivityPage(params: PageParam) {
return requestClient.get<PageResult<MallRewardActivityApi.RewardActivity>>(
'/promotion/reward-activity/page',
{ params },
);
}
/** 查询满减送活动详情 */
export function getReward(id: number) {
return requestClient.get<MallRewardActivityApi.RewardActivity>(
`/promotion/reward-activity/get?id=${id}`,
);
}
/** 删除满减送活动 */
export function deleteRewardActivity(id: number) {
return requestClient.delete(`/promotion/reward-activity/delete?id=${id}`);
}
/** 关闭满减送活动 */
export function closeRewardActivity(id: number) {
return requestClient.put(`/promotion/reward-activity/close?id=${id}`);
}

View File

@@ -0,0 +1,117 @@
import type { PageParam, PageResult } from '../../../types';
import type { MallSpuApi } from '#/api/mall/product/spu';
import { requestClient } from '#/api/request';
export namespace MallSeckillActivityApi {
/** 秒杀商品 */
export interface SeckillProduct {
/** 商品 SKU 编号 */
skuId: number;
/** 商品 SPU 编号 */
spuId: number;
/** 秒杀价格 */
seckillPrice: number;
/** 秒杀库存 */
stock: number;
}
/** 秒杀活动 */
export interface SeckillActivity {
/** 活动编号 */
id?: number;
/** 商品 SPU 编号 */
spuId?: number;
/** 活动名称 */
name?: string;
/** 活动状态 */
status?: number;
/** 备注 */
remark?: string;
/** 开始时间 */
startTime?: Date;
/** 结束时间 */
endTime?: Date;
/** 排序 */
sort?: number;
/** 配置编号 */
configIds?: string;
/** 订单数量 */
orderCount?: number;
/** 用户数量 */
userCount?: number;
/** 总金额 */
totalPrice?: number;
/** 总限购数量 */
totalLimitCount?: number;
/** 单次限购数量 */
singleLimitCount?: number;
/** 秒杀库存 */
stock?: number;
/** 秒杀总库存 */
totalStock?: number;
/** 秒杀价格 */
seckillPrice?: number;
/** 秒杀商品列表 */
products?: SeckillProduct[];
}
/** 扩展 SKU 配置 */
export type SkuExtension = {
/** 秒杀商品配置 */
productConfig: SeckillProduct;
} & MallSpuApi.Sku;
/** 扩展 SPU 配置 */
export interface SpuExtension extends MallSpuApi.Spu {
/** SKU 列表 */
skus: SkuExtension[];
}
}
/** 查询秒杀活动列表 */
export function getSeckillActivityPage(params: PageParam) {
return requestClient.get<PageResult<MallSeckillActivityApi.SeckillActivity>>(
'/promotion/seckill-activity/page',
{ params },
);
}
/** 查询秒杀活动列表,基于活动编号数组 */
export function getSeckillActivityListByIds(ids: number[]) {
return requestClient.get<MallSeckillActivityApi.SeckillActivity[]>(
`/promotion/seckill-activity/list-by-ids?ids=${ids}`,
);
}
/** 查询秒杀活动详情 */
export function getSeckillActivity(id: number) {
return requestClient.get<MallSeckillActivityApi.SeckillActivity>(
`/promotion/seckill-activity/get?id=${id}`,
);
}
/** 新增秒杀活动 */
export function createSeckillActivity(
data: MallSeckillActivityApi.SeckillActivity,
) {
return requestClient.post('/promotion/seckill-activity/create', data);
}
/** 修改秒杀活动 */
export function updateSeckillActivity(
data: MallSeckillActivityApi.SeckillActivity,
) {
return requestClient.put('/promotion/seckill-activity/update', data);
}
/** 关闭秒杀活动 */
export function closeSeckillActivity(id: number) {
return requestClient.put(`/promotion/seckill-activity/close?id=${id}`);
}
/** 删除秒杀活动 */
export function deleteSeckillActivity(id: number) {
return requestClient.delete(`/promotion/seckill-activity/delete?id=${id}`);
}

View File

@@ -0,0 +1,74 @@
import type { PageParam, PageResult } from '../../../types';
import { requestClient } from '#/api/request';
export namespace MallSeckillConfigApi {
/** 秒杀时段 */
export interface SeckillConfig {
/** 编号 */
id: number;
/** 秒杀时段名称 */
name: string;
/** 开始时间点 */
startTime: string;
/** 结束时间点 */
endTime: string;
/** 秒杀轮播图 */
sliderPicUrls: string[];
/** 活动状态 */
status: number;
}
/** 时段配置状态更新 */
export interface StatusUpdate {
/** 编号 */
id: number;
/** 状态 */
status: number;
}
}
/** 查询秒杀时段分页 */
export function getSeckillConfigPage(params: PageParam) {
return requestClient.get<PageResult<MallSeckillConfigApi.SeckillConfig>>(
'/promotion/seckill-config/page',
{ params },
);
}
/** 查询秒杀时段列表 */
export function getSimpleSeckillConfigList() {
return requestClient.get<MallSeckillConfigApi.SeckillConfig[]>(
'/promotion/seckill-config/list',
);
}
/** 查询秒杀时段详情 */
export function getSeckillConfig(id: number) {
return requestClient.get<MallSeckillConfigApi.SeckillConfig>(
`/promotion/seckill-config/get?id=${id}`,
);
}
/** 新增秒杀时段 */
export function createSeckillConfig(data: MallSeckillConfigApi.SeckillConfig) {
return requestClient.post('/promotion/seckill-config/create', data);
}
/** 修改秒杀时段 */
export function updateSeckillConfig(data: MallSeckillConfigApi.SeckillConfig) {
return requestClient.put('/promotion/seckill-config/update', data);
}
/** 删除秒杀时段 */
export function deleteSeckillConfig(id: number) {
return requestClient.delete(`/promotion/seckill-config/delete?id=${id}`);
}
/** 修改时段配置状态 */
export function updateSeckillConfigStatus(id: number, status: number) {
return requestClient.put('/promotion/seckill-config/update-status', {
id,
status,
});
}