From 0c4a8ac8287fdf08cb2152aa2ab2409dab5034ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 7 Aug 2023 16:45:40 +0800 Subject: [PATCH] 1 --- business/jxcallback/orderman/order.go | 11 +- business/jxstore/misc/misc.go | 144 +++++++++--------- business/model/dao/tao_sku_img.go | 16 ++ business/model/sku.go | 18 +-- business/model/tao_sku_img.go | 18 +++ .../purchase/tao_vegetable/store_sku2.go | 97 +++++++++--- globals/beegodb/beegodb.go | 1 + 7 files changed, 193 insertions(+), 112 deletions(-) create mode 100644 business/model/dao/tao_sku_img.go create mode 100644 business/model/tao_sku_img.go diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 679172eec..e25da2483 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -2686,17 +2686,16 @@ func UpdateTiktokShopTotalMoney() { func UpdateTaoSettleInfo() { db := dao.GetDB() - storeMaps, err := dao.GetStoresMapList(db, []int{model.VendorIDTaoVegetable}, []int{667321}, nil, -9, -1, "", "", "") + storeMaps, err := dao.GetStoresMapList(db, []int{model.VendorIDTaoVegetable}, nil, nil, -9, -1, "", "", "") if err != nil { return } - globals.SugarLogger.Debugf("GetStoresMapList ========== %s", utils.Format4Output(storeMaps, false)) - timeStart := time.Now().Add(-72 * time.Hour) + timeStart := time.Now().Add(-24 * 90 * time.Hour) startTime := time.Date(timeStart.Year(), timeStart.Month(), timeStart.Day(), 0, 0, 0, 0, timeStart.Location()) + timeEnd := time.Now() endTiem := time.Date(timeEnd.Year(), timeEnd.Month(), timeEnd.Day()-1, 23, 59, 59, 0, timeStart.Location()) for _, v := range storeMaps { - globals.SugarLogger.Debugf("=============UpdateTaoSettleInfo := %s", utils.Format4Output(v, false)) settleInfo, err := tao.GetOrderTotalShopMoney(v.VendorOrgCode, v.VendorStoreID, startTime, endTiem) if err != nil { globals.SugarLogger.Errorf("获取淘鲜达结算信息异常 := %v", err) @@ -2708,7 +2707,6 @@ func UpdateTaoSettleInfo() { } for orderId2, settle := range settleInfo { - globals.SugarLogger.Debugf("=============settleInfo := %s,%s", utils.Format4Output(orderId2, false), settle) goodsOrder, err := partner.CurOrderManager.LoadOrder2(orderId2, model.VendorIDTaoVegetable) if err != nil || goodsOrder == nil { globals.SugarLogger.Debugf("门店[%d:%s],订单查询异常[%s:%v]", v.StoreID, v.StoreName, orderId2, err) @@ -2728,7 +2726,8 @@ func UpdateTaoSettleInfo() { } } } - if _, err := dao.UpdateEntity(db, v, "TotalShopMoney", "NewEarningPrice"); err != nil { + globals.SugarLogger.Debugf("更新本地订单结算信息 := %s,%d", goodsOrder.VendorOrderID, goodsOrder.TotalShopMoney) + if _, err := dao.UpdateEntity(db, goodsOrder, "TotalShopMoney", "NewEarningPrice"); err != nil { globals.SugarLogger.Errorf("更新本地订单结算信息错误 : %s", err) continue } diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 997649bca..327ba08b1 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -676,78 +676,78 @@ var beijin = []int{ //669094, //669093, //669092, - 669091, - 669087, - 669086, - 669085, - 669084, // zheer - 669083, - 669082, - 669079, - 669078, - 669077, - 669075, - 669074, - 669072, - 669070, - 669067, - 669064, - 669063, - 669062, - 669060, - 669059, - 669056, - 669055, - 669054, - 669050, - 669049, - 669047, - 669046, - 669045, - 669042, - 669041, - 669038, - 669036, - 669035, - 669033, - 669032, - 669031, - 669027, - 669025, - 669024, - 669022, - 669021, - 669020, - 669017, - 669015, - 669014, - 669012, - 669009, - 669007, - 669002, - 669000, - 668999, - 668997, - 668996, - 668993, - 668988, - 668986, - 668984, - 668966, - 668963, - 668961, - 668958, - 668954, - 668950, - 668948, - 668946, - 668943, - 668938, - 668928, - 668910, - 668907, - 668900, - 668897, + //669091, + //669087, + //669086, + //669085, + //669084, // zheer + //669083, + //669082, + //669079, + //669078, + //669077, + //669075, + //669074, + //669072, + //669070, + //669067, + //669064, + //669063, + //669062, + //669060, + //669059, + //669056, + //669055, + //669054, + //669050, + //669049, + //669047, // + //669046, + //669045, + //669042, + //669041, + //669038, + //669036, + //669035, + //669033, + //669032, // zher + //669031, + //669027, + //669025, + //669024, + //669022, + //669021, + //669020, + //669017, + //669015, /// zher + //669014, + //669012, + //669009, + //669007, + //669002, + //669000, + //668999, + //668997, + //668996, + //668993, // + //668988, + //668986, + //668984, + //668966, + //668963, + //668961, + //668958, + //668954, + //668950, + //668948, + //668946, + //668943, /// + //668938, + //668928, + //668910, + //668907, + //668900, + //668897, 668896, 668891, 668889, diff --git a/business/model/dao/tao_sku_img.go b/business/model/dao/tao_sku_img.go new file mode 100644 index 000000000..6d206a49e --- /dev/null +++ b/business/model/dao/tao_sku_img.go @@ -0,0 +1,16 @@ +package dao + +import "git.rosy.net.cn/jx-callback/business/model" + +func GetVendorImg(skuId, vendorId int) (*model.TaoSkuImg, error) { + result := &model.TaoSkuImg{} + + sql := ` SELECT * FROM tao_sku_img WHERE sku_id = ? AND vendor_id = ?` + parma := []interface{}{skuId, vendorId} + + if err := GetRow(GetDB(), result, sql, parma); err != nil { + return nil, err + } + + return result, nil +} diff --git a/business/model/sku.go b/business/model/sku.go index e083b4254..248ebdf52 100644 --- a/business/model/sku.go +++ b/business/model/sku.go @@ -162,15 +162,15 @@ type SkuName struct { ExPrefixBegin *time.Time `orm:"null" json:"exPrefixBegin"` ExPrefixEnd *time.Time `orm:"null" json:"exPrefixEnd"` ExVendorID int `orm:"column(ex_vendor_id)" json:"exVendorID"` - BrandID int `orm:"column(brand_id);default(0)" json:"brandID"` // todo,此属性暂时没有使用,且有问题,应该是不同平台都有一个brandid - CategoryID int `orm:"column(category_id);index" json:"categoryID"` // 标准类别 - JdCategoryID int64 `orm:"column(jd_category_id)" json:"jdCategoryID"` // 这个是指对应的京东商品类别 - IsGlobal int8 `orm:"default(1)" json:"isGlobal"` // 是否是全部(全国)可见,如果否的话,可见性由SkuPlace决定 - Unit string `orm:"size(8)" json:"unit"` - SpecQuality float32 `json:"-"` // 为份必然为500,这个主要作用只是用于确保SkuName的唯一性 - SpecUnit string `orm:"size(8)" json:"-"` // 为份必然为克,这个主要作用只是用于确保SkuName的唯一性 - Price int `json:"price"` // 单位为分,标准价,不为份的就为实际标准价,为份的为每市斤价,实际还要乘质量。todo 为份的确定必须有质量 - Img string `orm:"size(512)" json:"img"` + BrandID int `orm:"column(brand_id);default(0)" json:"brandID"` // todo,此属性暂时没有使用,且有问题,应该是不同平台都有一个brandid + CategoryID int `orm:"column(category_id);index" json:"categoryID"` // 标准类别 + JdCategoryID int64 `orm:"column(jd_category_id)" json:"jdCategoryID"` // 这个是指对应的京东商品类别 + IsGlobal int8 `orm:"default(1)" json:"isGlobal"` // 是否是全部(全国)可见,如果否的话,可见性由SkuPlace决定 + Unit string `orm:"size(8)" json:"unit"` // + SpecQuality float32 `json:"-"` // 为份必然为500,这个主要作用只是用于确保SkuName的唯一性 + SpecUnit string `orm:"size(8)" json:"-"` // 为份必然为克,这个主要作用只是用于确保SkuName的唯一性 + Price int `json:"price"` // 单位为分,标准价,不为份的就为实际标准价,为份的为每市斤价,实际还要乘质量。todo 为份的确定必须有质量 + Img string `orm:"size(512)" json:"img"` // Img2 string `orm:"size(512)" json:"img2"` // 第二张图片 Img3 string `orm:"size(512)" json:"img3"` //第三张图片 Img4 string `orm:"size(512)" json:"img4"` //第三张图片 diff --git a/business/model/tao_sku_img.go b/business/model/tao_sku_img.go new file mode 100644 index 000000000..a3224a371 --- /dev/null +++ b/business/model/tao_sku_img.go @@ -0,0 +1,18 @@ +package model + +type TaoSkuImg struct { + SkuID int `orm:"column(sku_id)"` + VendorID int `orm:"column(vendor_id)" json:"vendorID"` + Img string `orm:"size(512)" json:"img"` + Img2 string `orm:"size(512)" json:"img2"` // 第二张图片 + Img3 string `orm:"size(512)" json:"img3"` //第三张图片 + Img4 string `orm:"size(512)" json:"img4"` //第三张图片 + Img5 string `orm:"size(512)" json:"img5"` //第三张图片 + DescImg string `orm:"size(512)" json:"descImg"` // 商品详情图片描述 +} + +func (*TaoSkuImg) TableUnique() [][]string { + return [][]string{ + []string{"SkuID", "VendorID"}, + } +} diff --git a/business/partner/purchase/tao_vegetable/store_sku2.go b/business/partner/purchase/tao_vegetable/store_sku2.go index 4aa9f8c7a..fef92296b 100644 --- a/business/partner/purchase/tao_vegetable/store_sku2.go +++ b/business/partner/purchase/tao_vegetable/store_sku2.go @@ -253,7 +253,7 @@ func UpdateTaoVegetable(api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSync updateSku.PurchaseQuantity = utils.Int64ToPointer(int64(v.MinOrderCount)) // 起购单位 } // 修改暂时不修改图片,保持效率 - updateSku.SkuPicUrls = uploadImg(api, []string{v.Img, v.Img2, v.Img3, v.Img4, v.Img5, v.DescImg}) + updateSku.SkuPicUrls = uploadImg(api, v.SkuID, model.VendorIDTaoVegetable, []string{v.Img, v.Img2, v.Img3, v.Img4, v.Img5, v.DescImg}) if updateSku.SkuPicUrls == nil { continue } @@ -323,7 +323,7 @@ func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSku RichText: utils.String2Pointer(storeSku.Name), AllowAppSale: utils.Int64ToPointer(tao_vegetable.IsAllowAppSale), } - sku.SkuPicUrls = uploadImg(api, []string{storeSku.Img, storeSku.Img2, storeSku.Img3, storeSku.Img4, storeSku.Img5, storeSku.DescImg}) + sku.SkuPicUrls = uploadImg(api, storeSku.SkuID, model.VendorIDTaoVegetable, []string{storeSku.Img, storeSku.Img2, storeSku.Img3, storeSku.Img4, storeSku.Img5, storeSku.DescImg}) if sku.SkuPicUrls == nil { continue } @@ -441,34 +441,81 @@ func checkNameLength(name string, weight int, uint string) string { return lastName[0:60] } -func uploadImg(api *tao_vegetable.API, imgs []string) *string { +func uploadImg(api *tao_vegetable.API, skuId, vendorId int, imgs []string) *string { + vendorImg, _ := dao.GetVendorImg(skuId, vendorId) result := make([]string, 0, 0) - for _, v := range imgs { - if v == "" { - continue - } - inputTitle := strings.LastIndex(v, "/") - title := strings.LastIndex(v, ".") - resp, err := http.Get(v) - if err != nil { - continue - } - body, _ := ioutil.ReadAll(resp.Body) - // 图片失效 - if strings.Contains(string(body), "Document not found") || len(body) == 0 { - continue - } + isCreate := false + if vendorImg == nil || (vendorImg.Img == "" && vendorImg.Img2 == "" && vendorImg.Img3 == "" && vendorImg.Img4 == "" && vendorImg.Img5 == "" && vendorImg.DescImg == "") { + isCreate = true + for i := 0; i < len(imgs); i++ { + if imgs[i] == "" { + continue + } - if newImg, _ := api.UploadImg(&request1475.AlibabaWdkPictureUploadRequest{ - PictureCategoryId: utils.Int64ToPointer(0), - Img: &body, - ImgInputTitle: utils.String2Pointer(v[inputTitle:]), - Title: utils.String2Pointer(v[inputTitle:title]), - }); newImg != "" { - result = append(result, newImg) + inputTitle := strings.LastIndex(imgs[i], "/") + title := strings.LastIndex(imgs[i], ".") + resp, err := http.Get(imgs[i]) + if err != nil { + continue + } + body, _ := ioutil.ReadAll(resp.Body) + // 图片失效 + if strings.Contains(string(body), "Document not found") || len(body) == 0 { + continue + } + newImg, _ := api.UploadImg(&request1475.AlibabaWdkPictureUploadRequest{ + PictureCategoryId: utils.Int64ToPointer(0), + Img: &body, + ImgInputTitle: utils.String2Pointer(imgs[i][inputTitle:]), + Title: utils.String2Pointer(imgs[i][inputTitle:title]), + }) + if newImg != "" { + result = append(result, newImg) + } + + switch i { + case 0: + vendorImg.Img = newImg + case 1: + vendorImg.Img2 = newImg + case 2: + vendorImg.Img3 = newImg + case 3: + vendorImg.Img4 = newImg + case 4: + vendorImg.Img5 = newImg + case 5: + vendorImg.DescImg = newImg + } + } + } else { + if vendorImg.Img != "" { + result = append(result, vendorImg.Img) + } + if vendorImg.Img2 != "" { + result = append(result, vendorImg.Img2) + } + if vendorImg.Img3 != "" { + result = append(result, vendorImg.Img3) + } + if vendorImg.Img4 != "" { + result = append(result, vendorImg.Img4) + } + if vendorImg.Img5 != "" { + result = append(result, vendorImg.Img5) + } + if vendorImg.DescImg != "" { + result = append(result, vendorImg.DescImg) } } + + if isCreate { + vendorImg.SkuID = skuId + vendorImg.VendorID = vendorId + dao.CreateEntity(dao.GetDB(), &vendorImg) + } + // 商品图片最多五张 if len(result) > 5 { return utils.String2Pointer(strings.Join(result[1:], ",")) diff --git a/globals/beegodb/beegodb.go b/globals/beegodb/beegodb.go index b2b3d56a8..7844d3a7a 100644 --- a/globals/beegodb/beegodb.go +++ b/globals/beegodb/beegodb.go @@ -67,6 +67,7 @@ func Init() { orm.RegisterModel(&model.Brand{}, &model.BrandCategoryMap{}) orm.RegisterModel(&model.BrandStore{}) orm.RegisterModel(&model.BrandBill{}, &model.BrandOrder{}, &model.BrandUser{}) + orm.RegisterModel(&model.TaoSkuImg{}) orm.RegisterModel(&model.AuthBind{}, &model.User{})