域名管理:更新域名状态&设置默认域名

This commit is contained in:
suxiang
2024-07-23 12:08:14 +08:00
parent 571152b58a
commit 1145467c11
9 changed files with 170 additions and 8 deletions
@@ -55,6 +55,8 @@
</el-table-column>
<el-table-column align="center" :label="$t('table.actions')" width="330" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button v-if="scope.row.isDefault !='1' && scope.row.enable == '1'" size="mini" type="primary" @click="handleDefaultStatus(scope.row)">{{$t('默认')}}</el-button>
<el-button type="primary" size="mini" @click="handleUpdate(scope.row)">{{$t('table.edit')}}</el-button>
<el-button v-if="scope.row.enable =='1'" size="mini" type="danger" @click="handleModifyStatus(scope.row,2)">{{$t('table.disable')}}</el-button>
<el-button v-if="scope.row.enable =='2'" size="mini" type="success" @click="handleModifyStatus(scope.row,1)">{{$t('table.enable')}}</el-button>
@@ -115,7 +117,7 @@
</template>
<script>
import { fetchList, updateEnableStatus, createDomain, updateDomain, deleteDomain } from '@/api/domain'
import { fetchList, updateEnableStatus, createDomain, updateDomain, deleteDomain, updateDefaultStatus } from '@/api/domain'
import { userList } from '@/api/user'
import waves from '@/directive/waves' // 水波纹指令
import { parseTime } from '@/utils'
@@ -283,6 +285,19 @@
this.listQuery.current = val
this.getList()
},
handleDefaultStatus(row) {
updateDefaultStatus(row.id, 1).then(response => {
if (response.data.code === 0) {
this.$notify({
title: '成功',
message: '操作成功',
type: 'success'
})
this.getList()
}
this.getList()
})
},
handleModifyStatus(row, enable) {
console.log('route', this.$route)
updateEnableStatus(row.id, enable).then(response => {
@@ -4,11 +4,10 @@ import cn.hutool.core.util.StrUtil;
import org.dromara.neutrinoproxy.server.base.page.PageInfo;
import org.dromara.neutrinoproxy.server.base.page.PageQuery;
import org.dromara.neutrinoproxy.server.base.rest.Authorization;
import org.dromara.neutrinoproxy.server.controller.req.proxy.DomainCreateReq;
import org.dromara.neutrinoproxy.server.controller.req.proxy.DomainListReq;
import org.dromara.neutrinoproxy.server.controller.req.proxy.DomainUpdateReq;
import org.dromara.neutrinoproxy.server.controller.req.proxy.PortMappingCreateReq;
import org.dromara.neutrinoproxy.server.controller.req.proxy.*;
import org.dromara.neutrinoproxy.server.controller.res.proxy.DomainListRes;
import org.dromara.neutrinoproxy.server.controller.res.proxy.DomainUpdateDefaultStatusRes;
import org.dromara.neutrinoproxy.server.controller.res.proxy.DomainUpdateEnableStatusRes;
import org.dromara.neutrinoproxy.server.util.ParamCheckUtil;
import org.noear.solon.annotation.*;
import org.dromara.neutrinoproxy.server.service.DomainService;
@@ -51,4 +50,34 @@ public class DomainController {
ParamCheckUtil.checkNotEmpty(req.getDomain(), "domain");
domainService.update(req, jks);
}
@Post
@Mapping(path = "/update/enable-status")
@Authorization(onlyAdmin = true)
public DomainUpdateEnableStatusRes updateEnableStatus(DomainUpdateEnableStatusReq req){
ParamCheckUtil.checkNotNull(req, "req");
ParamCheckUtil.checkNotNull(req.getId(), "id");
ParamCheckUtil.checkNotNull(req.getEnable(), "enable");
return domainService.updateEnableStatus(req);
}
@Post
@Mapping(path = "/delete")
@Authorization(onlyAdmin = true)
public void delete(DomainDeleteReq req) {
ParamCheckUtil.checkNotNull(req, "req");
ParamCheckUtil.checkNotNull(req.getId(), "id");
domainService.delete(req.getId());
}
@Post
@Mapping(path = "/update/default-status")
@Authorization(onlyAdmin = true)
public DomainUpdateDefaultStatusRes updateDefaultStatus(DomainUpdateDefaultStatusReq req){
ParamCheckUtil.checkNotNull(req, "req");
ParamCheckUtil.checkNotNull(req.getId(), "id");
ParamCheckUtil.checkNotNull(req.getIsDefault(), "isDefault");
return domainService.updateDefaultStatus(req.getId(), req.getIsDefault());
}
}
@@ -0,0 +1,15 @@
package org.dromara.neutrinoproxy.server.controller.req.proxy;
import lombok.Data;
/**
* @author Mirac
* @date 23/7/2024
*/
@Data
public class DomainDeleteReq {
/**
* id
*/
private Integer id;
}
@@ -0,0 +1,22 @@
package org.dromara.neutrinoproxy.server.controller.req.proxy;
import lombok.Data;
import org.dromara.neutrinoproxy.server.constant.DefaultDomainStatusEnum;
/**
* @author Mirac
* @date 23/7/2024
*/
@Data
public class DomainUpdateDefaultStatusReq {
/**
* id
*/
private Integer id;
/**
* 启用状态 {@link DefaultDomainStatusEnum}
*/
private Integer isDefault;
}
@@ -0,0 +1,21 @@
package org.dromara.neutrinoproxy.server.controller.req.proxy;
import lombok.Data;
/**
* @author Mirac
* @date 23/7/2024
*/
@Data
public class DomainUpdateEnableStatusReq {
/**
* id
*/
private Integer id;
/**
* 启用状态
*/
private Integer enable;
}
@@ -0,0 +1,8 @@
package org.dromara.neutrinoproxy.server.controller.res.proxy;
/**
* @author Mirac
* @date 23/7/2024
*/
public class DomainUpdateDefaultStatusRes {
}
@@ -0,0 +1,8 @@
package org.dromara.neutrinoproxy.server.controller.res.proxy;
/**
* @author Mirac
* @date 23/7/2024
*/
public class DomainUpdateEnableStatusRes {
}
@@ -25,4 +25,12 @@ public interface DomainMapper extends BaseMapper<DomainNameDO> {
.last("limit 1")
);
}
default void updateEnableStatus(Integer id, Integer enable, Date updateTime) {
this.update(Wrappers.<DomainNameDO>lambdaUpdate()
.eq(DomainNameDO::getId, id)
.set(DomainNameDO::getEnable, enable)
.set(DomainNameDO::getUpdateTime, updateTime)
);
}
}
@@ -17,10 +17,10 @@ import org.dromara.neutrinoproxy.server.constant.DefaultDomainStatusEnum;
import org.dromara.neutrinoproxy.server.constant.EnableStatusEnum;
import org.dromara.neutrinoproxy.server.constant.ExceptionConstant;
import org.dromara.neutrinoproxy.server.constant.HttpsStatusEnum;
import org.dromara.neutrinoproxy.server.controller.req.proxy.DomainCreateReq;
import org.dromara.neutrinoproxy.server.controller.req.proxy.DomainListReq;
import org.dromara.neutrinoproxy.server.controller.req.proxy.DomainUpdateReq;
import org.dromara.neutrinoproxy.server.controller.req.proxy.*;
import org.dromara.neutrinoproxy.server.controller.res.proxy.DomainListRes;
import org.dromara.neutrinoproxy.server.controller.res.proxy.DomainUpdateDefaultStatusRes;
import org.dromara.neutrinoproxy.server.controller.res.proxy.DomainUpdateEnableStatusRes;
import org.dromara.neutrinoproxy.server.dal.DomainMapper;
import org.dromara.neutrinoproxy.server.dal.UserMapper;
import org.dromara.neutrinoproxy.server.dal.entity.DomainNameDO;
@@ -116,6 +116,7 @@ public class DomainService {
return buffer.toByteArray();
}
//TODO 更新相关channel
public void update(DomainUpdateReq req, UploadedFile jks) throws IOException {
DomainNameDO domainNameCheck = domainMapper.checkRepeat(req.getDomain(), Sets.newHashSet(req.getId()));
ParamCheckUtil.checkMustNull(domainNameCheck, ExceptionConstant.DOMAIN_NAME_CANNOT_REPEAT);
@@ -134,4 +135,39 @@ public class DomainService {
int update = domainMapper.update(updateWrapper);
System.out.println(update);
}
// TODO 更新对应的channel
public DomainUpdateEnableStatusRes updateEnableStatus(DomainUpdateEnableStatusReq req) {
if (Objects.equals(req.getEnable(), EnableStatusEnum.DISABLE.getStatus())) {
//如果设置状态为禁用,则将默认域名设置为非默认域名
updateDefaultStatus(req.getId(), DefaultDomainStatusEnum.DISABLE.getStatus());
}
domainMapper.updateEnableStatus(req.getId(), req.getEnable(), new Date());
return new DomainUpdateEnableStatusRes();
}
//TODO 处理VisitorChannel
public void delete(Integer id) {
domainMapper.deleteById(id);
}
public DomainUpdateDefaultStatusRes updateDefaultStatus(Integer id, Integer isDefault) {
if (Objects.equals(isDefault, DefaultDomainStatusEnum.ENABLE.getStatus())) {
//如果设置状态为默认域名,则将之前的默认域名设置为非默认域名
DomainNameDO oldDomainNameDO = domainMapper.selectOne(Wrappers.<DomainNameDO>lambdaQuery()
.select(DomainNameDO::getId)
.eq(DomainNameDO::getIsDefault, DefaultDomainStatusEnum.ENABLE.getStatus()));
if (oldDomainNameDO != null) {
oldDomainNameDO.setIsDefault(DefaultDomainStatusEnum.DISABLE.getStatus());
domainMapper.updateById(oldDomainNameDO);
}
}
DomainNameDO domainNameDO = new DomainNameDO();
domainNameDO.setId(id);
domainNameDO.setIsDefault(isDefault);
domainMapper.updateById(domainNameDO);
return new DomainUpdateDefaultStatusRes();
}
}