给客户和配送员发短信
This commit is contained in:
@@ -516,6 +516,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
||||
s.resetTimer(savedOrderInfo, bill, isPending)
|
||||
s.saveDeliveryFeeFromAndStartWatch(savedOrderInfo, bill.StatusTime)
|
||||
}
|
||||
s.sendCourierOrderSMS(bill)
|
||||
} else {
|
||||
isBillExist := s.updateBillsInfo(savedOrderInfo, bill)
|
||||
if !isBillExist {
|
||||
@@ -654,6 +655,11 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
||||
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 {
|
||||
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)
|
||||
smsmsg.NotifyNewOrder(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)
|
||||
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() {
|
||||
cms.CleanStoreIsBoughtMatter(jxcontext.AdminCtx)
|
||||
}, priceReferTimeList)
|
||||
ScheduleTimerFunc("CleanUserOrderSMSMark", func() {
|
||||
cms.CleanUserOrderSMSMark(jxcontext.AdminCtx)
|
||||
}, priceReferTimeList)
|
||||
ScheduleTimerFunc("exSync", func() {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
|
||||
@@ -43,7 +43,9 @@ func SendSMSMsg(mobileList []string, signName, templateCode string, templatePara
|
||||
globals.SugarLogger.Infof(errMsg)
|
||||
}
|
||||
} else {
|
||||
err = updateStoreSMSNotifyMark(order)
|
||||
if order != nil {
|
||||
err = updateStoreSMSNotifyMark(order)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -99,3 +101,93 @@ func updateStoreSMSNotifyMark(order *model.GoodsOrder) (err error) {
|
||||
}
|
||||
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)
|
||||
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"`
|
||||
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"
|
||||
smsNewOrderTemplate = "SMS_175583150"
|
||||
smsOrderCanceledTemplate = "SMS_175573134"
|
||||
smsNewUserOrderTemplate = "SMS_190283955"
|
||||
|
||||
addEvent = true
|
||||
|
||||
|
||||
@@ -74,6 +74,7 @@ func Init() {
|
||||
orm.RegisterModel(&model.UserCartItem{})
|
||||
orm.RegisterModel(&model.UserAgreement{})
|
||||
orm.RegisterModel(&model.OrderPay{}, &model.OrderPayRefund{})
|
||||
orm.RegisterModel(&model.UserOrderSms{})
|
||||
|
||||
orm.RegisterModel(&model.FakeJdThingMap{})
|
||||
|
||||
|
||||
@@ -48,6 +48,7 @@ var (
|
||||
SMSMobileVerifyTemplate string
|
||||
SMSNewOrderTemplate string
|
||||
SMSOrderCanceledTemplate string
|
||||
SMSNewUserOrderTemplate string
|
||||
|
||||
EnableWXAuth2 bool
|
||||
DisableWXAuth1 bool
|
||||
@@ -119,6 +120,7 @@ func Init() {
|
||||
SMSMobileVerifyTemplate = beego.AppConfig.String("smsMobileVerifyTemplate")
|
||||
SMSNewOrderTemplate = beego.AppConfig.String("smsNewOrderTemplate")
|
||||
SMSOrderCanceledTemplate = beego.AppConfig.String("smsOrderCanceledTemplate")
|
||||
SMSNewUserOrderTemplate = beego.AppConfig.String("smsNewUserOrderTemplate")
|
||||
|
||||
EnableWXAuth2 = true // beego.BConfig.RunMode == "beta"
|
||||
DisableWXAuth1 = true
|
||||
|
||||
Reference in New Issue
Block a user