123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- package service
- import (
- "context"
- "fmt"
- "github.com/lin-jim-leon/kuaishou"
- "strconv"
- "youngee_m_api/consts"
- "youngee_m_api/db"
- "youngee_m_api/model/gorm_model"
- "youngee_m_api/model/http_model"
- )
- var Product *product
- type product struct {
- }
- func (*product) Create(ctx context.Context, newProduct http_model.CreateProductRequest, enterpriseID string) (*http_model.CreateProductData, error) {
- product := gorm_model.YounggeeProduct{
- ProductName: newProduct.ProductName,
- ProductType: int64(6),
- ShopAddress: newProduct.ShopAddress,
- ProductPrice: newProduct.ProductPrice,
- ProductDetail: newProduct.ProductDetail,
- ProductUrl: newProduct.ProductUrl,
- EnterpriseID: enterpriseID,
- BrandName: newProduct.BrandName,
- PublicCommission: newProduct.PublicCommission,
- ExclusiveCommission: newProduct.ExclusiveCommission,
- CommissionPrice: newProduct.CommissionPrice,
- SalesCount: strconv.Itoa(int(newProduct.MerchantSoldCountThirtyDays)),
- KuaishouProductId: newProduct.KuaishouProductId,
- }
- productID, err := db.CreateProduct(ctx, product)
- if err != nil {
- return nil, err
- }
- if newProduct.ProductPhotos != nil {
- productPhotos := []gorm_model.YounggeeProductPhoto{}
- for _, photo := range newProduct.ProductPhotos {
- productPhoto := gorm_model.YounggeeProductPhoto{
- PhotoUrl: photo.PhotoUrl,
- PhotoUid: photo.PhotoUid,
- Symbol: photo.Symbol,
- ProductID: *productID,
- }
- productPhotos = append(productPhotos, productPhoto)
- }
- err = db.CreateProductPhoto(ctx, productPhotos)
- if err != nil {
- return nil, err
- }
- }
- res := &http_model.CreateProductData{
- ProductID: *productID,
- }
- return res, nil
- }
- func (*product) FindByID(ctx context.Context, productID int64) (*http_model.FindProductData, error) {
- product, err := db.GetProductByID(ctx, productID)
- if err != nil {
- return nil, err
- }
- if product == nil {
- return nil, nil
- }
- productPhotos, err := db.GetProductPhotoByProductID(ctx, productID)
- if err != nil {
- return nil, err
- }
- productPrice, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", product.ProductPrice), 64)
- findProductData := http_model.FindProductData{
- ProductID: product.ProductID,
- ProductName: product.ProductName,
- ProductType: product.ProductType,
- ShopAddress: product.ShopAddress,
- ProductPrice: productPrice,
- ProductDetail: product.ProductDetail,
- ProductUrl: product.ProductUrl,
- EnterpriseID: product.EnterpriseID,
- BrandName: product.BrandName,
- PublicCommission: product.PublicCommission,
- ExclusiveCommission: product.ExclusiveCommission,
- CommissionPrice: product.CommissionPrice,
- KuaishouProductId: product.KuaishouProductId,
- }
- for _, photo := range productPhotos {
- productPhoto := http_model.ProductPhoto{
- PhotoUrl: photo.PhotoUrl,
- PhotoUid: photo.PhotoUid,
- Symbol: photo.Symbol,
- }
- findProductData.ProductPhotos = append(findProductData.ProductPhotos, productPhoto)
- }
- return &findProductData, nil
- }
- func (*product) FindAll(ctx context.Context, enterpriseID string) (*http_model.FindAllProductData, error) {
- products, err := db.GetProductByEnterpriseID(ctx, enterpriseID)
- if err != nil {
- // 数据库查询error
- return nil, err
- }
- findAllProductData := http_model.FindAllProductData{}
- for _, product := range products {
- productData := http_model.ProductInfo{
- ProductID: product.ProductID,
- BrandName: product.BrandName,
- ProductName: product.ProductName,
- ProductType: consts.GetProjectTypes(product.ProductType),
- }
- findAllProductData.ProductInfos = append(findAllProductData.ProductInfos, productData)
- }
- return &findAllProductData, nil
- }
- func (*product) Update(ctx context.Context, newProduct http_model.CreateProductRequest, enterpriseID string) (*http_model.CreateProductData, error) {
- productPrice, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", newProduct.ProductPrice), 64)
- product := gorm_model.YounggeeProduct{
- ProductID: newProduct.ProductId,
- ProductName: newProduct.ProductName,
- ProductType: newProduct.ProductType,
- ShopAddress: newProduct.ShopAddress,
- ProductPrice: productPrice,
- ProductDetail: newProduct.ProductDetail,
- ProductUrl: newProduct.ProductUrl,
- EnterpriseID: enterpriseID,
- BrandName: newProduct.BrandName,
- PublicCommission: newProduct.PublicCommission,
- ExclusiveCommission: newProduct.ExclusiveCommission,
- CommissionPrice: newProduct.CommissionPrice,
- }
- productID, err := db.UpdateProduct(ctx, product)
- if err != nil {
- return nil, err
- }
- // 删除该商品之前的所有图片
- err = db.DeleteProductPhotoByProductID(ctx, *productID)
- if err != nil {
- return nil, err
- }
- if newProduct.ProductPhotos != nil {
- // 新增图片
- productPhotos := []gorm_model.YounggeeProductPhoto{}
- for _, photo := range newProduct.ProductPhotos {
- productPhoto := gorm_model.YounggeeProductPhoto{
- PhotoUrl: photo.PhotoUrl,
- PhotoUid: photo.PhotoUid,
- Symbol: photo.Symbol,
- ProductID: *productID,
- }
- productPhotos = append(productPhotos, productPhoto)
- }
- err = db.CreateProductPhoto(ctx, productPhotos)
- if err != nil {
- return nil, err
- }
- }
- res := &http_model.CreateProductData{
- ProductID: *productID,
- }
- return res, nil
- }
- // QueryKuaishouProduct 通过快手商品ID从SDK拉取快手商品信息
- func (*product) QueryKuaishouProduct(ctx context.Context, newKuaishouProduct http_model.FindKuaishouProductRequest) (*http_model.FindKuaishouProductData, error) {
- var talentID string = "223329990"
- kuaishouUser := db.GetKuaishouUserInfoByTalentId(ctx, talentID)
- AccessToken := kuaishouUser.AccessToken
- kuaishouProduct, err := kuaishou.Queryselectiondetail(newKuaishouProduct.AppKey, newKuaishouProduct.SignSecret, AccessToken, newKuaishouProduct.ItemList)
- if err != nil {
- return nil, err
- }
- findKuaishouProductData := http_model.FindKuaishouProductData{
- ProductName: kuaishouProduct.ItemList[0].ItemTitle,
- ProductPrice: float64(kuaishouProduct.ItemList[0].ItemPrice) * 0.01,
- ExclusiveCommission: float64(kuaishouProduct.ItemList[0].CommissionRate) * 0.1,
- CommissionPrice: float64(kuaishouProduct.ItemList[0].ProfitAmount) * 0.01,
- KuaishouMainPhoto: kuaishouProduct.ItemList[0].ItemImgURL,
- KuaishouCarousePhotoList: kuaishouProduct.ItemList[0].ItemGalleryURLs,
- KuaishouDetailPhotoList: kuaishouProduct.ItemList[0].ItemDescURLs,
- MerchantSoldCountThirtyDays: kuaishouProduct.ItemList[0].MerchantSoldCountThirtyDays,
- KuaishouProductId: kuaishouProduct.ItemList[0].ItemID,
- }
- // print("kuaoshou_product: ", findKuaishouProductData.ProductName)
- return &findKuaishouProductData, err
- }
|