feat: able to delete mail config
This commit is contained in:
@@ -40,6 +40,18 @@ func (m *MailConfigApi) Save(context *gin.Context) {
|
|||||||
response.Result(errCode, nil, context)
|
response.Result(errCode, nil, context)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 删除邮件服务配置
|
||||||
|
func (m *MailConfigApi) Delete(context *gin.Context) {
|
||||||
|
var param models.MailConfigDeleteParam
|
||||||
|
if err := context.ShouldBind(¶m); err != nil {
|
||||||
|
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
errCode := m.mailConfigService.Delete(¶m)
|
||||||
|
response.Result(errCode, nil, context)
|
||||||
|
}
|
||||||
|
|
||||||
// 开启或关闭邮件服务
|
// 开启或关闭邮件服务
|
||||||
func (m *MailConfigApi) UpdateStatus(context *gin.Context) {
|
func (m *MailConfigApi) UpdateStatus(context *gin.Context) {
|
||||||
var param models.MailConfigStatusParam
|
var param models.MailConfigStatusParam
|
||||||
|
|||||||
+11
-3
@@ -6,6 +6,10 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
Closed = 2
|
||||||
|
)
|
||||||
|
|
||||||
type MailConfigDao struct {
|
type MailConfigDao struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -14,12 +18,16 @@ func NewMailConfigDao() *MailConfigDao {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *MailConfigDao) Save(param *models.MailConfigSaveParam) error {
|
func (m *MailConfigDao) Save(param *models.MailConfigSaveParam) error {
|
||||||
if !isExists(param.Creator) {
|
if !m.IsExists(param.Creator) {
|
||||||
return create(param)
|
return create(param)
|
||||||
}
|
}
|
||||||
return update(param)
|
return update(param)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *MailConfigDao) Delete(param *models.MailConfigDeleteParam) error {
|
||||||
|
return global.Db.Delete(&models.MailConfig{}, param.Id).Error
|
||||||
|
}
|
||||||
|
|
||||||
func (m *MailConfigDao) GetInfo(uid int64) (*models.MailConfig, error) {
|
func (m *MailConfigDao) GetInfo(uid int64) (*models.MailConfig, error) {
|
||||||
var mc models.MailConfig
|
var mc models.MailConfig
|
||||||
err := global.Db.Table(MAIL_CONFIG).Where("creator = ?", uid).First(&mc).Error
|
err := global.Db.Table(MAIL_CONFIG).Where("creator = ?", uid).First(&mc).Error
|
||||||
@@ -41,7 +49,7 @@ func (m *MailConfigDao) UpdateStatus(param *models.MailConfigStatusParam) error
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func isExists(uid int64) bool {
|
func (m *MailConfigDao) IsExists(uid int64) bool {
|
||||||
var mc models.MailConfig
|
var mc models.MailConfig
|
||||||
db := global.Db.Table(MAIL_CONFIG).Where("creator = ?", uid).First(&mc)
|
db := global.Db.Table(MAIL_CONFIG).Where("creator = ?", uid).First(&mc)
|
||||||
return db.RowsAffected != NumberNull
|
return db.RowsAffected != NumberNull
|
||||||
@@ -53,7 +61,7 @@ func create(param *models.MailConfigSaveParam) error {
|
|||||||
Port: param.Port,
|
Port: param.Port,
|
||||||
AuthCode: param.AuthCode,
|
AuthCode: param.AuthCode,
|
||||||
Email: param.Email,
|
Email: param.Email,
|
||||||
Status: 1,
|
Status: Closed,
|
||||||
Creator: param.Creator,
|
Creator: param.Creator,
|
||||||
Created: time.Now().Unix(),
|
Created: time.Now().Unix(),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ func Router() {
|
|||||||
route.GET("/config/check", api.NewMailConfigApi().Check)
|
route.GET("/config/check", api.NewMailConfigApi().Check)
|
||||||
route.PUT("/config/save", api.NewMailConfigApi().Save)
|
route.PUT("/config/save", api.NewMailConfigApi().Save)
|
||||||
route.PUT("/config/status", api.NewMailConfigApi().UpdateStatus)
|
route.PUT("/config/status", api.NewMailConfigApi().UpdateStatus)
|
||||||
|
route.DELETE("/config/delete", api.NewMailConfigApi().Delete)
|
||||||
|
|
||||||
// 订阅模块
|
// 订阅模块
|
||||||
route.GET("/subscribe/info", api.NewSubscribeApi().GetInfo)
|
route.GET("/subscribe/info", api.NewSubscribeApi().GetInfo)
|
||||||
|
|||||||
@@ -14,20 +14,24 @@ type MailConfig struct {
|
|||||||
|
|
||||||
type MailConfigSaveParam struct {
|
type MailConfigSaveParam struct {
|
||||||
Id int64 `json:"id" binding:"omitempty,gt=0"`
|
Id int64 `json:"id" binding:"omitempty,gt=0"`
|
||||||
Stmp string `json:"stmp" binding:"omitempty,ip|hostname"`
|
Stmp string `json:"stmp" binding:"required,ip|hostname"`
|
||||||
Port int `json:"port" binding:"omitempty,gt=0"`
|
Port int `json:"port" binding:"required,gt=0"`
|
||||||
AuthCode string `json:"authCode" binding:"omitempty,gt=0"`
|
AuthCode string `json:"authCode" binding:"required,gt=0"`
|
||||||
Email string `json:"email" binding:"omitempty,email"`
|
Email string `json:"email" binding:"required,email"`
|
||||||
Status int `json:"status" binding:"omitempty,oneof=1 2"`
|
Status int `json:"status" binding:"omitempty,oneof=1 2"`
|
||||||
Creator int64 `json:"creator" binding:"omitempty"`
|
Creator int64 `json:"creator" binding:"omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type MailConfigStatusParam struct {
|
type MailConfigStatusParam struct {
|
||||||
Id int64 `json:"id" binding:"required,gt=0"`
|
Id int64 `json:"id" binding:"omitempty,gt=0"`
|
||||||
Status int `json:"status" binding:"required,oneof=1 2"`
|
Status int `json:"status" binding:"required,oneof=1 2"`
|
||||||
Creator int64 `json:"creator" binding:"omitempty"`
|
Creator int64 `json:"creator" binding:"omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type MailConfigDeleteParam struct {
|
||||||
|
Id int64 `json:"id" binding:"required,gt=0"`
|
||||||
|
}
|
||||||
|
|
||||||
type MailConfigInfo struct {
|
type MailConfigInfo struct {
|
||||||
Id int64 `json:"id"`
|
Id int64 `json:"id"`
|
||||||
Stmp string `json:"stmp"`
|
Stmp string `json:"stmp"`
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ const (
|
|||||||
ErrCodeMailConfigInvalid = 50001 // 邮件服务配置无效
|
ErrCodeMailConfigInvalid = 50001 // 邮件服务配置无效
|
||||||
ErrCodeMailSendFailed = 50002 // 邮件发送失败
|
ErrCodeMailSendFailed = 50002 // 邮件发送失败
|
||||||
ErrCodeMailSendUnEnable = 50003 // 邮件服务未开启
|
ErrCodeMailSendUnEnable = 50003 // 邮件服务未开启
|
||||||
|
ErrCodeMailConfigUnSet = 50004 // 邮件服务未配置
|
||||||
)
|
)
|
||||||
|
|
||||||
var msg = map[int]string{
|
var msg = map[int]string{
|
||||||
@@ -54,4 +55,5 @@ var msg = map[int]string{
|
|||||||
ErrCodeMailConfigInvalid: "mail config invalid",
|
ErrCodeMailConfigInvalid: "mail config invalid",
|
||||||
ErrCodeMailSendFailed: "mail send failed",
|
ErrCodeMailSendFailed: "mail send failed",
|
||||||
ErrCodeMailSendUnEnable: "mail send server unEnable",
|
ErrCodeMailSendUnEnable: "mail send server unEnable",
|
||||||
|
ErrCodeMailConfigUnSet: "mail config un set",
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,8 +25,19 @@ func (m *MailConfigService) Save(param *models.MailConfigSaveParam) int {
|
|||||||
return response.ErrCodeSuccess
|
return response.ErrCodeSuccess
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 删除邮件服务配置
|
||||||
|
func (m *MailConfigService) Delete(param *models.MailConfigDeleteParam) int {
|
||||||
|
if err := m.mailConfigDao.Delete(param); err != nil {
|
||||||
|
return response.ErrCodeFailed
|
||||||
|
}
|
||||||
|
return response.ErrCodeSuccess
|
||||||
|
}
|
||||||
|
|
||||||
// 开启或关闭邮件服务
|
// 开启或关闭邮件服务
|
||||||
func (m *MailConfigService) UpdateStatus(param *models.MailConfigStatusParam) int {
|
func (m *MailConfigService) UpdateStatus(param *models.MailConfigStatusParam) int {
|
||||||
|
if !m.mailConfigDao.IsExists(param.Creator) {
|
||||||
|
return response.ErrCodeMailConfigUnSet
|
||||||
|
}
|
||||||
if err := m.mailConfigDao.UpdateStatus(param); err != nil {
|
if err := m.mailConfigDao.UpdateStatus(param); err != nil {
|
||||||
return response.ErrCodeFailed
|
return response.ErrCodeFailed
|
||||||
}
|
}
|
||||||
@@ -35,6 +46,9 @@ func (m *MailConfigService) UpdateStatus(param *models.MailConfigStatusParam) in
|
|||||||
|
|
||||||
// 获取邮件配置信息
|
// 获取邮件配置信息
|
||||||
func (m *MailConfigService) GetInfo(uid int64) (*models.MailConfigInfo, int) {
|
func (m *MailConfigService) GetInfo(uid int64) (*models.MailConfigInfo, int) {
|
||||||
|
if !m.mailConfigDao.IsExists(uid) {
|
||||||
|
return nil, response.ErrCodeMailConfigUnSet
|
||||||
|
}
|
||||||
mc, err := m.mailConfigDao.GetInfo(uid)
|
mc, err := m.mailConfigDao.GetInfo(uid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, response.ErrCodeFailed
|
return nil, response.ErrCodeFailed
|
||||||
|
|||||||
@@ -9,6 +9,15 @@ export function saveMailConfig(param) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 删除邮件服务配置
|
||||||
|
export function deleteMailConfig(param) {
|
||||||
|
return request({
|
||||||
|
url: '/config/delete',
|
||||||
|
method: 'delete',
|
||||||
|
data: param,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 开启或关闭邮件服务
|
// 开启或关闭邮件服务
|
||||||
export function updateMailConfigStmpStatus(param) {
|
export function updateMailConfigStmpStatus(param) {
|
||||||
return request({
|
return request({
|
||||||
|
|||||||
+46
-12
@@ -73,11 +73,8 @@
|
|||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
<a-form-item label="服务状态" name="status">
|
<a-form-item label="服务状态" name="status">
|
||||||
<a-select ref="select" v-model:value="mailConfig.status" placeholder="自动检测服务有效性"
|
<a-select ref="select" v-model:value="mailConfig.status" placeholder="自动检测服务状态"
|
||||||
disabled>
|
disabled>
|
||||||
<a-select-option :value="0">
|
|
||||||
<Spot type="warning" title="服务未配置" />
|
|
||||||
</a-select-option>
|
|
||||||
<a-select-option :value="1">
|
<a-select-option :value="1">
|
||||||
<Spot type="success" title="服务已开启" />
|
<Spot type="success" title="服务已开启" />
|
||||||
</a-select-option>
|
</a-select-option>
|
||||||
@@ -90,7 +87,8 @@
|
|||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
<a-form-item><br />
|
<a-form-item><br />
|
||||||
<a-button type="primary" html-type="submit">保存</a-button>
|
<a-button type="primary" html-type="submit">保存</a-button>
|
||||||
<a-button style="margin-left: 20px;" @click="reset">重置</a-button>
|
<a-button type="primary" style="margin-left: 20px;" @click="reset" ghost>重置</a-button>
|
||||||
|
<a-button style="margin-left: 20px;" @click="delConfig" danger>删除</a-button>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
@@ -102,16 +100,15 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { reactive, ref, onBeforeMount } from 'vue';
|
import { reactive, ref, onBeforeMount, createVNode } from 'vue';
|
||||||
import { InfoCircleOutlined } from '@ant-design/icons-vue';
|
import { InfoCircleOutlined, ExclamationCircleOutlined } from '@ant-design/icons-vue';
|
||||||
import Spot from '../components/Spot.vue';
|
import Spot from '../components/Spot.vue';
|
||||||
import { saveMailConfig, updateMailConfigStmpStatus, getMailConfig, checkMailConfig } from '../api/config';
|
import { saveMailConfig, deleteMailConfig, updateMailConfigStmpStatus, getMailConfig, checkMailConfig } from '../api/config';
|
||||||
import { message, Modal } from 'ant-design-vue';
|
import { message, Modal } from 'ant-design-vue';
|
||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
onBeforeMount(() => {
|
onBeforeMount(() => {
|
||||||
getMailConfigInfo()
|
getMailConfigInfo()
|
||||||
checkConfig()
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// 邮件服务配置
|
// 邮件服务配置
|
||||||
@@ -124,22 +121,25 @@ const mailConfig = reactive({
|
|||||||
status: undefined
|
status: undefined
|
||||||
})
|
})
|
||||||
const mailConfigRef = ref()
|
const mailConfigRef = ref()
|
||||||
const usability = ref(1)
|
const usability = ref(undefined)
|
||||||
|
|
||||||
// 表单校验
|
// 表单校验
|
||||||
const rules = {
|
const rules = {
|
||||||
stmp: [{
|
stmp: [{
|
||||||
|
required: true,
|
||||||
pattern: /^(?=^.{3,255}$)(http(s)?:\/\/)?(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+\.\w+)*$/,
|
pattern: /^(?=^.{3,255}$)(http(s)?:\/\/)?(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+\.\w+)*$/,
|
||||||
message: '域名格式不正确',
|
message: '域名格式不正确',
|
||||||
trigger: 'blur',
|
trigger: 'blur',
|
||||||
}],
|
}],
|
||||||
port: [{
|
port: [{
|
||||||
|
required: true,
|
||||||
pattern: /^([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/,
|
pattern: /^([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/,
|
||||||
message: '端口号格式不正确',
|
message: '端口号格式不正确',
|
||||||
trigger: 'blur',
|
trigger: 'blur',
|
||||||
}],
|
}],
|
||||||
authCode: [{ message: '产品编码格式不正确', trigger: 'blur' }],
|
authCode: [{ required: true, message: '产品编码格式不正确', trigger: 'blur' }],
|
||||||
email: [{
|
email: [{
|
||||||
|
required: true,
|
||||||
pattern: /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/,
|
pattern: /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/,
|
||||||
message: '邮箱格式不正确',
|
message: '邮箱格式不正确',
|
||||||
trigger: 'blur',
|
trigger: 'blur',
|
||||||
@@ -159,7 +159,31 @@ const onSave = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 保存邮件服务配置
|
// 删除配置
|
||||||
|
const delConfig = () => {
|
||||||
|
Modal.confirm({
|
||||||
|
title: '您确定要删除邮件服务配置?',
|
||||||
|
icon: createVNode(ExclamationCircleOutlined),
|
||||||
|
centered: true,
|
||||||
|
cancelText: '取消',
|
||||||
|
okText: '确定',
|
||||||
|
onOk() {
|
||||||
|
deleteMailConfig({ id: mailConfig.id }).then((res) => {
|
||||||
|
if (res.data.code == 0) {
|
||||||
|
message.success("删除成功")
|
||||||
|
reset()
|
||||||
|
} else {
|
||||||
|
message.error("删除失败")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onCancel() {
|
||||||
|
console.log('Cancel');
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 开启或关闭邮件服务
|
||||||
const onSwitch = () => {
|
const onSwitch = () => {
|
||||||
updateMailConfigStmpStatus({
|
updateMailConfigStmpStatus({
|
||||||
id: mailConfig.id,
|
id: mailConfig.id,
|
||||||
@@ -172,6 +196,10 @@ const onSwitch = () => {
|
|||||||
message.warning("服务已关闭")
|
message.warning("服务已关闭")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (res.data.code == 50004) {
|
||||||
|
mailConfig.status = undefined
|
||||||
|
message.info("您还没有配置邮件服务!")
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -180,6 +208,11 @@ const getMailConfigInfo = () => {
|
|||||||
getMailConfig().then((res) => {
|
getMailConfig().then((res) => {
|
||||||
if (res.data.code == 0) {
|
if (res.data.code == 0) {
|
||||||
setData(res.data.data)
|
setData(res.data.data)
|
||||||
|
checkConfig()
|
||||||
|
}
|
||||||
|
if (res.data.code == 50004) {
|
||||||
|
usability.value = undefined
|
||||||
|
mailConfig.status = undefined
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -199,6 +232,7 @@ const checkConfig = () => {
|
|||||||
// 重置
|
// 重置
|
||||||
const reset = () => {
|
const reset = () => {
|
||||||
mailConfigRef.value.resetFields()
|
mailConfigRef.value.resetFields()
|
||||||
|
usability.value = undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
// 数据赋值
|
// 数据赋值
|
||||||
|
|||||||
Reference in New Issue
Block a user