发放优惠卷时增加了通知
This commit is contained in:
parent
444d4907b4
commit
032730ba3e
@ -1 +1,36 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"hospital-open-api/extend/rabbitMq"
|
||||||
|
)
|
||||||
|
|
||||||
|
// PatientDistributeCoupon 患者-优惠劵发放-站内
|
||||||
|
func PatientDistributeCoupon(couponName string, userId int64) (bool, error) {
|
||||||
|
// 建立队列连接
|
||||||
|
rabbitMQ, err := rabbitMq.NewRabbitMQClient()
|
||||||
|
if err != nil {
|
||||||
|
return false, errors.New("内部错误")
|
||||||
|
}
|
||||||
|
|
||||||
|
defer rabbitMQ.Close()
|
||||||
|
|
||||||
|
data := make(map[string]interface{})
|
||||||
|
data["user_id"] = fmt.Sprintf("%d", userId)
|
||||||
|
data["notice_type"] = 3
|
||||||
|
data["notice_system_type"] = 2
|
||||||
|
data["from_name"] = "肝胆小秘书"
|
||||||
|
data["notice_brief_title"] = "有新的优惠券已下发至您的账户,点击查看详情。"
|
||||||
|
data["notice_title"] = fmt.Sprintf("【%s】已到账", couponName)
|
||||||
|
data["notice_content"] = "有新的优惠劵已下发至您的账户中,点击查看详情!"
|
||||||
|
data["link_type"] = 7
|
||||||
|
|
||||||
|
err = rabbitMQ.Publish("send.station.message.queue", "amqp.direct", "SendStationMessage", data)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return true, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@ -8,8 +8,10 @@ import (
|
|||||||
dtoV1 "hospital-open-api/api/dto/v1"
|
dtoV1 "hospital-open-api/api/dto/v1"
|
||||||
"hospital-open-api/api/model"
|
"hospital-open-api/api/model"
|
||||||
requestsV1 "hospital-open-api/api/requests/v1"
|
requestsV1 "hospital-open-api/api/requests/v1"
|
||||||
|
"hospital-open-api/api/service"
|
||||||
"hospital-open-api/extend/rabbitMq"
|
"hospital-open-api/extend/rabbitMq"
|
||||||
"hospital-open-api/global"
|
"hospital-open-api/global"
|
||||||
|
"hospital-open-api/utils"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@ -58,6 +60,11 @@ func (r *CouponService) ReceiveCoupon(req requestsV1.ReceiveCoupon) (g *dtoV1.Re
|
|||||||
|
|
||||||
// 建立队列连接
|
// 建立队列连接
|
||||||
rabbitMQ, err := rabbitMq.NewRabbitMQClient()
|
rabbitMQ, err := rabbitMq.NewRabbitMQClient()
|
||||||
|
if err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
return g, errors.New("内部错误")
|
||||||
|
}
|
||||||
|
|
||||||
defer rabbitMQ.Close()
|
defer rabbitMQ.Close()
|
||||||
|
|
||||||
// 获取优惠卷数据
|
// 获取优惠卷数据
|
||||||
@ -124,7 +131,7 @@ func (r *CouponService) ReceiveCoupon(req requestsV1.ReceiveCoupon) (g *dtoV1.Re
|
|||||||
now := time.Now()
|
now := time.Now()
|
||||||
|
|
||||||
// 检测优惠卷过期时间
|
// 检测优惠卷过期时间
|
||||||
if coupon.CouponType == 1 {
|
if coupon.ValidType == 1 {
|
||||||
// 1:绝对时效
|
// 1:绝对时效
|
||||||
validStartTime := time.Time(coupon.ValidStartTime)
|
validStartTime := time.Time(coupon.ValidStartTime)
|
||||||
if now.Before(validStartTime) {
|
if now.Before(validStartTime) {
|
||||||
@ -244,11 +251,18 @@ func (r *CouponService) ReceiveCoupon(req requestsV1.ReceiveCoupon) (g *dtoV1.Re
|
|||||||
delay = 10 * time.Second
|
delay = 10 * time.Second
|
||||||
}
|
}
|
||||||
|
|
||||||
err = rabbitMQ.PublishWithDelay("amqp.delay.direct", "UserCouponExpired", data, delay)
|
err = rabbitMQ.PublishWithDelay("user.coupon.expired.delay.queue", "amqp.delay.direct", "UserCouponExpired", data, delay)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 发送通知
|
||||||
|
res, _ := service.PatientDistributeCoupon(coupon.CouponName, user.UserId)
|
||||||
|
if !res {
|
||||||
|
utils.LogJsonInfo("优惠卷通知发送失败")
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -39,20 +39,19 @@ func NewRabbitMQClient() (*RabbitMQ, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Publish 生产
|
// Publish 生产
|
||||||
func (r *RabbitMQ) Publish(queueName, exchangeName string, message interface{}) error {
|
func (r *RabbitMQ) Publish(queueName, exchangeName, routingKey string, message interface{}) error {
|
||||||
q, err := r.channel.QueueDeclare(
|
_, err := r.channel.QueueDeclare(
|
||||||
queueName, // 队列名字
|
queueName, // 队列名字
|
||||||
false, // 消息是否持久化
|
true, // 消息是否持久化
|
||||||
false, // 不使用的时候删除队列
|
false, // 不使用的时候删除队列
|
||||||
false, // 排他
|
false, // 是否排他
|
||||||
false, // 是否等待服务器确认
|
false, // 是否阻塞
|
||||||
nil, // arguments
|
nil, // arguments
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Serialize the message
|
|
||||||
body, err := json.Marshal(message)
|
body, err := json.Marshal(message)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -60,7 +59,7 @@ func (r *RabbitMQ) Publish(queueName, exchangeName string, message interface{})
|
|||||||
|
|
||||||
err = r.channel.Publish(
|
err = r.channel.Publish(
|
||||||
exchangeName, // exchange(交换机名字)
|
exchangeName, // exchange(交换机名字)
|
||||||
q.Name, //
|
routingKey, //
|
||||||
false, // 是否为无法路由的消息进行返回处理
|
false, // 是否为无法路由的消息进行返回处理
|
||||||
false, // 是否对路由到无消费者队列的消息进行返回处理 RabbitMQ 3.0 废弃
|
false, // 是否对路由到无消费者队列的消息进行返回处理 RabbitMQ 3.0 废弃
|
||||||
amqp.Publishing{
|
amqp.Publishing{
|
||||||
@ -74,9 +73,9 @@ func (r *RabbitMQ) Publish(queueName, exchangeName string, message interface{})
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *RabbitMQ) PublishWithDelay(exchangeName, routingKey string, message interface{}, delay time.Duration) error {
|
func (r *RabbitMQ) PublishWithDelay(queueName, exchangeName, routingKey string, message interface{}, delay time.Duration) error {
|
||||||
err := r.channel.ExchangeDeclare(
|
err := r.channel.ExchangeDeclare(
|
||||||
exchangeName, // name
|
queueName, // name
|
||||||
"x-delayed-message", // type
|
"x-delayed-message", // type
|
||||||
true, // durable
|
true, // durable
|
||||||
false, // auto-deleted
|
false, // auto-deleted
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user