feat: mp api

dev
xingyu4j 2025-05-30 20:51:03 +08:00
parent 4f4d4972c5
commit c7f207034f
10 changed files with 570 additions and 0 deletions

View File

@ -0,0 +1,59 @@
import type { PageParam, PageResult } from '@vben/request';
import { requestClient } from '#/api/request';
export namespace MpAccountApi {
/** 公众号账号信息 */
export interface Account {
id?: number;
name: string;
account: string;
appId: string;
appSecret: string;
token: string;
aesKey?: string;
qrCodeUrl?: string;
remark?: string;
createTime?: Date;
}
}
/** 查询公众号账号列表 */
export function getAccountPage(params: PageParam) {
return requestClient.get<PageResult<MpAccountApi.Account>>(
'/mp/account/page',
{
params,
},
);
}
/** 查询公众号账号详情 */
export function getAccount(id: number) {
return requestClient.get<MpAccountApi.Account>(`/mp/account/get?id=${id}`);
}
/** 新增公众号账号 */
export function createAccount(data: MpAccountApi.Account) {
return requestClient.post('/mp/account/create', data);
}
/** 修改公众号账号 */
export function updateAccount(data: MpAccountApi.Account) {
return requestClient.put('/mp/account/update', data);
}
/** 删除公众号账号 */
export function deleteAccount(id: number) {
return requestClient.delete(`/mp/account/delete?id=${id}`);
}
/** 生成公众号账号二维码 */
export function generateAccountQrCode(id: number) {
return requestClient.post(`/mp/account/generate-qr-code?id=${id}`);
}
/** 清空公众号账号 API 配额 */
export function clearAccountQuota(id: number) {
return requestClient.post(`/mp/account/clear-quota?id=${id}`);
}

View File

@ -0,0 +1,49 @@
import type { PageParam, PageResult } from '@vben/request';
import { requestClient } from '#/api/request';
export namespace MpAutoReplyApi {
/** 自动回复信息 */
export interface AutoReply {
id?: number;
accountId: number;
type: number;
keyword: string;
content: string;
status: number;
remark?: string;
createTime?: Date;
}
}
/** 查询自动回复列表 */
export function getAutoReplyPage(params: PageParam) {
return requestClient.get<PageResult<MpAutoReplyApi.AutoReply>>(
'/mp/auto-reply/page',
{
params,
},
);
}
/** 查询自动回复详情 */
export function getAutoReply(id: number) {
return requestClient.get<MpAutoReplyApi.AutoReply>(
`/mp/auto-reply/get?id=${id}`,
);
}
/** 新增自动回复 */
export function createAutoReply(data: MpAutoReplyApi.AutoReply) {
return requestClient.post('/mp/auto-reply/create', data);
}
/** 修改自动回复 */
export function updateAutoReply(data: MpAutoReplyApi.AutoReply) {
return requestClient.put('/mp/auto-reply/update', data);
}
/** 删除自动回复 */
export function deleteAutoReply(id: number) {
return requestClient.delete(`/mp/auto-reply/delete?id=${id}`);
}

View File

@ -0,0 +1,59 @@
import type { PageParam, PageResult } from '@vben/request';
import { requestClient } from '#/api/request';
export namespace MpDraftApi {
/** 草稿文章信息 */
export interface Article {
title: string;
author: string;
digest: string;
content: string;
contentSourceUrl: string;
thumbMediaId: string;
showCoverPic: number;
needOpenComment: number;
onlyFansCanComment: number;
}
/** 草稿信息 */
export interface Draft {
id?: number;
accountId: number;
mediaId: string;
articles: Article[];
createTime?: Date;
}
}
/** 查询草稿列表 */
export function getDraftPage(params: PageParam) {
return requestClient.get<PageResult<MpDraftApi.Draft>>('/mp/draft/page', {
params,
});
}
/** 创建草稿 */
export function createDraft(accountId: number, articles: MpDraftApi.Article[]) {
return requestClient.post('/mp/draft/create', articles, {
params: { accountId },
});
}
/** 更新草稿 */
export function updateDraft(
accountId: number,
mediaId: string,
articles: MpDraftApi.Article[],
) {
return requestClient.put('/mp/draft/update', articles, {
params: { accountId, mediaId },
});
}
/** 删除草稿 */
export function deleteDraft(accountId: number, mediaId: string) {
return requestClient.delete('/mp/draft/delete', {
params: { accountId, mediaId },
});
}

View File

