// Package asArtshow ----------------------------- // @file : brokerOperationService.go // @author : JJXu // @contact : wavingbear@163.com // @time : 2024/6/18 下午1:30 // ------------------------------------------- package asArtshow import ( "context" "encoding/json" "fmt" artShow "github.com/fonchain_enterprise/fonchain-main/api/artShow" "github.com/fonchain_enterprise/fonchain-main/api/artist" "github.com/fonchain_enterprise/fonchain-main/api/artistInfoArtwork" "github.com/fonchain_enterprise/fonchain-main/api/artistInfoUser" "github.com/fonchain_enterprise/fonchain-main/api/artistinfoArtshow" "github.com/fonchain_enterprise/fonchain-main/api/artwork" "github.com/fonchain_enterprise/fonchain-main/api/digital_copyright" "github.com/fonchain_enterprise/fonchain-main/api/paybill" "github.com/fonchain_enterprise/fonchain-main/pkg/e" "github.com/fonchain_enterprise/fonchain-main/pkg/service" "github.com/fonchain_enterprise/fonchain-main/pkg/service/artistInfo/asUser" "github.com/fonchain_enterprise/fonchain-main/pkg/utils" "github.com/fonchain_enterprise/fonchain-main/pkg/utils/stime" "github.com/getsentry/sentry-go" "github.com/gin-gonic/gin" "github.com/jinzhu/copier" "go.uber.org/zap" "sort" "strconv" "strings" "time" ) var BrokerOperationControl = new(brokerOperationController) type brokerOperationController struct{} // 获取画家信息的补充状态 /* 这里的画家补充信息不跟随锁定/解锁。 */ func (b brokerOperationController) GetArtistSupplementStatus(c *gin.Context) { var data GetArtistSupplementStatusRequest if err := c.ShouldBindJSON(&data); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "GetArtistSupplementStatus: ShouldBindJSON Error", err.Error()) return } //获取画家信息 thisArtist, err := b.GetUserView(c, data.ArtistUid) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GetArtistSupplementStatus: GetUserInfo Error", err.Error()) return } var resp = GetArtistSupplementStatusResp{ ArtistUid: thisArtist.ArtistUid, ArtistName: thisArtist.RealName, TelNum: thisArtist.TelNum, Sex: thisArtist.Sex, } countList, err := service.GrpcArtShowImpl.ArtistExhibitionCount(c, &artShow.ArtistExhibitionCountReq{ArtistUid: []string{data.ArtistUid}}) if err != nil { fmt.Println("FillArtshowCount:GrpcArtShowImpl.ArtistExhibitionCount Error", err) resp.ArtistShowCount = fmt.Sprintf("%s(0)", thisArtist.RealName) } else { resp.ArtistShowCount = fmt.Sprintf("%s(%d)", thisArtist.RealName, countList.ArtistShowCount[0].ShowCount) } //判断画家指数是否填写完毕 indexRes, err := service.GrpcArtistInfoArtshowImpl.GetArtistIndexList(c, &artistinfoArtshow.GetArtistIndexListRequest{ ArtistUid: data.ArtistUid, Page: 1, PageSize: -1, }) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GetArtistSupplementStatus: GrpcArtistInfoArtshowImpl.GetArtistIndexList Error", err.Error()) return } var classTitleMap = make(map[string]*artistinfoArtshow.ArtistIndexInfo, 5) for _, class := range []string{"exhibition", "seniority", "specialized", "Influence", "collect"} { var classList []*artistinfoArtshow.ArtistIndexInfo for _, v := range indexRes.Data { if v.Class == class { classList = append(classList, v) } } //fmt.Println("classList:", classList) if len(classList) == 0 { resp.ArtistIndexEditStatus = 2 break } else { sort.Slice(classList, func(i, j int) bool { return classList[i].CreatedAt > classList[j].CreatedAt }) tmp := classList[0] classTitleMap[class] = tmp } for _, v := range classTitleMap { if v.TitleScore == 0 { resp.ArtistIndexEditStatus = 2 break } else { resp.ArtistIndexEditStatus = 1 } } } //判断画家补充信息和银行卡信息是否填写完毕 resp.ArtistSupplementEditStatus, resp.BankInfoEditStatus, err = b.GetArtistSupplementEditStatus(data.ArtistUid) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GetArtistSupplementStatus: GetArtistSupplementEditStatus Error", err.Error()) return } //判断画家视频是否填写完毕 artistVideoRes, err := service.GrpcArtistInfoArtshowImpl.GetArtshowVideoList(c, &artistinfoArtshow.GetArtshowVideoListRequst{ ArtistUid: data.ArtistUid, Page: 1, PageSize: -1, }) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GetArtistSupplementStatus: GrpcArtistInfoArtshowImpl.GetArtshowVideoList Error", err.Error()) return } if artistVideoRes.Page.Total > 0 { sort.Slice(artistVideoRes.Data, func(i, j int) bool { return artistVideoRes.Data[i].CreatedAt > artistVideoRes.Data[j].CreatedAt }) if artistVideoRes.Data[0].VideoUrl == "" { resp.ArtistVideoEditStatus = 2 } else { resp.ArtistVideoEditStatus = 1 } } else { resp.ArtistVideoEditStatus = 2 } service.Success(c, resp) } // 获取画作的补充状态列表 func (b brokerOperationController) GetArtworkSupplementStatusList(c *gin.Context) { var req GetArtworkSupplementStatusListReq if err := c.ShouldBindJSON(&req); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "GetArtistSupplementStatus: ShouldBindJSON Error", err.Error()) return } thisUser, err := service.GrpcArtistInfoUserImpl.FindUser(context.Background(), &artistInfoUser.FindUserRequest{ MgmtArtistUid: req.ArtistUid, }) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GetArtworkSupplementStatusList: GrpcArtistInfoUserImpl.FindUser Error", err.Error()) return } if !thisUser.IsLock { service.ResponseList(c, []struct{}{}, service.OptionPage(1, 1, 0), service.OptionMsg("查询成功")) return } res, err := service.GrpcArtistInfoArtworkImpl.GetViewArtworkSupplementList(c, &artistInfoArtwork.GetViewArtworkSupplementListRequest{ Query: &artistInfoArtwork.ViewArtworkSupplementData{ArtistUid: req.ArtistUid, LockTime: thisUser.LatestLockTime}, Page: 1, PageSize: -1, }) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GetArtworkSupplementStatusList: GrpcArtistInfoArtworkImpl.GetViewArtworkSupplementList Error", err.Error()) return } var resp = []GetArtworkSupplementStatusListType{} for _, v := range res.List { //var editStatus = b.DataCanEdit(v.ID == 0, v.CreatedAt, v.UpdatedAt, v.ArtistUid) var isEmpty bool if v.CreatedDate == "" && v.SealPic == "" && v.Abstract == "" && v.InscribeDate == "" { isEmpty = true } fmt.Println(v.ArtworkUuid, "isEmpty", isEmpty, "v.CreatedAt", v.CreatedAt, "v.LatestSupplyInfoBrokerUpdatedAt", v.LatestSupplyInfoBrokerUpdatedAt) //if !isEmpty { // for t := range v.ArtworkMarkets { // if len(v.ArtworkMarkets[t].Detail) > 2 { // isEmpty = true // break // } // } //} resp = append(resp, GetArtworkSupplementStatusListType{ ArtworkUid: v.ArtworkUuid, CreatedAt: v.CreatedAt, UpdatedAt: v.UpdatedAt, ArtworkName: v.ArtworkName, HdPic: v.HdPic, ArtistPhoto: v.ArtistPhoto, //EditStatus: utils.If(v.Editable, 1, 2).(int), EditStatus: b.CheckDataEditStatus(isEmpty, v.CreatedAt, v.LatestSupplyInfoBrokerUpdatedAt, v.ArtistUid), }) } service.ResponseList(c, resp, service.OptionPage(res.Page, res.Page, res.Total), service.OptionMsg("查询成功")) } // 获取画家的补充信息 func (b brokerOperationController) GetArtistSupplementDetail(c *gin.Context) { var req GetArtistSupplementDetailRequest if err := c.ShouldBindJSON(&req); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "GetArtistSupplementDetail: ShouldBindJSON Error", err.Error()) return } res, err := service.GrpcArtistInfoArtshowImpl.GetArtistSupplementList(c, &artistinfoArtshow.GetArtistSupplementListRequest{ Page: 1, PageSize: -1, ArtistUid: req.ArtistUid, }) if err != nil { service.ErrorWithMark(c, e.Failed, err, " GrpcArtistinfoArtshowImpl.GetArtistSupplementList Error") return } if res.Page.Total == 0 { service.Error(c, e.Failed, nil, "没有数据") return } var thisData *artistinfoArtshow.ArtistSupplementInfo if res.Page.Total > 1 { sort.Slice(res.Data, func(i, j int) bool { return res.Data[i].CreatedAt > res.Data[j].CreatedAt }) } thisData = res.Data[0] var isEmpty bool if thisData.ArtistProfile == "" && thisData.CountryArtLevel == 0 && thisData.ArtistCertPic == "" && thisData.BankNum == "" && thisData.BankName == "" && thisData.Honor == "" { isEmpty = true } var resp = GetArtistSupplementDetailResp{ Id: thisData.Id, CreatedAt: thisData.CreatedAt, UpdatedAt: thisData.UpdatedAt, DeletedAt: thisData.DeletedAt, ArtistUid: thisData.ArtistUid, ArtistProfile: ArtistSupplement.DownloadLongText(thisData.ArtistProfile), CountryArtLevel: thisData.CountryArtLevel, ArtistCertPic: thisData.ArtistCertPic, BankNum: thisData.BankNum, BankName: thisData.LBankName, Honor: ArtistSupplement.DownloadLongText(thisData.Honor), CanEdit: true, EditStatus: b.CheckDataEditStatus(isEmpty, thisData.CreatedAt, thisData.LatestBrokerUpdatedAt, thisData.ArtistUid), } service.Success(c, resp) } // 获取画家的补充信息 func (b brokerOperationController) GetArtistSupplementDetailV2(c *gin.Context) { var req GetArtistSupplementDetailRequest if err := c.ShouldBindJSON(&req); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "GetArtistSupplementDetail: ShouldBindJSON Error", err.Error()) return } res, err := service.GrpcArtistInfoArtshowImpl.GetArtistSupplementV2Detail(c, &artistinfoArtshow.GetArtistSupplementV2ByIdRequest{ ArtistUid: req.ArtistUid, }) if err != nil { service.ErrorWithMark(c, e.Failed, err, " GrpcArtistinfoArtshowImpl.GetArtistSupplementList Error") return } fmt.Println("res.ExhibitionTip", res.ExhibitionTip) var resp = ArtshowArtistSupplementInfoV3{ Id: res.ID, CreatedAt: res.CreatedAt, UpdatedAt: res.UpdatedAt, DeletedAt: res.DeletedAt, ArtistUid: res.ArtistUid, ArtistProfile: ArtistSupplement.DownloadLongText(res.ArtistProfile), ArtistCertPic: res.ArtistCertPic, BankNum: res.BankNum, BankName: res.BankName, LBankName: res.LBankName, DataUpdatedAt: res.UpdatedAt, ExhibitionTip: res.ExhibitionTip, //画展经历提示词 } resp.HonorType.Parse(res) resp.EditStatus = b.CheckDataEditStatus(resp.IsEmpty(), res.CreatedAt, res.LatestBrokerUpdatedAt, res.ArtistUid) service.Success(c, resp) } // 获取画家指数列表 func (b brokerOperationController) GetArtistIndexSupplementList(c *gin.Context) { var req GetArtistIndexSupplementDataRequest if err := c.ShouldBindJSON(&req); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "GetArtistIndexSupplementData: ShouldBindJSON Error", err.Error()) return } thisUser, err := b.GetUserInfo(req.ArtistUid) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GetArtistIndexSupplementData: GetUserInfo Error", err.Error()) return } res, err := service.GrpcArtistInfoArtshowImpl.GetArtistIndexList(c, &artistinfoArtshow.GetArtistIndexListRequest{ ArtistUid: req.ArtistUid, Page: 1, PageSize: -1, }) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GetArtistIndexSupplementData: GrpcArtistInfoArtshowImpl.GetArtistIndexList Error", err.Error()) return } fmt.Println("res.Data", res.Data) var resp = []GetArtistIndexSupplementType{} var classTitleMap = map[string]string{ "exhibition": "艺术家-展览", "seniority": "艺术家-资历", "specialized": "艺术家-专业", "Influence": "艺术家-影响力", "collect": "艺术家-收藏", } for _, class := range []string{"exhibition", "seniority", "specialized", "Influence", "collect"} { var classList []*artistinfoArtshow.ArtistIndexInfo for _, v := range res.Data { if v.Class == class { v := v classList = append(classList, v) } } fmt.Println("classList:", classList) if len(classList) == 0 { resp = append(resp, GetArtistIndexSupplementType{ ArtistUid: req.ArtistUid, Title: classTitleMap[class], Class: class, Types: "1", CanEdit: true, EditStatus: 1, }) } else { sort.Slice(classList, func(i, j int) bool { return classList[i].CreatedAt > classList[j].CreatedAt }) tmp := classList[0] var isEmpty = tmp.TitleScore == 0 var item = GetArtistIndexSupplementType{ Id: tmp.Id, ArtistUid: req.ArtistUid, Title: tmp.Title, Class: tmp.Class, Types: tmp.Types, Score: tmp.Score, TitleScore: tmp.TitleScore, CanEdit: true, EditStatus: b.CheckDataEditStatus(isEmpty, tmp.CreatedAt, tmp.LatestBrokerUpdatedAt, "", thisUser), } resp = append(resp, item) } } service.ResponseList(c, resp, service.OptionMsg("查询成功")) } // 获取画家视频信息 func (b brokerOperationController) GetArtistVideo(c *gin.Context) { var req GetArtistVideoReq if err := c.ShouldBindJSON(&req); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "GetArtistVideo: ShouldBindJSON Error", err.Error()) return } res, err := service.GrpcArtistInfoArtshowImpl.GetArtshowVideoList(c, &artistinfoArtshow.GetArtshowVideoListRequst{ ArtistUid: req.ArtistUid, Page: 1, PageSize: -1, }) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GetArtistVideo: GrpcArtistInfoArtshowImpl.GetArtshowVideoList Error", err.Error()) return } if res.Page.Total == 0 { service.ResponseData(c, struct{}{}) return } sort.Slice(res.Data, func(i, j int) bool { return res.Data[i].CreatedAt > res.Data[j].CreatedAt }) var resp = GetArtworkSupplementInfoResp{ ArtistUid: req.ArtistUid, } if res.Data != nil { resp.Id = res.Data[0].Id resp.CreatedAt = res.Data[0].CreatedAt resp.UpdatedAt = res.Data[0].UpdatedAt resp.VideoUrl = res.Data[0].VideoUrl resp.VideoCover = res.Data[0].VideoCover resp.CanEdit = true resp.EditStatus = b.CheckDataEditStatus(res.Data[0].Id == 0, res.Data[0].CreatedAt, res.Data[0].LatestBrokerUpdatedAt, req.ArtistUid) } service.ResponseData(c, resp) } // 获取画作的补充信息 func (b brokerOperationController) GetArtworkSupplementDetail(c *gin.Context) { var req GetArtworkSupplementInfoRequest if err := c.ShouldBindJSON(&req); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "GetArtworkSupplementDetail: ShouldBindJSON Error", err.Error()) return } res, err := service.GrpcArtistInfoArtworkImpl.GetViewArtworkSupplementDetail(c, &artistInfoArtwork.GetViewArtworkSupplementByIdRequest{ ArtworkUid: req.ArtworkUid, }) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GetArtworkSupplementStatusList: GrpcArtistInfoArtworkImpl.GetViewArtworkSupplementList Error", err.Error()) return } var resp ArtworkSupplementInfo _ = copier.Copy(&resp, &res) resp.CanEdit = true resp.EditStatus = b.CheckDataEditStatus(res.ID == 0, res.CreatedAt, res.LatestSupplyInfoBrokerUpdatedAt, res.ArtistUid) //处理获奖/参展信息 if len(res.ArtworkMarkets) > 0 { tmpMarket := ConvertMarketDataToResponse(res.ArtworkMarkets) resp.ArtistMarketId1 = tmpMarket.ArtistMarketId1 resp.ArtistMarketId2 = tmpMarket.ArtistMarketId2 resp.ArtistMarketId3 = tmpMarket.ArtistMarketId3 resp.ArtistMarketDetail = tmpMarket.ArtistMarketDetail resp.ArtistMarketUrl1 = tmpMarket.ArtistMarketUrl1 resp.ArtistMarketUrl2 = tmpMarket.ArtistMarketUrl2 } service.Success(c, resp) } // 更新画家补充信息 func (b brokerOperationController) UpdateArtistInfo(c *gin.Context) { var req UpdateArtistInfoRequest if err := c.ShouldBindJSON(&req); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "UpdateArtistInfo: ShouldBindJSON Error", err.Error()) return } req.ArtistProfile, _ = ArtistSupplement.LongTextUploadToBucket(1, req.ArtistProfile, req.ArtistUid) req.Honor, _ = ArtistSupplement.LongTextUploadToBucket(2, req.Honor, req.ArtistUid) res, err := service.GrpcArtistInfoArtshowImpl.UpdateArtistSupplement(c, &artistinfoArtshow.UpdateArtistSupplementRequest{ Id: req.Id, ArtistProfile: req.ArtistProfile, CountryArtLevel: req.CountryArtLevel, ArtistCertPic: req.ArtistCertPic, BankNum: req.BankNum, BankName: req.BankName, LBankName: req.LBankName, Honor: req.Honor, LatestBrokerUpdatedAt: time.Now().Format(stime.Format_Normal_YMDhms), }) if err != nil { service.ErrorWithMark(c, e.Failed, err, "UpdateArtistInfo: GrpcArtistInfoArtshowImpl.UpdateArtistSupplement Error", err.Error()) return } //同步到画家系统 err = b.PushArtistSupplementToArtistSystem(PushArtistSupplementData{ ArtistUid: req.ArtistUid, ArtistProfile: req.ArtistProfile, BankNum: req.BankNum, BankName: req.LBankName, Honor: req.Honor, }) if err != nil { service.ErrorWithMark(c, e.Failed, err, "UpdateArtistInfo: PushArtistSupplementToArtistSystem Error", err.Error()) return } service.Success(c, res) } // 更新画家补充信息V2 func (b brokerOperationController) UpdateArtistInfoV2(c *gin.Context) { var request ArtshowArtistSupplementInfoV3 if err := c.ShouldBindJSON(&request); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "UpdateArtistInfo: ShouldBindJSON Error", err.Error()) return } request.ArtistProfile, _ = ArtistSupplement.LongTextUploadToBucket(1, request.ArtistProfile, request.ArtistUid) var title, _ = json.Marshal(request.HonorType.Title) var award, _ = json.Marshal(request.HonorType.Award) var exhibition, _ = json.Marshal(request.HonorType.Exhibition) var published, _ = json.Marshal(request.HonorType.Published) now := time.Now().Format(stime.Format_Normal_YMDhms) _, err := service.GrpcArtistInfoArtshowImpl.SaveArtistSupplementV2(c, &artistinfoArtshow.SaveArtistSupplementV2Request{ Data: &artistinfoArtshow.ArtistSupplementV2Data{ ID: request.Id, ArtistUid: request.ArtistUid, ArtistProfile: request.ArtistProfile, ArtistCertPic: request.ArtistCertPic, BankNum: request.BankNum, BankName: request.BankName, LBankName: request.LBankName, Award: string(award), Exhibition: string(exhibition), Title: string(title), Published: string(published), DataUpdatedAt: now, LatestBrokerUpdatedAt: now, ExhibitionTip: request.ExhibitionTip, }, AddOmitFields: []string{"exhibition"}, //忘记做什么用的了,从给画家宝抄过来的 }) if err != nil { service.ErrorWithMark(c, e.Failed, err, "UpdateArtistSupplement: GrpcArtistinfoArtshowImpl.UpdateArtistSupplement Error "+err.Error(), "更新失败") return } //同步到画家系统 pushData := PushArtistSupplementDataV3{ ArtistUid: request.ArtistUid, ArtistProfile: request.ArtistProfile, //ArtistCertPic: request.ArtistCertPic, BankNum: request.BankNum, BankName: request.LBankName, ArtistHonor: request.HonorType, } err = b.PushArtistSupplementToArtistSystemV2(pushData) if err != nil { service.ErrorWithMark(c, e.Failed, err, "UpdateArtistInfo: PushArtistSupplementToArtistSystem Error", err.Error()) return } service.Success(c) } // 更新画家视频信息 func (b brokerOperationController) UpdateArtistVideoSupplement(c *gin.Context) { var req UpdateArtistVideoSupplementRequest if err := c.ShouldBindJSON(&req); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "UpdateArtistVideoSupplement: ShouldBindJSON Error", err.Error()) return } res, err := service.GrpcArtistInfoArtshowImpl.CreateArtshowVideo(c, &artistinfoArtshow.ArtshowVideoInfo{ ArtistUid: req.ArtistUid, VideoUrl: req.VideoUrl, VideoCover: req.VideoCover, LatestBrokerUpdatedAt: time.Now().Format(stime.Format_Normal_YMDhms), }) if err != nil { service.ErrorWithMark(c, e.Failed, err, "UpdateArtistVideoSupplement: GrpcArtistInfoArtshowImpl.UpdateArtshowVideo Error", err.Error()) return } //同步至画家系统 err = b.PushArtistVideoToArtistSystem(req.ArtistUid, req.VideoCover, req.VideoUrl) if err != nil { service.ErrorWithMark(c, e.Failed, err, "UpdateArtistVideoSupplement: PushArtistVideoToArtistSystem Error"+err.Error(), "推送至画家系统失败,请联系管理员手动修改") return } service.Success(c, res) } // 创建画家指数信息 func (b brokerOperationController) CreateArtistIndexSupplement(c *gin.Context) { var req UpdateArtistIndexSupplementRequest if err := c.ShouldBindJSON(&req); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "UpdateArtistIndexSupplement: ShouldBindJSON Error", err.Error()) return } var validateFunc = func() bool { if req.Title == "" || req.Class == "" || req.TitleScore == 0 { service.ErrorWithMark(c, e.InvalidParams, nil, "UpdateArtistIndexSupplement: title、class、score、titleScore不能为空", "缺少必要数据") return false } if req.Score == "" { service.ErrorWithMark(c, e.InvalidParams, nil, "UpdateArtistIndexSupplement: Score不能为空", "您未完成填写,请确保全部填写完毕!") return false } var scoreMap map[string]any if err := json.Unmarshal([]byte(req.Score), &scoreMap); err != nil { service.ErrorWithMark(c, e.InvalidParams, nil, "UpdateArtistIndexSupplement: Score 数据格式错误", "数据格式错误") return false } for k, v := range scoreMap { if v == nil { service.ErrorWithMark(c, e.InvalidParams, nil, fmt.Sprintf("UpdateArtistIndexSupplement: %v 未填写", k), "您未完成填写,请确保全部填写完毕!") return false } } return true } if !validateFunc() { return } _, err := service.GrpcArtistInfoArtshowImpl.CreateArtistIndex(c, &artistinfoArtshow.ArtistIndexInfo{ ArtistUid: req.ArtistUid, Title: req.Title, Class: req.Class, TitleScore: req.TitleScore, Score: req.Score, Types: req.Types, Status: 3, LatestBrokerUpdatedAt: time.Now().Format(stime.Format_Normal_YMDhms), }) if err != nil { service.ErrorWithMark(c, e.Failed, err, "UpdateArtistIndexSupplement: GrpcArtistInfoArtshowImpl.UpdateArtistIndex Error", err.Error()) return } //同步至画家系统 err = b.PushArtistIndexToArtistSystem(req.ArtistUid) if err != nil { service.ErrorWithMark(c, e.Failed, err, "UpdateArtistIndexSupplement: PushArtistIndexToArtistSystem Error"+err.Error(), "推送至画家系统失败,请联系管理员手动修改") return } service.Success(c) } // 更新画作补充信息 func (b brokerOperationController) UpdateArtworkSupplement(c *gin.Context) { var req ArtworkSupplementInfo if err := c.ShouldBindJSON(&req); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "UpdateArtworkSupplement: ShouldBindJSON Error", err.Error()) return } if req.ArtworkUuid == "" { service.Error(c, e.InvalidParams, nil, "画作uid不能为空") return } //查询画作基本信息 artworkProfile, err := service.GrpcArtworkImpl.ArtworkDetail(c, &artwork.ArtworkDetailRequest{ArtworkUuid: req.ArtworkUuid, Type: "1"}) if err != nil { service.Error(c, e.Failed, err, "UpdateArtworkSupplement: GrpcArtworkImpl.ArtworkDetail Error") return } //将画作补充的审核状态改为待审核 now := time.Now().Format(stime.Format_Normal_YMDhms) _, err = service.GrpcArtistInfoArtworkImpl.UpdateArtworkAuditStatus(c, &artistInfoArtwork.UpdateArtworkAuditStatusRequest{ ArtworkUid: req.ArtworkUuid, AuditStatus: 2, FlowIndex: 3, ArtworkUids: nil, LatestSupplyInfoBrokerUpdatedAt: now, SupplyInfoUpdatedAt: now, }) if err != nil { service.Error(c, e.Failed, err, "UpdateArtworkSupplement: GrpcArtistInfoArtworkImpl.UpdateArtworkAuditStatus Error:"+err.Error()) return } fmt.Printf("ArtworkImpl.ArtworkDetail 获取画作基本信息:%+v\n", artworkProfile) profile, marketDatas, extdata := req.ConvertGrpcRequest2(artworkProfile) // profile.ArtistUuid = artworkLock.ArtistUid profile.ArtworkType = 4 fmt.Printf("ArtworkImpl.UpdateArtworkProfile 更新画作基本信息:%+v\n", profile) //更新首选项 _, err = service.GrpcArtworkImpl.UpdateArtworkProfile(c, profile) if err != nil { service.Error(c, e.Failed, err, "UpdateArtworkSupplement: GrpcArtworkImpl.UpdateArtworkProfile Error") return } //更新荣誉 for _, marketData := range marketDatas { _, err = service.GrpcArtworkImpl.UpdateMarketInfo(c, marketData) if err != nil { service.Error(c, e.Failed, err, "UpdateArtworkSupplement: GrpcArtworkImpl.UpdateMarketInfo Error") return } } //更新网络首发情况 _, err = service.GrpcArtworkImpl.UpdateExtData(c, extdata) if err != nil { service.Error(c, e.Failed, err, "UpdateArtworkSupplement: GrpcArtworkImpl.UpdateExtData Error") return } service.Success(c) } // 获取用户视图中的信息 func (b brokerOperationController) GetUserView(ctx context.Context, artistUid string) (user *artistInfoUser.UserView, err error) { var res *artistInfoUser.FindUsersUserViewResponse res, err = service.GrpcArtistInfoUserImpl.FindUsersUserView(ctx, &artistInfoUser.FindUsersRequest{ MgmtArtistUid: artistUid, Page: 1, PageSize: 1, }) if err != nil { return } if res.Page.Total == 0 { err = fmt.Errorf("画家不存在") return } user = res.Data[0] return } // 获取用户画展底价 func (b brokerOperationController) GetArtshowFlowPrice(c *gin.Context) { var request *artistinfoArtshow.GetArtshowArtistRulerFloorPriceByIdRequest if err := c.ShouldBindJSON(&request); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "GetArtistVideo: ShouldBindJSON Error", err.Error()) return } price, err := service.GrpcArtistInfoArtshowImpl.GetArtshowArtistRulerFloorPriceDetail(c, request) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GetArtshowFlowPrice: GrpcArtistInfoArtshowImpl.GetArtshowArtistRulerFloorPriceDetail Error", err.Error()) return } var resp = RulerFloorPrice{ ID: price.ID, CreatedAt: price.CreatedAt, UpdatedAt: price.UpdatedAt, DeletedAt: price.DeletedAt, ArtistUid: price.ArtistUid, FloorPrice: fmt.Sprintf("%0.2f", price.FloorPrice), } service.Success(c, resp) } // 获取用户画展底价 func (b brokerOperationController) CreateArtshowFlowPrice(c *gin.Context) { var request RulerFloorPrice if err := c.ShouldBindJSON(&request); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "GetArtistVideo: ShouldBindJSON Error", err.Error()) return } //获取用户信息 accInfo, err, code := asUser.GetAccInfoWithToken(c) if err != nil { service.Error(c, code, err, err.Error()) return } floorPrice, err := strconv.ParseFloat(request.FloorPrice, 64) if err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "CreateArtshowFlowPrice: strconv.ParseFloat Error"+err.Error(), "平尺数底价格式错误") return } var protoReq = &artistinfoArtshow.ArtshowArtistRulerFloorPriceData{ ArtistUid: request.ArtistUid, FloorPrice: float32(floorPrice), OperationName: accInfo.NickName, OperationTime: time.Now().Format(stime.Format_Normal_YMDhms), OperationAcc: accInfo.TelNum, } _, err = service.GrpcArtistInfoArtshowImpl.CreateArtshowArtistRulerFloorPrice(c, protoReq) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GetArtshowFlowPrice: GrpcArtistInfoArtshowImpl.GetArtshowArtistRulerFloorPriceDetail Error", err.Error()) return } service.Success(c) } // GetArtistSupplementFromSystem 获取用户画展底价 func (b brokerOperationController) GetArtistSupplementFromSystem(c *gin.Context) { var request ImportArtistSupplementRequest if err := c.ShouldBindJSON(&request); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "GetArtistVideo: ShouldBindJSON Error", err.Error()) return } //查询画家宝的画家补充信息 supplementRes, err := service.GrpcArtistInfoArtshowImpl.GetArtistSupplementV2Detail(c, &artistinfoArtshow.GetArtistSupplementV2ByIdRequest{ ArtistUid: request.ArtistUid, }) if err != nil { service.ErrorWithMark(c, e.Failed, err, "importArtistSupplement: GetArtistSupplementV2Detail Error", err.Error()) return } //获取画家系统的荣誉信息 artistRes, err := service.GrpcArtistImpl.ArtistDetail(c, &artist.DetailRequest{ Uid: request.ArtistUid, }) if err != nil { service.ErrorWithMark(c, e.Failed, err, "importArtistSupplement: GrpcArtistImpl.ArtistDetail Error", err.Error()) return } //导入荣誉信息 honorData, err := ParseHonorToArtistInfoType(artistRes.HonorInfo) if err != nil { service.ErrorWithMark(c, e.Failed, err, "importArtistSupplement: ParseHonorToArtistInfoType Error", err.Error()) return } //获取个人简介2 //从最近一次的画展包核验数据中获取个人简介2 recordRes, err := service.GrpcArtistImpl.GetArtistOneQueryCheckRecordList(c, &artist.GetArtistOneQueryCheckRecordListRequest{ Query: &artist.ArtistOneQueryCheckRecordData{ArtistUID: request.ArtistUid}, Page: 1, PageSize: -1, Order: "created_at desc", }) if err != nil { zap.L().Error("获取画展阿波核验数据失败", zap.Error(err)) } if recordRes.Total > 0 { for _, v := range recordRes.List { if v.Resume2 != "" { supplementRes.ArtistProfile = v.Resume2 break } } } else if artistRes.ProfileInfo != nil && artistRes.ProfileInfo.Resume2 != "" { supplementRes.ArtistProfile = artistRes.ProfileInfo.Resume2 } else if artistRes.ProfileInfo != nil && artistRes.ProfileInfo.Resume != "" { supplementRes.ArtistProfile = artistRes.ProfileInfo.Resume } else { supplementRes.ArtistProfile = "" } fmt.Printf("artistRes:%+v\n", artistRes) fmt.Printf("supplementRes:%+v\n", supplementRes) var resp = ArtshowArtistSupplementInfoV3{ Id: supplementRes.ID, CreatedAt: supplementRes.CreatedAt, UpdatedAt: supplementRes.UpdatedAt, DeletedAt: supplementRes.DeletedAt, ArtistUid: supplementRes.ArtistUid, ArtistProfile: ArtistSupplement.DownloadLongText(supplementRes.ArtistProfile), ArtistCertPic: supplementRes.ArtistCertPic, BankNum: supplementRes.BankNum, BankName: supplementRes.BankName, DataUpdatedAt: supplementRes.UpdatedAt, HonorType: honorData, } resp.EditStatus = b.CheckDataEditStatus(resp.IsEmpty(), supplementRes.CreatedAt, supplementRes.LatestBrokerUpdatedAt, supplementRes.ArtistUid) service.Success(c, resp) } // 获取用户表信息 func (b brokerOperationController) GetUserInfo(artistUid string) (thisUser *artistInfoUser.UserInfo, err error) { thisUser, err = service.GrpcArtistInfoUserImpl.FindUser(context.Background(), &artistInfoUser.FindUserRequest{ MgmtArtistUid: artistUid, }) if err != nil { fmt.Println("DataCanEdit:GrpcArtistInfoUserImpl.FindUser Error", err) zap.L().Error("DataCanEdit:GrpcArtistInfoUserImpl.FindUser Error", zap.Error(err)) return } return } // 判断经纪人是否可编辑该条数据 func (b brokerOperationController) CheckDataEditStatus(dataIsEmpty bool, dataCreatedAt, brokerUpdatedDataAt string, artistUid string, InputThisUser ...*artistInfoUser.UserInfo) int64 { var editStatus int64 if dataIsEmpty { editStatus = 1 //未填写 } else { editStatus = 2 //已填写 } if dataCreatedAt <= brokerUpdatedDataAt { editStatus = 3 //已锁定 } fmt.Println("00000 editStatus", editStatus) //查找用户 var thisUser *artistInfoUser.UserInfo if InputThisUser != nil { thisUser = InputThisUser[0] } else { var err error thisUser, err = b.GetUserInfo(artistUid) if err != nil { fmt.Println("CheckDataEditStatus err", err) return 3 } } fmt.Println("1111 editStatus", editStatus) //判断是否锁定 if editStatus != 1 { if thisUser.ReleaseLockTime != "" { if thisUser.ReleaseLockTime > brokerUpdatedDataAt { editStatus = 2 } else { editStatus = 3 } } } return editStatus } // 推送画家指数到画家系统 func (b brokerOperationController) PushArtistIndexToArtistSystem(artistUid string) error { res, err := service.GrpcArtistInfoArtshowImpl.GetArtistIndexList(context.Background(), &artistinfoArtshow.GetArtistIndexListRequest{ ArtistUid: artistUid, Page: 1, PageSize: -1, }) if err != nil { return err } updateArtistSystemIndexRequest := &artist.IndexRequest{ Uid: artistUid, InSource: 2, //这个字段不要使用artistSystemIndex.InSource,两个字段含义不同 Exhibition: -1, Education: -1, Professionalism: -1, Influence: -1, Collectible: -1, } //整理画家指数数据,拿每种类型最新的一条数据 for _, class := range []string{"exhibition", "seniority", "specialized", "Influence", "collect"} { var classList []*artistinfoArtshow.ArtistIndexInfo for _, v := range res.Data { if v.Class == class { classList = append(classList, v) } } if len(classList) > 0 { sort.Slice(classList, func(i, j int) bool { return classList[i].CreatedAt > classList[j].CreatedAt }) switch class { case "exhibition": updateArtistSystemIndexRequest.Exhibition = classList[0].TitleScore case "seniority": updateArtistSystemIndexRequest.Education = classList[0].TitleScore case "specialized": updateArtistSystemIndexRequest.Professionalism = classList[0].TitleScore case "Influence": updateArtistSystemIndexRequest.Influence = classList[0].TitleScore case "collect": updateArtistSystemIndexRequest.Collectible = classList[0].TitleScore } } } fmt.Printf("画家指数:%+v\n", updateArtistSystemIndexRequest) if _, errs := service.GrpcArtistImpl.UpdateIndex(context.Background(), updateArtistSystemIndexRequest); errs != nil { fmt.Println("3333 GrpcArtistImpl.UpdateIndex:", errs.Error()) zap.L().Error("更新画家系统的画家指数失败", zap.Error(errs)) } return nil } // 推送画家视频到画家系统 func (brokerOperationController) PushArtistVideoToArtistSystem(artistUid, videoCover, videoUrl string) error { _, err := service.GrpcArtistImpl.SaveInterviewVideo(context.Background(), &artist.SaveInterviewVideoReq{ ArtistUid: artistUid, CoverUrl: videoCover, OriUrl: videoUrl, }) return err } // 推送画家补充信息到画家系统 func (brokerOperationController) PushArtistSupplementToArtistSystem(supplement PushArtistSupplementData) error { _, err := service.GrpcArtistImpl.SaveArtistSupplementInfo(context.Background(), &artist.SaveArtistSupplementInfoReq{ ArtistUid: supplement.ArtistUid, Resume: supplement.ArtistProfile + "\n" + supplement.Honor, //个人简介和获奖信息合并 BankNum: supplement.BankNum, BankName: supplement.BankName, }) return err } // 推送画家补充信息到画家系统 func (brokerOperationController) PushArtistSupplementToArtistSystemV2(supplement PushArtistSupplementDataV3) error { _, err := service.GrpcArtistImpl.SaveArtistSupplementInfo(context.Background(), &artist.SaveArtistSupplementInfoReq{ ArtistUid: supplement.ArtistUid, Resume: supplement.ArtistProfile, //个人简介和获奖信息合并 BankNum: supplement.BankNum, BankName: supplement.BankName, }) if err != nil { fmt.Println("PushArtistSupplementToArtistSystemV2 - SaveArtistSupplementInfo err:", err) return err } // 删除已有的荣誉 resp, err := service.GrpcArtistImpl.ArtistDetail(context.Background(), &artist.DetailRequest{Uid: supplement.ArtistUid}) if err != nil { return err } if len(resp.HonorInfo) > 0 { honor, err := ParseHonorToArtistInfoType(resp.HonorInfo) if err != nil { return err } var delIds = []int32{} for _, v := range honor.Award { delIds = append(delIds, v.Id) } for _, v := range honor.Exhibition { delIds = append(delIds, v.Id) } for _, v := range honor.Published { delIds = append(delIds, v.Id) } for _, v := range honor.Title { delIds = append(delIds, v.Id) } _, err = service.GrpcArtistImpl.HonorDel(context.Background(), &artist.HonorDelRequest{Ids: delIds}) if err != nil { return err } } //重新创建 //创建头衔 for _, v := range supplement.ArtistHonor.Title { if _, err = service.GrpcArtistImpl.UpdateHonor(context.Background(), &artist.HonorRequest{ Uid: supplement.ArtistUid, HonorType: 3, HonorDetail: v.String(), Id: 0, }); err != nil { return err } time.Sleep(time.Microsecond * 200) } //获奖经历/获奖称号 for _, v := range supplement.ArtistHonor.Award { if _, err = service.GrpcArtistImpl.UpdateHonor(context.Background(), &artist.HonorRequest{ Uid: supplement.ArtistUid, HonorType: 2, HonorDetail: v.String(), Id: 0, }); err != nil { return err } time.Sleep(time.Microsecond * 200) } //画展/展览名称 for _, v := range supplement.ArtistHonor.Exhibition { if _, err = service.GrpcArtistImpl.UpdateHonor(context.Background(), &artist.HonorRequest{ Uid: supplement.ArtistUid, HonorType: 5, HonorDetail: v.String(), Id: 0, }); err != nil { return err } time.Sleep(time.Microsecond * 200) } //创建学术发表/发表内容 for _, v := range supplement.ArtistHonor.Published { if _, err = service.GrpcArtistImpl.UpdateHonor(context.Background(), &artist.HonorRequest{ Uid: supplement.ArtistUid, HonorType: 6, HonorDetail: v.String(), Id: 0, }); err != nil { return err } time.Sleep(time.Microsecond * 200) } return err } func (brokerOperationController) GetArtistSupplementEditStatus(artistUid string) (artistSupplementEditStatus int, bankInfoEditStatus int, err error) { artistSupplyRes, err := service.GrpcArtistInfoArtshowImpl.GetArtistSupplementList(context.Background(), &artistinfoArtshow.GetArtistSupplementListRequest{ ArtistUid: artistUid, Page: 1, PageSize: -1, }) if err != nil { return } if artistSupplyRes.Page.Total == 0 { artistSupplementEditStatus = 2 bankInfoEditStatus = 2 } else { sort.Slice(artistSupplyRes.Data, func(i, j int) bool { return artistSupplyRes.Data[i].CreatedAt > artistSupplyRes.Data[j].CreatedAt }) tmp := artistSupplyRes.Data[0] if tmp.ArtistProfile == "" && tmp.ArtistCertPic == "" && tmp.Honor == "" { artistSupplementEditStatus = 2 } else { artistSupplementEditStatus = 1 } if tmp.BankNum == "" && tmp.BankName == "" { bankInfoEditStatus = 2 } else { bankInfoEditStatus = 1 } } return } func (brokerOperationController) UpdateBankInfo(c *gin.Context) { var request UpdateBankInfoRequest if err := c.ShouldBindJSON(&request); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "UpdateBankInfo: ShouldBindJSON Error", err.Error()) return } if request.ArtistUid == "" { service.Error(c, e.InvalidParams, nil, "画家uid不能为空") return } if request.BankName == "" || request.BankCode == "" || request.BankNum == "" || request.LBankName == "" || len(request.BankArea) == 0 { service.Error(c, e.InvalidParams, nil, "银行信息不完整") return } updateBankInfoRequest := &artistinfoArtshow.UpdateBankInfoRequest{ ArtistUid: request.ArtistUid, BankNum: request.BankNum, BankName: request.BankName, LBankName: request.LBankName, BankCode: request.BankCode, BankArea: strings.Join(request.BankArea, ","), IsBrokerUpdate: true, } saveArtistSystemRequest := &artist.SaveArtistBankInfoRequest{ ArtistUid: request.ArtistUid, BankNum: request.BankNum, BankName: request.LBankName, BankCode: request.BankCode, } defer func() { sentry.WithScope(func(scope *sentry.Scope) { scope.SetLevel(sentry.LevelInfo) scope.SetExtra("request", fmt.Sprintf("%+v", request)) scope.SetExtra("updateBankInfoRequest", fmt.Sprintf("%+v", updateBankInfoRequest)) scope.SetExtra("saveArtistSystemRequest", fmt.Sprintf("%+v", saveArtistSystemRequest)) sentry.CaptureMessage("经纪人更新银行信息") }) }() jwt, _, _ := asUser.ParseTokenFromHttpHeader(c) //获取原始的银行卡信息,用于添加到历史记录 originData, errs := service.GrpcArtistInfoArtshowImpl.GetBankInfo(c, &artistinfoArtshow.GetBankInfoRequest{ArtistUid: request.ArtistUid}) if errs != nil { zap.L().Error("GrpcPayBillImpl.Record Error", zap.Error(errs)) } _, err := service.GrpcArtistInfoArtshowImpl.UpdateBankInfo(c, updateBankInfoRequest) if err != nil { service.ErrorWithMark(c, e.Failed, err, "UpdateBankInfo: GrpcArtistInfoArtshowImpl.UpdateBankInfo Error", err.Error()) return } _, err = service.GrpcArtistImpl.SaveArtistBankInfo(context.Background(), saveArtistSystemRequest) if err != nil { service.ErrorWithMark(c, e.Failed, err, "UpdateBankInfo: GrpcArtistImpl.SaveArtistBankInfo Error", err.Error()) return } //按要求添加联行号更新记录 go func() { var ( originBankNum string originBankName string originBankCode string ) if originData != nil { originBankNum = originData.BankNum originBankName = originData.BankName originBankCode = originData.BankCode } //添加i记录 var name = "画家宝经纪人" var userId uint32 = 0 if jwt != nil && jwt.NickName != "" { name = jwt.NickName } req1 := paybill.RecordReq{ ArtistUid: request.ArtistUid, OldArtist: &paybill.Artist{ BankNum: originBankNum, BankCode: originBankCode, BankName: originBankName, }, NewArtist: &paybill.Artist{ BankNum: request.BankNum, BankCode: request.BankCode, BankName: request.BankName, }, OperatorId: userId, OperatorName: name, } // 账单列表 _, err = service.GrpcPayBillImpl.Record(context.Background(), &req1) if err != nil { zap.L().Error("GrpcPayBillImpl.Record Error", zap.Error(err)) return } }() service.Success(c) } func (b brokerOperationController) GetBankInfo(c *gin.Context) { var request UpdateBankInfoRequest if err := c.ShouldBindJSON(&request); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "GetBankInfo: ShouldBindJSON Error", err.Error()) return } if request.ArtistUid == "" { service.Error(c, e.InvalidParams, nil, "画家uid不能为空") return } bankInfoRes, err := service.GrpcArtistInfoArtshowImpl.GetBankInfo(c, &artistinfoArtshow.GetBankInfoRequest{ ArtistUid: request.ArtistUid, }) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GetBankInfo: GrpcArtistInfoArtshowImpl.UpdateBankInfo Error", err.Error()) return } fmt.Println(" bankInfoRes.LatestBrokerUpdateBankInfoAt", bankInfoRes.LatestBrokerUpdateBankInfoAt) var resp = GetBankInfoResp{ ArtistUid: request.ArtistUid, BankNum: bankInfoRes.BankNum, BankName: bankInfoRes.BankName, LBankName: bankInfoRes.LBankName, BankCode: bankInfoRes.BankCode, BankArea: utils.If(bankInfoRes.BankArea == "", []string{}, strings.Split(bankInfoRes.BankArea, ",")).([]string), EditStatus: b.CheckDataEditStatus(bankInfoRes.BankNum == "" && bankInfoRes.BankName == "", bankInfoRes.CreatedAt, bankInfoRes.LatestBrokerUpdateBankInfoAt, request.ArtistUid), } service.Success(c, resp) } func (b brokerOperationController) GetCopyrightCommentList(c *gin.Context) { var request GetCopyrightCommentListRequest if err := c.ShouldBindJSON(&request); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "GetArtistSupplementEditStatusV2: ShouldBindJSON Error", err.Error()) return } if request.ArtistUid == "" { service.Error(c, e.InvalidParams, nil, "画家uid不能为空") return } commentRes, err := service.GrpcCopyrightImpl.SupplementList(c, &digital_copyright.SupplementListReq{ Page: 1, PageSize: -1, ArtistUuid: request.ArtistUid, ArtworkUidList: nil, }) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GetArtistSupplementEditStatusV2: GrpcArtistInfoArtworkImpl.GetArtistSupplementList Error", err.Error()) return } var data = make([]CopyrightCommentListType, 0) for _, v := range commentRes.Data { v := v createdAt := time.Unix(v.CreatedAt, 0).Format(stime.Format_Normal_YMDhms) data = append(data, CopyrightCommentListType{ //SuppId: v.SuppId, //WorkName: v.WorkName, //Tfnum: v.Tfnum, //AuthorName: v.AuthorName, //WorkFileUrl: v.WorkFileUrl, //CopyrightId: v.CopyrightId, //ArtistUuid: v.ArtistUuid, //ArtworkUuid: v.ArtworkUuid, //RemarkBrokerUpdatedAt: v.RemarkBrokerUpdatedAt, //RemarkUpdatedAt: v.RemarkUpdatedAt, SupplementListResp_Info: v, Status: b.CheckDataEditStatus(v.RemarkDataIsEmpty, createdAt, v.RemarkBrokerUpdatedAt, request.ArtistUid), }) } service.Success(c, data) } func (b brokerOperationController) GetCopyrightCommentDetail(c *gin.Context) { var request digital_copyright.SupplementDetailReq if err := c.ShouldBindJSON(&request); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "GetArtistSupplementEditStatusV2: ShouldBindJSON Error", err.Error()) return } v, err := service.GrpcCopyrightImpl.SupplementDetail(c, &request) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GetCopyrightCommentDetail: GrpcArtistInfoArtworkImpl.SupplementDetail Error", err.Error()) return } createdAt := time.Unix(v.CreatedAt, 0).Format(stime.Format_Normal_YMDhms) var data = CopyrightCommentType{ //SuppId: v.SuppId, //WorkName: v.WorkName, //Tfnum: v.Tfnum, //AuthorName: v.AuthorName, //WorkFileUrl: v.WorkFileUrl, //CopyrightId: v.CopyrightId, //ArtistUuid: v.ArtistUuid, //ArtworkUuid: v.ArtworkUuid, //RemarkBrokerUpdatedAt: v.RemarkBrokerUpdatedAt, //RemarkUpdatedAt: v.RemarkUpdatedAt, SupplementDetailResp: v, Status: b.CheckDataEditStatus(v.RemarkDataIsEmpty, createdAt, v.RemarkBrokerUpdatedAt, v.ArtistUuid), } service.Success(c, data) } func (b brokerOperationController) UpdateCopyrightComment(c *gin.Context) { var request digital_copyright.UpdateSupplementReq if err := c.ShouldBindJSON(&request); err != nil { service.ErrorWithMark(c, e.InvalidParams, err, "GetArtistSupplementEditStatusV2: ShouldBindJSON Error", err.Error()) return } var now = time.Now().Format(stime.Format_Normal_YMDhms) request.RemarkBrokerUpdatedAt = now request.RemarkUpdatedAt = now _, err := service.GrpcCopyrightImpl.UpdateSupplement(c, &request) if err != nil { service.ErrorWithMark(c, e.Failed, err, "UpdateCopyrightComment: GrpcCopyrightImpl.UpdateSupplement Error", err.Error()) return } service.Success(c) }