给客户和配送员发短信
This commit is contained in:
@@ -516,6 +516,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
|||||||
s.resetTimer(savedOrderInfo, bill, isPending)
|
s.resetTimer(savedOrderInfo, bill, isPending)
|
||||||
s.saveDeliveryFeeFromAndStartWatch(savedOrderInfo, bill.StatusTime)
|
s.saveDeliveryFeeFromAndStartWatch(savedOrderInfo, bill.StatusTime)
|
||||||
}
|
}
|
||||||
|
s.sendCourierOrderSMS(bill)
|
||||||
} else {
|
} else {
|
||||||
isBillExist := s.updateBillsInfo(savedOrderInfo, bill)
|
isBillExist := s.updateBillsInfo(savedOrderInfo, bill)
|
||||||
if !isBillExist {
|
if !isBillExist {
|
||||||
@@ -654,6 +655,11 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *DefScheduler) sendCourierOrderSMS(bill *model.Waybill) (err error) {
|
||||||
|
err = smsmsg.NotifyNewCourierOrder(bill)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func (s *DefScheduler) isWaybillCourierSame(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool {
|
func (s *DefScheduler) isWaybillCourierSame(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool {
|
||||||
return savedOrderInfo.waybills[bill.WaybillVendorID] != nil && savedOrderInfo.waybills[bill.WaybillVendorID].CourierMobile == bill.CourierMobile
|
return savedOrderInfo.waybills[bill.WaybillVendorID] != nil && savedOrderInfo.waybills[bill.WaybillVendorID].CourierMobile == bill.CourierMobile
|
||||||
}
|
}
|
||||||
@@ -1355,6 +1361,7 @@ func (s *DefScheduler) notifyNewOrder(order *model.GoodsOrder) {
|
|||||||
weixinmsg.NotifyNewOrder(order)
|
weixinmsg.NotifyNewOrder(order)
|
||||||
smsmsg.NotifyNewOrder(order)
|
smsmsg.NotifyNewOrder(order)
|
||||||
OrderProfitWarning(order)
|
OrderProfitWarning(order)
|
||||||
|
smsmsg.NotifyNewUserOrder(order)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1109,3 +1109,18 @@ func GetUserAgreement(ctx *jxcontext.Context, name, idNumber, bankNumber, mobile
|
|||||||
userAgrs, err = dao.GetUserAgreement(db, name, idNumber, bankNumber, mobile)
|
userAgrs, err = dao.GetUserAgreement(db, name, idNumber, bankNumber, mobile)
|
||||||
return userAgrs, err
|
return userAgrs, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CleanUserOrderSMSMark(ctx *jxcontext.Context) (err error) {
|
||||||
|
var (
|
||||||
|
db = dao.GetDB()
|
||||||
|
)
|
||||||
|
if time.Now().Day() == 1 {
|
||||||
|
sql := `
|
||||||
|
UPDATE user_order_sms
|
||||||
|
SET sms_mark = ?
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{model.NO}
|
||||||
|
_, err = dao.ExecuteSQL(db, sql, sqlParams)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|||||||
@@ -219,6 +219,9 @@ func Init() {
|
|||||||
ScheduleTimerFunc("CleanStoreIsBoughtMatter", func() {
|
ScheduleTimerFunc("CleanStoreIsBoughtMatter", func() {
|
||||||
cms.CleanStoreIsBoughtMatter(jxcontext.AdminCtx)
|
cms.CleanStoreIsBoughtMatter(jxcontext.AdminCtx)
|
||||||
}, priceReferTimeList)
|
}, priceReferTimeList)
|
||||||
|
ScheduleTimerFunc("CleanUserOrderSMSMark", func() {
|
||||||
|
cms.CleanUserOrderSMSMark(jxcontext.AdminCtx)
|
||||||
|
}, priceReferTimeList)
|
||||||
ScheduleTimerFunc("exSync", func() {
|
ScheduleTimerFunc("exSync", func() {
|
||||||
var (
|
var (
|
||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
|
|||||||
@@ -43,11 +43,13 @@ func SendSMSMsg(mobileList []string, signName, templateCode string, templatePara
|
|||||||
globals.SugarLogger.Infof(errMsg)
|
globals.SugarLogger.Infof(errMsg)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if order != nil {
|
||||||
err = updateStoreSMSNotifyMark(order)
|
err = updateStoreSMSNotifyMark(order)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
err = errList.GetErrListAsOne()
|
err = errList.GetErrListAsOne()
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
@@ -99,3 +101,93 @@ func updateStoreSMSNotifyMark(order *model.GoodsOrder) (err error) {
|
|||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//每月向用户发送
|
||||||
|
func NotifyNewUserOrder(order *model.GoodsOrder) (err error) {
|
||||||
|
var (
|
||||||
|
db = dao.GetDB()
|
||||||
|
storeTel string
|
||||||
|
storeID int
|
||||||
|
mobile string
|
||||||
|
)
|
||||||
|
if order.StoreID == 0 {
|
||||||
|
storeID = order.JxStoreID
|
||||||
|
} else {
|
||||||
|
storeID = order.StoreID
|
||||||
|
}
|
||||||
|
if order.ConsigneeMobile2 == "" {
|
||||||
|
mobile = order.ConsigneeMobile
|
||||||
|
} else {
|
||||||
|
mobile = order.ConsigneeMobile2
|
||||||
|
}
|
||||||
|
uoSMS, err := dao.GetUserOrderSMS(db, mobile, "")
|
||||||
|
stores, _ := dao.GetStoreList(db, []int{storeID}, nil, nil, nil, "")
|
||||||
|
if len(stores) > 0 {
|
||||||
|
if stores[0].Tel1 == "" {
|
||||||
|
storeTel = stores[0].Tel2
|
||||||
|
} else {
|
||||||
|
storeTel = stores[0].Tel1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if uoSMS == nil {
|
||||||
|
uoSMSc := model.UserOrderSms{
|
||||||
|
Mobile: mobile,
|
||||||
|
Name: order.ConsigneeName,
|
||||||
|
VendorUserID: order.VendorUserID,
|
||||||
|
TotalCount: 0,
|
||||||
|
SMSMark: model.NO,
|
||||||
|
}
|
||||||
|
err = dao.CreateEntity(db, uoSMSc)
|
||||||
|
if uoSMS.SMSMark != model.YES {
|
||||||
|
err = SendSMSMsg([]string{uoSMS.Mobile}, globals.SMSSignName, globals.SMSNewUserOrderTemplate, map[string]interface{}{
|
||||||
|
"tel": storeTel,
|
||||||
|
}, nil)
|
||||||
|
if err == nil {
|
||||||
|
uoSMS.SMSMark = model.YES
|
||||||
|
uoSMS.TotalCount++
|
||||||
|
_, err = dao.UpdateEntity(db, uoSMS, "SMSMark", "TotalCount")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if uoSMS.SMSMark != model.YES {
|
||||||
|
err = SendSMSMsg([]string{uoSMS.Mobile}, globals.SMSSignName, globals.SMSNewUserOrderTemplate, map[string]interface{}{
|
||||||
|
"tel": storeTel,
|
||||||
|
}, nil)
|
||||||
|
if err == nil {
|
||||||
|
uoSMS.SMSMark = model.YES
|
||||||
|
uoSMS.TotalCount++
|
||||||
|
_, err = dao.UpdateEntity(db, uoSMS, "SMSMark", "TotalCount")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
//给配送员发短信
|
||||||
|
func NotifyNewCourierOrder(bill *model.Waybill) (err error) {
|
||||||
|
var (
|
||||||
|
db = dao.GetDB()
|
||||||
|
storeTel string
|
||||||
|
storeID int
|
||||||
|
)
|
||||||
|
order := &model.GoodsOrder{}
|
||||||
|
order.VendorOrderID = bill.VendorOrderID
|
||||||
|
err = dao.GetEntity(db, order, "VendorOrderID")
|
||||||
|
if order.StoreID == 0 {
|
||||||
|
storeID = order.JxStoreID
|
||||||
|
} else {
|
||||||
|
storeID = order.StoreID
|
||||||
|
}
|
||||||
|
stores, _ := dao.GetStoreList(db, []int{storeID}, nil, nil, nil, "")
|
||||||
|
if len(stores) > 0 {
|
||||||
|
if stores[0].Tel1 == "" {
|
||||||
|
storeTel = stores[0].Tel2
|
||||||
|
} else {
|
||||||
|
storeTel = stores[0].Tel1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err = SendSMSMsg([]string{bill.CourierMobile}, globals.SMSSignName, globals.SMSNewOrderTemplate, map[string]interface{}{
|
||||||
|
"tel": storeTel,
|
||||||
|
}, nil)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|||||||
@@ -239,3 +239,22 @@ func GetUserAgreement(db *DaoDB, name, idNumber, bankNumber, mobile string) (use
|
|||||||
err = GetRows(db, &userAgrs, sql, sqlParams)
|
err = GetRows(db, &userAgrs, sql, sqlParams)
|
||||||
return userAgrs, err
|
return userAgrs, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetUserOrderSMS(db *DaoDB, mobile, name string) (userOrderSms *model.UserOrderSms, err error) {
|
||||||
|
sql := `
|
||||||
|
SELECT *
|
||||||
|
FROM user_order_sms
|
||||||
|
WHERE 1=1
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{}
|
||||||
|
if mobile != "" {
|
||||||
|
sql += " AND mobile = ?"
|
||||||
|
sqlParams = append(sqlParams, mobile)
|
||||||
|
}
|
||||||
|
if name != "" {
|
||||||
|
sql += " AND name like ?"
|
||||||
|
sqlParams = append(sqlParams, "%"+name+"%")
|
||||||
|
}
|
||||||
|
err = GetRow(db, &userOrderSms, sql, sqlParams)
|
||||||
|
return userOrderSms, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -175,3 +175,22 @@ type UserAgreement struct {
|
|||||||
IDNumber string `orm:"column(id_number);size(20)" json:"idNumber"`
|
IDNumber string `orm:"column(id_number);size(20)" json:"idNumber"`
|
||||||
BankNumber string `orm:"size(32)" json:"bankNumber"`
|
BankNumber string `orm:"size(32)" json:"bankNumber"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type UserOrderSms struct {
|
||||||
|
ID int64 `orm:"column(id)" json:"-"`
|
||||||
|
CreatedAt time.Time `orm:"auto_now_add;type(datetime)" json:"createdAt"`
|
||||||
|
UpdatedAt time.Time `orm:"auto_now;type(datetime)" json:"-"`
|
||||||
|
LastOperator string `orm:"size(32)" json:"-"` // 最后操作员
|
||||||
|
|
||||||
|
Mobile string `orm:"size(32)" json:"mobile"`
|
||||||
|
Name string `orm:"size(32)" json:"name"`
|
||||||
|
VendorUserID string `orm:"column(vendor_user_id)" json:"vendorUserID"`
|
||||||
|
SMSMark int `orm:"column(sms_mark)" json:"smsMark"`
|
||||||
|
TotalCount int `json:"totalCount"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*UserOrderSms) TableUnique() [][]string {
|
||||||
|
return [][]string{
|
||||||
|
[]string{"Mobile"},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -126,6 +126,7 @@ smsSignName = "京西菜市"
|
|||||||
smsMobileVerifyTemplate = "SMS_175583158"
|
smsMobileVerifyTemplate = "SMS_175583158"
|
||||||
smsNewOrderTemplate = "SMS_175583150"
|
smsNewOrderTemplate = "SMS_175583150"
|
||||||
smsOrderCanceledTemplate = "SMS_175573134"
|
smsOrderCanceledTemplate = "SMS_175573134"
|
||||||
|
smsNewUserOrderTemplate = "SMS_190283955"
|
||||||
|
|
||||||
addEvent = true
|
addEvent = true
|
||||||
|
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ func Init() {
|
|||||||
orm.RegisterModel(&model.UserCartItem{})
|
orm.RegisterModel(&model.UserCartItem{})
|
||||||
orm.RegisterModel(&model.UserAgreement{})
|
orm.RegisterModel(&model.UserAgreement{})
|
||||||
orm.RegisterModel(&model.OrderPay{}, &model.OrderPayRefund{})
|
orm.RegisterModel(&model.OrderPay{}, &model.OrderPayRefund{})
|
||||||
|
orm.RegisterModel(&model.UserOrderSms{})
|
||||||
|
|
||||||
orm.RegisterModel(&model.FakeJdThingMap{})
|
orm.RegisterModel(&model.FakeJdThingMap{})
|
||||||
|
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ var (
|
|||||||
SMSMobileVerifyTemplate string
|
SMSMobileVerifyTemplate string
|
||||||
SMSNewOrderTemplate string
|
SMSNewOrderTemplate string
|
||||||
SMSOrderCanceledTemplate string
|
SMSOrderCanceledTemplate string
|
||||||
|
SMSNewUserOrderTemplate string
|
||||||
|
|
||||||
EnableWXAuth2 bool
|
EnableWXAuth2 bool
|
||||||
DisableWXAuth1 bool
|
DisableWXAuth1 bool
|
||||||
@@ -119,6 +120,7 @@ func Init() {
|
|||||||
SMSMobileVerifyTemplate = beego.AppConfig.String("smsMobileVerifyTemplate")
|
SMSMobileVerifyTemplate = beego.AppConfig.String("smsMobileVerifyTemplate")
|
||||||
SMSNewOrderTemplate = beego.AppConfig.String("smsNewOrderTemplate")
|
SMSNewOrderTemplate = beego.AppConfig.String("smsNewOrderTemplate")
|
||||||
SMSOrderCanceledTemplate = beego.AppConfig.String("smsOrderCanceledTemplate")
|
SMSOrderCanceledTemplate = beego.AppConfig.String("smsOrderCanceledTemplate")
|
||||||
|
SMSNewUserOrderTemplate = beego.AppConfig.String("smsNewUserOrderTemplate")
|
||||||
|
|
||||||
EnableWXAuth2 = true // beego.BConfig.RunMode == "beta"
|
EnableWXAuth2 = true // beego.BConfig.RunMode == "beta"
|
||||||
DisableWXAuth1 = true
|
DisableWXAuth1 = true
|
||||||
|
|||||||
Reference in New Issue
Block a user