@ -0,0 +1,45 @@
import type { PageParam, PageResult } from '@vben/request';
import { requestClient } from '#/api/request';
export namespace MpFreePublishApi {
/** 自由发布文章信息 */
export interface FreePublish {
id?: number;
accountId: number;
mediaId: string;
articleId: string;
title: string;
author: string;
digest: string;
content: string;
thumbUrl: string;
status: number;
publishTime?: Date;
createTime?: Date;
}
}
/** 查询自由发布文章列表 */
export function getFreePublishPage(params: PageParam) {
return requestClient.get<PageResult<MpFreePublishApi.FreePublish>>(
'/mp/free-publish/page',
{
params,
},
);
}
/** 删除自由发布文章 */
export function deleteFreePublish(accountId: number, articleId: string) {
return requestClient.delete('/mp/free-publish/delete', {
params: { accountId, articleId },
});
}
/** 发布自由发布文章 */
export function submitFreePublish(accountId: number, mediaId: string) {
return requestClient.post('/mp/free-publish/submit', null, {
params: { accountId, mediaId },
});
}

View File

@ -0,0 +1,43 @@
import type { PageParam, PageResult } from '@vben/request';
import { requestClient } from '#/api/request';
/** 素材类型枚举 */
export enum MaterialType {
IMAGE = 1, // 图片
THUMB = 4, // 缩略图
VIDEO = 3, // 视频
VOICE = 2, // 语音
}
export namespace MpMaterialApi {
/** 素材信息 */
export interface Material {
id?: number;
accountId: number;
type: MaterialType;
mediaId: string;
url: string;
name: string;
size: number;
remark?: string;
createTime?: Date;
}
}
/** 查询素材列表 */
export function getMaterialPage(params: PageParam) {
return requestClient.get<PageResult<MpMaterialApi.Material>>(
'/mp/material/page',
{
params,
},
);
}
/** 删除永久素材 */
export function deletePermanentMaterial(id: number) {
return requestClient.delete('/mp/material/delete-permanent', {
params: { id },
});
}

View File

@ -0,0 +1,58 @@
import { requestClient } from '#/api/request';
/** 菜单类型枚举 */
export enum MenuType {
CLICK = 'click', // 点击推事件
LOCATION_SELECT = 'location_select', // 发送位置
MEDIA_ID = 'media_id', // 下发消息
MINIPROGRAM = 'miniprogram', // 小程序
PIC_PHOTO_OR_ALBUM = 'pic_photo_or_album', // 拍照或者相册发图
PIC_SYSPHOTO = 'pic_sysphoto', // 系统拍照发图
PIC_WEIXIN = 'pic_weixin', // 微信相册发图
SCANCODE_PUSH = 'scancode_push', // 扫码推事件
SCANCODE_WAITMSG = 'scancode_waitmsg', // 扫码带提示
VIEW = 'view', // 跳转URL
VIEW_LIMITED = 'view_limited', // 跳转图文消息URL
}
export namespace MpMenuApi {
/** 菜单按钮信息 */
export interface MenuButton {
type: MenuType;
name: string;
key?: string;
url?: string;
mediaId?: string;
appId?: string;
pagePath?: string;
subButtons?: MenuButton[];
}
/** 菜单信息 */
export interface Menu {
accountId: number;
menus: MenuButton[];
}
}
/** 查询菜单列表 */
export function getMenuList(accountId: number) {
return requestClient.get<MpMenuApi.MenuButton[]>('/mp/menu/list', {
params: { accountId },
});
}
/** 保存菜单 */
export function saveMenu(accountId: number, menus: MpMenuApi.MenuButton[]) {
return requestClient.post('/mp/menu/save', {
accountId,
menus,
});
}
/** 删除菜单 */
export function deleteMenu(accountId: number) {
return requestClient.delete('/mp/menu/delete', {
params: { accountId },
});
}

View File

@ -0,0 +1,54 @@
import type { PageParam, PageResult } from '@vben/request';
import { requestClient } from '#/api/request';
/** 消息类型枚举 */
export enum MessageType {
IMAGE = 'image', // 图片消息
MPNEWS = 'mpnews', // 公众号图文消息
MUSIC = 'music', // 音乐消息
NEWS = 'news', // 图文消息
TEXT = 'text', // 文本消息
VIDEO = 'video', // 视频消息
VOICE = 'voice', // 语音消息
WXCARD = 'wxcard', // 卡券消息
}
export namespace MpMessageApi {
/** 消息信息 */
export interface Message {
id?: number;
accountId: number;
type: MessageType;
openid: string;
content: string;
mediaId?: string;
status: number;
remark?: string;
createTime?: Date;
}
/** 发送消息请求 */
export interface SendMessageRequest {
accountId: number;
openid: string;
type: MessageType;
content: string;
mediaId?: string;
}
}
/** 查询消息列表 */
export function getMessagePage(params: PageParam) {
return requestClient.get<PageResult<MpMessageApi.Message>>(
'/mp/message/page',
{
params,
},
);
}
/** 发送消息 */
export function sendMessage(data: MpMessageApi.SendMessageRequest) {
return requestClient.post('/mp/message/send', data);
}

View File

@ -0,0 +1,84 @@
import type { PageParam } from '@vben/request';
import { requestClient } from '#/api/request';
export namespace MpStatisticsApi {
/** 统计查询参数 */
export interface StatisticsQuery extends PageParam {
accountId: number;
beginDate: string;
endDate: string;
}
/** 消息发送概况数据 */
export interface UpstreamMessage {
refDate: string;
msgType: string;
msgUser: number;
msgCount: number;
}
/** 用户增减数据 */
export interface UserSummary {
refDate: string;
userSource: number;
newUser: number;
cancelUser: number;
cumulateUser: number;
}
/** 用户累计数据 */
export interface UserCumulate {
refDate: string;
cumulateUser: number;
}
/** 接口分析数据 */
export interface InterfaceSummary {
refDate: string;
callbackCount: number;
failCount: number;
totalTimeCost: number;
maxTimeCost: number;
}
}
/** 获取消息发送概况数据 */
export function getUpstreamMessage(params: MpStatisticsApi.StatisticsQuery) {
return requestClient.get<MpStatisticsApi.UpstreamMessage[]>(
'/mp/statistics/upstream-message',
{
params,
},
);
}
/** 获取用户增减数据 */
export function getUserSummary(params: MpStatisticsApi.StatisticsQuery) {
return requestClient.get<MpStatisticsApi.UserSummary[]>(
'/mp/statistics/user-summary',
{
params,
},
);
}
/** 获取用户累计数据 */
export function getUserCumulate(params: MpStatisticsApi.StatisticsQuery) {
return requestClient.get<MpStatisticsApi.UserCumulate[]>(
'/mp/statistics/user-cumulate',
{
params,
},
);
}
/** 获取接口分析数据 */
export function getInterfaceSummary(params: MpStatisticsApi.StatisticsQuery) {
return requestClient.get<MpStatisticsApi.InterfaceSummary[]>(
'/mp/statistics/interface-summary',
{
params,
},
);
}

View File

@ -0,0 +1,62 @@
import type { PageParam, PageResult } from '@vben/request';
import { requestClient } from '#/api/request';
export namespace MpTagApi {
/** 标签信息 */
export interface Tag {
id?: number;
name: string;
accountId: number;
createTime?: Date;
}
/** 标签分页查询参数 */
export interface TagPageQuery extends PageParam {
accountId?: number;
name?: string;
}
}
/** 创建公众号标签 */
export function createTag(data: MpTagApi.Tag) {
return requestClient.post('/mp/tag/create', data);
}
/** 更新公众号标签 */
export function updateTag(data: MpTagApi.Tag) {
return requestClient.put('/mp/tag/update', data);
}
/** 删除公众号标签 */
export function deleteTag(id: number) {
return requestClient.delete('/mp/tag/delete', {
params: { id },
});
}
/** 获取公众号标签 */
export function getTag(id: number) {
return requestClient.get<MpTagApi.Tag>('/mp/tag/get', {
params: { id },
});
}
/** 获取公众号标签分页 */
export function getTagPage(params: MpTagApi.TagPageQuery) {
return requestClient.get<PageResult<MpTagApi.Tag>>('/mp/tag/page', {
params,
});
}
/** 获取公众号标签精简信息列表 */
export function getSimpleTagList() {
return requestClient.get<MpTagApi.Tag[]>('/mp/tag/list-all-simple');
}
/** 同步公众号标签 */
export function syncTag(accountId: number) {
return requestClient.post('/mp/tag/sync', null, {
params: { accountId },
});
}

View File

@ -0,0 +1,57 @@
import type { PageParam, PageResult } from '@vben/request';
import { requestClient } from '#/api/request';
export namespace MpUserApi {
/** 用户信息 */
export interface User {
id?: number;
accountId: number;
openid: string;
nickname: string;
avatar: string;
sex: number;
country: string;
province: string;
city: string;
language: string;
subscribe: boolean;
subscribeTime?: Date;
remark?: string;
tagIds?: number[];
createTime?: Date;
}
/** 用户分页查询参数 */
export interface UserPageQuery extends PageParam {
accountId?: number;
nickname?: string;
tagId?: number;
}
}
/** 更新公众号粉丝 */
export function updateUser(data: MpUserApi.User) {
return requestClient.put('/mp/user/update', data);
}
/** 获取公众号粉丝 */
export function getUser(id: number) {
return requestClient.get<MpUserApi.User>('/mp/user/get', {
params: { id },
});
}
/** 获取公众号粉丝分页 */
export function getUserPage(params: MpUserApi.UserPageQuery) {
return requestClient.get<PageResult<MpUserApi.User>>('/mp/user/page', {
params,
});
}
/** 同步公众号粉丝 */
export function syncUser(accountId: number) {
return requestClient.post('/mp/user/sync', null, {
params: { accountId },
});
}