kefu/controller/ent.go

173 lines
4.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package controller
import (
"errors"
"fmt"
"github.com/gin-gonic/gin"
"kefu/lib"
"kefu/models"
"kefu/tools"
"kefu/types"
"log"
"time"
)
// 获取企业信息
func PostEntInfo(c *gin.Context) {
entId := c.PostForm("ent_id")
if entId == "" {
HandleError(c, types.ApiCode.ENT_ERROR, types.ApiCode.GetMessage(types.ApiCode.ENT_ERROR), errors.New("商户ID不存在"))
return
}
entInfo := models.FindUserByUid(entId)
if entInfo.Name == "" {
HandleError(c, types.ApiCode.ENT_ERROR, types.ApiCode.GetMessage(types.ApiCode.ENT_ERROR), errors.New("商户ID不存在"))
return
}
//查看过期时间
nowSecond := time.Now().Unix()
expireSecond := entInfo.ExpiredAt.Unix()
if models.FindConfig("KefuExpired") == "on" && expireSecond < nowSecond {
HandleError(c, types.ApiCode.ACCOUNT_EXPIRED, types.ApiCode.GetMessage(types.ApiCode.ACCOUNT_EXPIRED), errors.New("账号过期"))
return
}
//查看状态
if entInfo.Status == 1 {
HandleError(c, types.ApiCode.ACCOUNT_FORBIDDEN, types.ApiCode.GetMessage(types.ApiCode.ACCOUNT_FORBIDDEN), errors.New("账号未开通"))
return
}
configs := models.GetEntConfigsMap(entId, "PreVisitorForm", "KefuIntroduce",
"RobotStatus", "TurnToMan", "RobotNoAnswer", "RobotName", "RobotAvator", "RobotCard",
"VisitorNotice", "AutoWelcome", "VisitorCookie", "VisitorMaxNum", "VisitorMaxNumNotice", "ScanWechatQrcode",
"VisitorAuthApi", "CloseNotice", "QdrantAIStatus", "Marketing")
configs["RobotName"] = tools.Ifelse(configs["RobotName"] != "", configs["RobotName"], entInfo.Nickname).(string)
configs["RobotAvator"] = tools.Ifelse(configs["RobotAvator"] != "", configs["RobotAvator"], entInfo.Avator).(string)
c.JSON(200, gin.H{
"code": types.ApiCode.SUCCESS,
"msg": types.ApiCode.GetMessage(types.ApiCode.SUCCESS),
"result": configs,
})
}
func SendEntEmail(c *gin.Context) {
ent_id := c.PostForm("ent_id")
email := c.PostForm("email")
weixin := c.PostForm("weixin")
msg := c.PostForm("msg")
name := c.PostForm("name")
if msg == "" || name == "" || ent_id == "" {
c.JSON(200, gin.H{
"code": 400,
"msg": "内容/姓名不能为空",
})
return
}
content := fmt.Sprintf("[%s] [%s] [%s] [%s]", name, weixin, email, msg)
go SendEntSmtpEmail("[留言]"+name, content, ent_id)
c.JSON(200, gin.H{
"code": 200,
"msg": "ok",
})
}
// 翻译
func GetTranslate(c *gin.Context) {
from := c.Query("from")
if from == "" {
from = "en"
}
to := c.Query("to")
if to == "" {
to = "zh"
}
words := c.Query("words")
baidu := &lib.BaiduFanyi{
AppId: models.FindConfig("BaiduFanyiAppId"),
AppSec: models.FindConfig("BaiduFanyiAppSec"),
}
res, err := baidu.Translate(words, from, to)
if err != nil {
}
c.JSON(200, gin.H{
"code": 200,
"msg": "ok",
"result": gin.H{
"from": from,
"to": to,
"src": words,
"dst": res,
},
})
}
// 翻译
func GetKefuTranslate(c *gin.Context) {
entId, _ := c.Get("ent_id")
from := c.Query("from")
if from == "" {
from = "auto"
}
to := c.Query("to")
if to == "" {
to = "zh"
}
lang := c.Query("lang")
if lang == "" {
lang = "中文"
}
words := c.Query("words")
configs := models.GetEntConfigsMap(entId.(string), "BaiduFanyiAppId", "BaiduFanyiAppSec", "FanyiSource", "chatGPTUrl", "chatGPTSecret", "BigModelName")
if configs["FanyiSource"] == "gpt" {
openaiUrl := configs["chatGPTUrl"]
openaiKey := configs["chatGPTSecret"]
gpt := lib.NewChatGptTool(openaiUrl, openaiKey)
gptMessages := make([]lib.Gpt3Dot5Message, 0)
gptMessages = append(gptMessages, lib.Gpt3Dot5Message{
Role: "system",
Content: "假设你是一个专业的翻译工具,请使用地道语言翻译,不用解释仅提供结果",
})
gptMessages = append(gptMessages, lib.Gpt3Dot5Message{
Role: "user",
Content: fmt.Sprintf("请将这句话翻译成%s%s", lang, words),
})
log.Println(gptMessages)
content, _ := gpt.ChatGPT3Dot5Turbo(gptMessages, configs["BigModelName"])
c.JSON(200, gin.H{
"code": 200,
"msg": "ok",
"result": gin.H{
"from": from,
"to": to,
"src": words,
"dst": content,
},
})
return
}
appId := configs["BaiduFanyiAppId"]
appSec := configs["BaiduFanyiAppSec"]
if appId == "" || appSec == "" {
appId = models.FindConfig("BaiduFanyiAppId")
appSec = models.FindConfig("BaiduFanyiAppSec")
}
baidu := &lib.BaiduFanyi{
AppId: appId,
AppSec: appSec,
}
res, err := baidu.Translate(words, from, to)
if err != nil {
}
c.JSON(200, gin.H{
"code": 200,
"msg": "ok",
"result": gin.H{
"from": from,
"to": to,
"src": words,
"dst": res,
},
})
}