diff --git a/shared/domain/roleField/shop.ts b/shared/domain/roleField/shop.ts index f11eac069..9dedae4c1 100644 --- a/shared/domain/roleField/shop.ts +++ b/shared/domain/roleField/shop.ts @@ -1,4 +1,5 @@ -import { SHOP_REFRESH_TYPE } from "../../consts"; +import moment = require("moment"); +import { ACTIVITY_TIME_TYPE, REFRESH_TIME, SHOP_REFRESH_TYPE } from "../../consts"; import { ActivityModelType } from "../../db/Activity"; import { UserShopType } from "../../db/UserShop"; import { UserShopTypeType } from "../../db/UserShopType"; @@ -29,6 +30,8 @@ interface ShopItemInDb { chosen: number; indirectId: number; createTime: number; + timeType: ACTIVITY_TIME_TYPE; + days: number; beginTime: number; endTime: number; } @@ -36,10 +39,14 @@ interface ShopItemInDb { export class ShopData extends ActivityBase { shop: number; type: number; + roleTime: number; + serverTime: number; list: ShopDicData[] = []; constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { - super(activityData, createTime, serverTime) + super(activityData, createTime, serverTime); + this.roleTime = createTime; + this.serverTime = serverTime; this.initData(activityData.data) } @@ -49,7 +56,7 @@ export class ShopData extends ActivityBase { this.shop = result.shop; this.type = result.type; for (let obj of result.list) { - this.list.push(new ShopDicData(obj)) + this.list.push(new ShopDicData(obj, this.roleTime, this.serverTime)) } } @@ -85,11 +92,11 @@ export class ShopDicData { productID: string = ''; chosen: number; indirectId: number; - createTime: number; - beginTime: number; - endTime: number; + createTime: number = 0; + beginTime: number = 0; + endTime: number = 0; - constructor(obj: ShopItemInDb) { + constructor(obj: ShopItemInDb, roleTime: number, serverTime: number) { this.id = obj.id; this.goodId = obj.goodId; this.goodName = obj.goodName; @@ -106,8 +113,30 @@ export class ShopDicData { this.chosen = obj.chosen; this.indirectId = obj.indirectId; this.createTime = obj.createTime; - this.beginTime = obj.beginTime; - this.endTime = obj.endTime; + this.setTime(obj, roleTime, serverTime); + } + + setTime(obj: ShopItemInDb, roleTime: number, serverTime: number) { + switch (obj.timeType) { + case ACTIVITY_TIME_TYPE.SERVER_OPEN_TIME: { + this.beginTime = moment(serverTime * 1000).startOf('d').add(REFRESH_TIME, 'h').unix(); + this.endTime = moment(this.beginTime * 1000).add(obj.days > 0? obj.days: 1, 'd').unix(); + break; + } + case ACTIVITY_TIME_TYPE.ROLE_REGISTER_TIME: { + this.beginTime = moment(roleTime * 1000).startOf('d').add(REFRESH_TIME, 'h').unix(); + this.endTime = moment(this.beginTime * 1000).add(obj.days > 0? obj.days: 1, 'd').unix(); + break; + } + case ACTIVITY_TIME_TYPE.DATE_TIME: { + this.beginTime = obj.beginTime; + this.endTime = obj.endTime; + break; + } + default: { + break; + } + } } public setReadRecord(record: UserShopTypeType) { @@ -140,8 +169,7 @@ export class ShopReturnData { if(!activityData || activityData.shop != this.shop || activityData.type != this.type) return; this.activityId = activityData.activityId; for(let obj of activityData.list) { - let newDic = new ShopDicData(obj); - this.dic.push(newDic); + this.dic.push(obj); } }