package asStatement import ( "context" "encoding/json" "fmt" "strconv" "strings" "time" "dubbo.apache.org/dubbo-go/v3/common/logger" "github.com/360EntSecGroup-Skylar/excelize" "github.com/fonchain_enterprise/fonchain-main/api/artistInfoStatement" "github.com/fonchain_enterprise/fonchain-main/api/artwork_third_party" "github.com/fonchain_enterprise/fonchain-main/pkg/e" "github.com/fonchain_enterprise/fonchain-main/pkg/serializer" "github.com/fonchain_enterprise/fonchain-main/pkg/service" "github.com/gin-gonic/gin" ) func UploadExcelOneTx(c *gin.Context) { var uploadExcelOneTxRequest artistInfoStatement.UploadExcelOneTxRequest file, err := c.FormFile("file") if err != nil { logger.Errorf("读取文件失败", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } f, err := file.Open() if err != nil { logger.Errorf("读取文件失败", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } fe, err := excelize.OpenReader(f) if err != nil { logger.Errorf("读取文件失败", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } rows := fe.GetRows("附件一") // if err != nil { logger.Errorf("读取文件失败", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } //获取批次时间 batchTime := getBatchTime(rows[1][0]) for i := 3; i < len(rows); i++ { excelOneInfo := &artistInfoStatement.ExcelOneInfo{} row := rows[i] tfnums := []string{row[1]} //根据画作编号获取画家uid awInfoByKeyReq := artwork_third_party.AwInfoByKeyReq{ Tfnums: tfnums, } resp, err := service.GrpcArtworkThirdPartyImpl.AwInfoByKey(context.Background(), &awInfoByKeyReq) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } if resp == nil { logger.Errorf("AwInfoByKey接口没有获取到值") fmt.Println("AwInfoByKey接口没有获取到值") return } var artistid string if resp.Data != nil { artistid = resp.Data[row[1]].ArtistUuid } fmt.Println("artistid", artistid) //string 转 float ruler, err := strconv.ParseFloat(row[3], 32) fmt.Println("ruler", ruler) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } minPrice, err := strconv.ParseFloat(row[4], 32) fmt.Println("minPrice", minPrice) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } guaranteePrice, err := strconv.ParseFloat(row[5], 32) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } excelOneInfo.ArtistUid = artistid excelOneInfo.BatchTime = batchTime excelOneInfo.ArtistName = row[0] excelOneInfo.TfNum = row[1] excelOneInfo.ArtworkName = row[2] excelOneInfo.Ruler = float32(ruler) excelOneInfo.MinPrice = float32(minPrice) excelOneInfo.GuaranteePrice = float32(guaranteePrice) uploadExcelOneTxRequest.ExcelOneInfo = append(uploadExcelOneTxRequest.ExcelOneInfo, excelOneInfo) } fmt.Println("uploadExcelOneTxRequest", uploadExcelOneTxRequest.ExcelOneInfo) rep, err := service.GrpcArtistInfoStatementsImpl.UploadExcelOneTx(context.Background(), &uploadExcelOneTxRequest) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: rep.Msg, Status: e.Ok, Data: rep, }) } func UploadExcelTwoTx(c *gin.Context) { var uploadExcelTwoTxRequest artistInfoStatement.UploadExcelTwoTxRequest file, err := c.FormFile("file") if err != nil { logger.Errorf("读取文件失败", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } f, err := file.Open() if err != nil { logger.Errorf("读取文件失败", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } fe, err := excelize.OpenReader(f) if err != nil { logger.Errorf("读取文件失败", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } rows := fe.GetRows("附件二") // if err != nil { logger.Errorf("读取文件失败", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } //获取批次时间 batchTime := getBatchTime(rows[1][0]) for i := 3; i < len(rows); i++ { excelTwoInfo := &artistInfoStatement.ExcelTwoInfo{} row := rows[i] //根据画作编号获取画家uid tfnums := []string{row[1]} awInfoByKeyReq := artwork_third_party.AwInfoByKeyReq{ Tfnums: tfnums, } resp, err := service.GrpcArtworkThirdPartyImpl.AwInfoByKey(context.Background(), &awInfoByKeyReq) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } if resp == nil { logger.Errorf("AwInfoByKey接口没有获取到值") fmt.Println("AwInfoByKey接口没有获取到值") return } var artistid string if resp.Data != nil { artistid = resp.Data[row[1]].ArtistUuid } //string 转 float ruler, err := strconv.ParseFloat(row[3], 32) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } salePrice, err := strconv.ParseFloat(row[6], 32) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } //string 转 int i, err := strconv.Atoi(row[5]) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } excelTwoInfo.ArtistUid = artistid excelTwoInfo.BatchTime = batchTime excelTwoInfo.ArtistName = row[0] excelTwoInfo.TfNum = row[1] excelTwoInfo.ArtworkName = row[2] excelTwoInfo.Ruler = float32(ruler) excelTwoInfo.SaleNo = row[4] excelTwoInfo.CompleteDate = time.Date(1900, 1, 1, 0, 0, 0, 0, time.UTC).AddDate(0, 0, i-2).Format("2006年1月2日") excelTwoInfo.SalePrice = float32(salePrice) uploadExcelTwoTxRequest.ExcelTwoInfo = append(uploadExcelTwoTxRequest.ExcelTwoInfo, excelTwoInfo) } rep, err := service.GrpcArtistInfoStatementsImpl.UploadExcelTwoTx(context.Background(), &uploadExcelTwoTxRequest) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: rep.Msg, Status: e.Ok, Data: rep, }) } func UploadExcelOneCopy(c *gin.Context) { var uploadExcelOneCopyRequest artistInfoStatement.UploadExcelOneCopyRequest file, err := c.FormFile("file") if err != nil { logger.Errorf("读取文件失败", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } f, err := file.Open() if err != nil { logger.Errorf("读取文件失败", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } fe, err := excelize.OpenReader(f) if err != nil { logger.Errorf("读取文件失败", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } rows := fe.GetRows("附件一") if err != nil { logger.Errorf("读取文件失败", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } //获取批次时间 batchTime := getBatchTime(rows[1][0]) for i := 3; i < len(rows); i++ { excelOneInfo := &artistInfoStatement.ExcelOneInfo{} row := rows[i] copyrightNumber := []string{row[1]} //根据画作编号获取画家uid awInfoByKeyReq := artwork_third_party.AwInfoByKeyReq{ CopyrightNumbers: copyrightNumber, } resp, err := service.GrpcArtworkThirdPartyImpl.AwInfoByKey(context.Background(), &awInfoByKeyReq) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } if resp == nil { logger.Errorf("AwInfoByKey接口没有获取到值") fmt.Println("AwInfoByKey接口没有获取到值") return } var artistid string if resp.Data != nil { artistid = resp.Data[row[1]].ArtistUuid } //string 转 float ruler, err := strconv.ParseFloat(row[3], 32) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } minPrice, err := strconv.ParseFloat(row[4], 32) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } guaranteePrice, err := strconv.ParseFloat(row[5], 32) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } excelOneInfo.ArtistUid = artistid excelOneInfo.BatchTime = batchTime excelOneInfo.ArtistName = row[0] excelOneInfo.TfNum = row[1] excelOneInfo.ArtworkName = row[2] excelOneInfo.Ruler = float32(ruler) excelOneInfo.MinPrice = float32(minPrice) excelOneInfo.GuaranteePrice = float32(guaranteePrice) uploadExcelOneCopyRequest.ExcelOneInfo = append(uploadExcelOneCopyRequest.ExcelOneInfo, excelOneInfo) } rep, err := service.GrpcArtistInfoStatementsImpl.UploadExcelOneCopy(context.Background(), &uploadExcelOneCopyRequest) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: rep.Msg, Status: e.Ok, Data: rep, }) } func UploadExcelTwoCopy(c *gin.Context) { var uploadExcelTwoCopyRequest artistInfoStatement.UploadExcelTwoCopyRequest file, err := c.FormFile("file") if err != nil { logger.Errorf("读取文件失败", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } f, err := file.Open() if err != nil { logger.Errorf("读取文件失败", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } fe, err := excelize.OpenReader(f) if err != nil { logger.Errorf("读取文件失败", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } rows := fe.GetRows("附件二") // if err != nil { logger.Errorf("读取文件失败", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) } fmt.Println("len(rows)", len(rows)) fmt.Println("rows(3)", rows[3]) //获取批次时间 batchTime := getBatchTime(rows[1][0]) for i := 3; i < len(rows); i++ { excelTwoInfo := &artistInfoStatement.ExcelTwoInfo{} row := rows[i] //根据画作编号获取画家uid fmt.Println("第一处") fmt.Println("row[1]值为:", row[1]) copyrightNumber := []string{row[1]} awInfoByKeyReq := artwork_third_party.AwInfoByKeyReq{ CopyrightNumbers: copyrightNumber, } fmt.Println("第二处") resp, err := service.GrpcArtworkThirdPartyImpl.AwInfoByKey(context.Background(), &awInfoByKeyReq) fmt.Println("第三处") fmt.Println("第四处", err) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } fmt.Println("第五处") if resp == nil { logger.Errorf("AwInfoByKey接口没有获取到值") fmt.Println("AwInfoByKey接口没有获取到值") return } var artistid string if resp.Data != nil { artistid = resp.Data[row[1]].ArtistUuid } //string 转 float ruler, err := strconv.ParseFloat(row[3], 32) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } salePrice, err := strconv.ParseFloat(row[6], 32) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } //string 转 int i, err := strconv.Atoi(row[5]) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } excelTwoInfo.ArtistUid = artistid excelTwoInfo.BatchTime = batchTime excelTwoInfo.ArtistName = row[0] excelTwoInfo.TfNum = row[1] excelTwoInfo.ArtworkName = row[2] excelTwoInfo.Ruler = float32(ruler) excelTwoInfo.SaleNo = row[4] excelTwoInfo.CompleteDate = time.Date(1900, 1, 1, 0, 0, 0, 0, time.UTC).AddDate(0, 0, i-2).Format("2006年1月2日") excelTwoInfo.SalePrice = float32(salePrice) uploadExcelTwoCopyRequest.ExcelTwoInfo = append(uploadExcelTwoCopyRequest.ExcelTwoInfo, excelTwoInfo) } rep, err := service.GrpcArtistInfoStatementsImpl.UploadExcelTwoCopy(context.Background(), &uploadExcelTwoCopyRequest) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: rep.Msg, Status: e.Ok, Data: rep, }) } func GetAllBatchTimeTx(c *gin.Context) { var getAllBatchTimeTxRequest artistInfoStatement.GetAllBatchTimeTxRequest rep, err := service.GrpcArtistInfoStatementsImpl.GetAllBatchTimeTx(context.Background(), &getAllBatchTimeTxRequest) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } if rep != nil && rep.BatchTime == nil { rep.BatchTime = []string{} } service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: rep.Msg, Status: e.Ok, Data: rep, }) } func GetAllBatchTimeCopy(c *gin.Context) { var getAllBatchTimeCopyRequest artistInfoStatement.GetAllBatchTimeCopyRequest rep, err := service.GrpcArtistInfoStatementsImpl.GetAllBatchTimeCopy(context.Background(), &getAllBatchTimeCopyRequest) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } if rep != nil && rep.BatchTime == nil { rep.BatchTime = []string{} } service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: rep.Msg, Status: e.Ok, Data: rep, }) } func GetArtworkSoldTxList(c *gin.Context) { var getArtworkSoldTxListRequest artistInfoStatement.GetArtworkSoldTxListRequest if err := c.ShouldBind(&getArtworkSoldTxListRequest); err != nil { logger.Errorf("getTxArtistListRequest ShouldBind err", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) return } rep, err := service.GrpcArtistInfoStatementsImpl.GetArtworkSoldTxList(context.Background(), &getArtworkSoldTxListRequest) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } if rep != nil && rep.ArtistList == nil { rep.ArtistList = []*artistInfoStatement.ArtistList{} } //service.ResponseMsg(c, e.SUCCESS, serializer.Response{ // Msg: rep.Msg, // Status: e.Ok, // Data: rep, //}) //新增字段 artistArtshowCount var listMap []map[string]any jsonBytes, _ := json.Marshal(rep.ArtistList) json.Unmarshal(jsonBytes, &listMap) service.FillArtshowCount(listMap, "artistUid") var newResp = map[string]any{ "artist_list": listMap, "Total": rep.Total, "msg": rep.Msg, } service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: rep.Msg, Status: e.Ok, Data: newResp, }) } func GetArtworkSoldTxDetailList(c *gin.Context) { var getArtworkSoldTxDetailListRequest artistInfoStatement.GetArtworkSoldTxDetailListRequest if err := c.ShouldBind(&getArtworkSoldTxDetailListRequest); err != nil { logger.Errorf("getTxArtistListRequest ShouldBind err", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) return } rep, err := service.GrpcArtistInfoStatementsImpl.GetArtworkSoldTxDetailList(context.Background(), &getArtworkSoldTxDetailListRequest) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } if rep != nil && rep.ArtworkSoldDetailList == nil { rep.ArtworkSoldDetailList = []*artistInfoStatement.ArtworkSoldDetailList{} } service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: rep.Msg, Status: e.Ok, Data: rep, }) } func GetArtworkSoldCopyList(c *gin.Context) { var getArtworkSoldCopyListRequest artistInfoStatement.GetArtworkSoldCopyListRequest if err := c.ShouldBind(&getArtworkSoldCopyListRequest); err != nil { logger.Errorf("getArtworkSoldCopyDetailListRequest ShouldBind err", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) return } fmt.Println("getArtworkSoldCopyListRequest", getArtworkSoldCopyListRequest) rep, err := service.GrpcArtistInfoStatementsImpl.GetArtworkSoldCopyList(context.Background(), &getArtworkSoldCopyListRequest) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } if rep != nil && rep.ArtistList == nil { rep.ArtistList = []*artistInfoStatement.ArtistList{} } //service.ResponseMsg(c, e.SUCCESS, serializer.Response{ // Msg: rep.Msg, // Status: e.Ok, // Data: rep, //}) //新增字段 artistArtshowCount var listMap []map[string]any jsonBytes, _ := json.Marshal(rep.ArtistList) json.Unmarshal(jsonBytes, &listMap) service.FillArtshowCount(listMap, "artistUid") var newResp = map[string]any{ "artist_list": listMap, "Total": rep.Total, "msg": rep.Msg, } service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: rep.Msg, Status: e.Ok, Data: newResp, }) } func GetArtworkSoldCopyDetailList(c *gin.Context) { var getArtworkSoldCopyDetailListRequest artistInfoStatement.GetArtworkSoldCopyDetailListRequest if err := c.ShouldBind(&getArtworkSoldCopyDetailListRequest); err != nil { logger.Errorf("getArtworkSoldCopyDetailListRequest ShouldBind err", err) service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: nil, Msg: err.Error(), Status: e.Failed, }) return } rep, err := service.GrpcArtistInfoStatementsImpl.GetArtworkSoldCopyDetailList(context.Background(), &getArtworkSoldCopyDetailListRequest) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } if rep != nil && rep.ArtworkSoldDetailList == nil { rep.ArtworkSoldDetailList = []*artistInfoStatement.ArtworkSoldDetailList{} } service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: rep.Msg, Status: e.Ok, Data: rep, }) } // 操作批次时间 func getBatchTime(oldBatchTime string) (batchTime string) { batchArr := strings.Split(oldBatchTime, "-") batchName := batchArr[0] + "-" + batchArr[1] data := strings.Split(batchName, "-") startMd := strings.Split(data[0], "年") startYear := startMd[0] startM := strings.Split(startMd[1], "月") startMonth := startM[0] if len(startMonth) == 1 { startMonth = "0" + startMonth } endMd := strings.Split(data[1], "年") endYear := endMd[0] endM := strings.Split(endMd[1], "月") endMonth := endM[0] if len(endMonth) == 1 { endMonth = "0" + endMonth } batchTime = startYear + startMonth + "-" + endYear + endMonth return }