😎修复大屏相关
This commit is contained in:
parent
14aa237618
commit
c487187709
31
Admin.NET/Admin.NET.Core/Job/WechatAccessTokenCheckJob.cs
Normal file
31
Admin.NET/Admin.NET.Core/Job/WechatAccessTokenCheckJob.cs
Normal file
@ -0,0 +1,31 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 微信AccessToken有效性检查作业任务
|
||||
/// </summary>
|
||||
[JobDetail("job_WechatAccessTokenCheckJob", Description = "微信AccessToken有效性检查", GroupName = "default", Concurrent = false)]
|
||||
[PeriodSeconds(60, TriggerId = "trigger_WechatAccessTokenCheckJob", Description = "微信AccessToken有效性检查", RunOnStart = true)]
|
||||
public class WechatAccessTokenCheckJob : IJob
|
||||
{
|
||||
private readonly IServiceScopeFactory _scopeFactory;
|
||||
|
||||
public WechatAccessTokenCheckJob(IServiceScopeFactory scopeFactory)
|
||||
{
|
||||
_scopeFactory = scopeFactory;
|
||||
}
|
||||
|
||||
public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
|
||||
{
|
||||
using var serviceScope = _scopeFactory.CreateScope();
|
||||
|
||||
var wechatApiClientFactory = serviceScope.ServiceProvider.GetService<WechatApiClientFactory>();
|
||||
await wechatApiClientFactory.CheckWechatAccessTokenAsync();
|
||||
await wechatApiClientFactory.CheckWxOpenAccessTokenAsync();
|
||||
}
|
||||
}
|
||||
@ -10,7 +10,7 @@
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1,maximum-scale=1,user-scalable=0">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=yes" media="(min-width: 769px)">
|
||||
<link rel="icon" href="./favicon.ico" />
|
||||
<title>GoView</title>
|
||||
<title>Admin.NET</title>
|
||||
<link rel="stylesheet" href="./index.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 7.8 KiB |
@ -18,11 +18,7 @@
|
||||
<layout-header></layout-header>
|
||||
<div class="go-login">
|
||||
<div class="go-login-carousel">
|
||||
<n-carousel
|
||||
autoplay
|
||||
dot-type="line"
|
||||
:interval="Number(carouselInterval)"
|
||||
>
|
||||
<n-carousel autoplay dot-type="line" :interval="Number(carouselInterval)">
|
||||
<img
|
||||
v-for="(item, i) in carouselImgList"
|
||||
:key="i"
|
||||
@ -37,24 +33,14 @@
|
||||
<n-collapse-transition :appear="true" :show="show">
|
||||
<n-card class="login-account-card" :title="$t('login.desc')">
|
||||
<div class="login-account-top">
|
||||
<img
|
||||
class="login-account-top-logo"
|
||||
src="~@/assets/images/login/input.png"
|
||||
alt="展示图片"
|
||||
/>
|
||||
<img class="login-account-top-logo" src="~@/assets/images/login/input.png" alt="展示图片" />
|
||||
</div>
|
||||
<n-form
|
||||
ref="formRef"
|
||||
label-placement="left"
|
||||
size="large"
|
||||
:model="formInline"
|
||||
:rules="rules"
|
||||
>
|
||||
<n-form ref="formRef" label-placement="left" size="large" :model="formInline" :rules="rules">
|
||||
<n-form-item path="username">
|
||||
<n-input
|
||||
v-model:value="formInline.username"
|
||||
type="text"
|
||||
maxlength="16"
|
||||
maxlength="30"
|
||||
:placeholder="$t('global.form_account')"
|
||||
@keydown.enter="handleSubmit"
|
||||
>
|
||||
@ -69,7 +55,7 @@
|
||||
<n-input
|
||||
v-model:value="formInline.password"
|
||||
type="password"
|
||||
maxlength="16"
|
||||
maxlength="30"
|
||||
show-password-on="click"
|
||||
:placeholder="$t('global.form_password')"
|
||||
@keydown.enter="handleSubmit"
|
||||
@ -84,21 +70,14 @@
|
||||
<n-form-item>
|
||||
<div class="flex justify-between">
|
||||
<div class="flex-initial">
|
||||
<n-checkbox v-model:checked="autoLogin">{{
|
||||
$t('login.form_auto')
|
||||
}}</n-checkbox>
|
||||
<n-checkbox v-model:checked="autoLogin">{{ $t('login.form_auto') }}</n-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
</n-form-item>
|
||||
<n-form-item>
|
||||
<n-button
|
||||
type="primary"
|
||||
@click="handleSubmit"
|
||||
size="large"
|
||||
:loading="loading"
|
||||
block
|
||||
>{{ $t('login.form_button') }}</n-button
|
||||
>
|
||||
<n-button type="primary" @click="handleSubmit" size="large" :loading="loading" block>{{
|
||||
$t('login.form_button')
|
||||
}}</n-button>
|
||||
</n-form-item>
|
||||
</n-form>
|
||||
</n-card>
|
||||
@ -141,21 +120,21 @@ const systemStore = useSystemStore()
|
||||
const t = window['$t']
|
||||
|
||||
const formInline = reactive({
|
||||
username: 'admin',
|
||||
password: '123456',
|
||||
username: 'superadmin',
|
||||
password: 'Admin.NET++010101'
|
||||
})
|
||||
|
||||
const rules = {
|
||||
username: {
|
||||
required: true,
|
||||
message: t('global.form_account'),
|
||||
trigger: 'blur',
|
||||
trigger: 'blur'
|
||||
},
|
||||
password: {
|
||||
required: true,
|
||||
message: t('global.form_password'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
trigger: 'blur'
|
||||
}
|
||||
}
|
||||
|
||||
// 定时器
|
||||
@ -165,17 +144,7 @@ const shuffleTimiing = ref()
|
||||
const carouselImgList = ['one', 'two', 'three']
|
||||
|
||||
// 背景图
|
||||
const bgList = ref([
|
||||
'bar_y',
|
||||
'bar_x',
|
||||
'line_gradient',
|
||||
'line',
|
||||
'funnel',
|
||||
'heatmap',
|
||||
'map',
|
||||
'pie',
|
||||
'radar',
|
||||
])
|
||||
const bgList = ref(['bar_y', 'bar_x', 'line_gradient', 'line', 'funnel', 'heatmap', 'map', 'pie', 'radar'])
|
||||
|
||||
// 处理url获取
|
||||
const getImageUrl = (name: string, folder: string) => {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user