feat(notification): 添加微信订阅消息配置管理及幂等授权功能

- 新增微信订阅消息配置管理控制器,支持模板、场景、事件映射配置
- 实现用户通知授权服务的幂等控制,避免前端重试导致授权次数虚增
- 添加微信订阅消息发送日志记录,用于幂等与排障
- 新增视频生成完成时的订阅消息触发功能
- 实现场景模板查询接口,返回用户授权余额信息
- 添加模板V2相关数据表映射器和实体类
- 集成微信订阅消息触发服务到任务完成流程中
This commit is contained in:
2026-01-01 17:53:59 +08:00
parent 81dc2f1b86
commit f1a2958251
61 changed files with 3655 additions and 9 deletions

View File

@@ -0,0 +1,27 @@
package com.ycwl.basic.mapper;
import com.ycwl.basic.template.model.entity.TemplateV2Entity;
import com.ycwl.basic.template.model.req.TemplateV2ReqQuery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* Template v2 Mapper
*/
@Mapper
public interface TemplateV2Mapper {
List<TemplateV2Entity> list(TemplateV2ReqQuery query);
TemplateV2Entity getById(@Param("id") Long id);
int insert(TemplateV2Entity entity);
int updateById(TemplateV2Entity entity);
int updateStatus(@Param("id") Long id, @Param("status") Integer status);
int softDelete(@Param("id") Long id);
}

View File

@@ -0,0 +1,20 @@
package com.ycwl.basic.mapper;
import com.ycwl.basic.template.model.entity.TemplateV2SegmentEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* Template v2 Segment Mapper
*/
@Mapper
public interface TemplateV2SegmentMapper {
List<TemplateV2SegmentEntity> listByTemplateId(@Param("templateId") Long templateId);
int deleteByTemplateId(@Param("templateId") Long templateId);
int batchInsert(@Param("segments") List<TemplateV2SegmentEntity> segments);
}

View File

@@ -0,0 +1,16 @@
package com.ycwl.basic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycwl.basic.model.pc.notify.entity.UserNotificationAuthorizationRecordEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 用户订阅消息授权明细Mapper(幂等)
*
* @Author: System
* @Date: 2025/12/31
*/
@Mapper
public interface UserNotificationAuthorizationRecordMapper extends BaseMapper<UserNotificationAuthorizationRecordEntity> {
}

View File

@@ -0,0 +1,16 @@
package com.ycwl.basic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycwl.basic.model.pc.notify.entity.WechatSubscribeEventTemplateEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 微信订阅消息事件模板映射Mapper
*
* @Author: System
* @Date: 2025/12/31
*/
@Mapper
public interface WechatSubscribeEventTemplateMapper extends BaseMapper<WechatSubscribeEventTemplateEntity> {
}

View File

@@ -0,0 +1,16 @@
package com.ycwl.basic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycwl.basic.model.pc.notify.entity.WechatSubscribeSceneTemplateEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 微信订阅消息场景模板映射Mapper
*
* @Author: System
* @Date: 2025/12/31
*/
@Mapper
public interface WechatSubscribeSceneTemplateMapper extends BaseMapper<WechatSubscribeSceneTemplateEntity> {
}

View File

@@ -0,0 +1,16 @@
package com.ycwl.basic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycwl.basic.model.pc.notify.entity.WechatSubscribeSendLogEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 微信订阅消息发送日志Mapper
*
* @Author: System
* @Date: 2025/12/31
*/
@Mapper
public interface WechatSubscribeSendLogMapper extends BaseMapper<WechatSubscribeSendLogEntity> {
}

View File

@@ -0,0 +1,16 @@
package com.ycwl.basic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycwl.basic.model.pc.notify.entity.WechatSubscribeTemplateConfigEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 微信订阅消息模板配置Mapper
*
* @Author: System
* @Date: 2025/12/31
*/
@Mapper
public interface WechatSubscribeTemplateConfigMapper extends BaseMapper<WechatSubscribeTemplateConfigEntity> {
}