78 lines
2.0 KiB
Go
78 lines
2.0 KiB
Go
package tmpl
|
||
|
||
import (
|
||
"fmt"
|
||
"github.com/gin-gonic/gin"
|
||
"kefu/models"
|
||
"kefu/tools"
|
||
"kefu/types"
|
||
"time"
|
||
)
|
||
|
||
func PageWechatAuth(c *gin.Context) {
|
||
//获取微信用户消息
|
||
weixinCode := c.Query("code")
|
||
entId := models.FindConfig("SystemBussinesId")
|
||
if weixinCode == "" || entId == "" {
|
||
c.JSON(200, gin.H{
|
||
"msg": "请使用微信网页授权链接打开!",
|
||
})
|
||
return
|
||
|
||
}
|
||
userInfo, err := GetWechatUserInfo(weixinCode, entId)
|
||
if err != nil {
|
||
c.JSON(200, gin.H{
|
||
"msg": "微信网页授权失败!",
|
||
"result": err.Error(),
|
||
})
|
||
return
|
||
}
|
||
password := "123456"
|
||
kefuName := userInfo.OpenID
|
||
avator := userInfo.HeadImgURL
|
||
nickname := userInfo.Nickname
|
||
kefuInfo := models.FindUser(kefuName)
|
||
if kefuInfo.ID == 0 {
|
||
dd, _ := time.ParseDuration("180h")
|
||
dd1 := time.Now().Add(dd)
|
||
kefuInfo = models.User{
|
||
Name: kefuName,
|
||
Password: tools.Md5(password),
|
||
Nickname: nickname,
|
||
Avator: avator,
|
||
Pid: 1,
|
||
RecNum: 0,
|
||
AgentNum: 0,
|
||
Status: 0,
|
||
OnlineStatus: 1,
|
||
ExpiredAt: types.Time{dd1},
|
||
}
|
||
uid, err := kefuInfo.AddUser()
|
||
if uid == 0 && err != nil {
|
||
c.JSON(200, gin.H{
|
||
"code": 400,
|
||
"msg": fmt.Sprintf("增加用户失败:%s", err.Error()),
|
||
"result": "",
|
||
})
|
||
return
|
||
}
|
||
models.CreateUserRole(uid, 2)
|
||
|
||
logContent := fmt.Sprintf("微信授权新增用户'%s',昵称:'%s',成功", kefuName, nickname)
|
||
|
||
smtp := models.FindConfig("NoticeEmailSmtp")
|
||
sender := models.FindConfig("NoticeEmailAddress")
|
||
password := models.FindConfig("NoticeEmailPassword")
|
||
if smtp != "" && sender != "" && password != "" {
|
||
content := fmt.Sprintf("账户:%s,昵称:%s,注册成功", kefuName, nickname)
|
||
go tools.SendSmtp(smtp, sender, password, []string{sender}, "在线客服系统注册成功", content)
|
||
}
|
||
|
||
go models.CreateFlyLog(tools.Int2Str(uid), c.ClientIP(), logContent, "user")
|
||
}
|
||
|
||
token := GenUserToken(kefuInfo)
|
||
c.Redirect(301, "/sso?token="+token+"&redirect=/h5")
|
||
}
|