Merge remote-tracking branch 'origin/test' into test
This commit is contained in:
commit
f22f32daf9
|
|
@ -0,0 +1,60 @@
|
|||
package com.czg.controller.admin;
|
||||
|
||||
import com.czg.BaseQueryParam;
|
||||
import com.czg.market.dto.SmsPushEventDTO;
|
||||
import com.czg.market.dto.SmsShopTemplateDTO;
|
||||
import com.czg.market.service.SmsPushEventService;
|
||||
import com.czg.market.service.SmsShopTemplateService;
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.validator.group.InsertGroup;
|
||||
import com.czg.validator.group.UpdateGroup;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 短信推送任务
|
||||
*
|
||||
* @author ww
|
||||
* @description
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/admin/pushEvent")
|
||||
public class SmsPushEventController {
|
||||
@Resource
|
||||
private SmsPushEventService pushEventService;
|
||||
|
||||
/**
|
||||
* 列表
|
||||
*/
|
||||
@GetMapping
|
||||
public CzgResult<Page<SmsPushEventDTO>> getPushEventPage(@RequestParam BaseQueryParam param, @RequestParam(required = false) Long id) {
|
||||
Page<SmsPushEventDTO> data = pushEventService.getPushEventPage(param, StpKit.USER.getShopId(), id);
|
||||
return CzgResult.success(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*/
|
||||
@PostMapping
|
||||
public CzgResult<Void> addPushEvent(@RequestBody @Validated(InsertGroup.class) SmsPushEventDTO param) {
|
||||
param.setShopId(StpKit.USER.getShopId());
|
||||
pushEventService.addPushEvent(param);
|
||||
return CzgResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除任务
|
||||
*/
|
||||
@DeleteMapping("/{id}")
|
||||
public CzgResult<Void> deletePushEvent(@PathVariable Long id) {
|
||||
pushEventService.deletePushEvent(id);
|
||||
return CzgResult.success();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
package com.czg.controller.admin;
|
||||
|
||||
import com.czg.market.dto.SmsShopTemplateDTO;
|
||||
import com.czg.market.service.SmsShopTemplateService;
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.validator.group.InsertGroup;
|
||||
import com.czg.validator.group.UpdateGroup;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 短信模板
|
||||
* @author ww
|
||||
* @description
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/admin/smsTemplate")
|
||||
public class SmsShopTemplateController {
|
||||
@Resource
|
||||
private SmsShopTemplateService templateService;
|
||||
|
||||
/**
|
||||
* 列表
|
||||
*/
|
||||
@GetMapping
|
||||
public CzgResult<List<SmsShopTemplateDTO>> getTemplateList(@RequestParam(required = false) String title) {
|
||||
List<SmsShopTemplateDTO> data = templateService.getTemplateList(title, StpKit.USER.getShopId());
|
||||
return CzgResult.success(data);
|
||||
}
|
||||
/**
|
||||
* 新增
|
||||
*/
|
||||
@PostMapping
|
||||
public CzgResult<Void> addTemplate(@RequestBody @Validated(InsertGroup.class) SmsShopTemplateDTO param) {
|
||||
param.setShopId(StpKit.USER.getShopId());
|
||||
templateService.addTemplate(param);
|
||||
return CzgResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 重新提交
|
||||
* 状态为 -1 失败的 可以修改模板重新提交
|
||||
*/
|
||||
@PostMapping("/resubmit")
|
||||
public CzgResult<Void> resubmit(@RequestBody @Validated(UpdateGroup.class) SmsShopTemplateDTO param) {
|
||||
param.setShopId(StpKit.USER.getShopId());
|
||||
templateService.resubmit(param);
|
||||
return CzgResult.success();
|
||||
}
|
||||
}
|
||||
|
|
@ -21,7 +21,13 @@ public class RabbitConfig {
|
|||
|
||||
@Value("${spring.profiles.active}")
|
||||
private String activeProfile;
|
||||
@Bean
|
||||
@Primary
|
||||
public DirectExchange directExchange() {
|
||||
return new DirectExchange(activeProfile + "-" + RabbitConstants.Exchange.CASH_EXCHANGE);
|
||||
}
|
||||
|
||||
//------------------------------------------------------订单打印队列
|
||||
@Bean
|
||||
public Queue orderPrintQueue() {
|
||||
// 创建一个用于存储队列参数的 Map
|
||||
|
|
@ -30,7 +36,13 @@ public class RabbitConfig {
|
|||
args.put("x-message-ttl", 180000);
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.ORDER_PRINT_QUEUE, true, false, false, args);
|
||||
}
|
||||
@Bean
|
||||
public Binding bindingOrderPrintExchange(Queue orderPrintQueue, DirectExchange exchange) {
|
||||
return BindingBuilder.bind(orderPrintQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.ORDER_PRINT_QUEUE);
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------订单厨房票
|
||||
@Bean
|
||||
public Queue orderMachinePrintQueue() {
|
||||
// 创建一个用于存储队列参数的 Map
|
||||
|
|
@ -39,82 +51,110 @@ public class RabbitConfig {
|
|||
// args.put("x-message-ttl", 180000);
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.ORDER_MACHINE_PRINT_QUEUE, true, false, false);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Queue handoverPrintQueue() {
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.ORDER_HANDOVER_PRINT_QUEUE, true, false, false);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Queue callTablePrintQueue() {
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.CALL_TABLE_PRINT_QUEUE, true, false, false);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Queue orderCancelQueue() {
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.ORDER_CANCEL_QUEUE, true);
|
||||
}
|
||||
|
||||
|
||||
@Bean
|
||||
public Queue orderStockQueue() {
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.ORDER_STOCK_QUEUE, true);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Queue productInfoChangeQueue() {
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.PRODUCT_INFO_CHANGE_QUEUE, true);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Queue orderRefundQueue() {
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.ORDER_REFUND_QUEUE, true);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Primary
|
||||
public DirectExchange directExchange() {
|
||||
return new DirectExchange(activeProfile + "-" + RabbitConstants.Exchange.CASH_EXCHANGE);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Binding bindingOrderPrintExchange(Queue orderPrintQueue, DirectExchange exchange) {
|
||||
return BindingBuilder.bind(orderPrintQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.ORDER_PRINT_QUEUE);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Binding bindingOrderCancelExchange(Queue orderPrintQueue, DirectExchange exchange) {
|
||||
return BindingBuilder.bind(orderPrintQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.ORDER_CANCEL_QUEUE);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Binding bindingCallTablePrintExchange(Queue callTablePrintQueue, DirectExchange exchange) {
|
||||
return BindingBuilder.bind(callTablePrintQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.CALL_TABLE_PRINT_QUEUE);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Binding bindingHandoverPrintExchange(Queue handoverPrintQueue, DirectExchange exchange) {
|
||||
return BindingBuilder.bind(handoverPrintQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.ORDER_HANDOVER_PRINT_QUEUE);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Binding bindingOrderMachinePrintExchange(Queue orderMachinePrintQueue, DirectExchange exchange) {
|
||||
return BindingBuilder.bind(orderMachinePrintQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.ORDER_MACHINE_PRINT_QUEUE);
|
||||
}
|
||||
|
||||
//------------------------------------------------------交班打票
|
||||
@Bean
|
||||
public Queue handoverPrintQueue() {
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.ORDER_HANDOVER_PRINT_QUEUE, true, false, false);
|
||||
}
|
||||
@Bean
|
||||
public Binding bindingHandoverPrintExchange(Queue handoverPrintQueue, DirectExchange exchange) {
|
||||
return BindingBuilder.bind(handoverPrintQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.ORDER_HANDOVER_PRINT_QUEUE);
|
||||
}
|
||||
|
||||
//------------------------------------------------------叫号 打票
|
||||
@Bean
|
||||
public Queue callTablePrintQueue() {
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.CALL_TABLE_PRINT_QUEUE, true, false, false);
|
||||
}
|
||||
@Bean
|
||||
public Binding bindingCallTablePrintExchange(Queue callTablePrintQueue, DirectExchange exchange) {
|
||||
return BindingBuilder.bind(callTablePrintQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.CALL_TABLE_PRINT_QUEUE);
|
||||
}
|
||||
|
||||
//------------------------------------------------------订单取消
|
||||
@Bean
|
||||
public Queue orderCancelQueue() {
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.ORDER_CANCEL_QUEUE, true);
|
||||
}
|
||||
@Bean
|
||||
public Binding bindingOrderCancelExchange(Queue orderPrintQueue, DirectExchange exchange) {
|
||||
return BindingBuilder.bind(orderPrintQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.ORDER_CANCEL_QUEUE);
|
||||
}
|
||||
|
||||
//------------------------------------------------------ 订单库存更新
|
||||
@Bean
|
||||
public Queue orderStockQueue() {
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.ORDER_STOCK_QUEUE, true);
|
||||
}
|
||||
@Bean
|
||||
public Binding bindingOrderStockExchange(Queue orderStockQueue, DirectExchange exchange) {
|
||||
return BindingBuilder.bind(orderStockQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.ORDER_STOCK_QUEUE);
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------ 商品信息更新
|
||||
@Bean
|
||||
public Queue productInfoChangeQueue() {
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.PRODUCT_INFO_CHANGE_QUEUE, true);
|
||||
}
|
||||
@Bean
|
||||
public Binding bindingProductInfoChange(Queue productInfoChangeQueue, DirectExchange exchange) {
|
||||
return BindingBuilder.bind(productInfoChangeQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.PRODUCT_INFO_CHANGE_QUEUE);
|
||||
}
|
||||
|
||||
//------------------------------------------------------ 订单退款
|
||||
@Bean
|
||||
public Queue orderRefundQueue() {
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.ORDER_REFUND_QUEUE, true);
|
||||
}
|
||||
@Bean
|
||||
public Binding bindingOrderRefundExchange(Queue orderRefundQueue, DirectExchange exchange) {
|
||||
return BindingBuilder.bind(orderRefundQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.ORDER_REFUND_QUEUE);
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------ 申请短信模板队列
|
||||
@Bean
|
||||
public Queue applySmsTemplateQueue() {
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.APPLY_SMS_TEMPLATE_QUEUE, true);
|
||||
}
|
||||
@Bean
|
||||
public Binding bindingApplySmsTemplateExchange(Queue applySmsTemplateQueue, DirectExchange exchange) {
|
||||
return BindingBuilder.bind(applySmsTemplateQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.APPLY_SMS_TEMPLATE_QUEUE);
|
||||
}
|
||||
|
||||
//------------------------------------------------------ 发送微信模板队列
|
||||
@Bean
|
||||
public Queue sendWechatTemplateQueue() {
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.SEND_WECHAT_TEMPLATE_QUEUE, true);
|
||||
}
|
||||
@Bean
|
||||
public Binding bindingSendWechatTemplateExchange(Queue sendWechatTemplateQueue, DirectExchange exchange) {
|
||||
return BindingBuilder.bind(sendWechatTemplateQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.SEND_WECHAT_TEMPLATE_QUEUE);
|
||||
}
|
||||
|
||||
//------------------------------------------------------ 发送营销短信队列
|
||||
@Bean
|
||||
public Queue sendMarketSmsQueue() {
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.SEND_MARKET_SMS_QUEUE, true);
|
||||
}
|
||||
@Bean
|
||||
public Binding bindingSendMarketSmsExchange(Queue sendMarketSmsQueue, DirectExchange exchange) {
|
||||
return BindingBuilder.bind(sendMarketSmsQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.SEND_MARKET_SMS_QUEUE);
|
||||
}
|
||||
|
||||
//------------------------------------------------------ 生日礼品短信队列
|
||||
@Bean
|
||||
public Queue birthdayGiftSmsQueue() {
|
||||
return new Queue(activeProfile + "-" + RabbitConstants.Queue.BIRTHDAY_GIFT_SMS_QUEUE, true);
|
||||
}
|
||||
@Bean
|
||||
public Binding bindingBirthdayGiftSmsExchange(Queue birthdayGiftSmsQueue, DirectExchange exchange) {
|
||||
return BindingBuilder.bind(birthdayGiftSmsQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.BIRTHDAY_GIFT_SMS_QUEUE);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,5 +18,22 @@ public interface RabbitConstants {
|
|||
public static final String ORDER_HANDOVER_PRINT_QUEUE = "order.handover.print.queue";
|
||||
public static final String CALL_TABLE_PRINT_QUEUE = "call.table.print.queue";
|
||||
public static final String PRODUCT_INFO_CHANGE_QUEUE = "product.info.change.queue";
|
||||
|
||||
/**
|
||||
* 申请短信模板队列
|
||||
*/
|
||||
public static final String APPLY_SMS_TEMPLATE_QUEUE = "apply.sms.temp";
|
||||
/**
|
||||
* 发送微信模板队列
|
||||
*/
|
||||
public static final String SEND_WECHAT_TEMPLATE_QUEUE = "send.wechat.temp";
|
||||
/**
|
||||
* 发送营销短信队列
|
||||
*/
|
||||
public static final String SEND_MARKET_SMS_QUEUE = "send.mark.sms";
|
||||
/**
|
||||
* 生日礼品短信队列
|
||||
*/
|
||||
public static final String BIRTHDAY_GIFT_SMS_QUEUE = "birthday.gift.sms";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,6 +101,41 @@ public class RabbitPublisher {
|
|||
sendMsg(RabbitConstants.Queue.ORDER_HANDOVER_PRINT_QUEUE, id.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* 申请短信模板消息
|
||||
*
|
||||
* @param param 申请短信模板请求 shop_id,sms_shop_template.id
|
||||
*/
|
||||
public void sendApplySmsTemplateMsg(String param) {
|
||||
sendMsg(RabbitConstants.Queue.APPLY_SMS_TEMPLATE_QUEUE, param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送微信模板消息
|
||||
*
|
||||
* @param param 发送微信模板请求 shop_id,sms_push_event.id
|
||||
*/
|
||||
public void sendWechatTemplateMsg(String param) {
|
||||
sendMsg(RabbitConstants.Queue.SEND_WECHAT_TEMPLATE_QUEUE, param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送营销短信队列
|
||||
*
|
||||
* @param param
|
||||
*/
|
||||
public void sendMarketSmsMsg(String param) {
|
||||
sendMsg(RabbitConstants.Queue.SEND_MARKET_SMS_QUEUE, param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送生日礼品短信队列
|
||||
*
|
||||
* @param param
|
||||
*/
|
||||
public void sendBirthdayGiftSmsMsg(String param) {
|
||||
sendMsg(RabbitConstants.Queue.BIRTHDAY_GIFT_SMS_QUEUE, param);
|
||||
}
|
||||
|
||||
private void sendMsg(String queue, String msg) {
|
||||
log.info("开始发送mq消息,exchange:{}, queue: {}, msg: {}", activeProfile + "-" + RabbitConstants.Exchange.CASH_EXCHANGE, activeProfile + "-" + queue, msg);
|
||||
|
|
|
|||
|
|
@ -8,6 +8,6 @@ import lombok.Data;
|
|||
*/
|
||||
@Data
|
||||
public class BaseQueryParam {
|
||||
private int pageNum = 1;
|
||||
private int pageSize = 10;
|
||||
private int page = 1;
|
||||
private int size = 10;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,109 @@
|
|||
|
||||
package com.czg.market.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
import com.czg.market.entity.SmsPushEventUser;
|
||||
import com.czg.validator.group.InsertGroup;
|
||||
import com.czg.validator.group.UpdateGroup;
|
||||
import com.mybatisflex.annotation.Column;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 营销推送发送记录 实体类。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-14
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SmsPushEventDTO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
private Long shopId;
|
||||
|
||||
/**
|
||||
* 推送类型 1 模版推送 2短信推送 无用 暂留
|
||||
*/
|
||||
private Integer pushType;
|
||||
|
||||
/**
|
||||
* 模板ID
|
||||
*/
|
||||
@NotNull(message = "模板ID不能为空", groups = InsertGroup.class)
|
||||
private Long pushEventId;
|
||||
|
||||
/**
|
||||
* 1 全部用户 2范围用户 3 指定用户 指定暂定一个用户
|
||||
*/
|
||||
@NotNull(message = "发送范围不能为空", groups = InsertGroup.class)
|
||||
private Long userType;
|
||||
|
||||
/**
|
||||
* 指定用户时 使用
|
||||
*/
|
||||
private String userId;
|
||||
|
||||
/**
|
||||
* 0待发送 1 发送中 2发送成功 -1失败
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 发送内容
|
||||
*/
|
||||
@NotBlank(message = "发送内容不能为空", groups = InsertGroup.class)
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 赠送券信息[{"id":"268700","num":12,"title":"邀新10元优惠券"}]
|
||||
*/
|
||||
private String coupon;
|
||||
|
||||
/**
|
||||
* 发送类型 1 立即发送 2定时发送
|
||||
*/
|
||||
@NotNull(message = "发送类型不能为空", groups = InsertGroup.class)
|
||||
private Integer sendType;
|
||||
|
||||
/**
|
||||
* 发送时间
|
||||
*/
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime sendTime;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 失败原因
|
||||
*/
|
||||
private String error;
|
||||
|
||||
/**
|
||||
* 发送的用户信息选项
|
||||
* userType为2时 使用
|
||||
*/
|
||||
@Column(ignore = true)
|
||||
private SmsPushEventUser smsPushEventUser;
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
|
||||
package com.czg.market.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import java.io.Serial;
|
||||
|
||||
import com.czg.validator.group.InsertGroup;
|
||||
import com.czg.validator.group.UpdateGroup;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Null;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 店铺模板表 实体类。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-14
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class SmsShopTemplateDTO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
@NotNull(message = "模板内容不能为空", groups = { UpdateGroup.class})
|
||||
private Long id;
|
||||
|
||||
private Long shopId;
|
||||
|
||||
/**
|
||||
* 模板内容
|
||||
*/
|
||||
@NotNull(message = "模板内容不能为空", groups = {InsertGroup.class, UpdateGroup.class})
|
||||
private Long content;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 0 待申请 1 审核中 2 成功 -1失败 -2 重新申请中
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 失败原因
|
||||
*/
|
||||
private String failMsg;
|
||||
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
package com.czg.market.entity;
|
||||
|
||||
import com.mybatisflex.annotation.Column;
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.KeyType;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 营销推送发送记录 实体类。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-14
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Table("sms_push_event")
|
||||
public class SmsPushEvent implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id(keyType = KeyType.Auto)
|
||||
private Long id;
|
||||
|
||||
private Long shopId;
|
||||
|
||||
/**
|
||||
* 推送类型 1 模版推送 2短信推送 无用 暂留
|
||||
*/
|
||||
private Integer pushType;
|
||||
|
||||
/**
|
||||
* 模板ID
|
||||
*/
|
||||
private Long pushEventId;
|
||||
|
||||
/**
|
||||
* 1 全部用户 2范围用户 3 指定用户 指定暂定一个用户
|
||||
*/
|
||||
private Long userType;
|
||||
|
||||
/**
|
||||
* 指定用户时 使用
|
||||
*/
|
||||
private String userId;
|
||||
|
||||
/**
|
||||
* 0待发送 1 发送中 2发送成功 -1失败
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 发送内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 赠送券信息[{"id":"268700","num":12,"title":"邀新10元优惠券"}]
|
||||
*/
|
||||
private String coupon;
|
||||
|
||||
/**
|
||||
* 发送类型 1 立即发送 2定时发送
|
||||
*/
|
||||
private Integer sendType;
|
||||
|
||||
/**
|
||||
* 发送时间
|
||||
*/
|
||||
private LocalDateTime sendTime;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@Column(onInsertValue = "now()")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Column(onInsertValue = "now()", onUpdateValue = "now()")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 失败原因
|
||||
*/
|
||||
private String error;
|
||||
/**
|
||||
* 是否删除 0 未删除 1 删除
|
||||
*/
|
||||
private Integer isDel;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
package com.czg.market.entity;
|
||||
|
||||
import com.mybatisflex.annotation.Column;
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.KeyType;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 营销推送任务 实体类。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-14
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Table("sms_push_event_user")
|
||||
public class SmsPushEventUser implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id(keyType = KeyType.Auto)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* sms_user_push_event的id
|
||||
*/
|
||||
private Long eventId;
|
||||
|
||||
private Long shopId;
|
||||
|
||||
/**
|
||||
* 性别 0未知 1男 2女
|
||||
*/
|
||||
private String gender;
|
||||
|
||||
/**
|
||||
* 下单时间 0:今天 1:昨天 2:两周内 3:两周前
|
||||
*/
|
||||
private String orderTimes;
|
||||
|
||||
/**
|
||||
* 下单时间 0:从未下单 其它数字表示下过几单
|
||||
*/
|
||||
private String orderHistory;
|
||||
|
||||
/**
|
||||
* 充值过 0否 1是
|
||||
*/
|
||||
private String isRecharge;
|
||||
|
||||
/**
|
||||
* 会员 0非会员 1会员
|
||||
*/
|
||||
private String vip;
|
||||
|
||||
/**
|
||||
* 预留 短信推送用 会员等级 0 全部会员 1仅限等级 2以上等级
|
||||
*/
|
||||
private String vipLevel;
|
||||
|
||||
/**
|
||||
* 预留 短信推送用 会员等级ID
|
||||
*/
|
||||
private Long vipLevelId;
|
||||
|
||||
@Column(onInsertValue = "now()")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
package com.czg.market.entity;
|
||||
|
||||
import com.mybatisflex.annotation.Column;
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.KeyType;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 店铺模板表 实体类。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-14
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Table("sms_shop_template")
|
||||
public class SmsShopTemplate implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id(keyType = KeyType.Auto)
|
||||
private Long id;
|
||||
|
||||
private Long shopId;
|
||||
/**
|
||||
* 模板名称
|
||||
*/
|
||||
private String title;
|
||||
/**
|
||||
* 模板内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 0 待申请 1 审核中 2 成功 -1失败 -2 重新申请中
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 失败原因
|
||||
*/
|
||||
private String failMsg;
|
||||
|
||||
@Column(onInsertValue = "now()")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Column(onInsertValue = "now()", onUpdateValue = "now()")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package com.czg.market.service;
|
||||
|
||||
import com.czg.BaseQueryParam;
|
||||
import com.czg.market.dto.ShopCouponDTO;
|
||||
import com.czg.market.dto.SmsPushEventDTO;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.czg.market.entity.SmsPushEvent;
|
||||
|
||||
/**
|
||||
* 营销推送发送记录 服务层。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-14
|
||||
*/
|
||||
public interface SmsPushEventService extends IService<SmsPushEvent> {
|
||||
|
||||
/**
|
||||
* 分页查询营销推送发送记录列表
|
||||
*/
|
||||
Page<SmsPushEventDTO> getPushEventPage(BaseQueryParam param, Long shopId, Long id);
|
||||
|
||||
/**
|
||||
* 添加营销推送发送任务
|
||||
*/
|
||||
void addPushEvent(SmsPushEventDTO param);
|
||||
|
||||
void deletePushEvent(Long id);
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
package com.czg.market.service;
|
||||
|
||||
import com.czg.market.dto.ShopCouponDTO;
|
||||
import com.czg.market.dto.SmsShopTemplateDTO;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.czg.market.entity.SmsShopTemplate;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 店铺模板表 服务层。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-14
|
||||
*/
|
||||
public interface SmsShopTemplateService extends IService<SmsShopTemplate> {
|
||||
/**
|
||||
* 获取店铺短信模板分页列表
|
||||
* @param name 模板名称 模糊
|
||||
* @return 店铺短信模板列表
|
||||
*/
|
||||
List<SmsShopTemplateDTO> getTemplateList(String name, Long shopId);
|
||||
|
||||
void addTemplate(SmsShopTemplateDTO param);
|
||||
void resubmit(SmsShopTemplateDTO param);
|
||||
}
|
||||
|
|
@ -17,6 +17,7 @@ import com.alibaba.fastjson2.annotation.JSONField;
|
|||
#break
|
||||
#end
|
||||
#end
|
||||
import lombok.experimental.Accessors;
|
||||
#if(withActiveRecord)
|
||||
import com.mybatisflex.core.activerecord.Model;
|
||||
#end
|
||||
|
|
@ -54,7 +55,6 @@ import lombok.EqualsAndHashCode;
|
|||
*/
|
||||
#if(withLombok)
|
||||
#if(withActiveRecord)
|
||||
@Accessors(chain = true)
|
||||
@Data(staticConstructor = "create")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
#else
|
||||
|
|
@ -73,6 +73,7 @@ import lombok.EqualsAndHashCode;
|
|||
@Schema(description = "#(table.getComment())")
|
||||
#end
|
||||
#end
|
||||
@Accessors(chain = true)
|
||||
public class #(entityClassName)#if(withActiveRecord) extends Model<#(entityClassName)>#else#(table.buildExtends(isBase))#(table.buildImplements())#end {
|
||||
|
||||
#if(jdkVersion >= 14)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,11 @@
|
|||
<name>market-service</name>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.czg</groupId>
|
||||
<artifactId>cash-common-mq</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
package com.czg.service.market.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.czg.market.entity.SmsPushEvent;
|
||||
|
||||
/**
|
||||
* 营销推送发送记录 映射层。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-14
|
||||
*/
|
||||
public interface SmsPushEventMapper extends BaseMapper<SmsPushEvent> {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.czg.service.market.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.czg.market.entity.SmsPushEventUser;
|
||||
|
||||
/**
|
||||
* 营销推送任务 映射层。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-14
|
||||
*/
|
||||
public interface SmsPushEventUserMapper extends BaseMapper<SmsPushEventUser> {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.czg.service.market.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.czg.market.entity.SmsShopTemplate;
|
||||
|
||||
/**
|
||||
* 店铺模板表 映射层。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-14
|
||||
*/
|
||||
public interface SmsShopTemplateMapper extends BaseMapper<SmsShopTemplate> {
|
||||
|
||||
}
|
||||
|
|
@ -12,6 +12,7 @@ import com.czg.market.service.MkDiscountActivityService;
|
|||
import com.czg.service.market.mapper.MkDiscountActivityMapper;
|
||||
import com.czg.service.market.mapper.MkDiscountThresholdMapper;
|
||||
import com.czg.utils.AssertUtil;
|
||||
import com.czg.utils.CzgStrUtils;
|
||||
import com.czg.utils.PageUtil;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
|
|
@ -41,8 +42,8 @@ public class MkDiscountActivityServiceImpl extends ServiceImpl<MkDiscountActivit
|
|||
QueryWrapper queryWrapper = new QueryWrapper();
|
||||
queryWrapper.eq(MkDiscountActivity::getShopId, shopId)
|
||||
.eq(MkDiscountActivity::getIsDel, 0)
|
||||
.lt(MkDiscountActivity::getValidStartTime, param.getStartTime())
|
||||
.le(MkDiscountActivity::getValidEndTime, param.getEndTime())
|
||||
.lt(MkDiscountActivity::getValidStartTime, CzgStrUtils.getStrOrNull(param.getStartTime()))
|
||||
.le(MkDiscountActivity::getValidEndTime, CzgStrUtils.getStrOrNull(param.getEndTime()))
|
||||
.orderBy(MkDiscountActivity::getSort).desc()
|
||||
.orderBy(MkDiscountActivity::getUpdateTime).desc();
|
||||
Page<MkDiscountActivityDTO> page = pageAs(PageUtil.buildPage(), queryWrapper, MkDiscountActivityDTO.class);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,98 @@
|
|||
package com.czg.service.market.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.czg.BaseQueryParam;
|
||||
import com.czg.config.RabbitPublisher;
|
||||
import com.czg.exception.CzgException;
|
||||
import com.czg.market.dto.ShopCouponDTO;
|
||||
import com.czg.market.dto.SmsPushEventDTO;
|
||||
import com.czg.market.entity.ShopCoupon;
|
||||
import com.czg.market.entity.SmsPushEventUser;
|
||||
import com.czg.service.market.mapper.SmsPushEventUserMapper;
|
||||
import com.czg.utils.AssertUtil;
|
||||
import com.czg.utils.PageUtil;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.czg.market.entity.SmsPushEvent;
|
||||
import com.czg.market.service.SmsPushEventService;
|
||||
import com.czg.service.market.mapper.SmsPushEventMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 营销推送发送记录 服务层实现。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-14
|
||||
*/
|
||||
@Service
|
||||
public class SmsPushEventServiceImpl extends ServiceImpl<SmsPushEventMapper, SmsPushEvent> implements SmsPushEventService {
|
||||
|
||||
@Resource
|
||||
private SmsPushEventUserMapper eventUserMapper;
|
||||
@Resource
|
||||
private RabbitPublisher rabbitPublisher;
|
||||
|
||||
@Override
|
||||
public Page<SmsPushEventDTO> getPushEventPage(BaseQueryParam param, Long shopId, Long id) {
|
||||
QueryWrapper queryWrapper = new QueryWrapper();
|
||||
queryWrapper.eq(SmsPushEvent::getShopId, shopId)
|
||||
.eq(SmsPushEvent::getId, id)
|
||||
.eq(SmsPushEvent::getIsDel, 0)
|
||||
.orderBy(SmsPushEvent::getCreateTime).desc();
|
||||
Page<SmsPushEventDTO> page = pageAs(new Page<>(param.getPage(), param.getSize()), queryWrapper, SmsPushEventDTO.class);
|
||||
for (SmsPushEventDTO record : page.getRecords()) {
|
||||
if (record.getUserType() != 2) {
|
||||
continue;
|
||||
}
|
||||
SmsPushEventUser eventUser = eventUserMapper.selectOneByQuery(
|
||||
new QueryWrapper().eq(SmsPushEventUser::getEventId, record.getId())
|
||||
);
|
||||
record.setSmsPushEventUser(eventUser);
|
||||
}
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void addPushEvent(SmsPushEventDTO param) {
|
||||
AssertUtil.isNull(param.getUserType(), "请选择用户范围后进行推送");
|
||||
if (param.getUserType() == 2 && param.getSmsPushEventUser() == null) {
|
||||
throw new CzgException("范围推送时,必须指定用户范围");
|
||||
} else if (param.getUserType() == 3 && param.getUserId() == null) {
|
||||
throw new CzgException("指定推送时,必须指定用户");
|
||||
}
|
||||
AssertUtil.isNull(param.getPushEventId(), "请选择模板后进行推送");
|
||||
AssertUtil.isNull(param.getContent(), "消息内容不能为空");
|
||||
if (param.getSendType() == 2) {
|
||||
AssertUtil.isNull(param.getSendTime(), "定时发送时,必须指定发送时间");
|
||||
} else {
|
||||
param.setSendTime(LocalDateTime.now());
|
||||
}
|
||||
SmsPushEvent pushEvent = BeanUtil.toBean(param, SmsPushEvent.class);
|
||||
save(pushEvent);
|
||||
if (param.getUserType() == 2) {
|
||||
SmsPushEventUser eventUser = param.getSmsPushEventUser();
|
||||
eventUser.setShopId(param.getShopId());
|
||||
eventUser.setEventId(pushEvent.getId());
|
||||
eventUserMapper.insert(eventUser);
|
||||
}
|
||||
// 推送消息 进行 阿里模板申请
|
||||
rabbitPublisher.sendWechatTemplateMsg(pushEvent.getShopId() + "," + pushEvent.getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 逻辑删除记录
|
||||
*/
|
||||
@Override
|
||||
public void deletePushEvent(Long id) {
|
||||
SmsPushEvent pushEvent = getById(id);
|
||||
AssertUtil.isNull(pushEvent, "记录不存在");
|
||||
pushEvent.setIsDel(1);
|
||||
updateById(pushEvent);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
package com.czg.service.market.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.czg.config.RabbitPublisher;
|
||||
import com.czg.market.dto.SmsShopTemplateDTO;
|
||||
import com.czg.market.entity.ShopCoupon;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.czg.market.entity.SmsShopTemplate;
|
||||
import com.czg.market.service.SmsShopTemplateService;
|
||||
import com.czg.service.market.mapper.SmsShopTemplateMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 店铺模板表 服务层实现。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-14
|
||||
*/
|
||||
@Service
|
||||
public class SmsShopTemplateServiceImpl extends ServiceImpl<SmsShopTemplateMapper, SmsShopTemplate> implements SmsShopTemplateService {
|
||||
|
||||
@Resource
|
||||
private RabbitPublisher rabbitPublisher;
|
||||
|
||||
@Override
|
||||
public List<SmsShopTemplateDTO> getTemplateList(String name, Long shopId) {
|
||||
List<Long> list = Arrays.asList(1L, shopId);
|
||||
QueryWrapper queryWrapper = new QueryWrapper();
|
||||
queryWrapper.like(SmsShopTemplate::getTitle, name)
|
||||
.in(SmsShopTemplate::getShopId, list)
|
||||
.orderBy(SmsShopTemplate::getShopId).asc()
|
||||
.orderBy(SmsShopTemplate::getSort).asc();
|
||||
return listAs(queryWrapper, SmsShopTemplateDTO.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addTemplate(SmsShopTemplateDTO param) {
|
||||
SmsShopTemplate template = BeanUtil.toBean(param, SmsShopTemplate.class);
|
||||
template.setStatus(0);
|
||||
save(template);
|
||||
sendApplyMsg(template.getShopId(), template.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resubmit(SmsShopTemplateDTO param) {
|
||||
|
||||
// 校验状态是否为 -1 失败
|
||||
SmsShopTemplate template1 = getById(param.getId());
|
||||
if (!template1.getStatus().equals(-1)) {
|
||||
throw new IllegalArgumentException("只有失败的模板才能重新提交");
|
||||
}
|
||||
|
||||
SmsShopTemplate template = BeanUtil.toBean(param, SmsShopTemplate.class);
|
||||
template.setStatus(2);
|
||||
template.setFailMsg("");
|
||||
updateById(template);
|
||||
sendApplyMsg(template.getShopId(), template.getId());
|
||||
}
|
||||
|
||||
private void sendApplyMsg(Long shopId, Long templateId) {
|
||||
// 推送消息 进行 阿里模板申请
|
||||
rabbitPublisher.sendApplySmsTemplateMsg(shopId + "," + templateId);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.czg.service.market.mapper.SmsPushEventMapper">
|
||||
|
||||
</mapper>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.czg.service.market.mapper.SmsPushEventUserMapper">
|
||||
|
||||
</mapper>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.czg.service.market.mapper.SmsShopTemplateMapper">
|
||||
|
||||
</mapper>
|
||||
|
|
@ -28,10 +28,11 @@
|
|||
<artifactId>market-service</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.czg</groupId>
|
||||
<artifactId>cash-common-mq</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<!-- 订单服务依赖消息队列 从 market 拿 -->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.czg</groupId>-->
|
||||
<!-- <artifactId>cash-common-mq</artifactId>-->
|
||||
<!-- <version>${project.version}</version>-->
|
||||
<!-- </dependency>-->
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
|||
Loading…
Reference in New Issue