Commit 0ed28b1f authored by 刘文胜's avatar 刘文胜

Merge branch 'development' of git.wxpai.cn:scrmgroup/pisns-forum-api into development

parents 3d210033 235aa871
...@@ -7,6 +7,7 @@ var express = require('express'), ...@@ -7,6 +7,7 @@ var express = require('express'),
var mongoose = require('mongoose'); var mongoose = require('mongoose');
var forumUserService=require('../../service/forumUserService'); var forumUserService=require('../../service/forumUserService');
var forumThreadService=require('../../service/forumThreadService'); var forumThreadService=require('../../service/forumThreadService');
var httpService=require('../../service/httpService');
var async=require('async'); var async=require('async');
...@@ -51,4 +52,12 @@ router.post('/user/identifyUser',function(req,res,next){ ...@@ -51,4 +52,12 @@ router.post('/user/identifyUser',function(req,res,next){
}else{ }else{
res.json('success'); res.json('success');
} }
});
//微信分享带来用户
router.get('/user/from/share', function(req, res, next) {
var mid = req.query.mid,
action = req.query.action,
ent_code = req.query.ent_code;
httpService.sendRequest(ent_code,mid,action);
res.status(200).end();
}); });
\ No newline at end of file
...@@ -29,10 +29,9 @@ router.post('/thread/create', function(req, res, next) { ...@@ -29,10 +29,9 @@ router.post('/thread/create', function(req, res, next) {
var rs = {}; var rs = {};
req.body.ent_code=req.session.user.ent_code; req.body.ent_code=req.session.user.ent_code;
var uid=req.session.user.id; var uid=req.session.user.id;
// var uid='12345'; // var uid='12345';
async.waterfall([ async.waterfall([
function(callback){ function(callback){
forumUserService.getUserByUid(uid,callback); forumUserService.getUserByUid(uid,callback);
...@@ -121,6 +120,7 @@ router.get('/thread/:tid/get', function(req, res, next) { ...@@ -121,6 +120,7 @@ router.get('/thread/:tid/get', function(req, res, next) {
//更新文章状态、如:屏蔽 //更新文章状态、如:屏蔽
router.post('/thread/:tid/update', function(req, res, next) { router.post('/thread/:tid/update', function(req, res, next) {
var tid=req.params.tid; var tid=req.params.tid;
req.body.ent_code=req.session.user.ent_code;
if(tid){ if(tid){
forumThreadService.updateThreadById(tid,req.body,function(err,thread){ forumThreadService.updateThreadById(tid,req.body,function(err,thread){
if(err){ if(err){
......
This diff is collapsed.
...@@ -9,14 +9,16 @@ var forumThreadService = require('../../service/forumThreadService'); ...@@ -9,14 +9,16 @@ var forumThreadService = require('../../service/forumThreadService');
var forumShareConfigService = require('../../service/forumShareConfigService'); var forumShareConfigService = require('../../service/forumShareConfigService');
var forumShareService = require('../../service/forumShareService'); var forumShareService = require('../../service/forumShareService');
var config = require('../../../config/config'); var config = require('../../../config/config');
var httpService=require('../../service/httpService');
var then = require('thenjs'); var then = require('thenjs');
//var forumInfoService = require('../../service/forumInfoService'); var forumInfoService = require('../../service/forumInfoService');
module.exports = function(app) { module.exports = function(app) {
app.use('/v1/forum', router); app.use('/v1/forum', router);
}; };
function getWX(res, title, desc, link, imgUrl, mid) {
function write(res, title, desc, link, imgUrl, mid, ent_code) {
link = config.service + link + "&mid=" + mid; link = config.service + link + "&mid=" + mid;
res.writeHead(200, { res.writeHead(200, {
'Content-Type': 'text/javascript', 'Content-Type': 'text/javascript',
...@@ -31,7 +33,11 @@ function getWX(res, title, desc, link, imgUrl, mid) { ...@@ -31,7 +33,11 @@ function getWX(res, title, desc, link, imgUrl, mid) {
// imgUrl = 'http://dev.fs.wxpai.cn/upload/100001_2015410_1428671539587_40.jpg', // imgUrl = 'http://dev.fs.wxpai.cn/upload/100001_2015410_1428671539587_40.jpg',
// desc = '测试描述'; // desc = '测试描述';
// var string = ''; // var string = '';
var string = 'wx.onMenuShareTimeline({' + '\"title\": \"' + title + '\",' + '\"link\":\"' + link + '\",' + '\"imgUrl\": \"' + imgUrl + '\", ' + 'success: function(){},' + 'cancel: function () {}' + ' });' + ' wx.onMenuShareAppMessage({' + '\"title\": \"' + title + '\", ' + '\"desc\": \"' + desc + '\", ' + '\"link\":\"' + link + '\", ' + '\"imgUrl\": \"' + imgUrl + '\", ' + '\"type\":\'\' ,' + '\"dataUrl\": \'\', ' + 'success: function(){},' + 'cancel: function () { ' + '}' + ' });' var success = '$.ajax({'+
'type:\'GET\','+
'url: \'/v1/forum/'+ent_code+'/timeline\''+
'});';
var string = 'wx.onMenuShareTimeline({' + '\"title\": \"' + title + '\",' + '\"link\":\"' + link + '\",' + '\"imgUrl\": \"' + imgUrl + '\", ' + 'success: function(){'+success+'},' + 'cancel: function () {}' + ' });' + ' wx.onMenuShareAppMessage({' + '\"title\": \"' + title + '\", ' + '\"desc\": \"' + desc + '\", ' + '\"link\":\"' + link + '\", ' + '\"imgUrl\": \"' + imgUrl + '\", ' + '\"type\":\'\' ,' + '\"dataUrl\": \'\', ' + 'success: function(){},' + 'cancel: function () { ' + '}' + ' });'
res.write('wx.ready(function(){' + string + '});'); res.write('wx.ready(function(){' + string + '});');
res.write('wx.error(function(res){console.log(res);});'); res.write('wx.error(function(res){console.log(res);});');
...@@ -39,6 +45,36 @@ function getWX(res, title, desc, link, imgUrl, mid) { ...@@ -39,6 +45,36 @@ function getWX(res, title, desc, link, imgUrl, mid) {
res.end(); res.end();
} }
function getWX(res, title, desc, link, imgUrl, mid,ent_code, id,type,forumThread) {
//['{板块名称}','{文章标题}','{话题名称}','{照片墙标题}'];
//share_type:是否使用默认设置:1使用默认分享设置 2.使用自己的分享设置
link = config.service + link + "&mid=" + mid;
if (type==="Info") {
forumInfoService.getInfoById(id, function(err, forumInfo) {
if (err || forumInfo < 1) {
console.error("板块不存在或者发生未知错误");
res.json({
message: '板块不存在或者发生未知错误',
result: false,
code: '10002',
error:err
});
}else{
title = title.replace(/{板块名称}/g, forumInfo.name);
desc = desc.replace(/{板块名称}/g, forumInfo.name);
write(res, title, desc, link, imgUrl, mid,ent_code);
}
});
} else if(type === "Thread"){
title = title.replace(/{文章标题}|{话题名称}|{照片墙标题}/g, forumThread.title);
desc = desc.replace(/{文章标题}|{话题名称}|{照片墙标题}/g, forumThread.title);
write(res, title, desc, link, imgUrl, mid,ent_code);
}
}
//微信分享接口 //微信分享接口
router.get('/:ent_code/share.js', function(req, res, next) { router.get('/:ent_code/share.js', function(req, res, next) {
var rs = {}; var rs = {};
...@@ -53,9 +89,11 @@ router.get('/:ent_code/share.js', function(req, res, next) { ...@@ -53,9 +89,11 @@ router.get('/:ent_code/share.js', function(req, res, next) {
if (type) { if (type) {
//板块微信接口 //板块微信接口
if (type === 'Info') { if (type === 'Info') {
then(function(cont) { then(function(cont) {
forumShareConfigService.getByKey(ent_code, 'share', function(err, result) { forumShareConfigService.getByKey(ent_code, 'share', function(err, result) {
console.log(err);
var title = '', var title = '',
desc = '', desc = '',
imgUrl = ''; imgUrl = '';
...@@ -73,7 +111,9 @@ router.get('/:ent_code/share.js', function(req, res, next) { ...@@ -73,7 +111,9 @@ router.get('/:ent_code/share.js', function(req, res, next) {
} else { } else {
link = link + 'index'; link = link + 'index';
} }
getWX(res, title, desc, link, imgUrl, mid);
getWX(res, title, desc, link, imgUrl, mid,ent_code, id,type,null);
} else { } else {
cont(err); cont(err);
} }
...@@ -105,7 +145,7 @@ router.get('/:ent_code/share.js', function(req, res, next) { ...@@ -105,7 +145,7 @@ router.get('/:ent_code/share.js', function(req, res, next) {
}).then(function(cont, result) { }).then(function(cont, result) {
//如果没有share值则用默认值 //如果没有share值则用默认值
if (!result.share) { if (!result.share||result.share_type==1) {
forumShareConfigService.getByKey(ent_code, 'share', function(err, sc) { forumShareConfigService.getByKey(ent_code, 'share', function(err, sc) {
var title = '', var title = '',
...@@ -130,9 +170,9 @@ router.get('/:ent_code/share.js', function(req, res, next) { ...@@ -130,9 +170,9 @@ router.get('/:ent_code/share.js', function(req, res, next) {
for (var i = 0; i < sc.length; i++) { for (var i = 0; i < sc.length; i++) {
if (result.type === 1 || (result.type === 2 && result.level === 2)) { if (result.type === 1 || (result.type === 2 && result.level === 2)) {
if (sc[i].type === 'article') { if (sc[i].type === 'article') {
title = sc[i].title; title = sc[i].title;
desc = sc[i].desc; desc = sc[i].desc;
imgUrl = sc[i].imgUrl; imgUrl = sc[i].imgUrl;
...@@ -147,7 +187,7 @@ router.get('/:ent_code/share.js', function(req, res, next) { ...@@ -147,7 +187,7 @@ router.get('/:ent_code/share.js', function(req, res, next) {
} }
} else if (result.type === 3) { } else if (result.type === 3) {
if (sc[i].type === 'photo') { if (sc[i].type === 'photo') {
title = sc[i].title; title = sc[i].title;
desc = sc[i].desc; desc = sc[i].desc;
...@@ -158,8 +198,9 @@ router.get('/:ent_code/share.js', function(req, res, next) { ...@@ -158,8 +198,9 @@ router.get('/:ent_code/share.js', function(req, res, next) {
} }
getWX(res, title, desc, link, imgUrl, mid); getWX(res, title, desc, link, imgUrl, mid,ent_code,result._id,type,result);
} else { } else {
cont(err); cont(err);
} }
...@@ -181,7 +222,8 @@ router.get('/:ent_code/share.js', function(req, res, next) { ...@@ -181,7 +222,8 @@ router.get('/:ent_code/share.js', function(req, res, next) {
//key = 'photo'; //key = 'photo';
} }
getWX(res, forumShare.title, forumShare.description, link, forumShare.icon, mid); getWX(res, forumShare.title, forumShare.description, link, forumShare.icon, mid,ent_code,result._id,type,result);
}); });
} }
}).fail(function(cont, err) { }).fail(function(cont, err) {
...@@ -199,3 +241,13 @@ router.get('/:ent_code/share.js', function(req, res, next) { ...@@ -199,3 +241,13 @@ router.get('/:ent_code/share.js', function(req, res, next) {
}); });
} }
}); });
//微信分享接口
router.get('/:ent_code/timeline', function(req, res, next) {
var mid = req.session.openUser.mid,
action = 'share_timeline',
ent_code = req.session.user.ent_code;
httpService.sendRequest(ent_code,mid,action);
res.status(200).end();
});
'use strict';
var express = require('express'),
router = express.Router(),
returnCode = require('../../utils/returnCode'),
_ = require('lodash');
var mongoose = require('mongoose');
//var forumThreadService = require('../../service/forumThreadService');
var forumShareConfigService = require('../../service/forumShareConfigService');
//var forumShareService = require('../../service/forumShareService');
//var config = require('../../../config/config');
var then = require('thenjs');
module.exports = function(app) {
app.use('/v1/forum', router);
};
//type:类型(板块,照片墙等); key:类型里面的标题(title,desc等);value:值
function getForumConfig(key, value, ent_code) {
var forumConfig = {};
forumConfig.meta_key = key;
forumConfig.meta_value = value;
forumConfig.ent_code = ent_code;
return forumConfig;
}
//批量创建默认分享设置
router.post('/forumConfig/put', function(req, res, next) {
var model = req.body;
var ent_code = req.session.user.ent_code;
model.ent_code = ent_code;
if (model.ent_code) {
forumShareConfigService.create(model, function(err, result) {
if (err) {
console.error(err);
res.json(returnCode.BUSY);
} else {
res.json(_.assign(result, returnCode.SUCCESS));
}
});
} else {
res.json(returnCode.BUSY);
}
});
//初始化默认分享数据
router.get('/forumConfig/getConfig', function(req, res, next) {
var ent_code = req.session.user.ent_code;
forumShareConfigService.getByKey(ent_code, req.query.meta_key, function(err, result) {
if (err) {
console.error(err);
res.json(returnCode.BUSY);
} else {
res.json({message:'success',data:result});
}
});
});
This diff is collapsed.
'use strict';
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
//话题广场,板块
var ForumPVLogSchema = new Schema({
ent_code: {
type: Number,
require: true,
index: true
},
user: { //访问者
type: String,
require: true,
index: true,
ref: 'ForumUser'
},
mid: { //会员ID
type: Number,
require: true,
index: true
},
open_id: { //微信公众号唯一识别
type: String,
require: true,
index: true
},
info: { //板块ID
type: String,
index: true,
ref: 'ForumInfo'
},
thread: { //话题、文章、照片墙的ID
type: String,
index: true,
ref: 'forumThread'
},
type: { //页面:1.主页 2.板块 3.文章
type: Number,
index: true,
require: true
},
thread_type: { //文章类型:1.普通文章 2.话题 3.照片墙 4.子文章
type: Number,
index: true
},
p_thread: { //父文章ID
type: Number,
index: true
},
source: { //分享者
type: String
},
ip: { //IP地址
type: String
},
userAgent: {
type: String
},
created: {
type: Date,
required: true,
default: Date.now
}
}, {
'collection': 'pisns_forum_pv_log'
});
module.exports = mongoose.model('ForumPVLog', ForumPVLogSchema);
...@@ -70,6 +70,11 @@ var ForumThreadSchema = new Schema({ ...@@ -70,6 +70,11 @@ var ForumThreadSchema = new Schema({
type: Schema.Types.ObjectId, type: Schema.Types.ObjectId,
ref: 'ForumShare' ref: 'ForumShare'
}, },
share_type:{//是否使用默认设置:1使用默认分享设置 2.使用自己的分享设置
type:Number,
require:true,
default:1
},
pv_count: { //话题的访问量 pv_count: { //话题的访问量
type: Number, type: Number,
require: true, require: true,
......
'use strict';
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
//话题广场,板块
var ForumUVLogSchema = new Schema({
ent_code: {
type: Number,
require: true,
index: true
},
user: { //访问者
type: String,
require: true,
index: true,
ref: 'ForumUser'
},
mid: { //会员ID
type: Number,
require: true,
index: true
},
open_id: { //微信公众号唯一识别
type: String,
require: true,
index: true
},
info: { //板块ID
type: String,
index: true,
ref: 'ForumInfo'
},
thread: { //话题、文章、照片墙的ID
type: String,
index: true,
ref: 'forumThread'
},
type: { //页面:1.主页 2.板块 3.文章
type: Number,
index: true,
require: true
},
thread_type: { //文章类型:1.话题 2.文章 3.照片墙 4.子文章
type: Number,
index: true
},
p_thread: { //父文章ID
type: Number,
index: true
},
source: { //分享者
type: String
},
ip: { //IP地址
type: String
},
userAgent: {
type: String
},
created: {
type: Date,
required: true,
default: Date.now
}
}, {
'collection': 'pisns_forum_uv_log'
});
module.exports = mongoose.model('ForumUVLog', ForumUVLogSchema);
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
var mongoose = require('mongoose'); var mongoose = require('mongoose');
var ForumThread = mongoose.model('ForumThread'); var ForumThread = mongoose.model('ForumThread');
var ForumComment = mongoose.model('ForumComment'); var ForumComment = mongoose.model('ForumComment');
var ForumShare = mongoose.model('ForumShare');
var forumCommentService = require('./forumCommentService'); var forumCommentService = require('./forumCommentService');
...@@ -9,15 +10,39 @@ var async = require('async'); ...@@ -9,15 +10,39 @@ var async = require('async');
//创建文章 //创建文章
exports.createThread = function(entity, callback) { exports.createThread = function(entity, callback) {
var forum = new ForumThread(entity); if (!entity.share) {
forum.save(function(err, forum) { var forum = new ForumThread(entity);
if (err) {
console.error(err); forum.save(function(err, forum) {
callback(err, null); if (err) {
} else { console.error(err);
callback(null, forum); callback(err, null);
} } else {
}); callback(null, forum);
}
});
} else {
var forumShare = new ForumShare(entity.share);
forumShare.ent_code = entity.ent_code;
forumShare.save(function(err, forumShare) {
if (err) {
console.error(err);
callback(err, null);
} else {
entity.share = forumShare._id;
var forum = new ForumThread(entity);
forum.save(function(err, forum) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, forum);
}
});
}
});
}
}; };
//根据ID获取文章记录,不查评论,子话题 //根据ID获取文章记录,不查评论,子话题
...@@ -41,7 +66,7 @@ exports.getThreadById = function(tid, callback) { ...@@ -41,7 +66,7 @@ exports.getThreadById = function(tid, callback) {
var conditions = { var conditions = {
_id: tid _id: tid
}; };
ForumThread.find(conditions).populate('from').populate('info').exec(function(err, docs) { ForumThread.find(conditions).populate('from').populate('info').populate('share').exec(function(err, docs) {
if (err) { if (err) {
console.error(err); console.error(err);
callback(err, null); callback(err, null);
...@@ -61,7 +86,7 @@ exports.getThreadById = function(tid, callback) { ...@@ -61,7 +86,7 @@ exports.getThreadById = function(tid, callback) {
thread: tid, thread: tid,
level: '1' level: '1'
}; };
//获取最新10条评论 //获取最新10条评论
forumCommentService.getAllComment(conditions, 1, 10, function(err, results) { forumCommentService.getAllComment(conditions, 1, 10, function(err, results) {
if (err) { if (err) {
console.log(err); console.log(err);
...@@ -165,16 +190,64 @@ exports.getThreadById = function(tid, callback) { ...@@ -165,16 +190,64 @@ exports.getThreadById = function(tid, callback) {
//根据ID更新文章 //根据ID更新文章
exports.updateThreadById = function(tid, entity, callback) { exports.updateThreadById = function(tid, entity, callback) {
ForumThread.update({ var shareEntity = entity.share;
_id: tid entity.share = entity.share._id;
}, entity, null, function(err, result) { if (entity.share) {
if (err) { ForumThread.update({
console.error(err); _id: tid
callback(err, null); }, entity, null, function(err, result) {
if (err) {
console.error(err);
callback(err, null);
} else {
ForumShare.update({
_id: shareEntity._id
}, shareEntity, null, function(err, result) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, null);
}
});
}
});
} else {
if (shareEntity.title || shareEntity.description || shareEntity.icon) {
shareEntity.ent_code = entity.ent_code;
var forumShare = new ForumShare(shareEntity);
forumShare.save(function(err, forumShare) {
entity.share = forumShare._id;
ForumThread.update({
_id: tid
}, entity, null, function(err, result) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, null);
}
});
});
} else { } else {
callback(null, null); delete entity.share;
ForumThread.update({
_id: tid
}, entity, null, function(err, result) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, null);
}
});
} }
}); }
}; };
//根据ID更新文章 //根据ID更新文章
...@@ -402,17 +475,17 @@ exports.getAllThreadByFid = function(conditions, pageNo, pageSize, sort, callbac ...@@ -402,17 +475,17 @@ exports.getAllThreadByFid = function(conditions, pageNo, pageSize, sort, callbac
//根据板块ID更新板块下的top为0,并把当前文章的top设为1(置顶) //根据板块ID更新板块下的top为0,并把当前文章的top设为1(置顶)
exports.updateTopByThreadId = function(infoId, threadId, callback) { exports.updateTopByThreadId = function(infoId, threadId, callback) {
// ForumThread.update({info:infoId}, {top:0},{multi:true}, function(err, doc) { // ForumThread.update({info:infoId}, {top:0},{multi:true}, function(err, doc) {
// if(err){ // if(err){
// callback(err,null); // callback(err,null);
// }else{ // }else{
// ForumThread.findOneAndUpdate({_id:threadId}, {top:1}, function(err, doc) { // ForumThread.findOneAndUpdate({_id:threadId}, {top:1}, function(err, doc) {
// if(err){ // if(err){
// callback(err,null); // callback(err,null);
// }else{ // }else{
// callback(null,null); // callback(null,null);
// } // }
// }); // });
// } // }
// }); // });
ForumThread.findOneAndUpdate({ ForumThread.findOneAndUpdate({
_id: threadId _id: threadId
......
...@@ -2,10 +2,97 @@ ...@@ -2,10 +2,97 @@
// var request=require('request'); // var request=require('request');
// var REMOTE_URL='http://127.0.0.1:3011/admin/forum/http/receive'; // var REMOTE_URL='http://127.0.0.1:3011/admin/forum/http/receive';
var ACTION_KEY = {
'post': 'FORUM_THREAD_POST',
'share': 'FORUM_THREAD_SHARE',
'share_timeline': 'FORUM_THREAD_SHARE_TIMELINE',
'comment': 'FORUM_THREAD_COMMENT',
'thread_praise': 'FORUM_THREAD_PRAISE',
'comment_praise': 'FORUM_COMMENT_PRAISE',
'reply': 'FORUM_COMMENT_REPLY',
'user_from_share': 'FORUM_USER_FROM_SHARE'
};
var mongoose = require('mongoose'),
moment = require('moment'),
then = require('thenjs');
exports.sendRequest=function(ent_code,uid,tid,action){ var ForumPVLog = mongoose.model('ForumPVLog');
// var url=REMOTE_URL+'?ent_code='+ent_code+'&uid='+uid+'&tid='+tid+'&action='+action; var ForumUVLog = mongoose.model('ForumUVLog');
// request.get({url:url}, function (e, r, body) { exports.sendRequest = function(ent_code, mid, action, messageid, integral, exp) {
var obj = {
// }); tag: 'member',
}; key: 'forum',
\ No newline at end of file action: ACTION_KEY[action],
mid: mid,
entcode: ent_code,
messageid: messageid || '',
integral: integral || 0,
exp: exp || 0
};
redis.lpush('adapter-redis-to-ons', JSON.stringify(obj), function(err, reply) {
if (err) {
console.error(err);
}
});
};
var getClientIP = function(req) {
var ipAddress;
var headers = req.headers;
var forwardedIpsStr = headers['x-real-ip'] || headers['x-forwarded-for'];
if (forwardedIpsStr) {
ipAddress = forwardedIpsStr;
} else {
ipAddress = null;
}
if (!ipAddress) {
ipAddress = req.connection.remoteAddress;
}
return ipAddress;
};
exports.createLog = function(req,info,type,thread_type,thread,p_thread) {
var logObj = {
ent_code: req.session.user.ent_code,
mid: req.session.openUser.mid,
open_id: req.session.mobileForumUser.openId,
user: req.session.mobileForumUser.userId,
info: info,
type: type,
thread_type:thread_type,
thread:thread,
p_thread:p_thread,
ip: getClientIP(req),
userAgent: req.headers['user-agent']
};
if (logObj) {
then(function(cont){
var pv_model = new ForumPVLog(logObj);
pv_model.save(cont);
}).then(function(cont){
var q = {
created:{$gte:moment(new Date()).format('YYYY-MM-DD')},
mid:logObj.mid,
openId:logObj.openId,
user:logObj.user,
info:logObj.info
};
if(logObj.thread){
q.thread = logObj.thread;
q.thread_type = logObj.thread_type;
}
ForumUVLog.findOne(q,function(err,doc){
cont(err,doc?false:true);
})
}).then(function(cont,isLog){
if(isLog){
var uv_model = new ForumUVLog(logObj);
uv_model.save();
}
}).fail(function(cont,err){
console.error(err);
});
} else {
console.error('没有日志信息');
}
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment