56 lines
1.2 KiB
JavaScript
56 lines
1.2 KiB
JavaScript
/* 推广系统-广告专用 */
|
|
|
|
import {Router} from 'express'
|
|
import AdUid from '../../models/admin/AdUid'
|
|
import RedisDao from '../../redis/redis.dao'
|
|
|
|
import cors from 'cors'
|
|
|
|
const router = new Router()
|
|
const redisDao = new RedisDao()
|
|
|
|
// 获取广告区域列表
|
|
router.get('/', cors(), async (req, res, next) => {
|
|
try {
|
|
const query = req.query
|
|
const game_id = query.gameid
|
|
const platform_id = query.channelid
|
|
const key = `ad-ratio:${game_id}:${platform_id}`
|
|
const ratio = await redisDao.getByKey(key)
|
|
|
|
let records = await AdUid.find({
|
|
game_id,
|
|
platform_id,
|
|
deleted: false,
|
|
})
|
|
|
|
records = JSON.parse(JSON.stringify(records))
|
|
|
|
let cfg = {}
|
|
if (ratio) {
|
|
const arr = ratio.split('\n')
|
|
arr.map(item => {
|
|
const kv = item.split('-')
|
|
cfg[kv[0]] = kv[1]
|
|
})
|
|
}
|
|
|
|
const result = records.map(item => {
|
|
item.ratio = item.ratio ? item.ratio : cfg[item.channel_name] || 100
|
|
return {
|
|
adChannel: item.channel_id,
|
|
ratio: parseFloat(item.ratio),
|
|
}
|
|
})
|
|
|
|
res.send({
|
|
errcode: 0,
|
|
result,
|
|
})
|
|
} catch (err) {
|
|
next(err)
|
|
}
|
|
})
|
|
|
|
export default router
|