feat(notify): 支持批量授权记录及景区模板查询

- 新增批量授权记录接口,支持一次请求处理多个模板ID
- 新增查询景区通知模板及用户授权余额接口
- 修改授权记录请求体,将单个templateId改为templateIds列表
- 增加授权记录响应结构,区分成功与失败记录
- 新增通知授权工具类,封装常用授权检查与消费方法
- 使用JwtTokenUtil获取当前用户ID替代BaseContextHandler
- 移除过时的BaseContextHandler导入及相关代码依赖
This commit is contained in:
2025-10-15 09:41:18 +08:00
parent 86d5f8ceb1
commit c80086ba69
7 changed files with 520 additions and 59 deletions

View File

@@ -2,11 +2,12 @@ package com.ycwl.basic.model.mobile.notify.req;
import lombok.Data;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import java.util.List;
/**
* 通知授权记录请求
* 通知授权记录请求 - 支持批量授权
*
* @Author: System
* @Date: 2024/12/28
@@ -15,10 +16,10 @@ import jakarta.validation.constraints.NotNull;
public class NotificationAuthRecordReq {
/**
* 通知模板ID
* 通知模板ID列表 - 支持批量授权
*/
@NotBlank(message = "模板ID不能为空")
private String templateId;
@NotEmpty(message = "模板ID列表不能为空")
private List<String> templateIds;
/**
* 景区ID

View File

@@ -3,9 +3,10 @@ package com.ycwl.basic.model.mobile.notify.resp;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* 通知授权记录响应
* 通知授权记录响应 - 支持批量记录
*
* @Author: System
* @Date: 2024/12/28
@@ -14,57 +15,78 @@ import java.util.Date;
public class NotificationAuthRecordResp {
/**
* 记录ID
* 是否全部成功
*/
private Long id;
private Boolean allSuccess;
/**
* 模板ID
* 成功记录的授权列表
*/
private String templateId;
private List<AuthorizationRecord> successRecords;
/**
* 景区ID
* 失败的模板ID列表
*/
private Long scenicId;
private List<String> failedTemplateIds;
/**
* 景区名称
* 失败原因列表(对应failedTemplateIds)
*/
private String scenicName;
private List<String> failureReasons;
/**
* 授权次数
* 授权记录详情
*/
private Integer authorizationCount;
/**
* 已消费次数
*/
private Integer consumedCount;
/**
* 剩余授权次数
*/
private Integer remainingCount;
/**
* 最后授权时间
*/
private Date lastAuthorizedTime;
/**
* 最后消费时间
*/
private Date lastConsumedTime;
/**
* 状态
*/
private Integer status;
/**
* 创建时间
*/
private Date createTime;
@Data
public static class AuthorizationRecord {
/**
* 记录ID
*/
private Long id;
/**
* 模板ID
*/
private String templateId;
/**
* 景区ID
*/
private Long scenicId;
/**
* 授权次数
*/
private Integer authorizationCount;
/**
* 已消费次数
*/
private Integer consumedCount;
/**
* 剩余授权次数
*/
private Integer remainingCount;
/**
* 最后授权时间
*/
private Date lastAuthorizedTime;
/**
* 最后消费时间
*/
private Date lastConsumedTime;
/**
* 状态
*/
private Integer status;
/**
* 创建时间
*/
private Date createTime;
}
}

View File

@@ -0,0 +1,56 @@
package com.ycwl.basic.model.mobile.notify.resp;
import lombok.Data;
import java.util.List;
/**
* 景区通知模板ID及用户授权余额响应
*
* @Author: System
* @Date: 2024/12/28
*/
@Data
public class ScenicTemplateAuthResp {
/**
* 景区ID
*/
private Long scenicId;
/**
* 模板授权信息列表
*/
private List<TemplateAuthInfo> templates;
/**
* 模板授权信息
*/
@Data
public static class TemplateAuthInfo {
/**
* 模板ID
*/
private String templateId;
/**
* 剩余授权次数
*/
private Integer remainingCount;
/**
* 是否有授权(剩余次数 > 0)
*/
private Boolean hasAuthorization;
/**
* 授权次数
*/
private Integer authorizationCount;
/**
* 已消费次数
*/
private Integer consumedCount;
}
}