mirror of https://github.com/qwqdanchun/ant.git
339 lines
13 KiB
JavaScript
339 lines
13 KiB
JavaScript
module.exports = function(app, db, fc) {
|
|
var mdb = require('./modules/mdb')(db),
|
|
udb = db.get('user'),
|
|
mailer = require('../../modules/mail');
|
|
//@ 当前插件路径
|
|
var path = '/addons/ant.soldier/';
|
|
require('./modules/libs')(app, mdb, fc, path, __dirname);
|
|
//@ 个人仓库列表
|
|
app.route(path + 'depot/data')
|
|
.get(function(req, res) {
|
|
fc.islogin(req, res,
|
|
function(user) {
|
|
mdb.find({
|
|
user: user._id
|
|
}).sort({
|
|
ctime: -1
|
|
}).exec(function(err, ret) {
|
|
res.send(ret);
|
|
})
|
|
})
|
|
})
|
|
//@ 添加
|
|
app.route(path + 'depot/add')
|
|
.post(function(req, res) {
|
|
fc.islogin(req, res, function(user) {
|
|
var cms = (fc.safeStr(req.body.cms) || 'other'),
|
|
env = fc.toStr(req.body.env ? req.body.env.text : 'none'),
|
|
desc = fc.toStr(req.body.desc),
|
|
name = fc.toStr(req.body.name);
|
|
mdb.findOne({
|
|
cms: cms
|
|
})
|
|
.sort({
|
|
aid: -1
|
|
})
|
|
.exec(function(err, ret) {
|
|
var aid = ret ? ret.aid + 1 : 1;
|
|
// var aid = err ? 0 : (ret ? (ret.aid || 0) : 0);
|
|
// aid ++;
|
|
new mdb({
|
|
user: user._id,
|
|
// buys: 0,
|
|
aid: aid,
|
|
env: env,
|
|
cms: cms,
|
|
name: name,
|
|
desc: desc,
|
|
code: {
|
|
client: '',
|
|
server: ''
|
|
},
|
|
coin: 0,
|
|
ctime: new Date(),
|
|
utime: new Date(),
|
|
style: {
|
|
color: '',
|
|
bgcolor: ''
|
|
},
|
|
sell: false,
|
|
verify: false,
|
|
members: []
|
|
}).save(function(err1, ret1) {
|
|
res.json({
|
|
ret: ret1,
|
|
err: err1
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|
|
//@ 删除
|
|
app.route(path + 'depot/del')
|
|
.post(function(req, res) {
|
|
fc.islogin(req, res, function(user) {
|
|
mdb.remove({
|
|
_id: {
|
|
$in: fc.toArr(req.body.ids)
|
|
},
|
|
user: user._id
|
|
}, function(err, ret) {
|
|
res.json({
|
|
err: err,
|
|
ret: ret
|
|
})
|
|
})
|
|
})
|
|
})
|
|
//@ 保存代码
|
|
app.route(path + 'depot/saveCode')
|
|
.post(function(req, res) {
|
|
fc.islogin(req, res, function(user) {
|
|
mdb.update({
|
|
_id: fc.toStr(req.body.id),
|
|
user: user._id
|
|
}, {$set: {
|
|
code: {
|
|
client: fc.toStr(req.body.client),
|
|
server: fc.toStr(req.body.server)
|
|
},
|
|
verify: false,
|
|
utime: new Date()
|
|
}}, function(err) {
|
|
res.send(err)
|
|
})
|
|
})
|
|
})
|
|
//@ 保存编辑设置
|
|
app.route(path + 'depot/save')
|
|
.post(function(req, res) {
|
|
fc.islogin(req, res, function(user) {
|
|
var id = fc.toStr(req.body.id),
|
|
cms = (fc.safeStr(req.body.cms) || 'other'),
|
|
env = fc.toStr(req.body.env ? req.body.env.text : 'none'),
|
|
desc = fc.toStr(req.body.desc),
|
|
name = fc.toStr(req.body.name);
|
|
mdb.findOne({
|
|
_id: id,
|
|
user: user._id
|
|
}, function(err, ret) {
|
|
if (ret) {
|
|
mdb.findOne({
|
|
cms: cms
|
|
})
|
|
.sort({
|
|
aid: -1
|
|
})
|
|
.exec(function(err1, ret1) {
|
|
var aid = (ret.cms === cms) ? ret.aid : (ret1 ? ret1.aid + 1 : 1);
|
|
mdb.update({
|
|
_id: id,
|
|
user: user._id
|
|
}, {$set: {
|
|
aid: aid,
|
|
cms: cms,
|
|
env: env,
|
|
desc: desc,
|
|
name: name,
|
|
utime: new Date(),
|
|
verify: false
|
|
}}, function(err2, ret2) {
|
|
if (ret2) {
|
|
mdb.findOne({
|
|
_id: id,
|
|
user: user._id
|
|
}, function(err3, ret3) {
|
|
res.json({
|
|
ret: ret3,
|
|
err: err3
|
|
})
|
|
})
|
|
}else{
|
|
res.json({
|
|
ret: ret2,
|
|
err: err2
|
|
})
|
|
}
|
|
})
|
|
})
|
|
}else{
|
|
res.json({
|
|
ret: false,
|
|
err: '兵蚁不存在'
|
|
})
|
|
}
|
|
})
|
|
})
|
|
})
|
|
//@ 出售
|
|
app.route(path + 'depot/sell')
|
|
.post(function(req, res) {
|
|
fc.islogin(req, res, function(user) {
|
|
mdb.update({
|
|
_id: fc.toStr(req.body.id),
|
|
user: user._id
|
|
}, {$set: {
|
|
coin: parseInt(req.body.coin) || 0,
|
|
verify: false,
|
|
// verify: true,
|
|
sell: true
|
|
}}, function(err, ret) {
|
|
res.json({
|
|
err: err,
|
|
ret: ret
|
|
})
|
|
})
|
|
})
|
|
})
|
|
//@ 取消出售
|
|
app.route(path + 'depot/cancelsell')
|
|
.post(function(req, res) {
|
|
fc.islogin(req, res, function(user) {
|
|
mdb.update({
|
|
_id: fc.toStr(req.body.id),
|
|
user: user._id
|
|
}, {$set: {
|
|
sell: false,
|
|
verify: false
|
|
}}, function(err, ret) {
|
|
res.json({
|
|
err: err,
|
|
ret: ret
|
|
})
|
|
})
|
|
})
|
|
})
|
|
//
|
|
//@ 市场数据
|
|
//
|
|
app.route(path + 'market/data')
|
|
.get(function(req, res) {
|
|
fc.islogin(req, res, function(user) {
|
|
mdb.find({
|
|
sell: true,
|
|
verify: true
|
|
})
|
|
.sort({
|
|
ctime: -1
|
|
})
|
|
.populate('user', 'nickname')
|
|
.exec(function(err, ret) {
|
|
var data = [];
|
|
ret.forEach(function(i) {
|
|
i.code = '// I\'M ANT!';
|
|
data.push(i);
|
|
})
|
|
res.send(data || []);
|
|
})
|
|
})
|
|
})
|
|
//@ 购买兵蚁
|
|
app.route(path + 'market/buy')
|
|
.post(function(req, res) {
|
|
fc.islogin(req, res, function(user) {
|
|
var _id = fc.toStr(req.body.id);
|
|
var buy = function(obj) {
|
|
mdb.findOne({
|
|
cms: obj.cms
|
|
})
|
|
.sort({
|
|
aid: -1
|
|
})
|
|
.exec(function(err, ret) {
|
|
var aid = ret ? ret.aid + 1 : 1;
|
|
new mdb({
|
|
user: user._id,
|
|
// buys: 0,
|
|
aid: aid,
|
|
env: obj.env,
|
|
cms: obj.cms,
|
|
name: obj.name,
|
|
desc: obj.desc,
|
|
code: obj.code,
|
|
coin: 0,
|
|
ctime: new Date(),
|
|
utime: new Date(),
|
|
style: {
|
|
color: '',
|
|
bgcolor: ''
|
|
},
|
|
sell: false,
|
|
verify: false,
|
|
members: []
|
|
}).save(function(err1, ret1) {
|
|
//- 添加购买记录
|
|
mdb.update({
|
|
_id: _id
|
|
}, {$addToSet: {
|
|
members: user._id
|
|
}}, function(){
|
|
return res.json({
|
|
ret: ret1,
|
|
err: err1
|
|
})
|
|
})
|
|
})
|
|
})
|
|
}
|
|
//= 获取插件数据
|
|
mdb.findOne({
|
|
_id: _id,
|
|
sell: true,
|
|
verify: true
|
|
}).populate('user', 'email nickname coin').exec(function(err, ret) {
|
|
if (!ret) {
|
|
return res.json({
|
|
err: '兵蚁不存在!',
|
|
ret: false
|
|
});
|
|
};
|
|
//= 判断是否是当前用户
|
|
if (String(ret.user) === user._id) {
|
|
return buy(ret);
|
|
};
|
|
//= 判断用户是否已经购买过
|
|
if (ret.members && ret.members.indexOf(user._id) !== -1) {
|
|
return buy(ret);
|
|
};
|
|
//= 判断用户金币是否足够购买
|
|
udb.findOne({
|
|
_id: user._id
|
|
}, function(err4, ret4) {
|
|
if (ret4.coin < ret.coin) {
|
|
return res.json({
|
|
ret: false,
|
|
err: '用户余额不足!'
|
|
})
|
|
}else{
|
|
udb.update({
|
|
_id: user._id
|
|
}, {$inc: {
|
|
coin: (ret.coin * -1)
|
|
}}, function(err2, ret2) {
|
|
buy(ret);
|
|
// 作者加钱
|
|
udb.update({
|
|
_id: ret.user._id
|
|
}, {$inc: {
|
|
coin: ret.coin
|
|
}}, function(err3, ret3) {
|
|
if (ret.coin <= 0) {
|
|
return false;
|
|
}
|
|
// 通知作者
|
|
mailer.send({
|
|
to: ret.user.email,
|
|
subject: 'ANT - 兵蚁出售收入',
|
|
html: 'Hi, ' + ret.user.nickname + '<br>' +
|
|
'很高兴地通知您,' + user.nickname + ' 购买了您出售的兵蚁 【<span style="color:#09F">' + ret.name + '</span>】<br>' +
|
|
'您为此赚取了 ' + ret.coin + ' 个蚁币!<br>' +
|
|
'您当前帐号余额: ' + (ret.user.coin + ret.coin) + ' 蚁币'
|
|
});
|
|
})
|
|
})
|
|
}
|
|
})
|
|
})
|
|
})
|
|
})
|
|
} |