Class: EricWeixin::Xiaodian::Product

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/eric_weixin/xiaodian/product.rb

Class Method Summary collapse

Class Method Details

.create_product(options) ⇒ Object

创建商品



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'app/models/eric_weixin/xiaodian/product.rb', line 45

def self.create_product options
  EricWeixin::Xiaodian::Product.transaction do
    product = EricWeixin::Xiaodian::Product.where(product_id: options[:product_id]).first
    product = if product.blank?
                EricWeixin::Xiaodian::Product.new product_id: options[:product_id],
                                                  name: options[:name],
                                                  status: options[:status],
                                                  delivery_type: options[:delivery_type],
                                                  sku_info: options[:sku_info],
                                                  properties: options[:properties],
                                                  weixin_public_account_id: options[:weixin_public_account_id]
              else
                product.name = options[:name]
                product.status = options[:status]
                product.delivery_type = options[:delivery_type]
                product.sku_info= options[:sku_info]
                product.properties= options[:properties]
                product
              end
    product.save!

    #更新分类信息
    category_list = (product.categories.collect &:wx_category_id)
    new_category_list = options["wx_category_id"]||[]
    pp category_list
    pp new_category_list
    if not (category_list&new_category_list).length == category_list.length
      product.categories.clear
      options["wx_category_id"].each do |wx_category_id|
        c = EricWeixin::Xiaodian::Category.where(wx_category_id: wx_category_id).first
        product.categories << c
      end
      product.save!
    end
    product
  end
end

.get_all_products(public_account_name) ⇒ Object

同步微信小店所有商品 EricWeixin::Xiaodian::Product.get_all_products ‘rszx’



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/models/eric_weixin/xiaodian/product.rb', line 8

def self.get_all_products 
   = EricWeixin::PublicAccount. 
  token = ::EricWeixin::AccessToken.get_valid_access_token public_account_id: .id

  param = {status: 0}
  response = RestClient.post "https://api.weixin.qq.com/merchant/getbystatus?access_token=#{token}", param.to_json
  response = JSON.parse response.body
  if response["errcode"] == 0
    response["products_info"].each do |product_info|
      product = EricWeixin::Xiaodian::Product.create_product product_id: product_info["product_id"],
                                                             name: product_info["product_base"]["name"],
                                                             status: product_info["status"],
                                                             delivery_type: product_info["delivery_info"]["delivery_type"],
                                                             weixin_public_account_id: .id,
                                                             sku_info: product_info["product_base"]["sku_info"],
                                                             properties: product_info["product_base"]["property"],
                                                             wx_category_id: product_info["product_base"]["category_id"]

      (product_info["sku_list"]||[]).each do |sku|
        EricWeixin::Xiaodian::ProductSkuDetail.create_sku_detail weixin_xiaodian_product_id: product.id,
                                                                 sku_id: sku["sku_id"],
                                                                 icon_url: sku["icon_url"],
                                                                 price: sku["price"],
                                                                 quantity: sku["quantity"],
                                                                 product_code: sku["product_code"],
                                                                 ori_price: sku["ori_price"]
      end

    end
  else
    pp response
    return
  end
end