Browse Source

send webhook

master
linquan 3 weeks ago
parent
commit
2322b5573a
  1. 6
      src/api/common/consts.ts
  2. 48
      src/api/game/index.ts
  3. 58
      src/api/game/loginUrl.ts
  4. 11
      src/api/game/set.ts
  5. 2
      src/utils/game.ts
  6. 206
      src/views/gameLoginUrl/list/component/editConfig.vue
  7. 2
      src/views/gameLoginUrl/list/component/editRecommend.vue
  8. 29
      src/views/gameLoginUrl/list/component/editState.vue
  9. 5
      src/views/gameLoginUrl/list/index.vue
  10. 210
      src/views/gameLoginUrl/serverList/component/editConfig.vue
  11. 3
      src/views/gameLoginUrl/serverList/index.vue
  12. 2
      src/views/login/component/email.vue
  13. 37
      src/views/login/index.vue

6
src/api/common/consts.ts

@ -1369,3 +1369,9 @@ export const RankNames = [
// { name: '正常', id: "RegionRankComponent"},
{ name: '图鉴', id: 'BuildingRankComponent' },
];
export const LoginUrlState = {
NORMAL:1,
MAINTENANCE: 2,
WHITE_LIST:3,
}

48
src/api/game/index.ts

@ -629,14 +629,6 @@ export function deleteConfig(ids: number[]) {
})
}
export function gameGetLoginUrl(params: object) {
return request({
url: '/api/v1/game/loginUrl/getLoginUrl',
method: 'post',
params: params,
});
}
export function gameGetServerConfig(params: object) {
return request({
url: '/api/v1/game/serverConfig/getGeneral',
@ -661,38 +653,6 @@ export function gameUpdateRouter(params: object) {
});
}
export function gameGetAllLoginUrl(params: object) {
return request({
url: '/api/v1/game/loginUrl/getAllLoginUrl',
method: 'post',
params: params,
});
}
export function gameGetAllCcdUrl(params: object) {
return request({
url: '/api/v1/game/loginUrl/getAllCcdUrl',
method: 'post',
params: params,
});
}
export function gameGetAllChannel(params: object) {
return request({
url: '/api/v1/game/loginUrl/getAllChannel',
method: 'post',
params: params,
});
}
export function gameAddLoginUrl(params: object) {
return request({
url: '/api/v1/game/loginUrl/addLoginUrl',
method: 'post',
params: params,
});
}
export function gameAddServerConfig(params: object) {
return request({
url: '/api/v1/game/serverConfig/add',
@ -709,14 +669,6 @@ export function gameAddServerGeneral(params: object) {
});
}
export function gameDelLoginUrl(params: object) {
return request({
url: '/api/v1/game/loginUrl/delLoginUrl',
method: 'post',
params: params,
});
}
export function gameReloadServer(params: object) {
return request({
url: '/api/v1/game/reloadServer',

58
src/api/game/loginUrl.ts

@ -0,0 +1,58 @@
import request from '/@/utils/request';
export function gameGetLoginUrl(params: object) {
return request({
url: '/api/v1/game/loginUrl/getLoginUrl',
method: 'post',
params: params,
});
}
export function gameGetAllLoginUrl(params: object) {
return request({
url: '/api/v1/game/loginUrl/getAllLoginUrl',
method: 'post',
params: params,
});
}
export function gameGetAllCcdUrl(params: object) {
return request({
url: '/api/v1/game/loginUrl/getAllCcdUrl',
method: 'post',
params: params,
});
}
export function gameGetAllChannel(params: object) {
return request({
url: '/api/v1/game/loginUrl/getAllChannel',
method: 'post',
params: params,
});
}
export function gameAddLoginUrl(params: object) {
return request({
url: '/api/v1/game/loginUrl/addLoginUrl',
method: 'post',
params: params,
});
}
export function gameDelLoginUrl(params: object) {
return request({
url: '/api/v1/game/loginUrl/delLoginUrl',
method: 'post',
params: params,
});
}
export function gameSendMsg(data: object) {
return request({
url: '/api/v1/game/loginUrl/sendMsg',
method: 'post',
data: data,
});
}

11
src/api/game/set.ts

@ -44,14 +44,3 @@ export function gameSetAuditMode(params: object) {
params: params,
});
}
/**
*
* @method gameCheckLoginUrl
*/
export function gameCheckLoginUrl(params: object) {
return request({
url: '/frontApi/game/loginUrl/get',
method: 'get',
params: params,
});
}

2
src/utils/game.ts

@ -1,4 +1,4 @@
import { gameGetAllCcdUrl, gameGetAllChannel, gameGetAllLoginUrl } from '/@/api/game';
import { gameGetAllCcdUrl, gameGetAllChannel, gameGetAllLoginUrl } from '/@/api/game/loginUrl';
import { getServerName } from '/@/utils/utils';
export const ServerList = [

206
src/views/gameLoginUrl/list/component/editConfig.vue

@ -1,109 +1,129 @@
<template>
<div>
<el-dialog :title="isNew?'新增服务器':'修改服务器'" v-model="isShowDialog" width="769px">
<el-form label-width="90px" label-position="right">
<el-form-item label="服务器地址" prop="serverId">
<el-input v-model="queryParams.host" placeholder="请输入服务器地址" size="large" style="width: 220px"/>
</el-form-item>
<el-form-item label="服务器端口" prop="port">
<el-input v-model="queryParams.port" placeholder="请输入服务器端口" size="large" style="width: 220px"/>
</el-form-item>
<el-form-item label="服务器状态" prop="state">
<el-select v-model="queryParams.state" class="m-2" placeholder="选择服务器状态">
<el-option label="正常" :value="1"/>
<el-option label="维护" :value="2"/>
<el-option label="白名单" :value="3"/>
</el-select>
</el-form-item>
<el-form-item label="是否推荐" prop="recommend">
<el-select v-model="queryParams.recommend" class="m-2" placeholder="选择推荐">
<el-option label="推荐" :value="1"/>
<el-option label="不推荐" :value="0"/>
</el-select>
</el-form-item>
</el-form>
<template #footer>
<div>
<el-dialog :title="isNew ? '新增服务器' : '修改服务器'" v-model="isShowDialog" width="769px">
<el-form label-width="90px" label-position="right">
<el-form-item label="服务器地址" prop="serverId">
<el-input v-model="queryParams.host" placeholder="请输入服务器地址" size="large" style="width: 220px" />
</el-form-item>
<el-form-item label="服务器端口" prop="port">
<el-input v-model="queryParams.port" placeholder="请输入服务器端口" size="large" style="width: 220px" />
</el-form-item>
<el-form-item label="服务器状态" prop="state">
<el-select v-model="queryParams.state" class="m-2" placeholder="选择服务器状态">
<el-option label="正常" :value="1" />
<el-option label="维护" :value="2" />
<el-option label="白名单" :value="3" />
</el-select>
</el-form-item>
<el-form-item label="是否推荐" prop="recommend">
<el-select v-model="queryParams.recommend" class="m-2" placeholder="选择推荐">
<el-option label="推荐" :value="1" />
<el-option label="不推荐" :value="0" />
</el-select>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="onCancel" size="default"> </el-button>
<el-button size="default" type="primary" class="ml10" @click="addItem">
<el-icon>
<ele-EditPen/>
</el-icon>
<div v-if="isNew">新增</div>
<div v-else>修改</div>
</el-button>
<el-button size="default" type="primary" class="ml10" @click="addItem">
<el-icon>
<ele-EditPen />
</el-icon>
<div v-if="isNew">新增</div>
<div v-else>修改</div>
</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
</el-dialog>
</div>
</template>
<script lang="ts">
import {reactive, toRefs, defineComponent} from 'vue';
import {ElLoading} from "element-plus";
import {gameAddLoginUrl} from "/@/api/game";
import {allChannelList} from "/@/utils/game";
import { reactive, toRefs, defineComponent } from 'vue';
import { ElLoading } from 'element-plus';
import { gameAddLoginUrl, gameSendMsg } from '/@/api/game/loginUrl';
import { allChannelList } from '/@/utils/game';
import { LoginUrlState } from '/@/api/common/consts';
interface TableDataState {
isShowDialog: boolean,
isNew: boolean,
queryParams: object;
channels: object[];
isShowDialog: boolean;
isNew: boolean;
queryParams: object;
channels: object[];
}
export default defineComponent({
name: 'systemEditDicData',
setup(prop, {emit}) {
const state = reactive<TableDataState>({
isShowDialog: false,
isNew: false,
queryParams: {},
channels: [],
});
//
const openDialog = (row: any | null) => {
state.isShowDialog = true;
state.isNew = !row;
state.queryParams = row || {};
console.log("openDialog: >>>>>>>>>>>", row)
allChannelList().then(res => {
state.channels = res;
})
};
//
const closeDialog = () => {
state.isShowDialog = false;
};
//
const onCancel = () => {
closeDialog();
};
//
const addItem = () => {
const loading = ElLoading.service({
lock: true,
text: 'Loading',
background: 'rgba(0, 0, 0, 0.7)',
});
name: 'systemEditDicData',
setup(prop, { emit }) {
const state = reactive<TableDataState>({
isShowDialog: false,
isNew: false,
queryParams: {},
channels: [],
});
//
const openDialog = (row: any | null) => {
state.isShowDialog = true;
state.isNew = !row;
state.queryParams = row || {};
console.log('openDialog: >>>>>>>>>>>', row);
allChannelList().then((res) => {
state.channels = res;
});
};
gameAddLoginUrl(state.queryParams).then((res) => {
console.log(res);
}).finally(function () {
loading.close();
emit('countList')
closeDialog();
});
//
const closeDialog = () => {
state.isShowDialog = false;
};
//
const onCancel = () => {
closeDialog();
};
//
const addItem = () => {
const loading = ElLoading.service({
lock: true,
text: 'Loading',
background: 'rgba(0, 0, 0, 0.7)',
});
};
return {
openDialog,
closeDialog,
onCancel,
addItem,
...toRefs(state),
};
},
gameAddLoginUrl(state.queryParams)
.then((res) => {
console.log(res);
})
.finally(function () {
loading.close();
emit('countList');
closeDialog();
});
sendMsg();
};
const sendMsg = () => {
let content = '';
let server = '<' + state.queryParams.id + '区' + state.queryParams.remark + '>';
if (state.queryParams.state == LoginUrlState.NORMAL) {
content = server + '开服了';
}
if (state.queryParams.state == LoginUrlState.MAINTENANCE) {
content = server + '开始维护';
}
if (state.queryParams.state == LoginUrlState.WHITE_LIST) {
content = server + '开启白名单';
}
gameSendMsg({ title: content, subtitle: '', content: "服务器更新" })
.then((res) => {
console.log(res);
})
.finally(function () {});
};
return {
openDialog,
closeDialog,
onCancel,
addItem,
...toRefs(state),
};
},
});
</script>

2
src/views/gameLoginUrl/list/component/editRecommend.vue

@ -37,7 +37,7 @@
<script lang="ts">
import { reactive, toRefs, defineComponent } from 'vue';
import { ElLoading } from 'element-plus';
import { gameAddLoginUrl } from '/@/api/game';
import { gameAddLoginUrl } from '/@/api/game/loginUrl';
import { ServerCategorize, serverList } from '/@/utils/game';
import { gSwitchServer } from '/@/utils/utils';

29
src/views/gameLoginUrl/list/component/editState.vue

@ -16,7 +16,7 @@
<el-select v-model="queryParams.servers" multiple collapse-tags clearable class="m-2" placeholder="选择服务器" size="large">
<el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
<el-button size="small" type="primary" style="margin-left: 20px" @click="changeServer">全选</el-button>
<el-button size="small" type="primary" style="margin-left: 20px" @click="changeServer">全选</el-button>
</el-form-item>
</el-form>
<template #footer>
@ -38,9 +38,10 @@
<script lang="ts">
import { reactive, toRefs, defineComponent } from 'vue';
import { ElLoading } from 'element-plus';
import { gameAddLoginUrl } from '/@/api/game';
import { gameAddLoginUrl, gameSendMsg } from '/@/api/game/loginUrl';
import { ServerCategorize, serverList } from '/@/utils/game';
import { gSwitchServer } from '/@/utils/utils';
import { LoginUrlState } from '/@/api/common/consts';
interface TableDataState {
isShowDialog: boolean;
@ -94,6 +95,8 @@ export default defineComponent({
updateItem(state.queryParams.servers[i]);
}
sendMsg();
loading.close();
closeDialog();
};
@ -105,6 +108,28 @@ export default defineComponent({
})
.finally(function () {});
};
const sendMsg = () => {
let content = '';
let server = '';
if (state.queryParams.servers.length == 1) {
server = "<"+state.queryParams.servers[0] +"区"+state.servers.find((r) => r.id === state.queryParams.servers[0]).remark+">";
}
if (state.queryParams.state == LoginUrlState.NORMAL) {
content = server + '开服了';
}
if (state.queryParams.state == LoginUrlState.MAINTENANCE) {
content = server + '开始维护';
}
if (state.queryParams.state == LoginUrlState.WHITE_LIST) {
content = server + '开启白名单';
}
gameSendMsg({ title: content, subtitle: '', content: "服务器更新" })
.then((res) => {
console.log(res);
})
.finally(function () {});
};
const changeServer = () => {
let servers = gSwitchServer(state.serverSwitch, state.servers);
state.queryParams.servers = [];

5
src/views/gameLoginUrl/list/index.vue

@ -76,7 +76,8 @@ import { toRefs, reactive, onMounted, defineComponent, ref } from 'vue';
import EditConfig from '/@/views/gameLoginUrl/list/component/editConfig.vue';
import EditRecommend from '/@/views/gameLoginUrl/list/component/editRecommend.vue';
import EditState from '/@/views/gameLoginUrl/list/component/editState.vue';
import { gameGetLoginUrl, gameDelLoginUrl, gameReloadServer } from '/@/api/game';
import { gameReloadServer } from '/@/api/game';
import { gameGetLoginUrl, gameDelLoginUrl } from '/@/api/game/loginUrl';
import { PLATFORM } from '/@/api/common/consts';
import { serverList } from '/@/utils/game';
@ -139,7 +140,7 @@ export default defineComponent({
editStateRef.value.openDialog();
};
const countList = () => {
gameGetLoginUrl(state.tableData.params).then((res) => {
gameGetLoginUrl(state.tableData.params).then((res) => {
console.log('countList:', res);
state.tableData.total = res.data.total || 1;
state.tableData.data = res.data.loginUrlList ?? [];

210
src/views/gameLoginUrl/serverList/component/editConfig.vue

@ -1,118 +1,124 @@
<template>
<div>
<el-dialog :title="isNew?'新增服务器':'修改服务器'" v-model="isShowDialog" width="769px">
<el-form label-width="90px" label-position="right">
<el-form-item label="数据库地址" prop="gameDbUrl">
<el-input v-model="queryParams.gameDbUrl" placeholder="请输入数据库地址" size="large" style="width: 220px"/>
</el-form-item>
<el-form-item label="数据库名称" prop="gameDbName">
<el-input v-model="queryParams.gameDbName" placeholder="请输入数据库名称" size="large" style="width: 220px"/>
</el-form-item>
<el-form-item label="内网地址" prop="innerIp">
<el-input v-model="queryParams.innerIp" placeholder="请输入内网地址" size="large" style="width: 220px"/>
</el-form-item>
<el-form-item label="开服日期" prop="startTime">
<el-date-picker type="datetime" size="large" v-model="queryParams.createTime" format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"/>
</el-form-item>
<el-form-item label="平台" prop="platform">
<el-select v-model="queryParams.platform" class="m-2" placeholder="选择服务器状态">
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="先行服" :value="3"/>
</el-select>
</el-form-item>
<el-form-item label="难度" prop="difficulty">
<el-select v-model="queryParams.difficulty" class="m-2" placeholder="选择推荐">
<el-option label="普通" :value="1"/>
<el-option label="困难" :value="2"/>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="queryParams.remark" placeholder="请输入内网地址" size="large" style="width: 220px"/>
</el-form-item>
</el-form>
<template #footer>
<div>
<el-dialog :title="isNew ? '新增服务器' : '修改服务器'" v-model="isShowDialog" width="769px">
<el-form label-width="90px" label-position="right">
<el-form-item label="数据库地址" prop="gameDbUrl">
<el-input v-model="queryParams.gameDbUrl" placeholder="请输入数据库地址" size="large" style="width: 220px" />
</el-form-item>
<el-form-item label="数据库名称" prop="gameDbName">
<el-input v-model="queryParams.gameDbName" placeholder="请输入数据库名称" size="large" style="width: 220px" />
</el-form-item>
<el-form-item label="内网地址" prop="innerIp">
<el-input v-model="queryParams.innerIp" placeholder="请输入内网地址" size="large" style="width: 220px" />
</el-form-item>
<el-form-item label="开服日期" prop="startTime">
<el-date-picker
type="datetime"
size="large"
v-model="queryParams.createTime"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-form-item>
<el-form-item label="平台" prop="platform">
<el-select v-model="queryParams.platform" class="m-2" placeholder="选择服务器状态">
<el-option label="ios" :value="1" />
<el-option label="安卓" :value="2" />
<el-option label="先行服" :value="3" />
</el-select>
</el-form-item>
<el-form-item label="难度" prop="difficulty">
<el-select v-model="queryParams.difficulty" class="m-2" placeholder="选择推荐">
<el-option label="普通" :value="1" />
<el-option label="困难" :value="2" />
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="queryParams.remark" placeholder="请输入内网地址" size="large" style="width: 220px" />
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="onCancel" size="default"> </el-button>
<el-button size="default" type="primary" class="ml10" @click="addItem">
<el-icon>
<ele-EditPen/>
</el-icon>
<div v-if="isNew">新增</div>
<div v-else>修改</div>
</el-button>
<el-button size="default" type="primary" class="ml10" @click="addItem">
<el-icon>
<ele-EditPen />
</el-icon>
<div v-if="isNew">新增</div>
<div v-else>修改</div>
</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
</el-dialog>
</div>
</template>
<script lang="ts">
import {reactive, toRefs, defineComponent} from 'vue';
import {ElLoading} from "element-plus";
import {gameAddLoginUrl, gameAddServerConfig} from "/@/api/game";
import {allChannelList} from "/@/utils/game";
import { reactive, toRefs, defineComponent } from 'vue';
import { ElLoading } from 'element-plus';
import { gameAddServerConfig } from '/@/api/game';
import { allChannelList } from '/@/utils/game';
interface TableDataState {
isShowDialog: boolean,
isNew: boolean,
queryParams: object;
channels: object[];
isShowDialog: boolean;
isNew: boolean;
queryParams: object;
channels: object[];
}
export default defineComponent({
name: 'gameServerConfigEdit',
setup(prop, {emit}) {
const state = reactive<TableDataState>({
isShowDialog: false,
isNew: false,
queryParams: {},
channels: [],
});
//
const openDialog = (row: any | null) => {
state.isShowDialog = true;
state.isNew = !row;
state.queryParams = row || {};
console.log("openDialog: >>>>>>>>>>>", row)
allChannelList().then(res => {
state.channels = res;
})
};
name: 'gameServerConfigEdit',
setup(prop, { emit }) {
const state = reactive<TableDataState>({
isShowDialog: false,
isNew: false,
queryParams: {},
channels: [],
});
//
const openDialog = (row: any | null) => {
state.isShowDialog = true;
state.isNew = !row;
state.queryParams = row || {};
console.log('openDialog: >>>>>>>>>>>', row);
allChannelList().then((res) => {
state.channels = res;
});
};
//
const closeDialog = () => {
state.isShowDialog = false;
};
//
const onCancel = () => {
closeDialog();
};
//
const addItem = () => {
const loading = ElLoading.service({
lock: true,
text: 'Loading',
background: 'rgba(0, 0, 0, 0.7)',
});
//
const closeDialog = () => {
state.isShowDialog = false;
};
//
const onCancel = () => {
closeDialog();
};
//
const addItem = () => {
const loading = ElLoading.service({
lock: true,
text: 'Loading',
background: 'rgba(0, 0, 0, 0.7)',
});
gameAddServerConfig(state.queryParams).then((res) => {
console.log(res);
}).finally(function () {
loading.close();
emit('countList')
closeDialog();
});
};
return {
openDialog,
closeDialog,
onCancel,
addItem,
...toRefs(state),
};
},
gameAddServerConfig(state.queryParams)
.then((res) => {
console.log(res);
})
.finally(function () {
loading.close();
emit('countList');
closeDialog();
});
};
return {
openDialog,
closeDialog,
onCancel,
addItem,
...toRefs(state),
};
},
});
</script>

3
src/views/gameLoginUrl/serverList/index.vue

@ -53,7 +53,8 @@
<script lang="ts">
import {toRefs, reactive, onMounted, defineComponent, ref} from 'vue';
import EditConfig from '/@/views/gameLoginUrl/serverList/component/editConfig.vue';
import {gameGetLoginUrl, gameDelLoginUrl, gameReloadServer} from "/@/api/game";
import {gameReloadServer} from "/@/api/game";
import {gameGetLoginUrl, gameDelLoginUrl} from "/@/api/game/loginUrl";
import {PLATFORM} from "/@/api/common/consts";
//

2
src/views/login/component/email.vue

@ -37,7 +37,7 @@
</template>
<script lang="ts">
import { toRefs, reactive, defineComponent, getCurrentInstance, computed, onMounted } from 'vue';
import { toRefs, reactive, defineComponent, getCurrentInstance, computed } from 'vue';
import { emailCode, loginEmail } from '/@/api/login';
import { Session } from '/@/utils/storage';
import { initFrontEndControlRoutes } from '/@/router/frontEnd';

37
src/views/login/index.vue

@ -79,25 +79,24 @@ export default defineComponent({
});
onMounted(() => {
window.addEventListener('keydown', (res) => {
if (res.key === 'F2') {
state.showEmail = false;
state.tabsActiveName = 'account';
state.state = '';
return;
}
if (!'email'.includes(res.key)) {
state.state = '';
return;
}
state.state += res.key;
if (state.state === 'email') {
console.log(state.state);
state.showEmail = true;
state.tabsActiveName = 'email';
state.state = '';
}
});
window.addEventListener('keypress', (res) => {
if (res.key === 'F2') {
state.showEmail = false;
state.tabsActiveName = 'account';
state.state = '';
return;
}
if (!'email'.includes(res.key)) {
state.state = '';
return;
}
state.state += res.key;
if (state.state === 'email') {
state.showEmail = true;
state.tabsActiveName = 'email';
state.state = '';
}
});
});
return {
logoMini,

Loading…
Cancel
Save