到家商城的订单发通知消息
+Store.LinkStoreID
This commit is contained in:
56
business/jxcallback/orderman/fake_jd_order.go
Normal file
56
business/jxcallback/orderman/fake_jd_order.go
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
package orderman
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxutils/weixinmsg"
|
||||||
|
"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/api"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (c *OrderManager) OnNewFakeJdOrder(vendorOrderID string) (err error) {
|
||||||
|
orderInfo, err := api.FakeJdAPI.FakeQuerySingleOrder(vendorOrderID)
|
||||||
|
if err == nil {
|
||||||
|
err = c.notifyNewFakeJdOrder(orderInfo)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *OrderManager) notifyNewFakeJdOrder(orderInfo *jdapi.OrderInfo) (err error) {
|
||||||
|
vendorStoreID := orderInfo.DeliveryStationNo
|
||||||
|
db := dao.GetDB()
|
||||||
|
storeDetail, err := dao.GetStoreDetailByVendorStoreID(db, vendorStoreID, model.VendorIDJD)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
realStoreID := storeDetail.ID
|
||||||
|
if storeDetail.LinkStoreID != 0 {
|
||||||
|
realStoreID = storeDetail.LinkStoreID
|
||||||
|
}
|
||||||
|
notifyWxNewFakeJdOrder(orderInfo, realStoreID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func notifyWxNewFakeJdOrder(order *jdapi.OrderInfo, storeID int) (err error) {
|
||||||
|
globals.SugarLogger.Debugf("notifyWxNewFakeJdOrder orderID:%s", order.SrcOrderID)
|
||||||
|
|
||||||
|
sb := new(strings.Builder)
|
||||||
|
sb.WriteString("老板,你有新订单了\n")
|
||||||
|
sb.WriteString(fmt.Sprintf("订单号:%s\n", order.SrcOrderID))
|
||||||
|
sb.WriteString(fmt.Sprintf("买家:%s\n", order.BuyerFullName))
|
||||||
|
sb.WriteString(fmt.Sprintf("电话:%s\n", order.BuyerMobile))
|
||||||
|
sb.WriteString(fmt.Sprintf("收货地址:%s\n", order.BuyerFullAddress))
|
||||||
|
sb.WriteString("商品详情:\n")
|
||||||
|
for _, product := range order.Product {
|
||||||
|
sb.WriteString(fmt.Sprintf("\t%s*%d\n", product.SkuName, product.SkuCount))
|
||||||
|
}
|
||||||
|
title := fmt.Sprintf("你有到家菜市新订单%d", order.OrderNum)
|
||||||
|
context := sb.String()
|
||||||
|
_, err = weixinmsg.SendStoreMessage(jxcontext.AdminCtx, title, context, []int{storeID}, true, true)
|
||||||
|
return err
|
||||||
|
}
|
||||||
14
business/jxcallback/orderman/fake_jd_order_test.go
Normal file
14
business/jxcallback/orderman/fake_jd_order_test.go
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
package orderman
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestOnNewFakeJdOrder(t *testing.T) {
|
||||||
|
err := FixedOrderManager.OnNewFakeJdOrder("2002984074001021")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
time.Sleep(3 * time.Second)
|
||||||
|
}
|
||||||
17
business/jxcallback/orderman/orderman_test.go
Normal file
17
business/jxcallback/orderman/orderman_test.go
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package orderman
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/api2"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/testinit"
|
||||||
|
|
||||||
|
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/ebai"
|
||||||
|
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/elm"
|
||||||
|
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/jd"
|
||||||
|
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm"
|
||||||
|
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/weimob/wsc"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
testinit.Init()
|
||||||
|
api2.Init()
|
||||||
|
}
|
||||||
@@ -6,11 +6,8 @@ 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/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/weixinmsg"
|
|
||||||
"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/business/model/dao"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type MessageStatusExt struct {
|
type MessageStatusExt struct {
|
||||||
@@ -19,57 +16,6 @@ type MessageStatusExt struct {
|
|||||||
Title string `json:"title"`
|
Title string `json:"title"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func SendStoreMessage(ctx *jxcontext.Context, title, content string, storeIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
|
||||||
db := dao.GetDB()
|
|
||||||
dao.Begin(db)
|
|
||||||
defer dao.Rollback(db)
|
|
||||||
msg := &model.Message{
|
|
||||||
Title: title,
|
|
||||||
Content: content,
|
|
||||||
Type: model.MessageTypeStore,
|
|
||||||
}
|
|
||||||
dao.WrapAddIDCULDEntity(msg, ctx.GetUserName())
|
|
||||||
if err = dao.CreateEntity(db, msg); err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
msgStatusList := make([]*model.MessageStatus, len(storeIDs))
|
|
||||||
for k, storeID := range storeIDs {
|
|
||||||
msgStatus := &model.MessageStatus{
|
|
||||||
MessageID: msg.ID,
|
|
||||||
StoreID: storeID,
|
|
||||||
Status: model.MessageStatusNew,
|
|
||||||
}
|
|
||||||
dao.WrapAddIDCULDEntity(msgStatus, ctx.GetUserName())
|
|
||||||
if err = dao.CreateEntity(db, msgStatus); err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
msgStatusList[k] = msgStatus
|
|
||||||
}
|
|
||||||
dao.Commit(db)
|
|
||||||
|
|
||||||
rootTask := tasksch.NewParallelTask("SendStoreMessage", nil, ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
||||||
db := dao.GetDB()
|
|
||||||
msgStatus := batchItemList[0].(*model.MessageStatus)
|
|
||||||
if err = weixinmsg.NotifyStoreMessage(msgStatus.StoreID, msgStatus.MessageID, msgStatus.ID, msg.Title, msg.Content); err == nil {
|
|
||||||
msgStatus.Status = model.MessageStatusSendAllSuccess
|
|
||||||
} else {
|
|
||||||
msgStatus.Status = model.MessageStatusSendAllFailed
|
|
||||||
}
|
|
||||||
dao.WrapUpdateULEntity(msgStatus, ctx.GetUserName())
|
|
||||||
globals.SugarLogger.Debug(utils.Format4Output(msgStatus, false))
|
|
||||||
_, err = dao.UpdateEntity(db, msgStatus)
|
|
||||||
return nil, err
|
|
||||||
}, msgStatusList)
|
|
||||||
tasksch.ManageTask(rootTask).Run()
|
|
||||||
|
|
||||||
if !isAsync {
|
|
||||||
_, err = rootTask.GetResult(0)
|
|
||||||
} else {
|
|
||||||
hint = rootTask.ID
|
|
||||||
}
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
func ReadStoreMessage(ctx *jxcontext.Context, msgID, msgStatusID int) (redirectURL string, err error) {
|
func ReadStoreMessage(ctx *jxcontext.Context, msgID, msgStatusID int) (redirectURL string, err error) {
|
||||||
msgStatus := &model.MessageStatus{}
|
msgStatus := &model.MessageStatus{}
|
||||||
msgStatus.ID = msgStatusID
|
msgStatus.ID = msgStatusID
|
||||||
|
|||||||
@@ -1,14 +1 @@
|
|||||||
package cms
|
package cms
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestSendStoreMessage(t *testing.T) {
|
|
||||||
_, err := SendStoreMessage(jxcontext.AdminCtx, "title", "content", []int{1}, false, true)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -730,7 +730,7 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa
|
|||||||
store.Name = valid["name"].(string)
|
store.Name = valid["name"].(string)
|
||||||
syncStatus |= model.SyncFlagStoreName
|
syncStatus |= model.SyncFlagStoreName
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debug(utils.Format4Output(valid, false))
|
// globals.SugarLogger.Debug(utils.Format4Output(valid, false))
|
||||||
printerVendorID := int(utils.Interface2Int64WithDefault(valid["printerVendorID"], 0))
|
printerVendorID := int(utils.Interface2Int64WithDefault(valid["printerVendorID"], 0))
|
||||||
if printerVendorID == 0 {
|
if printerVendorID == 0 {
|
||||||
printerVendorID = store.PrinterVendorID
|
printerVendorID = store.PrinterVendorID
|
||||||
@@ -775,6 +775,13 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa
|
|||||||
handler.UnregisterPrinter(ctx, store.PrinterSN, store.PrinterKey)
|
handler.UnregisterPrinter(ctx, store.PrinterSN, store.PrinterKey)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if linkStoreID, ok := valid["linkStoreID"].(int); ok {
|
||||||
|
linkStoreID, err = getRealLinkStoreID(linkStoreID)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
valid["linkStoreID"] = linkStoreID
|
||||||
|
}
|
||||||
|
|
||||||
for _, v := range []string{
|
for _, v := range []string{
|
||||||
"lng",
|
"lng",
|
||||||
@@ -1010,6 +1017,12 @@ func CreateStore(ctx *jxcontext.Context, storeExt *StoreExt, userName string) (i
|
|||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
realLinkStoreID, err := getRealLinkStoreID(storeExt.LinkStoreID)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
storeExt.LinkStoreID = realLinkStoreID
|
||||||
|
|
||||||
existingID := store.ID
|
existingID := store.ID
|
||||||
store.Lng = jxutils.StandardCoordinate2Int(storeExt.FloatLng)
|
store.Lng = jxutils.StandardCoordinate2Int(storeExt.FloatLng)
|
||||||
store.Lat = jxutils.StandardCoordinate2Int(storeExt.FloatLat)
|
store.Lat = jxutils.StandardCoordinate2Int(storeExt.FloatLat)
|
||||||
@@ -1048,6 +1061,21 @@ func CreateStore(ctx *jxcontext.Context, storeExt *StoreExt, userName string) (i
|
|||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getRealLinkStoreID(linkStoreID int) (realLinkStoreID int, err error) {
|
||||||
|
if linkStoreID != 0 {
|
||||||
|
store := &model.Store{}
|
||||||
|
store.ID = linkStoreID
|
||||||
|
if err = dao.GetEntity(dao.GetDB(), store); err == nil {
|
||||||
|
if store.LinkStoreID != 0 {
|
||||||
|
realLinkStoreID = store.LinkStoreID
|
||||||
|
} else {
|
||||||
|
realLinkStoreID = linkStoreID
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return realLinkStoreID, err
|
||||||
|
}
|
||||||
|
|
||||||
func GetStoreVendorMaps(ctx *jxcontext.Context, db *dao.DaoDB, storeID int, vendorID int) (storeMaps []*model.StoreMap, err error) {
|
func GetStoreVendorMaps(ctx *jxcontext.Context, db *dao.DaoDB, storeID int, vendorID int) (storeMaps []*model.StoreMap, err error) {
|
||||||
cond := map[string]interface{}{
|
cond := map[string]interface{}{
|
||||||
model.FieldStoreID: storeID,
|
model.FieldStoreID: storeID,
|
||||||
|
|||||||
@@ -52,18 +52,7 @@ func SendSMSMsg(mobileList []string, signName, templateCode string, templatePara
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getOrderNotifyPhone(order *model.GoodsOrder) (phoneList []string) {
|
func getOrderNotifyPhone(order *model.GoodsOrder) (phoneList []string) {
|
||||||
store := &model.Store{}
|
return dao.GetOrderNotifyPhones(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order))
|
||||||
store.ID = jxutils.GetSaleStoreIDFromOrder(order)
|
|
||||||
if err := dao.GetEntity(dao.GetDB(), store); err == nil {
|
|
||||||
if store.SMSNotify != 0 {
|
|
||||||
for _, v := range []string{store.Tel1, store.Tel2} {
|
|
||||||
if v != "" {
|
|
||||||
phoneList = append(phoneList, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return phoneList
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NotifyNewOrder(order *model.GoodsOrder) (err error) {
|
func NotifyNewOrder(order *model.GoodsOrder) (err error) {
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import (
|
|||||||
"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/jxcontext"
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/netprinter"
|
"git.rosy.net.cn/jx-callback/business/jxutils/netprinter"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
|
|
||||||
@@ -30,8 +31,8 @@ const (
|
|||||||
|
|
||||||
WX_MINI_TO_ORDER_PAGE_URL = "pages/order-manager/main"
|
WX_MINI_TO_ORDER_PAGE_URL = "pages/order-manager/main"
|
||||||
WX_MINI_TO_STORE_SKU_PAGE_URL = "pages/goods-manager/main"
|
WX_MINI_TO_STORE_SKU_PAGE_URL = "pages/goods-manager/main"
|
||||||
WX_MINI_TO_SHOW_COMMENTS_DETAIL_URL = "pages/store-comment/main"
|
WX_MINI_TO_SHOW_COMMENTS_DETAIL_URL = "pages/pagesStore/store-comment/main"
|
||||||
WX_MINI_TO_SHOW_MSG = "pages/msg-page/main?msgID=%d&msgStatusID=%d"
|
WX_MINI_TO_SHOW_MSG = "pages/pagesStore/msg-page/main?msgID=%d&msgStatusID=%d"
|
||||||
|
|
||||||
//新订单模板消息文字颜色
|
//新订单模板消息文字颜色
|
||||||
WX_NEW_ORDER_TEMPLATE_COLOR = "#173177"
|
WX_NEW_ORDER_TEMPLATE_COLOR = "#173177"
|
||||||
@@ -54,7 +55,7 @@ const (
|
|||||||
|
|
||||||
WX_SALE_BILL_TEMPLATE_ID = "eTUuFZMWH7IsVBfcxNMpmaHYaxRkUaD6zG8wSGJDcic"
|
WX_SALE_BILL_TEMPLATE_ID = "eTUuFZMWH7IsVBfcxNMpmaHYaxRkUaD6zG8wSGJDcic"
|
||||||
|
|
||||||
WX_NORMAL_STORE_MSG_TEMPLATE_ID = "7ngcTFYiUFw66BMzIYntM1tpy-xZkJwlcCT5pVtXwtw"
|
WX_NORMAL_STORE_MSG_TEMPLATE_ID = "UlLvTMXDPIX9Ztyu3MMb84Zu-cCFo7trvQI8YRrAFjc" //"7ngcTFYiUFw66BMzIYntM1tpy-xZkJwlcCT5pVtXwtw"
|
||||||
// WX_CHANGE_APPROVED_TEMPLATE_ID = "gIG2olBZtQbjXmp6doNB_dESu60By5xuXYOGxksLv3Y"
|
// WX_CHANGE_APPROVED_TEMPLATE_ID = "gIG2olBZtQbjXmp6doNB_dESu60By5xuXYOGxksLv3Y"
|
||||||
// WX_CHANGE_REJECTED_TEMPLATE_ID = "tn2QXWi4HtSIwaztmtN6Bb2uzNL-jBxWltCZTDNJuYE"
|
// WX_CHANGE_REJECTED_TEMPLATE_ID = "tn2QXWi4HtSIwaztmtN6Bb2uzNL-jBxWltCZTDNJuYE"
|
||||||
WX_ORDER_APPLY_CANCEL_TEMPLATE_ID = "e6urTtcm4PL0rgDMG_1qWNOwrE3Qxqcm_dx0kWWCmEI"
|
WX_ORDER_APPLY_CANCEL_TEMPLATE_ID = "e6urTtcm4PL0rgDMG_1qWNOwrE3Qxqcm_dx0kWWCmEI"
|
||||||
@@ -69,7 +70,7 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
venderColors = map[int]string{
|
VendorColors = map[int]string{
|
||||||
model.VendorIDJD: WX_TEMPLATE_VENDERCOLOR_JDDJ,
|
model.VendorIDJD: WX_TEMPLATE_VENDERCOLOR_JDDJ,
|
||||||
model.VendorIDMTWM: WX_TEMPLATE_VENDERCOLOR_MT,
|
model.VendorIDMTWM: WX_TEMPLATE_VENDERCOLOR_MT,
|
||||||
model.VendorIDELM: WX_TEMPLATE_VENDERCOLOR_ELM,
|
model.VendorIDELM: WX_TEMPLATE_VENDERCOLOR_ELM,
|
||||||
@@ -92,33 +93,6 @@ var (
|
|||||||
func GetWeixinOpenIDsFromStoreID(storeID int) (retVal []string) {
|
func GetWeixinOpenIDsFromStoreID(storeID int) (retVal []string) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
openIDMap := make(map[string]int)
|
openIDMap := make(map[string]int)
|
||||||
// if !globals.DisableWXAuth1 {
|
|
||||||
// var openIDList []string
|
|
||||||
// sql := `
|
|
||||||
// SELECT openid
|
|
||||||
// FROM weixins t1
|
|
||||||
// JOIN
|
|
||||||
// (SELECT id
|
|
||||||
// FROM weixins
|
|
||||||
// WHERE jxstoreid = ? AND parentid = -1) t2 ON t2.id = t1.parentid
|
|
||||||
// WHERE openid IS NOT NULL
|
|
||||||
// UNION
|
|
||||||
// SELECT openid
|
|
||||||
// FROM weixins
|
|
||||||
// WHERE jxstoreid = ? AND parentid = -1 AND openid IS NOT NULL`
|
|
||||||
// sqlParams := []interface{}{
|
|
||||||
// storeID,
|
|
||||||
// storeID,
|
|
||||||
// }
|
|
||||||
// err := dao.GetRows(db, &openIDList, sql, sqlParams...)
|
|
||||||
// if err != nil || len(openIDList) == 0 {
|
|
||||||
// globals.SugarLogger.Infof("GetWeixinOpenIDsFromStoreID can not find openid for store:%d, num:%d, error:%v", storeID, len(openIDList), err)
|
|
||||||
// return retVal
|
|
||||||
// }
|
|
||||||
// for _, v := range openIDList {
|
|
||||||
// openIDMap[v] = 1
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
if globals.EnableWXAuth2 {
|
if globals.EnableWXAuth2 {
|
||||||
if userIDList, err2 := api2.RoleMan.GetRoleUserList(autils.NewStoreBossRole(storeID)); err2 == nil {
|
if userIDList, err2 := api2.RoleMan.GetRoleUserList(autils.NewStoreBossRole(storeID)); err2 == nil {
|
||||||
for _, v := range userIDList {
|
for _, v := range userIDList {
|
||||||
@@ -147,7 +121,7 @@ func GetWeixinOpenIDsFromStoreID(storeID int) (retVal []string) {
|
|||||||
func SendMsgToStore(storeID int, templateID, downloadURL, miniPageURL string, data interface{}) (err error) {
|
func SendMsgToStore(storeID int, templateID, downloadURL, miniPageURL string, data interface{}) (err error) {
|
||||||
globals.SugarLogger.Debugf("SendMsgToStore storeID:%d, templateID:%s, downloadURL:%s, miniPageURL:%s", storeID, templateID, downloadURL, miniPageURL)
|
globals.SugarLogger.Debugf("SendMsgToStore storeID:%d, templateID:%s, downloadURL:%s, miniPageURL:%s", storeID, templateID, downloadURL, miniPageURL)
|
||||||
if storeID == 0 { // 测试,只发给我
|
if storeID == 0 { // 测试,只发给我
|
||||||
//SmartMessageTemplateSend("oYN_usk0AeGc_C6VEZfmFQP5VHMQ", templateID, downloadURL, miniPageURL, data)
|
// SmartMessageTemplateSend("oYN_ust9hXKEvEv0X6Mq6nlAWs_E", templateID, downloadURL, miniPageURL, data)
|
||||||
} else {
|
} else {
|
||||||
openIDs := GetWeixinOpenIDsFromStoreID(storeID)
|
openIDs := GetWeixinOpenIDsFromStoreID(storeID)
|
||||||
successCount := 0
|
successCount := 0
|
||||||
@@ -233,7 +207,7 @@ func NotifyNewOrder(order *model.GoodsOrder) (err error) {
|
|||||||
},
|
},
|
||||||
"orderType": map[string]interface{}{
|
"orderType": map[string]interface{}{
|
||||||
"value": fmt.Sprintf("%s 第%d号订单", model.VendorChineseNames[order.VendorID], order.OrderSeq),
|
"value": fmt.Sprintf("%s 第%d号订单", model.VendorChineseNames[order.VendorID], order.OrderSeq),
|
||||||
"color": venderColors[order.VendorID],
|
"color": VendorColors[order.VendorID],
|
||||||
},
|
},
|
||||||
"customerName": map[string]interface{}{
|
"customerName": map[string]interface{}{
|
||||||
"value": order.ConsigneeName,
|
"value": order.ConsigneeName,
|
||||||
@@ -283,7 +257,7 @@ func NotifyWaybillStatus(bill *model.Waybill, order *model.GoodsOrder, isBillAlr
|
|||||||
} else if bill.WaybillVendorID == model.VendorIDDada {
|
} else if bill.WaybillVendorID == model.VendorIDDada {
|
||||||
templateID = WX_DADA_DELIVERY_DONE_TEMPLATE_ID
|
templateID = WX_DADA_DELIVERY_DONE_TEMPLATE_ID
|
||||||
}
|
}
|
||||||
titleColor = venderColors[bill.OrderVendorID]
|
titleColor = VendorColors[bill.OrderVendorID]
|
||||||
title = fmt.Sprintf("%s 第%d号订单的配送完成", model.VendorChineseNames[bill.OrderVendorID], order.OrderSeq)
|
title = fmt.Sprintf("%s 第%d号订单的配送完成", model.VendorChineseNames[bill.OrderVendorID], order.OrderSeq)
|
||||||
}
|
}
|
||||||
if templateID != "" {
|
if templateID != "" {
|
||||||
@@ -333,7 +307,7 @@ func NotifyUserApplyCancel(order *model.GoodsOrder, cancelReason string) (err er
|
|||||||
},
|
},
|
||||||
"keyword1": map[string]interface{}{ // 订单编号
|
"keyword1": map[string]interface{}{ // 订单编号
|
||||||
"value": fmt.Sprintf("%s第%d号订单, %s", model.VendorChineseNames[order.VendorID], order.OrderSeq, order.VendorOrderID),
|
"value": fmt.Sprintf("%s第%d号订单, %s", model.VendorChineseNames[order.VendorID], order.OrderSeq, order.VendorOrderID),
|
||||||
"color": venderColors[order.VendorID],
|
"color": VendorColors[order.VendorID],
|
||||||
},
|
},
|
||||||
"keyword2": map[string]interface{}{ // 订单日期
|
"keyword2": map[string]interface{}{ // 订单日期
|
||||||
"value": utils.Time2Str(order.OrderCreatedAt),
|
"value": utils.Time2Str(order.OrderCreatedAt),
|
||||||
@@ -384,7 +358,7 @@ func NotifyOrderCanceled(order *model.GoodsOrder) (err error) {
|
|||||||
},
|
},
|
||||||
"orderName": map[string]interface{}{
|
"orderName": map[string]interface{}{
|
||||||
"value": fmt.Sprintf("%s第%d号订单, %s", model.VendorChineseNames[order.VendorID], order.OrderSeq, order.VendorOrderID),
|
"value": fmt.Sprintf("%s第%d号订单, %s", model.VendorChineseNames[order.VendorID], order.OrderSeq, order.VendorOrderID),
|
||||||
"color": venderColors[order.VendorID],
|
"color": VendorColors[order.VendorID],
|
||||||
},
|
},
|
||||||
"remark": map[string]interface{}{
|
"remark": map[string]interface{}{
|
||||||
"value": order.ConsigneeMobile,
|
"value": order.ConsigneeMobile,
|
||||||
@@ -546,11 +520,7 @@ func NotifyStoreMessage(storeID, msgID, msgStatusID int, title, content string)
|
|||||||
"color": "#2E408E",
|
"color": "#2E408E",
|
||||||
},
|
},
|
||||||
"keyword2": map[string]interface{}{
|
"keyword2": map[string]interface{}{
|
||||||
"value": "无",
|
"value": utils.GetCurTimeStr(),
|
||||||
"color": "#2E408E",
|
|
||||||
},
|
|
||||||
"keyword3": map[string]interface{}{
|
|
||||||
"value": "无",
|
|
||||||
"color": "#2E408E",
|
"color": "#2E408E",
|
||||||
},
|
},
|
||||||
"remark": map[string]interface{}{
|
"remark": map[string]interface{}{
|
||||||
@@ -596,7 +566,7 @@ func NotifyAfsOrderStatus(afsOrder *model.AfsOrder) (err error) {
|
|||||||
},
|
},
|
||||||
"keyword3": map[string]interface{}{
|
"keyword3": map[string]interface{}{
|
||||||
"value": utils.Time2Str(afsOrder.AfsCreatedAt),
|
"value": utils.Time2Str(afsOrder.AfsCreatedAt),
|
||||||
"color": venderColors[order.VendorID],
|
"color": VendorColors[order.VendorID],
|
||||||
},
|
},
|
||||||
"remark": map[string]interface{}{
|
"remark": map[string]interface{}{
|
||||||
"value": comment,
|
"value": comment,
|
||||||
@@ -690,3 +660,61 @@ func NotifyStoreAlertMessage(storeID int, storeName, title, content string) (err
|
|||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SendStoreMessage(ctx *jxcontext.Context, title, content string, storeIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
|
db := dao.GetDB()
|
||||||
|
dao.Begin(db)
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
panic(r)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
msg := &model.Message{
|
||||||
|
Title: title,
|
||||||
|
Content: content,
|
||||||
|
Type: model.MessageTypeStore,
|
||||||
|
}
|
||||||
|
dao.WrapAddIDCULDEntity(msg, ctx.GetUserName())
|
||||||
|
if err = dao.CreateEntity(db, msg); err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
msgStatusList := make([]*model.MessageStatus, len(storeIDs))
|
||||||
|
for k, storeID := range storeIDs {
|
||||||
|
msgStatus := &model.MessageStatus{
|
||||||
|
MessageID: msg.ID,
|
||||||
|
StoreID: storeID,
|
||||||
|
Status: model.MessageStatusNew,
|
||||||
|
}
|
||||||
|
dao.WrapAddIDCULDEntity(msgStatus, ctx.GetUserName())
|
||||||
|
if err = dao.CreateEntity(db, msgStatus); err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
msgStatusList[k] = msgStatus
|
||||||
|
}
|
||||||
|
dao.Commit(db)
|
||||||
|
|
||||||
|
rootTask := tasksch.NewParallelTask("SendStoreMessage", nil, ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
db := dao.GetDB()
|
||||||
|
msgStatus := batchItemList[0].(*model.MessageStatus)
|
||||||
|
if err = NotifyStoreMessage(msgStatus.StoreID, msgStatus.MessageID, msgStatus.ID, msg.Title, msg.Content); err == nil {
|
||||||
|
msgStatus.Status = model.MessageStatusSendAllSuccess
|
||||||
|
} else {
|
||||||
|
msgStatus.Status = model.MessageStatusSendAllFailed
|
||||||
|
}
|
||||||
|
dao.WrapUpdateULEntity(msgStatus, ctx.GetUserName())
|
||||||
|
globals.SugarLogger.Debug(utils.Format4Output(msgStatus, false))
|
||||||
|
_, err = dao.UpdateEntity(db, msgStatus)
|
||||||
|
return nil, err
|
||||||
|
}, msgStatusList)
|
||||||
|
tasksch.ManageTask(rootTask).Run()
|
||||||
|
|
||||||
|
if !isAsync {
|
||||||
|
_, err = rootTask.GetResult(0)
|
||||||
|
} else {
|
||||||
|
hint = rootTask.ID
|
||||||
|
}
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package weixinmsg
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api2"
|
"git.rosy.net.cn/jx-callback/globals/api2"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
@@ -18,3 +19,10 @@ func TestGetWeixinOpenIDsFromStoreID(t *testing.T) {
|
|||||||
openIDs := GetWeixinOpenIDsFromStoreID(100118)
|
openIDs := GetWeixinOpenIDsFromStoreID(100118)
|
||||||
t.Log(utils.Format4Output(openIDs, false))
|
t.Log(utils.Format4Output(openIDs, false))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSendStoreMessage(t *testing.T) {
|
||||||
|
_, err := SendStoreMessage(jxcontext.AdminCtx, "title", "content", []int{1}, false, true)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(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"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
)
|
)
|
||||||
@@ -664,3 +665,20 @@ func SetStoreMapSyncStatus(db *DaoDB, vendorIDs, storeIDs []int, syncStatus int)
|
|||||||
}
|
}
|
||||||
return ExecuteSQL(db, sql, sqlParams...)
|
return ExecuteSQL(db, sql, sqlParams...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetOrderNotifyPhones(db *DaoDB, storeID int) (phoneList []string) {
|
||||||
|
store := &model.Store{}
|
||||||
|
store.ID = storeID
|
||||||
|
if err := GetEntity(db, store); err == nil {
|
||||||
|
if store.SMSNotify != 0 {
|
||||||
|
telMap := make(map[string]int)
|
||||||
|
for _, v := range []string{store.Tel1, store.Tel2} {
|
||||||
|
if v != "" {
|
||||||
|
telMap[v] = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
phoneList = jxutils.StringMap2List(telMap)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return phoneList
|
||||||
|
}
|
||||||
|
|||||||
@@ -272,10 +272,11 @@ type Store struct {
|
|||||||
DeliveryRangeType int8 `json:"deliveryRangeType"` // 参见相关常量定义
|
DeliveryRangeType int8 `json:"deliveryRangeType"` // 参见相关常量定义
|
||||||
DeliveryRange string `orm:"type(text)" json:"deliveryRange"` // 如果DeliveryRangeType为DeliveryRangeTypePolygon,则为逗号分隔坐标,分号分隔的坐标点(坐标与Lng和Lat一样,都是整数),比如 121361504,31189308;121420555,31150238。否则为半径,单位为米
|
DeliveryRange string `orm:"type(text)" json:"deliveryRange"` // 如果DeliveryRangeType为DeliveryRangeTypePolygon,则为逗号分隔坐标,分号分隔的坐标点(坐标与Lng和Lat一样,都是整数),比如 121361504,31189308;121420555,31150238。否则为半径,单位为米
|
||||||
Status int `json:"status"`
|
Status int `json:"status"`
|
||||||
AutoEnableAt *time.Time `orm:"type(datetime);null" json:"autoEnableAt"` // 自动营业时间(临时休息用)
|
AutoEnableAt *time.Time `orm:"type(datetime);null" json:"autoEnableAt"` // 自动营业时间(临时休息用)
|
||||||
ChangePriceType int8 `json:"changePriceType"` // 修改价格类型,即是否需要审核
|
ChangePriceType int8 `json:"changePriceType"` // 修改价格类型,即是否需要审核
|
||||||
SMSNotify int8 `orm:"column(sms_notify);" json:"smsNotify"` // 是否通过短信接收订单消息
|
SMSNotify int8 `orm:"column(sms_notify);" json:"smsNotify"` // 是否通过短信接收订单消息
|
||||||
AutoReplyType int8 `json:"autoReplyType"` // 订单评价自动回复类型
|
AutoReplyType int8 `json:"autoReplyType"` // 订单评价自动回复类型
|
||||||
|
LinkStoreID int `orm:"column(link_store_id);default(0)" json:"linkStoreID"` // 关联门店ID
|
||||||
|
|
||||||
PrinterDisabled int8 `orm:"default(0)" json:"printerDisabled"` // 是否禁用网络打印机
|
PrinterDisabled int8 `orm:"default(0)" json:"printerDisabled"` // 是否禁用网络打印机
|
||||||
PrinterFontSize int8 `orm:"default(0)" json:"printerFontSize"` // 打印字体-1:小,0:正常,1:大
|
PrinterFontSize int8 `orm:"default(0)" json:"printerFontSize"` // 打印字体-1:小,0:正常,1:大
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
freightParams.IsFullFree = len(freightParams.FreeFreightInfoList) > 0
|
freightParams.IsFullFree = len(freightParams.FreeFreightInfoList) > 0
|
||||||
globals.SugarLogger.Debug(utils.Format4Output(freightParams, false))
|
// globals.SugarLogger.Debug(utils.Format4Output(freightParams, false))
|
||||||
if globals.EnableJdStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
errList.AddErr(a.UpdateStoreFreightConfigNew(freightParams))
|
errList.AddErr(a.UpdateStoreFreightConfigNew(freightParams))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
|
|
||||||
"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"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxutils/weixinmsg"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"github.com/astaxie/beego"
|
"github.com/astaxie/beego"
|
||||||
)
|
)
|
||||||
@@ -31,7 +32,7 @@ func (c *MsgController) SendStoreMessage() {
|
|||||||
if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs); err != nil {
|
if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs); err != nil {
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
}
|
}
|
||||||
retVal, err = cms.SendStoreMessage(params.Ctx, params.Title, params.Content, storeIDs, params.IsAsync, params.IsContinueWhenError)
|
retVal, err = weixinmsg.SendStoreMessage(params.Ctx, params.Title, params.Content, storeIDs, params.IsAsync, params.IsContinueWhenError)
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,10 @@ import (
|
|||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
||||||
"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/partner/purchase/jd"
|
"git.rosy.net.cn/jx-callback/business/partner/purchase/jd"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
"github.com/astaxie/beego"
|
"github.com/astaxie/beego"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -16,25 +18,21 @@ type Djsw2Controller struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) handleMsg(handler func(*jdapi.API, interface{}) *jdapi.CallbackResponse) (callbackResponse *jdapi.CallbackResponse) {
|
func (c *Djsw2Controller) handleMsg(handler func(*jdapi.API, interface{}) *jdapi.CallbackResponse) (callbackResponse *jdapi.CallbackResponse) {
|
||||||
// callbackMsg, mapData, callbackResponse := jdapi.GetCallbackMsg(getUsefulRequest(c.Ctx))
|
callbackMsg, _, callbackResponse := jdapi.GetCallbackMsg(getUsefulRequest(c.Ctx))
|
||||||
// globals.SugarLogger.Debug(utils.Format4Output(callbackMsg, true))
|
globals.SugarLogger.Debug(utils.Format4Output(callbackMsg, true))
|
||||||
// if callbackResponse == nil {
|
if callbackResponse == nil {
|
||||||
// if jdAPI := jd.GetAPI(jd.AppKey2OrgCode(callbackMsg.AppKey)); jdAPI != nil {
|
callbackResponse = handler(api.FakeJdAPI, callbackMsg.Param)
|
||||||
// if callbackResponse = jdAPI.CheckCallbackValidation(mapData, callbackMsg.Sign); callbackResponse == nil {
|
}
|
||||||
// callbackResponse = handler(jdAPI, callbackMsg.Param)
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// callbackResponse = jdapi.Err2CallbackResponse(fmt.Errorf("没有匹配的appKey,非法请求"), "")
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
return callbackResponse
|
return callbackResponse
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) orderStatus() {
|
func (c *Djsw2Controller) orderStatus() {
|
||||||
if c.Ctx.Input.Method() == http.MethodPost {
|
if c.Ctx.Input.Method() == http.MethodPost {
|
||||||
callbackResponse := c.handleMsg(func(a *jdapi.API, obj interface{}) (callbackResponse *jdapi.CallbackResponse) {
|
callbackResponse := c.handleMsg(func(a *jdapi.API, obj interface{}) (callbackResponse *jdapi.CallbackResponse) {
|
||||||
callbackResponse = jd.OnOrderMsg(obj.(*jdapi.CallbackOrderMsg))
|
if orderMsg, ok := obj.(*jdapi.CallbackOrderMsg); ok {
|
||||||
return callbackResponse
|
orderman.FixedOrderManager.OnNewFakeJdOrder(orderMsg.BillID)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
c.Data["json"] = c.transferResponse("orderStatus", callbackResponse)
|
c.Data["json"] = c.transferResponse("orderStatus", callbackResponse)
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
@@ -48,43 +46,43 @@ func (c *Djsw2Controller) NewOrder() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) OrderAdjust() {
|
func (c *Djsw2Controller) OrderAdjust() {
|
||||||
c.orderStatus()
|
c.nullOperation()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) OrderWaitOutStore() {
|
func (c *Djsw2Controller) OrderWaitOutStore() {
|
||||||
c.orderStatus()
|
c.nullOperation()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) PickFinishOrder() {
|
func (c *Djsw2Controller) PickFinishOrder() {
|
||||||
c.orderStatus()
|
c.nullOperation()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) DeliveryOrder() {
|
func (c *Djsw2Controller) DeliveryOrder() {
|
||||||
c.orderStatus()
|
c.nullOperation()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) FinishOrder() {
|
func (c *Djsw2Controller) FinishOrder() {
|
||||||
c.orderStatus()
|
c.nullOperation()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) LockOrder() {
|
func (c *Djsw2Controller) LockOrder() {
|
||||||
c.orderStatus()
|
c.nullOperation()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) UnlockOrder() {
|
func (c *Djsw2Controller) UnlockOrder() {
|
||||||
c.orderStatus()
|
c.nullOperation()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) UserCancelOrder() {
|
func (c *Djsw2Controller) UserCancelOrder() {
|
||||||
c.orderStatus()
|
c.nullOperation()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) ApplyCancelOrder() {
|
func (c *Djsw2Controller) ApplyCancelOrder() {
|
||||||
c.orderStatus()
|
c.nullOperation()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) VenderAuditApplyCancelOrder() {
|
func (c *Djsw2Controller) VenderAuditApplyCancelOrder() {
|
||||||
c.orderStatus()
|
c.nullOperation()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) PushDeliveryStatus() {
|
func (c *Djsw2Controller) PushDeliveryStatus() {
|
||||||
@@ -101,7 +99,7 @@ func (c *Djsw2Controller) PushDeliveryStatus() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) OrderCommentPush() {
|
func (c *Djsw2Controller) OrderCommentPush() {
|
||||||
c.orderStatus()
|
c.nullOperation()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) Token() {
|
func (c *Djsw2Controller) Token() {
|
||||||
@@ -114,42 +112,15 @@ func (c *Djsw2Controller) Token() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) StockIsHave() {
|
func (c *Djsw2Controller) StockIsHave() {
|
||||||
// globals.SugarLogger.Info(string(c.Ctx.Input.RequestBody))
|
c.nullOperation()
|
||||||
if c.Ctx.Input.Method() == http.MethodPost {
|
|
||||||
callbackResponse := c.handleMsg(func(a *jdapi.API, obj interface{}) (callbackResponse *jdapi.CallbackResponse) {
|
|
||||||
return callbackResponse
|
|
||||||
})
|
|
||||||
c.Data["json"] = c.transferResponse("StockIsHave", callbackResponse)
|
|
||||||
c.ServeJSON()
|
|
||||||
} else {
|
|
||||||
c.Abort("404")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) SinglePromoteCreate() {
|
func (c *Djsw2Controller) SinglePromoteCreate() {
|
||||||
if c.Ctx.Input.Method() == http.MethodPost {
|
c.nullOperation()
|
||||||
callbackResponse := c.handleMsg(func(a *jdapi.API, obj interface{}) (callbackResponse *jdapi.CallbackResponse) {
|
|
||||||
callbackResponse = jd.OnActMsg(obj.(*jdapi.CallbackOrderMsg))
|
|
||||||
return callbackResponse
|
|
||||||
})
|
|
||||||
c.Data["json"] = c.transferResponse("SinglePromoteCreate", callbackResponse)
|
|
||||||
c.ServeJSON()
|
|
||||||
} else {
|
|
||||||
c.Abort("404")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) StoreCrud() {
|
func (c *Djsw2Controller) StoreCrud() {
|
||||||
if c.Ctx.Input.Method() == http.MethodPost {
|
c.nullOperation()
|
||||||
callbackResponse := c.handleMsg(func(a *jdapi.API, obj interface{}) (callbackResponse *jdapi.CallbackResponse) {
|
|
||||||
callbackResponse = jd.OnStoreMsg(obj.(*jdapi.CallbackOrderMsg))
|
|
||||||
return callbackResponse
|
|
||||||
})
|
|
||||||
c.Data["json"] = c.transferResponse("StoreCrud", callbackResponse)
|
|
||||||
c.ServeJSON()
|
|
||||||
} else {
|
|
||||||
c.Abort("404")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) transferResponse(funcName string, inCallbackResponse *jdapi.CallbackResponse) (outCallbackResponse *jdapi.CallbackResponse) {
|
func (c *Djsw2Controller) transferResponse(funcName string, inCallbackResponse *jdapi.CallbackResponse) (outCallbackResponse *jdapi.CallbackResponse) {
|
||||||
@@ -188,11 +159,11 @@ func (c *Djsw2Controller) NewAfterSaleBill() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) AfterSaleBillStatus() {
|
func (c *Djsw2Controller) AfterSaleBillStatus() {
|
||||||
c.orderStatus()
|
c.nullOperation()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) OrderAccounting() {
|
func (c *Djsw2Controller) OrderAccounting() {
|
||||||
c.orderStatus()
|
c.nullOperation()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) nullOperation() {
|
func (c *Djsw2Controller) nullOperation() {
|
||||||
@@ -205,5 +176,5 @@ func (c *Djsw2Controller) UpdateSku() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Djsw2Controller) OrderAddTips() {
|
func (c *Djsw2Controller) OrderAddTips() {
|
||||||
c.orderStatus()
|
c.nullOperation()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user