🎨 添加图库和客服插件(有问题-待修改)
This commit is contained in:
130
plugin/customerservice/service/service.go
Normal file
130
plugin/customerservice/service/service.go
Normal file
@@ -0,0 +1,130 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
"git.echol.cn/loser/lckt/global"
|
||||
"git.echol.cn/loser/lckt/model/user"
|
||||
"git.echol.cn/loser/lckt/plugin/customerservice/model"
|
||||
"github.com/gin-gonic/gin"
|
||||
"gorm.io/gorm"
|
||||
"time"
|
||||
)
|
||||
|
||||
type CustomerServiceService struct{}
|
||||
|
||||
func (e *CustomerServiceService) PlugService() (err error) {
|
||||
// 写你的业务逻辑
|
||||
return nil
|
||||
}
|
||||
|
||||
func (e *CustomerServiceService) ValidateServiceData(sys *model.SysService) error {
|
||||
if sys.Uid == 0 {
|
||||
return errors.New("客服关联的用户id不能为空")
|
||||
} else {
|
||||
db := global.GVA_DB.Model(&model.SysService{})
|
||||
if sys.Id > 0 {
|
||||
db = db.Where("uid=?", sys.Uid).Where("id<>?", sys.Id)
|
||||
} else {
|
||||
db = db.Where("uid=?", sys.Uid)
|
||||
}
|
||||
var dCount int64
|
||||
db.Count(&dCount)
|
||||
if dCount > 0 {
|
||||
return errors.New("用户id已关联其他客服,请重新输入")
|
||||
}
|
||||
}
|
||||
db := global.GVA_DB.Model(&model.SysService{})
|
||||
if sys.Id == 0 {
|
||||
if sys.Password == "" {
|
||||
return errors.New("客服密码必须填写")
|
||||
}
|
||||
db = db.Where("account=?", sys.Account)
|
||||
} else {
|
||||
db = db.Where("account=?", sys.Account).Where("id<>?", sys.Id)
|
||||
var dCount int64
|
||||
db.Count(&dCount)
|
||||
if dCount > 0 {
|
||||
return errors.New("账户已存在,请重新输入")
|
||||
}
|
||||
}
|
||||
if sys.Account == "" {
|
||||
return errors.New("客服账户必须填写")
|
||||
}
|
||||
if sys.Nickname == "" {
|
||||
return errors.New("客服名称必须填写")
|
||||
}
|
||||
if sys.Avatar == "" {
|
||||
return errors.New("客服头像必须选择")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (e *CustomerServiceService) ValidateScriptData(sys *model.SysServiceScript) error {
|
||||
if sys.Title == "" {
|
||||
return errors.New("话术标题必须填写")
|
||||
}
|
||||
if sys.Content == "" {
|
||||
return errors.New("话术内容必须填写")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (e *CustomerServiceService) ValidateReplyData(sys *model.SysServiceReply) error {
|
||||
if sys.Keyword == "" {
|
||||
return errors.New("关键字必须填写")
|
||||
}
|
||||
if sys.Content == "" {
|
||||
return errors.New("回复内容必须填写")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (e *CustomerServiceService) GetUrlHost(c *gin.Context) string {
|
||||
host := c.Request.Host
|
||||
scheme := "http"
|
||||
if c.Request.TLS != nil {
|
||||
scheme = "https"
|
||||
}
|
||||
referer := c.Request.Referer()
|
||||
if referer != "" {
|
||||
return referer
|
||||
}
|
||||
return scheme + "://" + host + "/"
|
||||
}
|
||||
|
||||
func (e *CustomerServiceService) CreateMsg(kfInfo model.SysService, userInfo user.User, msgType int64, content string, isKf string) (err error) {
|
||||
msgRecord := &model.SysServiceRecord{
|
||||
ServiceId: kfInfo.Id,
|
||||
Uid: int64(userInfo.ID),
|
||||
Message: base64.StdEncoding.EncodeToString([]byte(content)),
|
||||
MessageType: msgType,
|
||||
UpdateTime: time.Now().Unix(),
|
||||
Avatar: userInfo.Avatar,
|
||||
Nickname: userInfo.NickName,
|
||||
Online: 1,
|
||||
}
|
||||
var record model.SysServiceRecord
|
||||
|
||||
eErr := global.GVA_DB.Where("service_id = ?", kfInfo.Id).Where("uid = ?", userInfo.ID).First(&record).Error
|
||||
if errors.Is(eErr, gorm.ErrRecordNotFound) {
|
||||
msgRecord.AddTime = time.Now().Unix()
|
||||
global.GVA_DB.Create(msgRecord)
|
||||
} else {
|
||||
global.GVA_DB.Model(&model.SysServiceRecord{}).Where("id = ?", record.Id).Updates(msgRecord)
|
||||
}
|
||||
|
||||
//插入消息记录
|
||||
msg := map[string]interface{}{
|
||||
"service_id": kfInfo.Id,
|
||||
"uid": userInfo.ID,
|
||||
"content": base64.StdEncoding.EncodeToString([]byte(content)),
|
||||
"msg_type": msgType,
|
||||
"is_view": 0,
|
||||
"add_time": time.Now().Unix(),
|
||||
"is_kf": isKf,
|
||||
}
|
||||
err = global.GVA_DB.Model(&model.SysServiceMsg{}).Create(msg).Error
|
||||
return err
|
||||
}
|
Reference in New Issue
Block a user