Commit af52d3ab authored by Xuguangxing's avatar Xuguangxing

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

parent b3a8cb90
......@@ -5,8 +5,10 @@ export default class ActivityController extends Controller {
// 开发环境不走redis缓存
const apollo = ctx.app.config.apollo || {};
let body = '';
// 获取服务器端当前时间,用于与页面有效期做对比
const serverTimeStamp = new Date().getTime();
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 {
const redisKey = `quantum-blocks:page:${ctx.params.id}`;
body = await ctx.service.redis.get(redisKey);
......@@ -14,7 +16,7 @@ export default class ActivityController extends Controller {
ctx.logger.info('请求redis成功 key: %j', redisKey);
}
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);
}
}
......
......@@ -3,11 +3,11 @@ const protocol = EASY_ENV_IS_BROWSER ? window.location.protocol : 'https:';
const hostMap = {
apiHost: `${protocol}//localhost:7002`,
talosHost: `${protocol}//talos-yxm.liangkebang.net`,
kdspHost: `${protocol}//kdsp-api-yxm.liangkebang.net`,
talosHost: `${protocol}//talos-ds.liangkebang.net`,
kdspHost: `${protocol}//kdsp-api-ds.liangkebang.net`,
shenceUrl: `${protocol}//bn.xyqb.com/sa?project=default`,
mallHost: `${protocol}//mall-yxm.liangkebang.net`,
xyqbH5Host: `${protocol}//mapi-yxm.liangkebang.net`,
mallHost: `${protocol}//mall-ds.liangkebang.net`,
xyqbH5Host: `${protocol}//mapi-ds.liangkebang.net`,
test: true,
yxmTenantId: 560761,
appIdMap: {
......
......@@ -93,7 +93,7 @@ export default class App {
return new Promise((resolve, reject) => {
router.onReady(() => {
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));
});
});
......
......@@ -24,17 +24,20 @@ import editorApi from '@/api/editor.api';
export default class Activity extends Mixins(TransformStyleMixin, BottomNavStyleMixin, SaMixin, DisableTouchMixin) {
@Getter('pageData') pageData;
@State(state => state.activity.pageInfo) pageInfo;
@State(state => state.activity.pageInfo.pageName) pageName;
@State(state => state.activity.noPageData) noPageData;
@State(state => state.activity.pageInfo.appLoginState) appLoginState;
@State(state => state.activity.pageInfo.tenantId) tenantId;
@State(state => state.activity.gridLayout.rowHeight) rowHeight;
@State(state => state.serverTimestamp) serverTimestamp;
@Mutation('SET_PAGE_ELEMENTS') setPageElement;
@Mutation('UPDATE_APP_LOGIN_STATE') updateAppLoginState;
@Provide() editor = this;
isEditor: boolean = false;
pageExpire: boolean = false;
bottomInfo: object = {
x: 0,
y: 0,
......@@ -142,10 +145,21 @@ export default class Activity extends Mixins(TransformStyleMixin, BottomNavStyle
}
async created() {
const [res, ] = await editorApi.getFinanceSetting();
console.log(res);
console.log(res, 'finance result');
if (res && res.showFlag === 0) {
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) {
// 获取导航配置
......
<template>
<div class="pageContent">
<!-- {{pageInfo}} -->
<div class="activity" :class="{hasBottomNav: navigatorConfig}" :style="transformStyle(pageData.commonStyle)">
<template v-if="!noPageData && tenantIdCorrect">
<div class="layout">
......
......@@ -7,8 +7,8 @@ import Activity from './modules/activity';
Vue.use(Vuex);
export default function createStore(initState: any = {}) {
const { title, url, origin, locale, csrf, activity } = initState;
const state = { title, url, origin, locale, csrf };
const { title, url, origin, locale, csrf, activity, serverTimestamp } = initState;
const state = { title, url, origin, locale, csrf, serverTimestamp };
return new Vuex.Store<RootState>({
state,
modules: {
......
{
"api": {
"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",
"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-yxm.liangkebang.net/#",
"mallHost": "https://mall-yxm.liangkebang.net",
"xyqbH5Host": "https://mapi-yxm.liangkebang.net",
"h5ShopHost": "https://tenet-ds.liangkebang.net/#",
"mallHost": "https://mall-ds.liangkebang.net",
"xyqbH5Host": "https://mapi-ds.liangkebang.net",
"yxmTenantId": 560761,
"appIdMap": {
"560761": "wxe16bf9293671506c",
......@@ -18,8 +18,8 @@
}
},
"redis": {
"port": "30835",
"host": "172.16.4.89",
"port": "31980",
"host": "172.16.4.7",
"password": "",
"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"}
\ No newline at end of file
{"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
......@@ -8,7 +8,7 @@
"test": "cross-env NODE_ENV=production EGG_SERVER_ENV=sit egg-scripts start --port 80 --workers 1",
"stop": "egg-scripts stop",
"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",
"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",
......
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