icms-api 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,150 @@
1
+ import { ImageVO, MemberSrv, SeoProps } from './site';
2
+ /**
3
+ * 附件类型
4
+ */
5
+ export type AttachmentType = 'image' | 'video' | 'audio' | 'file';
6
+ /**
7
+ * 附件
8
+ */
9
+ export interface AttachmentVO {
10
+ id: string;
11
+ name: string;
12
+ size: number;
13
+ url: string;
14
+ type: AttachmentType;
15
+ }
16
+ /**
17
+ * 内容基类,隶属网站
18
+ */
19
+ interface OwnerWebSite {
20
+ id: string;
21
+ /**
22
+ * 语言站点编号
23
+ */
24
+ websiteNo: string;
25
+ /**
26
+ * 具体内容编号
27
+ */
28
+ entityNo: string;
29
+ /**
30
+ * 隶属栏目层级,如(channelNoLevel)
31
+ */
32
+ channelNoLevel: string;
33
+ /**
34
+ * 创建时间
35
+ */
36
+ createTime: string;
37
+ /**
38
+ * 排序
39
+ */
40
+ sortBy: number;
41
+ /**
42
+ * Seo相关属性
43
+ */
44
+ seoProps?: SeoProps;
45
+ }
46
+ /**
47
+ * 基础内容类
48
+ */
49
+ export interface AbsContent extends OwnerWebSite {
50
+ /**
51
+ * 内容标题
52
+ */
53
+ title: string;
54
+ /**
55
+ * 内容简介
56
+ */
57
+ shortDesc?: string;
58
+ /**
59
+ * 关键字
60
+ */
61
+ keywords?: string;
62
+ /**
63
+ * 内容图片列表
64
+ */
65
+ imageList?: Array<ImageVO>;
66
+ /**
67
+ * 附件列表
68
+ */
69
+ attachments?: Array<AttachmentVO>;
70
+ /**
71
+ * 缩略图
72
+ */
73
+ thumbUrl?: string;
74
+ }
75
+ export type OwnerUser = {
76
+ id: string;
77
+ name: string;
78
+ nickname?: string;
79
+ avatar?: string;
80
+ userType: number;
81
+ };
82
+ export type MemberSrvProp = {
83
+ memberSrvSet: Set<MemberSrv>;
84
+ };
85
+ /**
86
+ * 知识付费基类
87
+ */
88
+ export interface AbsCopyrightContent extends AbsContent {
89
+ /**
90
+ * 作者
91
+ */
92
+ author?: string;
93
+ /**
94
+ * 来源
95
+ */
96
+ source?: string;
97
+ /**
98
+ * 官方发布
99
+ */
100
+ official: boolean;
101
+ /**
102
+ * 发布人
103
+ */
104
+ ownerInfo?: OwnerUser;
105
+ /**
106
+ * 查阅权限,即当前登录用户有对应的会员卡方可以查看(集合中fee==0或该字段为空、所属最近层级的栏目memberSrvProp为空或fee==0的除外)
107
+ */
108
+ memberSrvProp?: MemberSrvProp;
109
+ }
110
+ /**
111
+ * 内容分组
112
+ */
113
+ export interface ContentGroup<T> {
114
+ id: string;
115
+ websiteId: string;
116
+ groupNo: string;
117
+ groupName: string;
118
+ groupDesc?: string;
119
+ image?: ImageVO;
120
+ sortBy: number;
121
+ groupSets: Array<T>;
122
+ }
123
+ export interface GroupSet<T extends AbsContent> {
124
+ contentObject: T;
125
+ }
126
+ export interface PageInfo<T> {
127
+ total: number;
128
+ pageSize: number;
129
+ pageCount: number;
130
+ pageNo: number;
131
+ first: boolean;
132
+ last: boolean;
133
+ content: Array<T>;
134
+ }
135
+ /**
136
+ * 分页参数
137
+ */
138
+ export type PageParams = {
139
+ /**
140
+ * 排序
141
+ */
142
+ sort?: 'ASC' | 'DESC';
143
+ /**
144
+ * 排序字段
145
+ */
146
+ sortBy?: string;
147
+ pageNo: number;
148
+ pageSize: number;
149
+ };
150
+ export {};
@@ -0,0 +1,53 @@
1
+ import { ChannelType, WebsiteOwner } from './site';
2
+ /**
3
+ * 评论内容
4
+ */
5
+ export interface Reviews extends WebsiteOwner {
6
+ /**
7
+ * 被评论内容的类型
8
+ */
9
+ reviewType: ChannelType;
10
+ /**
11
+ * 被评论内容编号
12
+ */
13
+ entityNo: string;
14
+ /**
15
+ * 评论人
16
+ */
17
+ name: string;
18
+ /**
19
+ * 评论人ID,即loginUserId, 如果允许未登录评论则uid为空
20
+ */
21
+ uid?: string;
22
+ /**
23
+ * 评论人头像
24
+ */
25
+ avatar?: string;
26
+ /**
27
+ * 评级
28
+ * 如最多5颗星
29
+ * 0没给评级,1表示一颗星,2表示2颗星等等
30
+ * 排序desc
31
+ */
32
+ rating: number;
33
+ /**
34
+ * 评论内容,可能为空
35
+ */
36
+ message?: string;
37
+ /**
38
+ * 评论时间
39
+ */
40
+ createTime: string;
41
+ /**
42
+ * 是否可见状态
43
+ */
44
+ visible: boolean;
45
+ /**
46
+ * 是否管理模似输入
47
+ */
48
+ custom?: boolean;
49
+ /**
50
+ * 模似输入时间
51
+ */
52
+ createdAt?: string;
53
+ }
@@ -0,0 +1,14 @@
1
+ import { AbsCopyrightContent } from './cms-base';
2
+ export interface NewsContent extends AbsCopyrightContent {
3
+ jumpUrl?: string;
4
+ details?: {
5
+ /**
6
+ * 简介
7
+ */
8
+ introduction?: string;
9
+ /**
10
+ * 详情
11
+ */
12
+ description?: string;
13
+ };
14
+ }
@@ -0,0 +1,29 @@
1
+ import { AbsContent } from './cms-base';
2
+ export interface ProductContent extends AbsContent {
3
+ /**
4
+ * 规格说明
5
+ */
6
+ specification?: string;
7
+ /**
8
+ * 产品品特性
9
+ */
10
+ features?: string;
11
+ /**
12
+ * 产品价格
13
+ */
14
+ salePrice: number;
15
+ /**
16
+ * 市场价格
17
+ */
18
+ marketPrice?: number;
19
+ details?: {
20
+ /**
21
+ * 产品简介
22
+ */
23
+ introduction?: string;
24
+ /**
25
+ * 产品详情
26
+ */
27
+ description?: string;
28
+ };
29
+ }
@@ -0,0 +1,3 @@
1
+ export type { AttachmentType, AttachmentVO, PageInfo, PageParams, OwnerUser, MemberSrvProp } from './cms-base';
2
+ export * from './cms-product';
3
+ export * from './cms-news';
@@ -0,0 +1,293 @@
1
+ /**
2
+ * (国际化)语言站点,用于语言站点切换
3
+ */
4
+ export interface I18NWebsite {
5
+ /**
6
+ * 后端语言枚举,如zh_CN,en等
7
+ */
8
+ id: string;
9
+ /**
10
+ * 后端语言枚举对应的code,与前端locale值是对应的
11
+ * 如(zh-CN,en),与ID不同是中横线与下横线,因为后端为java,枚举不能使用中横线定义,为了与前端对应所以增加了该code字段
12
+ */
13
+ code: string;
14
+ /**
15
+ * 后端语言枚举对应的name(如"简体中文"、"English"等)
16
+ */
17
+ name: string;
18
+ /**
19
+ * 后端语言枚举对应的icon(如国旗)
20
+ */
21
+ icon: string;
22
+ /**
23
+ * 站点id(即Websit实体主键)
24
+ */
25
+ websiteId: string;
26
+ /**
27
+ * 站点编号(即Websit实体编号,全局唯一)
28
+ */
29
+ websiteNo: string;
30
+ }
31
+ /**
32
+ * SEO属性
33
+ */
34
+ export type SeoProps = {
35
+ title?: string;
36
+ keywords?: string;
37
+ description?: string;
38
+ };
39
+ /**
40
+ * 站点实体(与Website是一对多关系)
41
+ */
42
+ export interface Site {
43
+ id: string;
44
+ description?: string;
45
+ url?: string;
46
+ qrcodeUrl?: string;
47
+ wxQrcodeUrl?: string;
48
+ icpNumber?: string;
49
+ safeDomains?: string;
50
+ apiKey: string;
51
+ webSiteList?: Array<WebSite>;
52
+ }
53
+ /**
54
+ * 网站实体
55
+ */
56
+ export interface WebSite {
57
+ id: string;
58
+ name: string;
59
+ /**
60
+ * 网站别名
61
+ */
62
+ aliasName?: string;
63
+ /**
64
+ * 言语,对应 I18NWebsite.id
65
+ */
66
+ language: string;
67
+ /**
68
+ * 网站简介
69
+ */
70
+ description?: string;
71
+ /**
72
+ * 网站编号
73
+ */
74
+ websiteNo: string;
75
+ contactPhone?: string;
76
+ contactEmail?: string;
77
+ contactAddr?: string;
78
+ contactQrCode?: string;
79
+ /**
80
+ * 允许插入js代码,encode后保存,前端需要decode后才能使用
81
+ */
82
+ scriptContent?: string;
83
+ /**
84
+ * ICMS接口到期时间,即ICMS系统API调到到期时间
85
+ */
86
+ dueTime?: string;
87
+ /**
88
+ * 网站创建时间
89
+ */
90
+ createTime?: string;
91
+ /**
92
+ * 是否默认网站,输入网站优先打开默认网站,如果没有默认即打开Site下属网站的第一个网站
93
+ */
94
+ defaultSite?: boolean;
95
+ /**
96
+ * Cookie 政策内容公示的内容,即用户打开网站时,公示Cookie使用政策(用户点击“接受”或“不接受”)
97
+ */
98
+ agreement?: string;
99
+ /**
100
+ * 网站SEO相关设置
101
+ */
102
+ seoProps?: SeoProps;
103
+ /**
104
+ * 网站不可用状态,true为不可用,false表示可用
105
+ */
106
+ unavailable: boolean;
107
+ /**
108
+ * 网站备案号(引用的是site.icpNumber)
109
+ */
110
+ icpNumber?: string;
111
+ /**
112
+ * 网址二维码(引用的是site.qrcodeUrl)
113
+ */
114
+ qrcodeUrl?: string;
115
+ /**
116
+ * 微信二维码
117
+ */
118
+ wxQrcodeUrl?: string;
119
+ /**
120
+ * 网站导航菜单
121
+ */
122
+ websiteNavVOList?: Array<WebsiteNavVO>;
123
+ /**
124
+ * 友情链接(sortBy 升序前20个链接)
125
+ */
126
+ friendLinksList?: Array<FriendLink>;
127
+ }
128
+ export interface Webchannel {
129
+ id: string;
130
+ /**
131
+ * 栏目类型
132
+ */
133
+ channelType: ChannelType;
134
+ /**
135
+ * 栏目编号,全局唯一
136
+ */
137
+ channelNo: string;
138
+ /**
139
+ * 栏目名称/标题
140
+ */
141
+ name: string;
142
+ /**
143
+ * 栏目URI
144
+ */
145
+ uri: string;
146
+ /**
147
+ * 栏目图片
148
+ */
149
+ image?: ImageVO;
150
+ /**
151
+ * 跳转链接
152
+ */
153
+ jumpUrl?: string;
154
+ /**
155
+ * 跳转链接的名称
156
+ */
157
+ jumpText?: string;
158
+ /**
159
+ * 栏目子标题
160
+ */
161
+ subTitle?: string;
162
+ /**
163
+ * 自定义标记
164
+ */
165
+ tagLabel?: string;
166
+ /**
167
+ * 栏目简介
168
+ */
169
+ introduction?: string;
170
+ /**
171
+ * 栏目下的Banner图片,可以用作轮播动画
172
+ */
173
+ banners?: Array<ImageVO>;
174
+ /**
175
+ * 栏目级别,由channelNo组成
176
+ * 格式如channelNo,channelNo,channelNo,
177
+ * 解释如当前栏目level值为channelNo1,channelNo2,channelNo3,
178
+ * 那么当前栏目的父级栏目为channelNo3,channelNo3的父级栏目为channelNo2,依次类推,根栏目level为空
179
+ * 注意:系统最多允许设置三级栏目
180
+ */
181
+ level?: string;
182
+ /**
183
+ * 栏目排序,接口返回是按升序排序的
184
+ */
185
+ sortBy: number;
186
+ /**
187
+ * 返回值与channelNo一致
188
+ */
189
+ key: string;
190
+ /**
191
+ * 返回复与name一致
192
+ */
193
+ title: string;
194
+ /**
195
+ * 隶属语言站点ID(全局唯一)
196
+ */
197
+ websiteId: string;
198
+ /**
199
+ * 隶属语言站点编号(全局唯一)
200
+ */
201
+ websiteNo: string;
202
+ /**
203
+ * 样
204
+ */
205
+ seoProps?: SeoProps;
206
+ children?: Array<WebsiteNavVO>;
207
+ }
208
+ /**
209
+ * 友情链接
210
+ */
211
+ export interface FriendLink {
212
+ /**
213
+ * id
214
+ */
215
+ id: string;
216
+ /**
217
+ * 链接名称
218
+ */
219
+ name: string;
220
+ /**
221
+ * 排序
222
+ */
223
+ sortBy: number;
224
+ /**
225
+ * 链接说明
226
+ */
227
+ description?: string;
228
+ /**
229
+ * 链接网址
230
+ */
231
+ url: string;
232
+ /**
233
+ * 是否可见
234
+ */
235
+ visible: boolean;
236
+ }
237
+ export type WebsiteNavVO = Pick<Webchannel, 'id' | 'name' | 'channelNo' | 'channelType' | 'uri' | 'image' | 'jumpUrl' | 'jumpText' | 'subTitle' | 'level' | 'sortBy' | 'children'>;
238
+ /**
239
+ * 栏目类型
240
+ */
241
+ export type ChannelType = 'page' | 'product' | 'article' | 'photo' | 'video' | 'activity';
242
+ /**
243
+ * 会员卡收费方式
244
+ */
245
+ export type MemberFeeType = 'monthly' | 'quarterly' | 'year' | 'forever';
246
+ export type ImageVO = {
247
+ id: string;
248
+ name?: string;
249
+ thumbUrl: string;
250
+ imageUrl: string;
251
+ };
252
+ export type Metadata = {
253
+ title?: string;
254
+ description?: string;
255
+ keywords?: string;
256
+ authors?: {
257
+ url: string;
258
+ name: string;
259
+ };
260
+ [k: string]: unknown;
261
+ };
262
+ export type WebsiteInfo = {
263
+ "website": WebSite;
264
+ "i18nSites": Array<I18NWebsite>;
265
+ "metadata"?: Metadata;
266
+ };
267
+ /**
268
+ * 会员用户相关资源的所有者
269
+ */
270
+ export interface Owner {
271
+ id: string;
272
+ teamId: string;
273
+ siteId: string;
274
+ }
275
+ /**
276
+ * 隶属网站相关
277
+ */
278
+ export interface WebsiteOwner extends Owner {
279
+ websiteId: string;
280
+ }
281
+ /**
282
+ * 会员增值服务
283
+ */
284
+ export interface MemberSrv extends WebsiteOwner {
285
+ id: string;
286
+ /**
287
+ * 会员购买时记录该字段code,后台订单会自动翻译对应的会员卡
288
+ */
289
+ code: string;
290
+ name: string;
291
+ feeType: MemberFeeType;
292
+ fee?: number;
293
+ }
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "icms-api",
3
+ "private": false,
4
+ "version": "0.0.1",
5
+ "description": "对iCMS内容管理系统API的封装,使用该API能快速使用iCMS搭建您的WebApp!",
6
+ "type": "module",
7
+ "main": "./dist/icms-api.cjs.js",
8
+ "module": "./dist/icms-api.es.js",
9
+ "browser": "./dist/icms-api.umd.js",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/types/index.d.ts",
13
+ "import": "./dist/icms-api.es.js",
14
+ "require": "./dist/icms-api.cjs.js",
15
+ "default": "./dist/icms-api.es.js"
16
+ }
17
+ },
18
+ "types": "./dist/types/index.d.ts",
19
+ "files": [
20
+ "dist/**/*"
21
+ ],
22
+ "scripts": {
23
+ "dev": "vite",
24
+ "build": "tsc && vite build",
25
+ "build:types": "tsc --emitDeclarationOnly --outDir dist/types",
26
+ "test": "vitest run",
27
+ "preview": "vite preview",
28
+ "prepublishOnly": "npm run build",
29
+ "nextjs:dev": "cd simple-nextjs && npm install && npm run dev",
30
+ "nuxtjs:dev": "cd simple-nuxtjs && npm install && npm run dev"
31
+ },
32
+ "keywords": [
33
+ "cms",
34
+ "website",
35
+ "app",
36
+ "api",
37
+ "wechat"
38
+ ],
39
+ "author": "Rock.chen<szygnet@qq.com>",
40
+ "license": "MIT",
41
+ "repository": {
42
+ "type": "git",
43
+ "url": "git+https://github.com/rockychen2016/icms-api.git"
44
+ },
45
+ "bugs": {
46
+ "url": "https://github.com/rockychen2016/icms-api/issues"
47
+ },
48
+ "homepage": "https://github.com/rockychen2016/icms-api#readme",
49
+ "devDependencies": {
50
+ "@types/node": "^25.0.3",
51
+ "typescript": "~5.9.3",
52
+ "vite": "^7.2.4",
53
+ "vite-plugin-dts": "^4.5.4",
54
+ "vitest": "^1.0.0"
55
+ },
56
+ "dependencies": {
57
+ "iboot-http-client": "^1.4.8"
58
+ }
59
+ }