feat: mail config and mail send

This commit is contained in:
zchengo
2023-01-24 20:03:35 +08:00
parent a9e33f2bcc
commit 35886fde4f
17 changed files with 731 additions and 8 deletions
+63
View File
@@ -0,0 +1,63 @@
package service
import (
"crm/common"
"crm/dao"
"crm/models"
"crm/response"
)
type MailConfigService struct {
mailConfigDao *dao.MailConfigDao
}
func NewMailConfigService() *MailConfigService {
return &MailConfigService{
mailConfigDao: dao.NewMailConfigDao(),
}
}
// 保存邮件服务配置
func (m *MailConfigService) Save(param *models.MailConfigSaveParam) int {
if err := m.mailConfigDao.Save(param); err != nil {
return response.ErrCodeFailed
}
return response.ErrCodeSuccess
}
// 开启或关闭邮件服务
func (m *MailConfigService) UpdateStatus(param *models.MailConfigStatusParam) int {
if err := m.mailConfigDao.UpdateStatus(param); err != nil {
return response.ErrCodeFailed
}
return response.ErrCodeSuccess
}
// 获取邮件配置信息
func (m *MailConfigService) GetInfo(uid int64) (*models.MailConfigInfo, int) {
mc, err := m.mailConfigDao.GetInfo(uid)
if err != nil {
return nil, response.ErrCodeFailed
}
mailConfig := models.MailConfigInfo{
Id: mc.Id,
Stmp: mc.Stmp,
Port: mc.Port,
AuthCode: mc.AuthCode,
Email: mc.Email,
Status: mc.Status,
}
return &mailConfig, response.ErrCodeSuccess
}
// 检查邮件配置的有效性
func (m *MailConfigService) Check(uid int64) int {
mc, err := m.mailConfigDao.GetInfo(uid)
if err != nil {
return response.ErrCodeMailConfigInvalid
}
if err = common.DialMail(mc.Stmp, mc.Port, mc.Email, mc.AuthCode); err != nil {
return response.ErrCodeMailConfigInvalid
}
return response.ErrCodeSuccess
}
+30
View File
@@ -9,6 +9,11 @@ import (
"time"
)
const (
Open = 1
Close = 2
)
type CustomerService struct {
}
@@ -57,6 +62,31 @@ func (c *CustomerService) Update(param *models.CustomerUpdateParam) int {
return response.ErrCodeSuccess
}
// 发送邮件给客户
func (c *CustomerService) SendMail(param *models.CustomerSendMailParam) int {
var mc models.MailConfig
err := global.Db.Model(&models.MailConfig{}).Where("creator = ?", param.Uid).First(&mc).Error
if err != nil {
return response.ErrCodeMailSendFailed
}
if mc.Status == Close {
return response.ErrCodeMailSendUnEnable
}
mailParam := models.MailParam{
Smtp: mc.Stmp,
Port: mc.Port,
AuthCode: mc.AuthCode,
Sender: mc.Email,
Subject: param.Subject,
Content: param.Content,
Receiver: param.Receiver,
}
if err := common.SendMailToCustomer(mailParam); err != nil {
return response.ErrCodeMailSendFailed
}
return response.ErrCodeSuccess
}
// 删除客户
func (c *CustomerService) Delete(param *models.CustomerDeleteParam) int {
if err := global.Db.Delete(&models.Customer{}, param.Ids).Error; err != nil {