Commit af52d3ab authored by Xuguangxing's avatar Xuguangxing

feat: 增加页面有效期对比逻辑

parent b3a8cb90
...@@ -5,8 +5,10 @@ export default class ActivityController extends Controller { ...@@ -5,8 +5,10 @@ export default class ActivityController extends Controller {
// 开发环境不走redis缓存 // 开发环境不走redis缓存
const apollo = ctx.app.config.apollo || {}; const apollo = ctx.app.config.apollo || {};
let body = ''; let body = '';
// 获取服务器端当前时间,用于与页面有效期做对比
const serverTimeStamp = new Date().getTime();
if (process.env.NODE_ENV === 'development') { if (process.env.NODE_ENV === 'development') {
body = await ctx.renderToHtml('activity.js', { url: ctx.url, apollo }); body = await ctx.renderToHtml('activity.js', { url: ctx.url, apollo, serverTimeStamp });
} else { } else {
const redisKey = `quantum-blocks:page:${ctx.params.id}`; const redisKey = `quantum-blocks:page:${ctx.params.id}`;
body = await ctx.service.redis.get(redisKey); body = await ctx.service.redis.get(redisKey);
...@@ -14,7 +16,7 @@ export default class ActivityController extends Controller { ...@@ -14,7 +16,7 @@ export default class ActivityController extends Controller {
ctx.logger.info('请求redis成功 key: %j', redisKey); ctx.logger.info('请求redis成功 key: %j', redisKey);
} }
if (!body) { if (!body) {
body = await ctx.renderToHtml('activity.js', { url: ctx.url, apollo }); body = await ctx.renderToHtml('activity.js', { url: ctx.url, apollo, serverTimeStamp });
await ctx.service.redis.set(redisKey, body); await ctx.service.redis.set(redisKey, body);
} }
} }
......
...@@ -3,11 +3,11 @@ const protocol = EASY_ENV_IS_BROWSER ? window.location.protocol : 'https:'; ...@@ -3,11 +3,11 @@ const protocol = EASY_ENV_IS_BROWSER ? window.location.protocol : 'https:';
const hostMap = { const hostMap = {
apiHost: `${protocol}//localhost:7002`, apiHost: `${protocol}//localhost:7002`,
talosHost: `${protocol}//talos-yxm.liangkebang.net`, talosHost: `${protocol}//talos-ds.liangkebang.net`,
kdspHost: `${protocol}//kdsp-api-yxm.liangkebang.net`, kdspHost: `${protocol}//kdsp-api-ds.liangkebang.net`,
shenceUrl: `${protocol}//bn.xyqb.com/sa?project=default`, shenceUrl: `${protocol}//bn.xyqb.com/sa?project=default`,
mallHost: `${protocol}//mall-yxm.liangkebang.net`, mallHost: `${protocol}//mall-ds.liangkebang.net`,
xyqbH5Host: `${protocol}//mapi-yxm.liangkebang.net`, xyqbH5Host: `${protocol}//mapi-ds.liangkebang.net`,
test: true, test: true,
yxmTenantId: 560761, yxmTenantId: 560761,
appIdMap: { appIdMap: {
......
...@@ -93,7 +93,7 @@ export default class App { ...@@ -93,7 +93,7 @@ export default class App {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
router.onReady(() => { router.onReady(() => {
this.fetch(vm).then(() => { this.fetch(vm).then(() => {
context.state = {...store.state, apollo: context.state.apollo || {}}; context.state = {...store.state, apollo: context.state.apollo || {}, serverTimestamp: context.state.serverTimeStamp};
return resolve(new Vue(vm)); return resolve(new Vue(vm));
}); });
}); });
......
...@@ -24,17 +24,20 @@ import editorApi from '@/api/editor.api'; ...@@ -24,17 +24,20 @@ import editorApi from '@/api/editor.api';
export default class Activity extends Mixins(TransformStyleMixin, BottomNavStyleMixin, SaMixin, DisableTouchMixin) { export default class Activity extends Mixins(TransformStyleMixin, BottomNavStyleMixin, SaMixin, DisableTouchMixin) {
@Getter('pageData') pageData; @Getter('pageData') pageData;
@State(state => state.activity.pageInfo) pageInfo;
@State(state => state.activity.pageInfo.pageName) pageName; @State(state => state.activity.pageInfo.pageName) pageName;
@State(state => state.activity.noPageData) noPageData; @State(state => state.activity.noPageData) noPageData;
@State(state => state.activity.pageInfo.appLoginState) appLoginState; @State(state => state.activity.pageInfo.appLoginState) appLoginState;
@State(state => state.activity.pageInfo.tenantId) tenantId; @State(state => state.activity.pageInfo.tenantId) tenantId;
@State(state => state.activity.gridLayout.rowHeight) rowHeight; @State(state => state.activity.gridLayout.rowHeight) rowHeight;
@State(state => state.serverTimestamp) serverTimestamp;
@Mutation('SET_PAGE_ELEMENTS') setPageElement; @Mutation('SET_PAGE_ELEMENTS') setPageElement;
@Mutation('UPDATE_APP_LOGIN_STATE') updateAppLoginState; @Mutation('UPDATE_APP_LOGIN_STATE') updateAppLoginState;
@Provide() editor = this; @Provide() editor = this;
isEditor: boolean = false; isEditor: boolean = false;
pageExpire: boolean = false;
bottomInfo: object = { bottomInfo: object = {
x: 0, x: 0,
y: 0, y: 0,
...@@ -142,10 +145,21 @@ export default class Activity extends Mixins(TransformStyleMixin, BottomNavStyle ...@@ -142,10 +145,21 @@ export default class Activity extends Mixins(TransformStyleMixin, BottomNavStyle
} }
async created() { async created() {
const [res, ] = await editorApi.getFinanceSetting(); const [res, ] = await editorApi.getFinanceSetting();
console.log(res); console.log(res, 'finance result');
if (res && res.showFlag === 0) { if (res && res.showFlag === 0) {
this.pageData.elements = this.pageData.elements.filter(v => v.name !== 'freedom-container' || !v.props.isFinance); this.pageData.elements = this.pageData.elements.filter(v => v.name !== 'freedom-container' || !v.props.isFinance);
} }
this.comparePageTime(); // 验证活动是否在设定的有效期范围内
}
comparePageTime() {
console.log(this.serverTimestamp);
// this.pageExpire
console.log(this.pageInfo);
const { validStartTime, validEndTime, redirectUrl } = this.pageInfo;
if (validStartTime && validEndTime) {
// todo 当设置了页面的有效时间起止,用当前服务器返回的时间作对比,判断页面是否在有效期内
// if (this.serverTimeStamp < this.)
}
} }
async getNavigatorConfig(navId, index) { async getNavigatorConfig(navId, index) {
// 获取导航配置 // 获取导航配置
......
<template> <template>
<div class="pageContent"> <div class="pageContent">
<!-- {{pageInfo}} -->
<div class="activity" :class="{hasBottomNav: navigatorConfig}" :style="transformStyle(pageData.commonStyle)"> <div class="activity" :class="{hasBottomNav: navigatorConfig}" :style="transformStyle(pageData.commonStyle)">
<template v-if="!noPageData && tenantIdCorrect"> <template v-if="!noPageData && tenantIdCorrect">
<div class="layout"> <div class="layout">
......
...@@ -7,8 +7,8 @@ import Activity from './modules/activity'; ...@@ -7,8 +7,8 @@ import Activity from './modules/activity';
Vue.use(Vuex); Vue.use(Vuex);
export default function createStore(initState: any = {}) { export default function createStore(initState: any = {}) {
const { title, url, origin, locale, csrf, activity } = initState; const { title, url, origin, locale, csrf, activity, serverTimestamp } = initState;
const state = { title, url, origin, locale, csrf }; const state = { title, url, origin, locale, csrf, serverTimestamp };
return new Vuex.Store<RootState>({ return new Vuex.Store<RootState>({
state, state,
modules: { modules: {
......
{ {
"api": { "api": {
"apiHost": "https://quantum-blocks-yxm.liangkebang.net", "apiHost": "https://quantum-blocks-ds.liangkebang.net",
"h5Host": "https://quantum-h5-yxm.liangkebang.net", "h5Host": "https://quantum-h5-ds.liangkebang.net",
"opapiHost": "https://opapi-yxm.liangkebang.net", "opapiHost": "https://opapi-ds.liangkebang.net",
"passportHost": "https://passportapi-yxm.liangkebang.net", "passportHost": "https://passportapi-ds.liangkebang.net",
"talosHost": "https://talos-yxm.liangkebang.net", "talosHost": "https://talos-ds.liangkebang.net",
"kdspHost": "https://kdsp-api-yxm.liangkebang.net", "kdspHost": "https://kdsp-api-ds.liangkebang.net",
"loginUrl": "", "loginUrl": "",
"newApolloFlag": true, "newApolloFlag": true,
"h5ShopHost": "https://tenet-yxm.liangkebang.net/#", "h5ShopHost": "https://tenet-ds.liangkebang.net/#",
"mallHost": "https://mall-yxm.liangkebang.net", "mallHost": "https://mall-ds.liangkebang.net",
"xyqbH5Host": "https://mapi-yxm.liangkebang.net", "xyqbH5Host": "https://mapi-ds.liangkebang.net",
"yxmTenantId": 560761, "yxmTenantId": 560761,
"appIdMap": { "appIdMap": {
"560761": "wxe16bf9293671506c", "560761": "wxe16bf9293671506c",
...@@ -18,8 +18,8 @@ ...@@ -18,8 +18,8 @@
} }
}, },
"redis": { "redis": {
"port": "30835", "port": "31980",
"host": "172.16.4.89", "host": "172.16.4.7",
"password": "", "password": "",
"db": 0 "db": 0
}, },
......
{"apiHost":"https://quantum-blocks-yxm.liangkebang.net","h5Host":"https://quantum-h5-yxm.liangkebang.net","opapiHost":"https://opapi-yxm.liangkebang.net","passportHost":"https://passportapi-yxm.liangkebang.net","talosHost":"https://talos-yxm.liangkebang.net","kdspHost":"https://kdsp-api-yxm.liangkebang.net","loginUrl":"","newApolloFlag":true,"h5ShopHost":"https://tenet-yxm.liangkebang.net/#","mallHost":"https://mall-yxm.liangkebang.net","xyqbH5Host":"https://mapi-yxm.liangkebang.net","yxmTenantId":560761,"appIdMap":{"560761":"wxe16bf9293671506c","560867":"wxccb8435d68e8c7d6"},"qiniuUpHost":"https://up-z0.qiniup.com","qiniuHost":"https://appsync.lkbang.net"} {"apiHost":"https://quantum-blocks-ds.liangkebang.net","h5Host":"https://quantum-h5-ds.liangkebang.net","opapiHost":"https://opapi-ds.liangkebang.net","passportHost":"https://passportapi-ds.liangkebang.net","talosHost":"https://talos-ds.liangkebang.net","kdspHost":"https://kdsp-api-ds.liangkebang.net","loginUrl":"","newApolloFlag":true,"h5ShopHost":"https://tenet-ds.liangkebang.net/#","mallHost":"https://mall-ds.liangkebang.net","xyqbH5Host":"https://mapi-ds.liangkebang.net","yxmTenantId":560761,"appIdMap":{"560761":"wxe16bf9293671506c","560867":"wxccb8435d68e8c7d6"},"qiniuUpHost":"https://up-z0.qiniup.com","qiniuHost":"https://appsync.lkbang.net"}
\ No newline at end of file \ No newline at end of file
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
"test": "cross-env NODE_ENV=production EGG_SERVER_ENV=sit egg-scripts start --port 80 --workers 1", "test": "cross-env NODE_ENV=production EGG_SERVER_ENV=sit egg-scripts start --port 80 --workers 1",
"stop": "egg-scripts stop", "stop": "egg-scripts stop",
"backend": "nohup egg-scripts start --port 7001 --workers 4", "backend": "nohup egg-scripts start --port 7001 --workers 4",
"dev": "cross-env NODE_ENV=test APOLLO_CLUSTER=k8s NAMESPACE=yxm npm run apollo && egg-bin dev -r egg-ts-helper/register", "dev": "cross-env NODE_ENV=test APOLLO_CLUSTER=k8s NAMESPACE=ds npm run apollo && egg-bin dev -r egg-ts-helper/register",
"debug": "egg-bin debug -r egg-ts-helper/register", "debug": "egg-bin debug -r egg-ts-helper/register",
"apollo": "node bin/apollo.js", "apollo": "node bin/apollo.js",
"build": "cross-env NODE_ENV=production APOLLO_CLUSTER=3C npm run apollo && cross-env COS_ENV=production easy build --devtool", "build": "cross-env NODE_ENV=production APOLLO_CLUSTER=3C npm run apollo && cross-env COS_ENV=production easy build --devtool",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment