You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

149 lines
3.0 KiB

package moment_copy
import (
"github.com/gin-gonic/gin"
"recook/configs"
"recook/internal/back"
"recook/internal/dbc"
"recook/internal/model/goods"
"recook/internal/model/live"
"recook/internal/model/user"
"recook/internal/v2/model/baiduapi"
"recook/tools"
"unicode/utf8"
)
type createMomentCopy struct {
UserID uint `json:"userId"`
GoodsID uint `json:"goodsId"`
Text string `json:"text"`
Images []image `json:"images"`
}
type image struct {
Path string `json:"path"`
Width uint `json:"width"`
Height uint `json:"height"`
}
func Create(c *gin.Context) {
var p createMomentCopy
err := tools.ParseParams(&p, c)
if err != nil {
back.Fail(c, err.Error())
return
}
if utf8.RuneCountInString(p.Text) > 200 {
back.Fail(c, "最多200个字")
return
}
if len(p.Images) == 0 {
back.Fail(c, "至少一张图片")
return
}
if len(p.Images) > 9 {
back.Fail(c, "最多9张图片")
return
}
var u user.Information
dbc.DB.First(&u, p.UserID)
var audId uint
var imageAud []string
tx := dbc.DB.Begin()
{
one := goods.MomentsCopy{
GoodsID: p.GoodsID,
Text: p.Text,
UserID: p.UserID,
HeadImgURL: u.HeadImgUrl,
Nickname: u.Nickname,
Reviewing: 1, // 默认提交为1 ,审核中
Compliance: 0,
}
err = tx.Create(&one).Error
if err != nil {
back.Err(c, err.Error())
tx.Rollback()
return
}
//新增
audId = one.ID
err = tx.Create(&live.UserTrend{
UserId: p.UserID,
OriginId: one.ID,
TrendType: live.TREND_TYPE_message,
}).Error
if err != nil {
back.Err(c, err.Error())
tx.Rollback()
return
}
for _, v := range p.Images {
if len(v.Path) == 0 {
back.Fail(c, "图片路径为空")
tx.Rollback()
return
}
imageAud = append(imageAud, configs.ConfigImageUrl+v.Path)
img := goods.MomentsCopyPhoto{
MomentsCopyID: one.ID,
URL: v.Path,
Width: v.Width,
Height: v.Height,
}
err = tx.Create(&img).Error
if err != nil {
back.Err(c, err.Error())
tx.Rollback()
return
}
}
var ut live.UserTrend
err = tx.Table(ut.TableName()).Where("trend_type=?", 1).Where("origin_id=?", one.ID).Update("is_show", 1).Error
if err != nil {
back.Err(c, err.Error())
tx.Rollback()
return
}
}
tx.Commit()
go textAndImage(p.Text, imageAud, audId)
back.Suc(c, "发布成功,请等待审核通过", nil)
}
//异步掉图文审核函数
func textAndImage(text string, image []string, id uint) {
//检测文字
b := baiduapi.BdAudit{}
textAudit := b.TextAudit(text)
if textAudit.Conclusion != "合规" {
var a = goods.MomentsCopy{
Compliance: 1,
Emg: textAudit.Data[0].Msg,
}
dbc.DB.Table(a.TableName()).Where("id=?", id).Updates(&a)
return
}
//检测图片列表
for _, v := range image {
imageAudit := b.ImageAudit(v)
if imageAudit.Conclusion != "合规" {
var a = goods.MomentsCopy{
Compliance: 1,
Emg: imageAudit.Data[0].Msg,
}
dbc.DB.Table(a.TableName()).Where("id=?", id).Updates(&a)
return
}
}
}