活动:打脸公告时间
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
import { ActivityData } from "../../domain/activityField/activityField";
|
||||
import { PopNoticeData } from "../../domain/activityField/popNotice";
|
||||
import { ShopData } from "../../domain/roleField/shop";
|
||||
import { getRoleCreateTime, getServerCreateTime } from "../redisService";
|
||||
import { getActivityById } from "./activityService";
|
||||
|
||||
@@ -16,5 +18,19 @@ import { getActivityById } from "./activityService";
|
||||
let serverTime = await getServerCreateTime(serverId);
|
||||
|
||||
let playerData = new PopNoticeData(activityData, createTime, serverTime);
|
||||
if(playerData.needActivityTime()) {
|
||||
let { activityId } = playerData.param;
|
||||
let curActivity = await getActivityById(activityId);
|
||||
let data = new ActivityData(curActivity, createTime, serverTime);
|
||||
playerData.setActivityTime(Math.floor(data.beginTime/1000), Math.floor(data.nextRefreshTime/1000));
|
||||
}
|
||||
if(playerData.needShopTime()) {
|
||||
let { activityId, shopItemId } = playerData.param;
|
||||
let curActivity = await getActivityById(activityId);
|
||||
let data = new ShopData(curActivity, createTime, serverTime);
|
||||
let item = data.findByItemId(shopItemId);
|
||||
if(item) playerData.setActivityTime(item.beginTime, item.endTime)
|
||||
}
|
||||
delete playerData.param;
|
||||
return playerData;
|
||||
}
|
||||
@@ -226,4 +226,18 @@ export enum DAILY_COIN_BOX_STATUS {
|
||||
export enum GUIDE_GACHA_STAGE {
|
||||
PULL = 1, // 抽卡阶段
|
||||
DECIDE = 2, // 决定阶段
|
||||
}
|
||||
|
||||
export enum POP_NOTICE_TIME_TYPE {
|
||||
USE_STR = 1, // 读手写
|
||||
USE_TIME = 2, // 读指定
|
||||
USE_ACTIVITY = 3, // 按活动
|
||||
USE_SHOPITEM = 4, // 按商品
|
||||
NO = 5, // 不显示
|
||||
}
|
||||
|
||||
export enum POP_NOTICE_TIME_SHOW_TYPE {
|
||||
READ_STR = 1, // 读time字段字符串
|
||||
READ_COUNTDOWN = 2, // 读倒计时
|
||||
NO = 3, // 不显示
|
||||
}
|
||||
@@ -166,3 +166,15 @@ export function transActivityInRemoteToModelType(activity: ActivityInRemote): Ac
|
||||
updatedBy: 0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export class ActivityData extends ActivityBase {
|
||||
public initData(_data: string) {
|
||||
|
||||
}
|
||||
|
||||
constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
|
||||
super(activityData, createTime, serverTime)
|
||||
this.initData(activityData.data)
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
import moment = require("moment");
|
||||
import { ACTIVITY_TIME_TYPE, POP_NOTICE_TIME_SHOW_TYPE, POP_NOTICE_TIME_TYPE } from "../../consts";
|
||||
import { ActivityModelType } from "../../db/Activity";
|
||||
import { ActivityBase } from "./activityField";
|
||||
|
||||
@@ -9,7 +11,21 @@ interface PopNoticeInDb {
|
||||
sysType: number; // dic_zyz_systemOpenTime的id,功能开启
|
||||
timePosition: string; // 控制公告持续时间的显示位置'&'表示不显示持续时间
|
||||
btnPosition: string; // 按钮位置
|
||||
time: string; // 公告持续时间
|
||||
timeType: POP_NOTICE_TIME_TYPE; // 1-手写公告 2-指定时间 3-按某个活动时间 4-按某个商品时间 5-无时间
|
||||
timeStr: string; // 公告时间
|
||||
beginTime: number; // 后台选择的时间,13位时间戳
|
||||
endTime: number; // 后台选择的时间,13位时间戳
|
||||
activityId: number; // 活动id
|
||||
shopItemId: number; // 商品id
|
||||
}
|
||||
|
||||
interface PopNoticeTimeParam {
|
||||
timeType: POP_NOTICE_TIME_TYPE;
|
||||
timeStr: string;
|
||||
beginTime: number; // 后台选择的时间,13位时间戳
|
||||
endTime: number; // 后台选择的时间,13位时间戳
|
||||
activityId: number;
|
||||
shopItemId: number;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -21,9 +37,12 @@ interface PopNoticeInDb {
|
||||
sort: number; // 活动的排序,越大的越前
|
||||
skip: string; // 前往
|
||||
sysType: number; // dic_zyz_systemOpenTime的id,功能开启
|
||||
showTimeType: POP_NOTICE_TIME_SHOW_TYPE = POP_NOTICE_TIME_SHOW_TYPE.NO; // 显示类型
|
||||
timePosition: string; // 控制公告持续时间的显示位置'&'表示不显示持续时间
|
||||
btnPosition: string; // 按钮位置
|
||||
time: string; // 公告持续时间
|
||||
time: string = ''; // 公告持续时间
|
||||
countdownTime: number = 0; // 公告持续时间,10位时间戳
|
||||
param: PopNoticeTimeParam;
|
||||
|
||||
constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
|
||||
super(activityData, createTime, serverTime)
|
||||
@@ -39,7 +58,53 @@ interface PopNoticeInDb {
|
||||
this.skip = dataObj.skip;
|
||||
this.timePosition = dataObj.timePosition;
|
||||
this.btnPosition = dataObj.btnPosition;
|
||||
this.time = dataObj.time;
|
||||
this.param = {
|
||||
timeType: dataObj.timeType,
|
||||
timeStr: dataObj.timeStr,
|
||||
beginTime: dataObj.beginTime,
|
||||
endTime: dataObj.endTime,
|
||||
activityId: dataObj.activityId,
|
||||
shopItemId: dataObj.shopItemId,
|
||||
}
|
||||
this.setTime();
|
||||
}
|
||||
|
||||
private setTime(beginTime?: number, endTime?: number) {
|
||||
let param = this.param;
|
||||
switch (param.timeType) {
|
||||
case POP_NOTICE_TIME_TYPE.USE_STR:
|
||||
this.showTimeType = POP_NOTICE_TIME_SHOW_TYPE.READ_STR;
|
||||
this.time = param.timeStr;
|
||||
break;
|
||||
case POP_NOTICE_TIME_TYPE.USE_TIME:
|
||||
this.showTimeType = POP_NOTICE_TIME_SHOW_TYPE.READ_COUNTDOWN;
|
||||
this.time = `活动时间:${moment(param.beginTime).format('MM.DD')} - ${moment(param.endTime).format('MM.DD')}`
|
||||
this.countdownTime = Math.floor(param.endTime/1000);
|
||||
break;
|
||||
case POP_NOTICE_TIME_TYPE.USE_ACTIVITY:
|
||||
case POP_NOTICE_TIME_TYPE.USE_SHOPITEM:
|
||||
this.showTimeType = POP_NOTICE_TIME_SHOW_TYPE.READ_COUNTDOWN;
|
||||
if(beginTime && endTime) {
|
||||
this.time = `活动时间:${moment(beginTime * 1000).format('MM.DD')} - ${moment(endTime * 1000).format('MM.DD')}`
|
||||
this.countdownTime = endTime;
|
||||
}
|
||||
break;
|
||||
case POP_NOTICE_TIME_TYPE.NO:
|
||||
this.showTimeType = POP_NOTICE_TIME_SHOW_TYPE.NO;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public setActivityTime(beginTime: number, endTime: number) {
|
||||
if(this.param.timeType != POP_NOTICE_TIME_TYPE.USE_ACTIVITY && this.param.timeType != POP_NOTICE_TIME_TYPE.USE_SHOPITEM) return;
|
||||
this.setTime(beginTime, endTime);
|
||||
}
|
||||
|
||||
public needActivityTime() {
|
||||
return this.param.timeType == POP_NOTICE_TIME_TYPE.USE_ACTIVITY;
|
||||
}
|
||||
|
||||
public needShopTime() {
|
||||
return this.param.timeType == POP_NOTICE_TIME_TYPE.USE_SHOPITEM;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user