Accept Merge Request #199: (mark -> master)
Merge Request: 更新master Created By: @苏尹岚 Accepted By: @苏尹岚 URL: https://rosydev.coding.net/p/jx-callback/d/jx-callback/git/merge/199
This commit is contained in:
@@ -271,7 +271,8 @@ func (c *OrderManager) SaveOrder(order *model.GoodsOrder, isAdjust bool, db *dao
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
order.ConsigneeName = utils.LimitUTF8StringLen(order.ConsigneeName, 32)
|
order.ConsigneeName = utils.LimitUTF8StringLen2(order.ConsigneeName, 32)
|
||||||
|
order.ConsigneeAddress = utils.LimitUTF8StringLen2(order.ConsigneeAddress, 255)
|
||||||
created, _, err2 := db.Db.ReadOrCreate(order, "VendorOrderID", "VendorID")
|
created, _, err2 := db.Db.ReadOrCreate(order, "VendorOrderID", "VendorID")
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
originalOrder := &model.GoodsOrderOriginal{
|
originalOrder := &model.GoodsOrderOriginal{
|
||||||
@@ -424,6 +425,7 @@ func (c *OrderManager) updateOrderOtherInfo(order *model.GoodsOrder, db *dao.Dao
|
|||||||
}
|
}
|
||||||
if err = c.updateOrderSkuOtherInfo(order, db, payPercentage, changePriceType); err == nil {
|
if err = c.updateOrderSkuOtherInfo(order, db, payPercentage, changePriceType); err == nil {
|
||||||
jxutils.RefreshOrderSkuRelated(order)
|
jxutils.RefreshOrderSkuRelated(order)
|
||||||
|
jxutils.RefreshOrderEarningPrice2(order, payPercentage)
|
||||||
// caculateOrderEarningPrice(order, payPercentage)
|
// caculateOrderEarningPrice(order, payPercentage)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
@@ -872,5 +874,3 @@ func RefreshOrdersPriceInfo(ctx *jxcontext.Context, fromTime, toTime time.Time,
|
|||||||
}
|
}
|
||||||
return hint, err
|
return hint, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -49,8 +49,14 @@ type StoresOrderSaleInfo struct {
|
|||||||
|
|
||||||
type OrderSkusAccept struct {
|
type OrderSkusAccept struct {
|
||||||
model.SkuAndName
|
model.SkuAndName
|
||||||
SumWeight int `json:"sumWeight"`
|
SumWeight int `json:"sumWeight"`
|
||||||
SumCount int `json:"sumCount"`
|
SumCount int `json:"sumCount"`
|
||||||
|
Img string `json:"img"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type OrderCount struct {
|
||||||
|
Count int `json:"count"` //销量
|
||||||
|
Flag bool `json:"flag"` //true表示可以买
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *OrderManager) GetStoreOrderCountInfo(ctx *jxcontext.Context, storeID, lastHours int, isIncludeFake bool) (countInfo []*model.GoodsOrderCountInfo, err error) {
|
func (c *OrderManager) GetStoreOrderCountInfo(ctx *jxcontext.Context, storeID, lastHours int, isIncludeFake bool) (countInfo []*model.GoodsOrderCountInfo, err error) {
|
||||||
@@ -621,19 +627,19 @@ func (c *OrderManager) GetStoresOrderSaleInfo(ctx *jxcontext.Context, storeIDLis
|
|||||||
|
|
||||||
func (c *OrderManager) GetStoresOrderSaleInfoNew(ctx *jxcontext.Context, storeIDList []int, fromTime time.Time, toTime time.Time, statusList []int) (saleInfoList []*dao.StoresOrderSaleInfo, err error) {
|
func (c *OrderManager) GetStoresOrderSaleInfoNew(ctx *jxcontext.Context, storeIDList []int, fromTime time.Time, toTime time.Time, statusList []int) (saleInfoList []*dao.StoresOrderSaleInfo, err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
var isFinish = true
|
// var isFinish = true
|
||||||
if toTime.Sub(fromTime).Hours() > 24 {
|
// if toTime.Sub(fromTime).Hours() > 24 {
|
||||||
isFinish = false
|
// isFinish = false
|
||||||
}
|
// }
|
||||||
orderSkuList, err := dao.GetStoreOrderSkuList(db, storeIDList, fromTime, toTime, statusList, isFinish)
|
orderSkuList, err := dao.GetStoreOrderSkuList(db, storeIDList, fromTime, toTime, statusList, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
afsSkuList, err := dao.GetStoreAfsOrderSkuList(db, storeIDList, fromTime, toTime, []int{model.AfsOrderStatusFinished}, isFinish)
|
afsSkuList, err := dao.GetStoreAfsOrderSkuList(db, storeIDList, fromTime, toTime, []int{model.AfsOrderStatusFinished}, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
orderSkuList4Afs, err := dao.GetStoreOrderSkuList4Afs(db, storeIDList, fromTime, toTime, isFinish)
|
orderSkuList4Afs, err := dao.GetStoreOrderSkuList4Afs(db, storeIDList, fromTime, toTime, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -641,7 +647,11 @@ func (c *OrderManager) GetStoresOrderSaleInfoNew(ctx *jxcontext.Context, storeID
|
|||||||
orderMap = make(map[string]*model.GoodsOrder)
|
orderMap = make(map[string]*model.GoodsOrder)
|
||||||
orderSkuMap = make(map[string]*dao.OrderSkuWithActualPayPrice)
|
orderSkuMap = make(map[string]*dao.OrderSkuWithActualPayPrice)
|
||||||
saleInfoMap = make(map[int64]*dao.StoresOrderSaleInfo)
|
saleInfoMap = make(map[int64]*dao.StoresOrderSaleInfo)
|
||||||
for _, v := range skuList {
|
var flagVendorOrderID string
|
||||||
|
if len(skuList) > 0 {
|
||||||
|
flagVendorOrderID = skuList[0].VendorOrderID
|
||||||
|
}
|
||||||
|
for k, v := range skuList {
|
||||||
if v.EarningPrice == 0 {
|
if v.EarningPrice == 0 {
|
||||||
v.EarningPrice = jxutils.CaculateSkuEarningPrice(v.ShopPrice, v.SalePrice, v.PayPercentage)
|
v.EarningPrice = jxutils.CaculateSkuEarningPrice(v.ShopPrice, v.SalePrice, v.PayPercentage)
|
||||||
}
|
}
|
||||||
@@ -663,7 +673,15 @@ func (c *OrderManager) GetStoresOrderSaleInfoNew(ctx *jxcontext.Context, storeID
|
|||||||
saleInfo.ShopPrice += v.ShopPrice * int64(v.Count)
|
saleInfo.ShopPrice += v.ShopPrice * int64(v.Count)
|
||||||
saleInfo.VendorPrice += v.VendorPrice * int64(v.Count)
|
saleInfo.VendorPrice += v.VendorPrice * int64(v.Count)
|
||||||
saleInfo.SalePrice += v.SalePrice * int64(v.Count)
|
saleInfo.SalePrice += v.SalePrice * int64(v.Count)
|
||||||
saleInfo.EarningPrice += v.EarningPrice * int64(v.Count)
|
// saleInfo.EarningPrice += v.EarningPrice * int64(v.Count)
|
||||||
|
if v.VendorOrderID == flagVendorOrderID {
|
||||||
|
if k == 0 {
|
||||||
|
saleInfo.EarningPrice = v.NewEarningPrice
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
flagVendorOrderID = v.VendorOrderID
|
||||||
|
saleInfo.EarningPrice += v.NewEarningPrice
|
||||||
|
}
|
||||||
|
|
||||||
universalOrderID := jxutils.ComposeUniversalOrderID(v.VendorOrderID, v.VendorID)
|
universalOrderID := jxutils.ComposeUniversalOrderID(v.VendorOrderID, v.VendorID)
|
||||||
if orderMap[universalOrderID] == nil {
|
if orderMap[universalOrderID] == nil {
|
||||||
@@ -1148,7 +1166,7 @@ func (c *OrderManager) RefreshOrderFinancial(ctx *jxcontext.Context, fromTime, t
|
|||||||
func GetOrdersAccept(ctx *jxcontext.Context, storeID int) (result []*OrderSkusAccept, err error) {
|
func GetOrdersAccept(ctx *jxcontext.Context, storeID int) (result []*OrderSkusAccept, err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
sql := `
|
sql := `
|
||||||
SELECT SUM(a.count) sum_count, SUM(a.weight*a.count) sum_weight, c.*, d.name, d.unit, d.prefix
|
SELECT SUM(a.count) sum_count, SUM(a.weight*a.count) sum_weight, c.*, d.name, d.unit, d.prefix, d.img
|
||||||
FROM order_sku a
|
FROM order_sku a
|
||||||
JOIN goods_order b ON b.vendor_order_id = a.vendor_order_id AND b.vendor_id = a.vendor_id
|
JOIN goods_order b ON b.vendor_order_id = a.vendor_order_id AND b.vendor_id = a.vendor_id
|
||||||
JOIN sku c ON c.id = a.sku_id
|
JOIN sku c ON c.id = a.sku_id
|
||||||
@@ -1157,6 +1175,7 @@ func GetOrdersAccept(ctx *jxcontext.Context, storeID int) (result []*OrderSkusAc
|
|||||||
AND b.status = ?
|
AND b.status = ?
|
||||||
AND b.order_created_at <= NOW() AND b.order_created_at >= ?
|
AND b.order_created_at <= NOW() AND b.order_created_at >= ?
|
||||||
GROUP BY 3
|
GROUP BY 3
|
||||||
|
ORDER BY sum_weight DESC
|
||||||
`
|
`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
storeID,
|
storeID,
|
||||||
@@ -1166,3 +1185,57 @@ func GetOrdersAccept(ctx *jxcontext.Context, storeID int) (result []*OrderSkusAc
|
|||||||
err = dao.GetRows(db, &result, sql, sqlParams)
|
err = dao.GetRows(db, &result, sql, sqlParams)
|
||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetMatterStoreOrderCount(ctx *jxcontext.Context, storeID int) (result *OrderCount, err error) {
|
||||||
|
var (
|
||||||
|
db = dao.GetDB()
|
||||||
|
orderPays []*model.OrderPay
|
||||||
|
orderCount = &OrderCount{}
|
||||||
|
orderTime time.Time
|
||||||
|
flag = false
|
||||||
|
)
|
||||||
|
sql := `
|
||||||
|
SELECT b.*
|
||||||
|
FROM goods_order a
|
||||||
|
JOIN order_pay b ON a.vendor_order_id = b.vendor_order_id
|
||||||
|
WHERE IF(a.store_id = 0, a.jx_store_id, a.store_id) = 666666
|
||||||
|
AND a.from_store_id = ?
|
||||||
|
AND a.status >= ? AND a.status <> ?
|
||||||
|
AND b.status = ?
|
||||||
|
ORDER BY b.pay_finished_at DESC
|
||||||
|
LIMIT 1
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{storeID, model.OrderStatusDelivering, model.OrderStatusCanceled, model.PayStatusYes}
|
||||||
|
err = dao.GetRows(db, &orderPays, sql, sqlParams)
|
||||||
|
if len(orderPays) != 0 {
|
||||||
|
orderPay := orderPays[0]
|
||||||
|
if time.Now().Sub(*orderPay.PayFinishedAt).Hours() < 24*7 {
|
||||||
|
flag = false
|
||||||
|
} else {
|
||||||
|
flag = true
|
||||||
|
}
|
||||||
|
orderTime = *orderPay.PayFinishedAt
|
||||||
|
} else {
|
||||||
|
orderTime = time.Now().AddDate(0, -1, 0)
|
||||||
|
flag = true
|
||||||
|
}
|
||||||
|
sql2 := `
|
||||||
|
SELECT COUNT(*) count
|
||||||
|
FROM goods_order
|
||||||
|
WHERE IF(store_id = 0,jx_store_id,store_id) = ?
|
||||||
|
AND order_created_at <= NOW() AND order_created_at >= ?
|
||||||
|
AND status = ?
|
||||||
|
`
|
||||||
|
sqlParams2 := []interface{}{
|
||||||
|
storeID,
|
||||||
|
orderTime,
|
||||||
|
model.OrderStatusFinished,
|
||||||
|
}
|
||||||
|
err = dao.GetRow(db, &orderCount, sql2, sqlParams2)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
orderCount.Flag = flag
|
||||||
|
// orderCount.Count = 1000
|
||||||
|
return orderCount, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -37,6 +37,13 @@ func (c *BaseScheduler) CreateWaybillOnProviders(ctx *jxcontext.Context, order *
|
|||||||
courierVendorID := storeCourier.VendorID
|
courierVendorID := storeCourier.VendorID
|
||||||
bill, err2 := c.CreateWaybill(courierVendorID, order, maxDeliveryFee)
|
bill, err2 := c.CreateWaybill(courierVendorID, order, maxDeliveryFee)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
|
stores, _ := dao.GetStoreList(dao.GetDB(), []int{order.StoreID}, nil, nil, nil, "")
|
||||||
|
if len(stores) > 0 {
|
||||||
|
if stores[0].PayPercentage <= 50 {
|
||||||
|
order.NewEarningPrice = (order.TotalShopMoney - bill.DesiredFee) * int64((100 - stores[0].PayPercentage/2)) / 10000
|
||||||
|
dao.UpdateEntity(dao.GetDB(), order, "NewEarningPrice")
|
||||||
|
}
|
||||||
|
}
|
||||||
globals.SugarLogger.Debugf("CreateWaybillOnProviders orderID:%s userName:%s vendorID:%d bill:%v", order.VendorOrderID, userName, courierVendorID, bill)
|
globals.SugarLogger.Debugf("CreateWaybillOnProviders orderID:%s userName:%s vendorID:%d bill:%v", order.VendorOrderID, userName, courierVendorID, bill)
|
||||||
bills = append(bills, bill)
|
bills = append(bills, bill)
|
||||||
if createOnlyOne {
|
if createOnlyOne {
|
||||||
|
|||||||
@@ -655,7 +655,7 @@ func (s *DefScheduler) isWaybillCourierSame(savedOrderInfo *WatchOrderInfo, bill
|
|||||||
|
|
||||||
func (s *DefScheduler) addWaybill2Map(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) {
|
func (s *DefScheduler) addWaybill2Map(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) {
|
||||||
if _, ok := savedOrderInfo.waybills[bill.WaybillVendorID]; ok {
|
if _, ok := savedOrderInfo.waybills[bill.WaybillVendorID]; ok {
|
||||||
if !model.IsWaybillPlatformOwn(bill) { // 购买平台重复发相同号的新运单是正常的,京东就是
|
if !model.IsWaybillPlatformOwn(bill) && savedOrderInfo.order.StoreID != 666666 { // 购买平台重复发相同号的新运单是正常的,京东就是
|
||||||
globals.SugarLogger.Warnf("addWaybill2Map bill:%v already exists", bill)
|
globals.SugarLogger.Warnf("addWaybill2Map bill:%v already exists", bill)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1333,7 +1333,7 @@ func setFakeActualPayPrice(order *model.GoodsOrder) (newOrder *model.GoodsOrder)
|
|||||||
storeDetail, err := dao.GetStoreDetail(dao.GetDB(), order.JxStoreID, order.VendorID)
|
storeDetail, err := dao.GetStoreDetail(dao.GetDB(), order.JxStoreID, order.VendorID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
if storeDetail.PayPercentage < 50 {
|
if storeDetail.PayPercentage < 50 {
|
||||||
orderCopy.ActualPayPrice = order.TotalShopMoney * (100 - int64(storeDetail.PayPercentage/2)) * 100
|
orderCopy.ActualPayPrice = order.TotalShopMoney * (100 - int64(storeDetail.PayPercentage/2)) / 100
|
||||||
} else {
|
} else {
|
||||||
orderCopy.ActualPayPrice = order.EarningPrice
|
orderCopy.ActualPayPrice = order.EarningPrice
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -297,6 +297,7 @@ func checkConfig(opFlag int, configType, key, value string) (err error) {
|
|||||||
err = checkSysConfig(key, value)
|
err = checkSysConfig(key, value)
|
||||||
}
|
}
|
||||||
case model.ConfigTypeJxStore:
|
case model.ConfigTypeJxStore:
|
||||||
|
case model.ConfigTypeCookie:
|
||||||
default:
|
default:
|
||||||
err = fmt.Errorf("当前只支持配置:%s, 传入的配置类型:%s", utils.Format4Output(model.ConfigTypeName, true), configType)
|
err = fmt.Errorf("当前只支持配置:%s, 传入的配置类型:%s", utils.Format4Output(model.ConfigTypeName, true), configType)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -265,6 +265,13 @@ func ReorderCategories(ctx *jxcontext.Context, parentID int, categoryIDs []int,
|
|||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
if err = dao.GetEntitiesByKV(db, &cats, utils.Params2Map(model.FieldParentID, parentID), false); err == nil {
|
if err = dao.GetEntitiesByKV(db, &cats, utils.Params2Map(model.FieldParentID, parentID), false); err == nil {
|
||||||
catsLen := len(cats)
|
catsLen := len(cats)
|
||||||
|
if !isExd {
|
||||||
|
for _, v := range cats {
|
||||||
|
if v.IsExdSpec == 1 {
|
||||||
|
catsLen--
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if catsLen != len(categoryIDs) {
|
if catsLen != len(categoryIDs) {
|
||||||
return ErrInputCatsDoesntMatch
|
return ErrInputCatsDoesntMatch
|
||||||
}
|
}
|
||||||
@@ -385,9 +392,11 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma
|
|||||||
FROM sku_name t1
|
FROM sku_name t1
|
||||||
LEFT JOIN sku t2 ON t1.id = t2.name_id AND t2.deleted_at = ?
|
LEFT JOIN sku t2 ON t1.id = t2.name_id AND t2.deleted_at = ?
|
||||||
LEFT JOIN sku_name_place_bind t3 ON t1.id = t3.name_id
|
LEFT JOIN sku_name_place_bind t3 ON t1.id = t3.name_id
|
||||||
|
LEFT JOIN price_refer_snapshot t4 ON t4.city_code = ? AND t4.snapshot_at = ? AND t4.sku_id = t2.id
|
||||||
WHERE t1.deleted_at = ?`
|
WHERE t1.deleted_at = ?`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
|
0, utils.Time2Date(time.Now().AddDate(0, 0, -1)),
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
}
|
}
|
||||||
if keyword != "" {
|
if keyword != "" {
|
||||||
@@ -554,7 +563,8 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma
|
|||||||
t1.upc,
|
t1.upc,
|
||||||
t1.ex_prefix,
|
t1.ex_prefix,
|
||||||
t1.ex_prefix_begin,
|
t1.ex_prefix_begin,
|
||||||
t1.ex_prefix_end`
|
t1.ex_prefix_end,
|
||||||
|
t4.mid_unit_price`
|
||||||
if isBySku {
|
if isBySku {
|
||||||
sql += `,
|
sql += `,
|
||||||
t2.id`
|
t2.id`
|
||||||
@@ -588,10 +598,12 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma
|
|||||||
t1.ex_prefix,
|
t1.ex_prefix,
|
||||||
t1.ex_prefix_begin,
|
t1.ex_prefix_begin,
|
||||||
t1.ex_prefix_end,
|
t1.ex_prefix_end,
|
||||||
|
t4.mid_unit_price,
|
||||||
CONCAT("[", GROUP_CONCAT(DISTINCT CONCAT('{"id":', t2.id, ',"comment":"', t2.comment, '","status":', t2.status,
|
CONCAT("[", GROUP_CONCAT(DISTINCT CONCAT('{"id":', t2.id, ',"comment":"', t2.comment, '","status":', t2.status,
|
||||||
',"createdAt":"', CONCAT(REPLACE(t2.created_at," ","T"),"+08:00"), '","updatedAt":"', CONCAT(REPLACE(t2.updated_at," ","T"),"+08:00"),
|
',"createdAt":"', CONCAT(REPLACE(t2.created_at," ","T"),"+08:00"), '","updatedAt":"', CONCAT(REPLACE(t2.updated_at," ","T"),"+08:00"),
|
||||||
'","lastOperator":"', t2.last_operator, '","specQuality":', t2.spec_quality, ',"specUnit":"', t2.spec_unit,
|
'","lastOperator":"', t2.last_operator, '","specQuality":', t2.spec_quality, ',"specUnit":"', t2.spec_unit,
|
||||||
'","exdSkuID":"', t2.exd_sku_id,
|
'","exdSkuID":"', t2.exd_sku_id,
|
||||||
|
'","eclpID":"', t2.eclp_id,
|
||||||
'","weight":', t2.weight, ',"categoryID":', t2.category_id, ',"nameID":', t2.name_id,
|
'","weight":', t2.weight, ',"categoryID":', t2.category_id, ',"nameID":', t2.name_id,
|
||||||
', "seq":', t2.seq,
|
', "seq":', t2.seq,
|
||||||
"}")), "]") skus_str,
|
"}")), "]") skus_str,
|
||||||
@@ -765,9 +777,11 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s
|
|||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if err = OnCreateThing(ctx, db, nil, int64(sku.ID), model.ThingTypeSku); err != nil {
|
if sku.EclpID == "" {
|
||||||
dao.Rollback(db)
|
if err = OnCreateThing(ctx, db, nil, int64(sku.ID), model.ThingTypeSku); err != nil {
|
||||||
return nil, err
|
dao.Rollback(db)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for _, placeCode := range skuNameExt.Places {
|
for _, placeCode := range skuNameExt.Places {
|
||||||
@@ -846,7 +860,10 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var eclpID string
|
||||||
|
if payload["eclpID"] != nil {
|
||||||
|
eclpID = payload["eclpID"].(string)
|
||||||
|
}
|
||||||
dao.Begin(db)
|
dao.Begin(db)
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
@@ -859,7 +876,7 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
if !isExd {
|
if !isExd && eclpID == "" {
|
||||||
if err = OnUpdateThing(ctx, db, nil, int64(nameID), model.ThingTypeSkuName); err != nil {
|
if err = OnUpdateThing(ctx, db, nil, int64(nameID), model.ThingTypeSkuName); err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return 0, err
|
return 0, err
|
||||||
@@ -885,7 +902,7 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil)
|
skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil, nil)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
for _, v := range skuList {
|
for _, v := range skuList {
|
||||||
sku := &v.Sku
|
sku := &v.Sku
|
||||||
@@ -896,7 +913,7 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
if sku.ExdSkuID == "" {
|
if sku.ExdSkuID == "" && sku.EclpID == "" {
|
||||||
if err = OnUpdateThing(ctx, db, nil, int64(v.ID), model.ThingTypeSku); err != nil {
|
if err = OnUpdateThing(ctx, db, nil, int64(v.ID), model.ThingTypeSku); err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return 0, err
|
return 0, err
|
||||||
@@ -956,7 +973,7 @@ func DeleteSkuName(ctx *jxcontext.Context, nameID int, userName string) (num int
|
|||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil)
|
skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil, nil)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
for _, v := range skuList {
|
for _, v := range skuList {
|
||||||
sku := &v.Sku
|
sku := &v.Sku
|
||||||
@@ -1084,7 +1101,7 @@ func UpdateSku(ctx *jxcontext.Context, skuID int, payload map[string]interface{}
|
|||||||
}
|
}
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
if sku.ExdSkuID == "" {
|
if sku.ExdSkuID == "" && sku.EclpID == "" {
|
||||||
if err = OnUpdateThing(ctx, db, nil, int64(skuID), model.ThingTypeSku); err != nil {
|
if err = OnUpdateThing(ctx, db, nil, int64(skuID), model.ThingTypeSku); err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return 0, err
|
return 0, err
|
||||||
@@ -1108,34 +1125,39 @@ func UpdateSku(ctx *jxcontext.Context, skuID int, payload map[string]interface{}
|
|||||||
}
|
}
|
||||||
|
|
||||||
func refreshStoreSkuPrice(ctx *jxcontext.Context, db *dao.DaoDB, skuID int) (err error) {
|
func refreshStoreSkuPrice(ctx *jxcontext.Context, db *dao.DaoDB, skuID int) (err error) {
|
||||||
dao.Begin(db)
|
|
||||||
defer func() {
|
|
||||||
if r := recover(); r != nil || err != nil {
|
|
||||||
dao.Rollback(db)
|
|
||||||
if r != nil {
|
|
||||||
panic(r)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
list, err := dao.GetStoreSkusAndSkuName(db, nil, []int{skuID}, nil)
|
list, err := dao.GetStoreSkusAndSkuName(db, nil, []int{skuID}, nil)
|
||||||
for _, v := range list {
|
task := tasksch.NewParallelTask("refreshStoreSkuPrice", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(true), ctx,
|
||||||
storeID := v.StoreID
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
storeDetail, err := dao.GetStoreDetail(db, storeID, model.VendorIDJX)
|
v := batchItemList[0].(*dao.StoreSkuAndName)
|
||||||
if err != nil {
|
storeID := v.StoreID
|
||||||
return err
|
storeDetail, _ := dao.GetStoreDetail(db, storeID, model.VendorIDJX)
|
||||||
}
|
if storeDetail == nil {
|
||||||
storeSku := &model.StoreSkuBind{}
|
return retVal, err
|
||||||
storeSku.ID = v.BindID
|
}
|
||||||
storeSku.JdSyncStatus = v.JdSyncStatus | model.SyncFlagPriceMask
|
storeSku := &model.StoreSkuBind{}
|
||||||
storeSku.MtwmSyncStatus = v.MtwmSyncStatus | model.SyncFlagPriceMask
|
storeSku.ID = v.BindID
|
||||||
storeSku.EbaiSyncStatus = v.EbaiSyncStatus | model.SyncFlagPriceMask
|
storeSku.JdSyncStatus = v.JdSyncStatus | model.SyncFlagPriceMask
|
||||||
storeSku.Price = jxutils.CaculateSkuPrice(int(v.UnitPrice), v.SpecQuality, v.SpecUnit, v.Unit)
|
storeSku.MtwmSyncStatus = v.MtwmSyncStatus | model.SyncFlagPriceMask
|
||||||
storeSku.JxPrice = jxutils.CaculatePriceByPricePack(storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage), int(storeSku.Price))
|
storeSku.EbaiSyncStatus = v.EbaiSyncStatus | model.SyncFlagPriceMask
|
||||||
storeSku.LastOperator = ctx.GetUserName()
|
storeSku.Price = jxutils.CaculateSkuPrice(int(v.UnitPrice), v.SpecQuality, v.SpecUnit, v.Unit)
|
||||||
storeSku.UpdatedAt = time.Now()
|
storeSku.JxPrice = jxutils.CaculatePriceByPricePack(storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage), int(storeSku.Price))
|
||||||
dao.UpdateEntity(db, storeSku, "Price", "JdSyncStatus", "MtwmSyncStatus", "EbaiSyncStatus", "JxPrice")
|
storeSku.LastOperator = ctx.GetUserName()
|
||||||
}
|
storeSku.UpdatedAt = time.Now()
|
||||||
dao.Commit(db)
|
dao.Begin(db)
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil || err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
if r != nil {
|
||||||
|
panic(r)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
dao.UpdateEntity(db, storeSku, "Price", "JdSyncStatus", "MtwmSyncStatus", "EbaiSyncStatus", "JxPrice")
|
||||||
|
dao.Commit(db)
|
||||||
|
return retVal, err
|
||||||
|
}, list)
|
||||||
|
tasksch.HandleTask(task, nil, true).Run()
|
||||||
|
_, err = task.GetResult(0)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1404,7 +1426,7 @@ func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fro
|
|||||||
payload["exPrefixEnd"] = nil
|
payload["exPrefixEnd"] = nil
|
||||||
_, err = UpdateSkuName(ctx, nameID, payload, false)
|
_, err = UpdateSkuName(ctx, nameID, payload, false)
|
||||||
} else {
|
} else {
|
||||||
skuList, err := dao.GetSkus(db, nil, []int{nameID}, nil, nil)
|
skuList, err := dao.GetSkus(db, nil, []int{nameID}, nil, nil, nil)
|
||||||
if err == nil && len(skuList) > 0 {
|
if err == nil && len(skuList) > 0 {
|
||||||
if skuList[0].ExPrefixBegin != nil {
|
if skuList[0].ExPrefixBegin != nil {
|
||||||
_, err = UpdateSkuName(ctx, nameID, payload, false)
|
_, err = UpdateSkuName(ctx, nameID, payload, false)
|
||||||
@@ -1437,7 +1459,7 @@ func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fro
|
|||||||
case 1:
|
case 1:
|
||||||
if (now.Sub(toTimeP) <= 0 && now.Sub(fromTimeP) >= 0) || (now.Sub(fromTimeP) > 0 && now.Sub(toTimeP) > 0) {
|
if (now.Sub(toTimeP) <= 0 && now.Sub(fromTimeP) >= 0) || (now.Sub(fromTimeP) > 0 && now.Sub(toTimeP) > 0) {
|
||||||
var skuIDs []int
|
var skuIDs []int
|
||||||
skuList, err2 := dao.GetSkus(db, nil, nameIDs, nil, nil)
|
skuList, err2 := dao.GetSkus(db, nil, nameIDs, nil, nil, nil)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
if len(skuList) > 0 {
|
if len(skuList) > 0 {
|
||||||
for _, v := range skuList {
|
for _, v := range skuList {
|
||||||
@@ -1484,18 +1506,25 @@ func SumExianDaDepot(ctx *jxcontext.Context, isAsync, isContinueWhenError bool)
|
|||||||
taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
v := batchItemList[0].(*ebaiapi.ExianDaSkus)
|
v := batchItemList[0].(*ebaiapi.ExianDaSkus)
|
||||||
skus, err := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(v.ElemeGoodsID))
|
skus, err := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(v.ElemeGoodsID))
|
||||||
if err != nil {
|
if err != nil || skus == nil {
|
||||||
|
globals.SugarLogger.Debugf("GetExianDaSku,[%v]", v.ElemeGoodsID)
|
||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
|
// sku := &model.Sku{}
|
||||||
|
// sku.ExdSkuID = v.ElemeGoodsID
|
||||||
|
// sku.DeletedAt = utils.DefaultTimeValue
|
||||||
|
// dao.GetEntity(db, sku, "ExdSkuID","DeletedAt")
|
||||||
skuNameExt := &model.SkuName{}
|
skuNameExt := &model.SkuName{}
|
||||||
sql2 := `
|
sql2 := `
|
||||||
SELECT a.*
|
SELECT a.*
|
||||||
FROM sku_name a
|
FROM sku_name a
|
||||||
JOIN sku b ON b.name_id = a.id
|
JOIN sku b ON b.name_id = a.id
|
||||||
WHERE a.upc = ?
|
WHERE a.upc = ?
|
||||||
|
AND a.deleted_at = ? AND b.deleted_at = ?
|
||||||
`
|
`
|
||||||
sqlParams2 := []interface{}{
|
sqlParams2 := []interface{}{
|
||||||
skus.UpcIds,
|
skus.UpcIds[0],
|
||||||
|
utils.DefaultTimeValue, utils.DefaultTimeValue,
|
||||||
}
|
}
|
||||||
dao.GetRow(db, skuNameExt, sql2, sqlParams2)
|
dao.GetRow(db, skuNameExt, sql2, sqlParams2)
|
||||||
prefix, _, _, specUnit, unit, specQuality := jxutils.SplitSkuName(v.GoodsName)
|
prefix, _, _, specUnit, unit, specQuality := jxutils.SplitSkuName(v.GoodsName)
|
||||||
@@ -1521,16 +1550,6 @@ func SumExianDaDepot(ctx *jxcontext.Context, isAsync, isContinueWhenError bool)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
skuCat := &model.SkuCategory{}
|
|
||||||
sql := `
|
|
||||||
SELECT *
|
|
||||||
FROM sku_category
|
|
||||||
WHERE ebai_category_id = ?
|
|
||||||
`
|
|
||||||
sqlParams := []interface{}{
|
|
||||||
skus.CategoryIDThird,
|
|
||||||
}
|
|
||||||
dao.GetRow(db, skuCat, sql, sqlParams)
|
|
||||||
skuName := &model.SkuName{
|
skuName := &model.SkuName{
|
||||||
Prefix: prefix,
|
Prefix: prefix,
|
||||||
Name: v.GoodsName,
|
Name: v.GoodsName,
|
||||||
@@ -1543,11 +1562,7 @@ func SumExianDaDepot(ctx *jxcontext.Context, isAsync, isContinueWhenError bool)
|
|||||||
Upc: &v.UpcID,
|
Upc: &v.UpcID,
|
||||||
Status: model.SkuStatusNormal,
|
Status: model.SkuStatusNormal,
|
||||||
}
|
}
|
||||||
if skuCat.ID != 0 {
|
skuName.CategoryID = 35 //默认给了个分类
|
||||||
skuName.CategoryID = skuCat.ID
|
|
||||||
} else {
|
|
||||||
skuName.CategoryID = 35 //默认给了个分类
|
|
||||||
}
|
|
||||||
dao.WrapAddIDCULDEntity(skuName, ctx.GetUserName())
|
dao.WrapAddIDCULDEntity(skuName, ctx.GetUserName())
|
||||||
err = dao.CreateEntity(db, skuName)
|
err = dao.CreateEntity(db, skuName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1600,7 +1615,6 @@ func UpdateExianDaSkuCategory(ctx *jxcontext.Context, isAsync, isContinueWhenErr
|
|||||||
WHERE b.exd_sku_id <> ''
|
WHERE b.exd_sku_id <> ''
|
||||||
AND a.deleted_at = ?
|
AND a.deleted_at = ?
|
||||||
AND b.deleted_at = ?
|
AND b.deleted_at = ?
|
||||||
AND a.category_id = 35
|
|
||||||
`
|
`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
utils.DefaultTimeValue, utils.DefaultTimeValue,
|
utils.DefaultTimeValue, utils.DefaultTimeValue,
|
||||||
|
|||||||
@@ -2369,18 +2369,21 @@ func GetStoreListByLocation(ctx *jxcontext.Context, lng, lat float64, needWalkDi
|
|||||||
JOIN place city ON city.code = t1.city_code
|
JOIN place city ON city.code = t1.city_code
|
||||||
JOIN store_map sm ON sm.store_id = t1.id AND sm.vendor_id = ? AND sm.deleted_at = ? AND sm.status <> ?
|
JOIN store_map sm ON sm.store_id = t1.id AND sm.vendor_id = ? AND sm.deleted_at = ? AND sm.status <> ?
|
||||||
WHERE t1.deleted_at = ? AND t1.status <> ? AND t1.lng > ? AND t1.lng < ? AND t1.lat > ? AND t1.lat < ?
|
WHERE t1.deleted_at = ? AND t1.status <> ? AND t1.lng > ? AND t1.lng < ? AND t1.lat > ? AND t1.lat < ?
|
||||||
|
AND sm.is_order <> ?
|
||||||
ORDER BY t1.id
|
ORDER BY t1.id
|
||||||
`
|
`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
model.VendorIDJX, utils.DefaultTimeValue, model.StoreStatusDisabled,
|
model.VendorIDJX, utils.DefaultTimeValue, model.StoreStatusDisabled,
|
||||||
utils.DefaultTimeValue, model.StoreStatusDisabled, jxutils.StandardCoordinate2Int(lng1), jxutils.StandardCoordinate2Int(lng2), jxutils.StandardCoordinate2Int(lat1), jxutils.StandardCoordinate2Int(lat2),
|
utils.DefaultTimeValue, model.StoreStatusDisabled, jxutils.StandardCoordinate2Int(lng1), jxutils.StandardCoordinate2Int(lng2), jxutils.StandardCoordinate2Int(lat1), jxutils.StandardCoordinate2Int(lat2),
|
||||||
|
model.YES,
|
||||||
}
|
}
|
||||||
|
|
||||||
var storeList1 []*Store4User
|
var storeList1 []*Store4User
|
||||||
if err = dao.GetRows(dao.GetDB(), &storeList1, sql, sqlParams...); err == nil {
|
if err = dao.GetRows(dao.GetDB(), &storeList1, sql, sqlParams...); err == nil {
|
||||||
var storeList2 []*Store4User
|
var storeList2 []*Store4User
|
||||||
for _, v := range storeList1 {
|
for _, v := range storeList1 {
|
||||||
if distance := jxutils.Point2StoreDistance(lng, lat, v.Lng, v.Lat, v.DeliveryRangeType, v.DeliveryRange); distance > 0 {
|
distance := jxutils.Point2StoreDistance(lng, lat, v.Lng, v.Lat, v.DeliveryRangeType, v.DeliveryRange)
|
||||||
|
if distance > 0 || (lng == jxutils.IntCoordinate2Standard(v.Lng) && lat == jxutils.IntCoordinate2Standard(v.Lat)) {
|
||||||
v.Distance = distance
|
v.Distance = distance
|
||||||
storeList2 = append(storeList2, v)
|
storeList2 = append(storeList2, v)
|
||||||
}
|
}
|
||||||
@@ -2388,19 +2391,28 @@ func GetStoreListByLocation(ctx *jxcontext.Context, lng, lat float64, needWalkDi
|
|||||||
|
|
||||||
// 为了审核用
|
// 为了审核用
|
||||||
if len(storeList2) == 0 {
|
if len(storeList2) == 0 {
|
||||||
|
sql2 := `
|
||||||
|
SELECT t1.*,
|
||||||
|
city.name city_name
|
||||||
|
FROM store t1
|
||||||
|
JOIN place city ON city.code = t1.city_code
|
||||||
|
WHERE t1.deleted_at = ? AND t1.status <> ? AND t1.id = ?
|
||||||
|
`
|
||||||
sqlParams2 := []interface{}{
|
sqlParams2 := []interface{}{
|
||||||
model.VendorIDJX, utils.DefaultTimeValue, model.StoreStatusDisabled,
|
// model.VendorIDJX, utils.DefaultTimeValue, model.StoreStatusDisabled,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
model.StoreStatusDisabled,
|
model.StoreStatusDisabled,
|
||||||
jxutils.StandardCoordinate2Int(0),
|
// jxutils.StandardCoordinate2Int(0),
|
||||||
jxutils.StandardCoordinate2Int(10000),
|
// jxutils.StandardCoordinate2Int(10000),
|
||||||
jxutils.StandardCoordinate2Int(0),
|
// jxutils.StandardCoordinate2Int(0),
|
||||||
jxutils.StandardCoordinate2Int(10000),
|
// jxutils.StandardCoordinate2Int(10000),
|
||||||
}
|
// model.YES,
|
||||||
dao.GetRows(dao.GetDB(), &storeList2, sql, sqlParams2...)
|
102919, //商城模板店
|
||||||
if len(storeList2) > 1 {
|
|
||||||
storeList2 = storeList2[:1]
|
|
||||||
}
|
}
|
||||||
|
dao.GetRows(dao.GetDB(), &storeList2, sql2, sqlParams2...)
|
||||||
|
// if len(storeList2) > 1 {
|
||||||
|
// storeList2 = storeList2[:1]
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果要求以步行距离来算
|
// 如果要求以步行距离来算
|
||||||
@@ -2846,3 +2858,23 @@ func UpdateJdStoreNameAll(ctx *jxcontext.Context) (err error) {
|
|||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeletePrinterSeq(ctx *jxcontext.Context, storeIDs []int) (err error) {
|
||||||
|
db := dao.GetDB()
|
||||||
|
for _, v := range storeIDs {
|
||||||
|
stores, err := dao.GetStoreList(db, []int{v}, nil, nil, nil, "")
|
||||||
|
if err != nil || len(stores) == 0 {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
vendorID := stores[0].PrinterVendorID
|
||||||
|
if vendorID == model.NO {
|
||||||
|
return fmt.Errorf("该门店没有绑定打印机,ID:[%v],名字:[%v]", stores[0].ID, stores[0].Name)
|
||||||
|
}
|
||||||
|
if vendorID == model.VendorIDXiaoWM {
|
||||||
|
return fmt.Errorf("暂不支持该打印机品牌清空打印队列,[%v]", model.VendorChineseNames[model.VendorIDXiaoWM])
|
||||||
|
}
|
||||||
|
handler := partner.GetPrinterPlatformFromVendorID(vendorID)
|
||||||
|
err = handler.EmptyPrintList(ctx, stores[0].PrinterSN, stores[0].PrinterKey)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|||||||
@@ -191,6 +191,13 @@ type tUpdateSkuSpecTag struct {
|
|||||||
IsSpec int `json:"isSpec"`
|
IsSpec int `json:"isSpec"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type MatterStock struct {
|
||||||
|
SkuID int `json:"skuID"`
|
||||||
|
SkuNameID int `json:"skuNameID"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Stock int `json:"stock"`
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
maxStoreNameBind = 10000 // 最大门店SkuName bind个数
|
maxStoreNameBind = 10000 // 最大门店SkuName bind个数
|
||||||
maxStoreNameBind2 = 10000 // 最大门店乘SkuName个数
|
maxStoreNameBind2 = 10000 // 最大门店乘SkuName个数
|
||||||
@@ -228,10 +235,10 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func GetStoreSkus(ctx *jxcontext.Context, storeID int, skuIDs []int, isFocus bool, keyword string, isBySku, isAct bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *dao.StoreSkuNamesInfo, err error) {
|
func GetStoreSkus(ctx *jxcontext.Context, storeID int, skuIDs []int, isFocus bool, keyword string, isBySku, isAct bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *dao.StoreSkuNamesInfo, err error) {
|
||||||
return GetStoresSkus(ctx, []int{storeID}, skuIDs, isFocus, keyword, isBySku, isAct, params, offset, pageSize)
|
return GetStoresSkus(ctx, []int{storeID}, skuIDs, isFocus, false, keyword, isBySku, isAct, params, offset, pageSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool, keyword string, isBySku, isAct bool, actVendorID int, params map[string]interface{}) (sql string, sqlParams []interface{}, err error) {
|
func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool, keyword string, isBySku, isAct, isHighPrice bool, actVendorID int, params map[string]interface{}) (sql string, sqlParams []interface{}, err error) {
|
||||||
sql = `
|
sql = `
|
||||||
FROM sku_name t1
|
FROM sku_name t1
|
||||||
JOIN sku t2 FORCE INDEX(PRIMARY) ON t1.id = t2.name_id AND t2.deleted_at = ?/* AND t2.status = ?*/
|
JOIN sku t2 FORCE INDEX(PRIMARY) ON t1.id = t2.name_id AND t2.deleted_at = ?/* AND t2.status = ?*/
|
||||||
@@ -302,6 +309,9 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool
|
|||||||
utils.Bool2Int(isFocus),
|
utils.Bool2Int(isFocus),
|
||||||
// model.SkuStatusNormal,
|
// model.SkuStatusNormal,
|
||||||
})
|
})
|
||||||
|
if isHighPrice {
|
||||||
|
sql += " AND t4.unit_price > t6.mid_unit_price / IF(t3.pay_percentage < 50 , 70, t3.pay_percentage) * 1.2 * 100"
|
||||||
|
}
|
||||||
if isFocus {
|
if isFocus {
|
||||||
sql += " AND ((t2.status = ? AND t1.status = ?) OR t4.status = ?)"
|
sql += " AND ((t2.status = ? AND t1.status = ?) OR t4.status = ?)"
|
||||||
sqlParams = append(sqlParams, model.SkuStatusNormal, model.SkuStatusNormal, model.SkuStatusNormal)
|
sqlParams = append(sqlParams, model.SkuStatusNormal, model.SkuStatusNormal, model.SkuStatusNormal)
|
||||||
@@ -428,11 +438,11 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool
|
|||||||
return sql, sqlParams, err
|
return sql, sqlParams, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetStoresSkus(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bool, keyword string, isBySku, isAct bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *dao.StoreSkuNamesInfo, err error) {
|
func GetStoresSkus(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus, isHighPrice bool, keyword string, isBySku, isAct bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *dao.StoreSkuNamesInfo, err error) {
|
||||||
return GetStoresSkusNew(ctx, storeIDs, skuIDs, isFocus, keyword, isBySku, isAct, params, offset, pageSize)
|
return GetStoresSkusNew(ctx, storeIDs, skuIDs, isFocus, isHighPrice, keyword, isBySku, isAct, params, offset, pageSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bool, keyword string, isBySku, isAct bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *dao.StoreSkuNamesInfo, err error) {
|
func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus, isHighPrice bool, keyword string, isBySku, isAct bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *dao.StoreSkuNamesInfo, err error) {
|
||||||
if !isFocus && !isBySku && (len(storeIDs) > 1 || len(storeIDs) == 0) {
|
if !isFocus && !isBySku && (len(storeIDs) > 1 || len(storeIDs) == 0) {
|
||||||
return nil, fmt.Errorf("未关注按SkuName只能查询单店")
|
return nil, fmt.Errorf("未关注按SkuName只能查询单店")
|
||||||
}
|
}
|
||||||
@@ -444,7 +454,7 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bo
|
|||||||
actVendorID = int(utils.Interface2Int64WithDefault(params["actVendorID"], -1))
|
actVendorID = int(utils.Interface2Int64WithDefault(params["actVendorID"], -1))
|
||||||
}
|
}
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
sql, sqlParams, err := getGetStoresSkusBaseSQL(db, storeIDs, skuIDs, isFocus, keyword, isBySku, isAct, actVendorID, params)
|
sql, sqlParams, err := getGetStoresSkusBaseSQL(db, storeIDs, skuIDs, isFocus, keyword, isBySku, isAct, isHighPrice, actVendorID, params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -513,7 +523,7 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bo
|
|||||||
t3.id store_id, t3.name store_name, t3.pay_percentage,
|
t3.id store_id, t3.name store_name, t3.pay_percentage,
|
||||||
t1.*,
|
t1.*,
|
||||||
t2.name_id, t2.id sku_id, t2.spec_quality sku_spec_quality, t2.spec_unit sku_spec_unit, t2.weight, t2m.vendor_thing_id sku_jd_id,
|
t2.name_id, t2.id sku_id, t2.spec_quality sku_spec_quality, t2.spec_unit sku_spec_unit, t2.weight, t2m.vendor_thing_id sku_jd_id,
|
||||||
t2.comment, t2.category_id sku_category_id, t2.status sku_status,
|
t2.comment, t2.category_id sku_category_id, t2.status sku_status, t2.eclp_id,
|
||||||
t4.created_at bind_created_at, t4.updated_at bind_updated_at, t4.last_operator bind_last_operator, t4.deleted_at bind_deleted_at,
|
t4.created_at bind_created_at, t4.updated_at bind_updated_at, t4.last_operator bind_last_operator, t4.deleted_at bind_deleted_at,
|
||||||
t4.sub_store_id, t4.price bind_price, IF(t4.unit_price IS NOT NULL, t4.unit_price, t1.price) unit_price, t4.status store_sku_status, t4.auto_sale_at,
|
t4.sub_store_id, t4.price bind_price, IF(t4.unit_price IS NOT NULL, t4.unit_price, t1.price) unit_price, t4.status store_sku_status, t4.auto_sale_at,
|
||||||
t4.ebai_id, t4.mtwm_id,
|
t4.ebai_id, t4.mtwm_id,
|
||||||
@@ -523,6 +533,9 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bo
|
|||||||
t4.status_sale_begin, t4.status_sale_end,
|
t4.status_sale_begin, t4.status_sale_end,
|
||||||
t6.mid_unit_price real_mid_unit_price
|
t6.mid_unit_price real_mid_unit_price
|
||||||
` + sql
|
` + sql
|
||||||
|
if isHighPrice {
|
||||||
|
sql += " , t4.unit_price DESC LIMIT 99"
|
||||||
|
}
|
||||||
var tmpList []*tGetStoresSkusInfo
|
var tmpList []*tGetStoresSkusInfo
|
||||||
beginTime := time.Now()
|
beginTime := time.Now()
|
||||||
if err = dao.GetRows(db, &tmpList, sql, sqlParams...); err != nil {
|
if err = dao.GetRows(db, &tmpList, sql, sqlParams...); err != nil {
|
||||||
@@ -2308,16 +2321,39 @@ func ReCalculateJxPriceLight(db *dao.DaoDB, ctx *jxcontext.Context, storeID int)
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetTopSkusByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (storeSkuNameExt []*dao.StoreSkuNameExt, err error) {
|
func GetTopSkusByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (storeSkuNameExt2 []*dao.StoreSkuNameExt, err error) {
|
||||||
|
var (
|
||||||
|
db = dao.GetDB()
|
||||||
|
skuMap = make(map[int]*dao.StoreSkuNameExt)
|
||||||
|
)
|
||||||
if len(storeIDs) == 0 {
|
if len(storeIDs) == 0 {
|
||||||
return storeSkuNameExt, err
|
return storeSkuNameExt2, err
|
||||||
}
|
}
|
||||||
db := dao.GetDB()
|
storeSkuNameExt, err := dao.GetTopSkusByStoreIDs(db, storeIDs)
|
||||||
storeSkuNameExt, err = dao.GetTopSkusByStoreIDs(db, storeIDs)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return storeSkuNameExt, err
|
for _, v := range storeSkuNameExt {
|
||||||
|
if skuMap[v.SkuID] == nil {
|
||||||
|
skuMap[v.SkuID] = v
|
||||||
|
}
|
||||||
|
if skuMap[v.SkuID] != nil && v.Count != 0 {
|
||||||
|
skuMap[v.SkuID] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, v := range skuMap {
|
||||||
|
storeSkuNameExt2 = append(storeSkuNameExt2, v)
|
||||||
|
}
|
||||||
|
for i := 0; i < len(storeSkuNameExt2)-1; i++ {
|
||||||
|
for j := 0; j < len(storeSkuNameExt2)-i-1; j++ {
|
||||||
|
if storeSkuNameExt2[j].Count < storeSkuNameExt2[j+1].Count {
|
||||||
|
tmp := storeSkuNameExt2[j]
|
||||||
|
storeSkuNameExt2[j] = storeSkuNameExt2[j+1]
|
||||||
|
storeSkuNameExt2[j+1] = tmp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return storeSkuNameExt2, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetTopSkusByCityCode(ctx *jxcontext.Context, cityCode, storeID int) (skuNameAndPlaceList []*dao.SkuNameAndPlace, err error) {
|
func GetTopSkusByCityCode(ctx *jxcontext.Context, cityCode, storeID int) (skuNameAndPlaceList []*dao.SkuNameAndPlace, err error) {
|
||||||
@@ -2371,7 +2407,7 @@ func GetTopSkusByCityCode(ctx *jxcontext.Context, cityCode, storeID int) (skuNam
|
|||||||
var skuList []*model.SkuAndName
|
var skuList []*model.SkuAndName
|
||||||
storeSkuSyncInfo, _ := dao.GetStoreSkusAndSkuName(db, []int{storeID}, nil, []int{v.ID})
|
storeSkuSyncInfo, _ := dao.GetStoreSkusAndSkuName(db, []int{storeID}, nil, []int{v.ID})
|
||||||
for _, storeSkuSync := range storeSkuSyncInfo {
|
for _, storeSkuSync := range storeSkuSyncInfo {
|
||||||
sku, _ := dao.GetSkus(db, []int{storeSkuSync.ID}, nil, nil, nil)
|
sku, _ := dao.GetSkus(db, []int{storeSkuSync.ID}, nil, nil, nil, nil)
|
||||||
sku[0].Price = int(storeSkuSync.Price)
|
sku[0].Price = int(storeSkuSync.Price)
|
||||||
skuList = append(skuList, sku...)
|
skuList = append(skuList, sku...)
|
||||||
}
|
}
|
||||||
@@ -2984,7 +3020,7 @@ func FocusStoreSkusByExcelBin(ctx *jxcontext.Context, reader io.Reader, isAsync,
|
|||||||
for k, _ := range skuMap {
|
for k, _ := range skuMap {
|
||||||
skuIDs = append(skuIDs, k)
|
skuIDs = append(skuIDs, k)
|
||||||
}
|
}
|
||||||
skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil)
|
skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil, nil)
|
||||||
storeList, err := dao.GetStoreList(db, nil, nil, nil, nil, "")
|
storeList, err := dao.GetStoreList(db, nil, nil, nil, nil, "")
|
||||||
if err != nil && len(skuList) == 0 {
|
if err != nil && len(skuList) == 0 {
|
||||||
return result, err
|
return result, err
|
||||||
@@ -3097,7 +3133,7 @@ func FocusStoreSkusBySku(ctx *jxcontext.Context, skuBindInfos []*StoreSkuBindInf
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return retVal, err
|
return retVal, err
|
||||||
}
|
}
|
||||||
skuList, err := dao.GetSkus(db, []int{skuID}, nil, nil, nil)
|
skuList, err := dao.GetSkus(db, []int{skuID}, nil, nil, nil, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return retVal, err
|
return retVal, err
|
||||||
}
|
}
|
||||||
@@ -3173,6 +3209,9 @@ func AutoFocusStoreSkusForTopSkus(ctx *jxcontext.Context, isAsync, isContinueWhe
|
|||||||
skuName []*model.SkuName
|
skuName []*model.SkuName
|
||||||
skuNameMap = make(map[int]int)
|
skuNameMap = make(map[int]int)
|
||||||
)
|
)
|
||||||
|
if v.ID == model.MatterStoreID {
|
||||||
|
return retVal, err
|
||||||
|
}
|
||||||
sql := `
|
sql := `
|
||||||
SELECT DISTINCT a.name_id id
|
SELECT DISTINCT a.name_id id
|
||||||
FROM sku a
|
FROM sku a
|
||||||
@@ -3283,7 +3322,7 @@ func AutoFocusStoreSkusWithoutFocus(ctx *jxcontext.Context, skuIDs []int, isSync
|
|||||||
}
|
}
|
||||||
var skuBindSkuList []*StoreSkuBindSkuInfo
|
var skuBindSkuList []*StoreSkuBindSkuInfo
|
||||||
skuMap := make(map[int]int)
|
skuMap := make(map[int]int)
|
||||||
skuList, _ := dao.GetSkus(db, nil, []int{v.NameID}, nil, nil)
|
skuList, _ := dao.GetSkus(db, nil, []int{v.NameID}, nil, nil, nil)
|
||||||
if len(v.Skus) != len(skuList) {
|
if len(v.Skus) != len(skuList) {
|
||||||
for _, skus := range v.Skus {
|
for _, skus := range v.Skus {
|
||||||
skuMap[skus.SkuID] = 1
|
skuMap[skus.SkuID] = 1
|
||||||
@@ -3369,10 +3408,13 @@ func UpdateStoreSkusSpecTagBin(ctx *jxcontext.Context, reader io.Reader, vendorI
|
|||||||
}
|
}
|
||||||
for _, v := range results {
|
for _, v := range results {
|
||||||
store, err := dao.GetStoreDetail(db, v.StoreID, model.VendorIDMTWM)
|
store, err := dao.GetStoreDetail(db, v.StoreID, model.VendorIDMTWM)
|
||||||
food, err := api.MtwmAPI.RetailGet(store.VendorStoreID, utils.Int2Str(v.SkuID))
|
|
||||||
if err != nil || store == nil {
|
if err != nil || store == nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
food, err := api.MtwmAPI.RetailGet(store.VendorStoreID, utils.Int2Str(v.SkuID))
|
||||||
|
if err != nil || food == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
var foodData = make(map[string]interface{})
|
var foodData = make(map[string]interface{})
|
||||||
if v.IsSpec != 0 && v.IsSpec == -1 {
|
if v.IsSpec != 0 && v.IsSpec == -1 {
|
||||||
v.IsSpec = 0
|
v.IsSpec = 0
|
||||||
@@ -3556,7 +3598,7 @@ func SendSeckillSkusCountMsg(ctx *jxcontext.Context, vendorIDs []int, isAsync, i
|
|||||||
return hint, err
|
return hint, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus, vendorID int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus, vendorID int, ignoreLow, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
var (
|
var (
|
||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
jdMap = make(map[int][]*JdStoreSkus)
|
jdMap = make(map[int][]*JdStoreSkus)
|
||||||
@@ -3572,6 +3614,8 @@ func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus,
|
|||||||
pricePercentagePack []*model.PricePercentageItem
|
pricePercentagePack []*model.PricePercentageItem
|
||||||
cats []*model.ThingMap
|
cats []*model.ThingMap
|
||||||
skus []*model.SkuAndName
|
skus []*model.SkuAndName
|
||||||
|
vendorPrice int
|
||||||
|
specQuality float64
|
||||||
)
|
)
|
||||||
sql := `
|
sql := `
|
||||||
SELECT t1.*
|
SELECT t1.*
|
||||||
@@ -3586,7 +3630,7 @@ func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus,
|
|||||||
}
|
}
|
||||||
err = dao.GetRows(db, &cats, sql, sqlParams...)
|
err = dao.GetRows(db, &cats, sql, sqlParams...)
|
||||||
if len(cats) > 0 {
|
if len(cats) > 0 {
|
||||||
skus, err = dao.GetSkus(db, []int{int(cats[0].ThingID)}, nil, nil, nil)
|
skus, err = dao.GetSkus(db, []int{int(cats[0].ThingID)}, nil, nil, nil, nil)
|
||||||
if err != nil || len(skus) == 0 {
|
if err != nil || len(skus) == 0 {
|
||||||
return result, fmt.Errorf("没有找到该京西skuID!,京西skuID :[%v]", cats[0].ThingID)
|
return result, fmt.Errorf("没有找到该京西skuID!,京西skuID :[%v]", cats[0].ThingID)
|
||||||
}
|
}
|
||||||
@@ -3598,7 +3642,20 @@ func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus,
|
|||||||
return result, fmt.Errorf("没有找到该京东门店对应的京西门店!,京东门店ID :[%v]", v.JdStoreID)
|
return result, fmt.Errorf("没有找到该京东门店对应的京西门店!,京东门店ID :[%v]", v.JdStoreID)
|
||||||
}
|
}
|
||||||
err = jxutils.Strings2Objs(store.PricePercentagePackStr, &pricePercentagePack)
|
err = jxutils.Strings2Objs(store.PricePercentagePackStr, &pricePercentagePack)
|
||||||
jxPrice := jxutils.CaculateJxPriceByPricePack(pricePercentagePack, 0, v.Price)
|
if skus[0].Unit == model.SpecialUnit {
|
||||||
|
if skus[0].SpecUnit == model.SpecUnitNames[1] || skus[0].SpecUnit == model.SpecUnitNames[2] {
|
||||||
|
specQuality = float64(skus[0].SpecQuality) * 1000
|
||||||
|
} else {
|
||||||
|
specQuality = float64(skus[0].SpecQuality)
|
||||||
|
}
|
||||||
|
vendorPrice = int(utils.Float64TwoInt64(specQuality / utils.Int2Float64(model.SpecialSpecQuality) * utils.Int2Float64(v.Price)))
|
||||||
|
} else {
|
||||||
|
vendorPrice = v.Price
|
||||||
|
}
|
||||||
|
jxPrice := jxutils.CaculateJxPriceByPricePack(pricePercentagePack, 0, vendorPrice)
|
||||||
|
if skus[0].Unit == model.SpecialUnit {
|
||||||
|
jxPrice = int(utils.Float64TwoInt64(utils.Int2Float64(jxPrice) * utils.Int2Float64(model.SpecialSpecQuality) / specQuality))
|
||||||
|
}
|
||||||
jdMap[store.ID] = append(jdMap[store.ID], &JdStoreSkus{
|
jdMap[store.ID] = append(jdMap[store.ID], &JdStoreSkus{
|
||||||
JdSkuID: skus[0].NameID,
|
JdSkuID: skus[0].NameID,
|
||||||
Price: jxPrice,
|
Price: jxPrice,
|
||||||
@@ -3621,7 +3678,16 @@ func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus,
|
|||||||
for kk, vv := range v {
|
for kk, vv := range v {
|
||||||
result, err := dao.GetStoreSkuBindByNameID(db, k, kk, model.SkuStatusNormal)
|
result, err := dao.GetStoreSkuBindByNameID(db, k, kk, model.SkuStatusNormal)
|
||||||
if len(result) > 0 && err == nil {
|
if len(result) > 0 && err == nil {
|
||||||
if result[0].UnitPrice > vv {
|
if ignoreLow {
|
||||||
|
if result[0].UnitPrice > vv {
|
||||||
|
storeSkuBindInfo := &StoreSkuBindInfo{
|
||||||
|
StoreID: k,
|
||||||
|
NameID: kk,
|
||||||
|
UnitPrice: vv,
|
||||||
|
}
|
||||||
|
param = append(param, storeSkuBindInfo)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
storeSkuBindInfo := &StoreSkuBindInfo{
|
storeSkuBindInfo := &StoreSkuBindInfo{
|
||||||
StoreID: k,
|
StoreID: k,
|
||||||
NameID: kk,
|
NameID: kk,
|
||||||
@@ -3636,14 +3702,29 @@ func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus,
|
|||||||
for _, v := range jdStoreSkus {
|
for _, v := range jdStoreSkus {
|
||||||
var (
|
var (
|
||||||
pricePercentagePack []*model.PricePercentageItem
|
pricePercentagePack []*model.PricePercentageItem
|
||||||
|
vendorPrice int
|
||||||
|
specQuality float64
|
||||||
)
|
)
|
||||||
skus, _ := dao.GetSkus(db, []int{v.JdSkuID}, nil, nil, nil)
|
skus, _ := dao.GetSkus(db, []int{v.JdSkuID}, nil, nil, nil, nil)
|
||||||
if len(skus) == 0 {
|
if len(skus) == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
store, _ := dao.GetStoreDetail(db, v.JdStoreID, vendorID)
|
store, _ := dao.GetStoreDetail(db, v.JdStoreID, vendorID)
|
||||||
err = jxutils.Strings2Objs(store.PricePercentagePackStr, &pricePercentagePack)
|
err = jxutils.Strings2Objs(store.PricePercentagePackStr, &pricePercentagePack)
|
||||||
jxPrice := jxutils.CaculateJxPriceByPricePack(pricePercentagePack, 0, v.Price)
|
if skus[0].Unit == model.SpecialUnit {
|
||||||
|
if skus[0].SpecUnit == model.SpecUnitNames[1] || skus[0].SpecUnit == model.SpecUnitNames[2] {
|
||||||
|
specQuality = float64(skus[0].SpecQuality) * 1000
|
||||||
|
} else {
|
||||||
|
specQuality = float64(skus[0].SpecQuality)
|
||||||
|
}
|
||||||
|
vendorPrice = int(utils.Float64TwoInt64(specQuality / utils.Int2Float64(model.SpecialSpecQuality) * utils.Int2Float64(v.Price)))
|
||||||
|
} else {
|
||||||
|
vendorPrice = v.Price
|
||||||
|
}
|
||||||
|
jxPrice := jxutils.CaculateJxPriceByPricePack(pricePercentagePack, 0, vendorPrice)
|
||||||
|
if skus[0].Unit == model.SpecialUnit {
|
||||||
|
jxPrice = int(utils.Float64TwoInt64(utils.Int2Float64(jxPrice) * utils.Int2Float64(model.SpecialSpecQuality) / specQuality))
|
||||||
|
}
|
||||||
jdMap[v.JdStoreID] = append(jdMap[v.JdStoreID], &JdStoreSkus{
|
jdMap[v.JdStoreID] = append(jdMap[v.JdStoreID], &JdStoreSkus{
|
||||||
JdSkuID: skus[0].NameID,
|
JdSkuID: skus[0].NameID,
|
||||||
Price: jxPrice,
|
Price: jxPrice,
|
||||||
@@ -3666,7 +3747,16 @@ func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus,
|
|||||||
for kk, vv := range v {
|
for kk, vv := range v {
|
||||||
result, err := dao.GetStoreSkuBindByNameID(db, k, kk, model.SkuStatusNormal)
|
result, err := dao.GetStoreSkuBindByNameID(db, k, kk, model.SkuStatusNormal)
|
||||||
if len(result) > 0 && err == nil {
|
if len(result) > 0 && err == nil {
|
||||||
if result[0].UnitPrice > vv {
|
if ignoreLow {
|
||||||
|
if result[0].UnitPrice > vv {
|
||||||
|
storeSkuBindInfo := &StoreSkuBindInfo{
|
||||||
|
StoreID: k,
|
||||||
|
NameID: kk,
|
||||||
|
UnitPrice: vv,
|
||||||
|
}
|
||||||
|
param = append(param, storeSkuBindInfo)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
storeSkuBindInfo := &StoreSkuBindInfo{
|
storeSkuBindInfo := &StoreSkuBindInfo{
|
||||||
StoreID: k,
|
StoreID: k,
|
||||||
NameID: kk,
|
NameID: kk,
|
||||||
@@ -3693,3 +3783,268 @@ func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus,
|
|||||||
}
|
}
|
||||||
return hint, err
|
return hint, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func RefreshJxPriceByVendor2(ctx *jxcontext.Context, storeIDs []int, vendorID int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
|
var (
|
||||||
|
db = dao.GetDB()
|
||||||
|
param []*StoreSkuBindInfo
|
||||||
|
)
|
||||||
|
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
|
switch step {
|
||||||
|
case 0:
|
||||||
|
for _, storeID := range storeIDs {
|
||||||
|
var (
|
||||||
|
pricePercentagePack []*model.PricePercentageItem
|
||||||
|
skuNameMap = make(map[int]int64)
|
||||||
|
)
|
||||||
|
storeDetail, _ := dao.GetStoreDetail(db, storeID, vendorID)
|
||||||
|
err = jxutils.Strings2Objs(storeDetail.PricePercentagePackStr, &pricePercentagePack)
|
||||||
|
if partner.IsMultiStore(vendorID) {
|
||||||
|
mulitStoreSkuHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformStoreSkuHandler)
|
||||||
|
skuList, err := dao.GetSkusWithVendor(db, []int{vendorID}, nil, nil, nil, false)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
bareStoreSkuMap := make(map[string][]*partner.StoreSkuInfo)
|
||||||
|
for _, sku := range skuList {
|
||||||
|
bareStoreSkuMap[sku.VendorOrgCode] = append(bareStoreSkuMap[sku.VendorOrgCode], &partner.StoreSkuInfo{
|
||||||
|
SkuID: sku.ID,
|
||||||
|
VendorSkuID: sku.VendorSkuID,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
for _, orgCode := range apimanager.CurAPIManager.GetAppOrgCodeList(vendorID) {
|
||||||
|
outStoreSkuList, _ := mulitStoreSkuHandler.GetStoreSkusBareInfo(ctx, orgCode, task, storeID, storeDetail.VendorStoreID, bareStoreSkuMap[orgCode])
|
||||||
|
for _, sku := range outStoreSkuList {
|
||||||
|
price, nameID := getSkuNamePrice(db, sku.SkuID, sku.VendorPrice)
|
||||||
|
if skuNameMap[nameID] < price {
|
||||||
|
skuNameMap[nameID] = price
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for k, v := range skuNameMap {
|
||||||
|
unitPrice := jxutils.CaculateJxPriceByPricePack(pricePercentagePack, 0, int(v))
|
||||||
|
storeSkuBindInfo := &StoreSkuBindInfo{
|
||||||
|
StoreID: storeID,
|
||||||
|
NameID: k,
|
||||||
|
UnitPrice: unitPrice,
|
||||||
|
}
|
||||||
|
param = append(param, storeSkuBindInfo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler)
|
||||||
|
outSkuNameList, _ := singleStoreHandler.GetStoreSkusFullInfo(ctx, task, storeID, storeDetail.VendorStoreID, nil)
|
||||||
|
for _, skuName := range outSkuNameList {
|
||||||
|
sku := skuName.SkuList[0]
|
||||||
|
price, nameID := getSkuNamePrice(db, sku.SkuID, sku.VendorPrice)
|
||||||
|
if skuNameMap[nameID] < price {
|
||||||
|
skuNameMap[nameID] = price
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for k, v := range skuNameMap {
|
||||||
|
unitPrice := jxutils.CaculateJxPriceByPricePack(pricePercentagePack, 0, int(v))
|
||||||
|
storeSkuBindInfo := &StoreSkuBindInfo{
|
||||||
|
StoreID: storeID,
|
||||||
|
NameID: k,
|
||||||
|
UnitPrice: unitPrice,
|
||||||
|
}
|
||||||
|
param = append(param, storeSkuBindInfo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
_, err = UpdateStoresSkusByBind(ctx, nil, param, isAsync, isContinueWhenError)
|
||||||
|
}
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
taskSeq := tasksch.NewSeqTask2("根据平台价刷新京西平台价", ctx, isContinueWhenError, taskSeqFunc, 2)
|
||||||
|
tasksch.HandleTask(taskSeq, nil, true).Run()
|
||||||
|
if !isAsync {
|
||||||
|
_, err = taskSeq.GetResult(0)
|
||||||
|
hint = "1"
|
||||||
|
} else {
|
||||||
|
hint = taskSeq.GetID()
|
||||||
|
}
|
||||||
|
return hint, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func getSkuNamePrice(db *dao.DaoDB, skuID int, orgPrice int64) (price int64, nameID int) {
|
||||||
|
var (
|
||||||
|
specQuality float64
|
||||||
|
)
|
||||||
|
skuList, _ := dao.GetSkus(db, []int{skuID}, nil, nil, nil, nil)
|
||||||
|
for _, v := range skuList {
|
||||||
|
if v.Unit == model.SpecialUnit {
|
||||||
|
if v.SpecUnit == model.SpecUnitNames[1] || v.SpecUnit == model.SpecUnitNames[2] {
|
||||||
|
specQuality = float64(v.SpecQuality) * 1000
|
||||||
|
} else {
|
||||||
|
specQuality = float64(v.SpecQuality)
|
||||||
|
}
|
||||||
|
price = utils.Float64TwoInt64(utils.Int2Float64(model.SpecialSpecQuality) / specQuality * utils.Int2Float64(int(orgPrice)))
|
||||||
|
} else {
|
||||||
|
price = orgPrice
|
||||||
|
}
|
||||||
|
nameID = v.NameID
|
||||||
|
}
|
||||||
|
return price, nameID
|
||||||
|
}
|
||||||
|
|
||||||
|
func BackUpStoreSkuBind(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
|
var (
|
||||||
|
db = dao.GetDB()
|
||||||
|
snapshotAt = utils.Time2Date(time.Now())
|
||||||
|
)
|
||||||
|
storeSkuBindHis := &model.StoreSkuBindHistory{
|
||||||
|
SnapshotAt: snapshotAt.AddDate(0, 0, -2),
|
||||||
|
}
|
||||||
|
storeSkuBindHis2 := &model.StoreSkuBindHistory{
|
||||||
|
SnapshotAt: snapshotAt,
|
||||||
|
}
|
||||||
|
dao.DeleteEntity(db, storeSkuBindHis, "SnapshotAt")
|
||||||
|
dao.DeleteEntity(db, storeSkuBindHis2, "SnapshotAt")
|
||||||
|
storeList, err := dao.GetStoreList(db, nil, nil, nil, nil, "")
|
||||||
|
task := tasksch.NewParallelTask("BackUpStoreSkuBind", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||||
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
store := batchItemList[0].(*model.Store)
|
||||||
|
storeSku, err := dao.GetStoresSkusInfo(db, []int{store.ID}, nil)
|
||||||
|
var storeSkuBindHiss []*model.StoreSkuBindHistory
|
||||||
|
for _, v := range storeSku {
|
||||||
|
storeSkuBindHis := &model.StoreSkuBindHistory{}
|
||||||
|
storeSkuBindHis.StoreSkuBind = *v
|
||||||
|
storeSkuBindHis.StoreSkuBindID = v.ID
|
||||||
|
storeSkuBindHis.StoreSkuBind.ID = 0
|
||||||
|
storeSkuBindHis.SnapshotAt = utils.Time2Date(snapshotAt)
|
||||||
|
storeSkuBindHiss = append(storeSkuBindHiss, storeSkuBindHis)
|
||||||
|
}
|
||||||
|
if len(storeSkuBindHiss) > 0 {
|
||||||
|
dao.CreateMultiEntities(db, storeSkuBindHiss)
|
||||||
|
}
|
||||||
|
return retVal, err
|
||||||
|
}, storeList)
|
||||||
|
tasksch.HandleTask(task, nil, true).Run()
|
||||||
|
if isAsync {
|
||||||
|
hint = task.GetID()
|
||||||
|
} else {
|
||||||
|
_, err = task.GetResult(0)
|
||||||
|
hint = "1"
|
||||||
|
}
|
||||||
|
return hint, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func ReturnStoreSkuBind(ctx *jxcontext.Context, snapshotAt string, storeIDs, skuIDs []int) (err error) {
|
||||||
|
var (
|
||||||
|
spAt = utils.Time2Date(utils.Str2Time(snapshotAt))
|
||||||
|
db = dao.GetDB()
|
||||||
|
)
|
||||||
|
if len(storeIDs) == 0 {
|
||||||
|
return fmt.Errorf("必须选择一个门店!")
|
||||||
|
}
|
||||||
|
if len(storeIDs) > 1 {
|
||||||
|
return fmt.Errorf("暂时只支持一次操作一个门店!")
|
||||||
|
}
|
||||||
|
//删除原门店商品
|
||||||
|
sql := `DELETE FROM store_sku_bind WHERE store_id IN(` + dao.GenQuestionMarks(len(storeIDs)) + `)`
|
||||||
|
sqlParams := []interface{}{storeIDs}
|
||||||
|
if len(skuIDs) > 0 {
|
||||||
|
sql += " AND sku_id IN(" + dao.GenQuestionMarks(len(skuIDs)) + ")"
|
||||||
|
sqlParams = append(sqlParams, skuIDs)
|
||||||
|
}
|
||||||
|
_, err = dao.ExecuteSQL(db, sql, sqlParams)
|
||||||
|
//查询备份的门店商品
|
||||||
|
var storeHiss []*model.StoreSkuBindHistory
|
||||||
|
sql2 := `SELECT * FROM store_sku_bind_history WHERE snapshot_at = ? AND store_id IN(` + dao.GenQuestionMarks(len(storeIDs)) + `)`
|
||||||
|
sqlParams2 := []interface{}{spAt, storeIDs}
|
||||||
|
if len(skuIDs) > 0 {
|
||||||
|
sql2 += " AND sku_id IN(" + dao.GenQuestionMarks(len(skuIDs)) + ")"
|
||||||
|
sqlParams2 = append(sqlParams2, skuIDs)
|
||||||
|
}
|
||||||
|
err = dao.GetRows(db, &storeHiss, sql2, sqlParams2)
|
||||||
|
//插入到现在
|
||||||
|
var storeSkus []*model.StoreSkuBind
|
||||||
|
for _, v := range storeHiss {
|
||||||
|
storeSku := &model.StoreSkuBind{}
|
||||||
|
storeSku = &v.StoreSkuBind
|
||||||
|
storeSku.ID = v.StoreSkuBindID
|
||||||
|
storeSkus = append(storeSkus, storeSku)
|
||||||
|
}
|
||||||
|
if len(storeSkus) > 0 {
|
||||||
|
dao.CreateMultiEntities(db, storeSkus)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func RefreshMatterStock(ctx *jxcontext.Context, skuID int) (err error) {
|
||||||
|
var (
|
||||||
|
db = dao.GetDB()
|
||||||
|
skuBindInfos []*StoreSkuBindInfo
|
||||||
|
)
|
||||||
|
if skuID != 0 {
|
||||||
|
skus, err := dao.GetSkus(db, []int{skuID}, nil, nil, nil, nil)
|
||||||
|
if err != nil || len(skus) == 0 {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
result, err := api.JdEclpAPI.QueryStock(skus[0].EclpID)
|
||||||
|
if err != nil || result == nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
var isSale = 0
|
||||||
|
if len(result) == 0 {
|
||||||
|
isSale = -1
|
||||||
|
} else {
|
||||||
|
if result[0].UsableNum > 0 {
|
||||||
|
isSale = 1
|
||||||
|
} else {
|
||||||
|
isSale = -1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
storeSkuList, _ := dao.GetStoresSkusInfo(db, nil, []int{skuID})
|
||||||
|
for _, vv := range storeSkuList {
|
||||||
|
var storeSkuBindSkus []*StoreSkuBindSkuInfo
|
||||||
|
storeSkuBindSku := &StoreSkuBindSkuInfo{
|
||||||
|
SkuID: vv.SkuID,
|
||||||
|
IsSale: isSale,
|
||||||
|
}
|
||||||
|
storeSkuBindSkus = append(storeSkuBindSkus, storeSkuBindSku)
|
||||||
|
storeSkuBind := &StoreSkuBindInfo{
|
||||||
|
StoreID: vv.StoreID,
|
||||||
|
// NameID: v.SkuNameID,
|
||||||
|
Skus: storeSkuBindSkus,
|
||||||
|
}
|
||||||
|
skuBindInfos = append(skuBindInfos, storeSkuBind)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
result, err := api.JdEclpAPI.QueryStock("")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, v := range result {
|
||||||
|
skus, err := dao.GetSkus(db, nil, nil, nil, nil, []string{v.GoodsNo})
|
||||||
|
if err != nil || len(skus) == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
var isSale = 0
|
||||||
|
if v.UsableNum > 0 {
|
||||||
|
isSale = 1
|
||||||
|
} else {
|
||||||
|
isSale = -1
|
||||||
|
}
|
||||||
|
storeSkuList, _ := dao.GetStoresSkusInfo(db, nil, []int{skus[0].ID})
|
||||||
|
for _, vv := range storeSkuList {
|
||||||
|
var storeSkuBindSkus []*StoreSkuBindSkuInfo
|
||||||
|
storeSkuBindSku := &StoreSkuBindSkuInfo{
|
||||||
|
SkuID: vv.SkuID,
|
||||||
|
IsSale: isSale,
|
||||||
|
}
|
||||||
|
storeSkuBindSkus = append(storeSkuBindSkus, storeSkuBindSku)
|
||||||
|
storeSkuBind := &StoreSkuBindInfo{
|
||||||
|
StoreID: vv.StoreID,
|
||||||
|
NameID: skus[0].NameID,
|
||||||
|
Skus: storeSkuBindSkus,
|
||||||
|
}
|
||||||
|
skuBindInfos = append(skuBindInfos, storeSkuBind)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//物料店666666
|
||||||
|
updateStoresSkusWithoutSync(ctx, db, []int{666666}, skuBindInfos, false)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|||||||
@@ -433,7 +433,7 @@ func CompareJxAndVendor(vendorID int, storeIDStr, vendorStoreID, storeName strin
|
|||||||
func FilterJxDepotUnSaleSkuID() {
|
func FilterJxDepotUnSaleSkuID() {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
filterJxDepotUnSaleSkuIds = filterJxDepotUnSaleSkuIds[0:0]
|
filterJxDepotUnSaleSkuIds = filterJxDepotUnSaleSkuIds[0:0]
|
||||||
skuList, _ := dao.GetSkus(db, filterVendorDepotUnSaleSkuIds, []int{}, []int{}, []int{})
|
skuList, _ := dao.GetSkus(db, filterVendorDepotUnSaleSkuIds, []int{}, []int{}, []int{}, nil)
|
||||||
filterJxSkuInfoMap2 := GetFilterJxSkuInfoMap2(skuList)
|
filterJxSkuInfoMap2 := GetFilterJxSkuInfoMap2(skuList)
|
||||||
for skuid, jxSkuInfo := range filterJxSkuInfoMap2 {
|
for skuid, jxSkuInfo := range filterJxSkuInfoMap2 {
|
||||||
//过滤掉平台库下架,且京西库下架的商品,为下面比较门店商品用
|
//过滤掉平台库下架,且京西库下架的商品,为下面比较门店商品用
|
||||||
@@ -456,7 +456,7 @@ func CompareJxAndMultiVenderDepot(ctx *jxcontext.Context, vendorMap map[int]bool
|
|||||||
FilterJxDepotUnSaleSkuID()
|
FilterJxDepotUnSaleSkuID()
|
||||||
filterVendorSkuInfoMap := GetFilterVendorSkuInfoMap(skuNameInfoList)
|
filterVendorSkuInfoMap := GetFilterVendorSkuInfoMap(skuNameInfoList)
|
||||||
skuNameInfoList = skuNameInfoList[0:0]
|
skuNameInfoList = skuNameInfoList[0:0]
|
||||||
skuList, _ := dao.GetSkus(db, []int{}, []int{}, []int{}, []int{})
|
skuList, _ := dao.GetSkus(db, []int{}, []int{}, []int{}, []int{}, nil)
|
||||||
filterJxSkuInfoMap2 := GetFilterJxSkuInfoMap2(skuList)
|
filterJxSkuInfoMap2 := GetFilterJxSkuInfoMap2(skuList)
|
||||||
for skuid, jxSkuInfo := range filterJxSkuInfoMap2 {
|
for skuid, jxSkuInfo := range filterJxSkuInfoMap2 {
|
||||||
var jxSkuDetailName string
|
var jxSkuDetailName string
|
||||||
@@ -571,7 +571,7 @@ func CheckSkuDiffBetweenJxAndVendor(ctx *jxcontext.Context, vendorIDList []int,
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if singleFlag == false {
|
if singleFlag == false {
|
||||||
jxSkuInfoDataSingle, _ = GetStoreSkus(ctx, storeID, []int{}, true, "", true, false, map[string]interface{}{}, 0, -1)
|
jxSkuInfoDataSingle, _ = GetStoreSkus(ctx, storeID, nil, true, "", true, false, map[string]interface{}{}, 0, -1)
|
||||||
filterJxSkuInfoMapSingle = GetFilterJxSkuInfoMap(jxSkuInfoDataSingle.SkuNames) //map[京西商品ID:StoreSkuNameExt]
|
filterJxSkuInfoMapSingle = GetFilterJxSkuInfoMap(jxSkuInfoDataSingle.SkuNames) //map[京西商品ID:StoreSkuNameExt]
|
||||||
singleFlag = true
|
singleFlag = true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -660,8 +660,10 @@ func buildSetFinishHook(task tasksch.ITask, ctx *jxcontext.Context) {
|
|||||||
}
|
}
|
||||||
if authInfo, err := ctx.GetV2AuthInfo(); err == nil {
|
if authInfo, err := ctx.GetV2AuthInfo(); err == nil {
|
||||||
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, authInfo.UserID, "同步错误返回", noticeMsg)
|
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, authInfo.UserID, "同步错误返回", noticeMsg)
|
||||||
|
} else {
|
||||||
|
globals.SugarLogger.Debugf("同步错误发送钉钉消息失败, authinfo [%v] , [%v]", *authInfo, err)
|
||||||
}
|
}
|
||||||
} else {
|
}else {
|
||||||
if time.Now().Hour() >= 20 || time.Now().Hour() < 7 {
|
if time.Now().Hour() >= 20 || time.Now().Hour() < 7 {
|
||||||
downloadURL, _, _ := WirteToExcelBySyncFailed(task)
|
downloadURL, _, _ := WirteToExcelBySyncFailed(task)
|
||||||
user, err := dao.GetUserByID(dao.GetDB(), "mobile", "18160030913")
|
user, err := dao.GetUserByID(dao.GetDB(), "mobile", "18160030913")
|
||||||
|
|||||||
@@ -378,7 +378,7 @@ func CreateUser(user *model.User, creatorName string) (err error) {
|
|||||||
dao.WrapAddIDCULDEntity(user, creatorName)
|
dao.WrapAddIDCULDEntity(user, creatorName)
|
||||||
user.UserID = utils.GetUUID()
|
user.UserID = utils.GetUUID()
|
||||||
user.Status = model.UserStatusNormal
|
user.Status = model.UserStatusNormal
|
||||||
user.DividePercentage = 5
|
user.DividePercentage = 1
|
||||||
return dao.CreateEntity(nil, user)
|
return dao.CreateEntity(nil, user)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1054,3 +1054,31 @@ func DeleteUserInfo(ctx *jxcontext.Context, userID string) (err error) {
|
|||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetMyJxStoreList(ctx *jxcontext.Context, mobile string) (storesInfo interface{}, err error) {
|
||||||
|
db := dao.GetDB()
|
||||||
|
user, err := dao.GetUserByID(db, "mobile", mobile)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
userID := user.UserID
|
||||||
|
var storeList []*dao.StoreWithCityName
|
||||||
|
if storeList, err = GetStoreList4User(ctx, mobile, userID); err == nil && len(storeList) > 0 {
|
||||||
|
// todo,应该用通用方法
|
||||||
|
mapDataList := make([]map[string]interface{}, len(storeList))
|
||||||
|
for k, v := range storeList {
|
||||||
|
mapDataList[k] = map[string]interface{}{
|
||||||
|
"id": v.ID,
|
||||||
|
"address": v.Address,
|
||||||
|
"cityName": v.CityName,
|
||||||
|
"name": v.Name,
|
||||||
|
"tel1": v.Tel1,
|
||||||
|
"tel2": v.Tel2,
|
||||||
|
"payeeName": v.PayeeName,
|
||||||
|
"status": v.Status,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
storesInfo = mapDataList
|
||||||
|
}
|
||||||
|
return storesInfo, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
@@ -57,7 +59,7 @@ func AddOperateEvent(ctx *jxcontext.Context, accessUUID, jsonData string, errCod
|
|||||||
}
|
}
|
||||||
jsonData = strings.ReplaceAll(jsonData, regexpToken.FindString(jsonData), "")
|
jsonData = strings.ReplaceAll(jsonData, regexpToken.FindString(jsonData), "")
|
||||||
jsonData = utils.LimitUTF8StringLen(jsonData, 3200)
|
jsonData = utils.LimitUTF8StringLen(jsonData, 3200)
|
||||||
errMsg = utils.LimitUTF8StringLen(errMsg, 3200)
|
errMsg = utils.LimitUTF8StringLen(errMsg, 9999)
|
||||||
event := &model.OperateEvent{
|
event := &model.OperateEvent{
|
||||||
CreatedAt: time.Now(),
|
CreatedAt: time.Now(),
|
||||||
LastOperator: ctx.GetUserName(),
|
LastOperator: ctx.GetUserName(),
|
||||||
@@ -140,6 +142,7 @@ func GetCheckVendorCookie(ctx *jxcontext.Context, vendorIDs []int, isAuto bool)
|
|||||||
var (
|
var (
|
||||||
ebaiOrderID = "1577329467196263592"
|
ebaiOrderID = "1577329467196263592"
|
||||||
ebaiErr = "return not json"
|
ebaiErr = "return not json"
|
||||||
|
ebaiErr2 = "系统错误"
|
||||||
mtStoreID = "7388603"
|
mtStoreID = "7388603"
|
||||||
mtErr = "返回结果格式不正常"
|
mtErr = "返回结果格式不正常"
|
||||||
jdUpcCode = "6952395700895"
|
jdUpcCode = "6952395700895"
|
||||||
@@ -157,11 +160,31 @@ func GetCheckVendorCookie(ctx *jxcontext.Context, vendorIDs []int, isAuto bool)
|
|||||||
case model.VendorIDEBAI:
|
case model.VendorIDEBAI:
|
||||||
resultMap, err := api.EbaiAPI.GetStoreOrderInfo(ebaiOrderID)
|
resultMap, err := api.EbaiAPI.GetStoreOrderInfo(ebaiOrderID)
|
||||||
if len(resultMap) < 1 && err != nil {
|
if len(resultMap) < 1 && err != nil {
|
||||||
if strings.Contains(err.Error(), ebaiErr) {
|
if strings.Contains(err.Error(), ebaiErr) || strings.Contains(err.Error(), ebaiErr2) {
|
||||||
errMsg += fmt.Sprintf(" 饿百账号:[%v]的Cookie无效了!", vv)
|
errMsg += fmt.Sprintf(" 饿百账号:[%v]的Cookie无效了!", vv)
|
||||||
flag = true
|
flag = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
result, err := api.Ebai2API.GetEbaiDepotSku(ebaiapi.EbaiWholeCountryStore, "190700570")
|
||||||
|
if err != nil || len(result) < 1 {
|
||||||
|
cc := &CheckCookie{}
|
||||||
|
cc.VendorID = v
|
||||||
|
cc.VendorOrgCode = "饿百后台饿鲜达全国账号"
|
||||||
|
cc.Status = "无效"
|
||||||
|
ccList = append(ccList, cc)
|
||||||
|
errMsg += fmt.Sprintf(" 饿百账号:[饿百后台饿鲜达全国账号]的Cookie无效了!", vv)
|
||||||
|
flag = true
|
||||||
|
}
|
||||||
|
// result2, err2 := api.EbaiAPI.GetExianDaSkuDepot("190600741")
|
||||||
|
// if err2 != nil || result2 == nil {
|
||||||
|
// cc := &CheckCookie{}
|
||||||
|
// cc.VendorID = v
|
||||||
|
// cc.VendorOrgCode = "饿鲜达供应链系统"
|
||||||
|
// cc.Status = "无效"
|
||||||
|
// ccList = append(ccList, cc)
|
||||||
|
// errMsg += fmt.Sprintf(" 饿百账号:[饿鲜达供应链系统]的Cookie无效了!", vv)
|
||||||
|
// flag = true
|
||||||
|
// }
|
||||||
case model.VendorIDMTWM:
|
case model.VendorIDMTWM:
|
||||||
_, err := api.MtwmAPI.PackagePriceGet(mtStoreID)
|
_, err := api.MtwmAPI.PackagePriceGet(mtStoreID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -178,6 +201,16 @@ func GetCheckVendorCookie(ctx *jxcontext.Context, vendorIDs []int, isAuto bool)
|
|||||||
flag = true
|
flag = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
result2, err2 := api.JdPageAPI.GetCorporationInfo("11926674", "92510108MA68KK3M8P")
|
||||||
|
if err2 != nil || result2 == nil {
|
||||||
|
cc := &CheckCookie{}
|
||||||
|
cc.VendorID = v
|
||||||
|
cc.VendorOrgCode = "京东page账号"
|
||||||
|
cc.Status = "无效"
|
||||||
|
ccList = append(ccList, cc)
|
||||||
|
errMsg += fmt.Sprintf(" 京东page账号:的Cookie无效了!", vv)
|
||||||
|
flag = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
cc.VendorID = v
|
cc.VendorID = v
|
||||||
cc.VendorOrgCode = vv
|
cc.VendorOrgCode = vv
|
||||||
@@ -189,24 +222,6 @@ func GetCheckVendorCookie(ctx *jxcontext.Context, vendorIDs []int, isAuto bool)
|
|||||||
ccList = append(ccList, cc)
|
ccList = append(ccList, cc)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// else {
|
|
||||||
// cc := &CheckCookie{}
|
|
||||||
// var flag = false
|
|
||||||
// if v == model.VendorIDMTPS {
|
|
||||||
// err := api.MtpsAPI.GetAccountDetail()
|
|
||||||
// if err != nil && strings.Contains(err.Error(), mtpsErr) {
|
|
||||||
// errMsg += " 美团配送账号的Cookie无效了!"
|
|
||||||
// flag = true
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// cc.VendorID = v
|
|
||||||
// if flag {
|
|
||||||
// cc.Status = "无效"
|
|
||||||
// } else {
|
|
||||||
// cc.Status = "有效"
|
|
||||||
// }
|
|
||||||
// ccList = append(ccList, cc)
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
if isAuto && errMsg != "" {
|
if isAuto && errMsg != "" {
|
||||||
globals.SugarLogger.Warnf("GetCheckVendorCookie:[%v]", errMsg)
|
globals.SugarLogger.Warnf("GetCheckVendorCookie:[%v]", errMsg)
|
||||||
|
|||||||
@@ -6,7 +6,10 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/partner/purchase/jx/localjx"
|
"git.rosy.net.cn/jx-callback/business/partner/purchase/jx/localjx"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxstore/event"
|
"git.rosy.net.cn/jx-callback/business/jxstore/event"
|
||||||
|
|
||||||
@@ -103,7 +106,23 @@ var (
|
|||||||
cms.AutoSaleAtStr,
|
cms.AutoSaleAtStr,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
backUpStoreSkuBindList = []string{
|
||||||
|
"23:30:00",
|
||||||
|
}
|
||||||
|
|
||||||
importantTaskMap = &sync.Map{}
|
importantTaskMap = &sync.Map{}
|
||||||
|
|
||||||
|
cancelPayTimeOutOrderList = localjx.GetHalfHoursList()
|
||||||
|
|
||||||
|
ebaiStorePageCookieExdTOKEN string
|
||||||
|
ebaiStorePageCookieWMUSS2 string
|
||||||
|
ebaiStorePageCookieWMSTOKEN2 string
|
||||||
|
ebaiStorePageCookieWMUSS string
|
||||||
|
ebaiStorePageCookieWMSTOKEN string
|
||||||
|
mtwmCookieStr string
|
||||||
|
mtpsStoreToken string
|
||||||
|
jd2StorePageCookie string
|
||||||
|
JdStorePageCookie string
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetImportantTaskID(taskName string) string {
|
func GetImportantTaskID(taskName string) string {
|
||||||
@@ -180,25 +199,76 @@ func Init() {
|
|||||||
ScheduleTimerFunc("AutoPayForPopluarMan", func() {
|
ScheduleTimerFunc("AutoPayForPopluarMan", func() {
|
||||||
localjx.AutoPayForPopluarMan(jxcontext.AdminCtx)
|
localjx.AutoPayForPopluarMan(jxcontext.AdminCtx)
|
||||||
}, autoPayForPopluarManList)
|
}, autoPayForPopluarManList)
|
||||||
|
ScheduleTimerFunc("CancelPayTimeOutOrder", func() {
|
||||||
|
localjx.CancelPayTimeOutOrder(jxcontext.AdminCtx)
|
||||||
|
}, cancelPayTimeOutOrderList)
|
||||||
|
ScheduleTimerFunc("BackUpStoreSkuBind", func() {
|
||||||
|
cms.BackUpStoreSkuBind(jxcontext.AdminCtx, true, true)
|
||||||
|
}, backUpStoreSkuBindList)
|
||||||
}
|
}
|
||||||
ScheduleTimerFunc("AutoSaleStoreSku", func() {
|
ScheduleTimerFunc("AutoSaleStoreSku", func() {
|
||||||
cms.AutoSaleStoreSku(jxcontext.AdminCtx, nil, false)
|
cms.AutoSaleStoreSku(jxcontext.AdminCtx, nil, false)
|
||||||
}, autoSaleStoreSkuTimeList)
|
}, autoSaleStoreSkuTimeList)
|
||||||
|
|
||||||
if beego.BConfig.RunMode == "beta" {
|
if beego.BConfig.RunMode == "beta" {
|
||||||
|
ScheduleTimerFunc("CancelPayTimeOutOrder", func() {
|
||||||
|
localjx.CancelPayTimeOutOrder(jxcontext.AdminCtx)
|
||||||
|
}, cancelPayTimeOutOrderList)
|
||||||
ScheduleTimerFunc("GetAndStoreCitiesShops", func() {
|
ScheduleTimerFunc("GetAndStoreCitiesShops", func() {
|
||||||
netspider.GetAndStoreCitiesShops(jxcontext.AdminCtx, nil, nil, 0, 0, false, false)
|
netspider.GetAndStoreCitiesShops(jxcontext.AdminCtx, nil, nil, 0, 0, false, false)
|
||||||
}, []string{
|
}, []string{
|
||||||
"04:05:06",
|
"04:05:06",
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
if configs, err := dao.QueryConfigs(dao.GetDB(), "ebaiStorePageCookieExdTOKEN", model.ConfigTypeCookie, ""); err == nil {
|
||||||
|
ebaiStorePageCookieExdTOKEN = configs[0].Value
|
||||||
|
}
|
||||||
|
if configs, err := dao.QueryConfigs(dao.GetDB(), "ebaiStorePageCookieWMUSS2", model.ConfigTypeCookie, ""); err == nil {
|
||||||
|
ebaiStorePageCookieWMUSS2 = configs[0].Value
|
||||||
|
}
|
||||||
|
if configs, err := dao.QueryConfigs(dao.GetDB(), "ebaiStorePageCookieWMSTOKEN2", model.ConfigTypeCookie, ""); err == nil {
|
||||||
|
ebaiStorePageCookieWMSTOKEN2 = configs[0].Value
|
||||||
|
}
|
||||||
|
if configs, err := dao.QueryConfigs(dao.GetDB(), "ebaiStorePageCookieWMUSS", model.ConfigTypeCookie, ""); err == nil {
|
||||||
|
ebaiStorePageCookieWMUSS = configs[0].Value
|
||||||
|
}
|
||||||
|
if configs, err := dao.QueryConfigs(dao.GetDB(), "ebaiStorePageCookieWMSTOKEN", model.ConfigTypeCookie, ""); err == nil {
|
||||||
|
ebaiStorePageCookieWMSTOKEN = configs[0].Value
|
||||||
|
}
|
||||||
|
if configs, err := dao.QueryConfigs(dao.GetDB(), "mtwmCookieStr", model.ConfigTypeCookie, ""); err == nil {
|
||||||
|
mtwmCookieStr = configs[0].Value
|
||||||
|
}
|
||||||
|
if configs, err := dao.QueryConfigs(dao.GetDB(), "mtpsStoreToken", model.ConfigTypeCookie, ""); err == nil {
|
||||||
|
mtpsStoreToken = configs[0].Value
|
||||||
|
}
|
||||||
|
if configs, err := dao.QueryConfigs(dao.GetDB(), "jdStorePageCookie", model.ConfigTypeCookie, ""); err == nil {
|
||||||
|
JdStorePageCookie = configs[0].Value
|
||||||
|
}
|
||||||
|
if configs, err := dao.QueryConfigs(dao.GetDB(), "jd2StorePageCookie", model.ConfigTypeCookie, ""); err == nil {
|
||||||
|
jd2StorePageCookie = configs[0].Value
|
||||||
|
}
|
||||||
|
if globals.Jd2OrgCode != "" {
|
||||||
|
api.Jd2API.SetJdCookie(jd2StorePageCookie)
|
||||||
|
}
|
||||||
|
api.EbaiAPI.SetCookie("PASSPORT_DELIMONT_TOKEN", ebaiStorePageCookieExdTOKEN)
|
||||||
|
api.EbaiAPI.SetCookie("WMUSS", ebaiStorePageCookieWMUSS)
|
||||||
|
api.EbaiAPI.SetCookie("WMSTOKEN", ebaiStorePageCookieWMSTOKEN)
|
||||||
|
api.Ebai2API.SetCookie("PASSPORT_DELIMONT_TOKEN", ebaiStorePageCookieExdTOKEN)
|
||||||
|
api.Ebai2API.SetCookie("WMUSS", ebaiStorePageCookieWMUSS2)
|
||||||
|
api.Ebai2API.SetCookie("WMSTOKEN", ebaiStorePageCookieWMSTOKEN2)
|
||||||
|
api.MtwmAPI.SetCookieWithStr(mtwmCookieStr)
|
||||||
|
api.MtpsAPI.SetCookie("token", mtpsStoreToken)
|
||||||
|
api.JdAPI.SetJdCookie(JdStorePageCookie)
|
||||||
|
api.JdPageAPI.SetCookie(jdapi.AccessStorePageCookieName, JdStorePageCookie)
|
||||||
|
api.JdPageAPI.SetCookie(jdapi.AccessStorePageCookieName2, JdStorePageCookie)
|
||||||
}
|
}
|
||||||
|
|
||||||
func syncStoreSku() {
|
func syncStoreSku() {
|
||||||
syncFlag := model.SyncFlagPriceMask
|
syncFlag := 0
|
||||||
if (time.Now().Unix()/24*3600)%10 == 0 {
|
// syncFlag := model.SyncFlagPriceMask
|
||||||
syncFlag |= model.SyncFlagSaleMask
|
// if (time.Now().Unix()/24*3600)%10 == 0 {
|
||||||
}
|
// syncFlag |= model.SyncFlagSaleMask
|
||||||
|
// }
|
||||||
task := tasksch.NewParallelTask("同步京西与平台数据", nil, jxcontext.AdminCtx,
|
task := tasksch.NewParallelTask("同步京西与平台数据", nil, jxcontext.AdminCtx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
step := batchItemList[0].(int)
|
step := batchItemList[0].(int)
|
||||||
@@ -221,13 +291,18 @@ func syncStoreSku() {
|
|||||||
// _, err = cms.CurVendorSync.FullSyncStoresSkus(jxcontext.AdminCtx, db, partner.GetMultiStoreVendorIDs(), nil, false, []int{27379}, true, true)
|
// _, err = cms.CurVendorSync.FullSyncStoresSkus(jxcontext.AdminCtx, db, partner.GetMultiStoreVendorIDs(), nil, false, []int{27379}, true, true)
|
||||||
errList.AddErr(err)
|
errList.AddErr(err)
|
||||||
case 1:
|
case 1:
|
||||||
|
// errList.AddErr(cms.SetSingleStoreSkuSyncModifyStatus(db, []int{3}))
|
||||||
|
|
||||||
errList.AddErr(cms.SetSingleStoreSkuSyncModifyStatus(db, partner.GetSingleStoreVendorIDs()))
|
errList.AddErr(cms.SetSingleStoreSkuSyncModifyStatus(db, partner.GetSingleStoreVendorIDs()))
|
||||||
|
// _, err = cms.CurVendorSync.AmendAndPruneStoreStuff(jxcontext.AdminCtx, []int{3}, nil, false, true, cms.AmendPruneAll, false)
|
||||||
|
|
||||||
_, err = cms.CurVendorSync.AmendAndPruneStoreStuff(jxcontext.AdminCtx, partner.GetSingleStoreVendorIDs(), nil, false, true, cms.AmendPruneAll, false)
|
_, err = cms.CurVendorSync.AmendAndPruneStoreStuff(jxcontext.AdminCtx, partner.GetSingleStoreVendorIDs(), nil, false, true, cms.AmendPruneAll, false)
|
||||||
errList.AddErr(err)
|
errList.AddErr(err)
|
||||||
|
|
||||||
SaveImportantTaskID(TaskNameSyncStoreSku, SpecialTaskID)
|
SaveImportantTaskID(TaskNameSyncStoreSku, SpecialTaskID)
|
||||||
|
// taskID, err2 := cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{3}, nil, false, nil, nil, syncFlag, true, true)
|
||||||
taskID, err2 := cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, partner.GetSingleStoreVendorIDs(), nil, false, nil, nil, syncFlag, true, true)
|
taskID, err2 := cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, partner.GetSingleStoreVendorIDs(), nil, false, nil, nil, syncFlag, true, true)
|
||||||
|
|
||||||
errList.AddErr(err2)
|
errList.AddErr(err2)
|
||||||
SaveImportantTaskID(TaskNameSyncStoreSku, taskID)
|
SaveImportantTaskID(TaskNameSyncStoreSku, taskID)
|
||||||
}
|
}
|
||||||
@@ -246,7 +321,7 @@ func doDailyWork() {
|
|||||||
cms.CurVendorSync.SyncStore2(jxcontext.AdminCtx, dao.GetDB(), nil, nil, true, true)
|
cms.CurVendorSync.SyncStore2(jxcontext.AdminCtx, dao.GetDB(), nil, nil, true, true)
|
||||||
|
|
||||||
syncStoreSku()
|
syncStoreSku()
|
||||||
|
localjx.RefreshAllMatterOrderStatus(jxcontext.AdminCtx)
|
||||||
InitEx()
|
InitEx()
|
||||||
|
|
||||||
// 每天补全前一天与当天的订单
|
// 每天补全前一天与当天的订单
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ func GetStoreSkuSalesInfo(ctx *jxcontext.Context, storeID int) (outStoreSkuSales
|
|||||||
//输出商品销量统计结果
|
//输出商品销量统计结果
|
||||||
skuAndNameMapData := make(map[int]*model.SkuAndName)
|
skuAndNameMapData := make(map[int]*model.SkuAndName)
|
||||||
if len(storeSkuMapData) < len(citySkuIDs) {
|
if len(storeSkuMapData) < len(citySkuIDs) {
|
||||||
skuAndNameList, err := dao.GetSkus(db, citySkuIDs, nil, nil, nil)
|
skuAndNameList, err := dao.GetSkus(db, citySkuIDs, nil, nil, nil, nil)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
for _, value := range skuAndNameList {
|
for _, value := range skuAndNameList {
|
||||||
skuAndNameMapData[value.ID] = value
|
skuAndNameMapData[value.ID] = value
|
||||||
@@ -149,7 +149,7 @@ func GetStoreSkuSalesInfo(ctx *jxcontext.Context, storeID int) (outStoreSkuSales
|
|||||||
if storeSkuInfo != nil {
|
if storeSkuInfo != nil {
|
||||||
skuName := storeSkuInfo.SkuName
|
skuName := storeSkuInfo.SkuName
|
||||||
skuInfo := storeSkuInfo.Skus[0]
|
skuInfo := storeSkuInfo.Skus[0]
|
||||||
storeSkuSales.SkuName = jxutils.ComposeSkuName(skuName.Prefix, skuName.Name, skuInfo.Comment, skuName.Unit, skuInfo.SkuSpecQuality, skuInfo.SkuSpecUnit, 0,skuName.ExPrefix,skuName.ExPrefixBegin,skuName.ExPrefixEnd)
|
storeSkuSales.SkuName = jxutils.ComposeSkuName(skuName.Prefix, skuName.Name, skuInfo.Comment, skuName.Unit, skuInfo.SkuSpecQuality, skuInfo.SkuSpecUnit, 0, skuName.ExPrefix, skuName.ExPrefixBegin, skuName.ExPrefixEnd)
|
||||||
storeSkuSales.SkuImage = storeSkuInfo.Img
|
storeSkuSales.SkuImage = storeSkuInfo.Img
|
||||||
storeSkuSales.SkuPrice = jxutils.IntPrice2StandardCurrencyString(int64(storeSkuInfo.Skus[0].BindPrice))
|
storeSkuSales.SkuPrice = jxutils.IntPrice2StandardCurrencyString(int64(storeSkuInfo.Skus[0].BindPrice))
|
||||||
} else if skuAndNameInfo != nil {
|
} else if skuAndNameInfo != nil {
|
||||||
@@ -159,7 +159,7 @@ func GetStoreSkuSalesInfo(ctx *jxcontext.Context, storeID int) (outStoreSkuSales
|
|||||||
storeSkuSales.SkuImage = skuNameList[0].Img
|
storeSkuSales.SkuImage = skuNameList[0].Img
|
||||||
prefix = skuNameList[0].Prefix
|
prefix = skuNameList[0].Prefix
|
||||||
}
|
}
|
||||||
storeSkuSales.SkuName = jxutils.ComposeSkuName(prefix, skuAndNameInfo.Name, skuAndNameInfo.Comment, skuAndNameInfo.Unit, skuAndNameInfo.SpecQuality, skuAndNameInfo.SpecUnit, 0,skuAndNameInfo.ExPrefix,skuAndNameInfo.ExPrefixBegin,skuAndNameInfo.ExPrefixEnd)
|
storeSkuSales.SkuName = jxutils.ComposeSkuName(prefix, skuAndNameInfo.Name, skuAndNameInfo.Comment, skuAndNameInfo.Unit, skuAndNameInfo.SpecQuality, skuAndNameInfo.SpecUnit, 0, skuAndNameInfo.ExPrefix, skuAndNameInfo.ExPrefixBegin, skuAndNameInfo.ExPrefixEnd)
|
||||||
storeSkuSales.SkuPrice = "N/A"
|
storeSkuSales.SkuPrice = "N/A"
|
||||||
} else {
|
} else {
|
||||||
storeSkuSales.SkuName = "N/A"
|
storeSkuSales.SkuName = "N/A"
|
||||||
|
|||||||
@@ -312,7 +312,7 @@ func LoadExcelBinByYongHui(ctx *jxcontext.Context, reader io.Reader, isAsync, is
|
|||||||
//如果微盟商品里找得到excel中的商品
|
//如果微盟商品里找得到excel中的商品
|
||||||
if skuMap[spuCode] != nil {
|
if skuMap[spuCode] != nil {
|
||||||
//获取京西库商品
|
//获取京西库商品
|
||||||
skuList, _ := dao.GetSkus(db, nil, []int{int(utils.Str2Int64(goodsDetail.SkuMap.SingleSku.OuterSkuCode))}, nil, nil)
|
skuList, _ := dao.GetSkus(db, nil, []int{int(utils.Str2Int64(goodsDetail.SkuMap.SingleSku.OuterSkuCode))}, nil, nil, nil)
|
||||||
if len(skuList) == 0 {
|
if len(skuList) == 0 {
|
||||||
outPutData := DataFailed{
|
outPutData := DataFailed{
|
||||||
GoodsID: spuCode,
|
GoodsID: spuCode,
|
||||||
|
|||||||
@@ -13,7 +13,9 @@ import (
|
|||||||
const (
|
const (
|
||||||
EventCategory = "sys"
|
EventCategory = "sys"
|
||||||
|
|
||||||
EventTypeWXToken = "wxToken"
|
EventTypeWXToken = "wxToken"
|
||||||
|
EventTypeWX2Token = "wx2Token"
|
||||||
|
|
||||||
EventTypeYLYToken = "ylyToken"
|
EventTypeYLYToken = "ylyToken"
|
||||||
EventTypeWeimobToken = "weimobToken"
|
EventTypeWeimobToken = "weimobToken"
|
||||||
)
|
)
|
||||||
@@ -57,6 +59,13 @@ func (h *Hub) OnNewWXToken(token string) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *Hub) OnNewWX2Token(token string) {
|
||||||
|
h.eventHub.PostNewEvent(EventCategory, &eventhub.EventInfo{
|
||||||
|
Type: EventTypeWX2Token,
|
||||||
|
Data: token,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func (h *Hub) OnNewYLYToken(token string) {
|
func (h *Hub) OnNewYLYToken(token string) {
|
||||||
h.eventHub.PostNewEvent(EventCategory, &eventhub.EventInfo{
|
h.eventHub.PostNewEvent(EventCategory, &eventhub.EventInfo{
|
||||||
Type: EventTypeYLYToken,
|
Type: EventTypeYLYToken,
|
||||||
@@ -82,7 +91,10 @@ func (h *Hub) GetToken(tokenType, oldToken string, waitTime time.Duration) (toke
|
|||||||
if weimobToken := api.WeimobAPI.GetToken(); weimobToken != nil {
|
if weimobToken := api.WeimobAPI.GetToken(); weimobToken != nil {
|
||||||
token = string(utils.MustMarshal(weimobToken))
|
token = string(utils.MustMarshal(weimobToken))
|
||||||
}
|
}
|
||||||
|
case EventTypeWX2Token:
|
||||||
|
token = api.WeixinMiniAPI2.CBGetToken()
|
||||||
}
|
}
|
||||||
|
|
||||||
if token != oldToken {
|
if token != oldToken {
|
||||||
tokenInfo = &TokenInfo{
|
tokenInfo = &TokenInfo{
|
||||||
IsNew: false,
|
IsNew: false,
|
||||||
@@ -105,6 +117,10 @@ func (h *Hub) GetWXToken(oldToken string, waitTime time.Duration) (tokenInfo *To
|
|||||||
return h.GetToken(EventTypeWXToken, oldToken, waitTime)
|
return h.GetToken(EventTypeWXToken, oldToken, waitTime)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *Hub) GetWX2Token(oldToken string, waitTime time.Duration) (tokenInfo *TokenInfo) {
|
||||||
|
return h.GetToken(EventTypeWX2Token, oldToken, waitTime)
|
||||||
|
}
|
||||||
|
|
||||||
func (h *Hub) GetYLYToken(oldToken string, waitTime time.Duration) (tokenInfo *TokenInfo) {
|
func (h *Hub) GetYLYToken(oldToken string, waitTime time.Duration) (tokenInfo *TokenInfo) {
|
||||||
return h.GetToken(EventTypeYLYToken, oldToken, waitTime)
|
return h.GetToken(EventTypeYLYToken, oldToken, waitTime)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -540,6 +540,15 @@ func RefreshOrderSkuRelated(order *model.GoodsOrder) *model.GoodsOrder {
|
|||||||
return order
|
return order
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func RefreshOrderEarningPrice2(order *model.GoodsOrder, payPercentage int) *model.GoodsOrder {
|
||||||
|
if payPercentage <= 50 {
|
||||||
|
order.NewEarningPrice = order.TotalShopMoney * int64((100 - payPercentage/2)) / 100
|
||||||
|
} else {
|
||||||
|
order.NewEarningPrice = order.EarningPrice
|
||||||
|
}
|
||||||
|
return order
|
||||||
|
}
|
||||||
|
|
||||||
func RefreshAfsOrderSkuRelated(afsOrder *model.AfsOrder) *model.AfsOrder {
|
func RefreshAfsOrderSkuRelated(afsOrder *model.AfsOrder) *model.AfsOrder {
|
||||||
afsOrder.SkuUserMoney = 0
|
afsOrder.SkuUserMoney = 0
|
||||||
afsOrder.PmSkuSubsidyMoney = 0
|
afsOrder.PmSkuSubsidyMoney = 0
|
||||||
|
|||||||
@@ -271,7 +271,7 @@ func CaculateSkuActVendorPrice(price, percentage, priceAdd int) (vendorPrice int
|
|||||||
func CaculateSkuVendorPrice(price, percentage, priceAdd int) (vendorPrice int) {
|
func CaculateSkuVendorPrice(price, percentage, priceAdd int) (vendorPrice int) {
|
||||||
percentage = ConstrainPricePercentage(percentage)
|
percentage = ConstrainPricePercentage(percentage)
|
||||||
vendorPrice = int(math.Round(float64(price*percentage)/100)) + priceAdd
|
vendorPrice = int(math.Round(float64(price*percentage)/100)) + priceAdd
|
||||||
vendorPrice = int(math.Ceil(float64(vendorPrice)/10) * 10)
|
vendorPrice = int(math.Round(float64(vendorPrice)/10) * 10)
|
||||||
if vendorPrice < 1 {
|
if vendorPrice < 1 {
|
||||||
vendorPrice = 1
|
vendorPrice = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,6 +144,7 @@ func BindPrinter(ctx *jxcontext.Context, storeID int, data string) (printResult
|
|||||||
store.PrinterKey = bindResult.PrinterKey
|
store.PrinterKey = bindResult.PrinterKey
|
||||||
store.PrinterBindInfo = string(utils.MustMarshal(bindResult))
|
store.PrinterBindInfo = string(utils.MustMarshal(bindResult))
|
||||||
if _, err = dao.UpdateEntity(db, store); err == nil {
|
if _, err = dao.UpdateEntity(db, store); err == nil {
|
||||||
|
err = handler.EmptyPrintList(ctx, bindResult.PrinterSN, bindResult.PrinterKey)
|
||||||
printResult, err = handler.GetPrinterStatus(ctx, bindResult.PrinterSN, bindResult.PrinterKey)
|
printResult, err = handler.GetPrinterStatus(ctx, bindResult.PrinterSN, bindResult.PrinterKey)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ var (
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
func SendSMSMsg(mobileList []string, signName, templateCode string, templateParam map[string]interface{}) (err error) {
|
func SendSMSMsg(mobileList []string, signName, templateCode string, templateParam map[string]interface{}, order *model.GoodsOrder) (err error) {
|
||||||
if len(mobileList) > 0 {
|
if len(mobileList) > 0 {
|
||||||
errList := errlist.New()
|
errList := errlist.New()
|
||||||
mobileList = jxutils.StringMap2List(jxutils.StringList2Map(mobileList))
|
mobileList = jxutils.StringMap2List(jxutils.StringList2Map(mobileList))
|
||||||
@@ -42,6 +42,8 @@ func SendSMSMsg(mobileList []string, signName, templateCode string, templatePara
|
|||||||
} else {
|
} else {
|
||||||
globals.SugarLogger.Infof(errMsg)
|
globals.SugarLogger.Infof(errMsg)
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
err = updateStoreSMSNotifyMark(order)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -56,11 +58,13 @@ func getOrderNotifyPhone(order *model.GoodsOrder) (phoneList []string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func NotifyNewOrder(order *model.GoodsOrder) (err error) {
|
func NotifyNewOrder(order *model.GoodsOrder) (err error) {
|
||||||
err = SendSMSMsg(getOrderNotifyPhone(order), globals.SMSSignName, globals.SMSNewOrderTemplate, map[string]interface{}{
|
if isPushSMS(order) {
|
||||||
"daySeq": order.OrderSeq,
|
err = SendSMSMsg(getOrderNotifyPhone(order), globals.SMSSignName, globals.SMSNewOrderTemplate, map[string]interface{}{
|
||||||
"consigneeName": order.ConsigneeName,
|
"daySeq": order.OrderSeq,
|
||||||
"payMoney": jxutils.IntPrice2StandardString(order.ActualPayPrice),
|
"consigneeName": order.ConsigneeName,
|
||||||
})
|
"payMoney": jxutils.IntPrice2StandardString(order.ActualPayPrice),
|
||||||
|
}, order)
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,6 +73,29 @@ func NotifyOrderCanceled(order *model.GoodsOrder) (err error) {
|
|||||||
"vendorName": model.VendorChineseNames[order.VendorID],
|
"vendorName": model.VendorChineseNames[order.VendorID],
|
||||||
"seq": order.OrderSeq,
|
"seq": order.OrderSeq,
|
||||||
"orderID": order.VendorOrderID,
|
"orderID": order.VendorOrderID,
|
||||||
})
|
}, order)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func isPushSMS(order *model.GoodsOrder) bool {
|
||||||
|
stores, _ := dao.GetStoreList(dao.GetDB(), []int{order.StoreID}, nil, nil, nil, "")
|
||||||
|
if len(stores) > 0 {
|
||||||
|
if stores[0].SMSNotifyMark == model.NO {
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateStoreSMSNotifyMark(order *model.GoodsOrder) (err error) {
|
||||||
|
var db = dao.GetDB()
|
||||||
|
stores, _ := dao.GetStoreList(db, []int{order.StoreID}, nil, nil, nil, "")
|
||||||
|
if len(stores) > 0 {
|
||||||
|
stores[0].SMSNotifyMark = model.YES
|
||||||
|
_, err = dao.UpdateEntity(db, stores[0], "SMSNotifyMark")
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ func RefreshConfig(configKey string, expiresTime time.Duration, configGetter fun
|
|||||||
if handleType != 0 {
|
if handleType != 0 {
|
||||||
if curConfig.Token, curConfig.Date = configGetter(); curConfig.Token == "" {
|
if curConfig.Token, curConfig.Date = configGetter(); curConfig.Token == "" {
|
||||||
if globals.IsProductEnv() {
|
if globals.IsProductEnv() {
|
||||||
globals.SugarLogger.Errorf("RefreshConfig %s get empty token", configKey)
|
globals.SugarLogger.Infof("RefreshConfig %s get empty token", configKey)
|
||||||
sleepDuration = errRefreshGap
|
sleepDuration = errRefreshGap
|
||||||
} else {
|
} else {
|
||||||
globals.SugarLogger.Infof("RefreshConfig %s get empty token", configKey)
|
globals.SugarLogger.Infof("RefreshConfig %s get empty token", configKey)
|
||||||
@@ -138,6 +138,33 @@ func RefreshWeixinToken() (err error) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func RefreshWeixin2Token() (err error) {
|
||||||
|
if api.WeixinMiniAPI2 != nil {
|
||||||
|
err = RefreshConfig("wechat2", weixinTokenExpires, func() (token string, expireTimeStr string) {
|
||||||
|
globals.SugarLogger.Debugf("RefreshWeixin2Token RunMode:%s", beego.BConfig.RunMode)
|
||||||
|
if globals.IsMainProductEnv() {
|
||||||
|
if tokenInfo, err := api.WeixinMiniAPI2.CBRetrieveToken(); err == nil {
|
||||||
|
globals.SugarLogger.Debugf("RefreshWeixin2Token tokenInfo:%s", utils.Format4Output(tokenInfo, true))
|
||||||
|
token = tokenInfo.AccessToken
|
||||||
|
} else {
|
||||||
|
globals.SugarLogger.Errorf("RefreshWeixin2Token RefreshToken failed with error:%v", err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if tokenInfo := getWX2TokenFromRemote(api.WeixinMiniAPI2.CBGetToken()); tokenInfo != nil {
|
||||||
|
expireTimeStr = utils.Time2Str(time.Now().Add(-weixinTokenExpires))
|
||||||
|
token = tokenInfo.Token
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return token, expireTimeStr
|
||||||
|
}, func(value string) {
|
||||||
|
globals.SugarLogger.Debugf("RefreshWeixinToken setter value:%s", value)
|
||||||
|
syseventhub.SysEventHub.OnNewWX2Token(value)
|
||||||
|
api.WeixinMiniAPI2.CBSetToken(value)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func RefreshWeimobToken() (err error) {
|
func RefreshWeimobToken() (err error) {
|
||||||
if api.WeimobAPI != nil {
|
if api.WeimobAPI != nil {
|
||||||
err = RefreshConfig("weimob", weimobTokenExpires, func() (token string, expireTimeStr string) {
|
err = RefreshConfig("weimob", weimobTokenExpires, func() (token string, expireTimeStr string) {
|
||||||
@@ -145,6 +172,8 @@ func RefreshWeimobToken() (err error) {
|
|||||||
if globals.IsMainProductEnv() {
|
if globals.IsMainProductEnv() {
|
||||||
if tokenInfo, err := api.WeimobAPI.RefreshTokenByRefreshToken(); err == nil {
|
if tokenInfo, err := api.WeimobAPI.RefreshTokenByRefreshToken(); err == nil {
|
||||||
return string(utils.MustMarshal(tokenInfo)), utils.Time2Str(time.Now().Add((time.Duration(tokenInfo.ExpiresIn) - weimobTokenExpires/time.Second) * time.Second))
|
return string(utils.MustMarshal(tokenInfo)), utils.Time2Str(time.Now().Add((time.Duration(tokenInfo.ExpiresIn) - weimobTokenExpires/time.Second) * time.Second))
|
||||||
|
} else {
|
||||||
|
globals.SugarLogger.Debugf("RefreshWeimobToken err:%s", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
curToken := ""
|
curToken := ""
|
||||||
@@ -277,6 +306,15 @@ func getWXTokenFromRemote(oldToken string) (tokenInfo *syseventhub.TokenInfo) {
|
|||||||
return tokenInfo
|
return tokenInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getWX2TokenFromRemote(oldToken string) (tokenInfo *syseventhub.TokenInfo) {
|
||||||
|
if !globals.IsMainProductEnv() && globals.GetWeixinTokenKey != "" && globals.GetWeixinTokenURL != "" {
|
||||||
|
tokenInfo = PollingRemotEvent(globals.GetWeixinTokenURL, 0, map[string]interface{}{
|
||||||
|
"oldToken": oldToken,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return tokenInfo
|
||||||
|
}
|
||||||
|
|
||||||
func getYLYTokenFromRemote(oldToken string) (tokenInfo *syseventhub.TokenInfo) {
|
func getYLYTokenFromRemote(oldToken string) (tokenInfo *syseventhub.TokenInfo) {
|
||||||
if !globals.IsMainProductEnv() && globals.GetWeixinTokenKey != "" && globals.GetYLYTokenURL != "" {
|
if !globals.IsMainProductEnv() && globals.GetWeixinTokenKey != "" && globals.GetYLYTokenURL != "" {
|
||||||
tokenInfo = PollingRemotEvent(globals.GetYLYTokenURL, 0, map[string]interface{}{
|
tokenInfo = PollingRemotEvent(globals.GetYLYTokenURL, 0, map[string]interface{}{
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ const (
|
|||||||
VendorIDMTWM = 1
|
VendorIDMTWM = 1
|
||||||
VendorIDELM = 2
|
VendorIDELM = 2
|
||||||
VendorIDEBAI = 3
|
VendorIDEBAI = 3
|
||||||
|
VendorIDYB = 4 //银豹
|
||||||
VendorIDWSC = 11 // 微盟微商城
|
VendorIDWSC = 11 // 微盟微商城
|
||||||
VendorIDPurchaseEnd = 11
|
VendorIDPurchaseEnd = 11
|
||||||
VendorIDJX = 9 // 这是一个假的京西VendorID
|
VendorIDJX = 9 // 这是一个假的京西VendorID
|
||||||
@@ -45,6 +46,8 @@ const (
|
|||||||
VendorIDAutonavi = 321 // 高德导航
|
VendorIDAutonavi = 321 // 高德导航
|
||||||
VendorIDQiNiuCloud = 323 // 七牛云
|
VendorIDQiNiuCloud = 323 // 七牛云
|
||||||
VendorIDShowAPI = 325 // 万维易源
|
VendorIDShowAPI = 325 // 万维易源
|
||||||
|
|
||||||
|
VendorIDJDWL = 401 //京东物流
|
||||||
)
|
)
|
||||||
|
|
||||||
type VendorInfo struct {
|
type VendorInfo struct {
|
||||||
@@ -65,6 +68,7 @@ var (
|
|||||||
VendorIDELM: "Elm",
|
VendorIDELM: "Elm",
|
||||||
VendorIDEBAI: "Ebai",
|
VendorIDEBAI: "Ebai",
|
||||||
VendorIDWSC: "Wsc",
|
VendorIDWSC: "Wsc",
|
||||||
|
VendorIDYB: "YinBao",
|
||||||
VendorIDJX: "Jx",
|
VendorIDJX: "Jx",
|
||||||
|
|
||||||
VendorIDDada: "Dada",
|
VendorIDDada: "Dada",
|
||||||
@@ -90,11 +94,13 @@ var (
|
|||||||
VendorIDMTWM: "美团外卖",
|
VendorIDMTWM: "美团外卖",
|
||||||
VendorIDELM: "饿了么",
|
VendorIDELM: "饿了么",
|
||||||
VendorIDEBAI: "饿百新零售",
|
VendorIDEBAI: "饿百新零售",
|
||||||
|
VendorIDYB: "银豹",
|
||||||
VendorIDWSC: "微盟微商城",
|
VendorIDWSC: "微盟微商城",
|
||||||
VendorIDJX: "京西商城",
|
VendorIDJX: "京西商城",
|
||||||
|
|
||||||
VendorIDDada: "达达众包",
|
VendorIDDada: "达达众包",
|
||||||
VendorIDMTPS: "美团配送",
|
VendorIDMTPS: "美团配送",
|
||||||
|
VendorIDJDWL: "京东物流",
|
||||||
|
|
||||||
VendorIDFeiE: "飞鹅",
|
VendorIDFeiE: "飞鹅",
|
||||||
VendorIDXiaoWM: "外卖管家",
|
VendorIDXiaoWM: "外卖管家",
|
||||||
|
|||||||
@@ -138,6 +138,7 @@ var (
|
|||||||
"Login": "登录",
|
"Login": "登录",
|
||||||
"RegisterUser": "注册",
|
"RegisterUser": "注册",
|
||||||
"AutoPayForPopluarMan": "每日订单打款",
|
"AutoPayForPopluarMan": "每日订单打款",
|
||||||
|
"SyncStoresQualify": "上传门店营业资质",
|
||||||
}
|
}
|
||||||
|
|
||||||
MultiStoresVendorMap = map[int]int{
|
MultiStoresVendorMap = map[int]int{
|
||||||
|
|||||||
@@ -26,7 +26,9 @@ type StoresOrderSaleInfo struct {
|
|||||||
SalePrice int64 `json:"salePrice"`
|
SalePrice int64 `json:"salePrice"`
|
||||||
ActualPayPrice int64 `json:"actualPayPrice"`
|
ActualPayPrice int64 `json:"actualPayPrice"`
|
||||||
|
|
||||||
EarningPrice int64 `json:"earningPrice"` // 预估结算给门店老板的钱
|
EarningPrice int64 `json:"earningPrice"` // 预估结算给门店老板的钱
|
||||||
|
NewEarningPrice int64 `json:"newEarningPrice"` // 预估结算给门店老板的钱(新规则)
|
||||||
|
|
||||||
DistanceFreightMoney int64 `json:"distanceFreightMoney"` // 商户承担的远距离配送费(当前只有京东到家有值)
|
DistanceFreightMoney int64 `json:"distanceFreightMoney"` // 商户承担的远距离配送费(当前只有京东到家有值)
|
||||||
WaybillTipMoney int64 `json:"waybillTipMoney"` // 京西加的平台配送小费
|
WaybillTipMoney int64 `json:"waybillTipMoney"` // 京西加的平台配送小费
|
||||||
}
|
}
|
||||||
@@ -41,7 +43,8 @@ type OrderSkuWithActualPayPrice struct {
|
|||||||
StoreID int `orm:"column(store_id)" json:"storeID"` // 外部系统里记录的 jxstoreid
|
StoreID int `orm:"column(store_id)" json:"storeID"` // 外部系统里记录的 jxstoreid
|
||||||
Status int `json:"status"` // 参见OrderStatus*相关的常量定义
|
Status int `json:"status"` // 参见OrderStatus*相关的常量定义
|
||||||
|
|
||||||
PayPercentage int `json:"payPercentage"`
|
PayPercentage int `json:"payPercentage"`
|
||||||
|
NewEarningPrice int64 `json:"newEarningPrice"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type tGoodsAndOrder struct {
|
type tGoodsAndOrder struct {
|
||||||
@@ -356,7 +359,7 @@ func GetStoreOrderSkuList(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAt
|
|||||||
// order_finished_at
|
// order_finished_at
|
||||||
sql := `
|
sql := `
|
||||||
SELECT t1.*,
|
SELECT t1.*,
|
||||||
IF(t2.jx_store_id > 0, t2.jx_store_id, t2.store_id) store_id, t2.status, t2.actual_pay_price, t2.distance_freight_money, t2.waybill_tip_money,
|
IF(t2.jx_store_id > 0, t2.jx_store_id, t2.store_id) store_id, t2.status, t2.actual_pay_price, t2.distance_freight_money, t2.waybill_tip_money, t2.new_earning_price,
|
||||||
t3.pay_percentage
|
t3.pay_percentage
|
||||||
FROM order_sku t1
|
FROM order_sku t1
|
||||||
JOIN goods_order t2 ON t2.vendor_order_id = t1.vendor_order_id AND t2.vendor_id = t1.vendor_id
|
JOIN goods_order t2 ON t2.vendor_order_id = t1.vendor_order_id AND t2.vendor_id = t1.vendor_id
|
||||||
@@ -386,7 +389,7 @@ func GetStoreOrderSkuList(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAt
|
|||||||
func GetStoreOrderSkuList4Afs(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAtEnd time.Time, isFinish bool) (skuList []*OrderSkuWithActualPayPrice, err error) {
|
func GetStoreOrderSkuList4Afs(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAtEnd time.Time, isFinish bool) (skuList []*OrderSkuWithActualPayPrice, err error) {
|
||||||
sql := `
|
sql := `
|
||||||
SELECT t1.*,
|
SELECT t1.*,
|
||||||
t2.actual_pay_price, t2.status, IF(t2.jx_store_id > 0, t2.jx_store_id, t2.store_id) store_id,
|
t2.actual_pay_price, t2.status, IF(t2.jx_store_id > 0, t2.jx_store_id, t2.store_id) store_id, t2.new_earning_price,
|
||||||
t3.pay_percentage
|
t3.pay_percentage
|
||||||
FROM order_sku t1
|
FROM order_sku t1
|
||||||
JOIN goods_order t2 ON t2.vendor_order_id = t1.vendor_order_id AND t2.vendor_id = t1.vendor_id
|
JOIN goods_order t2 ON t2.vendor_order_id = t1.vendor_order_id AND t2.vendor_id = t1.vendor_id
|
||||||
@@ -1231,3 +1234,28 @@ func GetOrdersForJxPay(db *DaoDB, finishTimeBegin, finishTimeEnd time.Time) (goo
|
|||||||
err = GetRows(db, &goods, sql, sqlParams...)
|
err = GetRows(db, &goods, sql, sqlParams...)
|
||||||
return goods, err
|
return goods, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetWaybills(db *DaoDB, vendorOrderID string) (waybills []*model.Waybill, err error) {
|
||||||
|
sql := `SELECT *
|
||||||
|
FROM waybill
|
||||||
|
WHERE vendor_order_id = ?
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{vendorOrderID}
|
||||||
|
err = GetRows(db, &waybills, sql, sqlParams)
|
||||||
|
return waybills, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetMatterChildOrders(db *DaoDB, vendorOrderID string) (goods []*model.GoodsOrder, err error) {
|
||||||
|
sql := `SELECT *
|
||||||
|
FROM goods_order
|
||||||
|
WHERE vendor_order_id LIKE ? OR vendor_order_id LIKE ?
|
||||||
|
AND vendor_id = ?
|
||||||
|
ORDER BY vendor_order_id DESC
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{
|
||||||
|
vendorOrderID + "0%", vendorOrderID + "1%",
|
||||||
|
model.VendorIDJX,
|
||||||
|
}
|
||||||
|
err = GetRows(db, &goods, sql, sqlParams)
|
||||||
|
return goods, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -307,7 +307,7 @@ func GetPriceReferSnapshot(db *DaoDB, cityCodes, skuIDs []int, skuNameID int, sn
|
|||||||
totalCount = GetLastTotalRowCount(db)
|
totalCount = GetLastTotalRowCount(db)
|
||||||
}
|
}
|
||||||
for _, v := range priceReferSnapshot {
|
for _, v := range priceReferSnapshot {
|
||||||
skuList, err2 := GetSkus(db, []int{v.SkuID}, nil, nil, nil)
|
skuList, err2 := GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil)
|
||||||
err = err2
|
err = err2
|
||||||
if len(skuList) > 0 {
|
if len(skuList) > 0 {
|
||||||
skuAndName := skuList[0]
|
skuAndName := skuList[0]
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ func GetCategories(db *DaoDB, parentID, level int, catIDs []int, isExd bool) (ca
|
|||||||
return cats, GetRows(db, &cats, sql, params)
|
return cats, GetRows(db, &cats, sql, params)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetSkus(db *DaoDB, skuIDs, nameIDs, statuss, catIDs []int) (skuList []*model.SkuAndName, err error) {
|
func GetSkus(db *DaoDB, skuIDs, nameIDs, statuss, catIDs []int, eclpIDs []string) (skuList []*model.SkuAndName, err error) {
|
||||||
sql := `
|
sql := `
|
||||||
SELECT t1.*, t2.name, t2.unit, t2.prefix, t2.is_spu, t2.ex_prefix, t2.ex_prefix_begin, t2.ex_prefix_end
|
SELECT t1.*, t2.name, t2.unit, t2.prefix, t2.is_spu, t2.ex_prefix, t2.ex_prefix_begin, t2.ex_prefix_end
|
||||||
FROM sku t1
|
FROM sku t1
|
||||||
@@ -110,6 +110,10 @@ func GetSkus(db *DaoDB, skuIDs, nameIDs, statuss, catIDs []int) (skuList []*mode
|
|||||||
sqlWhere += " OR t3p.id IN (" + GenQuestionMarks(len(catIDs)) + ") )"
|
sqlWhere += " OR t3p.id IN (" + GenQuestionMarks(len(catIDs)) + ") )"
|
||||||
sqlParams = append(sqlParams, catIDs, catIDs)
|
sqlParams = append(sqlParams, catIDs, catIDs)
|
||||||
}
|
}
|
||||||
|
if len(eclpIDs) > 0 {
|
||||||
|
sqlWhere += " AND t1.eclp_id IN (" + GenQuestionMarks(len(eclpIDs)) + ")"
|
||||||
|
sqlParams = append(sqlParams, eclpIDs)
|
||||||
|
}
|
||||||
sql += sqlWhere
|
sql += sqlWhere
|
||||||
if err = GetRows(db, &skuList, sql, sqlParams...); err == nil {
|
if err = GetRows(db, &skuList, sql, sqlParams...); err == nil {
|
||||||
return skuList, nil
|
return skuList, nil
|
||||||
@@ -137,7 +141,7 @@ func GetSkuNames(db *DaoDB, nameIDs []int) (skuNameList []*model.SkuName, err er
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetSkuIDByNames(db *DaoDB, nameIDs []int) (skuIDs []int, err error) {
|
func GetSkuIDByNames(db *DaoDB, nameIDs []int) (skuIDs []int, err error) {
|
||||||
skuList, err := GetSkus(db, nil, nameIDs, nil, nil)
|
skuList, err := GetSkus(db, nil, nameIDs, nil, nil, nil)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
for _, sku := range skuList {
|
for _, sku := range skuList {
|
||||||
skuIDs = append(skuIDs, sku.ID)
|
skuIDs = append(skuIDs, sku.ID)
|
||||||
@@ -147,7 +151,7 @@ func GetSkuIDByNames(db *DaoDB, nameIDs []int) (skuIDs []int, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetSkuByCats(db *DaoDB, catIDs []int) (skuList []*model.Sku, err error) {
|
func GetSkuByCats(db *DaoDB, catIDs []int) (skuList []*model.Sku, err error) {
|
||||||
skuExList, err := GetSkus(db, nil, nil, nil, catIDs)
|
skuExList, err := GetSkus(db, nil, nil, nil, catIDs, nil)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
for _, v := range skuExList {
|
for _, v := range skuExList {
|
||||||
skuList = append(skuList, &v.Sku)
|
skuList = append(skuList, &v.Sku)
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ type StoreDetail struct {
|
|||||||
OperatorName3 string `json:"operatorName3"`
|
OperatorName3 string `json:"operatorName3"`
|
||||||
|
|
||||||
JdStoreLevel string `json:"jdStoreLevel"` //京东门店等级
|
JdStoreLevel string `json:"jdStoreLevel"` //京东门店等级
|
||||||
|
IsOrder int `json:"isOrder"` //是否是下预订单门店
|
||||||
}
|
}
|
||||||
|
|
||||||
// 带快递门店信息的
|
// 带快递门店信息的
|
||||||
@@ -88,7 +89,7 @@ func getStoreDetail(db *DaoDB, storeID, vendorID int, vendorStoreID string) (sto
|
|||||||
sql := `
|
sql := `
|
||||||
SELECT t1.*,
|
SELECT t1.*,
|
||||||
t2.vendor_store_id, t2.status vendor_status, t2.delivery_fee_deduction_sill, t2.delivery_fee_deduction_fee, t2.sync_status, t2.vendor_org_code,
|
t2.vendor_store_id, t2.status vendor_status, t2.delivery_fee_deduction_sill, t2.delivery_fee_deduction_fee, t2.sync_status, t2.vendor_org_code,
|
||||||
t2.price_percentage, t2.auto_pickup, t2.delivery_type, t2.delivery_competition, t2.is_sync, t2.vendor_store_name,
|
t2.price_percentage, t2.auto_pickup, t2.delivery_type, t2.delivery_competition, t2.is_sync, t2.vendor_store_name, t2.is_order,
|
||||||
t3.value price_percentage_pack_str,
|
t3.value price_percentage_pack_str,
|
||||||
t4.value freight_deduction_pack_str,
|
t4.value freight_deduction_pack_str,
|
||||||
district.name district_name,
|
district.name district_name,
|
||||||
|
|||||||
@@ -148,6 +148,7 @@ type StoreSkuNameExt struct {
|
|||||||
PendingOpType int8 `json:"pendingOpType"` // 取值同 StoreOpRequest.Type
|
PendingOpType int8 `json:"pendingOpType"` // 取值同 StoreOpRequest.Type
|
||||||
PendingUnitPrice int `json:"pendingUnitPrice"` // 这个是待审核的价格申请
|
PendingUnitPrice int `json:"pendingUnitPrice"` // 这个是待审核的价格申请
|
||||||
RealMidUnitPrice int `json:"realMidUnitPrice"`
|
RealMidUnitPrice int `json:"realMidUnitPrice"`
|
||||||
|
Count int `json:"count"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetStoreSkus用
|
// GetStoreSkus用
|
||||||
@@ -232,6 +233,8 @@ type StoreSkuExt struct {
|
|||||||
|
|
||||||
EarningPrice int `json:"earningPrice"`
|
EarningPrice int `json:"earningPrice"`
|
||||||
EarningActID int `orm:"column(earning_act_id)" json:"earningActID"`
|
EarningActID int `orm:"column(earning_act_id)" json:"earningActID"`
|
||||||
|
|
||||||
|
EclpID string `orm:"column(eclp_id)" json:"eclpID"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type SkuNameAndPlace struct {
|
type SkuNameAndPlace struct {
|
||||||
@@ -967,7 +970,7 @@ func GetStoreSkusByNameIDs(db *DaoDB, storeIDs []int, nameID int) (skuList []*St
|
|||||||
|
|
||||||
func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSkuNameExt, err error) {
|
func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSkuNameExt, err error) {
|
||||||
sql := `
|
sql := `
|
||||||
SELECT 1 s, t1.count, t2.id sku_id, t3.*, t1.store_id, t1.store_name
|
SELECT t1.count, t2.id sku_id, t3.*, t1.store_id, t1.store_name
|
||||||
FROM(
|
FROM(
|
||||||
SELECT SUM(b.count) count,c.id,a.store_id,d.name store_name
|
SELECT SUM(b.count) count,c.id,a.store_id,d.name store_name
|
||||||
FROM goods_order a
|
FROM goods_order a
|
||||||
@@ -995,8 +998,8 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSk
|
|||||||
GROUP BY 2,3,4)t1
|
GROUP BY 2,3,4)t1
|
||||||
JOIN sku t2 ON t2.id = t1.id
|
JOIN sku t2 ON t2.id = t1.id
|
||||||
JOIN sku_name t3 ON t3.id = t2.name_id
|
JOIN sku_name t3 ON t3.id = t2.name_id
|
||||||
UNION ALL
|
UNION
|
||||||
SELECT 2 s, 0 count, a.sku_id, g.*, a.store_id, e.name store_name
|
SELECT 0 count, a.sku_id, g.*, a.store_id, e.name store_name
|
||||||
FROM store_sku_bind a
|
FROM store_sku_bind a
|
||||||
LEFT JOIN act_store_sku b ON a.store_id = b.store_id AND b.sku_id = a.sku_id
|
LEFT JOIN act_store_sku b ON a.store_id = b.store_id AND b.sku_id = a.sku_id
|
||||||
LEFT JOIN act_map c ON c.act_id = b.act_id
|
LEFT JOIN act_map c ON c.act_id = b.act_id
|
||||||
@@ -1017,7 +1020,7 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSk
|
|||||||
AND a.status = ?
|
AND a.status = ?
|
||||||
AND a.deleted_at = ?
|
AND a.deleted_at = ?
|
||||||
AND (d.type = ? OR d.type = ?)
|
AND (d.type = ? OR d.type = ?)
|
||||||
ORDER BY 1,2 DESC
|
ORDER BY 1 DESC
|
||||||
LIMIT ?
|
LIMIT ?
|
||||||
`
|
`
|
||||||
sqlParams = append(sqlParams, model.StoreSkuBindStatusNormal, utils.DefaultTimeValue, model.ActSkuDirectDown, model.ActSkuSecKill, 30)
|
sqlParams = append(sqlParams, model.StoreSkuBindStatusNormal, utils.DefaultTimeValue, model.ActSkuDirectDown, model.ActSkuSecKill, 30)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ type OperateEvent struct {
|
|||||||
APIFunction string `orm:"column(api_function)" json:"apiFunction"`
|
APIFunction string `orm:"column(api_function)" json:"apiFunction"`
|
||||||
JsonData string `orm:"size(3200)" json:"jsonData"`
|
JsonData string `orm:"size(3200)" json:"jsonData"`
|
||||||
ErrCode string `orm:"size(32)" json:"errCode"`
|
ErrCode string `orm:"size(32)" json:"errCode"`
|
||||||
ErrMsg string `orm:"size(3200)" json:"errMsg"`
|
ErrMsg string `orm:"size(9999)" json:"errMsg"`
|
||||||
UseTime int `json:"useTime"`
|
UseTime int `json:"useTime"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ const (
|
|||||||
ConfigTypeBank = "Bank"
|
ConfigTypeBank = "Bank"
|
||||||
ConfigTypeRole = "Role"
|
ConfigTypeRole = "Role"
|
||||||
ConfigTypeJxStore = "JxStore"
|
ConfigTypeJxStore = "JxStore"
|
||||||
|
ConfigTypeCookie = "Cookie"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -24,6 +25,7 @@ var (
|
|||||||
ConfigTypeBank: "银行",
|
ConfigTypeBank: "银行",
|
||||||
ConfigTypeRole: "角色",
|
ConfigTypeRole: "角色",
|
||||||
ConfigTypeJxStore: "京西商城",
|
ConfigTypeJxStore: "京西商城",
|
||||||
|
ConfigTypeCookie: "Cookie",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ const (
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
PayTypeWX = 1 // 微信支付
|
PayTypeWX = 1 // 微信支付
|
||||||
|
PayTypeTL = 2 // 通联宝支付
|
||||||
|
|
||||||
PayStatusNo = 0
|
PayStatusNo = 0
|
||||||
PayStatusYes = 1
|
PayStatusYes = 1
|
||||||
@@ -63,6 +64,7 @@ type GoodsOrder struct {
|
|||||||
DistanceFreightMoney int64 `json:"distanceFreightMoney"` // 商户承担的远距离配送费(当前只有京东到家有值)
|
DistanceFreightMoney int64 `json:"distanceFreightMoney"` // 商户承担的远距离配送费(当前只有京东到家有值)
|
||||||
WaybillTipMoney int64 `json:"waybillTipMoney"` // 京西加的平台配送小费
|
WaybillTipMoney int64 `json:"waybillTipMoney"` // 京西加的平台配送小费
|
||||||
EarningPrice int64 `json:"earningPrice"` // 结算给门店老板的钱(未扣除可能的三方配送费)
|
EarningPrice int64 `json:"earningPrice"` // 结算给门店老板的钱(未扣除可能的三方配送费)
|
||||||
|
NewEarningPrice int64 `json:"newEarningPrice"` // 结算给门店老板的钱(未扣除可能的三方配送费)(新规则)
|
||||||
Weight int `json:"weight"` // 单位为克
|
Weight int `json:"weight"` // 单位为克
|
||||||
VendorUserID string `orm:"column(vendor_user_id);size(48)" json:"vendorUserID"`
|
VendorUserID string `orm:"column(vendor_user_id);size(48)" json:"vendorUserID"`
|
||||||
UserID string `orm:"column(user_id);size(48);index" json:"userID"`
|
UserID string `orm:"column(user_id);size(48);index" json:"userID"`
|
||||||
@@ -102,6 +104,9 @@ type GoodsOrder struct {
|
|||||||
InvoiceTaxerID string `orm:"size(32);column(invoice_taxer_id)" json:"invoiceTaxerID"` // 发票纳税人识别码
|
InvoiceTaxerID string `orm:"size(32);column(invoice_taxer_id)" json:"invoiceTaxerID"` // 发票纳税人识别码
|
||||||
InvoiceEmail string `orm:"size(64)" json:"invoiceEmail"` // 发票邮箱
|
InvoiceEmail string `orm:"size(64)" json:"invoiceEmail"` // 发票邮箱
|
||||||
VendorOrgCode string `orm:"size(64)" json:"vendorOrgCode"` // 同一平台下不同的商户代码,如果只有一个,可以为空
|
VendorOrgCode string `orm:"size(64)" json:"vendorOrgCode"` // 同一平台下不同的商户代码,如果只有一个,可以为空
|
||||||
|
FromStoreID int `orm:"column(from_store_id)" json:"fromStoreID"` //物料配送门店
|
||||||
|
EclpOutID string `orm:"column(eclp_out_id)" json:"eclpOutID"` //物料配送的出库单号
|
||||||
|
AddressID int64 `orm:"column(address_id)" json:"addressID"` //配送地址ID
|
||||||
|
|
||||||
// 以下只是用于传递数据
|
// 以下只是用于传递数据
|
||||||
OriginalData string `orm:"-" json:"-"`
|
OriginalData string `orm:"-" json:"-"`
|
||||||
@@ -317,7 +322,7 @@ type OrderPay struct {
|
|||||||
|
|
||||||
PrepayID string `orm:"column(prepay_id);index;size(48)" json:"prepayID"` // 下单后,支付前,支付方生成的事务ID
|
PrepayID string `orm:"column(prepay_id);index;size(48)" json:"prepayID"` // 下单后,支付前,支付方生成的事务ID
|
||||||
TransactionID string `orm:"column(transaction_id);index;size(48)" json:"transactionID"` // 支付成功后,支付方生成的事务ID
|
TransactionID string `orm:"column(transaction_id);index;size(48)" json:"transactionID"` // 支付成功后,支付方生成的事务ID
|
||||||
CodeURL string `orm:"column(code_url);size(256)" json:"codeURL"`
|
CodeURL string `orm:"column(code_url);size(3200)" json:"codeURL"`
|
||||||
OriginalData string `orm:"type(text)" json:"-"`
|
OriginalData string `orm:"type(text)" json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -228,8 +228,9 @@ type Sku struct {
|
|||||||
Status int `json:"status"`
|
Status int `json:"status"`
|
||||||
Seq int `json:"seq"`
|
Seq int `json:"seq"`
|
||||||
|
|
||||||
ExdSkuID string `orm:"column(exd_sku_id)" json:"exdSkuID"`
|
ExdSkuID string `orm:"column(exd_sku_id)" json:"exdSkuID"` //饿鲜达商品ID
|
||||||
ExdCategoryThirdID int `orm:"column(exd_category_third_id)" json:"exdCategoryThirdID"`
|
ExdCategoryThirdID int `orm:"column(exd_category_third_id)" json:"exdCategoryThirdID"`
|
||||||
|
EclpID string `orm:"column(eclp_id)" json:"eclpID"` //eclp物料商品ID
|
||||||
// JdID int64 `orm:"column(jd_id);null;index" json:"jdID"`
|
// JdID int64 `orm:"column(jd_id);null;index" json:"jdID"`
|
||||||
// JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
// JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
||||||
|
|
||||||
@@ -281,9 +282,10 @@ type SkuWithVendor struct {
|
|||||||
|
|
||||||
type SkuNameExt struct {
|
type SkuNameExt struct {
|
||||||
SkuName
|
SkuName
|
||||||
Skus []*SkuWithVendor `orm:"-" json:"skus"`
|
Skus []*SkuWithVendor `orm:"-" json:"skus"`
|
||||||
SkusStr string `json:"-"`
|
SkusStr string `json:"-"`
|
||||||
FullName string `json:"fullName"`
|
FullName string `json:"fullName"`
|
||||||
Places []int `orm:"-" json:"places"`
|
Places []int `orm:"-" json:"places"`
|
||||||
PlacesStr string `json:"-"`
|
PlacesStr string `json:"-"`
|
||||||
|
MidUnitPrice int `json:"midUnitPrice"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,8 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
ExdStoreName = "饿鲜达"
|
ExdStoreName = "饿鲜达"
|
||||||
|
MatterStoreID = 666666
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -278,7 +279,8 @@ type Store struct {
|
|||||||
Status int `json:"status"`
|
Status int `json:"status"`
|
||||||
AutoEnableAt *time.Time `orm:"type(datetime);null" json:"autoEnableAt"` // 自动营业时间(临时休息用)
|
AutoEnableAt *time.Time `orm:"type(datetime);null" json:"autoEnableAt"` // 自动营业时间(临时休息用)
|
||||||
ChangePriceType int8 `json:"changePriceType"` // 修改价格类型,即是否需要审核
|
ChangePriceType int8 `json:"changePriceType"` // 修改价格类型,即是否需要审核
|
||||||
SMSNotify int8 `orm:"column(sms_notify);" json:"smsNotify"` // 是否通过短信接收订单消息
|
SMSNotify int8 `orm:"column(sms_notify);" json:"smsNotify"` // 是否通过短信接收订单消息(每天只推一条)
|
||||||
|
SMSNotifyMark int8 `orm:"column(sms_notify_mark);" json:"smsNotifyMark"` //今天是否已经推送过订单消息
|
||||||
AutoReplyType int8 `json:"autoReplyType"` // 订单评价自动回复类型
|
AutoReplyType int8 `json:"autoReplyType"` // 订单评价自动回复类型
|
||||||
LinkStoreID int `orm:"column(link_store_id);default(0);index" json:"linkStoreID"` // 关联门店ID
|
LinkStoreID int `orm:"column(link_store_id);default(0);index" json:"linkStoreID"` // 关联门店ID
|
||||||
|
|
||||||
@@ -418,6 +420,8 @@ type StoreMap struct {
|
|||||||
FakeOpenStart int16 `orm:"default(0)" json:"fakeOpenStart"` // 假开店开始
|
FakeOpenStart int16 `orm:"default(0)" json:"fakeOpenStart"` // 假开店开始
|
||||||
FakeOpenStop int16 `orm:"default(0)" json:"fakeOpenStop"` // 假开店结束
|
FakeOpenStop int16 `orm:"default(0)" json:"fakeOpenStop"` // 假开店结束
|
||||||
JdStoreLevel string `orm:"size(32)" json:"jdStoreLevel"` //京东门店等级
|
JdStoreLevel string `orm:"size(32)" json:"jdStoreLevel"` //京东门店等级
|
||||||
|
|
||||||
|
IsOrder int `orm:"default(0)" json:"isOrder"` //是否是下预订单门店
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*StoreMap) TableUnique() [][]string {
|
func (*StoreMap) TableUnique() [][]string {
|
||||||
|
|||||||
@@ -134,6 +134,24 @@ func (*StoreSkuBind) TableIndex() [][]string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type StoreSkuBindHistory struct {
|
||||||
|
StoreSkuBind
|
||||||
|
StoreSkuBindID int `orm:"column(store_sku_bind_id)"`
|
||||||
|
SnapshotAt time.Time `orm:"type(datetime);null;index" json:"snapshotAt"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*StoreSkuBindHistory) TableUnique() [][]string {
|
||||||
|
return [][]string{
|
||||||
|
[]string{"StoreID", "SkuID", "DeletedAt", "SnapshotAt"},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*StoreSkuBindHistory) TableIndex() [][]string {
|
||||||
|
return [][]string{
|
||||||
|
[]string{"SkuID", "StoreID", "DeletedAt"},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type StoreOpRequest struct {
|
type StoreOpRequest struct {
|
||||||
ModelIDCULD // DeletedAt用于表示请求操作结束,而并不一定是删除
|
ModelIDCULD // DeletedAt用于表示请求操作结束,而并不一定是删除
|
||||||
|
|
||||||
|
|||||||
@@ -480,6 +480,7 @@ func (c *PurchaseHandler) SyncQualify(ctx *jxcontext.Context, storeDetail *dao.S
|
|||||||
}
|
}
|
||||||
globals.SugarLogger.Debug(utils.Format4Output(qualifyList, false))
|
globals.SugarLogger.Debug(utils.Format4Output(qualifyList, false))
|
||||||
if globals.EnableJdStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
|
globals.SugarLogger.Debugf("SaveQualifyTest4,[%v]", utils.Format4Output(qualifyList, false))
|
||||||
err = api.JdPageAPI.SaveQualify(storeDetail.VendorStoreID, jdapi.SaveQualifyActionTypeCommit, qualifyList)
|
err = api.JdPageAPI.SaveQualify(storeDetail.VendorStoreID, jdapi.SaveQualifyActionTypeCommit, qualifyList)
|
||||||
// err = api.JdPageAPI.SaveQualify(storeDetail.VendorStoreID, jdapi.SaveQualifyActionTypeSave, qualifyList)
|
// err = api.JdPageAPI.SaveQualify(storeDetail.VendorStoreID, jdapi.SaveQualifyActionTypeSave, qualifyList)
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
185
business/partner/purchase/jx/localjx/tonglianpay.go
Normal file
185
business/partner/purchase/jx/localjx/tonglianpay.go
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
package localjx
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi/tonglianpayapi"
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
|
)
|
||||||
|
|
||||||
|
func pay4OrderByTL(ctx *jxcontext.Context, order *model.GoodsOrder, vendorPayType string) (orderPay *model.OrderPay, err error) {
|
||||||
|
if order.FromStoreID != 0 {
|
||||||
|
result, _ := orderman.GetMatterStoreOrderCount(nil, order.FromStoreID)
|
||||||
|
if !result.Flag {
|
||||||
|
return nil, fmt.Errorf("该门店[%v]已在一周内申请过物料,请勿重复申请!", order.FromStoreID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
payCreatedAt := time.Now()
|
||||||
|
param := &tonglianpayapi.CreateUnitorderOrderParam{
|
||||||
|
Trxamt: int(order.ActualPayPrice),
|
||||||
|
NotifyUrl: globals.TLPayNotifyURL,
|
||||||
|
Reqsn: order.VendorOrderID,
|
||||||
|
PayType: vendorPayType,
|
||||||
|
}
|
||||||
|
//暂时做兼容处理
|
||||||
|
if vendorPayType == "JSAPI" {
|
||||||
|
param.PayType = tonglianpayapi.PayTypeWxXcx
|
||||||
|
}
|
||||||
|
if vendorPayType == tonglianpayapi.PayTypeWxXcx {
|
||||||
|
if authInfo, err := ctx.GetV2AuthInfo(); err == nil && authInfo.GetAuthType() == weixin.AuthTypeMini {
|
||||||
|
param.Acct = authInfo.GetAuthID()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if vendorPayType == tonglianpayapi.PayTypeH5 {
|
||||||
|
param2 := &tonglianpayapi.CreateH5UnitorderOrderParam{
|
||||||
|
Trxamt: int(order.ActualPayPrice),
|
||||||
|
NotifyUrl: globals.TLPayNotifyURL,
|
||||||
|
Body: "京西菜市",
|
||||||
|
Charset: "UTF-8",
|
||||||
|
}
|
||||||
|
err = api.TLpayAPI.CreateH5UnitorderOrder(param2)
|
||||||
|
} else {
|
||||||
|
result, err := api.TLpayAPI.CreateUnitorderOrder(param)
|
||||||
|
if err == nil {
|
||||||
|
var result2 tonglianpayapi.PayInfo
|
||||||
|
json.Unmarshal([]byte(result.PayInfo), &result2)
|
||||||
|
prePayID := result2.Package[strings.LastIndex(result2.Package, "=")+1 : len(result2.Package)]
|
||||||
|
orderPay = &model.OrderPay{
|
||||||
|
PayOrderID: param.Reqsn,
|
||||||
|
PayType: model.PayTypeTL,
|
||||||
|
VendorPayType: vendorPayType,
|
||||||
|
TransactionID: result.TrxID,
|
||||||
|
VendorOrderID: order.VendorOrderID,
|
||||||
|
VendorID: order.VendorID,
|
||||||
|
Status: 0,
|
||||||
|
PayCreatedAt: payCreatedAt,
|
||||||
|
PrepayID: prePayID,
|
||||||
|
CodeURL: utils.LimitUTF8StringLen(result.PayInfo, 3200),
|
||||||
|
TotalFee: int(order.ActualPayPrice),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return orderPay, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnTLPayCallback(call *tonglianpayapi.CallBackResult) (err error) {
|
||||||
|
globals.SugarLogger.Debugf("OnTLPayCallback msg:%s", utils.Format4Output(call, true))
|
||||||
|
switch call.TrxCode {
|
||||||
|
case tonglianpayapi.MsgTypePay:
|
||||||
|
err = onTLpayFinished(call)
|
||||||
|
case tonglianpayapi.MsgTypeRefund:
|
||||||
|
err = onTLpayRefund(call)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func onTLpayFinished(call *tonglianpayapi.CallBackResult) (err error) {
|
||||||
|
orderPay := &model.OrderPay{
|
||||||
|
PayOrderID: call.CusorderID,
|
||||||
|
PayType: model.PayTypeTL,
|
||||||
|
}
|
||||||
|
orderPay.DeletedAt = utils.DefaultTimeValue
|
||||||
|
db := dao.GetDB()
|
||||||
|
if err = dao.GetEntity(db, orderPay, "PayOrderID", "PayType", "DeletedAt"); err == nil {
|
||||||
|
if orderPay.Status != 0 {
|
||||||
|
globals.SugarLogger.Debugf("already pay msg:%s, err:%v", utils.Format4Output(call, true), err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
loc, _ := time.LoadLocation("Local")
|
||||||
|
t1, _ := time.ParseInLocation("20060102150405", call.PayTime, loc)
|
||||||
|
orderPay.PayFinishedAt = utils.Time2Pointer(t1)
|
||||||
|
// orderPay.TransactionID = call.ChnlTrxID
|
||||||
|
orderPay.OriginalData = utils.Format4Output(call, true)
|
||||||
|
if call.TrxStatus == tonglianpayapi.TrxStatusSuccess {
|
||||||
|
orderPay.Status = model.PayStatusYes
|
||||||
|
} else {
|
||||||
|
orderPay.Status = model.PayStatusFailed
|
||||||
|
}
|
||||||
|
dao.UpdateEntity(db, orderPay)
|
||||||
|
if call.TrxStatus == tonglianpayapi.TrxStatusSuccess {
|
||||||
|
err = OnPayFinished(orderPay)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
globals.SugarLogger.Debugf("onTLpayFinished msg:%s, err:%v", utils.Format4Output(call, true), err)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func onTLpayRefund(call *tonglianpayapi.CallBackResult) (err error) {
|
||||||
|
orderPayRefund := &model.OrderPayRefund{
|
||||||
|
RefundID: call.CusorderID,
|
||||||
|
}
|
||||||
|
db := dao.GetDB()
|
||||||
|
if err = dao.GetEntity(db, orderPayRefund, "RefundID"); err == nil {
|
||||||
|
if call.TrxStatus == tonglianpayapi.TrxStatusSuccess {
|
||||||
|
orderPayRefund.Status = model.RefundStatusYes
|
||||||
|
} else {
|
||||||
|
orderPayRefund.Status = model.RefundStatusFailed
|
||||||
|
}
|
||||||
|
orderPayRefund.OriginalData = utils.Format4Output(call, true)
|
||||||
|
dao.UpdateEntity(db, orderPayRefund)
|
||||||
|
} else if dao.IsNoRowsError(err) {
|
||||||
|
globals.SugarLogger.Warnf("收到异常的退款事件, call:%s", utils.Format4Output(call, true))
|
||||||
|
}
|
||||||
|
|
||||||
|
orderPay := &model.OrderPay{
|
||||||
|
VendorOrderID: orderPayRefund.VendorOrderID,
|
||||||
|
VendorID: jxutils.GetPossibleVendorIDFromVendorOrderID(orderPayRefund.VendorOrderID),
|
||||||
|
PayType: model.PayTypeWX,
|
||||||
|
Status: model.PayStatusYes,
|
||||||
|
}
|
||||||
|
orderPay.DeletedAt = utils.DefaultTimeValue
|
||||||
|
if err = dao.GetEntity(db, orderPay, "VendorOrderID", "VendorID", "PayType", "Status", "DeletedAt"); err == nil {
|
||||||
|
orderPay.Status = model.PayStatusRefund
|
||||||
|
dao.UpdateEntity(db, orderPay)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func refundOrderByTL(ctx *jxcontext.Context, orderPay *model.OrderPay, refundID string, refundFee int, refundDesc string) (orderPayRefund *model.OrderPayRefund, err error) {
|
||||||
|
result, err := api.TLpayAPI.PayRefund(&tonglianpayapi.PayRefundParam{
|
||||||
|
Trxamt: orderPay.TotalFee,
|
||||||
|
Reqsn: utils.GetUUID(),
|
||||||
|
// OldReqsn: orderPay.VendorOrderID,
|
||||||
|
Remark: refundDesc,
|
||||||
|
OldTrxID: orderPay.TransactionID,
|
||||||
|
})
|
||||||
|
if err == nil {
|
||||||
|
orderPayRefund = &model.OrderPayRefund{
|
||||||
|
RefundID: refundID,
|
||||||
|
VendorRefundID: result.TrxID,
|
||||||
|
VendorOrderID: orderPay.VendorOrderID,
|
||||||
|
VendorID: orderPay.VendorID,
|
||||||
|
Status: model.RefundStatusNo,
|
||||||
|
TransactionID: orderPay.TransactionID,
|
||||||
|
RefundFee: orderPay.TotalFee,
|
||||||
|
RefundCreatedAt: time.Now(),
|
||||||
|
}
|
||||||
|
dao.WrapAddIDCULDEntity(orderPayRefund, ctx.GetUserName())
|
||||||
|
db := dao.GetDB()
|
||||||
|
if result.TrxStatus == tonglianpayapi.TrxStatusSuccess {
|
||||||
|
orderPayRefund.Status = model.RefundStatusYes
|
||||||
|
} else {
|
||||||
|
orderPayRefund.Status = model.RefundStatusFailed
|
||||||
|
}
|
||||||
|
orderPayRefund.OriginalData = utils.Format4Output(result, true)
|
||||||
|
dao.CreateEntity(db, orderPayRefund)
|
||||||
|
|
||||||
|
orderPay.Status = model.PayStatusRefund
|
||||||
|
dao.UpdateEntity(db, orderPay)
|
||||||
|
}
|
||||||
|
return orderPayRefund, err
|
||||||
|
}
|
||||||
@@ -117,6 +117,9 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
|
|||||||
if storeDetail.VendorStoreName != "" {
|
if storeDetail.VendorStoreName != "" {
|
||||||
name = storeDetail.VendorStoreName
|
name = storeDetail.VendorStoreName
|
||||||
}
|
}
|
||||||
|
// else {
|
||||||
|
// name = jxutils.ComposeStoreName(storeDetail.Store.Name, model.VendorIDMTWM)
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
// openLevel, isOnline := bizStatusJX2Mtwm(mergedStoreStatus)
|
// openLevel, isOnline := bizStatusJX2Mtwm(mergedStoreStatus)
|
||||||
params := map[string]interface{}{
|
params := map[string]interface{}{
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ func updateFoodRecipeItemAndStep(ctx *jxcontext.Context, db *dao.DaoDB, recipeID
|
|||||||
if len(v.SkuIDs) == 0 {
|
if len(v.SkuIDs) == 0 {
|
||||||
return fmt.Errorf("SkuIDs必须要有值")
|
return fmt.Errorf("SkuIDs必须要有值")
|
||||||
}
|
}
|
||||||
skuIDs, err2 := dao.GetSkus(db, v.SkuIDs, nil, nil, nil)
|
skuIDs, err2 := dao.GetSkus(db, v.SkuIDs, nil, nil, nil, nil)
|
||||||
if err = err2; err != nil {
|
if err = err2; err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ dadaAppSecret = "7f97d8f258b70b450f04e7ab274ed8f8"
|
|||||||
mtwmAppID = "589"
|
mtwmAppID = "589"
|
||||||
mtwmSecret = "a81eb3df418d83d6a1a4b7c572156d2f"
|
mtwmSecret = "a81eb3df418d83d6a1a4b7c572156d2f"
|
||||||
mtwmCallbackURL = "http://callback.jxc4.com"
|
mtwmCallbackURL = "http://callback.jxc4.com"
|
||||||
mtwmCookieStr = "_lxsdk_cuid=16ddced5e9a95-0a65869c427a14-48714616-15f900-16ddced5e9b2b; _hc.v=cfebbfd1-79a7-9823-d8df-77e59646cb34.1571369610; _lxsdk=16ddced5e9a95-0a65869c427a14-48714616-15f900-16ddced5e9b2b; uuid_update=true; uuid=7b28e71504f5414e382b.1579155871.1.0.0; device_uuid=!64dedf83-b510-4910-8a31-b2b13d0bdd73; pushToken=00kRvxlerO15kB0dJFWDwYuctAoe04xGMNd0r3BqvLUA*; acctId=57396785; brandId=-1; wmPoiId=-1; isOfflineSelfOpen=0; city_id=0; isChain=1; existBrandPoi=true; ignore_set_router_proxy=true; region_id=; region_version=0; newCategory=false; bsid=OyqgRLyV54i9JKP0zRCI9jPyXc4UBU-6KReDAkPIwSlljhb97JPyFUIXfYQvhlJb6G1erzHQKbvtZ2pSWOYDxQ; cityId=510100; provinceId=510000; city_location_id=0; location_id=0; igateApp=shangouepc; wpush_server_url=wss://wpush.meituan.com; token=0MScAPaSa57iwRpgpCmGLf21tiA4yU4Uy-nDZlv8wNWs*; shopCategory=food; set_info=%7B%22wmPoiId%22%3A-1%2C%22ignoreSetRouterProxy%22%3Atrue%7D; JSESSIONID=105dgww27nsy6yfp68q7wmcni; LX_SC_CONSTANT=c_shangou_online_e_znrurnrc; _lxsdk_s=17041b590ac-3d-689-a8c%7C%7C15"
|
# mtwmCookieStr = "_lxsdk_cuid=16ddced5e9a95-0a65869c427a14-48714616-15f900-16ddced5e9b2b; _hc.v=cfebbfd1-79a7-9823-d8df-77e59646cb34.1571369610; _lxsdk=16ddced5e9a95-0a65869c427a14-48714616-15f900-16ddced5e9b2b; uuid_update=true; uuid=7b28e71504f5414e382b.1579155871.1.0.0; device_uuid=!64dedf83-b510-4910-8a31-b2b13d0bdd73; pushToken=00kRvxlerO15kB0dJFWDwYuctAoe04xGMNd0r3BqvLUA*; acctId=57396785; brandId=-1; wmPoiId=-1; isOfflineSelfOpen=0; city_id=0; isChain=1; existBrandPoi=true; ignore_set_router_proxy=true; region_id=; region_version=0; newCategory=false; bsid=OyqgRLyV54i9JKP0zRCI9jPyXc4UBU-6KReDAkPIwSlljhb97JPyFUIXfYQvhlJb6G1erzHQKbvtZ2pSWOYDxQ; cityId=510100; provinceId=510000; city_location_id=0; location_id=0; igateApp=shangouepc; wpush_server_url=wss://wpush.meituan.com; token=0MScAPaSa57iwRpgpCmGLf21tiA4yU4Uy-nDZlv8wNWs*; shopCategory=food; set_info=%7B%22wmPoiId%22%3A-1%2C%22ignoreSetRouterProxy%22%3Atrue%7D; JSESSIONID=105dgww27nsy6yfp68q7wmcni; LX_SC_CONSTANT=c_shangou_online_e_znrurnrc; _lxsdk_s=17041b590ac-3d-689-a8c%7C%7C15"
|
||||||
|
|
||||||
autonaviKey = "ef64f638f31e05cb7bde28790f7309fe"
|
autonaviKey = "ef64f638f31e05cb7bde28790f7309fe"
|
||||||
|
|
||||||
@@ -56,20 +56,25 @@ wxpayAppKey = "XKJPOIHJ233adf01KJIXlIeQDSDKFJAD"
|
|||||||
wxpayAppMchID = "1390686702"
|
wxpayAppMchID = "1390686702"
|
||||||
wxpayNotifyURL = "http://callback.test.jxc4.com/wxpay/msg/"
|
wxpayNotifyURL = "http://callback.test.jxc4.com/wxpay/msg/"
|
||||||
|
|
||||||
|
tonglianPayAppID = "00183083"
|
||||||
|
tonglianPayKey = "18048531223"
|
||||||
|
tonglianPayCusID = "56065105499TVAH"
|
||||||
|
tonglianPayNotifyURL = "http://callback.test.jxc4.com/tonglian/msg/"
|
||||||
|
|
||||||
backstageHost = "http://www.jxc4.com"
|
backstageHost = "http://www.jxc4.com"
|
||||||
wxBackstageHost = "http://wx.jxc4.com"
|
wxBackstageHost = "http://wx.jxc4.com"
|
||||||
|
|
||||||
jdStorePageCookie = "YYJV3NHVBPHLD36FWP6F3EM5PTXJ2XZQS7U4HWRIDPP4IWGUKUIB4XG5N26CZRDLDF7PKOXBPD6BNTUAJLETLZOIWMCVFI3K6MYZIY4QBIXIMXYDJNUKFGJVQTN5356SAD6WPCIHWNQAG7DDMF7L7S3SHD6O37OTAHUCKU6ALXATYTGMHNFLM4XRLVSFUQAJR77M4URSZRKVO55243TDVXLO25PP4UYSPTTPMNRUFXDNP4WPE566Q6V4AH32F7HT"
|
# jdStorePageCookie = "YYJV3NHVBPHLD36FWP6F3EM5PTXJ2XZQS7U4HWRIDPP4IWGUKUIB4XG5N26CZRDLDF7PKOXBPD6BNTUAJLETLZOIWMCVFI3K6MYZIY4QBIXIMXYDJNUKFGJVQTN5356SAD6WPCIHWNQAG7DDMF7L7S3SHD6O37OTAHUCKU6ALXATYTGMHNFLM4XRLVSFUQAJR77M4URSZRKVO55243TDVXLO25PP4UYSPTTPMNRUFXDNP4WPE566Q6V4AH32F7HT"
|
||||||
jd2StorePageCookie = "CK5GE5MR2UIOBOZC7BBZLLSI7MVDWPEQ4BRJTJQ2OP3ZFKYDDYTFFV4XOXKLERC2UXFT44TMCUMRFP3C25HD6W3PYONTQCOML6YIZA5Z37P62UXFE655IRGYJ4ZLQIEBYQM32FABIN5RVJYZWPQWSRTZURNRLYV57XJEDWZT5UVZRYUBTN3AT6JJJJ22YHE6ZHCN6LCH27JHSRO55YA6TJH6G54IF72X3UAXCKW5P2G2MT3U6I3527NQFMAFLHXBZKQFFMYUKUHUU4GZWD4O7GO45Y"
|
# jd2StorePageCookie = "CK5GE5MR2UIOBOZC7BBZLLSI7MVDWPEQ4BRJTJQ2OP3ZFKYDDYTFFV4XOXKLERC2UXFT44TMCUMRFP3C25HD6W3PYONTQCOML6YIZA5Z37P62UXFE655IRGYJ4ZLQIEBYQM32FABIN5RVJYZWPQWSRTZURNRLYV57XJEDWZT5UVZRYUBTN3AT6JJJJ22YHE6ZHCN6LCH27JHSRO55YA6TJH6G54IF72X3UAXCKW5P2G2MT3U6I3527NQFMAFLHXBZKQFFMYUKUHUU4GZWD4O7GO45Y"
|
||||||
fakeJdToken = "ndslkv9asl@djf_n7askdjfk$"
|
fakeJdToken = "ndslkv9asl@djf_n7askdjfk$"
|
||||||
fakeJdBaseURL = "http://test.jxc4.com/qqqq"
|
fakeJdBaseURL = "http://test.jxc4.com/qqqq"
|
||||||
|
|
||||||
ebaiStorePageCookieWMUSS = "B0AAFQCAAAGbhkuMCsvcyYBDkkyAxBGIBlgXAQYVwc7VwYZFkx2HDoPSmo5eV1femopWgJRawhgAALG04cg1RUmhUakBbJRdgPS0tNEhnQhNRewwuWwYYBDEFPCQSDXV5YWA6PAVRHUJ9SnVGMThYAjNjLw9pRxIbS04-XFo05AQgBl%7ERLA33vWcR73gEAKZ"
|
# ebaiStorePageCookieWMUSS = "B0AAFQCAAAGbhkuMCsvcyYBDkkyAxBGIBlgXAQYVwc7VwYZFkx2HDoPSmo5eV1femopWgJRawhgAALG04cg1RUmhUakBbJRdgPS0tNEhnQhNRewwuWwYYBDEFPCQSDXV5YWA6PAVRHUJ9SnVGMThYAjNjLw9pRxIbS04-XFo05AQgBl%7ERLA33vWcR73gEAKZ"
|
||||||
ebaiStorePageCookieWMSTOKEN = "gAALgNAAAGfBI5YEBHSQdZY1InIS8CVQU9aBU1f3VLWVQqKHAAAc5LnRLZ1QLLx0S5IuzCSX8ZQ7oUwAAUr-GEm9JpRc9AQAAsLkLHHXzuhh2lZkbyrcAAAWBESKg3ZA"
|
# ebaiStorePageCookieWMSTOKEN = "gAALgNAAAGfBI5YEBHSQdZY1InIS8CVQU9aBU1f3VLWVQqKHAAAc5LnRLZ1QLLx0S5IuzCSX8ZQ7oUwAAUr-GEm9JpRc9AQAAsLkLHHXzuhh2lZkbyrcAAAWBESKg3ZA"
|
||||||
ebaiStorePageCookieWMUSS2 = "A8AAIcCAAADJhpNHQoGGjZaLFRBdnE7Uwp9TBQXH1o9RTBgP30NQiQmEEAwFVplbwc6wAAMXwsa082aRxJfzskPX9THj9RKgJ0TxE1fyYPZRYVH0YSSjFgARt8Shs3bVc3QHV2Eh94B24KO20vSlJEXnELcDxTl9sJ35T2Dvg21A3wCT0NMXaNAcPzKhPamv"
|
# ebaiStorePageCookieWMUSS2 = "A8AAIcCAAADJhpNHQoGGjZaLFRBdnE7Uwp9TBQXH1o9RTBgP30NQiQmEEAwFVplbwc6wAAMXwsa082aRxJfzskPX9THj9RKgJ0TxE1fyYPZRYVH0YSSjFgARt8Shs3bVc3QHV2Eh94B24KO20vSlJEXnELcDxTl9sJ35T2Dvg21A3wCT0NMXaNAcPzKhPamv"
|
||||||
ebaiStorePageCookieWMSTOKEN2 = "A4AANwHAAARMA9ZWhh6BzcGYTQZJjVOHGIxPUdPVElXQz8iahGqiIS5gAAsLaD8yOwpYLCVMU2qqCEN8nAyiUQAAUr-GEu-F2xVbAQAAYcnZGrUx2Rf9qJkbRKQAAONp"
|
# ebaiStorePageCookieWMSTOKEN2 = "A4AANwHAAARMA9ZWhh6BzcGYTQZJjVOHGIxPUdPVElXQz8iahGqiIS5gAAsLaD8yOwpYLCVMU2qqCEN8nAyiUQAAUr-GEu-F2xVbAQAAYcnZGrUx2Rf9qJkbRKQAAONp"
|
||||||
ebaiStorePageCookieExdTOKEN = "PBE_2.0_5cd1c6141c127d419e817e88920aa5ae01c164ed47b678e0b16c628ef65ffc0b93ddf4a7cd1f7172e644f4f5321c5f197dd406a5a0d219aae2fa169e59c5419db8f4d4ca44c01e112c6bb4f8d87cbae90e6eaefceba88f486f26bafa41f3ec181773c4b329a6c7c154333a8496509943c63a96c71c72edc82f6beb6ecd9acd5ad69b2f2bbcbe011d05536112cbe52be0b2176860870ce608a0d7f465a1e782f6584e4253aaaee30d9042f82f12b312b5a29151e2e0400f4a128ee365966025f9719278850f60e10ddda0e32554c6867091321cd552b41aa5e5e676f64af218a0e98e4030f499c31de664a0c0a23c5306075ffb061c7654d4646317c8e6a55c66361c96b9e8f11f55c2f666a0240a3f8fb8e221d58b907731a8720572a03febd20d146cad4b6a3821cfd3c5b3286bb3383c4eff8c8ff2d63b8773bbd88f2d6c4b1deb7634221b0e086b7b7d6201435dacdb09525dc59588beeffcd0232ef64aa73fd2325509fa7fc6"
|
# ebaiStorePageCookieExdTOKEN = "PBE_2.0_5cd1c6141c127d41d12be02a04e58e0a2529c8ac5aad36be932f6e341f8be9a0e56b833c924cc95dd2ced76b31ea6fcbc7341cc9c03e3e2f470441192d51fc8bd81b6c5d24a867630a65400e688ff8f4453895ca9a18d7e91726941b28631cf2ab81797279967fcb03ae57e5bc33bf91e4495727569681c724597fb2c639a85c145723c12de262224e2536ad2c6f94bcae0c10c8f30728a6ea3ab6000940fffaa66271f17ecbae139f0b4fdfff791b7986a88b8f252827e799a2e1862ec522fd4c51c70ae9d17c69da93f1c12715bf9e0b35eccf39ae605d424c83319acaa7acbe191a8ee410afd1d02d1e02834ce6cbd2503b89f30efc1f7635a1e71e10e3370fc79b33e6352290e87f82b1cb8ac91195a09ff28e4418923e89993eb10d01e39fb621d517a14081611b25e83da9ec860fbacd2cb13562271585b53a0a7178e8f614bd62ffa442c78a10f008b3721675cad803024fad0c13aeecd64d1360bab4127883d2e7198201"
|
||||||
mtpsStoreToken = "M0p9VatZSeSHfrosD5IViAVl73IcA8mlcuHIV5sG6Zpv83a7JE0wY3t26aEhrrs_MR5gtLSFF1UIkt8HAjaXow"
|
# mtpsStoreToken = "M0p9VatZSeSHfrosD5IViAVl73IcA8mlcuHIV5sG6Zpv83a7JE0wY3t26aEhrrs_MR5gtLSFF1UIkt8HAjaXow"
|
||||||
|
|
||||||
weimobAppID = "319F5E7FB6784DFCA3684C9333EB7744"
|
weimobAppID = "319F5E7FB6784DFCA3684C9333EB7744"
|
||||||
weimobAppSecret = "7267AA7F58261F6965599218F5A1D592"
|
weimobAppSecret = "7267AA7F58261F6965599218F5A1D592"
|
||||||
@@ -165,6 +170,10 @@ jd2Token = "29e0e567-c475-433a-aff0-37176ee8d8a7"
|
|||||||
jd2AppKey = "7fb947624ff847ae94ff2f068cc99652"
|
jd2AppKey = "7fb947624ff847ae94ff2f068cc99652"
|
||||||
jd2Secret = "1097abd7ef09427099b4922784af123a"
|
jd2Secret = "1097abd7ef09427099b4922784af123a"
|
||||||
|
|
||||||
|
jdEclpAccessToken = "bcb6201b5b3c45a0976dcda5e2dea8aejiwm"
|
||||||
|
jdEclpAppKey = "0D397F05CF11C51BCDCC81744680EBC3"
|
||||||
|
jdEclpAppSecret = "f16a5e57ff4f4f428b702c40d2d4b933"
|
||||||
|
|
||||||
elmIsProd = true
|
elmIsProd = true
|
||||||
elmToken = ""
|
elmToken = ""
|
||||||
elmAppKey = "KLRDcOZGrk"
|
elmAppKey = "KLRDcOZGrk"
|
||||||
@@ -187,6 +196,11 @@ weixinMiniSecret2 = "2a57228a716ce991a52739f0ff41111d"
|
|||||||
|
|
||||||
wxpayNotifyURL = "http://callback.jxc4.com/wxpay/msg/"
|
wxpayNotifyURL = "http://callback.jxc4.com/wxpay/msg/"
|
||||||
|
|
||||||
|
tonglianPayAppID = "00183083"
|
||||||
|
tonglianPayKey = "18048531223"
|
||||||
|
tonglianPayCusID = "56065105499TVAH"
|
||||||
|
tonglianPayNotifyURL = "http://callback.jxc4.com/tonglian/msg/"
|
||||||
|
|
||||||
dbConnectStr = "root:WebServer@1@tcp(db1.int.jxc4.com:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true"
|
dbConnectStr = "root:WebServer@1@tcp(db1.int.jxc4.com:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true"
|
||||||
|
|
||||||
enableStoreWrite = true
|
enableStoreWrite = true
|
||||||
@@ -204,6 +218,9 @@ dingdingSecret = "LWrZAFeqUfuVv7n_tc8vPpCAx6PT4CwManx2XCVhJOqGsx2L5XCDuX1sAN_Jtv
|
|||||||
|
|
||||||
dingdingCallbackURL = "http://callback.jxc4.com/dingding/msg"
|
dingdingCallbackURL = "http://callback.jxc4.com/dingding/msg"
|
||||||
|
|
||||||
|
yinbaoAppID = "18C0E0867E467DBC26EFF5E957B02EC4"
|
||||||
|
yinbaoAppKey = "682628966212343269"
|
||||||
|
|
||||||
[jxgy]
|
[jxgy]
|
||||||
httpport = 8088
|
httpport = 8088
|
||||||
EnableDocs = false
|
EnableDocs = false
|
||||||
@@ -244,8 +261,16 @@ weixinSecret = "6bbbed1443cc062c20a015a64c07a531"
|
|||||||
weixinMiniAppID = "wx2d6949f724b2541d"
|
weixinMiniAppID = "wx2d6949f724b2541d"
|
||||||
weixinMiniSecret = "11f3c380551c4683c149990b004d6df9"
|
weixinMiniSecret = "11f3c380551c4683c149990b004d6df9"
|
||||||
|
|
||||||
|
weixinMiniAppID2 = "wx4b5930c13f8b1170"
|
||||||
|
weixinMiniSecret2 = "2a57228a716ce991a52739f0ff41111d"
|
||||||
|
|
||||||
wxpayNotifyURL = "http://callback-jxgy.jxc4.com/wxpay/msg/"
|
wxpayNotifyURL = "http://callback-jxgy.jxc4.com/wxpay/msg/"
|
||||||
|
|
||||||
|
tonglianPayAppID = "00183083"
|
||||||
|
tonglianPayKey = "18048531223"
|
||||||
|
tonglianPayCusID = "56065105499TVAH"
|
||||||
|
tonglianPayNotifyURL = "http://callback-jxgy.jxc4.com/tonglian/msg/"
|
||||||
|
|
||||||
backstageHost = "http://www-jxgy.jxc4.com"
|
backstageHost = "http://www-jxgy.jxc4.com"
|
||||||
wxBackstageHost = "http://wx-jxgy.jxc4.com"
|
wxBackstageHost = "http://wx-jxgy.jxc4.com"
|
||||||
|
|
||||||
@@ -261,6 +286,13 @@ dingdingCallbackURL = "http://callback-jxgy.jxc4.com/dingding/msg"
|
|||||||
getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken"
|
getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken"
|
||||||
getYLYTokenURL = "http://www.jxc4.com/v2/sys/GetYLYToken"
|
getYLYTokenURL = "http://www.jxc4.com/v2/sys/GetYLYToken"
|
||||||
|
|
||||||
|
jdEclpAccessToken = "bcb6201b5b3c45a0976dcda5e2dea8aejiwm"
|
||||||
|
jdEclpAppKey = "0D397F05CF11C51BCDCC81744680EBC3"
|
||||||
|
jdEclpAppSecret = "f16a5e57ff4f4f428b702c40d2d4b933"
|
||||||
|
|
||||||
|
yinbaoAppID = "18C0E0867E467DBC26EFF5E957B02EC4"
|
||||||
|
yinbaoAppKey = "682628966212343269"
|
||||||
|
|
||||||
storeName = "京西果园"
|
storeName = "京西果园"
|
||||||
|
|
||||||
[test]
|
[test]
|
||||||
@@ -316,6 +348,9 @@ dadaSourceID = "73753"
|
|||||||
weixinAppID = "wx2bb99eb5d2c9b82c"
|
weixinAppID = "wx2bb99eb5d2c9b82c"
|
||||||
weixinSecret = "6bbbed1443cc062c20a015a64c07a531"
|
weixinSecret = "6bbbed1443cc062c20a015a64c07a531"
|
||||||
getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken"
|
getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken"
|
||||||
|
getWeixin2TokenURL = "http://www.jxc4.com/v2/sys/GetWX2Token"
|
||||||
|
weixinMiniAppID2 = "wx4b5930c13f8b1170"
|
||||||
|
weixinMiniSecret2 = "2a57228a716ce991a52739f0ff41111d"
|
||||||
|
|
||||||
mtwmCallbackURL = "http://callback.alpha.jxc4.com"
|
mtwmCallbackURL = "http://callback.alpha.jxc4.com"
|
||||||
|
|
||||||
@@ -345,6 +380,10 @@ jd2Token = "29e0e567-c475-433a-aff0-37176ee8d8a7"
|
|||||||
jd2AppKey = "7fb947624ff847ae94ff2f068cc99652"
|
jd2AppKey = "7fb947624ff847ae94ff2f068cc99652"
|
||||||
jd2Secret = "1097abd7ef09427099b4922784af123a"
|
jd2Secret = "1097abd7ef09427099b4922784af123a"
|
||||||
|
|
||||||
|
jdEclpAccessToken = "bcb6201b5b3c45a0976dcda5e2dea8aejiwm"
|
||||||
|
jdEclpAppKey = "0D397F05CF11C51BCDCC81744680EBC3"
|
||||||
|
jdEclpAppSecret = "f16a5e57ff4f4f428b702c40d2d4b933"
|
||||||
|
|
||||||
elmIsProd = true
|
elmIsProd = true
|
||||||
elmToken = ""
|
elmToken = ""
|
||||||
elmAppKey = "KLRDcOZGrk"
|
elmAppKey = "KLRDcOZGrk"
|
||||||
@@ -367,6 +406,10 @@ weixinMiniSecret2 = "2a57228a716ce991a52739f0ff41111d"
|
|||||||
|
|
||||||
disableWeimob = false
|
disableWeimob = false
|
||||||
getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken"
|
getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken"
|
||||||
|
getWeixin2TokenURL = "http://www.jxc4.com/v2/sys/GetWX2Token"
|
||||||
getWeimobTokenURL = "http://www.jxc4.com/v2/sys/GetWeimobToken"
|
getWeimobTokenURL = "http://www.jxc4.com/v2/sys/GetWeimobToken"
|
||||||
|
|
||||||
dbConnectStr = "root:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true"
|
dbConnectStr = "root:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true"
|
||||||
|
|
||||||
|
yinbaoAppID = "18C0E0867E467DBC26EFF5E957B02EC4"
|
||||||
|
yinbaoAppKey = "682628966212343269"
|
||||||
@@ -647,3 +647,20 @@ func (c *StoreController) SyncJdStore() {
|
|||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Title 清空打印机打印队列
|
||||||
|
// @Description 清空打印机打印队列
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param storeIDs formData string true "门店列表"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /DeletePrinterSeq [post]
|
||||||
|
func (c *StoreController) DeletePrinterSeq() {
|
||||||
|
var storeIDList []int
|
||||||
|
c.callDeletePrinterSeq(func(params *tStoreDeletePrinterSeqParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
if jxutils.Strings2Objs(params.StoreIDs, &storeIDList); err == nil {
|
||||||
|
err = cms.DeletePrinterSeq(params.Ctx, storeIDList)
|
||||||
|
}
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ func (c *StoreSkuController) GetStoreSkus() {
|
|||||||
// @Param ebaiSyncStatus query int false "饿百同步标识"
|
// @Param ebaiSyncStatus query int false "饿百同步标识"
|
||||||
// @Param mtwmSyncStatus query int false "美团外卖同步标识"
|
// @Param mtwmSyncStatus query int false "美团外卖同步标识"
|
||||||
// @Param lockTime query string false "价格锁定时间"
|
// @Param lockTime query string false "价格锁定时间"
|
||||||
|
// @Param isHighPrice query bool false "是否查过高价格商品"
|
||||||
// @Success 200 {object} controllers.CallResult
|
// @Success 200 {object} controllers.CallResult
|
||||||
// @Failure 200 {object} controllers.CallResult
|
// @Failure 200 {object} controllers.CallResult
|
||||||
// @router /GetStoresSkus [get,post]
|
// @router /GetStoresSkus [get,post]
|
||||||
@@ -92,7 +93,7 @@ func (c *StoreSkuController) GetStoresSkus() {
|
|||||||
c.callGetStoresSkus(func(params *tStoreSkuGetStoresSkusParams) (retVal interface{}, errCode string, err error) {
|
c.callGetStoresSkus(func(params *tStoreSkuGetStoresSkusParams) (retVal interface{}, errCode string, err error) {
|
||||||
var storeIDs, skuIDs []int
|
var storeIDs, skuIDs []int
|
||||||
if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.SkuIDs, &skuIDs); err == nil {
|
if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.SkuIDs, &skuIDs); err == nil {
|
||||||
retVal, err = cms.GetStoresSkus(params.Ctx, storeIDs, skuIDs, params.IsFocus, params.Keyword, params.IsBySku, params.IsAct, params.MapData, params.Offset, params.PageSize)
|
retVal, err = cms.GetStoresSkus(params.Ctx, storeIDs, skuIDs, params.IsFocus, params.IsHighPrice, params.Keyword, params.IsBySku, params.IsAct, params.MapData, params.Offset, params.PageSize)
|
||||||
}
|
}
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
@@ -674,6 +675,7 @@ func (c *StoreSkuController) SendSeckillSkusCountMsg() {
|
|||||||
// @Param token header string true "认证token"
|
// @Param token header string true "认证token"
|
||||||
// @Param payload formData string true "json数据,JdStoreSkus对象"
|
// @Param payload formData string true "json数据,JdStoreSkus对象"
|
||||||
// @Param vendorID formData int true "厂商ID"
|
// @Param vendorID formData int true "厂商ID"
|
||||||
|
// @Param ignoreLow formData bool true "是否忽略低价商品"
|
||||||
// @Param isAsync formData bool true "是否异步,缺省是同步"
|
// @Param isAsync formData bool true "是否异步,缺省是同步"
|
||||||
// @Param isContinueWhenError formData bool true "单个同步失败是否继续,缺省false"
|
// @Param isContinueWhenError formData bool true "单个同步失败是否继续,缺省false"
|
||||||
// @Success 200 {object} controllers.CallResult
|
// @Success 200 {object} controllers.CallResult
|
||||||
@@ -685,7 +687,76 @@ func (c *StoreSkuController) RefreshJxPriceByVendor() {
|
|||||||
if err = jxutils.Strings2Objs(params.Payload, &skuBindInfos); err != nil {
|
if err = jxutils.Strings2Objs(params.Payload, &skuBindInfos); err != nil {
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
}
|
}
|
||||||
retVal, err = cms.RefreshJxPriceByVendor(params.Ctx, skuBindInfos, params.VendorID, params.IsAsync, params.IsContinueWhenError)
|
retVal, err = cms.RefreshJxPriceByVendor(params.Ctx, skuBindInfos, params.VendorID, params.IgnoreLow, params.IsAsync, params.IsContinueWhenError)
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Title 根据平台价反算京西价2
|
||||||
|
// @Description 根据平台价反算京西价2
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param storeIDs formData string true "门店列表"
|
||||||
|
// @Param vendorID formData int true "厂商ID"
|
||||||
|
// @Param isAsync formData bool false "是否异步,缺省是同步"
|
||||||
|
// @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /RefreshJxPriceByVendor2 [put]
|
||||||
|
func (c *StoreSkuController) RefreshJxPriceByVendor2() {
|
||||||
|
var storeIDs []int
|
||||||
|
c.callRefreshJxPriceByVendor2(func(params *tStoreSkuRefreshJxPriceByVendor2Params) (retVal interface{}, errCode string, err error) {
|
||||||
|
if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs); err != nil {
|
||||||
|
return retVal, "", err
|
||||||
|
}
|
||||||
|
retVal, err = cms.RefreshJxPriceByVendor2(params.Ctx, storeIDs, params.VendorID, params.IsAsync, params.IsContinueWhenError)
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Title 生成门店商品备份表
|
||||||
|
// @Description 生成门店商品备份表
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param isAsync formData bool false "是否异步,缺省是同步"
|
||||||
|
// @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /BackUpStoreSkuBind [post]
|
||||||
|
func (c *StoreSkuController) BackUpStoreSkuBind() {
|
||||||
|
c.callBackUpStoreSkuBind(func(params *tStoreSkuBackUpStoreSkuBindParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
retVal, err = cms.BackUpStoreSkuBind(params.Ctx, params.IsAsync, params.IsContinueWhenError)
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Title 恢复门店商品表
|
||||||
|
// @Description 恢复门店商品表
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param snapshotAt formData string true "日期,格式2020-03-06 00:00:00"
|
||||||
|
// @Param storeIDs formData string true "门店列表"
|
||||||
|
// @Param skuIDs formData string false "商品列表"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /ReturnStoreSkuBind [post]
|
||||||
|
func (c *StoreSkuController) ReturnStoreSkuBind() {
|
||||||
|
c.callReturnStoreSkuBind(func(params *tStoreSkuReturnStoreSkuBindParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
var storeIDs, skuIDs []int
|
||||||
|
if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.SkuIDs, &skuIDs); err != nil {
|
||||||
|
return retVal, "", err
|
||||||
|
}
|
||||||
|
err = cms.ReturnStoreSkuBind(params.Ctx, params.SnapshotAt, storeIDs, skuIDs)
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Title 物料库存刷新(物料店商品上下架)
|
||||||
|
// @Description 物料库存刷新(物料店商品上下架)
|
||||||
|
// @Param token header string false "认证token"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /RefreshMatterStock [post]
|
||||||
|
func (c *StoreSkuController) RefreshMatterStock() {
|
||||||
|
c.callRefreshMatterStock(func(params *tStoreSkuRefreshMatterStockParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
err = cms.RefreshMatterStock(params.Ctx, 0)
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -485,3 +485,17 @@ func (c *User2Controller) DeleteUserInfo() {
|
|||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Title 得到用户自己的门店列表(商城用)
|
||||||
|
// @Description 得到用户自己的门店列表(商城用)
|
||||||
|
// @Param token header string false "认证token"
|
||||||
|
// @Param mobile query string true "电话"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /GetMyJxStoreList [get]
|
||||||
|
func (c *User2Controller) GetMyJxStoreList() {
|
||||||
|
c.callGetMyJxStoreList(func(params *tUser2GetMyJxStoreListParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
retVal, err = cms.GetMyJxStoreList(params.Ctx, params.Mobile)
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
22
controllers/eclp_callback.go
Normal file
22
controllers/eclp_callback.go
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package controllers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego"
|
||||||
|
)
|
||||||
|
|
||||||
|
type EclpController struct {
|
||||||
|
beego.Controller
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *EclpController) Msg() {
|
||||||
|
if c.Ctx.Input.Method() == http.MethodPost {
|
||||||
|
fmt.Println("testElcp", c.Ctx.Request.Body)
|
||||||
|
c.Data["json"] = c.Ctx.Request.Body
|
||||||
|
c.ServeJSON()
|
||||||
|
} else {
|
||||||
|
c.Abort("404")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,13 @@
|
|||||||
package controllers
|
package controllers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxstore/event"
|
"git.rosy.net.cn/jx-callback/business/jxstore/event"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
"github.com/astaxie/beego"
|
"github.com/astaxie/beego"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -55,3 +60,25 @@ func (c *EventController) GetCheckVendorCookie() {
|
|||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Title 得到微信小程序码
|
||||||
|
// @Description 得到微信小程序码
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param scene formData string true "最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)"
|
||||||
|
// @Param page formData string false "必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /GetWeixinUnlimited [post]
|
||||||
|
func (c *EventController) GetWeixinUnlimited() {
|
||||||
|
c.callGetWeixinUnlimited(func(params *tEventGetWeixinUnlimitedParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
// api.WeixinMiniAPI2.CBRetrieveToken()
|
||||||
|
result, err := api.WeixinMiniAPI2.GetUnlimited(params.Scene, params.Page)
|
||||||
|
if err != nil || result == nil {
|
||||||
|
return retVal, "", err
|
||||||
|
}
|
||||||
|
fileName := "wxcode" + utils.Int64ToStr(time.Now().Unix()) + ".jpg"
|
||||||
|
retVal, err = jxutils.UploadExportContent([]byte(result["fakeData"].(string)), fileName)
|
||||||
|
// tasks.RefreshWeixinToken()
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -1002,3 +1002,17 @@ func (c *OrderController) GetOrdersAccept() {
|
|||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Title 获取某个门店上次申请物料到现在的销量
|
||||||
|
// @Description 获取某个门店上次申请物料到现在的销量
|
||||||
|
// @Param token header string false "认证token"
|
||||||
|
// @Param storeID query int true "门店ID"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /GetMatterStoreOrderCount [get]
|
||||||
|
func (c *OrderController) GetMatterStoreOrderCount() {
|
||||||
|
c.callGetMatterStoreOrderCount(func(params *tOrderGetMatterStoreOrderCountParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
retVal, err = orderman.GetMatterStoreOrderCount(params.Ctx, params.StoreID)
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ type JxOrderController struct {
|
|||||||
// @Param token header string true "认证token"
|
// @Param token header string true "认证token"
|
||||||
// @Param jxOrder formData string true "订单信息"
|
// @Param jxOrder formData string true "订单信息"
|
||||||
// @Param addressID formData int64 true "配送地址ID"
|
// @Param addressID formData int64 true "配送地址ID"
|
||||||
|
// @Param fromStoreID formData int fasle "物料配送门店"
|
||||||
// @Param createType formData int false "创建类型, 0:预创建, 1:创建"
|
// @Param createType formData int false "创建类型, 0:预创建, 1:创建"
|
||||||
// @Success 200 {object} controllers.CallResult
|
// @Success 200 {object} controllers.CallResult
|
||||||
// @Failure 200 {object} controllers.CallResult
|
// @Failure 200 {object} controllers.CallResult
|
||||||
@@ -24,7 +25,7 @@ func (c *JxOrderController) CreateOrder() {
|
|||||||
c.callCreateOrder(func(params *tJxorderCreateOrderParams) (retVal interface{}, errCode string, err error) {
|
c.callCreateOrder(func(params *tJxorderCreateOrderParams) (retVal interface{}, errCode string, err error) {
|
||||||
var jxOrder *localjx.JxOrderInfo
|
var jxOrder *localjx.JxOrderInfo
|
||||||
if err = utils.UnmarshalUseNumber([]byte(params.JxOrder), &jxOrder); err == nil {
|
if err = utils.UnmarshalUseNumber([]byte(params.JxOrder), &jxOrder); err == nil {
|
||||||
retVal, err = localjx.CreateOrder(params.Ctx, jxOrder, int64(params.AddressID), params.CreateType)
|
retVal, err = localjx.CreateOrder(params.Ctx, jxOrder, int64(params.AddressID), params.CreateType, params.FromStoreID)
|
||||||
}
|
}
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
@@ -61,8 +62,8 @@ func (c *JxOrderController) BuyerCancelOrder() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Title 查询网络打印机状态
|
// @Title 得到门店营业时间配送列表
|
||||||
// @Description 查询网络打印机状态
|
// @Description 得到门店营业时间配送列表
|
||||||
// @Param token header string true "认证token"
|
// @Param token header string true "认证token"
|
||||||
// @Param storeID query int true "门店ID"
|
// @Param storeID query int true "门店ID"
|
||||||
// @Success 200 {object} controllers.CallResult
|
// @Success 200 {object} controllers.CallResult
|
||||||
@@ -159,3 +160,44 @@ func (c *JxOrderController) PayForPopluarMan() {
|
|||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Title 查询物料订单状态
|
||||||
|
// @Description 查询物料订单状态
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param vendorOrderID query string true "订单ID"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /GetMatterOrderStatus [get]
|
||||||
|
func (c *JxOrderController) GetMatterOrderStatus() {
|
||||||
|
c.callGetMatterOrderStatus(func(params *tJxorderGetMatterOrderStatusParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
retVal, err = localjx.GetMatterOrderStatus(params.Ctx, params.VendorOrderID)
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Title 刷新所有物料订单状态
|
||||||
|
// @Description 刷新所有物料订单状态
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /RefreshAllMatterOrderStatus [put]
|
||||||
|
func (c *JxOrderController) RefreshAllMatterOrderStatus() {
|
||||||
|
c.callRefreshAllMatterOrderStatus(func(params *tJxorderRefreshAllMatterOrderStatusParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
err = localjx.RefreshAllMatterOrderStatus(params.Ctx)
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Title 重发物料订单
|
||||||
|
// @Description 重发物料订单
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param vendorOrderID formData string true "订单ID"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /SendFailedMatterOrder [post]
|
||||||
|
func (c *JxOrderController) SendFailedMatterOrder() {
|
||||||
|
c.callSendFailedMatterOrder(func(params *tJxorderSendFailedMatterOrderParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
err = localjx.SendFailedMatterOrder(params.Ctx, params.VendorOrderID)
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -37,6 +37,23 @@ func (c *SysController) GetWXToken() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Title 得到微信小程序2token
|
||||||
|
// @Description 得到微信小程序2token
|
||||||
|
// @Param accessKey query string true "假token"
|
||||||
|
// @Param oldToken query string false "之前的token"
|
||||||
|
// @Param waitSecond query int false "等待秒数"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /GetWX2Token [get]
|
||||||
|
func (c *SysController) GetWX2Token() {
|
||||||
|
c.callGetWX2Token(func(params *tSysGetWX2TokenParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
if params.AccessKey == globals.GetWeixinTokenKey {
|
||||||
|
retVal = syseventhub.SysEventHub.GetWX2Token(params.OldToken, time.Duration(params.WaitSecond)*time.Second)
|
||||||
|
}
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// @Title 得到易联云token
|
// @Title 得到易联云token
|
||||||
// @Description 得到易联云token
|
// @Description 得到易联云token
|
||||||
// @Param accessKey query string true "假token"
|
// @Param accessKey query string true "假token"
|
||||||
|
|||||||
39
controllers/tonglian_callback.go
Normal file
39
controllers/tonglian_callback.go
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
package controllers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/partner/purchase/jx/localjx"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego"
|
||||||
|
"github.com/astaxie/beego/context"
|
||||||
|
)
|
||||||
|
|
||||||
|
type TongLianController struct {
|
||||||
|
beego.Controller
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *TongLianController) Msg() {
|
||||||
|
if c.Ctx.Input.Method() == http.MethodPost {
|
||||||
|
call, err := api.TLpayAPI.GetCallbackMsg(getUsefulRequest2(c.Ctx))
|
||||||
|
globals.SugarLogger.Debugf("tonglianapi callback callbackResponse:%s", utils.Format4Output(call, true))
|
||||||
|
if err == nil {
|
||||||
|
err = localjx.OnTLPayCallback(call)
|
||||||
|
}
|
||||||
|
c.Data["json"] = call
|
||||||
|
c.ServeJSON()
|
||||||
|
} else {
|
||||||
|
c.Abort("404")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getUsefulRequest2(ctx *context.Context) *http.Request {
|
||||||
|
ctx.Request.Body = ioutil.NopCloser(bytes.NewReader(ctx.Input.RequestBody))
|
||||||
|
return ctx.Request
|
||||||
|
}
|
||||||
@@ -3,6 +3,11 @@ package api
|
|||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi/jdeclpapi"
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi/yinbaoapi"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi/tonglianpayapi"
|
||||||
|
|
||||||
aliyunsmsclient "github.com/KenmyZhang/aliyun-communicate"
|
aliyunsmsclient "github.com/KenmyZhang/aliyun-communicate"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi"
|
"git.rosy.net.cn/baseapi/platformapi"
|
||||||
@@ -38,6 +43,7 @@ var (
|
|||||||
|
|
||||||
Jd2API *jdapi.API
|
Jd2API *jdapi.API
|
||||||
FakeJdAPI *jdapi.API
|
FakeJdAPI *jdapi.API
|
||||||
|
JdEclpAPI *jdeclpapi.API
|
||||||
|
|
||||||
ElmAPI *elmapi.API
|
ElmAPI *elmapi.API
|
||||||
EbaiAPI *ebaiapi.API
|
EbaiAPI *ebaiapi.API
|
||||||
@@ -50,7 +56,10 @@ var (
|
|||||||
WeixinMiniAPI *weixinapi.API // 小程序
|
WeixinMiniAPI *weixinapi.API // 小程序
|
||||||
WeixinMiniAPI2 *weixinapi.API // 小程序2
|
WeixinMiniAPI2 *weixinapi.API // 小程序2
|
||||||
WeixinMiniAppID2 string
|
WeixinMiniAppID2 string
|
||||||
WxpayAPI *wxpayapi.API // 微信支付API
|
WxpayAPI *wxpayapi.API // 微信支付API
|
||||||
|
TLpayAPI *tonglianpayapi.API //通联收银宝api
|
||||||
|
|
||||||
|
YinBaoAPI *yinbaoapi.API //银豹平台api
|
||||||
|
|
||||||
WeixinPageAPI *weixinapi.API // 用户微信扫码登录
|
WeixinPageAPI *weixinapi.API // 用户微信扫码登录
|
||||||
|
|
||||||
@@ -82,16 +91,16 @@ func init() {
|
|||||||
func Init() {
|
func Init() {
|
||||||
if !beego.AppConfig.DefaultBool("disableJd", false) {
|
if !beego.AppConfig.DefaultBool("disableJd", false) {
|
||||||
JdAPI = jdapi.New(beego.AppConfig.String("jdToken"), beego.AppConfig.String("jdAppKey"), beego.AppConfig.String("jdSecret"))
|
JdAPI = jdapi.New(beego.AppConfig.String("jdToken"), beego.AppConfig.String("jdAppKey"), beego.AppConfig.String("jdSecret"))
|
||||||
cookieValue := beego.AppConfig.DefaultString("jdStorePageCookie", "")
|
// cookieValue := beego.AppConfig.DefaultString("jdStorePageCookie", "")
|
||||||
JdAPI.SetJdCookie(cookieValue)
|
// JdAPI.SetJdCookie(cookieValue)
|
||||||
|
|
||||||
conf := platformapi.NewDefAPIConfig()
|
conf := platformapi.NewDefAPIConfig()
|
||||||
conf.MaxSleepSecondWhenExceedLimit = 60 * 30 // 最大重试间隙30分钟
|
conf.MaxSleepSecondWhenExceedLimit = 60 * 30 // 最大重试间隙30分钟
|
||||||
JdPageAPI = jdapi.NewPageOnly(cookieValue, conf)
|
JdPageAPI = jdapi.NewPageOnly("", conf)
|
||||||
|
|
||||||
if globals.Jd2OrgCode != "" {
|
if globals.Jd2OrgCode != "" {
|
||||||
Jd2API = jdapi.New(beego.AppConfig.String("jd2Token"), beego.AppConfig.String("jd2AppKey"), beego.AppConfig.String("jd2Secret"))
|
Jd2API = jdapi.New(beego.AppConfig.String("jd2Token"), beego.AppConfig.String("jd2AppKey"), beego.AppConfig.String("jd2Secret"))
|
||||||
Jd2API.SetJdCookie(beego.AppConfig.DefaultString("jd2StorePageCookie", ""))
|
// Jd2API.SetJdCookie(beego.AppConfig.DefaultString("jd2StorePageCookie", ""))
|
||||||
}
|
}
|
||||||
|
|
||||||
fakeJdToken := beego.AppConfig.DefaultString("fakeJdToken", "")
|
fakeJdToken := beego.AppConfig.DefaultString("fakeJdToken", "")
|
||||||
@@ -101,6 +110,11 @@ func Init() {
|
|||||||
} else {
|
} else {
|
||||||
JdAPI = nil
|
JdAPI = nil
|
||||||
}
|
}
|
||||||
|
if !beego.AppConfig.DefaultBool("disableJdEclp", false) {
|
||||||
|
JdEclpAPI = jdeclpapi.New(beego.AppConfig.String("jdEclpAccessToken"), beego.AppConfig.String("jdEclpAppKey"), beego.AppConfig.String("jdEclpAppSecret"))
|
||||||
|
} else {
|
||||||
|
JdEclpAPI = nil
|
||||||
|
}
|
||||||
if !beego.AppConfig.DefaultBool("disableElm", false) {
|
if !beego.AppConfig.DefaultBool("disableElm", false) {
|
||||||
ElmAPI = elmapi.New(beego.AppConfig.DefaultString("elmToken", ""), beego.AppConfig.String("elmAppKey"), beego.AppConfig.String("elmSecret"), beego.AppConfig.DefaultBool("elmIsProd", false))
|
ElmAPI = elmapi.New(beego.AppConfig.DefaultString("elmToken", ""), beego.AppConfig.String("elmAppKey"), beego.AppConfig.String("elmSecret"), beego.AppConfig.DefaultBool("elmIsProd", false))
|
||||||
} else {
|
} else {
|
||||||
@@ -108,9 +122,9 @@ func Init() {
|
|||||||
}
|
}
|
||||||
if !beego.AppConfig.DefaultBool("disableMtwm", false) {
|
if !beego.AppConfig.DefaultBool("disableMtwm", false) {
|
||||||
MtwmAPI = mtwmapi.New(beego.AppConfig.String("mtwmAppID"), beego.AppConfig.String("mtwmSecret"), beego.AppConfig.String("mtwmCallbackURL"))
|
MtwmAPI = mtwmapi.New(beego.AppConfig.String("mtwmAppID"), beego.AppConfig.String("mtwmSecret"), beego.AppConfig.String("mtwmCallbackURL"))
|
||||||
if mtwmCookieStr := beego.AppConfig.DefaultString("mtwmCookieStr", ""); mtwmCookieStr != "" {
|
// if mtwmCookieStr := beego.AppConfig.DefaultString("mtwmCookieStr", ""); mtwmCookieStr != "" {
|
||||||
MtwmAPI.SetCookieWithStr(mtwmCookieStr)
|
// MtwmAPI.SetCookieWithStr(mtwmCookieStr)
|
||||||
}
|
// }
|
||||||
} else {
|
} else {
|
||||||
MtwmAPI = nil
|
MtwmAPI = nil
|
||||||
}
|
}
|
||||||
@@ -124,32 +138,38 @@ func Init() {
|
|||||||
}
|
}
|
||||||
if !beego.AppConfig.DefaultBool("disableEbai", false) {
|
if !beego.AppConfig.DefaultBool("disableEbai", false) {
|
||||||
EbaiAPI = ebaiapi.New(beego.AppConfig.String("ebaiSource"), beego.AppConfig.String("ebaiSecret"))
|
EbaiAPI = ebaiapi.New(beego.AppConfig.String("ebaiSource"), beego.AppConfig.String("ebaiSecret"))
|
||||||
ebaiStorePageCookieWMUSS := beego.AppConfig.DefaultString("ebaiStorePageCookieWMUSS", "")
|
// ebaiStorePageCookieWMUSS := beego.AppConfig.DefaultString("ebaiStorePageCookieWMUSS", "")
|
||||||
ebaiStorePageCookieWMSTOKEN := beego.AppConfig.DefaultString("ebaiStorePageCookieWMSTOKEN", "")
|
// ebaiStorePageCookieWMSTOKEN := beego.AppConfig.DefaultString("ebaiStorePageCookieWMSTOKEN", "")
|
||||||
ebaiStorePageCookieExdTOKEN := beego.AppConfig.DefaultString("ebaiStorePageCookieExdTOKEN", "")
|
// ebaiStorePageCookieExdTOKEN := beego.AppConfig.DefaultString("ebaiStorePageCookieExdTOKEN", "")
|
||||||
if ebaiStorePageCookieWMUSS != "" && ebaiStorePageCookieWMSTOKEN != "" && ebaiStorePageCookieExdTOKEN != "" {
|
// if ebaiStorePageCookieWMUSS != "" && ebaiStorePageCookieWMSTOKEN != "" && ebaiStorePageCookieExdTOKEN != "" {
|
||||||
EbaiAPI.SetCookie("WMUSS", ebaiStorePageCookieWMUSS)
|
// EbaiAPI.SetCookie("WMUSS", ebaiStorePageCookieWMUSS)
|
||||||
EbaiAPI.SetCookie("WMSTOKEN", ebaiStorePageCookieWMSTOKEN)
|
// EbaiAPI.SetCookie("WMSTOKEN", ebaiStorePageCookieWMSTOKEN)
|
||||||
EbaiAPI.SetCookie("PASSPORT_DELIMONT_TOKEN", ebaiStorePageCookieExdTOKEN)
|
// EbaiAPI.SetCookie("PASSPORT_DELIMONT_TOKEN", ebaiStorePageCookieExdTOKEN)
|
||||||
}
|
// }
|
||||||
Ebai2API = ebaiapi.New(beego.AppConfig.String("ebaiSource"), beego.AppConfig.String("ebaiSecret"))
|
Ebai2API = ebaiapi.New(beego.AppConfig.String("ebaiSource"), beego.AppConfig.String("ebaiSecret"))
|
||||||
ebaiStorePageCookieWMUSS2 := beego.AppConfig.DefaultString("ebaiStorePageCookieWMUSS2", "")
|
// ebaiStorePageCookieWMUSS2 := beego.AppConfig.DefaultString("ebaiStorePageCookieWMUSS2", "")
|
||||||
ebaiStorePageCookieWMSTOKEN2 := beego.AppConfig.DefaultString("ebaiStorePageCookieWMSTOKEN2", "")
|
// ebaiStorePageCookieWMSTOKEN2 := beego.AppConfig.DefaultString("ebaiStorePageCookieWMSTOKEN2", "")
|
||||||
if ebaiStorePageCookieWMUSS2 != "" && ebaiStorePageCookieWMSTOKEN2 != "" && ebaiStorePageCookieExdTOKEN != "" {
|
// if ebaiStorePageCookieWMUSS2 != "" && ebaiStorePageCookieWMSTOKEN2 != "" && ebaiStorePageCookieExdTOKEN != "" {
|
||||||
Ebai2API.SetCookie("WMUSS", ebaiStorePageCookieWMUSS2)
|
// Ebai2API.SetCookie("WMUSS", ebaiStorePageCookieWMUSS2)
|
||||||
Ebai2API.SetCookie("WMSTOKEN", ebaiStorePageCookieWMSTOKEN2)
|
// Ebai2API.SetCookie("WMSTOKEN", ebaiStorePageCookieWMSTOKEN2)
|
||||||
Ebai2API.SetCookie("PASSPORT_DELIMONT_TOKEN", ebaiStorePageCookieExdTOKEN)
|
// Ebai2API.SetCookie("PASSPORT_DELIMONT_TOKEN", ebaiStorePageCookieExdTOKEN)
|
||||||
}
|
// }
|
||||||
} else {
|
} else {
|
||||||
EbaiAPI = nil
|
EbaiAPI = nil
|
||||||
Ebai2API = nil
|
Ebai2API = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if !beego.AppConfig.DefaultBool("disableYb", false) {
|
||||||
|
// YinBaoAPI = yinbaoapi.New(beego.AppConfig.String("yinbaoAppKey"), beego.AppConfig.String("yinbaoAppID"))
|
||||||
|
// } else {
|
||||||
|
// YinBaoAPI = nil
|
||||||
|
// }
|
||||||
|
|
||||||
if !beego.AppConfig.DefaultBool("disableMtps", false) {
|
if !beego.AppConfig.DefaultBool("disableMtps", false) {
|
||||||
MtpsAPI = mtpsapi.New(beego.AppConfig.String("mtpsAppKey"), beego.AppConfig.String("mtpsSecret"))
|
MtpsAPI = mtpsapi.New(beego.AppConfig.String("mtpsAppKey"), beego.AppConfig.String("mtpsSecret"))
|
||||||
if mtpsStoreToken := beego.AppConfig.DefaultString("mtpsStoreToken", ""); mtpsStoreToken != "" {
|
// if mtpsStoreToken := beego.AppConfig.DefaultString("mtpsStoreToken", ""); mtpsStoreToken != "" {
|
||||||
MtpsAPI.SetCookie("token", mtpsStoreToken)
|
// MtpsAPI.SetCookie("token", mtpsStoreToken)
|
||||||
}
|
// }
|
||||||
} else {
|
} else {
|
||||||
MtpsAPI = nil
|
MtpsAPI = nil
|
||||||
}
|
}
|
||||||
@@ -181,6 +201,10 @@ func Init() {
|
|||||||
WxpayAPI = wxpayapi.NewWithCertificate(beego.AppConfig.String("wxpayAppID"), beego.AppConfig.String("wxpayAppKey"), beego.AppConfig.String("wxpayAppMchID"),
|
WxpayAPI = wxpayapi.NewWithCertificate(beego.AppConfig.String("wxpayAppID"), beego.AppConfig.String("wxpayAppKey"), beego.AppConfig.String("wxpayAppMchID"),
|
||||||
"conf/apiclient_cert.pem", "conf/apiclient_key.pem")
|
"conf/apiclient_cert.pem", "conf/apiclient_key.pem")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if globals.TLPayNotifyURL != "" {
|
||||||
|
TLpayAPI = tonglianpayapi.New(beego.AppConfig.String("tonglianPayAppID"), beego.AppConfig.String("tonglianPayKey"), beego.AppConfig.String("tonglianPayCusID"), beego.AppConfig.String("wxpayAppID"))
|
||||||
|
}
|
||||||
AutonaviAPI = autonavi.New(beego.AppConfig.String("autonaviKey"))
|
AutonaviAPI = autonavi.New(beego.AppConfig.String("autonaviKey"))
|
||||||
BaiDuNaviAPI = baidunavi.New(beego.AppConfig.String("baidunaviAK"), beego.AppConfig.String("baidunaviSK"))
|
BaiDuNaviAPI = baidunavi.New(beego.AppConfig.String("baidunaviAK"), beego.AppConfig.String("baidunaviSK"))
|
||||||
QiniuAPI = qbox.NewMac(beego.AppConfig.String("qiniuAK"), beego.AppConfig.String("qiniuSK"))
|
QiniuAPI = qbox.NewMac(beego.AppConfig.String("qiniuAK"), beego.AppConfig.String("qiniuSK"))
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ func Init() {
|
|||||||
orm.RegisterModel(&model.Place{})
|
orm.RegisterModel(&model.Place{})
|
||||||
orm.RegisterModel(&model.Store{}, &model.StoreSub{}, &model.StoreMap{}, &model.StoreCourierMap{})
|
orm.RegisterModel(&model.Store{}, &model.StoreSub{}, &model.StoreMap{}, &model.StoreCourierMap{})
|
||||||
orm.RegisterModel(&model.SkuVendorCategory{}, &model.StoreSkuCategoryMap{}, &model.SkuName{}, &model.Sku{}, &model.SkuNamePlaceBind{}, &model.StoreSkuBind{})
|
orm.RegisterModel(&model.SkuVendorCategory{}, &model.StoreSkuCategoryMap{}, &model.SkuName{}, &model.Sku{}, &model.SkuNamePlaceBind{}, &model.StoreSkuBind{})
|
||||||
|
orm.RegisterModel(&model.StoreSkuBindHistory{})
|
||||||
orm.RegisterModel(&model.SkuCategory{})
|
orm.RegisterModel(&model.SkuCategory{})
|
||||||
orm.RegisterModel(&model.ThingMap{})
|
orm.RegisterModel(&model.ThingMap{})
|
||||||
|
|
||||||
|
|||||||
@@ -32,10 +32,11 @@ var (
|
|||||||
BackstageHost string
|
BackstageHost string
|
||||||
WxBackstageHost string
|
WxBackstageHost string
|
||||||
|
|
||||||
GetWeixinTokenURL string
|
GetWeixinTokenURL string
|
||||||
GetWeixinTokenKey string
|
GetWeixin2TokenURL string
|
||||||
GetYLYTokenURL string
|
GetWeixinTokenKey string
|
||||||
GetWeimobTokenURL string
|
GetYLYTokenURL string
|
||||||
|
GetWeimobTokenURL string
|
||||||
|
|
||||||
StoreName string
|
StoreName string
|
||||||
StoreNameMtwm string
|
StoreNameMtwm string
|
||||||
@@ -50,6 +51,7 @@ var (
|
|||||||
DisableWXAuth1 bool
|
DisableWXAuth1 bool
|
||||||
|
|
||||||
WxpayNotifyURL string
|
WxpayNotifyURL string
|
||||||
|
TLPayNotifyURL string
|
||||||
|
|
||||||
JdOrgCode string
|
JdOrgCode string
|
||||||
Jd2OrgCode string
|
Jd2OrgCode string
|
||||||
@@ -99,6 +101,7 @@ func Init() {
|
|||||||
WxBackstageHost = beego.AppConfig.DefaultString("wxBackstageHost", "")
|
WxBackstageHost = beego.AppConfig.DefaultString("wxBackstageHost", "")
|
||||||
|
|
||||||
GetWeixinTokenURL = beego.AppConfig.DefaultString("getWeixinTokenURL", "")
|
GetWeixinTokenURL = beego.AppConfig.DefaultString("getWeixinTokenURL", "")
|
||||||
|
GetWeixin2TokenURL = beego.AppConfig.DefaultString("getWeixin2TokenURL", "")
|
||||||
GetYLYTokenURL = beego.AppConfig.DefaultString("getYLYTokenURL", "")
|
GetYLYTokenURL = beego.AppConfig.DefaultString("getYLYTokenURL", "")
|
||||||
GetWeimobTokenURL = beego.AppConfig.DefaultString("getWeimobTokenURL", "")
|
GetWeimobTokenURL = beego.AppConfig.DefaultString("getWeimobTokenURL", "")
|
||||||
GetWeixinTokenKey = beego.AppConfig.DefaultString("getWeixinTokenKey", "")
|
GetWeixinTokenKey = beego.AppConfig.DefaultString("getWeixinTokenKey", "")
|
||||||
@@ -116,6 +119,7 @@ func Init() {
|
|||||||
DisableWXAuth1 = true
|
DisableWXAuth1 = true
|
||||||
|
|
||||||
WxpayNotifyURL = beego.AppConfig.DefaultString("wxpayNotifyURL", "")
|
WxpayNotifyURL = beego.AppConfig.DefaultString("wxpayNotifyURL", "")
|
||||||
|
TLPayNotifyURL = beego.AppConfig.DefaultString("tonglianPayNotifyURL", "")
|
||||||
JdOrgCode = beego.AppConfig.DefaultString("jdOrgCode", "")
|
JdOrgCode = beego.AppConfig.DefaultString("jdOrgCode", "")
|
||||||
Jd2OrgCode = beego.AppConfig.DefaultString("jd2OrgCode", "")
|
Jd2OrgCode = beego.AppConfig.DefaultString("jd2OrgCode", "")
|
||||||
|
|
||||||
|
|||||||
8
main.go
8
main.go
@@ -126,10 +126,14 @@ func main() {
|
|||||||
globals.SugarLogger.Errorf("RefreshWeixinToken failed with error:%s", err)
|
globals.SugarLogger.Errorf("RefreshWeixinToken failed with error:%s", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err := tasks.RefreshWeimobToken(); err != nil {
|
if err := tasks.RefreshWeixin2Token(); err != nil {
|
||||||
globals.SugarLogger.Errorf("RefreshWeimobToken failed with error:%s", err)
|
globals.SugarLogger.Errorf("RefreshWeixin2Token failed with error:%s", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// if err := tasks.RefreshWeimobToken(); err != nil {
|
||||||
|
// globals.SugarLogger.Errorf("RefreshWeimobToken failed with error:%s", err)
|
||||||
|
// return
|
||||||
|
// }
|
||||||
if err := tasks.RefreshYilianyunToken(); err != nil {
|
if err := tasks.RefreshYilianyunToken(); err != nil {
|
||||||
globals.SugarLogger.Errorf("RefreshYilianyunToken failed with error:%s", err)
|
globals.SugarLogger.Errorf("RefreshYilianyunToken failed with error:%s", err)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -421,6 +421,15 @@ func init() {
|
|||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:EventController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:EventController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetWeixinUnlimited",
|
||||||
|
Router: `/GetWeixinUnlimited`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:FinancialController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:FinancialController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:FinancialController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:FinancialController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "GetOrdersFinancial",
|
Method: "GetOrdersFinancial",
|
||||||
@@ -646,6 +655,15 @@ func init() {
|
|||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetMatterOrderStatus",
|
||||||
|
Router: `/GetMatterOrderStatus`,
|
||||||
|
AllowHTTPMethods: []string{"get"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "GetMyOrderCountInfo",
|
Method: "GetMyOrderCountInfo",
|
||||||
@@ -691,6 +709,24 @@ func init() {
|
|||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "RefreshAllMatterOrderStatus",
|
||||||
|
Router: `/RefreshAllMatterOrderStatus`,
|
||||||
|
AllowHTTPMethods: []string{"put"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "SendFailedMatterOrder",
|
||||||
|
Router: `/SendFailedMatterOrder`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxShopController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxShopController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxShopController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxShopController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "JxMsg",
|
Method: "JxMsg",
|
||||||
@@ -954,6 +990,15 @@ func init() {
|
|||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetMatterStoreOrderCount",
|
||||||
|
Router: `/GetMatterStoreOrderCount`,
|
||||||
|
AllowHTTPMethods: []string{"get"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "GetOrderInfo",
|
Method: "GetOrderInfo",
|
||||||
@@ -1485,6 +1530,15 @@ func init() {
|
|||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "DeletePrinterSeq",
|
||||||
|
Router: `/DeletePrinterSeq`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "DeleteStore",
|
Method: "DeleteStore",
|
||||||
@@ -1755,6 +1809,15 @@ func init() {
|
|||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "BackUpStoreSkuBind",
|
||||||
|
Router: `/BackUpStoreSkuBind`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "CopyStoreSkus",
|
Method: "CopyStoreSkus",
|
||||||
@@ -1908,6 +1971,24 @@ func init() {
|
|||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "RefreshJxPriceByVendor2",
|
||||||
|
Router: `/RefreshJxPriceByVendor2`,
|
||||||
|
AllowHTTPMethods: []string{"put"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "RefreshMatterStock",
|
||||||
|
Router: `/RefreshMatterStock`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "RefreshStoresSkuByVendor",
|
Method: "RefreshStoresSkuByVendor",
|
||||||
@@ -1917,6 +1998,15 @@ func init() {
|
|||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "ReturnStoreSkuBind",
|
||||||
|
Router: `/ReturnStoreSkuBind`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "SendSeckillSkusCountMsg",
|
Method: "SendSeckillSkusCountMsg",
|
||||||
@@ -2124,6 +2214,15 @@ func init() {
|
|||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SysController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SysController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetWX2Token",
|
||||||
|
Router: `/GetWX2Token`,
|
||||||
|
AllowHTTPMethods: []string{"get"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SysController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SysController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SysController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SysController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "GetWXToken",
|
Method: "GetWXToken",
|
||||||
@@ -2358,6 +2457,15 @@ func init() {
|
|||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:User2Controller"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:User2Controller"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetMyJxStoreList",
|
||||||
|
Router: `/GetMyJxStoreList`,
|
||||||
|
AllowHTTPMethods: []string{"get"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:User2Controller"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:User2Controller"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:User2Controller"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:User2Controller"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "GetMyStoreList",
|
Method: "GetMyStoreList",
|
||||||
|
|||||||
@@ -155,6 +155,8 @@ func init() {
|
|||||||
beego.AutoRouter(&controllers.DingDingController{})
|
beego.AutoRouter(&controllers.DingDingController{})
|
||||||
beego.AutoRouter(&controllers.WXPayController{})
|
beego.AutoRouter(&controllers.WXPayController{})
|
||||||
beego.AutoRouter(&controllers.Djsw2Controller{})
|
beego.AutoRouter(&controllers.Djsw2Controller{})
|
||||||
|
beego.AutoRouter(&controllers.TongLianController{})
|
||||||
|
beego.AutoRouter(&controllers.EclpController{})
|
||||||
|
|
||||||
// 如下都是用于检测存活的空接口
|
// 如下都是用于检测存活的空接口
|
||||||
beego.Any("/", func(ctx *beecontext.Context) {
|
beego.Any("/", func(ctx *beecontext.Context) {
|
||||||
|
|||||||
Reference in New Issue
Block a user