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
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
|
|
}
|
|
}
|
|
|
|
}
|