给客户和配送员发短信

This commit is contained in:
苏尹岚
2020-05-19 14:58:01 +08:00
parent 49403d559d
commit fe782dabaf
9 changed files with 160 additions and 1 deletions

View File

@@ -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)
})
}
}

View File

@@ -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
}

View File

@@ -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()

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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"},
}
}

View File

@@ -126,6 +126,7 @@ smsSignName = "京西菜市"
smsMobileVerifyTemplate = "SMS_175583158"
smsNewOrderTemplate = "SMS_175583150"
smsOrderCanceledTemplate = "SMS_175573134"
smsNewUserOrderTemplate = "SMS_190283955"
addEvent = true

View File

@@ -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{})

View File

@@ -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