package service import ( "context" "dubbo.apache.org/dubbo-go/v3/common/logger" "fmt" artShow "github.com/fonchain_enterprise/fonchain-main/api/artShow" "github.com/fonchain_enterprise/fonchain-main/api/artwork_query" "github.com/fonchain_enterprise/fonchain-main/api/artwork_shop" "github.com/fonchain_enterprise/fonchain-main/pkg/e" "github.com/fonchain_enterprise/fonchain-main/pkg/model" "github.com/fonchain_enterprise/fonchain-main/pkg/model/model_artwork_shop" "github.com/fonchain_enterprise/fonchain-main/pkg/serializer" "github.com/gin-gonic/gin" "github.com/jinzhu/copier" "go.uber.org/zap" "google.golang.org/protobuf/types/known/wrapperspb" ) func AwShopList(c *gin.Context) { var detailRequest artwork_query.ArtworkListRequest var awReq model.AwListReq if err := c.ShouldBind(&awReq); err != nil { logger.Errorf("AwShopList ShouldBind err", err) ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } if err := copier.Copy(&detailRequest, awReq); err != nil { ResponseQuickMsg(c, e.Failed, err.Error(), nil) return } if awReq.StorageStatus == nil { detailRequest.StorageStatus = nil } else { detailRequest.StorageStatus = &wrapperspb.Int32Value{Value: *awReq.StorageStatus} } if awReq.SaleStatus == nil { detailRequest.SaleStatus = nil } else { detailRequest.SaleStatus = &wrapperspb.Int32Value{Value: *awReq.SaleStatus} } resp, err := GrpcArtworkQueryImpl.ArtworkList(context.Background(), &detailRequest) if err != nil { ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } if len(resp.Data) == 0 { resp.Data = []*artwork_query.ArtworkListResponse_Info{} } var data []*model_artwork_shop.ArtworkOrderInfo var tfnumData = make([]string, 0, len(resp.Data)) for _, v := range resp.Data { if v.Tfnum != "" { tfnumData = append(tfnumData, v.Tfnum) } if v.BlackListStatus == 2 { v.ArtistName = fmt.Sprintf("#%s", v.ArtistName) } } var orderReq artwork_shop.OrderListReq orderReq.Tfnums = tfnumData shopResp, errS := GrpcArtworkShopImpl.OrderList(context.Background(), &orderReq) if errS != nil { ResponseQuickMsg(c, e.Failed, errS.Error(), nil) return } var tfnumShopData map[string][]*model_artwork_shop.OrderInfo = map[string][]*model_artwork_shop.OrderInfo{} // 遍历组装 if len(shopResp.Data) > 0 { for _, v := range shopResp.Data { if tfnumShopData[v.Tfnum] == nil { tfnumShopData[v.Tfnum] = []*model_artwork_shop.OrderInfo{} } var temp model_artwork_shop.OrderInfo err := copier.Copy(&temp, v) if err != nil { return } tfnumShopData[v.Tfnum] = append(tfnumShopData[v.Tfnum], &temp) } } var artistUuids []string for _, v := range resp.Data { var temp model_artwork_shop.ArtworkOrderInfo _ = copier.Copy(&temp, v) var orderData []*model_artwork_shop.OrderInfo orderData = tfnumShopData[v.Tfnum] //查询画作订单 if len(orderData) > 0 { for _, vv := range orderData { var orderTmp model_artwork_shop.OrderInfo if vv.ConsignerCardId != "" && len(vv.ConsignerCardId) >= 8 { vv.ConsignerCardId = vv.ConsignerCardId[len(vv.ConsignerCardId)-8:] } if vv.BuyerCardId != "" && len(vv.BuyerCardId) >= 8 { vv.BuyerCardId = vv.BuyerCardId[len(vv.BuyerCardId)-8:] } _ = copier.Copy(&orderTmp, vv) temp.OrderData = append(temp.OrderData, &orderTmp) } } temp.ArtistUuid = v.ArtistUuid temp.ArtistShowCount = fmt.Sprintf("%s(0)", v.ArtistName) artistUuids = append(artistUuids, v.ArtistUuid) data = append(data, &temp) } artshowResp, _err := GrpcArtShowImpl.ArtistExhibitionCount(context.Background(), &artShow.ArtistExhibitionCountReq{ArtistUid: artistUuids}) if _err != nil { zap.L().Error("artist ArtistExhibitionCount err", zap.Error(_err)) } if artshowResp != nil && len(artshowResp.ArtistShowCount) > 0 { for k, v := range data { for _, v1 := range artshowResp.ArtistShowCount { if v.ArtistUuid == v1.ArtistUid { data[k].ArtistShowCount = fmt.Sprintf("%s(%d)", v.ArtistName, v1.ShowCount) break } } } } var respData model_artwork_shop.AwListShop respData.Data = data respData.Count = resp.Count ResponseQuickMsg(c, e.Ok, resp.Msg, respData) return } func SyncOrder(c *gin.Context) { var req artwork_shop.SyncHistoryReq //if err := c.ShouldBind(&req); err != nil { // ResponseQuickMsg(c, e.Failed, err.Error(), nil) // return //} //if err := req.Validate(); err != nil { // err = common.SubstrError(err) // ResponseQuickMsg(c, e.Failed, err.Error(), nil) // return //} resp, err := GrpcArtworkShopImpl.SyncHistory(context.Background(), &req) if err != nil { ResponseQuickMsg(c, e.Failed, err.Error(), nil) return } ResponseQuickMsg(c, e.Ok, resp.Msg, resp) return }