Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
pisns-forum-api
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
scrmGroup
pisns-forum-api
Commits
691235a5
Commit
691235a5
authored
Mar 09, 2015
by
张淼
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
2bc95dfd
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
475 additions
and
12 deletions
+475
-12
forumGroup.js
app/controllers/admin/forumGroup.js
+55
-0
forumInfo.js
app/controllers/admin/forumInfo.js
+22
-1
forumOptions.js
app/controllers/admin/forumOptions.js
+26
-0
forumGroup.js
app/controllers/mobile/forumGroup.js
+68
-0
forumThread.js
app/controllers/mobile/forumThread.js
+21
-0
forumGroup.js
app/models/forumGroup.js
+5
-0
forumOptions.js
app/models/forumOptions.js
+26
-0
forumThread.js
app/models/forumThread.js
+6
-3
forumGroupService.js
app/service/forumGroupService.js
+62
-0
forumInfoService.js
app/service/forumInfoService.js
+3
-3
forumOptionsService.js
app/service/forumOptionsService.js
+64
-0
forumThreadService.js
app/service/forumThreadService.js
+108
-5
optionsKey.js
app/utils/optionsKey.js
+9
-0
No files found.
app/controllers/admin/forumGroup.js
View file @
691235a5
...
...
@@ -29,6 +29,41 @@ router.post('/group/create', function(req, res, next) {
});
});
//
router
.
post
(
'/group/:gid/update'
,
function
(
req
,
res
,
next
)
{
var
rs
=
{};
var
gid
=
req
.
params
.
gid
;
if
(
gid
){
forumGroupService
.
updateGroupById
(
gid
,
req
.
body
,
function
(
err
,
group
){
if
(
err
)
{
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
res
.
json
(
_
.
assign
(
rs
,
returnCode
.
SUCCESS
));
}
});
}
else
{
res
.
json
(
returnCode
.
WRONG_PARAM
);
}
});
//
router
.
post
(
'/group/:gid/delete'
,
function
(
req
,
res
,
next
)
{
var
gid
=
req
.
params
.
gid
;
if
(
gid
){
forumGroupService
.
deleteGroupById
(
gid
,
function
(
err
,
result
){
if
(
err
){
res
.
json
(
returnCode
.
BUSY
);
}
else
{
res
.
json
(
returnCode
.
SUCCESS
);
}
});
}
else
{
res
.
json
(
returnCode
.
WRONG_PARAM
);
}
});
//获取目标论坛组信息
router
.
get
(
'/group/:gid/info'
,
function
(
req
,
res
,
next
)
{
var
gid
=
req
.
params
.
gid
||
null
;
...
...
@@ -50,6 +85,26 @@ router.get('/group/:gid/info', function(req, res, next) {
}
});
/**
* 获取论坛组列表
* @param {[type]} req [description]
* @param {[type]} res [description]
* @param {[type]} next) { var pageNo [description]
* @return {[type]} [description]
*/
router
.
get
(
'/group/list'
,
function
(
req
,
res
,
next
)
{
var
pageNo
=
req
.
query
.
pageNo
||
1
;
var
pageSize
=
req
.
query
.
pageSize
||
10
;
forumGroupService
.
getAll
(
req
.
session
.
user
.
ent_code
,
pageNo
,
pageSize
,
function
(
err
,
results
){
if
(
err
){
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
res
.
json
(
_
.
assign
(
results
,
returnCode
.
SUCCESS
));
}
});
});
/**
* 获取板块列表
* @param {[type]} req [description]
...
...
app/controllers/admin/forumInfo.js
View file @
691235a5
...
...
@@ -93,7 +93,7 @@ router.get('/info/:fid/threads', function(req, res, next) {
var
fid
=
req
.
params
.
fid
;
if
(
fid
){
forumThreadService
.
getAll
(
req
.
session
.
user
.
ent_code
,
fid
,
pageNo
,
pageSize
,
function
(
err
,
results
){
forumThreadService
.
getAll
ThreadByFid
(
req
.
session
.
user
.
ent_code
,
fid
,
pageNo
,
pageSize
,
function
(
err
,
results
){
if
(
err
){
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
...
...
@@ -105,3 +105,24 @@ router.get('/info/:fid/threads', function(req, res, next) {
res
.
json
(
returnCode
.
WRONG_PARAM
);
}
});
/**
* [description]
* @param {[type]}
* @param {[type]}
* @param {[type]}
* @return {[type]}
*/
router
.
get
(
'/threads/list'
,
function
(
req
,
res
,
next
)
{
var
pageNo
=
req
.
query
.
pageNo
||
1
;
var
pageSize
=
req
.
query
.
pageSize
||
10
;
forumThreadService
.
getAllThread
(
req
.
session
.
user
.
ent_code
,
pageNo
,
pageSize
,
function
(
err
,
results
){
if
(
err
){
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
res
.
json
(
_
.
assign
(
results
,
returnCode
.
SUCCESS
));
}
});
});
app/controllers/admin/forumOptions.js
0 → 100644
View file @
691235a5
'use strict'
;
var
express
=
require
(
'express'
),
router
=
express
.
Router
(),
returnCode
=
require
(
'../../utils/returnCode'
),
_
=
require
(
'lodash'
);
var
mongoose
=
require
(
'mongoose'
);
var
forumOptionsService
=
require
(
'../../service/forumOptionsService'
);
module
.
exports
=
function
(
app
)
{
app
.
use
(
'/admin/forum'
,
router
);
};
//文章收藏
router
.
post
(
'/options/create'
,
function
(
req
,
res
,
next
)
{
var
rs
=
{};
forumOptionsService
.
setShuffling
(
req
.
session
.
user
.
ent_code
,
req
.
body
.
value
,
function
(
err
,
entity
){
if
(
err
)
{
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
rs
.
data
=
{
'id'
:
entity
.
_id
};
res
.
json
(
_
.
assign
(
rs
,
returnCode
.
SUCCESS
));
}
});
});
\ No newline at end of file
app/controllers/mobile/forumGroup.js
View file @
691235a5
...
...
@@ -9,6 +9,9 @@ var ForumInfo = mongoose.model('ForumInfo');
var
forumGroupService
=
require
(
'../../service/forumGroupService'
);
var
forumInfoService
=
require
(
'../../service/forumInfoService'
);
var
forumOptionsService
=
require
(
'../../service/forumOptionsService'
);
var
async
=
require
(
'async'
);
module
.
exports
=
function
(
app
)
{
app
.
use
(
'/v1/forum'
,
router
);
...
...
@@ -50,6 +53,27 @@ router.get('/group/:gid/info', function(req, res, next) {
}
});
/**
* 获取论坛组列表
* @param {[type]} req [description]
* @param {[type]} res [description]
* @param {[type]} next) { var pageNo [description]
* @return {[type]} [description]
*/
router
.
get
(
'/group/list'
,
function
(
req
,
res
,
next
)
{
var
pageNo
=
req
.
query
.
pageNo
||
1
;
var
pageSize
=
req
.
query
.
pageSize
||
10
;
forumGroupService
.
getAll
(
req
.
session
.
user
.
ent_code
,
pageNo
,
pageSize
,
function
(
err
,
results
){
if
(
err
){
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
res
.
json
(
_
.
assign
(
results
,
returnCode
.
SUCCESS
));
}
});
});
/**
* 获取板块列表
* @param {[type]} req [description]
...
...
@@ -74,4 +98,48 @@ router.get('/group/:gid/forumInfos', function(req, res, next) {
}
else
{
res
.
json
(
returnCode
.
WRONG_PARAM
);
}
});
/**
* 获取板块列表及轮播图
* @param {[type]} req [description]
* @param {[type]} res [description]
* @param {[type]} next) { var pageNo [description]
* @return {[type]} [description]
*/
router
.
get
(
'/group/:gid/forumInfosAndShuffling'
,
function
(
req
,
res
,
next
)
{
async
.
parallel
([
function
(
callback
){
var
pageNo
=
req
.
query
.
pageNo
||
1
;
var
pageSize
=
req
.
query
.
pageSize
||
10
;
var
gid
=
req
.
params
.
gid
;
if
(
gid
){
forumInfoService
.
getAll
(
req
.
session
.
user
.
ent_code
,
gid
,
pageNo
,
pageSize
,
function
(
err
,
results
){
if
(
err
){
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
results
);
}
});
}
else
{
callback
(
'not find gid'
,
null
);
}
},
function
(
callback
){
forumOptionsService
.
getShuffling
(
req
.
session
.
user
.
ent_code
,
callback
);
}
],
function
(
err
,
results
){
if
(
err
){
res
.
json
(
returnCode
.
BUSY
);
}
else
{
var
infos
=
results
[
0
];
var
shuffling
=
results
[
1
];
var
rs
=
{};
rs
.
infos
=
infos
;
rs
.
shuffling
=
shuffling
;
res
.
json
(
_
.
assign
(
rs
,
returnCode
.
SUCCESS
));
}
});
});
\ No newline at end of file
app/controllers/mobile/forumThread.js
View file @
691235a5
...
...
@@ -33,6 +33,27 @@ router.post('/thread/create', function(req, res, next) {
});
});
/**
* [description]
* @param {[type]}
* @param {[type]}
* @param {[type]}
* @return {[type]}
*/
router
.
get
(
'/threads/list'
,
function
(
req
,
res
,
next
)
{
var
pageNo
=
req
.
query
.
pageNo
||
1
;
var
pageSize
=
req
.
query
.
pageSize
||
10
;
forumThreadService
.
getAllThread
(
req
.
session
.
user
.
ent_code
,
pageNo
,
pageSize
,
function
(
err
,
results
){
if
(
err
){
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
res
.
json
(
_
.
assign
(
results
,
returnCode
.
SUCCESS
));
}
});
});
//获取目标论坛文章
router
.
get
(
'/thread/:tid/get'
,
function
(
req
,
res
,
next
)
{
var
tid
=
req
.
params
.
tid
||
null
;
...
...
app/models/forumGroup.js
View file @
691235a5
...
...
@@ -26,6 +26,11 @@ var ForumGroupSchema = new Schema({
type
:
Number
,
require
:
true
,
default
:
1
},
created
:
{
type
:
Date
,
required
:
true
,
default
:
Date
.
now
}
},
{
...
...
app/models/forumOptions.js
0 → 100644
View file @
691235a5
'use strict'
;
var
mongoose
=
require
(
'mongoose'
),
Schema
=
mongoose
.
Schema
;
//社区配置
var
ForumOptionsSchema
=
new
Schema
({
ent_code
:
{
type
:
Number
,
require
:
true
,
index
:
true
},
key
:
{
type
:
String
,
require
:
true
,
index
:
true
},
value
:
{
type
:
String
,
require
:
true
}
},
{
'collection'
:
'pisns_forum_options'
});
module
.
exports
=
mongoose
.
model
(
'ForumOptions'
,
ForumOptionsSchema
);
\ No newline at end of file
app/models/forumThread.js
View file @
691235a5
...
...
@@ -54,9 +54,7 @@ var ForumThreadSchema = new Schema({
tag
:
{
//话题归属标签
type
:
Array
},
comments
:
{
//评论内容列表
type
:
Array
},
comments
:
[{
type
:
Schema
.
Types
.
ObjectId
,
ref
:
'ForumComment'
}],
//评论内容列表
share
:
{
//自定义分享
type
:
Schema
.
Types
.
ObjectId
,
ref
:
'ForumShare'
...
...
@@ -85,6 +83,11 @@ var ForumThreadSchema = new Schema({
type
:
Number
,
require
:
true
,
default
:
1
},
created
:
{
type
:
Date
,
required
:
true
,
default
:
Date
.
now
}
},
{
...
...
app/service/forumGroupService.js
View file @
691235a5
...
...
@@ -15,6 +15,30 @@ exports.createGroup=function(entity,callback){
});
};
//根据ID更新论坛板块
exports
.
updateGroupById
=
function
(
gid
,
entity
,
callback
){
ForumGroup
.
update
({
_id
:
fid
},
entity
,
null
,
function
(
err
,
result
){
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
};
//根据ID更新论坛组
exports
.
deleteGroupById
=
function
(
gid
,
callback
){
ForumGroup
.
remove
({
_id
:
gid
},
function
(
err
,
result
){
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
};
//根据ID获取论坛组
exports
.
getGroupById
=
function
(
gid
,
callback
){
ForumGroup
.
findById
(
gid
,
function
(
err
,
thread
)
{
...
...
@@ -50,3 +74,41 @@ exports.deleteGroupById=function(gid,callback){
}
});
};
//获取数量
function
countAll
(
ent_code
,
callback
)
{
ForumGroup
.
count
({
ent_code
:
ent_code
},
function
(
err
,
count
)
{
if
(
err
){
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
count
);
}
});
}
//获取全部列表数据
exports
.
getAll
=
function
(
ent_code
,
pageNo
,
pageSize
,
callback
)
{
countAll
(
ent_code
,
function
(
err
,
count
){
if
(
err
){
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
var
skip
=
(
pageNo
-
1
)
*
pageSize
;
var
limit
=
count
-
skip
>
pageSize
?
pageSize
:
(
count
-
skip
);
ForumGroup
.
find
({
ent_code
:
ent_code
},
null
,
{
skip
:
skip
,
limit
:
limit
,
sort
:
'created'
},
function
(
err
,
docs
){
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
var
obj
=
{};
obj
.
total
=
count
;
obj
.
pageNo
=
pageNo
;
obj
.
pageSize
=
pageSize
;
obj
.
items
=
docs
;
callback
(
null
,
obj
);
}
});
}
});
};
app/service/forumInfoService.js
View file @
691235a5
...
...
@@ -53,7 +53,7 @@ exports.deleteInfoById=function(fid,callback){
//获取数量
function
countAll
(
ent_code
,
gid
,
callback
)
{
Forum
RolePermission
.
count
({
ent_code
:
ent_code
,
group
:
gid
},
function
(
err
,
count
)
{
Forum
Info
.
count
({
ent_code
:
ent_code
,
group
:
gid
},
function
(
err
,
count
)
{
if
(
err
){
console
.
error
(
err
);
callback
(
err
,
null
);
...
...
@@ -65,14 +65,14 @@ function countAll(ent_code,gid,callback) {
//获取全部列表数据
exports
.
getAll
=
function
(
ent_code
,
gid
,
pageNo
,
pageSize
,
callback
)
{
countAll
(
ent_code
,
function
(
err
,
count
){
countAll
(
ent_code
,
gid
,
function
(
err
,
count
){
if
(
err
){
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
var
skip
=
(
pageNo
-
1
)
*
pageSize
;
var
limit
=
count
-
skip
>
pageSize
?
pageSize
:
(
count
-
skip
);
Forum
RolePermission
.
find
({
ent_code
:
ent_code
,
group
:
gid
},
null
,
{
skip
:
skip
,
limit
:
limit
},
function
(
err
,
docs
){
Forum
Info
.
find
({
ent_code
:
ent_code
,
group
:
gid
},
null
,
{
skip
:
skip
,
limit
:
limit
},
function
(
err
,
docs
){
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
...
...
app/service/forumOptionsService.js
0 → 100644
View file @
691235a5
'use strict'
;
var
mongoose
=
require
(
'mongoose'
);
var
ForumOptions
=
mongoose
.
model
(
'ForumOptions'
);
var
optionsKey
=
require
(
'../utils/optionsKey'
)
//设置轮播图
exports
.
setShuffling
=
function
(
ent_code
,
value
,
callback
){
ForumOptions
.
find
({
ent_code
:
ent_code
,
key
:
optionsKey
.
shuffling
},
null
,
{},
function
(
err
,
docs
){
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
if
(
err
){
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
if
(
docs
&&
docs
.
length
>
0
){
var
entity
=
docs
[
0
];
ForumOptions
.
update
({
_id
:
entity
.
_id
},
{
value
:
value
},
null
,
function
(
err
,
result
){
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
}
else
{
var
forum
=
new
ForumOptions
({
ent_code
:
ent_code
,
key
:
optionsKey
.
shuffling
,
value
:
value
});
forum
.
save
(
function
(
err
,
forum
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
forum
);
}
});
}
}
}
});
};
//获取轮播图
exports
.
getShuffling
=
function
(
ent_code
,
callback
){
ForumOptions
.
find
({
ent_code
:
ent_code
,
key
:
optionsKey
.
shuffling
},
null
,
{},
function
(
err
,
docs
){
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
if
(
err
){
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
if
(
docs
&&
docs
.
length
>
0
){
callback
(
null
,
docs
[
0
].
value
);
}
else
{
callback
(
null
,
null
);
}
}
}
});
};
app/service/forumThreadService.js
View file @
691235a5
'use strict'
;
var
mongoose
=
require
(
'mongoose'
);
var
ForumThread
=
mongoose
.
model
(
'ForumThread'
);
var
ForumComment
=
mongoose
.
model
(
'ForumComment'
);
var
async
=
require
(
'async'
);
//创建文章
exports
.
createThread
=
function
(
entity
,
callback
){
...
...
@@ -51,9 +53,41 @@ exports.deleteThreadById=function(tid,callback){
});
};
function
populateComment
(
doc
,
callback
){
if
(
doc
&&
doc
.
comments
.
length
>
0
)
{
var
asyncTasks
=
[];
doc
.
comments
.
forEach
(
function
(
comment
){
asyncTasks
.
push
(
function
(
callback
)
{
ForumComment
.
populate
(
comment
,
{
path
:
'from to'
,
select
:
'uid nickName icon'
}
,
function
(
err
,
c
){
if
(
err
)
{
console
.
error
(
err
);
callback
(
null
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
});
});
async
.
parallel
(
asyncTasks
,
function
(
err
,
results
)
{
if
(
err
)
{
console
.
log
(
err
);
callback
(
null
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
}
else
{
callback
(
null
,
null
);
}
}
//获取数量
function
countAll
(
ent_code
,
fid
,
callback
)
{
Forum
RolePermission
.
count
({
ent_code
:
ent_code
,
info
:
fid
},
function
(
err
,
count
)
{
function
countAll
ByFid
(
ent_code
,
fid
,
callback
)
{
Forum
Thread
.
count
({
ent_code
:
ent_code
,
info
:
fid
},
function
(
err
,
count
)
{
if
(
err
){
console
.
error
(
err
);
callback
(
err
,
null
);
...
...
@@ -64,15 +98,15 @@ function countAll(ent_code,fid,callback) {
}
//获取全部列表数据
exports
.
getAll
=
function
(
ent_code
,
fid
,
pageNo
,
pageSize
,
callback
)
{
countAll
(
ent_code
,
function
(
err
,
count
){
exports
.
getAll
ThreadByFid
=
function
(
ent_code
,
fid
,
pageNo
,
pageSize
,
callback
)
{
countAll
ByFid
(
ent_code
,
function
(
err
,
count
){
if
(
err
){
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
var
skip
=
(
pageNo
-
1
)
*
pageSize
;
var
limit
=
count
-
skip
>
pageSize
?
pageSize
:
(
count
-
skip
);
Forum
RolePermission
.
find
({
ent_code
:
ent_code
,
info
:
fid
},
null
,
{
skip
:
skip
,
limit
:
limit
},
function
(
err
,
docs
){
Forum
Thread
.
find
({
ent_code
:
ent_code
,
info
:
fid
},
null
,
{
skip
:
skip
,
limit
:
limit
},
function
(
err
,
docs
){
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
...
...
@@ -88,3 +122,72 @@ exports.getAll= function(ent_code,fid,pageNo,pageSize,callback) {
}
});
};
//获取数量
function
countAll
(
ent_code
,
callback
)
{
ForumThread
.
count
({
ent_code
:
ent_code
},
function
(
err
,
count
)
{
if
(
err
){
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
count
);
}
});
}
//获取全部列表数据
exports
.
getAllThread
=
function
(
ent_code
,
pageNo
,
pageSize
,
callback
)
{
countAll
(
ent_code
,
function
(
err
,
count
){
if
(
err
){
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
var
skip
=
(
pageNo
-
1
)
*
pageSize
;
var
limit
=
count
-
skip
>
pageSize
?
pageSize
:
(
count
-
skip
);
ForumThread
.
find
({
ent_code
:
ent_code
}).
populate
(
'from'
).
populate
({
path
:
'comments'
,
options
:{
limit
:
5
},
select
:
'from to created content'
}).
limit
(
limit
).
skip
(
skip
).
exec
(
function
(
err
,
docs
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
var
obj
=
{};
obj
.
total
=
count
;
obj
.
pageNo
=
pageNo
;
obj
.
pageSize
=
pageSize
;
obj
.
items
=
docs
;
if
(
docs
&&
docs
.
length
>
0
)
{
var
asyncTasks
=
[];
docs
.
forEach
(
function
(
doc
){
asyncTasks
.
push
(
function
(
callback
)
{
populateComment
(
doc
,
callback
);
});
});
async
.
parallel
(
asyncTasks
,
function
(
err
,
results
)
{
if
(
err
)
{
console
.
log
(
err
);
callback
(
null
,
null
);
}
else
{
callback
(
null
,
obj
);
}
});
}
}
});
// ForumThread.find({ent_code:ent_code}, null, {skip: skip,limit:limit},function(err,docs){
// if (err) {
// console.error(err);
// callback(err,null);
// } else {
// var obj={};
// obj.total=count;
// obj.pageNo=pageNo;
// obj.pageSize=pageSize;
// obj.items=docs;
// callback(null,obj);
// }
// });
}
});
};
app/utils/optionsKey.js
0 → 100644
View file @
691235a5
'use strict'
;
module
.
exports
=
{
shuffling
:
{
key
:
'_forum_index_head_carousel'
,
desc
:
'轮播图设置'
}
};
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment