后台:添加跑马灯
This commit is contained in:
@@ -73,6 +73,20 @@ export default class GameController extends Controller {
|
||||
return
|
||||
}
|
||||
|
||||
public async getMarqueeList() {
|
||||
const { ctx } = this;
|
||||
const { page, pageSize, sortField, sortOrder, form } = ctx.request.body;
|
||||
ctx.body = await ctx.service.game.getMarqueeList(page, pageSize, sortField, sortOrder, form);
|
||||
return
|
||||
}
|
||||
|
||||
public async updateMarquee() {
|
||||
const { ctx } = this;
|
||||
const { code, values } = ctx.request.body;
|
||||
ctx.body = await ctx.service.game.updateMarquee(code, values);
|
||||
return
|
||||
}
|
||||
|
||||
public async getDicHero() {
|
||||
const { ctx } = this;
|
||||
ctx.body = await ctx.service.game.getDicHero();
|
||||
|
||||
@@ -59,6 +59,8 @@ export default (app: Application) => {
|
||||
router.post('/api/game/getnoticelist', controller.game.getNoticeList);
|
||||
router.post('/api/game/updatenotice', controller.game.updateNotice);
|
||||
router.post('/api/game/delnotice', controller.game.delNotice);
|
||||
router.post('/api/game/getmarqueelist', controller.game.getMarqueeList);
|
||||
router.post('/api/game/updatemarquee', controller.game.updateMarquee);
|
||||
|
||||
router.post('/api/activity/getactivitylist', tokenParser, controller.activity.getActivityList);
|
||||
router.post('/api/activity/updateactivity', tokenParser, controller.activity.updateActivity);
|
||||
|
||||
@@ -9,6 +9,7 @@ import { DicActivityType } from '@pubUtils/dictionary/DicActivityType';
|
||||
import { DicTaskType } from '@pubUtils/dictionary/DicTaskType';
|
||||
import { ServerStategyModel, ServerStategyTypeParam } from '@db/ServerStategy';
|
||||
import { NoticeModel, NoticeTypeParam } from '@db/Notice';
|
||||
import { MarqueeModel, MarqueeParam } from '@db/Marquee';
|
||||
|
||||
/**
|
||||
* Test Service
|
||||
@@ -187,4 +188,30 @@ export default class Game extends Service {
|
||||
if(!result) return ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
|
||||
public async getMarqueeList(page: number, pageSize: number, sortField: string, sortOrder: string, form: { type?: number, current?: boolean, content?: string }) {
|
||||
const { ctx } = this;
|
||||
const list = await MarqueeModel.findByCondition(page, pageSize, sortField, sortOrder, form);
|
||||
const total = await MarqueeModel.countByCondition( form )
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS, {
|
||||
list: list.map(cur => {
|
||||
return { ...cur, startTime: cur.startTime.getTime(), endTime: cur.endTime.getTime() }
|
||||
}), total
|
||||
});
|
||||
}
|
||||
|
||||
public async updateMarquee(code: string, params: MarqueeParam) {
|
||||
const { ctx } = this;
|
||||
if(params.startTime) params.startTime = new Date(params.startTime);
|
||||
if(params.endTime) params.endTime = new Date(params.endTime);
|
||||
let result;
|
||||
if(code == 'new') {
|
||||
result = await MarqueeModel.createData(params);
|
||||
} else {
|
||||
result = await MarqueeModel.updateData(code, params);
|
||||
}
|
||||
if(!result) return ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,16 +10,22 @@ import { genCode } from '../pubUtils/util';
|
||||
export default class Marquee extends BaseModel {
|
||||
@prop({ required: true })
|
||||
code: string; // 跑马灯唯一标识
|
||||
|
||||
@prop({ required: true, type: Number })
|
||||
serverIds: number[]; // 推送服务器
|
||||
|
||||
@prop({ required: true, enum: MARQUEE_TYPE })
|
||||
type: MARQUEE_TYPE; // 推送类型
|
||||
|
||||
@prop({ required: true })
|
||||
startTime: Date; // 活动开始时间
|
||||
|
||||
@prop({ required: true })
|
||||
endTime: Date; // 活动结束时间
|
||||
|
||||
@prop({ required: true })
|
||||
interval: number; // 活动结束时间
|
||||
|
||||
@prop({ required: true })
|
||||
content: string; // 广播内容
|
||||
|
||||
@@ -64,6 +70,41 @@ export default class Marquee extends BaseModel {
|
||||
const result: MarqueeType[] = await MarqueeModel.find({ type: MARQUEE_TYPE.SCHEDULE, startTime: { $lte: new Date() }, endTime: { $gte: new Date() } }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
private static getSearchObj(form: { type?: number, current?: boolean, content?: string }) {
|
||||
let searchObj = {};
|
||||
if(form['type']) searchObj['type'] = form.type;
|
||||
if(form['current']) {
|
||||
searchObj['startTime'] = { $lte: new Date };
|
||||
searchObj['endTime'] = { $gte: new Date };
|
||||
}
|
||||
if(form['content']) searchObj['content'] = { $regex: new RegExp(form.content.toString(), 'i') };
|
||||
return searchObj
|
||||
}
|
||||
|
||||
public static async findByCondition(page: number, pageSize: number, sortField: string = 'updatedAt', sortOrder: string = 'descend', form: { type?: number, current?: boolean, content?: string } = {}) {
|
||||
|
||||
let searchObj = this.getSearchObj(form);
|
||||
let sort = {};
|
||||
if(sortField && sortOrder) {
|
||||
if(sortOrder == 'ascend') {
|
||||
sort[sortField] = 1;
|
||||
} else if (sortOrder == 'descend') {
|
||||
sort[sortField] = -1;
|
||||
}
|
||||
}
|
||||
const result: MarqueeType[] = await MarqueeModel.find(searchObj).limit(pageSize).skip((page - 1) * pageSize).sort(sort).select('+sort +showStartTime +showEndTime +serverType +isEnable').lean({ getters: true, virtuals: true });
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
public static async countByCondition(form: { type?: number, current?: boolean, content?: string } = {}) {
|
||||
|
||||
let searchObj = this.getSearchObj(form);
|
||||
const result = await MarqueeModel.count(searchObj);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user