From 5335b092a3d6e12d1eb5818ea37aa1699ad861bc Mon Sep 17 00:00:00 2001 From: yulixing Date: Wed, 28 Aug 2019 16:30:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=A2=E5=8D=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 + src/controllers/games/gift.js | 20 -------- src/controllers/games/index.js | 2 + src/controllers/games/order.js | 92 ++++++++++++++++++++++++++++++++++ src/models/paydb/OrderInfo.js | 79 +++++++++++++++++++++++++++++ 5 files changed, 175 insertions(+), 20 deletions(-) create mode 100644 src/controllers/games/order.js create mode 100644 src/models/paydb/OrderInfo.js diff --git a/package.json b/package.json index aec4445..8594550 100644 --- a/package.json +++ b/package.json @@ -45,11 +45,13 @@ "mongoose": "^5.5.7", "morgan": "^1.9.1", "multer": "^1.4.1", + "mysql2": "^1.6.5", "node-schedule": "^1.3.2", "nodemon": "^1.19.0", "pow-mongodb-fixtures": "^0.14.0", "redis": "^2.8.0", "request": "^2.88.0", + "sequelize": "^5.16.0", "serve-favicon": "^2.5.0", "ssha": "^1.0.1", "yargs": "^13.2.4" diff --git a/src/controllers/games/gift.js b/src/controllers/games/gift.js index 57fe188..5b4186b 100644 --- a/src/controllers/games/gift.js +++ b/src/controllers/games/gift.js @@ -299,25 +299,5 @@ router.get('/record', async (req, res, next) => { } }) -/* 添加兑换记录 */ -router.post('/record', async (req, res, next) => { - const body = req.body - try { - const list = new GiftRecord({ - user_id: body.user_id, - game_id: body.game_id, - platform_id: body.platform_id, - gift_id: body.gift_id, - gift_info: body.gift_info, - code: body.code, - }) - const result = await list.save() - res.send({ - errcode: 0, - }) - } catch (err) { - next(err) - } -}) export default router diff --git a/src/controllers/games/index.js b/src/controllers/games/index.js index 6eab3a1..3b4560e 100644 --- a/src/controllers/games/index.js +++ b/src/controllers/games/index.js @@ -9,6 +9,7 @@ import adRouter from './ad'; import itemRouter from './item'; import dataRouter from './data'; import giftRouter from './gift'; +import orderRouter from './order'; @@ -27,6 +28,7 @@ router.use('/ad', adRouter); router.use('/item', itemRouter); router.use('/data', dataRouter); router.use('/gift', giftRouter); +router.use('/order', orderRouter); router.use('/', gamesRouter); export default router; diff --git a/src/controllers/games/order.js b/src/controllers/games/order.js new file mode 100644 index 0000000..0f77461 --- /dev/null +++ b/src/controllers/games/order.js @@ -0,0 +1,92 @@ +import {Router} from 'express' +import sequelize from 'sequelize' +import logger from '../../utils/logger' +import OrderInfo from '../../models/paydb/OrderInfo' +const router = new Router() + +// 查询订单详情 +router.get('/', async (req, res, next) => { + try { + const query = req.query + const gameid = parseInt(query.game_id) + const channel = parseInt(query.platform_id) + const currentPage = parseInt(query.currentPage) + const pageSize = parseInt(query.pageSize) + const offset = (currentPage - 1) * pageSize + const limit = pageSize + const opt = { + gameid, + channel, + } + + // 可选查询条件 + if (query.orderid) opt.orderid = query.orderid + if (query.accountid) opt.accountid = query.accountid + if (query.itemid) opt.itemid = parseInt(query.itemid) + if (query.sp_orderid) opt.sp_orderid = query.sp_orderid + + console.log(opt) + + const result = await OrderInfo.findAll({ + offset, + limit, + where: opt, + }) + let total = await OrderInfo.findAll({ + where: opt, + }) + total = total.length + res.send({ + errcode: 0, + total, + result, + }) + } catch (err) { + console.log(err) + next(err) + } +}) + +// 状态切换 +router.patch('/', async (req, res, next) => { + // 权限判断 + const hasPerm = + req.user.permissions.includes(`${req.body.uid}-edit`) || + req.user.permissions.includes(`${req.body.uid}-publish`) || + req.user.permissions.includes(`games-writeable`) + if (!hasPerm) { + res.status(403).send({ + errcode: 1, + errmsg: '用户无权限!', + }) + return + } + try { + const body = req.body + const gameid = parseInt(body.game_id) + const channel = parseInt(body.platform_id) + const idx = body.idx + const status = body.status + const result = await OrderInfo.update( + { + status, + }, + { + where: { + idx, + gameid, + channel, + }, + } + ) + + res.send({ + errcode: 0, + result, + }) + } catch (err) { + next(err) + } +}) + +export default router diff --git a/src/models/paydb/OrderInfo.js b/src/models/paydb/OrderInfo.js new file mode 100644 index 0000000..025ba07 --- /dev/null +++ b/src/models/paydb/OrderInfo.js @@ -0,0 +1,79 @@ +import Sequelize from 'sequelize' +import config from '../../../config/config' + +const payDb = config.pay_db + +const sequelize = new Sequelize(payDb.db_name, payDb.username, payDb.password, { + host: payDb.host, + + dialect: 'mysql', + timezone: '+08:00', +}) + +const OrderInfo = sequelize.define( + 'orderinfo', + { + idx: { + type: Sequelize.INTEGER, + primaryKey: true, + }, + minigame_appid: { + type: Sequelize.CHAR, + }, + minigame_accountid: { + type: Sequelize.CHAR, + }, + orderid: { + type: Sequelize.CHAR, + }, + accountid: { + type: Sequelize.CHAR, + }, + channel: { + type: Sequelize.INTEGER, + }, + gameid: { + type: Sequelize.INTEGER, + }, + openid: { + type: Sequelize.CHAR, + }, + itemid: { + type: Sequelize.INTEGER, + }, + price: { + type: Sequelize.DOUBLE, + }, + ipv4: { + type: Sequelize.CHAR, + }, + status: { + type: Sequelize.INTEGER, + }, + confirmtime: { + type: Sequelize.INTEGER, + }, + createtime: { + type: Sequelize.INTEGER, + }, + sp_orderid: { + type: Sequelize.CHAR, + }, + sp_amount: { + type: Sequelize.DOUBLE, + }, + sp_confirm_time: { + type: Sequelize.INTEGER, + }, + sp_pay_result: { + type: Sequelize.INTEGER, + }, + }, + { + tableName: 'orderinfo', + timestamps: false, + freezeTableName: true, + } +) + +export default OrderInfo