fonchain-fiee/pkg/service/artistInfo/asArtshow/artshow.go

247 lines
8.8 KiB
Go
Raw Normal View History

2025-02-19 06:24:15 +00:00
package asArtshow
import (
"dubbo.apache.org/dubbo-go/v3/common/logger"
"encoding/json"
"fmt"
"github.com/fonchain_enterprise/fonchain-main/api/artistInfoUser"
"github.com/fonchain_enterprise/fonchain-main/pkg/common"
"github.com/fonchain_enterprise/fonchain-main/pkg/model"
"github.com/fonchain_enterprise/fonchain-main/pkg/service/artistInfo/asUser"
"golang.org/x/net/context"
"strconv"
"time"
"github.com/fonchain_enterprise/fonchain-main/api/artistinfoArtshow"
"github.com/fonchain_enterprise/fonchain-main/pkg/e"
"github.com/fonchain_enterprise/fonchain-main/pkg/service"
"github.com/gin-gonic/gin"
"github.com/jinzhu/copier"
)
func ArtshowHistoryGroup(c *gin.Context) {
var req = artistinfoArtshow.GetArtshowHistroyListRequest{}
if err := c.ShouldBindJSON(&req); err != nil {
service.Error(c, e.InvalidParams, err, err.Error())
return
}
if req.ArtistUid == "" {
userInfo, err, code := asUser.GetUserInfoWithToken(c)
if err != nil {
service.Error(c, code, err, err.Error())
return
}
req.ArtistUid = userInfo.MgmtArtistUid
}
res, err := service.GrpcArtistInfoArtshowImpl.GetArtshowHistroyList(c, &req)
if err != nil {
service.ErrorWithMark(c, e.Failed, err, "GrpcArtshowImpl.GetArtshowHistroyList Error", "查询错误")
}
if req.PageSize == -1 {
req.PageSize = int64(len(res.Data))
}
fmt.Printf("%+v\n", res.Data)
var returnData = []*TimeGroup{}
if err = copier.Copy(&returnData, res.Data); err != nil {
service.ErrorWithMark(c, e.Failed, err, "ArtshowHistoryGroup:copier.Copy Error", "查询错误")
}
//优化空指针
for i, v := range returnData {
if v.ArtistIndexList == nil {
returnData[i].ArtistIndexList = []*ArtistIndexData{}
}
if v.ArtistSupplementList == nil {
returnData[i].ArtistSupplementList = []*ArtistSupplementData{}
}
if v.ArtistVideoList == nil {
returnData[i].ArtistVideoList = []*ArtistVideoData{}
}
if v.ArtworkSupplementList == nil {
returnData[i].ArtworkSupplementList = []*ArtworkSupplementData{}
}
}
service.ResponseList(c, returnData, service.OptionPage(req.Page, req.PageSize, len(res.Data)))
}
func UpdateRecomend(c *gin.Context) {
var req artistInfoUser.UpdateRecommendReq
if err := c.ShouldBindJSON(&req); err != nil {
service.Error(c, e.InvalidParams, err, err.Error())
return
}
resp, err := service.GrpcArtistInfoUserImpl.UpdateRecommend(context.Background(), &req)
if err != nil {
service.ResponseQuickMsg(c, e.Failed, err.Error(), nil)
return
}
service.ResponseQuickMsg(c, e.Ok, resp.Msg, nil)
return
}
func ArtshowList(c *gin.Context) {
var err error
var req = artistInfoUser.ArtshowListReq{}
if err := c.ShouldBindJSON(&req); err != nil {
service.Error(c, e.InvalidParams, err, err.Error())
return
}
var resp *artistInfoUser.ArtshowListResp
resp, err = service.GrpcArtistInfoUserImpl.ArtshowList(context.Background(), &req)
if err != nil {
service.ResponseQuickMsg(c, e.Failed, err.Error(), nil)
return
}
// 遍历画家artistUuids
var artistUuids []string
for _, v := range resp.Data {
if v.ArtistUuid != "" {
artistUuids = append(artistUuids, v.ArtistUuid)
}
}
artistUuids = common.DistinctSliceString(artistUuids)
if len(artistUuids) == 0 {
service.ResponseQuickMsg(c, e.Failed, "没有画家信息", nil)
return
}
var findUsersReq artistInfoUser.FindUsersRequest
findUsersReq.Page = 1
findUsersReq.PageSize = 999
findUsersReq.MgmtArtistUids = artistUuids
// 批量查询画家信息
findUsersResp, errS := service.GrpcArtistInfoUserImpl.FindUsersUserView(context.Background(), &findUsersReq)
if errS != nil {
service.ResponseQuickMsg(c, e.Failed, errS.Error(), nil)
return
}
var artistSupperMap map[string]map[string]map[string]interface{}
artistSupperMap = map[string]map[string]map[string]interface{}{}
//查询推荐人信息和画展补充发起时间
for _, artistUuid := range artistUuids {
var artshowReq artistinfoArtshow.GetBrokerSupplementListRequest
artshowReq.ArtistUid = artistUuid
artshowReq.Page = 1
artshowReq.PageSize = 999
artshowResp, errs := service.GrpcArtistInfoArtshowImpl.GetBrokerSupplementList(context.Background(), &artshowReq)
if errs != nil {
service.ResponseQuickMsg(c, e.Failed, errs.Error(), nil)
return
}
// 查询每个画家、画展包的绑定信息
for _, v := range artshowResp.List {
if artistSupperMap[v.ArtistUid] == nil {
artistSupperMap[v.ArtistUid] = map[string]map[string]interface{}{}
}
if artistSupperMap[v.ArtistUid][v.ArtPackageUid] == nil {
artistSupperMap[v.ArtistUid][v.ArtPackageUid] = map[string]interface{}{}
}
artistSupperMap[v.ArtistUid][v.ArtPackageUid]["artshow_ext_time"] = v.CreatedAt
artistSupperMap[v.ArtistUid][v.ArtPackageUid]["recomment_id"] = fmt.Sprintf("%v", v.BrokerId)
artistSupperMap[v.ArtistUid][v.ArtPackageUid]["recomment_name"] = fmt.Sprintf("%v", v.BrokerName)
}
}
// 组装画家信息
var findUsersInfo map[string]map[string]interface{}
findUsersInfo = map[string]map[string]interface{}{}
var artistInvite map[string][]*artistInfoUser.ArtshowListResp_Info_InviteInfo
artistInvite = map[string][]*artistInfoUser.ArtshowListResp_Info_InviteInfo{}
for _, v := range findUsersResp.Data {
var temp map[string]interface{}
temp = map[string]interface{}{}
temp["sex"] = v.Sex
temp["age"] = v.Age
temp["phone"] = v.TelNum
temp["name"] = v.RealName
temp["invite_code"] = v.InviteCode
// 根据邀请码查询画家的邀请人信息
inviterList, errs := service.GrpcArtistInfoUserImpl.GetInviterUserList(context.Background(), &artistInfoUser.GetInviterUserListRequest{
InvitedCode: v.InviteCode,
Page: 1,
PageSize: -1,
})
if errs != nil {
service.ResponseQuickMsg(c, e.Failed, errs.Error(), nil)
return
}
for _, vv := range inviterList.Data {
//inviterNames = append(inviterNames, vv.RealName)
//inviterIds = append(inviterIds, fmt.Sprintf("%d", vv.UserId))
if artistInvite[v.ArtistUid] == nil {
artistInvite[v.ArtistUid] = []*artistInfoUser.ArtshowListResp_Info_InviteInfo{}
}
var ttInvite *artistInfoUser.ArtshowListResp_Info_InviteInfo
ttInvite = &artistInfoUser.ArtshowListResp_Info_InviteInfo{}
ttInvite.Realname = vv.RealName
ttInvite.UserId = int32(vv.UserId)
artistInvite[v.ArtistUid] = append(artistInvite[v.ArtistUid], ttInvite)
}
//temp["invite_name"] = strings.Join(inviterNames, ",")
//temp["invite_id"] = strings.Join(inviterIds, ",")
findUsersInfo[v.ArtistUid] = temp
}
for _, v := range resp.Data {
if findUsersInfo[v.ArtistUuid] != nil {
//v.ArtistName = fmt.Sprintf("%v", findUsersInfo[v.ArtistUuid]["name"])
v.Sex = fmt.Sprintf("%v", findUsersInfo[v.ArtistUuid]["sex"])
age, _ := strconv.Atoi(fmt.Sprintf("%v", findUsersInfo[v.ArtistUuid]["age"]))
v.Age = int32(age)
v.Phone = fmt.Sprintf("%v", findUsersInfo[v.ArtistUuid]["phone"])
//v.InviteUsers = fmt.Sprintf("%v", findUsersInfo[v.ArtistUuid]["invite_name"])
//v.InviteUserId = fmt.Sprintf("%v", findUsersInfo[v.ArtistUuid]["invite_id"])
}
if artistInvite[v.ArtistUuid] != nil {
v.InviteData = artistInvite[v.ArtistUuid]
}
if v.ArtshowId != "" && artistSupperMap[v.ArtistUuid] != nil && artistSupperMap[v.ArtistUuid][v.ArtshowId] != nil {
v.ArtshowExtTime = fmt.Sprintf("%v", artistSupperMap[v.ArtistUuid][v.ArtshowId]["artshow_ext_time"])
recommendId, _ := strconv.Atoi(fmt.Sprintf("%v", artistSupperMap[v.ArtistUuid][v.ArtshowId]["recomment_id"]))
v.RecommendUser = int32(recommendId)
}
// 如果画展包是空根据supplement保存的broker来展示
if v.ArtshowId == "" {
v.ArtshowExtTime = ""
v.RecommendUser = int32(v.BrokerId)
}
if v.ArtshowExtTime != "" {
t, errs := time.Parse(time.RFC3339, v.ArtshowExtTime)
if errs != nil {
logger.Error("time.RFC3339 err", errs)
service.ResponseQuickMsg(c, e.Failed, errs.Error(), nil)
}
v.ArtshowExtTime = t.Format(model.DateTimeFormat)
}
/*
* 第一次 可能会先有推荐人ID 再有画展包ID 没有画展包ID即使有推荐人ID推荐人ID强制为空 2023-06-05
* 第二次 只要有推荐人ID就展示出来 2023-11-23
*/
/*if v.ArtshowId == "" {
v.RecommendUser = 0
}*/
}
//service.ResponseQuickMsg(c, e.Ok, "", resp)
jsonBytes, _ := json.Marshal(resp.Data)
var mapList []map[string]any
json.Unmarshal(jsonBytes, &mapList)
service.FillArtshowCount(mapList, "ArtistUuid")
var newResp = map[string]any{
"Data": mapList,
"Count": resp.Count,
"Page": resp.Page,
"PageSize": resp.PageSize,
"Msg": "",
}
service.ResponseQuickMsg(c, e.Ok, "", newResp)
return
}
func GetAuditUnfinishedStatistics(c *gin.Context) {
resp, err := service.GrpcArtistInfoArtshowImpl.GetAuditUnfinishedStatistics(context.Background(), &artistinfoArtshow.AuditUnfinishedStatisticsRequest{})
if err != nil {
service.ResponseQuickMsg(c, e.Failed, err.Error(), nil)
return
}
service.ResponseData(c, resp)
return
}