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.

400 lines
9.1 KiB

4 years ago
package vend
import (
"fmt"
"github.com/gin-gonic/gin"
"github.com/golangkit/formatime"
"recook/internal/api/manage/gys/logic"
"recook/internal/back"
"recook/internal/dbc"
"recook/internal/model/goods"
"recook/internal/model/manage"
"recook/internal/model/vend"
"recook/tools"
)
type yesVendParam struct {
UserId string `json:"UserId" validator:"required"`
BrandList []BrandList2 `json:"BrandList" `
}
type BrandList2 struct {
ID int64 `json:"id"`
Brand Brand `json:"brand"`
}
type Brand struct {
ID uint `json:"id"`
Name string `json:"name"`
Desc string `json:"desc"`
Web string `json:"web"`
GoodsCount int64 `json:"goodsCount"`
LogoURL string `json:"logoUrl"`
AuthURL string `json:"authUrl"`
ShowURL string `json:"showUrl"`
Key int64 `json:"key"`
}
func YesVend(c *gin.Context) {
var p yesVendParam
err := tools.Params(&p, c)
if err != nil {
back.Fail(c, err.Error())
return
}
if len(p.UserId) == 0 {
back.Fail(c, "服务器异常请联系管理员")
return
}
var userId = c.MustGet("Manager_ID").(uint)
var user manage.UserInfo
user.ID = userId
if err = dbc.DB.Find(&user).Error; err != nil {
back.Fail(c, "数据错误:"+err.Error())
return
}
tx := dbc.DB.Begin()
infoE := vend.GysEnterpriseState{}
dbc.DB.Where("user_id = ?", p.UserId).Order("id DESC").First(&infoE)
if infoE.ID == 0 {
tx.Rollback()
back.Fail(c, "没有可审核信息")
return
}
//infoE.State = "2"
//infoE.AdminUser = user.name
//infoE.AdminID = user.ID
//infoE.AdminDate = formatime.NewSecondNow()
if infoE.State == "1" {
if err = tx.Table("gys_auth_group_access").Create(&vend.GysAuthGroupAccess{
Uid: p.UserId,
GroupID: 2,
}).Error; err != nil {
tx.Rollback()
back.Fail(c, "权限组"+err.Error())
return
}
}
if err = tx.Table("gys_enterprise_state").Where("id = ?", infoE.ID).Update(&vend.GysEnterpriseState{
State: "2",
AdminUser: user.Name,
AdminID: user.ID,
AdminDate: formatime.NewSecondNow(),
}).Error; err != nil {
tx.Rollback()
back.Fail(c, "状态"+err.Error())
return
}
insertVendMap := map[string]goods.Brand{}
for _, _info := range p.BrandList {
brandInfo := goods.Brand{}
dbc.DB.Where("name = ?", _info.Brand.Name).Find(&brandInfo)
vendBrandInfo := vend.GysEnterpriseBrand{}
vendBrandInfo.ID = _info.Brand.ID
dbc.DB.Find(&vendBrandInfo)
if brandInfo.ID == 0 {
brandInfo = insertVendMap[vendBrandInfo.Name]
if brandInfo.ID == 0 {
brandInfo = goods.Brand{
Name: vendBrandInfo.Name,
LogoURL: vendBrandInfo.Log,
InfoId: vendBrandInfo.ID,
}
err = tx.Create(&brandInfo).Error
if err != nil {
tx.Rollback()
back.Fail(c, "品牌"+err.Error())
return
}
insertVendMap[vendBrandInfo.Name] = brandInfo
}
} else {
brandInfo.LogoURL = vendBrandInfo.Log
brandInfo.InfoId = vendBrandInfo.ID
err = dbc.DB.Save(&brandInfo).Error
if err != nil {
tx.Rollback()
back.Fail(c, err.Error())
return
}
}
if err = tx.Table("gys_enterprise_brand").Where("enterprise_id = ? and id=?", infoE.ID, vendBrandInfo.ID).Update(&vend.GysEnterpriseBrand{
State: "2",
AdminUser: user.Name,
AdminID: user.ID,
AdminDate: formatime.NewSecondNow(),
MainID: brandInfo.ID,
}).Error; err != nil {
tx.Rollback()
back.Fail(c, err.Error())
return
}
}
tx.Commit()
back.Suc(c, "操作成功", p)
return
}
type brandYesParam struct {
Id string `json:"id" validator:"required"`
BrandID string `json:"brand_id"`
}
func BrandYes(c *gin.Context) {
var p brandYesParam
err := tools.Params(&p, c)
if err != nil {
back.Fail(c, err.Error())
return
}
var userId = c.MustGet("Manager_ID").(uint)
var user manage.UserInfo
user.ID = userId
if err = dbc.DB.Find(&user).Error; err != nil {
back.Fail(c, "数据错误:"+err.Error())
return
}
tx := dbc.DB.Begin()
vendBrandInfo := vend.GysEnterpriseBrand{}
dbc.DB.Where("id = ? ", p.Id).Find(&vendBrandInfo)
brandInfo := goods.Brand{}
dbc.DB.Where("name = ?", vendBrandInfo.Name).Find(&brandInfo)
if brandInfo.ID == 0 {
brandInfo = goods.Brand{
Name: vendBrandInfo.Name,
LogoURL: vendBrandInfo.Log,
InfoId: vendBrandInfo.ID,
}
err = tx.Create(&brandInfo).Error
if err != nil {
back.Fail(c, err.Error())
return
}
} else {
brandInfo.LogoURL = vendBrandInfo.Log
brandInfo.InfoId = vendBrandInfo.ID
err = dbc.DB.Save(&brandInfo).Error
if err != nil {
back.Fail(c, err.Error())
return
}
}
if err = tx.Table("gys_enterprise_brand").Where("id = ?", p.Id).Update(&vend.GysEnterpriseBrand{
State: "2",
AdminUser: user.Name,
AdminID: user.ID,
AdminDate: formatime.NewSecondNow(),
MainID: brandInfo.ID,
}).Error; err != nil {
back.Fail(c, err.Error())
return
}
tx.Commit()
back.Suc(c, "操作成功", p)
return
}
type brandNoParam struct {
Id string `json:"id" validator:"required"`
Detail string `json:"detail"`
}
func BrandNo(c *gin.Context) {
var p brandNoParam
err := tools.Params(&p, c)
if err != nil {
back.Fail(c, err.Error())
return
}
var userId = c.MustGet("Manager_ID").(uint)
var user manage.UserInfo
user.ID = userId
if err = dbc.DB.Find(&user).Error; err != nil {
back.Fail(c, "数据错误:"+err.Error())
return
}
tx := dbc.DB.Begin()
if err = tx.Table("gys_enterprise_brand").Where("id = ?", p.Id).Update(&vend.GysEnterpriseBrand{
State: "3",
StateInfo: p.Detail,
AdminUser: user.Name,
AdminID: user.ID,
AdminDate: formatime.NewSecondNow(),
}).Error; err != nil {
back.Fail(c, err.Error())
return
}
tx.Commit()
back.Suc(c, "操作成功", p)
return
}
type noVendParam struct {
UserId string `json:"UserId" validator:"required"`
Detail string `json:"detail"`
}
func NoVend(c *gin.Context) {
var p noVendParam
err := tools.Params(&p, c)
if err != nil {
back.Fail(c, err.Error())
return
}
if len(p.UserId) == 0 {
back.Fail(c, "服务器异常请联系管理员")
return
}
var userId = c.MustGet("Manager_ID").(uint)
var user manage.UserInfo
user.ID = userId
if err = dbc.DB.Find(&user).Error; err != nil {
back.Fail(c, "数据错误:"+err.Error())
return
}
tx := dbc.DB.Begin()
infoE := vend.GysEnterpriseState{}
dbc.DB.Where("user_id = ?", p.UserId).Order("id DESC").First(&infoE)
if infoE.ID == 0 {
back.Fail(c, "没有可审核信息")
return
}
//infoE.State = "2"
//infoE.AdminUser = user.name
//infoE.AdminID = user.ID
//infoE.AdminDate = formatime.NewSecondNow()
if err = tx.Table("gys_enterprise_state").Where("id = ?", infoE.ID).Update(&vend.GysEnterpriseState{
State: "3",
StateInfo: p.Detail,
AdminUser: user.Name,
AdminID: user.ID,
AdminDate: formatime.NewSecondNow(),
}).Error; err != nil {
back.Fail(c, err.Error())
return
}
if err = tx.Table("gys_enterprise_brand").Where("enterprise_id = ?", infoE.ID).Update(&vend.GysEnterpriseBrand{
State: "3",
StateInfo: p.Detail,
AdminUser: user.Name,
AdminID: user.ID,
AdminDate: formatime.NewSecondNow(),
}).Error; err != nil {
back.Fail(c, err.Error())
return
}
tx.Commit()
back.Suc(c, "操作成功", p)
return
}
type argsUpdate struct {
BrandId uint `json:"brandId" form:"brandId"`
logic.BrandItem
}
// @Style 修改品牌信息
func BrandUpdate(c *gin.Context) {
// 参数获取
args := argsUpdate{}
err := tools.Params(&args, c)
if err != nil {
back.Fail(c, err.Error())
return
}
info := &vend.GysEnterpriseBrand{ID: args.BrandId}
if err := dbc.DB.First(&info).Error; err != nil {
back.Fail(c, "数据错误")
return
}
args.BrandItem.Name = info.Name
args.BrandItem.Category = fmt.Sprintf("%s,%s", info.Category, info.CategoryId)
data := []logic.BrandItem{args.BrandItem}
if err = logic.BrandLogic.VerfiyBrand(&data); err != nil {
back.Fail(c, err.Error())
return
}
db := dbc.DB.Begin()
defer func() {
if r := recover(); r != nil {
db.Rollback()
back.Fail(c, "网络异常")
} else if err != nil {
db.Rollback()
} else {
db.Commit()
}
}()
err = logic.BrandLogic.HandBrand(args.BrandId, info.UserID, data, 1, "", db)
if err != nil {
back.Fail(c, err.Error())
return
}
back.Suc(c, "操作成功", nil)
}
type argsInterior struct {
VendId uint `json:"vendId" form:"vendId"`
}
// @Style 设置为需要单独显示权限的内部账号
func Interior(c *gin.Context) {
args := argsInterior{}
err := tools.Params(&args, c)
if err != nil {
back.Fail(c, err.Error())
return
}
if args.VendId <= 0 {
back.Fail(c, "参数错误")
return
}
vendUser := vend.GysUsers{
ID: args.VendId,
}
if dbc.DB.Model(&vendUser).Update("is_interior", 1).Error != nil {
back.Fail(c, "网络异常")
return
}
back.Suc(c, "操作成功", "")
return
}
// @Style 取消需要单独显示权限的内部账号权限
func CancelInterior(c *gin.Context) {
args := argsInterior{}
err := tools.Params(&args, c)
if err != nil {
back.Fail(c, err.Error())
return
}
if args.VendId <= 0 {
back.Fail(c, "参数错误")
return
}
vendUser := vend.GysUsers{
ID: args.VendId,
}
if dbc.DB.Model(&vendUser).Update("is_interior", 0).Error != nil {
back.Fail(c, "网络异常")
return
}
back.Suc(c, "操作成功", "")
return
}