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 }