|
|
package vend
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
"recook/internal/back"
|
|
|
"recook/internal/dbc"
|
|
|
"recook/internal/model/goods"
|
|
|
"recook/internal/model/manage"
|
|
|
"recook/internal/model/vend"
|
|
|
"recook/tools"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
)
|
|
|
|
|
|
type queryListParam struct {
|
|
|
Page int64 `json:"page" validate:"numeric"`
|
|
|
IsPage int64 `json:"isPage" validate:"numeric"`
|
|
|
Limit int64 `json:"limit" validator:"required"`
|
|
|
VendName string `json:"vendName"`
|
|
|
GysCode string `json:"gysCode"`
|
|
|
Status int `json:"status"`
|
|
|
StartDate string `json:"startDate"`
|
|
|
EndDate string `json:"endDate"`
|
|
|
}
|
|
|
type changeCode struct {
|
|
|
ID int `json:"id"`
|
|
|
Code string `json:"code"`
|
|
|
}
|
|
|
|
|
|
type gysUserState struct {
|
|
|
vend.GysUsers
|
|
|
StateId uint `json:"-"`
|
|
|
}
|
|
|
|
|
|
func QueryVendList(c *gin.Context) {
|
|
|
// 采购根据权限获取供应商
|
|
|
var userId = c.MustGet("Manager_ID").(uint)
|
|
|
var user manage.UserInfo
|
|
|
var enter []vend.GysEnterpriseBrand
|
|
|
var gysID []uint
|
|
|
user.ID = userId
|
|
|
if err := dbc.DB.Find(&user).Error; err != nil {
|
|
|
back.Fail(c, "数据错误:"+err.Error())
|
|
|
return
|
|
|
}
|
|
|
|
|
|
// 每页显示数据条数
|
|
|
var q queryListParam
|
|
|
err := tools.Params(&q, c)
|
|
|
//筛选条件
|
|
|
whereSelect := ""
|
|
|
whereValues := []interface{}{}
|
|
|
if user.NewroleId == 9 {
|
|
|
vendsIds := []string{}
|
|
|
categoryIDSArr := strings.Split(user.GoodsType, ",")
|
|
|
|
|
|
//根据Category名获取对应user_id
|
|
|
dbc.DB.Select("distinct user_id").Find(&enter, "category_id in (?)", categoryIDSArr)
|
|
|
// 无匹配记录时
|
|
|
if len(enter) == 0 {
|
|
|
if q.IsPage == 1 {
|
|
|
back.Suc(c, "", &BaseResponse{
|
|
|
List: []vend.GysUsers{},
|
|
|
Total: 0,
|
|
|
})
|
|
|
} else {
|
|
|
back.Suc(c, "", &[]vend.GysUsers{})
|
|
|
}
|
|
|
return
|
|
|
} else {
|
|
|
for _, item := range enter {
|
|
|
gysID = append(gysID, item.UserID)
|
|
|
}
|
|
|
whereSelect = " and gys_users.id in (?)"
|
|
|
whereValues = append(whereValues, gysID)
|
|
|
}
|
|
|
vendsIds = strings.Split(user.VendsList, ",")
|
|
|
|
|
|
if len(vendsIds) > 0 {
|
|
|
whereSelect = whereSelect + " and (is_interior = 0 or (is_interior = 1 and gys_users.id in (?)))"
|
|
|
whereValues = append(whereValues, vendsIds)
|
|
|
} else {
|
|
|
whereSelect = whereSelect + " and is_interior = 0"
|
|
|
}
|
|
|
}
|
|
|
if err != nil {
|
|
|
back.Fail(c, err.Error())
|
|
|
return
|
|
|
}
|
|
|
var list []gysUserState
|
|
|
count := 0
|
|
|
|
|
|
if len(q.VendName) > 0 {
|
|
|
whereSelect = whereSelect + " and gys_users.username like ?"
|
|
|
// 注:fmt.sprintf 会把%% 转换为 %
|
|
|
whereValues = append(whereValues, fmt.Sprintf("%%%s%%", q.VendName))
|
|
|
}
|
|
|
if len(q.GysCode) > 0 {
|
|
|
whereSelect = whereSelect + " and gys_users.gys_code = ?"
|
|
|
whereValues = append(whereValues, q.GysCode)
|
|
|
}
|
|
|
if q.Status > 0 {
|
|
|
whereSelect = whereSelect + " and gys_enterprise_state.state = ?"
|
|
|
whereValues = append(whereValues, q.Status)
|
|
|
}
|
|
|
if q.IsPage == 1 {
|
|
|
if len(whereValues) > 0 {
|
|
|
dbc.DB.Table("gys_users").Select("gys_users.*,gys_enterprise_state.id as state_id").Joins("left join gys_enterprise_state on gys_users.id = gys_enterprise_state.user_id").
|
|
|
Where("gys_users.id != 2 and gys_users.main_id = 0").Where(whereSelect[4:], whereValues...).Limit(q.Limit).Offset(q.Page * q.Limit).Find(&list)
|
|
|
dbc.DB.Table("gys_users").Select("gys_users.*").Joins("left join gys_enterprise_state on gys_users.id = gys_enterprise_state.user_id").
|
|
|
Where("gys_users.id != 2 and gys_users.main_id = 0").Where(whereSelect[4:], whereValues...).Count(&count)
|
|
|
} else {
|
|
|
dbc.DB.Table("gys_users").Select("gys_users.*,gys_enterprise_state.id as state_id").Joins("left join gys_enterprise_state on gys_users.id = gys_enterprise_state.user_id").
|
|
|
Where("gys_users.id != 2 and gys_users.main_id = 0").Limit(q.Limit).Offset(q.Page * q.Limit).Find(&list)
|
|
|
dbc.DB.Table("gys_users").Select("gys_users.*").Joins("left join gys_enterprise_state on gys_users.id = gys_enterprise_state.user_id").
|
|
|
Where("gys_users.id != 2 and gys_users.main_id = 0").Count(&count)
|
|
|
}
|
|
|
} else {
|
|
|
if len(whereValues) > 0 {
|
|
|
dbc.DB.Table("gys_users").Select("gys_users.*,gys_enterprise_state.id as state_id").Joins("left join gys_enterprise_state on gys_users.id = gys_enterprise_state.user_id").
|
|
|
Where("gys_users.id != 2 and gys_users.main_id = 0 and gys_users.status = 0").Where(whereSelect[4:], whereValues...).Find(&list)
|
|
|
} else {
|
|
|
dbc.DB.Table("gys_users").Select("gys_users.*,gys_enterprise_state.id as state_id").Joins("left join gys_enterprise_state on gys_users.id = gys_enterprise_state.user_id").
|
|
|
Where("gys_users.id != 2 and gys_users.main_id = 0 and gys_users.status = 0").Find(&list)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
stateIds := []uint{}
|
|
|
for _, state := range list {
|
|
|
stateIds = append(stateIds, state.StateId)
|
|
|
}
|
|
|
|
|
|
gysEnterpriseStates := []vend.GysEnterpriseState{}
|
|
|
dbc.DB.Table("gys_enterprise_state").Where("id in (?)", stateIds).Find(&gysEnterpriseStates)
|
|
|
gysEnterpriseStateMap := map[uint]vend.GysEnterpriseState{}
|
|
|
for _, state := range gysEnterpriseStates {
|
|
|
gysEnterpriseStateMap[state.ID] = state
|
|
|
}
|
|
|
|
|
|
newList := []gysUserState{}
|
|
|
for key, info := range list {
|
|
|
str := ""
|
|
|
infoE := gysEnterpriseStateMap[info.StateId]
|
|
|
str, infoE = getEn("", infoE)
|
|
|
list[key].EnterpriseStateUp = infoE
|
|
|
if q.IsPage != 1 {
|
|
|
if infoE.State != "2" {
|
|
|
continue
|
|
|
}
|
|
|
}
|
|
|
list[key].EnterpriseState = infoE
|
|
|
list[key].Name = infoE.EnterpriseName
|
|
|
list[key].StateStr = str
|
|
|
|
|
|
newList = append(newList, list[key])
|
|
|
}
|
|
|
if q.IsPage == 1 {
|
|
|
back.Suc(c, "", &BaseResponse{
|
|
|
List: newList,
|
|
|
Total: count,
|
|
|
})
|
|
|
} else {
|
|
|
back.Suc(c, "", newList)
|
|
|
}
|
|
|
// http.Suc(c, "", &BaseResponse{
|
|
|
// List: newList,
|
|
|
// Total: count,
|
|
|
// })
|
|
|
}
|
|
|
|
|
|
type vendUsers struct {
|
|
|
ID uint `gorm:"column:id;primary_key" json:"id"`
|
|
|
Username string `gorm:"username" json:"username"`
|
|
|
EnterpriseName string `gorm:"enterprise_name" json:"enterpriseName"`
|
|
|
}
|
|
|
|
|
|
type argsVend struct {
|
|
|
IsVerify uint `json:"isVerify" form:"isVerify"`
|
|
|
}
|
|
|
|
|
|
// @Style 供应商列表
|
|
|
func Vend(c *gin.Context) {
|
|
|
args := argsVend{}
|
|
|
err := tools.Params(&args, c)
|
|
|
if err != nil {
|
|
|
back.Fail(c, err.Error())
|
|
|
return
|
|
|
}
|
|
|
gysUsers := []vendUsers{}
|
|
|
if args.IsVerify == 1 {
|
|
|
// 采购根据权限获取供应商
|
|
|
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
|
|
|
}
|
|
|
// 不是超级管理员
|
|
|
if user.RoleID != 1 {
|
|
|
dbc.DB.Table((&vend.GysUsers{}).TableName()+" gysuser").Joins(fmt.Sprintf("join %s state on gysuser.id = state.user_id", (&vend.GysEnterpriseState{}).TableName())).Where("gysuser.main_id = 0 and gysuser.id in (?)", strings.Split(user.VendsList, ",")).Select("gysuser.id,username,enterprise_name").Find(&gysUsers)
|
|
|
} else {
|
|
|
dbc.DB.Table((&vend.GysUsers{}).TableName() + " gysuser").Joins(fmt.Sprintf("join %s state on gysuser.id = state.user_id", (&vend.GysEnterpriseState{}).TableName())).Select("gysuser.id,username,enterprise_name").Where("gysuser.main_id = 0").Find(&gysUsers)
|
|
|
}
|
|
|
} else {
|
|
|
dbc.DB.Table((&vend.GysUsers{}).TableName() + " gysuser").Joins(fmt.Sprintf("join %s state on gysuser.id = state.user_id", (&vend.GysEnterpriseState{}).TableName())).Where("gysuser.main_id = 0").Select("gysuser.id,username,enterprise_name").Find(&gysUsers)
|
|
|
}
|
|
|
back.Suc(c, "操作成功", gysUsers)
|
|
|
}
|
|
|
|
|
|
type argsVendRole struct {
|
|
|
UserId uint `json:"userId" form:"userId"`
|
|
|
}
|
|
|
|
|
|
type vendRoleUsers struct {
|
|
|
vendUsers
|
|
|
Enable int `json:"enable"`
|
|
|
}
|
|
|
|
|
|
// @Style 有权限的供应商列表
|
|
|
func VendRole(c *gin.Context) {
|
|
|
args := argsVendRole{}
|
|
|
err := tools.Params(&args, c)
|
|
|
if err != nil {
|
|
|
back.Fail(c, err.Error())
|
|
|
return
|
|
|
}
|
|
|
if args.UserId <= 0 {
|
|
|
back.Fail(c, "参数错误")
|
|
|
return
|
|
|
}
|
|
|
var user manage.UserInfo
|
|
|
user.ID = args.UserId
|
|
|
if err := dbc.DB.Find(&user).Error; err != nil {
|
|
|
back.Fail(c, "数据错误:"+err.Error())
|
|
|
return
|
|
|
}
|
|
|
vendList := strings.Split(user.VendsList, ",")
|
|
|
vendIdsMap := map[uint]int{}
|
|
|
for _, vendIdStr := range vendList {
|
|
|
vendId, _ := strconv.ParseUint(vendIdStr, 10, 64)
|
|
|
vendIdsMap[uint(vendId)] = 1
|
|
|
}
|
|
|
gysUsers := []vendUsers{}
|
|
|
result := []vendRoleUsers{}
|
|
|
|
|
|
dbc.DB.Table((&vend.GysUsers{}).TableName()).Select("id,username").Where("is_interior = 1").Find(&gysUsers)
|
|
|
|
|
|
for _, gysUser := range gysUsers {
|
|
|
result = append(result, vendRoleUsers{
|
|
|
vendUsers: gysUser,
|
|
|
Enable: vendIdsMap[gysUser.ID],
|
|
|
})
|
|
|
}
|
|
|
back.Suc(c, "操作成功", &result)
|
|
|
}
|
|
|
|
|
|
func getEn(str string, infoE vend.GysEnterpriseState) (string, vend.GysEnterpriseState) {
|
|
|
|
|
|
if str == "" {
|
|
|
if infoE.ID > 0 {
|
|
|
if infoE.State == "2" {
|
|
|
str = "审核通过"
|
|
|
}
|
|
|
if infoE.State == "3" {
|
|
|
str = "审核未通过"
|
|
|
}
|
|
|
if infoE.State == "1" {
|
|
|
str = "待审核"
|
|
|
}
|
|
|
} else {
|
|
|
str = "未提交资质"
|
|
|
}
|
|
|
}
|
|
|
|
|
|
var brand []vend.GysEnterpriseBrand
|
|
|
dbc.DB.Where("enterprise_id = ?", infoE.ID).Find(&brand)
|
|
|
|
|
|
infoE.BrandList = BrandListCommon(brand)
|
|
|
var sector []vend.GysEnterpriseSector
|
|
|
dbc.DB.Where("enterprise_id = ?", infoE.ID).Find(§or)
|
|
|
infoE.SectorList = sector
|
|
|
return str, infoE
|
|
|
}
|
|
|
|
|
|
type brandListParam struct {
|
|
|
UserId string `json:"UserId" validator:"required"`
|
|
|
}
|
|
|
|
|
|
func BrandList(c *gin.Context) {
|
|
|
var p brandListParam
|
|
|
err := tools.Params(&p, c)
|
|
|
if err != nil {
|
|
|
back.Fail(c, err.Error())
|
|
|
return
|
|
|
}
|
|
|
if len(p.UserId) == 0 {
|
|
|
back.Fail(c, "服务器异常请联系管理员")
|
|
|
return
|
|
|
}
|
|
|
var infoE vend.GysEnterpriseState
|
|
|
dbc.DB.Where("user_id = ? and state = 2", p.UserId).Order("id DESC").First(&infoE)
|
|
|
|
|
|
var brandList []vend.GysEnterpriseBrand
|
|
|
dbc.DB.Where("enterprise_id in(?,1) and user_id = ?", infoE.ID, p.UserId).Find(&brandList)
|
|
|
count := 0
|
|
|
dbc.DB.Table("gys_enterprise_brand").Where("enterprise_id in(?,1) and user_id = ?", infoE.ID, p.UserId).Count(&count)
|
|
|
back.Suc(c, "", &BaseResponse{
|
|
|
List: BrandListCommon(brandList),
|
|
|
Total: count,
|
|
|
})
|
|
|
}
|
|
|
|
|
|
type BaseResponse struct {
|
|
|
List interface{} `json:"data"`
|
|
|
Total int `json:"total"`
|
|
|
}
|
|
|
|
|
|
func BrandListCommon(brand []vend.GysEnterpriseBrand) []vend.GysEnterpriseBrand {
|
|
|
for key, brandInfo := range brand {
|
|
|
var sbimg []vend.GysEnterpriseImg
|
|
|
dbc.DB.Where("brand_id = ? and type = 1", brandInfo.ID).Find(&sbimg)
|
|
|
brand[key].SbImg = sbimg
|
|
|
|
|
|
var ppimg []vend.GysEnterpriseImg
|
|
|
dbc.DB.Where("brand_id=? and type = 2", brandInfo.ID).Find(&ppimg)
|
|
|
brand[key].PpImg = ppimg
|
|
|
|
|
|
var qtimg []vend.GysEnterpriseImg
|
|
|
dbc.DB.Where("brand_id=? and type = 3", brandInfo.ID).Find(&qtimg)
|
|
|
brand[key].QtImg = qtimg
|
|
|
|
|
|
var special []vend.GysEnterpriseSpecial
|
|
|
dbc.DB.Where("brand_id = ?", brandInfo.ID).Find(&special)
|
|
|
brand[key].Special = special
|
|
|
|
|
|
_brandInfo := goods.Brand{}
|
|
|
dbc.DB.Where("name = ?", brandInfo.Name).First(&_brandInfo)
|
|
|
if _brandInfo.ID > 0 {
|
|
|
brand[key].IsThis = true
|
|
|
} else {
|
|
|
brand[key].IsThis = false
|
|
|
}
|
|
|
}
|
|
|
return brand
|
|
|
}
|
|
|
|
|
|
//更新供应商编号
|
|
|
func ChangeVendCode(c *gin.Context) {
|
|
|
var code changeCode
|
|
|
err := tools.Params(&code, c)
|
|
|
if err != nil {
|
|
|
back.Fail(c, err.Error())
|
|
|
return
|
|
|
}
|
|
|
var gysUser vend.GysUsers
|
|
|
dbc.DB.First(&gysUser, "id =?", code.ID)
|
|
|
err = dbc.DB.Model(&gysUser).Update(&vend.GysUsers{GysCode: code.Code}).Error
|
|
|
if err != nil {
|
|
|
fmt.Println(err.Error())
|
|
|
back.Fail(c, "更新失败")
|
|
|
return
|
|
|
}
|
|
|
back.Suc(c, "更新成功", nil)
|
|
|
return
|
|
|
}
|