Imports System.Runtime.CompilerServices
Imports System.Text.RegularExpressions
Imports System.Text
Imports Top.Api.Domain
Public Module ItemHelper
#Region "CsvTable"
<Extension()>
Public Function ToCsvTable(ByVal Items As IEnumerable(Of Item)) As DataTable
Dim Table As DataTable = GetTaobaoCsvTable()
For Each Item As Item In Items
Dim Row As DataRow = Table.NewRow
Row("宝贝名称") = Item.Title
Row("宝贝类目") = Item.Cid
Row("店铺类目") = Item.SellerCids
Row("新旧程度") = 0
Row("省") = Item.Location.State
Row("城市") = Item.Location.City
Row("出售方式") = "b"
Row("宝贝价格") = Item.Price
'Row("加价幅度") = Nothing
Row("宝贝数量") = Item.Num
Row("有效期") = Item.ValidThru
Row("运费承担") = 1
Row("平邮") = Item.PostFee
Row("EMS") = Item.EmsFee
Row("快递") = Item.ExpressFee
'Row("付款方式") = Nothing
'Row("支付宝") = Nothing
Row("发票") = 1
'Row("保修") = Nothing
'Row("闪电发货") = Nothing
'Row("自动重发") = Nothing
'Row("放入仓库") = Nothing
'Row("橱窗推荐") = Nothing
'Row("开始时间") = Nothing
'Row("心情故事") = Nothing
Row("宝贝描述") = Item.Desc
'Row("宝贝图片") = Nothing
Row("宝贝属性") = Item.Props
'Row("团购价") = Nothing
'Row("最小团购件数") = Nothing
Row("邮费模版ID") = Item.PostageId
'Row("会员打折") = Nothing
'Row("修改时间") = Nothing
'Row("上传状态") = Nothing
'Row("图片状态") = Nothing
Row("返点比例") = Item.AuctionPoint
Row("新图片") = Item.CsvImgs
'Row("视频") = Nothing
Row("销售属性组合") = Item.Skus.CsvSkus
If Not String.IsNullOrEmpty(Item.InputPids) Then
Row("用户输入ID串") = "," & Item.InputPids
End If
If Not String.IsNullOrEmpty(Item.InputStr) Then
Row("用户输入名-值对") = "," & Item.InputStr
End If
Row("商家编码") = Item.OuterId
If Not String.IsNullOrEmpty(Item.PropertyAlias) Then
Row("销售属性别名") = Item.PropertyAlias & ";"
End If
'Row("代充类型") = Nothing
'Row("宝贝编号") = Nothing
Row("数字ID") = Item.NumIid
Table.Rows.Add(Row)
Next
Return Table
End Function
Private Function GetTaobaoCsvTable(Optional ByVal Name As String = "ItemList") As DataTable
Dim Table As New DataTable(Name)
Table.Columns.Add("宝贝名称", GetType(String))
Table.Columns.Add("宝贝类目", GetType(Long))
Table.Columns.Add("店铺类目", GetType(String))
Table.Columns.Add("新旧程度", GetType(Long))
Table.Columns.Add("省", GetType(String))
Table.Columns.Add("城市", GetType(String))
Table.Columns.Add("出售方式", GetType(String))
Table.Columns.Add("宝贝价格", GetType(String))
Table.Columns.Add("加价幅度", GetType(String))
Table.Columns.Add("宝贝数量", GetType(Long))
Table.Columns.Add("有效期", GetType(Long))
Table.Columns.Add("运费承担", GetType(Long))
Table.Columns.Add("平邮", GetType(String))
Table.Columns.Add("EMS", GetType(String))
Table.Columns.Add("快递", GetType(String))
Table.Columns.Add("付款方式", GetType(String))
Table.Columns.Add("支付宝", GetType(String))
Table.Columns.Add("发票", GetType(Long))
Table.Columns.Add("保修", GetType(Long))
Table.Columns.Add("闪电发货", GetType(String))
Table.Columns.Add("自动重发", GetType(String))
Table.Columns.Add("放入仓库", GetType(String))
Table.Columns.Add("橱窗推荐", GetType(String))
Table.Columns.Add("开始时间", GetType(Date))
Table.Columns.Add("心情故事", GetType(String))
Table.Columns.Add("宝贝描述", GetType(String))
Table.Columns.Add("宝贝图片", GetType(String))
Table.Columns.Add("宝贝属性", GetType(String))
Table.Columns.Add("团购价", GetType(String))
Table.Columns.Add("最小团购件数", GetType(String))
Table.Columns.Add("邮费模版ID", GetType(Long))
Table.Columns.Add("会员打折", GetType(String))
Table.Columns.Add("修改时间", GetType(Date))
Table.Columns.Add("上传状态", GetType(String))
Table.Columns.Add("图片状态", GetType(String))
Table.Columns.Add("返点比例", GetType(Long))
Table.Columns.Add("新图片", GetType(String))
Table.Columns.Add("视频", GetType(String))
Table.Columns.Add("销售属性组合", GetType(String))
Table.Columns.Add("用户输入ID串", GetType(String))
Table.Columns.Add("用户输入名-值对", GetType(String))
Table.Columns.Add("商家编码", GetType(String))
Table.Columns.Add("销售属性别名", GetType(String))
Table.Columns.Add("代充类型", GetType(String))
Table.Columns.Add("宝贝编号", GetType(String))
Table.Columns.Add("数字ID", GetType(Long))
Return Table
End Function
''' <summary>
''' 返回淘宝助理新图片格式
''' </summary>
<Extension()>
Public Function CsvImgs(ByVal Item As Item) As String
Dim str As New StringBuilder
For i = 0 To Item.ItemImgs.Count - 1
str.Append(String.Format("{0}-0-{1}:0:{2}:|;", Item.NumIid, i, i))
Next
For j = 0 To Item.PropImgs.Count - 1
str.Append(String.Format("{0}-1-{1}:0:{2}:|;", Item.NumIid, j, j))
Next
Return str.ToString
End Function
''' <summary>
''' 返回淘宝助理销售属性组合格式
''' </summary>
<Extension()>
Public Function CsvSkus(ByVal Skus As List(Of Sku)) As String
Dim str As New StringBuilder
For Each Sku In Skus
str.Append(Sku.Price).Append("0000:")
str.Append(Sku.Quantity).Append(":")
str.Append(Sku.OuterId).Append(":")
str.Append(Sku.Properties).Append(";")
Next
Return str.ToString
End Function
#End Region
#Region "ImageTable"
<Extension()>
Public Function ToImageTable(ByVal Items As IEnumerable(Of Item)) As DataTable
Dim Table As New DataTable("ItemImages")
Table.Columns.Add("SaveName", GetType(String))
Table.Columns.Add("ImageUrl", GetType(String))
For Each Item In Items
Dim ImgName As String
For i = 0 To Item.ItemImgs.Count - 1
ImgName = String.Format("{0}-0-{1}.jpg", Item.NumIid.ToString, i)
Table.Rows.Add(ImgName, Item.ItemImgs(i).Url)
Next
For i = 0 To Item.PropImgs.Count - 1
ImgName = String.Format("{0}-1-{1}.jpg", Item.NumIid.ToString, i)
Table.Rows.Add(ImgName, Item.PropImgs(i).Url)
Next
Next
Return Table
End Function
Private TopImgRegex As New Regex("<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.Compiled)
<Extension()>
Public Function ToDescImgUrlTable(ByVal Items As IEnumerable(Of Item)) As DataTable
Dim Table As New DataTable("ItemImages")
Table.Columns.Add("NumIid", GetType(Long))
Table.Columns.Add("TopUrl", GetType(String))
For Each Item In Items
Dim Mc As MatchCollection = TopImgRegex.Matches(Item.Desc)
For Each Match As Match In Mc
Dim Url As String = Match.Groups("imgUrl").Value
If Url.IndexOf("taobao", StringComparison.OrdinalIgnoreCase) <> -1 Then
Table.Rows.Add(Item.NumIid, Match.Groups("imgUrl").Value)
End If
Next
Next
Return Table
End Function
#End Region
End Module
淘宝Item对象转换CSV文件格式
最新推荐文章于 2023-12-13 09:06:05 发布