Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
杨树贤
/
bom_server
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
6cb45872
authored
May 26, 2020
by
mushishixian
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
完善
parent
19b5ff3b
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
86 additions
and
68 deletions
cmd/cmd.exe~
cmd/main.go
internal/logic/bom_matching.go
internal/logic/goods.go
internal/logic/match.go
internal/model/goods.go
cmd/cmd.exe~
View file @
6cb45872
The file could not be displayed because it is too large.
cmd/main.go
View file @
6cb45872
...
...
@@ -14,6 +14,6 @@ func main() {
flag
.
Parse
()
configs
.
Setup
(
path
)
model
.
Setup
()
logic
.
MatchGoods
(
11
)
logic
.
MatchGoods
(
46
)
queue
.
Sync
()
}
internal/logic/bom_matching.go
View file @
6cb45872
...
...
@@ -25,7 +25,6 @@ func BatchSaveMatchings(bomId int, matchingList []model.BomItemMatching) (err er
return
}
}
}
return
nil
}
internal/logic/goods.go
View file @
6cb45872
...
...
@@ -4,8 +4,9 @@ import (
"bom_server/configs"
"bom_server/internal/model"
"encoding/json"
"fmt"
"github.com/imroc/req"
"reflect"
"strconv"
"strings"
"time"
)
...
...
@@ -18,7 +19,7 @@ type GoodsMap struct {
Number
int
}
func
UpdateGoodsData
(
goodsMapList
[]
GoodsMap
)
()
{
func
UpdateGoodsData
(
goodsMapList
[]
GoodsMap
)
(
err
error
)
{
//根据goodsIds去商品服务获取对应的商品信息
var
(
goodsIds
[]
string
...
...
@@ -35,11 +36,11 @@ func UpdateGoodsData(goodsMapList []GoodsMap) () {
//req.Debug = true
resp
,
err
:=
req
.
Post
(
goodsServerUrl
+
"/synchronization"
,
params
)
if
err
!=
nil
{
fmt
.
Println
(
err
)
return
}
var
responseData
model
.
ApiGoodsResponse
if
err
:
=
resp
.
ToJSON
(
&
responseData
);
err
!=
nil
{
fmt
.
Println
(
err
)
if
err
=
resp
.
ToJSON
(
&
responseData
);
err
!=
nil
{
return
}
var
bomMatchingList
[]
model
.
BomItemMatching
for
_
,
goodsMap
:=
range
goodsMapList
{
...
...
@@ -63,20 +64,33 @@ func UpdateGoodsData(goodsMapList []GoodsMap) () {
Encap
:
goods
.
Encap
,
Status
:
goods
.
Status
,
AddTime
:
int
(
time
.
Now
()
.
Unix
()),
UpdateTime
:
0
,
}
//阶梯价处理
if
len
(
goods
.
LadderPrice
)
>
0
{
ladderPriceStr
,
err
:=
json
.
Marshal
(
goods
.
LadderPrice
)
if
err
!=
nil
{
fmt
.
Println
(
err
)
return
err
}
bomMatching
.
LadderPrice
=
string
(
ladderPriceStr
)
//获取美元和人民币的价格(需要去判断数量)
if
len
(
goods
.
LadderPrice
)
>
0
{
for
_
,
price
:=
range
goods
.
LadderPrice
{
if
goodsMap
.
Number
<=
price
.
Purchases
{
bomMatching
.
CnPrice
=
price
.
PriceCn
//要先去断言,因为商品服务返回的json的值类型不确定...
value
:=
reflect
.
ValueOf
(
price
.
Purchases
)
.
Type
()
.
String
()
var
purchases
int
if
value
==
"string"
{
tempNumber
,
_
:=
strconv
.
ParseInt
(
price
.
Purchases
.
(
string
),
10
,
10
)
purchases
=
int
(
tempNumber
)
}
else
{
purchases
=
price
.
Purchases
.
(
int
)
}
if
goodsMap
.
Number
<=
purchases
{
//判断是否有优惠价,有的话取优惠价
if
price
.
PriceAc
!=
0
{
bomMatching
.
CnPrice
=
price
.
PriceAc
}
else
{
bomMatching
.
CnPrice
=
price
.
PriceCn
}
bomMatching
.
HkPrice
=
price
.
PriceUs
break
}
...
...
@@ -89,6 +103,7 @@ func UpdateGoodsData(goodsMapList []GoodsMap) () {
}
err
=
BatchSaveMatchings
(
bomId
,
bomMatchingList
)
if
err
!=
nil
{
fmt
.
Println
(
err
)
return
}
return
}
internal/logic/match.go
View file @
6cb45872
...
...
@@ -23,44 +23,46 @@ import (
func
MatchGoods
(
bomId
int
)
{
//获取bom
//bom := GetBomInfoWithItems(11)
//bomItems := bom.BomItems
bomItems
:=
[]
model
.
BomItem
{
{
BomID
:
7
,
BomItemID
:
1
,
BrandName
:
"ADVID"
,
GoodsName
:
"ECC15DCKNS1562"
,
Number
:
1
,
},
{
BomID
:
7
,
BomItemID
:
2
,
BrandName
:
"ADVID"
,
GoodsName
:
"ECC15DCKNS1562"
,
Number
:
1
,
},
{
BomID
:
7
,
BomItemID
:
3
,
BrandName
:
"ADVID"
,
GoodsName
:
"ECC15DCKNS15621"
,
Number
:
1
,
},
{
BomID
:
7
,
BomItemID
:
4
,
BrandName
:
"ADVID"
,
GoodsName
:
"ECC15DCKNS1562"
,
Number
:
1
,
},
}
bomId
=
11
bom
:=
GetBomInfoWithItems
(
bomId
)
bomItems
:=
bom
.
BomItems
//bomItems := []model.BomItem{
// {
// BomID: 7,
// BomItemID: 1,
// BrandName: "ADVID",
// GoodsName: "ECC15DCKNS1562",
// Number: 1,
// },
// {
// BomID: 7,
// BomItemID: 2,
// BrandName: "ADVID",
// GoodsName: "ECC15DCKNS1562",
// Number: 1,
// },
// {
// BomID: 7,
// BomItemID: 3,
// BrandName: "ADVID",
// GoodsName: "ECC15DCKNS15621",
// Number: 1,
// },
// {
// BomID: 7,
// BomItemID: 4,
// BrandName: "ADVID",
// GoodsName: "ECC15DCKNS1562",
// Number: 1,
// },
//}
SearchGoods
(
bomId
,
bomItems
)
}
//去es搜索商品,得到对应的商品对应关系
func
SearchGoods
(
bomId
int
,
bomItems
[]
model
.
BomItem
)
{
func
SearchGoods
(
bomId
int
,
bomItems
[]
model
.
BomItem
)
(
err
error
)
{
if
len
(
bomItems
)
==
0
{
return
}
client
,
err
:=
es
.
NewClient
(
es
.
SetURL
(
configs
.
ESSetting
.
Url
))
if
err
!=
nil
{
panic
(
err
)
...
...
@@ -82,7 +84,8 @@ func SearchGoods(bomId int, bomItems []model.BomItem) {
if
err
!=
nil
{
fmt
.
Println
(
err
)
}
UpdateGoodsData
(
goodsMapList
)
err
=
UpdateGoodsData
(
goodsMapList
)
return
}
func
getUpdateGoodsData
(
bomId
int
,
bomItems
[]
model
.
BomItem
,
client
*
es
.
Client
,
rawSearch
bool
)
(
goodsMapList
[]
GoodsMap
,
err
error
)
{
...
...
internal/model/goods.go
View file @
6cb45872
...
...
@@ -11,7 +11,7 @@ type Goods struct {
ClassID1
int
`json:"class_id1"`
ClassID2
int
`json:"class_id2"`
ClassID3
int
`json:"class_id3"`
SpuID
int
`json:"spu_id"`
SpuID
string
`json:"spu_id"`
SaleTime
int
`json:"sale_time"`
GoodsDetails
string
`json:"goods_details"`
CreateTime
int
`json:"create_time"`
...
...
@@ -29,9 +29,9 @@ type Goods struct {
}
type
ApiGoodsResponse
struct
{
Errcode
int
`json:"errcode"`
Errcode
int
`json:"errcode"`
Errmsg
string
`json:"errmsg"`
Data
Data
`json:"data"`
Data
Data
`json:"data"`
}
type
Data
map
[
string
]
ApiGoods
...
...
@@ -54,9 +54,10 @@ type ApiGoods struct {
CnDeliveryTime
string
`json:"cn_delivery_time"`
GoodsDetails
string
`json:"goods_details"`
LadderPrice
[]
struct
{
Purchases
int
`json:"purchases"`
PriceUs
float64
`json:"price_us"`
PriceCn
float64
`json:"price_cn"`
Purchases
interface
{}
`json:"purchases"`
PriceUs
float64
`json:"price_us"`
PriceCn
float64
`json:"price_cn"`
PriceAc
float64
`json:"price_ac"`
}
`json:"ladder_price"`
GoodsImages
string
`json:"goods_images"`
Canal
string
`json:"canal"`
...
...
@@ -74,21 +75,21 @@ type ApiGoods struct {
Ratio
string
`json:"ratio"`
Tax
float64
`json:"tax"`
}
`json:"coefficient"`
OriginalPrice
[]
struct
{
Purchases
int
`json:"purchases"`
PriceCn
int
`json:"price_cn"`
PriceUs
float64
`json:"price_us"`
}
`json:"original_price"`
SuppExtendFee
struct
{
Cn
struct
{
Max
string
`json:"max"`
Price
string
`json:"price"`
}
`json:"cn"`
Hk
struct
{
Max
int
`json:"max"`
Price
int
`json:"price"`
}
`json:"hk"`
}
`json:"supp_extend_fee"`
//
OriginalPrice []struct {
//
Purchases int `json:"purchases"`
//
PriceCn int `json:"price_cn"`
//
PriceUs float64 `json:"price_us"`
//
} `json:"original_price"`
//
SuppExtendFee struct {
//
Cn struct {
//
Max string `json:"max"`
//
Price string `json:"price"`
//
} `json:"cn"`
//
Hk struct {
//
Max int `json:"max"`
//
Price int `json:"price"`
//
} `json:"hk"`
//
} `json:"supp_extend_fee"`
IsBuy
int
`json:"is_buy"`
ClassID1
int
`json:"class_id1"`
ClassID2
int
`json:"class_id2"`
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment