Merge remote-tracking branch 'origin/mark' into su
This commit is contained in:
@@ -38,7 +38,7 @@ func (c *OrderManager) OnAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *mode
|
|||||||
|
|
||||||
func (c *OrderManager) onAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *model.OrderStatus, isAdjust bool) (err error) {
|
func (c *OrderManager) onAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *model.OrderStatus, isAdjust bool) (err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
// globals.SugarLogger.Debugf("onAfsOrderNew1 afsOrder:%s", utils.Format4Output(afsOrder, true))
|
globals.SugarLogger.Debugf("onAfsOrderNew1 orderID:%s", afsOrder.VendorOrderID)
|
||||||
c.setAfsOrderID(db, orderStatus)
|
c.setAfsOrderID(db, orderStatus)
|
||||||
if afsOrder.AfsOrderID == "" {
|
if afsOrder.AfsOrderID == "" {
|
||||||
afsOrder.AfsOrderID = orderStatus.VendorOrderID
|
afsOrder.AfsOrderID = orderStatus.VendorOrderID
|
||||||
@@ -49,7 +49,7 @@ func (c *OrderManager) onAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *mode
|
|||||||
if afsOrder.Status == model.OrderStatusUnknown {
|
if afsOrder.Status == model.OrderStatusUnknown {
|
||||||
afsOrder.Status = orderStatus.Status
|
afsOrder.Status = orderStatus.Status
|
||||||
}
|
}
|
||||||
// globals.SugarLogger.Debugf("onAfsOrderNew2 afsOrder:%s", utils.Format4Output(afsOrder, true))
|
globals.SugarLogger.Debugf("onAfsOrderNew2 orderID:%s", afsOrder.VendorOrderID)
|
||||||
dao.Begin(db)
|
dao.Begin(db)
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil || err != nil {
|
if r := recover(); r != nil || err != nil {
|
||||||
@@ -374,3 +374,44 @@ func composeAfsOrderID(vendorOrderID string, index int) (afsOrderID string) {
|
|||||||
utils.Int2Str(index),
|
utils.Int2Str(index),
|
||||||
}, "-")
|
}, "-")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *OrderManager) CreateAfsOrderFromOrder(vendorOrderID string, vendorID int) (afsOrder *model.AfsOrder, err error) {
|
||||||
|
order, err := c.LoadOrder(vendorOrderID, vendorID)
|
||||||
|
// globals.SugarLogger.Debug(utils.Format4Output(order, false))
|
||||||
|
if err == nil {
|
||||||
|
afsOrder = &model.AfsOrder{
|
||||||
|
VendorID: vendorID,
|
||||||
|
VendorOrderID: vendorOrderID,
|
||||||
|
JxStoreID: order.JxStoreID,
|
||||||
|
VendorStoreID: order.VendorStoreID,
|
||||||
|
StoreID: order.StoreID,
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
globals.SugarLogger.Warnf("CreateAfsOrderFromOrder, orderID:%s is not found from partner.CurOrderManager.LoadOrder", vendorOrderID)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, sku := range order.Skus {
|
||||||
|
orderSkuFinancial := &model.OrderSkuFinancial{
|
||||||
|
VendorID: sku.VendorID,
|
||||||
|
VendorOrderID: sku.VendorOrderID,
|
||||||
|
// OrderFinancialID: sku.VendorOrderID,
|
||||||
|
// ConfirmTime: afsOrder.AfsCreateAt,
|
||||||
|
VendorStoreID: afsOrder.VendorStoreID,
|
||||||
|
StoreID: afsOrder.StoreID,
|
||||||
|
JxStoreID: afsOrder.JxStoreID,
|
||||||
|
VendorSkuID: sku.VendorSkuID,
|
||||||
|
SkuID: sku.SkuID,
|
||||||
|
PromotionType: sku.PromotionType,
|
||||||
|
Name: sku.SkuName,
|
||||||
|
ShopPrice: sku.ShopPrice,
|
||||||
|
SalePrice: sku.SalePrice,
|
||||||
|
Count: sku.Count,
|
||||||
|
// UserMoney: sku.UserMoney,
|
||||||
|
// PmSubsidyMoney: sku.PmSubsidyMoney,
|
||||||
|
IsAfsOrder: 1,
|
||||||
|
}
|
||||||
|
afsOrder.Skus = append(afsOrder.Skus, orderSkuFinancial)
|
||||||
|
}
|
||||||
|
return afsOrder, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -227,223 +227,9 @@ func (c *OrderManager) ExportMTWaybills(ctx *jxcontext.Context, fromDateStr, toD
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *OrderManager) getOrders(ctx *jxcontext.Context, isIncludeSku, isIncludeFake bool, fromDateStr, toDateStr string, isDateFinish bool, skuIDs []int, isJxFirst bool, params map[string]interface{}, offset, pageSize int) (orders []*model.GoodsOrderExt, totalCount int, err error) {
|
|
||||||
globals.SugarLogger.Debugf("getOrders from:%s to:%s", fromDateStr, toDateStr)
|
|
||||||
isPurchase, _ := params["isPurchase"].(bool)
|
|
||||||
userID := ""
|
|
||||||
if !isPurchase {
|
|
||||||
if user := ctx.GetFullUser(); user != nil {
|
|
||||||
userID = user.GetID()
|
|
||||||
if user.Type&model.UserTypeNonConsumer == 0 {
|
|
||||||
isPurchase = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pageSize = jxutils.FormalizePageSize(pageSize)
|
|
||||||
if offset < 0 {
|
|
||||||
offset = 0
|
|
||||||
}
|
|
||||||
sql := fmt.Sprintf(`
|
|
||||||
SELECT SQL_CALC_FOUND_ROWS t1.*,
|
|
||||||
CAST(IF(t1.earning_price <> 0, t1.earning_price, IF(t1.shop_price <> 0 && t1.shop_price < t1.sale_price, t1.shop_price, t1.sale_price) * IF(t5.pay_percentage > 0, t5.pay_percentage, %d) / 100) AS SIGNED) earning_price,
|
|
||||||
t2.status waybill_status, t2.courier_name, t2.courier_mobile,
|
|
||||||
t2.actual_fee, t2.desired_fee, t2.waybill_created_at, t2.waybill_finished_at`, model.DefaultEarningPricePercentage)
|
|
||||||
if isIncludeSku {
|
|
||||||
sql += `,
|
|
||||||
IF(t3.jx_sku_id > 0, t3.jx_sku_id, t3.sku_id) sku_id,
|
|
||||||
t3.count sku_count2,
|
|
||||||
t3.shop_price sku_shop_price,
|
|
||||||
t3.earning_price sku_earning_price,
|
|
||||||
t3.sale_price sku_sale_price`
|
|
||||||
}
|
|
||||||
sql += `
|
|
||||||
FROM goods_order t1
|
|
||||||
LEFT JOIN waybill t2 ON t1.vendor_waybill_id = t2.vendor_waybill_id AND t1.waybill_vendor_id = t2.waybill_vendor_id
|
|
||||||
LEFT JOIN store t5 ON t5.id = IF(t1.jx_store_id <> 0, t1.jx_store_id, t1.store_id)`
|
|
||||||
if isIncludeSku {
|
|
||||||
sql += `
|
|
||||||
JOIN order_sku t3 ON t3.vendor_order_id = t1.vendor_order_id AND t3.vendor_id = t1.vendor_id`
|
|
||||||
}
|
|
||||||
var (
|
|
||||||
sqlWhere string
|
|
||||||
sqlParams []interface{}
|
|
||||||
)
|
|
||||||
// 如果搜索关键字可能为订单号,则当成订单号查询
|
|
||||||
if params["keyword"] != nil {
|
|
||||||
if jxutils.GetPossibleVendorIDFromVendorOrderID(params["keyword"].(string)) > model.VendorIDUnknown {
|
|
||||||
params["vendorOrderID"] = params["keyword"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if params["orderID"] != nil || params["vendorOrderID"] != nil {
|
|
||||||
sqlWhere = " WHERE (t1.vendor_order_id = ? OR t1.vendor_order_id2 = ?)"
|
|
||||||
vendorOrderID := params["vendorOrderID"]
|
|
||||||
if vendorOrderID == nil {
|
|
||||||
vendorOrderID = params["orderID"]
|
|
||||||
}
|
|
||||||
sqlParams = []interface{}{
|
|
||||||
vendorOrderID,
|
|
||||||
vendorOrderID,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
timeList, err2 := jxutils.BatchStr2Time(fromDateStr, toDateStr)
|
|
||||||
if err = err2; err != nil {
|
|
||||||
return nil, 0, err
|
|
||||||
}
|
|
||||||
if utils.IsTimeZero(timeList[0]) {
|
|
||||||
return nil, 0, fmt.Errorf("在没有指定订单号时,必须指定查询日期范围")
|
|
||||||
}
|
|
||||||
if utils.IsTimeZero(timeList[1]) {
|
|
||||||
timeList[1] = timeList[0]
|
|
||||||
}
|
|
||||||
timeList[1] = timeList[1].Add(24 * time.Hour)
|
|
||||||
if isDateFinish {
|
|
||||||
sqlWhere = `
|
|
||||||
WHERE t1.order_finished_at >= ? AND t1.order_finished_at < ?`
|
|
||||||
} else {
|
|
||||||
sqlWhere = `
|
|
||||||
WHERE t1.order_created_at >= ? AND t1.order_created_at < ?`
|
|
||||||
}
|
|
||||||
sqlParams = []interface{}{
|
|
||||||
timeList[0],
|
|
||||||
timeList[1],
|
|
||||||
}
|
|
||||||
if params["keyword"] != nil {
|
|
||||||
keyword := params["keyword"].(string)
|
|
||||||
keywordLike := "%" + keyword + "%"
|
|
||||||
sqlWhere += `
|
|
||||||
AND (t1.store_name LIKE ? OR t1.vendor_order_id LIKE ? OR t1.vendor_order_id2 LIKE ? OR t1.vendor_store_id LIKE ?
|
|
||||||
OR t1.consignee_name LIKE ? OR t1.consignee_mobile LIKE ? OR t1.consignee_mobile2 LIKE ? OR t1.consignee_address LIKE ?
|
|
||||||
OR t2.vendor_waybill_id LIKE ? OR t2.courier_name LIKE ? OR t2.courier_mobile LIKE ?
|
|
||||||
`
|
|
||||||
sqlParams = append(sqlParams, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike)
|
|
||||||
if keywordInt64, err2 := strconv.ParseInt(keyword, 10, 64); err2 == nil {
|
|
||||||
sqlWhere += " OR t1.store_id = ? OR t1.jx_store_id = ?"
|
|
||||||
sqlParams = append(sqlParams, keywordInt64, keywordInt64)
|
|
||||||
}
|
|
||||||
sqlWhere += ")"
|
|
||||||
}
|
|
||||||
if params["waybillVendorIDs"] != nil {
|
|
||||||
var waybillVendorIDs []int
|
|
||||||
if err = utils.UnmarshalUseNumber([]byte(params["waybillVendorIDs"].(string)), &waybillVendorIDs); err != nil {
|
|
||||||
return nil, 0, err
|
|
||||||
}
|
|
||||||
if len(waybillVendorIDs) > 0 {
|
|
||||||
sqlWhere += " AND t1.waybill_vendor_id IN (" + dao.GenQuestionMarks(len(waybillVendorIDs)) + ")"
|
|
||||||
sqlParams = append(sqlParams, waybillVendorIDs)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if params["storeIDs"] != nil {
|
|
||||||
var storeIDs []int
|
|
||||||
if err = utils.UnmarshalUseNumber([]byte(params["storeIDs"].(string)), &storeIDs); err != nil {
|
|
||||||
return nil, 0, err
|
|
||||||
}
|
|
||||||
if len(storeIDs) > 0 {
|
|
||||||
if storeIDs[0] == 0 { // 容错
|
|
||||||
sqlWhere += " AND 1 = 0"
|
|
||||||
} else {
|
|
||||||
sqlWhere += " AND IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) IN (" + dao.GenQuestionMarks(len(storeIDs)) + ")"
|
|
||||||
sqlParams = append(sqlParams, storeIDs)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if params["statuss"] != nil {
|
|
||||||
var statuss []int
|
|
||||||
if err = utils.UnmarshalUseNumber([]byte(params["statuss"].(string)), &statuss); err != nil {
|
|
||||||
return nil, 0, err
|
|
||||||
}
|
|
||||||
if len(statuss) > 0 {
|
|
||||||
sqlWhere += " AND t1.status IN (" + dao.GenQuestionMarks(len(statuss)) + ")"
|
|
||||||
sqlParams = append(sqlParams, statuss)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if params["lockStatuss"] != nil {
|
|
||||||
var lockStatuss []int
|
|
||||||
if err = utils.UnmarshalUseNumber([]byte(params["lockStatuss"].(string)), &lockStatuss); err != nil {
|
|
||||||
return nil, 0, err
|
|
||||||
}
|
|
||||||
if len(lockStatuss) > 0 {
|
|
||||||
sqlWhere += " AND t1.lock_status IN (" + dao.GenQuestionMarks(len(lockStatuss)) + ")"
|
|
||||||
sqlParams = append(sqlParams, lockStatuss)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if params["cities"] != nil {
|
|
||||||
var cities []int
|
|
||||||
if err = utils.UnmarshalUseNumber([]byte(params["cities"].(string)), &cities); err != nil {
|
|
||||||
return nil, 0, err
|
|
||||||
}
|
|
||||||
if len(cities) > 0 {
|
|
||||||
sqlWhere += " AND t5.city_code IN (" + dao.GenQuestionMarks(len(cities)) + ") AND t5.id IS NOT NULL"
|
|
||||||
sqlParams = append(sqlParams, cities)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !isIncludeFake {
|
|
||||||
sqlWhere += " AND (t1.flag & ?) = 0"
|
|
||||||
sqlParams = append(sqlParams, model.OrderFlagMaskFake)
|
|
||||||
}
|
|
||||||
if len(skuIDs) > 0 {
|
|
||||||
sqlWhere += " AND (SELECT COUNT(*) FROM order_sku t11 WHERE t11.vendor_order_id = t1.vendor_order_id AND t11.vendor_id = t1.vendor_id AND t11.jx_sku_id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")) > 0"
|
|
||||||
sqlParams = append(sqlParams, skuIDs)
|
|
||||||
}
|
|
||||||
if params["adjustCount"] != nil {
|
|
||||||
sqlWhere += " AND t1.adjust_count >= ?"
|
|
||||||
sqlParams = append(sqlParams, params["adjustCount"])
|
|
||||||
}
|
|
||||||
if mustInvoice, ok := params["mustInvoice"].(bool); ok && mustInvoice {
|
|
||||||
sqlWhere += " AND t1.invoice_taxer_id <> ''"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if params["vendorIDs"] != nil {
|
|
||||||
var vendorIDs []int
|
|
||||||
if err = utils.UnmarshalUseNumber([]byte(params["vendorIDs"].(string)), &vendorIDs); err != nil {
|
|
||||||
return nil, 0, err
|
|
||||||
}
|
|
||||||
if len(vendorIDs) > 0 {
|
|
||||||
sqlWhere += " AND t1.vendor_id IN (" + dao.GenQuestionMarks(len(vendorIDs)) + ")"
|
|
||||||
sqlParams = append(sqlParams, vendorIDs)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if isPurchase {
|
|
||||||
sqlWhere += " AND t1.user_id = ?"
|
|
||||||
sqlParams = append(sqlParams, userID)
|
|
||||||
}
|
|
||||||
db := dao.GetDB()
|
|
||||||
sql += sqlWhere
|
|
||||||
if isIncludeSku {
|
|
||||||
sql += `
|
|
||||||
ORDER BY t1.id`
|
|
||||||
} else {
|
|
||||||
if isJxFirst {
|
|
||||||
sql += `
|
|
||||||
ORDER BY IF(t1.status < ?, IF(t1.vendor_id = ?, 0, 1), 0), t1.order_created_at DESC`
|
|
||||||
sqlParams = append(sqlParams, model.OrderStatusEndBegin, model.VendorIDJX)
|
|
||||||
} else {
|
|
||||||
sql += `
|
|
||||||
ORDER BY t1.order_created_at DESC`
|
|
||||||
}
|
|
||||||
sql += `
|
|
||||||
LIMIT ? OFFSET ?`
|
|
||||||
sqlParams = append(sqlParams, pageSize, offset)
|
|
||||||
|
|
||||||
dao.Begin(db)
|
|
||||||
defer func() {
|
|
||||||
if r := recover(); r != nil {
|
|
||||||
dao.Rollback(db)
|
|
||||||
panic(r)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
if err = dao.GetRows(db, &orders, sql, sqlParams...); err == nil {
|
|
||||||
totalCount = dao.GetLastTotalRowCount(db)
|
|
||||||
}
|
|
||||||
if !isIncludeSku {
|
|
||||||
dao.Commit(db)
|
|
||||||
}
|
|
||||||
return orders, totalCount, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *OrderManager) GetOrders(ctx *jxcontext.Context, isIncludeFake bool, fromDateStr, toDateStr string, isDateFinish bool, skuIDs []int, isJxFirst bool, params map[string]interface{}, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
func (c *OrderManager) GetOrders(ctx *jxcontext.Context, isIncludeFake bool, fromDateStr, toDateStr string, isDateFinish bool, skuIDs []int, isJxFirst bool, params map[string]interface{}, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
||||||
globals.SugarLogger.Debugf("GetOrders from:%s to:%s", fromDateStr, toDateStr)
|
globals.SugarLogger.Debugf("GetOrders from:%s to:%s", fromDateStr, toDateStr)
|
||||||
orders, totalCount, err := c.getOrders(ctx, false, isIncludeFake, fromDateStr, toDateStr, isDateFinish, skuIDs, isJxFirst, params, offset, pageSize)
|
orders, totalCount, err := dao.GetOrders(dao.GetDB(), nil, false, isIncludeFake, fromDateStr, toDateStr, isDateFinish, skuIDs, isJxFirst, "", params, offset, pageSize)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
pagedInfo = &model.PagedInfo{
|
pagedInfo = &model.PagedInfo{
|
||||||
TotalCount: totalCount,
|
TotalCount: totalCount,
|
||||||
@@ -456,19 +242,21 @@ func (c *OrderManager) GetOrders(ctx *jxcontext.Context, isIncludeFake bool, fro
|
|||||||
func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateStr string, mapParams map[string]interface{}) (hint string, err error) {
|
func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateStr string, mapParams map[string]interface{}) (hint string, err error) {
|
||||||
globals.SugarLogger.Debugf("ExportOrders from:%s to:%s", fromDateStr, toDateStr)
|
globals.SugarLogger.Debugf("ExportOrders from:%s to:%s", fromDateStr, toDateStr)
|
||||||
var (
|
var (
|
||||||
orders, orders2 []*model.GoodsOrderExt
|
orders []*model.GoodsOrderExt
|
||||||
order *model.GoodsOrderExt
|
afsSkuMap map[string]map[int]*model.OrderSkuFinancial
|
||||||
afsSkuMap map[string]map[int]*model.OrderSkuFinancial
|
excelBin []byte
|
||||||
excelBin []byte
|
|
||||||
)
|
)
|
||||||
task := tasksch.NewSeqTask("导出订单SKU信息", ctx,
|
task := tasksch.NewSeqTask("导出订单SKU信息", ctx,
|
||||||
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
switch step {
|
switch step {
|
||||||
case 0:
|
case 0:
|
||||||
orders, _, err = c.getOrders(ctx, true, true, fromDateStr, toDateStr, true, nil, false, mapParams, 0, -1)
|
orders, _, err = dao.GetOrders(dao.GetDB(), nil, true, true, fromDateStr, toDateStr, true, nil, false, "", mapParams, 0, model.UnlimitedPageSize)
|
||||||
|
globals.SugarLogger.Debugf("orders:%d, er:%v", len(orders), err)
|
||||||
case 1:
|
case 1:
|
||||||
afsSkuMap, err = c.getAfsOrderSkuInfo4ExportOrders(ctx, fromDateStr, toDateStr)
|
afsSkuMap, err = c.getAfsOrderSkuInfo4ExportOrders(ctx, fromDateStr, toDateStr)
|
||||||
case 2:
|
case 2:
|
||||||
|
var order *model.GoodsOrderExt
|
||||||
|
var orders2 []*model.GoodsOrderExt
|
||||||
for _, v := range orders {
|
for _, v := range orders {
|
||||||
if afsInfo := afsSkuMap[jxutils.ComposeUniversalOrderID(v.VendorOrderID, v.VendorID)]; afsInfo != nil {
|
if afsInfo := afsSkuMap[jxutils.ComposeUniversalOrderID(v.VendorOrderID, v.VendorID)]; afsInfo != nil {
|
||||||
if afsInfo[v.SkuID] != nil && afsInfo[v.SkuID].Count > 0 {
|
if afsInfo[v.SkuID] != nil && afsInfo[v.SkuID].Count > 0 {
|
||||||
@@ -499,10 +287,11 @@ func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
orders = orders2
|
||||||
case 3:
|
case 3:
|
||||||
excelConf := &excel.Obj2ExcelSheetConfig{
|
excelConf := &excel.Obj2ExcelSheetConfig{
|
||||||
Title: "订单导出",
|
Title: "订单导出",
|
||||||
Data: orders2,
|
Data: orders,
|
||||||
CaptionList: []string{
|
CaptionList: []string{
|
||||||
"vendorOrderID",
|
"vendorOrderID",
|
||||||
"vendorOrderID2",
|
"vendorOrderID2",
|
||||||
@@ -581,9 +370,7 @@ func (c *OrderManager) GetWaybills(ctx *jxcontext.Context, fromDateStr, toDateSt
|
|||||||
}
|
}
|
||||||
toDate = toDate.Add(24 * time.Hour)
|
toDate = toDate.Add(24 * time.Hour)
|
||||||
pageSize = jxutils.FormalizePageSize(pageSize)
|
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||||
if offset < 0 {
|
offset = jxutils.FormalizePageOffset(offset)
|
||||||
offset = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
sql := `
|
sql := `
|
||||||
SELECT SQL_CALC_FOUND_ROWS t1.*, t2.store_name, IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) store_id
|
SELECT SQL_CALC_FOUND_ROWS t1.*, t2.store_name, IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) store_id
|
||||||
@@ -680,9 +467,7 @@ func (c *OrderManager) GetOrderStatusList(ctx *jxcontext.Context, vendorOrderID
|
|||||||
func (c *OrderManager) GetOrdersFinancial(ctx *jxcontext.Context, fromDateStr, toDateStr string, params map[string]interface{}, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
func (c *OrderManager) GetOrdersFinancial(ctx *jxcontext.Context, fromDateStr, toDateStr string, params map[string]interface{}, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
||||||
globals.SugarLogger.Debugf("GetOrdersFinancial from:%s to:%s", fromDateStr, toDateStr)
|
globals.SugarLogger.Debugf("GetOrdersFinancial from:%s to:%s", fromDateStr, toDateStr)
|
||||||
pageSize = jxutils.FormalizePageSize(pageSize)
|
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||||
if offset < 0 {
|
offset = jxutils.FormalizePageOffset(offset)
|
||||||
offset = 0
|
|
||||||
}
|
|
||||||
sql := `
|
sql := `
|
||||||
SELECT SQL_CALC_FOUND_ROWS t1.*,
|
SELECT SQL_CALC_FOUND_ROWS t1.*,
|
||||||
t2.store_name,t2.vendor_store_id,t2.store_id,t2.jx_store_id,t2.status,t2.order_finished_at
|
t2.store_name,t2.vendor_store_id,t2.store_id,t2.jx_store_id,t2.status,t2.order_finished_at
|
||||||
@@ -922,9 +707,7 @@ func (c *OrderManager) GetAfsOrders(ctx *jxcontext.Context, keyword, afsOrderID,
|
|||||||
globals.SugarLogger.Debugf("GetAfsOrders")
|
globals.SugarLogger.Debugf("GetAfsOrders")
|
||||||
|
|
||||||
pageSize = jxutils.FormalizePageSize(pageSize)
|
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||||
if offset < 0 {
|
offset = jxutils.FormalizePageOffset(offset)
|
||||||
offset = 0
|
|
||||||
}
|
|
||||||
sql := `
|
sql := `
|
||||||
SELECT SQL_CALC_FOUND_ROWS
|
SELECT SQL_CALC_FOUND_ROWS
|
||||||
t1.*
|
t1.*
|
||||||
@@ -1121,6 +904,10 @@ func (c *OrderManager) AmendMissingOrders(ctx *jxcontext.Context, vendorIDs []in
|
|||||||
toDate = fromDate
|
toDate = fromDate
|
||||||
}
|
}
|
||||||
toDate = utils.Time2Date(toDate)
|
toDate = utils.Time2Date(toDate)
|
||||||
|
curDate := utils.Time2Date(time.Now())
|
||||||
|
if toDate.Sub(curDate) > 0 {
|
||||||
|
toDate = curDate
|
||||||
|
}
|
||||||
if toDate.Sub(fromDate) > 7*24*time.Hour {
|
if toDate.Sub(fromDate) > 7*24*time.Hour {
|
||||||
return "", fmt.Errorf("最多一次一周,请调整时间")
|
return "", fmt.Errorf("最多一次一周,请调整时间")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,6 +35,9 @@ const (
|
|||||||
second2AutoPickupGap = 60 //随机60秒
|
second2AutoPickupGap = 60 //随机60秒
|
||||||
time2AutoPickupAhead = 20 * time.Second // 有最后拣货时间的提前值
|
time2AutoPickupAhead = 20 * time.Second // 有最后拣货时间的提前值
|
||||||
|
|
||||||
|
switch2SelfDeliverRetryGap = 3 * time.Second // 转自送失败尝试的时间间隙
|
||||||
|
switch2SelfDeliverRetryCount = 2 // 转自送失败尝试次数
|
||||||
|
|
||||||
// (把pending order timerout 在-pendingOrderTimerMinMinSecond至pendingOrderTimerMaxSecond映射到pendingOrderTimerMinSecond至pendingOrderTimerMaxSecond)
|
// (把pending order timerout 在-pendingOrderTimerMinMinSecond至pendingOrderTimerMaxSecond映射到pendingOrderTimerMinSecond至pendingOrderTimerMaxSecond)
|
||||||
pendingOrderTimerMinMinSecond = 5 * 60 // 5分钟
|
pendingOrderTimerMinMinSecond = 5 * 60 // 5分钟
|
||||||
pendingOrderTimerMinSecond = 2
|
pendingOrderTimerMinSecond = 2
|
||||||
@@ -296,18 +299,21 @@ func init() {
|
|||||||
ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool {
|
ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool {
|
||||||
// 饿百转自送的时机不太清楚,暂时禁用超时转自送,在饿百运单取消时还是会自动创建
|
// 饿百转自送的时机不太清楚,暂时禁用超时转自送,在饿百运单取消时还是会自动创建
|
||||||
// 非自配送商家使用
|
// 非自配送商家使用
|
||||||
return savedOrderInfo.isDeliveryCompetition &&
|
order := savedOrderInfo.order
|
||||||
model.IsOrderDeliveryByPlatform(savedOrderInfo.order) &&
|
return order.VendorID != model.VendorIDEBAI &&
|
||||||
savedOrderInfo.order.VendorID == bill.WaybillVendorID &&
|
order.VendorID == bill.WaybillVendorID &&
|
||||||
savedOrderInfo.order.VendorID != model.VendorIDEBAI &&
|
savedOrderInfo.isDeliveryCompetition &&
|
||||||
savedOrderInfo.order.DeliveryType != model.OrderDeliveryTypeSelfTake
|
model.IsOrderDeliveryByPlatform(order) &&
|
||||||
|
order.DeliveryType != model.OrderDeliveryTypeSelfTake &&
|
||||||
|
isOrderCanSwitch2SelfDeliver(order) &&
|
||||||
|
(order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
//*
|
//*
|
||||||
model.WaybillStatusCanceled: &StatusActionConfig{
|
model.WaybillStatusCanceled: &StatusActionConfig{
|
||||||
StatusActionParams: partner.StatusActionParams{
|
StatusActionParams: partner.StatusActionParams{
|
||||||
TimerType: partner.TimerTypeBaseNow,
|
TimerType: partner.TimerTypeBaseNow,
|
||||||
Timeout: 5 * time.Second,
|
Timeout: 1 * time.Second,
|
||||||
},
|
},
|
||||||
TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
|
TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
|
||||||
return sch.createWaybillOn3rdProviders(savedOrderInfo, ebaiCancelWaybillMaxFee, nil)
|
return sch.createWaybillOn3rdProviders(savedOrderInfo, ebaiCancelWaybillMaxFee, nil)
|
||||||
@@ -315,12 +321,13 @@ func init() {
|
|||||||
ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool {
|
ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool {
|
||||||
order := savedOrderInfo.order
|
order := savedOrderInfo.order
|
||||||
// 非自配送商家使用
|
// 非自配送商家使用
|
||||||
return (order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) &&
|
return order.VendorID == model.VendorIDEBAI &&
|
||||||
|
order.VendorID == bill.WaybillVendorID &&
|
||||||
savedOrderInfo.isDeliveryCompetition &&
|
savedOrderInfo.isDeliveryCompetition &&
|
||||||
savedOrderInfo.order.VendorID == bill.WaybillVendorID &&
|
model.IsOrderDeliveryByPlatform(order) &&
|
||||||
model.IsOrderDeliveryByPlatform(savedOrderInfo.order) &&
|
order.DeliveryType != model.OrderDeliveryTypeSelfTake &&
|
||||||
order.VendorID == model.VendorIDEBAI &&
|
isOrderCanSwitch2SelfDeliver(order) &&
|
||||||
savedOrderInfo.order.DeliveryType != model.OrderDeliveryTypeSelfTake
|
(order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
//*/
|
//*/
|
||||||
@@ -511,7 +518,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
|||||||
}
|
}
|
||||||
s.notify3rdPartyWaybill(order, bill, isBillAlreadyCandidate)
|
s.notify3rdPartyWaybill(order, bill, isBillAlreadyCandidate)
|
||||||
} else {
|
} else {
|
||||||
s.swtich2SelfDeliverWithRetry(savedOrderInfo, bill, 2, 10*time.Second)
|
s.swtich2SelfDeliverWithRetry(savedOrderInfo, bill, switch2SelfDeliverRetryCount, switch2SelfDeliverRetryGap)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if !s.isBillCandidate(order, bill) && bill.WaybillVendorID != order.VendorID {
|
} else if !s.isBillCandidate(order, bill) && bill.WaybillVendorID != order.VendorID {
|
||||||
@@ -1276,3 +1283,11 @@ func (s *DefScheduler) notify3rdPartyWaybill(order *model.GoodsOrder, bill *mode
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func isOrderCanSwitch2SelfDeliver(order *model.GoodsOrder) (isCan bool) {
|
||||||
|
isCan = true
|
||||||
|
if handler := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID); handler != nil {
|
||||||
|
isCan, _ = handler.CanSwitch2SelfDeliver(order)
|
||||||
|
}
|
||||||
|
return isCan
|
||||||
|
}
|
||||||
|
|||||||
@@ -952,32 +952,36 @@ func ForceUpdateVendorPrice(ctx *jxcontext.Context, vendorID int, actType int, s
|
|||||||
}
|
}
|
||||||
storeSkuBind.DeletedAt = utils.DefaultTimeValue
|
storeSkuBind.DeletedAt = utils.DefaultTimeValue
|
||||||
if err = dao.GetEntity(db, storeSkuBind, model.FieldStoreID, model.FieldSkuID, model.FieldDeletedAt); err == nil {
|
if err = dao.GetEntity(db, storeSkuBind, model.FieldStoreID, model.FieldSkuID, model.FieldDeletedAt); err == nil {
|
||||||
if v.VendorPrice != 0 {
|
vendorPrice := int(v.VendorPrice)
|
||||||
if err2 := checkDiscountValidation(actType, float64(v.ActualActPrice)*100/float64(v.VendorPrice)); err2 != nil {
|
if vendorPrice != 0 {
|
||||||
|
if err2 := checkDiscountValidation(actType, float64(v.ActPrice)*100/float64(v.VendorPrice)); err2 != nil {
|
||||||
v.ErrMsg = err2.Error()
|
v.ErrMsg = err2.Error()
|
||||||
|
v.ActualActPrice = v.ActPrice
|
||||||
wrongSkuList = append(wrongSkuList, v)
|
wrongSkuList = append(wrongSkuList, v)
|
||||||
storeSkuBind = nil
|
storeSkuBind = nil
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
vendorPrice := dao.GetStoreSkuBindVendorPrice(storeSkuBind, vendorID)
|
vendorPrice = dao.GetStoreSkuBindVendorPrice(storeSkuBind, vendorID)
|
||||||
if checkDiscountValidation(actType, float64(v.ActualActPrice)*100/float64(vendorPrice)) != nil {
|
if checkDiscountValidation(actType, float64(v.ActPrice)*100/float64(vendorPrice)) != nil {
|
||||||
if actType == model.ActSkuSecKill {
|
if actType == model.ActSkuSecKill {
|
||||||
vendorPrice = int(v.ActualActPrice)*100/maxDiscount4SkuSecKill + 10
|
vendorPrice = int(v.ActPrice)*100/maxDiscount4SkuSecKill + 10
|
||||||
} else if actType == model.ActSkuDirectDown {
|
} else if actType == model.ActSkuDirectDown {
|
||||||
vendorPrice = int(v.ActualActPrice) + 10
|
vendorPrice = int(v.ActPrice) + 10
|
||||||
}
|
}
|
||||||
dao.SetStoreSkuBindVendorPrice(storeSkuBind, vendorID, vendorPrice)
|
} else {
|
||||||
if vendorID != model.VendorIDJX {
|
storeSkuBind = nil
|
||||||
dao.SetStoreSkuBindSyncStatus(storeSkuBind, vendorID, dao.GetStoreSkuBindSyncStatus(storeSkuBind, vendorID)|model.SyncFlagPriceMask)
|
|
||||||
}
|
|
||||||
storeSkuBind.LastOperator = ctx.GetUserName()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if storeSkuBind != nil {
|
if storeSkuBind != nil {
|
||||||
|
dao.SetStoreSkuBindVendorPrice(storeSkuBind, vendorID, vendorPrice)
|
||||||
|
if vendorID != model.VendorIDJX {
|
||||||
|
dao.SetStoreSkuBindSyncStatus(storeSkuBind, vendorID, dao.GetStoreSkuBindSyncStatus(storeSkuBind, vendorID)|model.SyncFlagPriceMask)
|
||||||
|
}
|
||||||
|
storeSkuBind.LastOperator = ctx.GetUserName()
|
||||||
storeSkuBindList = append(storeSkuBindList, storeSkuBind)
|
storeSkuBindList = append(storeSkuBindList, storeSkuBind)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errList.AddErr(err)
|
errList.AddErr(fmt.Errorf("获取门店:%d商品:%d出错:%s", v.StoreID, v.SkuID, err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err = errList.GetErrListAsOne(); err != nil {
|
if err = errList.GetErrListAsOne(); err != nil {
|
||||||
|
|||||||
@@ -192,16 +192,18 @@ func TestSyncAct(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestForceUpdateVendorPrice(t *testing.T) {
|
func TestForceUpdateVendorPrice(t *testing.T) {
|
||||||
_, err := ForceUpdateVendorPrice(jxcontext.AdminCtx, model.VendorIDJD, model.ActSkuDirectDown, []*ActStoreSkuParam{
|
hint, err := ForceUpdateVendorPrice(jxcontext.AdminCtx, model.VendorIDJD, model.ActSkuDirectDown, []*ActStoreSkuParam{
|
||||||
&ActStoreSkuParam{
|
&ActStoreSkuParam{
|
||||||
ActStoreSku: model.ActStoreSku{
|
ActStoreSku: model.ActStoreSku{
|
||||||
StoreID: 100118,
|
StoreID: 100118,
|
||||||
SkuID: 22509,
|
SkuID: 22509,
|
||||||
|
ActPrice: 9900,
|
||||||
},
|
},
|
||||||
ActualActPrice: 9900,
|
VendorPrice: 19900,
|
||||||
},
|
},
|
||||||
}, false)
|
}, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
t.Log(hint)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1207,9 +1207,7 @@ func TmpGetJxBadCommentsByStoreId(ctx *jxcontext.Context, keyword string, storeI
|
|||||||
}
|
}
|
||||||
sql += " ORDER BY t1.createtime DESC"
|
sql += " ORDER BY t1.createtime DESC"
|
||||||
pageSize = jxutils.FormalizePageSize(pageSize)
|
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||||
if offset < 0 {
|
offset = jxutils.FormalizePageOffset(offset)
|
||||||
offset = 0
|
|
||||||
}
|
|
||||||
sql += " LIMIT ? OFFSET ?"
|
sql += " LIMIT ? OFFSET ?"
|
||||||
sqlParams = append(sqlParams, pageSize, offset)
|
sqlParams = append(sqlParams, pageSize, offset)
|
||||||
var commentList []*JxBadCommentsExt
|
var commentList []*JxBadCommentsExt
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ func GetStoreSkus(ctx *jxcontext.Context, storeID int, skuIDs []int, isFocus boo
|
|||||||
return GetStoresSkus(ctx, []int{storeID}, skuIDs, isFocus, keyword, isBySku, isAct, params, offset, pageSize)
|
return GetStoresSkus(ctx, []int{storeID}, skuIDs, isFocus, keyword, isBySku, isAct, params, offset, pageSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool, keyword string, isBySku, isAct bool, params map[string]interface{}) (sql string, sqlParams []interface{}, err error) {
|
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) {
|
||||||
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 = ?*/
|
||||||
@@ -227,6 +227,10 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool
|
|||||||
time.Now(),
|
time.Now(),
|
||||||
time.Now(),
|
time.Now(),
|
||||||
})
|
})
|
||||||
|
if actVendorID >= 0 {
|
||||||
|
sql += " AND t1.vendor_mask & ? <> 0"
|
||||||
|
sqlParams = append(sqlParams, model.GetVendorMask(actVendorID))
|
||||||
|
}
|
||||||
if len(storeIDs) > 0 {
|
if len(storeIDs) > 0 {
|
||||||
sql += " AND t2.store_id IN (" + dao.GenQuestionMarks(len(storeIDs)) + ")"
|
sql += " AND t2.store_id IN (" + dao.GenQuestionMarks(len(storeIDs)) + ")"
|
||||||
sqlParams = append(sqlParams, storeIDs)
|
sqlParams = append(sqlParams, storeIDs)
|
||||||
@@ -380,8 +384,12 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bo
|
|||||||
if len(storeIDs) == 0 && len(skuIDs) == 0 && pageSize == -1 {
|
if len(storeIDs) == 0 && len(skuIDs) == 0 && pageSize == -1 {
|
||||||
return nil, fmt.Errorf("GetStoresSkus必须指定storeIDs或skuIDs或分页")
|
return nil, fmt.Errorf("GetStoresSkus必须指定storeIDs或skuIDs或分页")
|
||||||
}
|
}
|
||||||
|
actVendorID := -1
|
||||||
|
if params["actVendorID"] != nil {
|
||||||
|
actVendorID = int(utils.Interface2Int64WithDefault(params["actVendorID"], -1))
|
||||||
|
}
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
sql, sqlParams, err := getGetStoresSkusBaseSQL(db, storeIDs, skuIDs, isFocus, keyword, isBySku, isAct, params)
|
sql, sqlParams, err := getGetStoresSkusBaseSQL(db, storeIDs, skuIDs, isFocus, keyword, isBySku, isAct, actVendorID, params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -499,10 +507,6 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bo
|
|||||||
if true { //!(offset == 0 && pageSize == model.UnlimitedPageSize) {
|
if true { //!(offset == 0 && pageSize == model.UnlimitedPageSize) {
|
||||||
storeIDs, skuIDs = GetStoreAndSkuIDsFromInfo(skuNamesInfo)
|
storeIDs, skuIDs = GetStoreAndSkuIDsFromInfo(skuNamesInfo)
|
||||||
}
|
}
|
||||||
actVendorID := -1
|
|
||||||
if params["actVendorID"] != nil {
|
|
||||||
actVendorID = int(utils.Interface2Int64WithDefault(params["actVendorID"], -1))
|
|
||||||
}
|
|
||||||
beginTime := time.Now()
|
beginTime := time.Now()
|
||||||
err = updateActPrice4StoreSkuNameNew(db, storeIDs, skuIDs, skuNamesInfo, actVendorID)
|
err = updateActPrice4StoreSkuNameNew(db, storeIDs, skuIDs, skuNamesInfo, actVendorID)
|
||||||
globals.SugarLogger.Debugf("GetStoresSkusNew updateActPrice4StoreSkuName:%v", time.Now().Sub(beginTime))
|
globals.SugarLogger.Debugf("GetStoresSkusNew updateActPrice4StoreSkuName:%v", time.Now().Sub(beginTime))
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import (
|
|||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/auth2"
|
"git.rosy.net.cn/jx-callback/business/auth2"
|
||||||
"git.rosy.net.cn/jx-callback/business/auth2/authprovider/dingding"
|
"git.rosy.net.cn/jx-callback/business/auth2/authprovider/dingding"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin"
|
||||||
"git.rosy.net.cn/jx-callback/business/authz"
|
"git.rosy.net.cn/jx-callback/business/authz"
|
||||||
"git.rosy.net.cn/jx-callback/business/authz/autils"
|
"git.rosy.net.cn/jx-callback/business/authz/autils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
@@ -201,7 +202,7 @@ func HandleOrder4Consignee(order *model.GoodsOrder) (err error) {
|
|||||||
if mobileNumber == "" && order.VendorUserID == "" {
|
if mobileNumber == "" && order.VendorUserID == "" {
|
||||||
return fmt.Errorf("订单:%s手机号与平台用户标识都是空", order.VendorOrderID)
|
return fmt.Errorf("订单:%s手机号与平台用户标识都是空", order.VendorOrderID)
|
||||||
}
|
}
|
||||||
authType := jxutils.GetAuthType4Vendor(order.VendorID)
|
authType := dao.GetAuthType4Vendor(order.VendorID)
|
||||||
if authType == "" {
|
if authType == "" {
|
||||||
msg := fmt.Sprintf("平台ID:%d当前不被支持,请联系开发", order.VendorID)
|
msg := fmt.Sprintf("平台ID:%d当前不被支持,请联系开发", order.VendorID)
|
||||||
globals.SugarLogger.Warn(msg)
|
globals.SugarLogger.Warn(msg)
|
||||||
@@ -470,7 +471,7 @@ func AddRoles4User(ctx *jxcontext.Context, userID string, rList []*authz.RoleInf
|
|||||||
if err = api2.RoleMan.AddRole4User(userID, v); err != nil {
|
if err = api2.RoleMan.AddRole4User(userID, v); err != nil {
|
||||||
errList.AddErr(err)
|
errList.AddErr(err)
|
||||||
} else if v.StoreID > 0 {
|
} else if v.StoreID > 0 {
|
||||||
jxutils.HandleUserWXRemark(dao.GetDB(), userID, true)
|
HandleUserWXRemark(dao.GetDB(), userID, true)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errList.AddErr(err)
|
errList.AddErr(err)
|
||||||
@@ -485,7 +486,7 @@ func DeleteRoles4User(ctx *jxcontext.Context, userID string, rList []*authz.Role
|
|||||||
if err = api2.RoleMan.DeleteRole4User(userID, v); err != nil {
|
if err = api2.RoleMan.DeleteRole4User(userID, v); err != nil {
|
||||||
errList.AddErr(err)
|
errList.AddErr(err)
|
||||||
} else if v.StoreID > 0 {
|
} else if v.StoreID > 0 {
|
||||||
jxutils.HandleUserWXRemark(dao.GetDB(), userID, true)
|
HandleUserWXRemark(dao.GetDB(), userID, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return errList.GetErrListAsOne()
|
return errList.GetErrListAsOne()
|
||||||
@@ -504,7 +505,7 @@ func AddUsers4Role(ctx *jxcontext.Context, r *authz.RoleInfo, userIDList []strin
|
|||||||
if err = api2.RoleMan.AddRole4User(v, r); err != nil {
|
if err = api2.RoleMan.AddRole4User(v, r); err != nil {
|
||||||
errList.AddErr(err)
|
errList.AddErr(err)
|
||||||
} else if r.StoreID > 0 {
|
} else if r.StoreID > 0 {
|
||||||
jxutils.HandleUserWXRemark(dao.GetDB(), v, true)
|
HandleUserWXRemark(dao.GetDB(), v, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return errList.GetErrListAsOne()
|
return errList.GetErrListAsOne()
|
||||||
@@ -516,7 +517,7 @@ func DeleteUsers4Role(ctx *jxcontext.Context, r *authz.RoleInfo, userIDList []st
|
|||||||
if err = api2.RoleMan.DeleteRole4User(v, r); err != nil {
|
if err = api2.RoleMan.DeleteRole4User(v, r); err != nil {
|
||||||
errList.AddErr(err)
|
errList.AddErr(err)
|
||||||
} else if r.StoreID > 0 {
|
} else if r.StoreID > 0 {
|
||||||
jxutils.HandleUserWXRemark(dao.GetDB(), v, true)
|
HandleUserWXRemark(dao.GetDB(), v, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return errList.GetErrListAsOne()
|
return errList.GetErrListAsOne()
|
||||||
@@ -713,3 +714,66 @@ func GetSelfInfo(ctx *jxcontext.Context) (user *model.User, err error) {
|
|||||||
}
|
}
|
||||||
return user, err
|
return user, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func HandleUserWXRemark(db *dao.DaoDB, mobile string, mobileIsUerID bool) (err error) {
|
||||||
|
if db == nil {
|
||||||
|
db = dao.GetDB()
|
||||||
|
}
|
||||||
|
openIDs := []string{}
|
||||||
|
storeID := 0
|
||||||
|
remark := ""
|
||||||
|
|
||||||
|
// if !globals.DisableWXAuth1 {
|
||||||
|
// wxinfo, err := dao.GetUserStoreInfo(db, "tel", mobile)
|
||||||
|
// if err == nil {
|
||||||
|
// openIDs = []string{wxinfo.OpenID}
|
||||||
|
// storeID = wxinfo.JxStoreID
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
if globals.EnableWXAuth2 {
|
||||||
|
userID := ""
|
||||||
|
if mobileIsUerID {
|
||||||
|
userID = mobile
|
||||||
|
} else {
|
||||||
|
userList, _, err2 := dao.GetUsers(db, model.UserTypeStoreBoss, "", nil, "", mobile, 0, -1)
|
||||||
|
if err = err2; len(userList) > 0 {
|
||||||
|
userID = userList[0].GetID()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if userID != "" {
|
||||||
|
authBindList, err2 := dao.GetUserBindAuthInfo(db, userID, model.AuthBindTypeAuth, []string{weixin.AuthTypeMP}, "", "")
|
||||||
|
if err = err2; err == nil {
|
||||||
|
for _, v := range authBindList {
|
||||||
|
openIDs = append(openIDs, v.AuthID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
roleList, err2 := api2.RoleMan.GetUserRoleList(userID)
|
||||||
|
if err = err2; err == nil && len(roleList) > 0 {
|
||||||
|
storeID = roleList[0].StoreID
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(openIDs) > 0 {
|
||||||
|
if storeID > 0 {
|
||||||
|
store := &model.Store{}
|
||||||
|
store.ID = storeID
|
||||||
|
if err = dao.GetEntity(db, store); err == nil {
|
||||||
|
city := &model.Place{
|
||||||
|
Code: store.CityCode,
|
||||||
|
}
|
||||||
|
if err = dao.GetEntity(db, city, "Code"); err == nil {
|
||||||
|
remark = city.Name + "-" + store.Name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err == nil {
|
||||||
|
if globals.EnableStoreWrite {
|
||||||
|
for _, openID := range openIDs {
|
||||||
|
err = api.WeixinAPI.CBUpdateRemark(openID, remark)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxstore/act"
|
"git.rosy.net.cn/jx-callback/business/jxstore/act"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
|
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
@@ -122,6 +123,9 @@ func Init() {
|
|||||||
}, updateActStatusTimeList)
|
}, updateActStatusTimeList)
|
||||||
ScheduleScoreStore()
|
ScheduleScoreStore()
|
||||||
ScheduleCheckStoreAlert()
|
ScheduleCheckStoreAlert()
|
||||||
|
ScheduleTimerFunc("ChangeStoreSkuSaleStatus", func() {
|
||||||
|
cms.CurVendorSync.ChangeStoreSkuSaleStatus(jxcontext.AdminCtx, 0, true, true)
|
||||||
|
}, ChangeStoreSkuSaleStatusList)
|
||||||
}
|
}
|
||||||
ScheduleTimerFunc("AutoSaleStoreSku", func() {
|
ScheduleTimerFunc("AutoSaleStoreSku", func() {
|
||||||
cms.AutoSaleStoreSku(jxcontext.AdminCtx, nil, false)
|
cms.AutoSaleStoreSku(jxcontext.AdminCtx, nil, false)
|
||||||
@@ -134,11 +138,6 @@ func Init() {
|
|||||||
"04:05:06",
|
"04:05:06",
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if beego.BConfig.RunMode == "alpha" {
|
|
||||||
ScheduleTimerFunc("ChangeStoreSkuSaleStatus", func() {
|
|
||||||
cms.CurVendorSync.ChangeStoreSkuSaleStatus(jxcontext.AdminCtx, 0, true, true)
|
|
||||||
}, ChangeStoreSkuSaleStatusList)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func doDailyWork() {
|
func doDailyWork() {
|
||||||
@@ -157,6 +156,10 @@ func doDailyWork() {
|
|||||||
SaveImportantTaskID(TaskNameSyncStoreSku, taskID)
|
SaveImportantTaskID(TaskNameSyncStoreSku, taskID)
|
||||||
|
|
||||||
InitEx()
|
InitEx()
|
||||||
|
|
||||||
|
// 每天补全前一天与当天的订单
|
||||||
|
curDate := utils.Time2Date(time.Now())
|
||||||
|
orderman.FixedOrderManager.AmendMissingOrders(jxcontext.AdminCtx, nil, 0, curDate.Add(-24*time.Hour), curDate, true, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
func RefreshRealMobile(ctx *jxcontext.Context, vendorID int, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func RefreshRealMobile(ctx *jxcontext.Context, vendorID int, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import (
|
|||||||
"mime/multipart"
|
"mime/multipart"
|
||||||
"net/http"
|
"net/http"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
@@ -49,6 +50,7 @@ var (
|
|||||||
titleList = []string{
|
titleList = []string{
|
||||||
"用户名",
|
"用户名",
|
||||||
"关联门店",
|
"关联门店",
|
||||||
|
"状态",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -60,6 +62,7 @@ type GetJdUsersStruct struct {
|
|||||||
type JdUserStruct struct {
|
type JdUserStruct struct {
|
||||||
UserName string `json:"用户名"`
|
UserName string `json:"用户名"`
|
||||||
StoreIDs string `json:"关联门店"`
|
StoreIDs string `json:"关联门店"`
|
||||||
|
Status string `json:"状态"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@@ -954,7 +957,7 @@ func UpdateAllWeiXinRemark(ctx *jxcontext.Context, isAsync, isContinueWhenError
|
|||||||
rootTask := tasksch.NewParallelTask("刷新微信备注", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
rootTask := tasksch.NewParallelTask("刷新微信备注", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
tel := batchItemList[0].(string)
|
tel := batchItemList[0].(string)
|
||||||
err = jxutils.HandleUserWXRemark(dao.GetDB(), tel, false)
|
err = cms.HandleUserWXRemark(dao.GetDB(), tel, false)
|
||||||
return nil, err
|
return nil, err
|
||||||
}, mobileList)
|
}, mobileList)
|
||||||
tasksch.ManageTask(rootTask).Run()
|
tasksch.ManageTask(rootTask).Run()
|
||||||
@@ -1470,18 +1473,32 @@ func ExecuteFileName(filename string) (name string) {
|
|||||||
func GetJdUsers(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func GetJdUsers(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
var (
|
var (
|
||||||
jxVendorIDsMap = make(map[string]string)
|
jxVendorIDsMap = make(map[string]string)
|
||||||
|
pageNoList []int
|
||||||
|
storeUserList []interface{}
|
||||||
)
|
)
|
||||||
//获取京东有效的店
|
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
|
//获取京东商城所有用户
|
||||||
|
_, _, toatlPage, _ := api.JdAPI.PrivilegeSearchUser(1)
|
||||||
|
for i := 1; i <= toatlPage; i++ {
|
||||||
|
pageNoList = append(pageNoList, i)
|
||||||
|
}
|
||||||
storeMapList, err := dao.GetStoreMapsListWithoutDisabled(db, []int{model.VendorIDJD}, model.StoreStatusDisabled)
|
storeMapList, err := dao.GetStoreMapsListWithoutDisabled(db, []int{model.VendorIDJD}, model.StoreStatusDisabled)
|
||||||
for _, v := range storeMapList {
|
for _, v := range storeMapList {
|
||||||
jxVendorIDsMap[v.VendorStoreID] = v.VendorStoreID
|
jxVendorIDsMap[v.VendorStoreID] = utils.Int64ToStr(int64(v.StoreID))
|
||||||
}
|
}
|
||||||
//获取京东商城所有用户
|
|
||||||
storeUserList, err := api.JdAPI.PrivilegeSearchUserAll()
|
|
||||||
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
switch step {
|
switch step {
|
||||||
case 0:
|
case 0:
|
||||||
|
taskFunc1 := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
pageNo := batchItemList[0].(int)
|
||||||
|
storeUserLists, _, _, err := api.JdAPI.PrivilegeSearchUser(pageNo)
|
||||||
|
retVal = storeUserLists
|
||||||
|
return retVal, err
|
||||||
|
}
|
||||||
|
taskParallel1 := tasksch.NewParallelTask("获取京东商城所有用户列表", tasksch.NewParallelConfig(), ctx, taskFunc1, pageNoList)
|
||||||
|
tasksch.HandleTask(taskParallel1, task, true).Run()
|
||||||
|
storeUserList, err = taskParallel1.GetResult(0)
|
||||||
|
case 1:
|
||||||
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) {
|
||||||
vv := batchItemList[0].(*jdapi.StoreUserInfo)
|
vv := batchItemList[0].(*jdapi.StoreUserInfo)
|
||||||
vendorStoreIDs, err := api.JdAPI.GetJdUserBindStoreIDs(vv.ID)
|
vendorStoreIDs, err := api.JdAPI.GetJdUserBindStoreIDs(vv.ID)
|
||||||
@@ -1491,30 +1508,35 @@ func GetJdUsers(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint
|
|||||||
if jxVendorIDsMap[v] == "" {
|
if jxVendorIDsMap[v] == "" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
vendorStoreIDsMap[v] = v
|
vendorStoreIDsMap[v] = jxVendorIDsMap[v]
|
||||||
}
|
}
|
||||||
if len(vendorStoreIDsMap) == 0 {
|
if len(vendorStoreIDsMap) == 0 {
|
||||||
jdStruct := JdUserStruct{vv.LoginName, ""}
|
if vv.LoginName == "jd_jxcs1223" || vv.LoginName == "jd_jxgy" {
|
||||||
|
jdStruct := JdUserStruct{vv.LoginName, "管理员", vv.LockStatus}
|
||||||
|
jdUsersStruct.AppendData(jdStruct)
|
||||||
|
}
|
||||||
|
jdStruct := JdUserStruct{vv.LoginName, "", vv.LockStatus}
|
||||||
jdUsersStruct.AppendData(jdStruct)
|
jdUsersStruct.AppendData(jdStruct)
|
||||||
} else {
|
} else {
|
||||||
for _, m := range vendorStoreIDsMap {
|
for _, m := range vendorStoreIDsMap {
|
||||||
vendorStoreIDsResult = append(vendorStoreIDsResult, m)
|
vendorStoreIDsResult = append(vendorStoreIDsResult, m)
|
||||||
}
|
}
|
||||||
jdStruct := JdUserStruct{vv.LoginName, strings.Join(vendorStoreIDsResult, ",")}
|
sort.Strings(vendorStoreIDsResult[:])
|
||||||
|
jdStruct := JdUserStruct{vv.LoginName, strings.Join(vendorStoreIDsResult, ","), vv.LockStatus}
|
||||||
jdUsersStruct.AppendData(jdStruct)
|
jdUsersStruct.AppendData(jdStruct)
|
||||||
}
|
}
|
||||||
return retVal, err
|
return retVal, err
|
||||||
}
|
}
|
||||||
taskParallel := tasksch.NewParallelTask("获取京东商城用户列表", tasksch.NewParallelConfig(), ctx, taskFunc, storeUserList)
|
taskParallel := tasksch.NewParallelTask("获取京东商城用户关联门店列表", tasksch.NewParallelConfig(), ctx, taskFunc, storeUserList)
|
||||||
tasksch.HandleTask(taskParallel, task, true).Run()
|
tasksch.HandleTask(taskParallel, task, true).Run()
|
||||||
_, err = taskParallel.GetResult(0)
|
_, err = taskParallel.GetResult(0)
|
||||||
case 1:
|
case 2:
|
||||||
//写excel
|
//写excel
|
||||||
WriteToExcel(task, jdUsersStruct.userMap)
|
WriteToExcel(task, jdUsersStruct.userMap)
|
||||||
}
|
}
|
||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
taskSeq := tasksch.NewSeqTask2("获取京东商城用户列表-序列任务", ctx, isContinueWhenError, taskSeqFunc, 2)
|
taskSeq := tasksch.NewSeqTask2("获取京东商城用户关联门店列表-序列任务", ctx, isContinueWhenError, taskSeqFunc, 3)
|
||||||
tasksch.HandleTask(taskSeq, nil, true).Run()
|
tasksch.HandleTask(taskSeq, nil, true).Run()
|
||||||
if !isAsync {
|
if !isAsync {
|
||||||
_, err = taskSeq.GetResult(0)
|
_, err = taskSeq.GetResult(0)
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ var (
|
|||||||
SkuRow: 1,
|
SkuRow: 1,
|
||||||
}, "净配": &SheetParam{
|
}, "净配": &SheetParam{
|
||||||
SkuIDCol: 0,
|
SkuIDCol: 0,
|
||||||
SkuPriceCol: 12,
|
SkuPriceCol: 14,
|
||||||
SkuNameCol: 1,
|
SkuNameCol: 1,
|
||||||
OrgSkuIdCol: 4,
|
OrgSkuIdCol: 4,
|
||||||
OrgSkuPriceCol: 7,
|
OrgSkuPriceCol: 7,
|
||||||
@@ -237,14 +237,15 @@ func LoadExcelByYongHui(ctx *jxcontext.Context, files []*multipart.FileHeader, i
|
|||||||
func LoadExcelBinByYongHui(ctx *jxcontext.Context, reader io.Reader, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func LoadExcelBinByYongHui(ctx *jxcontext.Context, reader io.Reader, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
var (
|
var (
|
||||||
skuMap = make(map[string]*ExcelParam)
|
skuMap = make(map[string]*ExcelParam)
|
||||||
errMsg string
|
|
||||||
costPrice float64 //成本价
|
costPrice float64 //成本价
|
||||||
goodsList []*weimobapi.GoodsInfo
|
goodsList []*weimobapi.GoodsInfo
|
||||||
goodsIDListForPutAway []interface{}
|
goodsIDListForPutAway []interface{}
|
||||||
isCompare bool
|
isCompare bool
|
||||||
|
isExecute = false
|
||||||
)
|
)
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
|
var errMsg string
|
||||||
switch step {
|
switch step {
|
||||||
case 0:
|
case 0:
|
||||||
//读取excel文件
|
//读取excel文件
|
||||||
@@ -256,22 +257,20 @@ func LoadExcelBinByYongHui(ctx *jxcontext.Context, reader io.Reader, isAsync, is
|
|||||||
sheetParam := sheetMap[k]
|
sheetParam := sheetMap[k]
|
||||||
rows, _ := xlsx.GetRows(k)
|
rows, _ := xlsx.GetRows(k)
|
||||||
for rowNum, row := range rows {
|
for rowNum, row := range rows {
|
||||||
if rowNum < sheetParam.SkuRow {
|
errMsg += GetCellIntoMap(sheetParam, skuMap, row, k, rowNum)
|
||||||
continue
|
|
||||||
}
|
|
||||||
GetCellIntoMap(sheetParam, skuMap, row, k, rowNum)
|
|
||||||
if len(skuMap) < 1 {
|
|
||||||
errMsg += fmt.Sprintf("读取Excel数据失败,Excel格式排版可能发生了变化!sheetName: [%v]\n", k)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if errMsg != "" {
|
|
||||||
return "", errors.New(errMsg)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//修改分组名
|
//修改分组名
|
||||||
// 分类名格式为:可定XX日
|
// 分类名格式为:可定XX日
|
||||||
// XX为上传永辉 提供的 价格表时间 +2天
|
// XX为上传永辉 提供的 价格表时间 +2天
|
||||||
isCompare, err = UpdateClassifyAndGetLastClassify()
|
if errMsg == "" {
|
||||||
|
isExecute = true
|
||||||
|
} else {
|
||||||
|
return "", fmt.Errorf(errMsg)
|
||||||
|
}
|
||||||
|
if isExecute {
|
||||||
|
isCompare, err = UpdateClassifyAndGetLastClassify()
|
||||||
|
}
|
||||||
case 1:
|
case 1:
|
||||||
//获取微盟所有商品
|
//获取微盟所有商品
|
||||||
param := &weimobapi.QueryGoodsListParam{
|
param := &weimobapi.QueryGoodsListParam{
|
||||||
@@ -305,7 +304,6 @@ func LoadExcelBinByYongHui(ctx *jxcontext.Context, reader io.Reader, isAsync, is
|
|||||||
Comment: "在微盟上未找到该商品",
|
Comment: "在微盟上未找到该商品",
|
||||||
}
|
}
|
||||||
dataFailed.AppendData2(outPutData)
|
dataFailed.AppendData2(outPutData)
|
||||||
// errMsg += fmt.Sprintf("在微盟上未找到该商品xxx", xxx)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
@@ -326,7 +324,6 @@ func LoadExcelBinByYongHui(ctx *jxcontext.Context, reader io.Reader, isAsync, is
|
|||||||
Comment: "在京西库中未找到该商品",
|
Comment: "在京西库中未找到该商品",
|
||||||
}
|
}
|
||||||
dataFailed.AppendData2(outPutData)
|
dataFailed.AppendData2(outPutData)
|
||||||
// return "", errors.New(fmt.Sprintf("在京西库中未找到该商品!name_id : [%v]\n", goodsDetail.SkuMap.SingleSku.OuterSkuCode))
|
|
||||||
} else {
|
} else {
|
||||||
if skuList[0].Unit == "份" {
|
if skuList[0].Unit == "份" {
|
||||||
if goodsDetail.SkuMap.SingleSku.B2CSku.Weight == 0 {
|
if goodsDetail.SkuMap.SingleSku.B2CSku.Weight == 0 {
|
||||||
@@ -337,7 +334,9 @@ func LoadExcelBinByYongHui(ctx *jxcontext.Context, reader io.Reader, isAsync, is
|
|||||||
} else {
|
} else {
|
||||||
costPrice = skuMap[spuCode].Price
|
costPrice = skuMap[spuCode].Price
|
||||||
}
|
}
|
||||||
_, _, _ = updateWeiMobGoods(costPrice, skuMap[spuCode].Price, skuList[0].Unit, isCompare, goodsDetail)
|
if isExecute {
|
||||||
|
_, _, _ = updateWeiMobGoods(costPrice, skuMap[spuCode].Price, skuList[0].Unit, isCompare, goodsDetail)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//下架微盟商品
|
//下架微盟商品
|
||||||
@@ -360,7 +359,9 @@ func LoadExcelBinByYongHui(ctx *jxcontext.Context, reader io.Reader, isAsync, is
|
|||||||
for _, v := range batchItemList {
|
for _, v := range batchItemList {
|
||||||
int64Slice = append(int64Slice, v.(int64))
|
int64Slice = append(int64Slice, v.(int64))
|
||||||
}
|
}
|
||||||
PutAwayWeiMobSku(int64Slice)
|
if isExecute {
|
||||||
|
PutAwayWeiMobSku(int64Slice)
|
||||||
|
}
|
||||||
return retVal, err
|
return retVal, err
|
||||||
}
|
}
|
||||||
taskParallel4 := tasksch.NewParallelTask("下架微盟商品", tasksch.NewParallelConfig().SetParallelCount(parallelCount).SetBatchSize(UpdateGoodsShelfStatusCount), ctx, taskFunc4, goodsIDListForPutAway)
|
taskParallel4 := tasksch.NewParallelTask("下架微盟商品", tasksch.NewParallelConfig().SetParallelCount(parallelCount).SetBatchSize(UpdateGoodsShelfStatusCount), ctx, taskFunc4, goodsIDListForPutAway)
|
||||||
@@ -369,9 +370,7 @@ func LoadExcelBinByYongHui(ctx *jxcontext.Context, reader io.Reader, isAsync, is
|
|||||||
case 4:
|
case 4:
|
||||||
WriteToExcel(task, dataSuccess.dataSuccessList, dataFailed.dataFailedList)
|
WriteToExcel(task, dataSuccess.dataSuccessList, dataFailed.dataFailedList)
|
||||||
}
|
}
|
||||||
// if errMsg != "" {
|
|
||||||
// return result, errors.New(errMsg)
|
|
||||||
// }
|
|
||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
taskSeq := tasksch.NewSeqTask2("读取永辉Excel文件修改微盟商品价格可售状态-序列任务", ctx, isContinueWhenError, taskSeqFunc, 5)
|
taskSeq := tasksch.NewSeqTask2("读取永辉Excel文件修改微盟商品价格可售状态-序列任务", ctx, isContinueWhenError, taskSeqFunc, 5)
|
||||||
@@ -403,17 +402,6 @@ func GetGoodsInfoAndDetailMap(goodsList []*weimobapi.GoodsInfo) (goodsMap map[st
|
|||||||
return goodsMap
|
return goodsMap
|
||||||
}
|
}
|
||||||
|
|
||||||
// func getSelectedClassifyLeafList(l []weimobapi.SelectedClassifyList) (list []int64) {
|
|
||||||
// for _, v := range l {
|
|
||||||
// if v.ChildrenClassify == nil {
|
|
||||||
// list = append(list, v.ClassifyID)
|
|
||||||
// } else {
|
|
||||||
// subList := getSelectedClassifyLeafList(v.ChildrenClassify)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// return list
|
|
||||||
// }
|
|
||||||
|
|
||||||
func updateWeiMobGoods(costPrice, salePrice float64, unit string, isCompare bool, goodsDetail *weimobapi.GoodsDetailInfo) (goodsID int64, skuMap map[string]int64, err error) {
|
func updateWeiMobGoods(costPrice, salePrice float64, unit string, isCompare bool, goodsDetail *weimobapi.GoodsDetailInfo) (goodsID int64, skuMap map[string]int64, err error) {
|
||||||
var (
|
var (
|
||||||
categoryList []*weimobapi.CategoryList
|
categoryList []*weimobapi.CategoryList
|
||||||
@@ -579,7 +567,7 @@ func IsChineseChar(str string) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetCellIntoMap(sheetParam *SheetParam, skuMap map[string]*ExcelParam, row []string, sheetName string, rowNum int) {
|
func GetCellIntoMap(sheetParam *SheetParam, skuMap map[string]*ExcelParam, row []string, sheetName string, rowNum int) (errMsg string) {
|
||||||
var (
|
var (
|
||||||
skuID string
|
skuID string
|
||||||
orgSkuID string
|
orgSkuID string
|
||||||
@@ -596,19 +584,27 @@ func GetCellIntoMap(sheetParam *SheetParam, skuMap map[string]*ExcelParam, row [
|
|||||||
)
|
)
|
||||||
for k, cell := range row {
|
for k, cell := range row {
|
||||||
if cell != "" {
|
if cell != "" {
|
||||||
if !IsChineseChar(cell) {
|
if k == skuIDCol && skuIDCol >= 0 {
|
||||||
if k == skuIDCol && skuIDCol >= 0 {
|
skuID = cell
|
||||||
skuID = cell
|
}
|
||||||
|
if k == skuPriceCol && skuPriceCol >= 0 {
|
||||||
|
if rowNum == sheetParam.SkuRow-1 {
|
||||||
|
if !strings.Contains(cell, "今日供价") && !strings.Contains(cell, "单价") {
|
||||||
|
errMsg += fmt.Sprintf("sheet页:[%v],Excel排版发生变化!第[%v]列今日供价附近可能增加或减少了一列,请确认!", sheetName, k+1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if k == skuPriceCol && skuPriceCol >= 0 {
|
skuPrice = Float64Round(utils.Str2Float64WithDefault(cell, 0))
|
||||||
skuPrice = Float64Round(utils.Str2Float64WithDefault(cell, 0))
|
}
|
||||||
}
|
if k == orgSkuIDCol && orgSkuIDCol >= 0 {
|
||||||
if k == orgSkuIDCol && orgSkuIDCol >= 0 {
|
orgSkuID = "0" + cell
|
||||||
orgSkuID = "0" + cell
|
}
|
||||||
}
|
if k == orgSkuPriceCol && orgSkuPriceCol >= 0 {
|
||||||
if k == orgSkuPriceCol && orgSkuPriceCol >= 0 {
|
if rowNum == sheetParam.SkuRow-1 {
|
||||||
orgSkuPrice = Float64Round(utils.Str2Float64WithDefault(cell, 0))
|
if !strings.Contains(cell, "进价") {
|
||||||
|
errMsg += fmt.Sprintf("sheet页:[%v],Excel排版发生变化!第[%v]列进价附近可能增加或减少了一列,请确认!", sheetName, k+1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
orgSkuPrice = Float64Round(utils.Str2Float64WithDefault(cell, 0))
|
||||||
}
|
}
|
||||||
if k == skuNameCol && skuNameCol >= 0 {
|
if k == skuNameCol && skuNameCol >= 0 {
|
||||||
skuName = cell
|
skuName = cell
|
||||||
@@ -618,34 +614,50 @@ func GetCellIntoMap(sheetParam *SheetParam, skuMap map[string]*ExcelParam, row [
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(skuMap) > 0 {
|
if rowNum >= sheetParam.SkuRow {
|
||||||
if skuMap[skuID] != nil {
|
if rowNum == sheetParam.SkuRow {
|
||||||
if skuMap[skuID].Price != 0 && skuMap[skuID].Price != skuPrice && skuPrice != 0 {
|
if IsChineseChar(skuID) {
|
||||||
if skuPrice > skuMap[skuID].Price {
|
if IsChineseChar(skuID) {
|
||||||
|
errMsg += fmt.Sprintf("sheet页:[%v],Excel排版发生变化!第[%v]行附近可能增加了一行,请确认!", sheetName, rowNum)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(skuMap) > 0 {
|
||||||
|
if skuMap[skuID] != nil {
|
||||||
|
if skuMap[skuID].Price != 0 && skuMap[skuID].Price != skuPrice && skuPrice != 0 {
|
||||||
|
if skuPrice > skuMap[skuID].Price {
|
||||||
|
BuildSkuMap(skuID, skuName, skuPrice, skuMap)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
BuildSkuMap(skuID, skuName, skuPrice, skuMap)
|
BuildSkuMap(skuID, skuName, skuPrice, skuMap)
|
||||||
}
|
}
|
||||||
} else {
|
} else if skuPrice != 0 {
|
||||||
BuildSkuMap(skuID, skuName, skuPrice, skuMap)
|
BuildSkuMap(skuID, skuName, skuPrice, skuMap)
|
||||||
}
|
}
|
||||||
} else if skuPrice != 0 {
|
if skuMap[orgSkuID] != nil {
|
||||||
BuildSkuMap(skuID, skuName, skuPrice, skuMap)
|
if skuMap[orgSkuID].Price != 0 && skuMap[orgSkuID].Price != orgSkuPrice && orgSkuPrice != 0 {
|
||||||
}
|
if orgSkuPrice > skuMap[orgSkuID].Price {
|
||||||
if skuMap[orgSkuID] != nil {
|
BuildSkuMap(orgSkuID, orgSkuName, orgSkuPrice, skuMap)
|
||||||
if skuMap[orgSkuID].Price != 0 && skuMap[orgSkuID].Price != orgSkuPrice && orgSkuPrice != 0 {
|
}
|
||||||
if orgSkuPrice > skuMap[orgSkuID].Price {
|
} else if orgSkuPriceCol >= 0 && orgSkuIDCol >= 0 && orgSkuNameCol >= 0 {
|
||||||
BuildSkuMap(orgSkuID, orgSkuName, orgSkuPrice, skuMap)
|
BuildSkuMap(orgSkuID, orgSkuName, orgSkuPrice, skuMap)
|
||||||
}
|
}
|
||||||
} else if orgSkuPriceCol >= 0 && orgSkuIDCol >= 0 && orgSkuNameCol >= 0 {
|
} else if orgSkuPrice != 0 {
|
||||||
BuildSkuMap(orgSkuID, orgSkuName, orgSkuPrice, skuMap)
|
BuildSkuMap(orgSkuID, orgSkuName, orgSkuPrice, skuMap)
|
||||||
}
|
}
|
||||||
} else if orgSkuPrice != 0 {
|
} else {
|
||||||
|
BuildSkuMap(skuID, skuName, skuPrice, skuMap)
|
||||||
BuildSkuMap(orgSkuID, orgSkuName, orgSkuPrice, skuMap)
|
BuildSkuMap(orgSkuID, orgSkuName, orgSkuPrice, skuMap)
|
||||||
}
|
}
|
||||||
|
delete(skuMap, "")
|
||||||
} else {
|
} else {
|
||||||
BuildSkuMap(skuID, skuName, skuPrice, skuMap)
|
for i := rowNum; i < sheetParam.SkuRow; i++ {
|
||||||
BuildSkuMap(orgSkuID, orgSkuName, orgSkuPrice, skuMap)
|
if !IsChineseChar(skuID) {
|
||||||
|
errMsg += fmt.Sprintf("sheet页:[%v],Excel排版发生变化!第[%v]行附近可能减少了一行,请确认!", sheetName, rowNum)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
delete(skuMap, "")
|
return errMsg
|
||||||
}
|
}
|
||||||
func BuildSkuMap(id, name string, price float64, skuMap map[string]*ExcelParam) {
|
func BuildSkuMap(id, name string, price float64, skuMap map[string]*ExcelParam) {
|
||||||
excelParam := &ExcelParam{
|
excelParam := &ExcelParam{
|
||||||
@@ -753,7 +765,7 @@ func WriteToExcel(task *tasksch.SeqTask, dataSuccess []DataSuccess, dataFailed [
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
baseapi.SugarLogger.Errorf("WriteToExcel:upload %s , %s failed error:%v", fileName1, fileName2, err)
|
baseapi.SugarLogger.Errorf("WriteToExcel:upload %s , %s failed error:%v", fileName1, fileName2, err)
|
||||||
} else {
|
} else {
|
||||||
noticeMsg := fmt.Sprintf("[详情点我]path1=%s, path2=%s \n", globals.BackstageHost, downloadURL1, downloadURL2)
|
noticeMsg := fmt.Sprintf("[详情点我]path1=%s, path2=%s \n", downloadURL1, downloadURL2)
|
||||||
task.SetNoticeMsg(noticeMsg)
|
task.SetNoticeMsg(noticeMsg)
|
||||||
baseapi.SugarLogger.Debugf("WriteToExcel:upload %s ,%s success, downloadURL1:%s ,downloadURL2:%s", fileName1, fileName2, downloadURL1, downloadURL2)
|
baseapi.SugarLogger.Debugf("WriteToExcel:upload %s ,%s success, downloadURL1:%s ,downloadURL2:%s", fileName1, fileName2, downloadURL1, downloadURL2)
|
||||||
}
|
}
|
||||||
@@ -909,7 +921,7 @@ func WriteToExcel3(task *tasksch.SeqTask, dataSuccess []DataStoreSkusSuccess, da
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
baseapi.SugarLogger.Errorf("WriteToExcel:upload %s , %s failed error:%v", fileName1, fileName2, err)
|
baseapi.SugarLogger.Errorf("WriteToExcel:upload %s , %s failed error:%v", fileName1, fileName2, err)
|
||||||
} else {
|
} else {
|
||||||
noticeMsg := fmt.Sprintf("[详情点我]path1=%s, path2=%s \n", globals.BackstageHost, downloadURL1, downloadURL2)
|
noticeMsg := fmt.Sprintf("[详情点我]path1=%s, path2=%s \n", downloadURL1, downloadURL2)
|
||||||
task.SetNoticeMsg(noticeMsg)
|
task.SetNoticeMsg(noticeMsg)
|
||||||
baseapi.SugarLogger.Debugf("WriteToExcel:upload %s ,%s success, downloadURL1:%s ,downloadURL2:%s", fileName1, fileName2, downloadURL1, downloadURL2)
|
baseapi.SugarLogger.Debugf("WriteToExcel:upload %s ,%s success, downloadURL1:%s ,downloadURL2:%s", fileName1, fileName2, downloadURL1, downloadURL2)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,12 +15,9 @@ import (
|
|||||||
"git.rosy.net.cn/baseapi/platformapi/autonavi"
|
"git.rosy.net.cn/baseapi/platformapi/autonavi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/baseapi/utils/routinepool"
|
"git.rosy.net.cn/baseapi/utils/routinepool"
|
||||||
"git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api2"
|
|
||||||
"github.com/qiniu/api.v7/storage"
|
"github.com/qiniu/api.v7/storage"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -457,69 +454,6 @@ func Strings2Objs(strAndObjAddPairs ...interface{}) (err error) {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func HandleUserWXRemark(db *dao.DaoDB, mobile string, mobileIsUerID bool) (err error) {
|
|
||||||
if db == nil {
|
|
||||||
db = dao.GetDB()
|
|
||||||
}
|
|
||||||
openIDs := []string{}
|
|
||||||
storeID := 0
|
|
||||||
remark := ""
|
|
||||||
|
|
||||||
// if !globals.DisableWXAuth1 {
|
|
||||||
// wxinfo, err := dao.GetUserStoreInfo(db, "tel", mobile)
|
|
||||||
// if err == nil {
|
|
||||||
// openIDs = []string{wxinfo.OpenID}
|
|
||||||
// storeID = wxinfo.JxStoreID
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
if globals.EnableWXAuth2 {
|
|
||||||
userID := ""
|
|
||||||
if mobileIsUerID {
|
|
||||||
userID = mobile
|
|
||||||
} else {
|
|
||||||
userList, _, err2 := dao.GetUsers(db, model.UserTypeStoreBoss, "", nil, "", mobile, 0, -1)
|
|
||||||
if err = err2; len(userList) > 0 {
|
|
||||||
userID = userList[0].GetID()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if userID != "" {
|
|
||||||
authBindList, err2 := dao.GetUserBindAuthInfo(db, userID, model.AuthBindTypeAuth, []string{weixin.AuthTypeMP}, "", "")
|
|
||||||
if err = err2; err == nil {
|
|
||||||
for _, v := range authBindList {
|
|
||||||
openIDs = append(openIDs, v.AuthID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
roleList, err2 := api2.RoleMan.GetUserRoleList(userID)
|
|
||||||
if err = err2; err == nil && len(roleList) > 0 {
|
|
||||||
storeID = roleList[0].StoreID
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(openIDs) > 0 {
|
|
||||||
if storeID > 0 {
|
|
||||||
store := &model.Store{}
|
|
||||||
store.ID = storeID
|
|
||||||
if err = dao.GetEntity(db, store); err == nil {
|
|
||||||
city := &model.Place{
|
|
||||||
Code: store.CityCode,
|
|
||||||
}
|
|
||||||
if err = dao.GetEntity(db, city, "Code"); err == nil {
|
|
||||||
remark = city.Name + "-" + store.Name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if err == nil {
|
|
||||||
if globals.EnableStoreWrite {
|
|
||||||
for _, openID := range openIDs {
|
|
||||||
err = api.WeixinAPI.CBUpdateRemark(openID, remark)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func RefreshOrderSkuRelated(order *model.GoodsOrder) *model.GoodsOrder {
|
func RefreshOrderSkuRelated(order *model.GoodsOrder) *model.GoodsOrder {
|
||||||
order.SkuCount = 0
|
order.SkuCount = 0
|
||||||
order.GoodsCount = 0
|
order.GoodsCount = 0
|
||||||
@@ -723,14 +657,6 @@ func GetRealMobile4Order(order *model.GoodsOrder) (mobileNumber string) {
|
|||||||
return mobileNumber
|
return mobileNumber
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetAuthType4Vendor(vendorID int) (authType string) {
|
|
||||||
authType = dao.ConvertJsonFieldPrefix(model.VendorNames[vendorID])
|
|
||||||
if authType != "" {
|
|
||||||
authType = "vendor." + authType
|
|
||||||
}
|
|
||||||
return authType
|
|
||||||
}
|
|
||||||
|
|
||||||
func GuessDataResourceVendor(resourceURL string) (vendorID int) {
|
func GuessDataResourceVendor(resourceURL string) (vendorID int) {
|
||||||
vendorID = -1
|
vendorID = -1
|
||||||
for tmpVendorID, urlList := range resourceTypeMap {
|
for tmpVendorID, urlList := range resourceTypeMap {
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ import (
|
|||||||
"git.rosy.net.cn/baseapi/platformapi"
|
"git.rosy.net.cn/baseapi/platformapi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"github.com/boombuler/barcode"
|
"github.com/boombuler/barcode"
|
||||||
"github.com/boombuler/barcode/code128"
|
"github.com/boombuler/barcode/code128"
|
||||||
@@ -370,11 +369,19 @@ func IsEmptyID(id int64) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func FormalizePageSize(pageSize int) int {
|
func FormalizePageSize(pageSize int) int {
|
||||||
return dao.FormalizePageSize(pageSize)
|
if pageSize == 0 {
|
||||||
|
return model.DefPageSize
|
||||||
|
} else if pageSize < 0 {
|
||||||
|
return model.UnlimitedPageSize
|
||||||
|
}
|
||||||
|
return pageSize
|
||||||
}
|
}
|
||||||
|
|
||||||
func FormalizePageOffset(pageSize int) int {
|
func FormalizePageOffset(offset int) int {
|
||||||
return dao.FormalizePageOffset(pageSize)
|
if offset < 0 {
|
||||||
|
offset = 0
|
||||||
|
}
|
||||||
|
return offset
|
||||||
}
|
}
|
||||||
|
|
||||||
func FormalizeName(name string) string {
|
func FormalizeName(name string) string {
|
||||||
|
|||||||
@@ -10,6 +10,15 @@ const (
|
|||||||
UnlimitedPageSize = math.MaxInt32
|
UnlimitedPageSize = math.MaxInt32
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type ShortSkuInfo struct {
|
||||||
|
SkuID int `orm:"column(sku_id)" json:"skuID,omitempty"`
|
||||||
|
SkuShopPrice int `json:"skuShopPrice"`
|
||||||
|
SkuSalePrice int `json:"skuSalePrice"`
|
||||||
|
SkuEarningPrice int `json:"skuEarningPrice,omitempty"`
|
||||||
|
SkuCount2 int `json:"skuCount2"`
|
||||||
|
SkuName string `orm:"size(255)" json:"skuName"`
|
||||||
|
}
|
||||||
|
|
||||||
type GoodsOrderExt struct {
|
type GoodsOrderExt struct {
|
||||||
GoodsOrder
|
GoodsOrder
|
||||||
EarningPrice int64 `json:"earningPrice"` // 预估结算给门店老板的钱
|
EarningPrice int64 `json:"earningPrice"` // 预估结算给门店老板的钱
|
||||||
@@ -26,12 +35,12 @@ type GoodsOrderExt struct {
|
|||||||
WaybillCreatedAt time.Time `orm:"type(datetime);index" json:"waybillCreatedAt"`
|
WaybillCreatedAt time.Time `orm:"type(datetime);index" json:"waybillCreatedAt"`
|
||||||
WaybillFinishedAt time.Time `orm:"type(datetime)" json:"waybillFinishedAt"`
|
WaybillFinishedAt time.Time `orm:"type(datetime)" json:"waybillFinishedAt"`
|
||||||
|
|
||||||
SkuID int `orm:"column(sku_id)" json:"skuID,omitempty"`
|
DistrictName string `json:"districtName"`
|
||||||
SkuShopPrice int `json:"skuShopPrice,omitempty"`
|
CityName string `json:"cityName"`
|
||||||
SkuSalePrice int `json:"skuSalePrice,omitempty"`
|
|
||||||
SkuEarningPrice int `json:"skuEarningPrice,omitempty"`
|
SkuInfo string `json:"skuInfo,omitempty"`
|
||||||
SkuCount2 int `json:"skuCount2,omitempty"`
|
ShortSkuInfo `json:"-"`
|
||||||
SkuInfo string `json:"skuInfo,omitempty"`
|
SkuList []*ShortSkuInfo `json:"skuList,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type OrderSkuExt struct {
|
type OrderSkuExt struct {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
|
||||||
"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/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -71,8 +72,8 @@ func GetActVendorInfo(db *DaoDB, actID int, vendorIDs []int) (actMap map[int]*mo
|
|||||||
|
|
||||||
func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs []int, keyword string, offset, pageSize int) (totalCount int, actStoreSkuList []*model.ActStoreSku2, err error) {
|
func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs []int, keyword string, offset, pageSize int) (totalCount int, actStoreSkuList []*model.ActStoreSku2, err error) {
|
||||||
globals.SugarLogger.Debugf("GetActStoreSkuVendorList actID:%d", actID)
|
globals.SugarLogger.Debugf("GetActStoreSkuVendorList actID:%d", actID)
|
||||||
offset = FormalizePageOffset(offset)
|
offset = jxutils.FormalizePageOffset(offset)
|
||||||
pageSize = FormalizePageSize(pageSize)
|
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||||
|
|
||||||
leftOrEmpty := ""
|
leftOrEmpty := ""
|
||||||
if len(vendorIDs) == 1 && (vendorIDs[0] == -1 || vendorIDs[0] == model.VendorIDJX) {
|
if len(vendorIDs) == 1 && (vendorIDs[0] == -1 || vendorIDs[0] == model.VendorIDJX) {
|
||||||
@@ -178,8 +179,8 @@ func QueryActs(db *DaoDB, actID int, offset, pageSize int, syncStatus int, keywo
|
|||||||
if actID == 0 && utils.IsTimeZero(createdAtFrom) && utils.IsTimeZero(beginAt) {
|
if actID == 0 && utils.IsTimeZero(createdAtFrom) && utils.IsTimeZero(beginAt) {
|
||||||
return nil, fmt.Errorf("actID,createdAtFrom和beginAt中,至少要指定一个条件")
|
return nil, fmt.Errorf("actID,createdAtFrom和beginAt中,至少要指定一个条件")
|
||||||
}
|
}
|
||||||
offset = FormalizePageOffset(offset)
|
offset = jxutils.FormalizePageOffset(offset)
|
||||||
pageSize = FormalizePageSize(pageSize)
|
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||||
isGetAll := offset == 0 && pageSize == model.UnlimitedPageSize
|
isGetAll := offset == 0 && pageSize == model.UnlimitedPageSize
|
||||||
|
|
||||||
sql := `
|
sql := `
|
||||||
|
|||||||
@@ -2,10 +2,13 @@ package dao
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"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/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -80,12 +83,11 @@ func QueryOrders(db *DaoDB, vendorOrderID string, actID int, vendorIDs []int, st
|
|||||||
AND t2.store_id = IF(t4.jx_store_id <> 0, t4.jx_store_id, t4.store_id)
|
AND t2.store_id = IF(t4.jx_store_id <> 0, t4.jx_store_id, t4.store_id)
|
||||||
AND t4.order_created_at BETWEEN t1.begin_at AND t1.end_at
|
AND t4.order_created_at BETWEEN t1.begin_at AND t1.end_at
|
||||||
WHERE t1.status = 1
|
WHERE t1.status = 1
|
||||||
AND t1.type = ?
|
|
||||||
AND t1.id = ?
|
AND t1.id = ?
|
||||||
GROUP BY 1,2
|
GROUP BY 1,2
|
||||||
)s ON s.vendor_order_id = a.vendor_order_id AND s.vendor_id = a.vendor_id
|
)s ON s.vendor_order_id = a.vendor_order_id AND s.vendor_id = a.vendor_id
|
||||||
`
|
`
|
||||||
sqlParams = append(sqlParams, model.ActSkuFake, actID)
|
sqlParams = append(sqlParams, actID)
|
||||||
}
|
}
|
||||||
sql += `
|
sql += `
|
||||||
WHERE 1=1
|
WHERE 1=1
|
||||||
@@ -712,3 +714,207 @@ func GetOrderPayList(db *DaoDB, vendorOrderID string, vendorID int) (payList []*
|
|||||||
}
|
}
|
||||||
return payList, GetRows(db, &payList, sql, sqlParams)
|
return payList, GetRows(db, &payList, sql, sqlParams)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDateStr, toDateStr string, isDateFinish bool, skuIDs []int, isJxFirst bool, userID string, params map[string]interface{}, offset, pageSize int) (orders []*model.GoodsOrderExt, totalCount int, err error) {
|
||||||
|
globals.SugarLogger.Debugf("dao GetOrders ids:%v from:%s to:%s", ids, fromDateStr, toDateStr)
|
||||||
|
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||||
|
offset = jxutils.FormalizePageOffset(offset)
|
||||||
|
|
||||||
|
sql := fmt.Sprintf(`
|
||||||
|
SELECT SQL_CALC_FOUND_ROWS
|
||||||
|
t1.*,
|
||||||
|
CAST(IF(t1.earning_price <> 0, t1.earning_price, IF(t1.shop_price <> 0 && t1.shop_price < t1.sale_price, t1.shop_price, t1.sale_price) * IF(t5.pay_percentage > 0, t5.pay_percentage, %d) / 100) AS SIGNED) earning_price,
|
||||||
|
t2.status waybill_status, t2.courier_name, t2.courier_mobile,
|
||||||
|
t2.actual_fee, t2.desired_fee, t2.waybill_created_at, t2.waybill_finished_at,
|
||||||
|
city.name city_name, district.name district_name`, model.DefaultEarningPricePercentage)
|
||||||
|
if isIncludeSku {
|
||||||
|
sql += `,
|
||||||
|
IF(t3.jx_sku_id > 0, t3.jx_sku_id, t3.sku_id) sku_id,
|
||||||
|
t3.count sku_count2,
|
||||||
|
t3.shop_price sku_shop_price,
|
||||||
|
t3.earning_price sku_earning_price,
|
||||||
|
t3.sale_price sku_sale_price,
|
||||||
|
t3.sku_name`
|
||||||
|
}
|
||||||
|
sql += `
|
||||||
|
FROM goods_order t1
|
||||||
|
LEFT JOIN waybill t2 ON t1.vendor_waybill_id = t2.vendor_waybill_id AND t1.waybill_vendor_id = t2.waybill_vendor_id
|
||||||
|
LEFT JOIN store t5 ON t5.id = IF(t1.jx_store_id <> 0, t1.jx_store_id, t1.store_id)
|
||||||
|
LEFT JOIN place city ON city.code = t5.city_code
|
||||||
|
LEFT JOIN place district ON district.code = t5.district_code`
|
||||||
|
if isIncludeSku {
|
||||||
|
sql += `
|
||||||
|
JOIN order_sku t3 ON t3.vendor_order_id = t1.vendor_order_id AND t3.vendor_id = t1.vendor_id`
|
||||||
|
}
|
||||||
|
sqlWhere := " WHERE 1 = 1"
|
||||||
|
var (
|
||||||
|
sqlParams []interface{}
|
||||||
|
)
|
||||||
|
if len(ids) > 0 { // 如果给定了ids,忽略其它所有条件
|
||||||
|
sqlWhere += " AND t1.id IN (" + GenQuestionMarks(len(ids)) + ")"
|
||||||
|
sqlParams = append(sqlParams, ids)
|
||||||
|
} else {
|
||||||
|
// 如果搜索关键字可能为订单号,则当成订单号查询
|
||||||
|
if params["keyword"] != nil {
|
||||||
|
if jxutils.GetPossibleVendorIDFromVendorOrderID(params["keyword"].(string)) > model.VendorIDUnknown {
|
||||||
|
params["vendorOrderID"] = params["keyword"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if params["orderID"] != nil || params["vendorOrderID"] != nil {
|
||||||
|
sqlWhere += " AND (t1.vendor_order_id = ? OR t1.vendor_order_id2 = ?)"
|
||||||
|
vendorOrderID := params["vendorOrderID"]
|
||||||
|
if vendorOrderID == nil {
|
||||||
|
vendorOrderID = params["orderID"]
|
||||||
|
}
|
||||||
|
sqlParams = []interface{}{
|
||||||
|
vendorOrderID,
|
||||||
|
vendorOrderID,
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
timeList, err2 := jxutils.BatchStr2Time(fromDateStr, toDateStr)
|
||||||
|
if err = err2; err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
if utils.IsTimeZero(timeList[0]) {
|
||||||
|
return nil, 0, fmt.Errorf("在没有指定订单号时,必须指定查询日期范围")
|
||||||
|
}
|
||||||
|
if utils.IsTimeZero(timeList[1]) {
|
||||||
|
timeList[1] = timeList[0]
|
||||||
|
}
|
||||||
|
timeList[1] = timeList[1].Add(24 * time.Hour)
|
||||||
|
if isDateFinish {
|
||||||
|
sqlWhere += `
|
||||||
|
AND t1.order_finished_at >= ? AND t1.order_finished_at < ?`
|
||||||
|
} else {
|
||||||
|
sqlWhere += `
|
||||||
|
AND t1.order_created_at >= ? AND t1.order_created_at < ?`
|
||||||
|
}
|
||||||
|
sqlParams = []interface{}{
|
||||||
|
timeList[0],
|
||||||
|
timeList[1],
|
||||||
|
}
|
||||||
|
if params["keyword"] != nil {
|
||||||
|
keyword := params["keyword"].(string)
|
||||||
|
keywordLike := "%" + keyword + "%"
|
||||||
|
sqlWhere += `
|
||||||
|
AND (t1.store_name LIKE ? OR t1.vendor_order_id LIKE ? OR t1.vendor_order_id2 LIKE ? OR t1.vendor_store_id LIKE ?
|
||||||
|
OR t1.consignee_name LIKE ? OR t1.consignee_mobile LIKE ? OR t1.consignee_mobile2 LIKE ? OR t1.consignee_address LIKE ?
|
||||||
|
OR t2.vendor_waybill_id LIKE ? OR t2.courier_name LIKE ? OR t2.courier_mobile LIKE ?
|
||||||
|
`
|
||||||
|
sqlParams = append(sqlParams, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike)
|
||||||
|
if keywordInt64, err2 := strconv.ParseInt(keyword, 10, 64); err2 == nil {
|
||||||
|
sqlWhere += " OR t1.store_id = ? OR t1.jx_store_id = ?"
|
||||||
|
sqlParams = append(sqlParams, keywordInt64, keywordInt64)
|
||||||
|
}
|
||||||
|
sqlWhere += ")"
|
||||||
|
}
|
||||||
|
if params["waybillVendorIDs"] != nil {
|
||||||
|
var waybillVendorIDs []int
|
||||||
|
if err = utils.UnmarshalUseNumber([]byte(params["waybillVendorIDs"].(string)), &waybillVendorIDs); err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
if len(waybillVendorIDs) > 0 {
|
||||||
|
sqlWhere += " AND t1.waybill_vendor_id IN (" + GenQuestionMarks(len(waybillVendorIDs)) + ")"
|
||||||
|
sqlParams = append(sqlParams, waybillVendorIDs)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if params["storeIDs"] != nil {
|
||||||
|
var storeIDs []int
|
||||||
|
if err = utils.UnmarshalUseNumber([]byte(params["storeIDs"].(string)), &storeIDs); err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
if len(storeIDs) > 0 {
|
||||||
|
if storeIDs[0] == 0 { // 容错
|
||||||
|
sqlWhere += " AND 1 = 0"
|
||||||
|
} else {
|
||||||
|
sqlWhere += " AND IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) IN (" + GenQuestionMarks(len(storeIDs)) + ")"
|
||||||
|
sqlParams = append(sqlParams, storeIDs)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if params["statuss"] != nil {
|
||||||
|
var statuss []int
|
||||||
|
if err = utils.UnmarshalUseNumber([]byte(params["statuss"].(string)), &statuss); err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
if len(statuss) > 0 {
|
||||||
|
sqlWhere += " AND t1.status IN (" + GenQuestionMarks(len(statuss)) + ")"
|
||||||
|
sqlParams = append(sqlParams, statuss)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if params["lockStatuss"] != nil {
|
||||||
|
var lockStatuss []int
|
||||||
|
if err = utils.UnmarshalUseNumber([]byte(params["lockStatuss"].(string)), &lockStatuss); err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
if len(lockStatuss) > 0 {
|
||||||
|
sqlWhere += " AND t1.lock_status IN (" + GenQuestionMarks(len(lockStatuss)) + ")"
|
||||||
|
sqlParams = append(sqlParams, lockStatuss)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if params["cities"] != nil {
|
||||||
|
var cities []int
|
||||||
|
if err = utils.UnmarshalUseNumber([]byte(params["cities"].(string)), &cities); err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
if len(cities) > 0 {
|
||||||
|
sqlWhere += " AND t5.city_code IN (" + GenQuestionMarks(len(cities)) + ") AND t5.id IS NOT NULL"
|
||||||
|
sqlParams = append(sqlParams, cities)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !isIncludeFake {
|
||||||
|
sqlWhere += " AND (t1.flag & ?) = 0"
|
||||||
|
sqlParams = append(sqlParams, model.OrderFlagMaskFake)
|
||||||
|
}
|
||||||
|
if len(skuIDs) > 0 {
|
||||||
|
sqlWhere += " AND (SELECT COUNT(*) FROM order_sku t11 WHERE t11.vendor_order_id = t1.vendor_order_id AND t11.vendor_id = t1.vendor_id AND t11.jx_sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")) > 0"
|
||||||
|
sqlParams = append(sqlParams, skuIDs)
|
||||||
|
}
|
||||||
|
if params["adjustCount"] != nil {
|
||||||
|
sqlWhere += " AND t1.adjust_count >= ?"
|
||||||
|
sqlParams = append(sqlParams, params["adjustCount"])
|
||||||
|
}
|
||||||
|
if mustInvoice, ok := params["mustInvoice"].(bool); ok && mustInvoice {
|
||||||
|
sqlWhere += " AND t1.invoice_taxer_id <> ''"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if params["vendorIDs"] != nil {
|
||||||
|
var vendorIDs []int
|
||||||
|
if err = utils.UnmarshalUseNumber([]byte(params["vendorIDs"].(string)), &vendorIDs); err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
if len(vendorIDs) > 0 {
|
||||||
|
sqlWhere += " AND t1.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
|
||||||
|
sqlParams = append(sqlParams, vendorIDs)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if userID != "" {
|
||||||
|
sqlWhere += " AND t1.user_id = ?"
|
||||||
|
sqlParams = append(sqlParams, userID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sql += sqlWhere
|
||||||
|
if isJxFirst {
|
||||||
|
sql += `
|
||||||
|
ORDER BY IF(t1.status < ?, IF(t1.vendor_id = ?, 0, 1), 0), t1.order_created_at DESC`
|
||||||
|
sqlParams = append(sqlParams, model.OrderStatusEndBegin, model.VendorIDJX)
|
||||||
|
} else {
|
||||||
|
if isIncludeSku {
|
||||||
|
sql += `
|
||||||
|
ORDER BY t1.id`
|
||||||
|
} else {
|
||||||
|
sql += `
|
||||||
|
ORDER BY t1.order_created_at DESC`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sql += `
|
||||||
|
LIMIT ? OFFSET ?`
|
||||||
|
sqlParams = append(sqlParams, pageSize, offset)
|
||||||
|
|
||||||
|
Begin(db)
|
||||||
|
defer Commit(db)
|
||||||
|
if err = GetRows(db, &orders, sql, sqlParams...); err == nil {
|
||||||
|
totalCount = GetLastTotalRowCount(db)
|
||||||
|
}
|
||||||
|
return orders, totalCount, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"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/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -38,8 +39,8 @@ func GetUserByID(db *DaoDB, fieldName, fieldValue string) (user *model.User, err
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetUsers(db *DaoDB, userType int, keyword string, userIDs []string, userID2, mobile string, offset, pageSize int) (userList []*model.User, totalCount int, err error) {
|
func GetUsers(db *DaoDB, userType int, keyword string, userIDs []string, userID2, mobile string, offset, pageSize int) (userList []*model.User, totalCount int, err error) {
|
||||||
offset = FormalizePageOffset(offset)
|
offset = jxutils.FormalizePageOffset(offset)
|
||||||
pageSize = FormalizePageSize(pageSize)
|
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||||
if userType == 0 {
|
if userType == 0 {
|
||||||
userType = 255
|
userType = 255
|
||||||
}
|
}
|
||||||
@@ -182,8 +183,8 @@ func QueryUserDeliveryAddress(db *DaoDB, addressID int64, userIDs []string, offs
|
|||||||
sql += " AND t1.user_id IN (" + GenQuestionMarks(len(userIDs)) + ")"
|
sql += " AND t1.user_id IN (" + GenQuestionMarks(len(userIDs)) + ")"
|
||||||
sqlParams = append(sqlParams, userIDs)
|
sqlParams = append(sqlParams, userIDs)
|
||||||
}
|
}
|
||||||
offset = FormalizePageOffset(offset)
|
offset = jxutils.FormalizePageOffset(offset)
|
||||||
pageSize = FormalizePageSize(pageSize)
|
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||||
sql += `
|
sql += `
|
||||||
ORDER BY t1.is_default DESC, t1.consignee_name
|
ORDER BY t1.is_default DESC, t1.consignee_name
|
||||||
LIMIT ? OFFSET ?`
|
LIMIT ? OFFSET ?`
|
||||||
|
|||||||
@@ -201,18 +201,10 @@ func IsVendorThingIDEmpty(vendorThingID string) bool {
|
|||||||
return vendorThingID == "" || vendorThingID == "0"
|
return vendorThingID == "" || vendorThingID == "0"
|
||||||
}
|
}
|
||||||
|
|
||||||
func FormalizePageSize(pageSize int) int {
|
func GetAuthType4Vendor(vendorID int) (authType string) {
|
||||||
if pageSize == 0 {
|
authType = ConvertJsonFieldPrefix(model.VendorNames[vendorID])
|
||||||
return model.DefPageSize
|
if authType != "" {
|
||||||
} else if pageSize < 0 {
|
authType = "vendor." + authType
|
||||||
return model.UnlimitedPageSize
|
|
||||||
}
|
}
|
||||||
return pageSize
|
return authType
|
||||||
}
|
|
||||||
|
|
||||||
func FormalizePageOffset(offset int) int {
|
|
||||||
if offset < 0 {
|
|
||||||
offset = 0
|
|
||||||
}
|
|
||||||
return offset
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package dao
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"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/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -72,8 +73,8 @@ func QueryFoodRecipes(db *DaoDB, keyword string, recipeID int, authorID, userID
|
|||||||
) > 0`
|
) > 0`
|
||||||
sqlParams = append(sqlParams, skuIDs)
|
sqlParams = append(sqlParams, skuIDs)
|
||||||
}
|
}
|
||||||
offset = FormalizePageOffset(offset)
|
offset = jxutils.FormalizePageOffset(offset)
|
||||||
pageSize = FormalizePageSize(pageSize)
|
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||||
sql += `
|
sql += `
|
||||||
ORDER BY t1.created_at DESC
|
ORDER BY t1.created_at DESC
|
||||||
LIMIT ? OFFSET ?`
|
LIMIT ? OFFSET ?`
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
|
|
||||||
func TestQueryRecipes(t *testing.T) {
|
func TestQueryRecipes(t *testing.T) {
|
||||||
db := GetDB()
|
db := GetDB()
|
||||||
recipeList, _, err := QueryFoodRecipes(db, "", 0, "", "", 0, 0)
|
recipeList, _, err := QueryFoodRecipes(db, "", 0, "", "", nil, 0, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package dao
|
package dao
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -76,8 +77,8 @@ func QueryPageStores(db *DaoDB, pageSize, offset int, keyword string, vendorStor
|
|||||||
ORDER BY t1.recent_order_num DESC
|
ORDER BY t1.recent_order_num DESC
|
||||||
LIMIT ? OFFSET ?
|
LIMIT ? OFFSET ?
|
||||||
`
|
`
|
||||||
pageSize = FormalizePageSize(pageSize)
|
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||||
offset = FormalizePageOffset(offset)
|
offset = jxutils.FormalizePageOffset(offset)
|
||||||
sqlParams = append(sqlParams, pageSize, offset)
|
sqlParams = append(sqlParams, pageSize, offset)
|
||||||
var shopList []*PageShopWithPlaceName
|
var shopList []*PageShopWithPlaceName
|
||||||
Begin(db)
|
Begin(db)
|
||||||
|
|||||||
@@ -138,10 +138,10 @@ type SkuCategory struct {
|
|||||||
EbaiCategoryID int64 `orm:"column(ebai_category_id)" json:"ebaiCategoryID"` // 这个是指对应的饿百商品类别
|
EbaiCategoryID int64 `orm:"column(ebai_category_id)" json:"ebaiCategoryID"` // 这个是指对应的饿百商品类别
|
||||||
MtwmCategoryID int64 `orm:"column(mtwm_category_id)" json:"mtwmCategoryID"` // 这个是指对应的美团外卖商品类别
|
MtwmCategoryID int64 `orm:"column(mtwm_category_id)" json:"mtwmCategoryID"` // 这个是指对应的美团外卖商品类别
|
||||||
|
|
||||||
ElmCategoryID int64 `orm:"column(elm_category_id)" json:"elmCategoryID"` // 这个是指对应的饿了么商品类别
|
// ElmCategoryID int64 `orm:"column(elm_category_id)" json:"elmCategoryID"` // 这个是指对应的饿了么商品类别
|
||||||
WscCategoryID int64 `orm:"column(wsc_category_id)" json:"wscCategoryID"` // 这个是指对应的美团外卖商品类别
|
// WscCategoryID int64 `orm:"column(wsc_category_id)" json:"wscCategoryID"` // 这个是指对应的美团外卖商品类别
|
||||||
|
|
||||||
JdID int64 `orm:"column(jd_id);null" json:"jdID"` // 这个是指商家自己的商品类别在京东平台上的ID
|
JdID int64 `orm:"column(jd_id)" json:"jdID"` // 这个是指商家自己的商品类别在京东平台上的ID
|
||||||
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,8 +36,10 @@ type DeliveryHandler struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
curDeliveryHandler = new(DeliveryHandler)
|
if api.MtpsAPI != nil {
|
||||||
partner.RegisterDeliveryPlatform(curDeliveryHandler, true)
|
curDeliveryHandler = new(DeliveryHandler)
|
||||||
|
partner.RegisterDeliveryPlatform(curDeliveryHandler, true)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *DeliveryHandler) GetVendorID() int {
|
func (c *DeliveryHandler) GetVendorID() int {
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ type IOrderManager interface {
|
|||||||
|
|
||||||
OnWaybillStatusChanged(bill *model.Waybill) (err error)
|
OnWaybillStatusChanged(bill *model.Waybill) (err error)
|
||||||
|
|
||||||
|
CreateAfsOrderFromOrder(vendorOrderID string, vendorID int) (afsOrder *model.AfsOrder, err error)
|
||||||
LoadOrder(vendorOrderID string, vendorID int) (order *model.GoodsOrder, err error)
|
LoadOrder(vendorOrderID string, vendorID int) (order *model.GoodsOrder, err error)
|
||||||
LoadOrder2(vendorOrderID2 string, vendorID int) (order *model.GoodsOrder, err error)
|
LoadOrder2(vendorOrderID2 string, vendorID int) (order *model.GoodsOrder, err error)
|
||||||
|
|
||||||
@@ -190,6 +191,10 @@ func (p *BasePurchasePlatform) GetStatusActionTimeout(order *model.GoodsOrder, s
|
|||||||
return params
|
return params
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *BasePurchasePlatform) CanSwitch2SelfDeliver(order *model.GoodsOrder) (isCan bool, err error) {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
PurchasePlatformHandlers = make(map[int]IPurchasePlatformHandler)
|
PurchasePlatformHandlers = make(map[int]IPurchasePlatformHandler)
|
||||||
PurchaseOrderHandlers = make(map[int]IPurchasePlatformOrderHandler)
|
PurchaseOrderHandlers = make(map[int]IPurchasePlatformOrderHandler)
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ type IPurchasePlatformOrderHandler interface {
|
|||||||
CallCourier(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) // 取货失败后再次招唤平台配送
|
CallCourier(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) // 取货失败后再次招唤平台配送
|
||||||
ConfirmReceiveGoods(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) // 投递失败后确认收到退货
|
ConfirmReceiveGoods(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) // 投递失败后确认收到退货
|
||||||
|
|
||||||
|
// 是否可能转商家自送
|
||||||
|
CanSwitch2SelfDeliver(order *model.GoodsOrder) (isCan bool, err error)
|
||||||
// 将订单从购物平台配送转为自送
|
// 将订单从购物平台配送转为自送
|
||||||
Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error)
|
Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error)
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ const (
|
|||||||
fakeUserUndoApplyCancel = "fake_user_undo_apply_cancel"
|
fakeUserUndoApplyCancel = "fake_user_undo_apply_cancel"
|
||||||
fakeAcceptOrder = "fake_accept_order"
|
fakeAcceptOrder = "fake_accept_order"
|
||||||
fakeOrderAdjustFinished = "fake_order_adjust_finished"
|
fakeOrderAdjustFinished = "fake_order_adjust_finished"
|
||||||
|
fakeOrderCanceled = "fake_order_canceled"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 饿百的接单会直接召唤配送,为了统一将饿百的接单影射成拣货完成,然后模拟一个接单消息
|
// 饿百的接单会直接召唤配送,为了统一将饿百的接单影射成拣货完成,然后模拟一个接单消息
|
||||||
@@ -50,6 +51,7 @@ var (
|
|||||||
fakeOrderAdjustFinished: model.OrderStatusAdjust,
|
fakeOrderAdjustFinished: model.OrderStatusAdjust,
|
||||||
fakeUserApplyCancel: model.OrderStatusApplyCancel,
|
fakeUserApplyCancel: model.OrderStatusApplyCancel,
|
||||||
fakeUserUndoApplyCancel: model.OrderStatusUndoApplyCancel,
|
fakeUserUndoApplyCancel: model.OrderStatusUndoApplyCancel,
|
||||||
|
fakeOrderCanceled: model.OrderStatusCanceled,
|
||||||
}
|
}
|
||||||
|
|
||||||
skuActTypeMap = map[string]int{
|
skuActTypeMap = map[string]int{
|
||||||
@@ -341,8 +343,11 @@ func (p *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName s
|
|||||||
if err = api.EbaiAPI.OrderSwitchselfdelivery(order.VendorOrderID); err != nil {
|
if err = api.EbaiAPI.OrderSwitchselfdelivery(order.VendorOrderID); err != nil {
|
||||||
if utils.IsErrMatch(err, "301251", nil) {
|
if utils.IsErrMatch(err, "301251", nil) {
|
||||||
if deliveryStatus, err2 := api.EbaiAPI.OrderDeliveryGet(order.VendorOrderID); err2 == nil {
|
if deliveryStatus, err2 := api.EbaiAPI.OrderDeliveryGet(order.VendorOrderID); err2 == nil {
|
||||||
if utils.Int64ToStr(utils.MustInterface2Int64(deliveryStatus["status"])) == ebaiapi.WaybillStatusSelfDelivery {
|
deliveryStatus := utils.Int64ToStr(utils.MustInterface2Int64(deliveryStatus["status"]))
|
||||||
|
if deliveryStatus == ebaiapi.WaybillStatusSelfDelivery {
|
||||||
err = nil
|
err = nil
|
||||||
|
} else if deliveryStatus == ebaiapi.WaybillStatusDeliveryCancled {
|
||||||
|
p.trySyncCancelStatus(order.VendorOrderID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -355,6 +360,16 @@ func (p *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName s
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) trySyncCancelStatus(vendorOrderID string) (err error) {
|
||||||
|
orderInfo, err := api.EbaiAPI.OrderGet2(vendorOrderID)
|
||||||
|
if err == nil {
|
||||||
|
if utils.Int2Str(orderInfo.Order.Status) == ebaiapi.OrderStatusCanceled {
|
||||||
|
p.postFakeMsg(vendorOrderID, fakeOrderCanceled)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// 将订单从购物平台配送转为自送后又送达
|
// 将订单从购物平台配送转为自送后又送达
|
||||||
func (p *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) {
|
func (p *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) {
|
||||||
globals.SugarLogger.Debugf("ebai Swtich2SelfDelivered orderID:%s", order.VendorOrderID)
|
globals.SugarLogger.Debugf("ebai Swtich2SelfDelivered orderID:%s", order.VendorOrderID)
|
||||||
|
|||||||
@@ -101,8 +101,9 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaia
|
|||||||
afsOrder.Skus = append(afsOrder.Skus, orderSku)
|
afsOrder.Skus = append(afsOrder.Skus, orderSku)
|
||||||
}
|
}
|
||||||
} else if msg.Cmd == ebaiapi.CmdOrderUserCancel {
|
} else if msg.Cmd == ebaiapi.CmdOrderUserCancel {
|
||||||
if orderFinancial, err2 := partner.CurOrderManager.LoadOrderFinancial(orderStatus.RefVendorOrderID, model.VendorIDEBAI); err2 == nil {
|
if afsOrder := c.createAfsOrder(msg); afsOrder != nil {
|
||||||
afsOrder = c.OrderFinancialDetail2Refund(orderFinancial, msg)
|
// if orderFinancial, err2 := partner.CurOrderManager.LoadOrderFinancial(orderStatus.RefVendorOrderID, model.VendorIDEBAI); err2 == nil {
|
||||||
|
// afsOrder = c.OrderFinancialDetail2Refund(orderFinancial, msg)
|
||||||
cancelData := msg.Data.(*ebaiapi.CBUserCancelInfo)
|
cancelData := msg.Data.(*ebaiapi.CBUserCancelInfo)
|
||||||
afsOrder.AfsOrderID = orderStatus.VendorOrderID
|
afsOrder.AfsOrderID = orderStatus.VendorOrderID
|
||||||
afsOrder.RefundType = model.AfsTypeFullRefund
|
afsOrder.RefundType = model.AfsTypeFullRefund
|
||||||
@@ -124,6 +125,18 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaia
|
|||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) createAfsOrder(msg *ebaiapi.CallbackMsg) (afsOrder *model.AfsOrder) {
|
||||||
|
cancelData := msg.Data.(*ebaiapi.CBUserCancelInfo)
|
||||||
|
afsOrder, err := partner.CurOrderManager.CreateAfsOrderFromOrder(utils.Int64ToStr(cancelData.OrderID), model.VendorIDEBAI)
|
||||||
|
if err == nil {
|
||||||
|
afsOrder.AfsOrderID = afsOrder.VendorOrderID
|
||||||
|
afsOrder.AfsCreatedAt = utils.Timestamp2Time(msg.Timestamp)
|
||||||
|
} else {
|
||||||
|
afsOrder = nil
|
||||||
|
}
|
||||||
|
return afsOrder
|
||||||
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) convertAfsReasonType(vendorReasonType string) int8 {
|
func (c *PurchaseHandler) convertAfsReasonType(vendorReasonType string) int8 {
|
||||||
return model.AfsReasonNotOthers
|
return model.AfsReasonNotOthers
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package ebai
|
package ebai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
"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/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
@@ -9,6 +11,10 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
timeout4WaybillCancel = 10 * time.Minute // 饿百发送运单取消消息10分钟后,如果没有转自送,就要取消订单,且不再发送订单取消消息
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
VendorWaybillStatus2StatusMap = map[string]int{
|
VendorWaybillStatus2StatusMap = map[string]int{
|
||||||
ebaiapi.WaybillStatusNew: model.WaybillStatusUnknown,
|
ebaiapi.WaybillStatusNew: model.WaybillStatusUnknown,
|
||||||
@@ -44,6 +50,14 @@ func (c *PurchaseHandler) onWaybillMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiap
|
|||||||
order.CourierName = utils.Interface2String(result["name"])
|
order.CourierName = utils.Interface2String(result["name"])
|
||||||
order.CourierMobile = utils.Interface2String(result["phone"])
|
order.CourierMobile = utils.Interface2String(result["phone"])
|
||||||
}
|
}
|
||||||
|
} else if order.Status == model.WaybillStatusCanceled {
|
||||||
|
utils.AfterFuncWithRecover(timeout4WaybillCancel, func() {
|
||||||
|
if localOrder, err2 := partner.CurOrderManager.LoadOrder(order.VendorOrderID, model.VendorIDEBAI); err2 == nil {
|
||||||
|
if localOrder.Status < model.OrderStatusEndBegin {
|
||||||
|
c.trySyncCancelStatus(order.VendorOrderID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
return api.EbaiAPI.Err2CallbackResponse(msg.Cmd, partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
return api.EbaiAPI.Err2CallbackResponse(msg.Cmd, partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,6 +100,39 @@ func init() {
|
|||||||
orderNoBeginTimestamp = utils.Str2Time("2010-01-01 00:00:00").Unix()
|
orderNoBeginTimestamp = utils.Str2Time("2010-01-01 00:00:00").Unix()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetMyOrders(ctx *jxcontext.Context, fromDateStr, toDateStr string, params map[string]interface{}, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
||||||
|
db := dao.GetDB()
|
||||||
|
tmpOrderList, totalCount, err := dao.GetOrders(db, nil, false, false, fromDateStr, toDateStr, false, nil, false, ctx.GetUserID(), params, offset, pageSize)
|
||||||
|
if err == nil {
|
||||||
|
pagedInfo = &model.PagedInfo{
|
||||||
|
TotalCount: totalCount,
|
||||||
|
}
|
||||||
|
if totalCount > 0 {
|
||||||
|
var ids []int64
|
||||||
|
for _, v := range tmpOrderList {
|
||||||
|
ids = append(ids, v.ID)
|
||||||
|
}
|
||||||
|
orderSkuList, _, err2 := dao.GetOrders(db, ids, true, false, "", "", false, nil, false, "", nil, 0, model.UnlimitedPageSize)
|
||||||
|
if err = err2; err == nil {
|
||||||
|
orderMap := make(map[string]*model.GoodsOrderExt)
|
||||||
|
var orderList []*model.GoodsOrderExt
|
||||||
|
for _, v := range orderSkuList {
|
||||||
|
universalOrderID := jxutils.ComposeUniversalOrderID(v.VendorOrderID, v.VendorID)
|
||||||
|
if orderMap[universalOrderID] == nil {
|
||||||
|
orderMap[universalOrderID] = v
|
||||||
|
orderList = append(orderList, v)
|
||||||
|
}
|
||||||
|
orderMap[universalOrderID].SkuList = append(orderMap[universalOrderID].SkuList, &v.ShortSkuInfo)
|
||||||
|
}
|
||||||
|
pagedInfo.Data = orderList
|
||||||
|
} else {
|
||||||
|
pagedInfo = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return pagedInfo, err
|
||||||
|
}
|
||||||
|
|
||||||
func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64, createType int) (outJxOrder *JxOrderInfo, err error) {
|
func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64, createType int) (outJxOrder *JxOrderInfo, err error) {
|
||||||
outJxOrder, deliveryAddress, err := generateOrder(ctx, jxOrder, addressID)
|
outJxOrder, deliveryAddress, err := generateOrder(ctx, jxOrder, addressID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -468,6 +468,11 @@ func (p *PurchaseHandler) ConfirmReceiveGoods(ctx *jxcontext.Context, order *mod
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 美团预定单不能转商家自送
|
||||||
|
func (c *PurchaseHandler) CanSwitch2SelfDeliver(order *model.GoodsOrder) (isCan bool, err error) {
|
||||||
|
return order.BusinessType != model.BusinessTypeDingshida, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) {
|
func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) {
|
||||||
globals.SugarLogger.Debugf("mtwm Swtich2SelfDeliver orderID:%s", order.VendorOrderID)
|
globals.SugarLogger.Debugf("mtwm Swtich2SelfDeliver orderID:%s", order.VendorOrderID)
|
||||||
if globals.EnableMtwmStoreWrite {
|
if globals.EnableMtwmStoreWrite {
|
||||||
|
|||||||
@@ -142,47 +142,15 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwma
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) createAfsOrder(orderData url.Values) (afsOrder *model.AfsOrder) {
|
func (p *PurchaseHandler) createAfsOrder(orderData url.Values) (afsOrder *model.AfsOrder) {
|
||||||
afsOrder = &model.AfsOrder{
|
afsOrder, err := partner.CurOrderManager.CreateAfsOrderFromOrder(orderData.Get("refund_id"), model.VendorIDMTWM)
|
||||||
VendorID: model.VendorIDMTWM,
|
|
||||||
AfsOrderID: orderData.Get("refund_id"),
|
|
||||||
VendorOrderID: orderData.Get("order_id"),
|
|
||||||
AfsCreatedAt: utils.Timestamp2Time(utils.Str2Int64(orderData.Get("timestamp"))),
|
|
||||||
}
|
|
||||||
if afsOrder.AfsOrderID == "" {
|
|
||||||
afsOrder.AfsOrderID = afsOrder.VendorOrderID
|
|
||||||
}
|
|
||||||
order, err := partner.CurOrderManager.LoadOrder(afsOrder.VendorOrderID, afsOrder.VendorID)
|
|
||||||
globals.SugarLogger.Debug(utils.Format4Output(order, false))
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
afsOrder.JxStoreID = order.JxStoreID
|
afsOrder.AfsOrderID = orderData.Get("refund_id")
|
||||||
afsOrder.VendorStoreID = order.VendorStoreID
|
afsOrder.AfsCreatedAt = utils.Timestamp2Time(utils.Str2Int64(orderData.Get("timestamp")))
|
||||||
afsOrder.StoreID = order.StoreID
|
if afsOrder.AfsOrderID == "" {
|
||||||
} else {
|
afsOrder.AfsOrderID = afsOrder.VendorOrderID
|
||||||
globals.SugarLogger.Warnf("mtwm AfsOrderDetail2Financial, afsOrderID:%s is not found from partner.CurOrderManager.LoadOrder", afsOrder.VendorOrderID)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, sku := range order.Skus {
|
|
||||||
orderSkuFinancial := &model.OrderSkuFinancial{
|
|
||||||
VendorID: sku.VendorID,
|
|
||||||
VendorOrderID: sku.VendorOrderID,
|
|
||||||
// OrderFinancialID: sku.VendorOrderID,
|
|
||||||
// ConfirmTime: afsOrder.AfsCreateAt,
|
|
||||||
VendorStoreID: afsOrder.VendorStoreID,
|
|
||||||
StoreID: afsOrder.StoreID,
|
|
||||||
JxStoreID: afsOrder.JxStoreID,
|
|
||||||
VendorSkuID: sku.VendorSkuID,
|
|
||||||
SkuID: sku.SkuID,
|
|
||||||
PromotionType: sku.PromotionType,
|
|
||||||
Name: sku.SkuName,
|
|
||||||
ShopPrice: sku.ShopPrice,
|
|
||||||
SalePrice: sku.SalePrice,
|
|
||||||
Count: sku.Count,
|
|
||||||
// UserMoney: sku.UserMoney,
|
|
||||||
// PmSubsidyMoney: sku.PmSubsidyMoney,
|
|
||||||
IsAfsOrder: 1,
|
|
||||||
}
|
}
|
||||||
afsOrder.Skus = append(afsOrder.Skus, orderSkuFinancial)
|
} else {
|
||||||
|
afsOrder = nil
|
||||||
}
|
}
|
||||||
return afsOrder
|
return afsOrder
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ wxpayNotifyURL = "http://callback.test.jxc4.com/wxpay/msg/"
|
|||||||
backstageHost = "http://www.jxc4.com"
|
backstageHost = "http://www.jxc4.com"
|
||||||
wxBackstageHost = "http://wx.jxc4.com"
|
wxBackstageHost = "http://wx.jxc4.com"
|
||||||
|
|
||||||
jdStorePageCookie = "YYJV3NHVBPHLD36FWP6F3EM5PTXJ2XZQS7U4HWRIDPP4IWGUKUIB4XG5N26CZRDLDF7PKOXBPD6BNTUAJLETLZOIWMCVFI3K6MYZIY4QBIXIMXYDJNUKFGJVQTN5356SAD6WPCIHWNQAG7DDMF7L7S3SHCT3RM3CQG7IJIPUQ3THS5UIUYWMKINM7ETUOQB7OBPOPZVCT3ZJY55243TDVXLO25PP4UYSPTTPMNQ7HPMWOJKJ3BJWGVHD243MXH7NZWW264TKN5UOCJBSSSOKD2QQII"
|
jdStorePageCookie = "OPJQMA7B3FTKCAUGO7FHCH5NMBGAWGGXYRNLEHYYZNGNPNIBCAM4IOEPG3NT3RIA44G5C3535Q5LGG4F4SR4AZVLGYKYTKFJJKEAOXENVBL5VXNILRP3GLNVVWA26XZ3VGSYOHA72RICMVZS3G53DTEH3LYUCSS54VI6WPOAGGDK532VYPEWWVCXUFRWENWDI4PEKM7SXBZ5BJO6DBLLERUA74YR2CVCGP4WUROCAHAMXKJ2VBGHTZYRL2DHR3BMXAHCTBAHYQLL24K5YI2PULRJL2UGAVD7VFRMEYTOXYHWCYVDXJ6HYFIPWIN3ULLXDDLN2ICON4GRK"
|
||||||
ebaiStorePageCookieWMUSS = "B0AAFQCAAAGbhkuMCsvcyYBDkkyAxBGIBlgXAQYVwc7VwYZFkx2HDoPSmo5eV1femopWgJRawhgAALG04cg1RUmhUakBbJRdgPS0tNEhnQhNRewwuWwYYBDEFPCQSDXV5YWA6PAVRHUJ9SnVGMThYAjNjLw9pRxIbS04-XFo05AQgBl%7ERLA33vWcR73gEAKZ"
|
ebaiStorePageCookieWMUSS = "B0AAFQCAAAGbhkuMCsvcyYBDkkyAxBGIBlgXAQYVwc7VwYZFkx2HDoPSmo5eV1femopWgJRawhgAALG04cg1RUmhUakBbJRdgPS0tNEhnQhNRewwuWwYYBDEFPCQSDXV5YWA6PAVRHUJ9SnVGMThYAjNjLw9pRxIbS04-XFo05AQgBl%7ERLA33vWcR73gEAKZ"
|
||||||
ebaiStorePageCookieWMSTOKEN = "gAALgNAAAGfBI5YEBHSQdZY1InIS8CVQU9aBU1f3VLWVQqKHAAAc5LnRLZ1QLLx0S5IuzCSX8ZQ7oUwAAUr-GEm9JpRc9AQAAsLkLHHXzuhh2lZkbyrcAAAWBESKg3ZA"
|
ebaiStorePageCookieWMSTOKEN = "gAALgNAAAGfBI5YEBHSQdZY1InIS8CVQU9aBU1f3VLWVQqKHAAAc5LnRLZ1QLLx0S5IuzCSX8ZQ7oUwAAUr-GEm9JpRc9AQAAsLkLHHXzuhh2lZkbyrcAAAWBESKg3ZA"
|
||||||
mtpsStoreToken = "M0p9VatZSeSHfrosD5IViAVl73IcA8mlcuHIV5sG6Zpv83a7JE0wY3t26aEhrrs_MR5gtLSFF1UIkt8HAjaXow"
|
mtpsStoreToken = "M0p9VatZSeSHfrosD5IViAVl73IcA8mlcuHIV5sG6Zpv83a7JE0wY3t26aEhrrs_MR5gtLSFF1UIkt8HAjaXow"
|
||||||
@@ -181,7 +181,7 @@ dbConnectStr = "root:WebServer@1@tcp(127.0.0.1:3306)/jxgy?charset=utf8mb4&loc=Lo
|
|||||||
jdToken = "84541069-fbe2-424b-b625-9b2ba1d4c9e6"
|
jdToken = "84541069-fbe2-424b-b625-9b2ba1d4c9e6"
|
||||||
jdAppKey = "5d5577a2506f41b8b4ec520ba83490f5"
|
jdAppKey = "5d5577a2506f41b8b4ec520ba83490f5"
|
||||||
jdSecret = "0b01b9eeb15b41dab1c3d05d95c17a26"
|
jdSecret = "0b01b9eeb15b41dab1c3d05d95c17a26"
|
||||||
jdStorePageCookie = "YDYCWYUGKSROMV3MKJQIFINJ5CLPYH6IRVFUMFJD3JI6VQKHX3YPHTWDIDBNMCBUKSY3P7SKAHHKR7PHQDSFRXZEWXA4XOUTALIQDGDYIEUCMDPWSYGDVT42DJ27CD27QKCR3UN7KF7EPIHGPR7GCRTBD6NFNB5MFIV6EPYE6RGXH6K2VN6O67WVPV5PLGYFIAKGHFCQNCPB4GL5IIBN4ARWFQ23OEMGXQRC77UCFGE7JOWTZG2KLEWZL5JBAVSZUYFDYFEFHXZNSJPWMFCADAJTUQ"
|
jdStorePageCookie = "YDYCWYUGKSROMV3MKJQIFINJ5CLPYH6IRVFUMFJD3JI6VQKHX3YPHTWDIDBNMCBUKSY3P7SKAHHKR7PHQDSFRXZEWXA4XOUTALIQDGDYIEUCMDPWSYGDVT42DJ27CD27QKCR3UN7KF7EPIHGPR7GCRTBD5DAHYMIODMDYESTI4PQWPK4CSWXGB2U4Y7R57ZUWN2T5LH4LE5SSAFFJCY53F5ZPCFR2RAUWYMCKHC4Y4QRFKYYLPHHZ2B3SCDWNLTVJOU24WJL4PVF3PPYDNTOLLXDABUFAZSE6C6CNOMI6L2TAK43JJIJQRQAQUQSU537ZFLVPGBYFDJYY"
|
||||||
|
|
||||||
ebaiSource = "35957"
|
ebaiSource = "35957"
|
||||||
ebaiSecret = "10013fbb7c2ddad7"
|
ebaiSecret = "10013fbb7c2ddad7"
|
||||||
@@ -229,6 +229,66 @@ getYLYTokenURL = "http://www.jxc4.com/v2/sys/GetYLYToken"
|
|||||||
|
|
||||||
storeName = "京西果园"
|
storeName = "京西果园"
|
||||||
|
|
||||||
|
[jd]
|
||||||
|
httpport = 8089
|
||||||
|
EnableDocs = false
|
||||||
|
|
||||||
|
dbConnectStr = "root:WebServer@1@tcp(127.0.0.1:3306)/jd?charset=utf8mb4&loc=Local&parseTime=true"
|
||||||
|
|
||||||
|
jdToken = "84541069-fbe2-424b-b625-9b2ba1d4c9e6"
|
||||||
|
jdAppKey = "5d5577a2506f41b8b4ec520ba83490f5"
|
||||||
|
jdSecret = "0b01b9eeb15b41dab1c3d05d95c17a26"
|
||||||
|
jdStorePageCookie = "YDYCWYUGKSROMV3MKJQIFINJ5CLPYH6IRVFUMFJD3JI6VQKHX3YPHTWDIDBNMCBUKSY3P7SKAHHKR7PHQDSFRXZEWXA4XOUTALIQDGDYIEUCMDPWSYGDVT42DJ27CD27QKCR3UN7KF7EPIHGPR7GCRTBD6NFNB5MFIV6EPYE6RGXH6K2VN6O67WVPV5PLGYFIAKGHFCQNCPB4GL5IIBN4ARWFQ23OEMGXQRC77UCFGE7JOWTZG2KLEWZL5JBAVSZUYFDYFEFHXZNSJPWMFCADAJTUQ"
|
||||||
|
|
||||||
|
disableEbai = true
|
||||||
|
# ebaiSource = "35957"
|
||||||
|
# ebaiSecret = "10013fbb7c2ddad7"
|
||||||
|
# ebaiStorePageCookieWMUSS = "YBAABKPRplPSpTCX4YSUAvSg8dSjYpIwF3FzBsGEw7agNbNT90GnwfbAYdBU5cjRX%7EjwAAMxhrUGEheAUicBtSXDIeGB0hclFgZ2tcBlhhIlwwfRBHaV8pClctLEhIfSR6HDwXPC5nHBVTeBsrWjwHCjoXUCN1eS1NBKLzB9E9WREwhfALlGMDAJsPmAwAAO"
|
||||||
|
# ebaiStorePageCookieWMSTOKEN = "gAAA4OkFSZBsOayRIAnRqd24YRRVvWgRFE2w2CGtjKlAIsYg1sNHEIQlwsBKLzB5sulw9nVQAA0tyyFu-F2xVbAQAAi6OrHIFNnBwgJlQdmb8AAHssrx9_zgABBgAABQ"
|
||||||
|
|
||||||
|
disableMtwm = true
|
||||||
|
# mtwmAppID = "4123"
|
||||||
|
# mtwmSecret = "df2c88338b85f830cebce2a9eab56628"
|
||||||
|
# mtwmCallbackURL = "http://callback-jxgy.jxc4.com"
|
||||||
|
|
||||||
|
enableStoreWrite = true
|
||||||
|
enableJdStoreWrite = true
|
||||||
|
# enableEbaiStoreWrite = true
|
||||||
|
# enableMtwmStoreWrite = true
|
||||||
|
|
||||||
|
disableMtps = true
|
||||||
|
# mtpsAppKey = "3c0a05d464c247c19d7ec13accc78605"
|
||||||
|
# mtpsSecret = "b1M}9?:sTbsB[OF2gNORnN(|(iy9rB8(`7]|[wGLnbmt`evfM>E:A90DjHAW:UPE"
|
||||||
|
|
||||||
|
dadaIsProd = true
|
||||||
|
dadaCallbackURL = "http://callback-jd.jxc4.com/dadadelivery/msg"
|
||||||
|
dadaSourceID = "6660"
|
||||||
|
|
||||||
|
weixinAppID = "wx2bb99eb5d2c9b82c"
|
||||||
|
weixinSecret = "6bbbed1443cc062c20a015a64c07a531"
|
||||||
|
|
||||||
|
weixinMiniAppID = "wx2d6949f724b2541d"
|
||||||
|
weixinMiniSecret = "11f3c380551c4683c149990b004d6df9"
|
||||||
|
|
||||||
|
wxpayNotifyURL = "http://callback-jd.jxc4.com/wxpay/msg/"
|
||||||
|
|
||||||
|
backstageHost = "http://www-jd.jxc4.com"
|
||||||
|
wxBackstageHost = "http://wx-jd.jxc4.com"
|
||||||
|
|
||||||
|
# dingdingAgentID = 258707199
|
||||||
|
# dingdingAppKey = "dingtozhutfr98qgwc7d"
|
||||||
|
# dingdingSecret = "7EJ0HDbkxQri-O2RSaYUu7_ZwvvMKtRVHT8cpyfvIvK6A9n9HRwPNCNRJFuEDeT_"
|
||||||
|
|
||||||
|
# dingdingQRCodeAppKey = "dingoaw990o1jm9jswvwib"
|
||||||
|
# dingdingQRCodeSecret = "N9dyC9qB84sauQPs4_JYrILMsG5Krqm9-PSSVJ8t9hb87rrHiFUirISxGF5G57RV"
|
||||||
|
|
||||||
|
dingdingCallbackURL = "http://callback-jd.jxc4.com/dingding/msg"
|
||||||
|
|
||||||
|
getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken"
|
||||||
|
getYLYTokenURL = "http://www.jxc4.com/v2/sys/GetYLYToken"
|
||||||
|
|
||||||
|
storeName = "京西京东"
|
||||||
|
|
||||||
[test]
|
[test]
|
||||||
jdToken = "df97f334-f7d8-4b36-9664-5784d8ae0baf"
|
jdToken = "df97f334-f7d8-4b36-9664-5784d8ae0baf"
|
||||||
jdAppKey = "06692746f7224695ad4788ce340bc854"
|
jdAppKey = "06692746f7224695ad4788ce340bc854"
|
||||||
|
|||||||
@@ -315,7 +315,7 @@ func (c *ActController) ForceUpdateVendorPrice() {
|
|||||||
c.callForceUpdateVendorPrice(func(params *tActForceUpdateVendorPriceParams) (retVal interface{}, errCode string, err error) {
|
c.callForceUpdateVendorPrice(func(params *tActForceUpdateVendorPriceParams) (retVal interface{}, errCode string, err error) {
|
||||||
var actStoreSkuList []*act.ActStoreSkuParam
|
var actStoreSkuList []*act.ActStoreSkuParam
|
||||||
if err = jxutils.Strings2Objs(params.ActStoreSkuList, &actStoreSkuList); err == nil {
|
if err = jxutils.Strings2Objs(params.ActStoreSkuList, &actStoreSkuList); err == nil {
|
||||||
act.ForceUpdateVendorPrice(params.Ctx, params.VendorID, params.Type, actStoreSkuList, params.IsAsync)
|
retVal, err = act.ForceUpdateVendorPrice(params.Ctx, params.VendorID, params.Type, actStoreSkuList, params.IsAsync)
|
||||||
}
|
}
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ type CmsController struct {
|
|||||||
|
|
||||||
// @Title 得到地点(省,城市,区)信息
|
// @Title 得到地点(省,城市,区)信息
|
||||||
// @Description 得到地点(省,城市,区)信息。
|
// @Description 得到地点(省,城市,区)信息。
|
||||||
|
// @Param token header string false "认证token"
|
||||||
// @Param keyword query string false "查询关键字(可以为空,为空表示不限制)"
|
// @Param keyword query string false "查询关键字(可以为空,为空表示不限制)"
|
||||||
// @Param parentCode query int false "上级地点code,这个指的是国家标准CODE(中国为:100000,北京为:110000,北京市为:110100),不是数据库中的ID"
|
// @Param parentCode query int false "上级地点code,这个指的是国家标准CODE(中国为:100000,北京为:110000,北京市为:110100),不是数据库中的ID"
|
||||||
// @Param level query int false "地点级别:省为1,市为2,区为3,注意直辖市也要分省与市级"
|
// @Param level query int false "地点级别:省为1,市为2,区为3,注意直辖市也要分省与市级"
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ func (c *FoodRecipeController) UpdateFoodRecipe() {
|
|||||||
|
|
||||||
// @Title 查询菜谱列表
|
// @Title 查询菜谱列表
|
||||||
// @Description 查询菜谱列表
|
// @Description 查询菜谱列表
|
||||||
|
// @Param token header string false "认证token"
|
||||||
// @Param keyword query string false "关键字"
|
// @Param keyword query string false "关键字"
|
||||||
// @Param authorID query string false "创建者ID"
|
// @Param authorID query string false "创建者ID"
|
||||||
// @Param skuIDs query string false "skuID列表"
|
// @Param skuIDs query string false "skuID列表"
|
||||||
@@ -92,6 +93,7 @@ func (c *FoodRecipeController) QueryFoodRecipes() {
|
|||||||
|
|
||||||
// @Title 得到我的推荐菜谱列表
|
// @Title 得到我的推荐菜谱列表
|
||||||
// @Description 得到我的推荐菜谱列表
|
// @Description 得到我的推荐菜谱列表
|
||||||
|
// @Param token header string false "认证token"
|
||||||
// @Param keyword query string false "关键字"
|
// @Param keyword query string false "关键字"
|
||||||
// @Param offset query int false "菜谱列表起始序号(以0开始,缺省为0)"
|
// @Param offset query int false "菜谱列表起始序号(以0开始,缺省为0)"
|
||||||
// @Param pageSize query int false "菜谱列表页大小(缺省为50,-1表示全部)"
|
// @Param pageSize query int false "菜谱列表页大小(缺省为50,-1表示全部)"
|
||||||
@@ -107,6 +109,7 @@ func (c *FoodRecipeController) GetRecommendFoodRecipes() {
|
|||||||
|
|
||||||
// @Title 得到菜谱详情
|
// @Title 得到菜谱详情
|
||||||
// @Description 得到菜谱详情
|
// @Description 得到菜谱详情
|
||||||
|
// @Param token header string false "认证token"
|
||||||
// @Param recipeID query int true "菜谱ID"
|
// @Param recipeID query int true "菜谱ID"
|
||||||
// @Success 200 {object} controllers.CallResult
|
// @Success 200 {object} controllers.CallResult
|
||||||
// @Failure 200 {object} controllers.CallResult
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ func (c *SkuController) GetVendorCategories() {
|
|||||||
|
|
||||||
// @Title 得到商品类别
|
// @Title 得到商品类别
|
||||||
// @Description 得到商品类别(区别于厂商家SKU类别)
|
// @Description 得到商品类别(区别于厂商家SKU类别)
|
||||||
|
// @Param token header string false "认证token"
|
||||||
// @Param parentID query int false "父ID,-1表示所有,缺省为-1"
|
// @Param parentID query int false "父ID,-1表示所有,缺省为-1"
|
||||||
// @Success 200 {object} controllers.CallResult
|
// @Success 200 {object} controllers.CallResult
|
||||||
// @Failure 200 {object} controllers.CallResult
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
|||||||
@@ -534,6 +534,7 @@ func (c *StoreController) SyncStoresCourierInfo() {
|
|||||||
|
|
||||||
// @Title 根据位置得到推荐门店列表
|
// @Title 根据位置得到推荐门店列表
|
||||||
// @Description 根据位置得到推荐门店列表
|
// @Description 根据位置得到推荐门店列表
|
||||||
|
// @Param token header string false "认证token"
|
||||||
// @Param lng query float64 true "经度"
|
// @Param lng query float64 true "经度"
|
||||||
// @Param lat query float64 true "纬度"
|
// @Param lat query float64 true "纬度"
|
||||||
// @Param needWalkDistance query bool false "是否需要返回步行距离(且以步行距离排序)"
|
// @Param needWalkDistance query bool false "是否需要返回步行距离(且以步行距离排序)"
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ func (c *StoreSkuController) GetStoreSkus() {
|
|||||||
|
|
||||||
// @Title 得到商家商品信息
|
// @Title 得到商家商品信息
|
||||||
// @Description 得到商家商品信息,如下条件之间是与的关系。对于没有认领的商品,按城市限制。但对于已经认领的商品就不限制了,因为已经在平台上可售,可以操作(改价等等)
|
// @Description 得到商家商品信息,如下条件之间是与的关系。对于没有认领的商品,按城市限制。但对于已经认领的商品就不限制了,因为已经在平台上可售,可以操作(改价等等)
|
||||||
|
// @Param token header string false "认证token"
|
||||||
// @Param storeIDs query string false "门店ID"
|
// @Param storeIDs query string false "门店ID"
|
||||||
// @Param isFocus query bool true "是否已关注(认领)"
|
// @Param isFocus query bool true "是否已关注(认领)"
|
||||||
// @Param keyword query string false "查询关键字(可以为空,为空表示不限制)"
|
// @Param keyword query string false "查询关键字(可以为空,为空表示不限制)"
|
||||||
|
|||||||
@@ -279,7 +279,6 @@ func (c *OrderController) ExportMTWaybills() {
|
|||||||
// @Param isJxFirst query bool false "排序是否京西订单优先(缺省为否)"
|
// @Param isJxFirst query bool false "排序是否京西订单优先(缺省为否)"
|
||||||
// @Param adjustCount query int false "最小调整次数"
|
// @Param adjustCount query int false "最小调整次数"
|
||||||
// @Param mustInvoice query bool false "是否必须要求开发票"
|
// @Param mustInvoice query bool false "是否必须要求开发票"
|
||||||
// @Param isPurchase query bool false "是否是用户自已的订单,如果角色只有consumer,会被强制设为true"
|
|
||||||
// @Param offset query int false "结果起始序号(以0开始,缺省为0)"
|
// @Param offset query int false "结果起始序号(以0开始,缺省为0)"
|
||||||
// @Param pageSize query int false "结果页大小(缺省为50,-1表示全部)"
|
// @Param pageSize query int false "结果页大小(缺省为50,-1表示全部)"
|
||||||
// @Success 200 {object} controllers.CallResult
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
|||||||
@@ -72,3 +72,23 @@ func (c *JxOrderController) GetOrderPay() {
|
|||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Title 查询自己的订单
|
||||||
|
// @Description 查询自己的订单
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param vendorOrderID query string false "订单号,如果此项不为空,忽略其它所有查询条件"
|
||||||
|
// @Param keyword query string false "查询关键字"
|
||||||
|
// @Param fromDate query string false "开始日期(包含),格式(2006-01-02),如果订单号为空此项必须要求"
|
||||||
|
// @Param toDate query string false "结束日期(包含),格式(2006-01-02),如果订单号为空此项必须要求"
|
||||||
|
// @Param statuss query string false "订单状态列表[1,2,3],缺省不限制"
|
||||||
|
// @Param offset query int false "结果起始序号(以0开始,缺省为0)"
|
||||||
|
// @Param pageSize query int false "结果页大小(缺省为50,-1表示全部)"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /GetMyOrders [get]
|
||||||
|
func (c *JxOrderController) GetMyOrders() {
|
||||||
|
c.callGetMyOrders(func(params *tJxorderGetMyOrdersParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
retVal, err = localjx.GetMyOrders(params.Ctx, params.FromDate, params.ToDate, params.MapData, params.Offset, params.PageSize)
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -66,8 +66,8 @@ func (c *NetSpiderController) QueryPageStores() {
|
|||||||
params.VendorID = -1
|
params.VendorID = -1
|
||||||
}
|
}
|
||||||
var lng, lat, lng1, lat1, lng2, lat2 float64
|
var lng, lat, lng1, lat1, lng2, lat2 float64
|
||||||
params.Offset = dao.FormalizePageOffset(params.Offset)
|
params.Offset = jxutils.FormalizePageOffset(params.Offset)
|
||||||
params.PageSize = dao.FormalizePageSize(params.PageSize)
|
params.PageSize = jxutils.FormalizePageSize(params.PageSize)
|
||||||
offset := params.Offset
|
offset := params.Offset
|
||||||
pageSize := params.PageSize
|
pageSize := params.PageSize
|
||||||
if params.Radius > 0 {
|
if params.Radius > 0 {
|
||||||
|
|||||||
@@ -610,6 +610,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: "GetMyOrders",
|
||||||
|
Router: `/GetMyOrders`,
|
||||||
|
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: "GetOrderPay",
|
Method: "GetOrderPay",
|
||||||
|
|||||||
Reference in New Issue
Block a user