You've already forked FrameTour-BE
feat(notify): 新增用户通知授权管理功能
- 添加用户通知授权记录的完整CRUD操作 - 实现授权次数的记录与消费逻辑 - 提供授权状态检查与剩余次数查询接口 - 支持按用户、模板或景区维度查询授权记录 - 新增授权统计信息接口,包括总授权数、消费数等 - 完成移动端相关请求/响应DTO定义 - 集成MyBatis Mapper实现数据持久化操作 - 添加服务层事务控制确保操作一致性
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
package com.ycwl.basic.model.mobile.notify.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 通知授权检查请求
|
||||
*
|
||||
* @Author: System
|
||||
* @Date: 2024/12/28
|
||||
*/
|
||||
@Data
|
||||
public class NotificationAuthCheckReq {
|
||||
|
||||
/**
|
||||
* 通知模板ID
|
||||
*/
|
||||
@NotBlank(message = "模板ID不能为空")
|
||||
private String templateId;
|
||||
|
||||
/**
|
||||
* 景区ID
|
||||
*/
|
||||
@NotNull(message = "景区ID不能为空")
|
||||
private Long scenicId;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.ycwl.basic.model.mobile.notify.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 通知授权消费请求
|
||||
*
|
||||
* @Author: System
|
||||
* @Date: 2024/12/28
|
||||
*/
|
||||
@Data
|
||||
public class NotificationAuthConsumeReq {
|
||||
|
||||
/**
|
||||
* 通知模板ID
|
||||
*/
|
||||
@NotBlank(message = "模板ID不能为空")
|
||||
private String templateId;
|
||||
|
||||
/**
|
||||
* 景区ID
|
||||
*/
|
||||
@NotNull(message = "景区ID不能为空")
|
||||
private Long scenicId;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.ycwl.basic.model.mobile.notify.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 通知授权记录请求
|
||||
*
|
||||
* @Author: System
|
||||
* @Date: 2024/12/28
|
||||
*/
|
||||
@Data
|
||||
public class NotificationAuthRecordReq {
|
||||
|
||||
/**
|
||||
* 通知模板ID
|
||||
*/
|
||||
@NotBlank(message = "模板ID不能为空")
|
||||
private String templateId;
|
||||
|
||||
/**
|
||||
* 景区ID
|
||||
*/
|
||||
@NotNull(message = "景区ID不能为空")
|
||||
private Long scenicId;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.ycwl.basic.model.mobile.notify.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 通知授权记录查询请求
|
||||
*
|
||||
* @Author: System
|
||||
* @Date: 2024/12/28
|
||||
*/
|
||||
@Data
|
||||
public class NotificationAuthRecordsReq {
|
||||
|
||||
/**
|
||||
* 模板ID(可选)
|
||||
*/
|
||||
private String templateId;
|
||||
|
||||
/**
|
||||
* 页码
|
||||
*/
|
||||
private Integer page = 1;
|
||||
|
||||
/**
|
||||
* 每页大小
|
||||
*/
|
||||
private Integer size = 10;
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.ycwl.basic.model.mobile.notify.resp;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 通知授权检查响应
|
||||
*
|
||||
* @Author: System
|
||||
* @Date: 2024/12/28
|
||||
*/
|
||||
@Data
|
||||
public class NotificationAuthCheckResp {
|
||||
|
||||
/**
|
||||
* 是否有授权
|
||||
*/
|
||||
private Boolean hasAuthorization;
|
||||
|
||||
/**
|
||||
* 剩余授权次数
|
||||
*/
|
||||
private Integer remainingCount;
|
||||
|
||||
/**
|
||||
* 总授权次数
|
||||
*/
|
||||
private Integer authorizationCount;
|
||||
|
||||
/**
|
||||
* 已消费次数
|
||||
*/
|
||||
private Integer consumedCount;
|
||||
|
||||
/**
|
||||
* 最后授权时间
|
||||
*/
|
||||
private Date lastAuthorizedTime;
|
||||
|
||||
/**
|
||||
* 最后消费时间
|
||||
*/
|
||||
private Date lastConsumedTime;
|
||||
|
||||
/**
|
||||
* 模板ID
|
||||
*/
|
||||
private String templateId;
|
||||
|
||||
/**
|
||||
* 景区ID
|
||||
*/
|
||||
private Long scenicId;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.ycwl.basic.model.mobile.notify.resp;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 通知授权消费响应
|
||||
*
|
||||
* @Author: System
|
||||
* @Date: 2024/12/28
|
||||
*/
|
||||
@Data
|
||||
public class NotificationAuthConsumeResp {
|
||||
|
||||
/**
|
||||
* 是否消费成功
|
||||
*/
|
||||
private Boolean consumeSuccess;
|
||||
|
||||
/**
|
||||
* 剩余授权次数
|
||||
*/
|
||||
private Integer remainingCount;
|
||||
|
||||
/**
|
||||
* 消费失败原因
|
||||
*/
|
||||
private String failReason;
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package com.ycwl.basic.model.mobile.notify.resp;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 通知授权记录响应
|
||||
*
|
||||
* @Author: System
|
||||
* @Date: 2024/12/28
|
||||
*/
|
||||
@Data
|
||||
public class NotificationAuthRecordResp {
|
||||
|
||||
/**
|
||||
* 记录ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 模板ID
|
||||
*/
|
||||
private String templateId;
|
||||
|
||||
/**
|
||||
* 景区ID
|
||||
*/
|
||||
private Long scenicId;
|
||||
|
||||
/**
|
||||
* 景区名称
|
||||
*/
|
||||
private String scenicName;
|
||||
|
||||
/**
|
||||
* 授权次数
|
||||
*/
|
||||
private Integer authorizationCount;
|
||||
|
||||
/**
|
||||
* 已消费次数
|
||||
*/
|
||||
private Integer consumedCount;
|
||||
|
||||
/**
|
||||
* 剩余授权次数
|
||||
*/
|
||||
private Integer remainingCount;
|
||||
|
||||
/**
|
||||
* 最后授权时间
|
||||
*/
|
||||
private Date lastAuthorizedTime;
|
||||
|
||||
/**
|
||||
* 最后消费时间
|
||||
*/
|
||||
private Date lastConsumedTime;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
package com.ycwl.basic.model.pc.notify.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 用户通知授权记录实体类
|
||||
*
|
||||
* @Author: System
|
||||
* @Date: 2024/12/28
|
||||
*/
|
||||
@Data
|
||||
@TableName("user_notification_authorization")
|
||||
public class UserNotificationAuthorizationEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long memberId;
|
||||
|
||||
/**
|
||||
* 通知模板ID(微信消息模板ID)
|
||||
*/
|
||||
private String templateId;
|
||||
|
||||
/**
|
||||
* 景区ID
|
||||
*/
|
||||
private Long scenicId;
|
||||
|
||||
/**
|
||||
* 授权次数
|
||||
*/
|
||||
private Integer authorizationCount;
|
||||
|
||||
/**
|
||||
* 已消费次数
|
||||
*/
|
||||
private Integer consumedCount;
|
||||
|
||||
/**
|
||||
* 剩余授权次数(计算字段)
|
||||
*/
|
||||
private Integer remainingCount;
|
||||
|
||||
/**
|
||||
* 最后授权时间
|
||||
*/
|
||||
private Date lastAuthorizedTime;
|
||||
|
||||
/**
|
||||
* 最后消费时间
|
||||
*/
|
||||
private Date lastConsumedTime;
|
||||
|
||||
/**
|
||||
* 状态:1-有效,0-无效
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
}
|
||||
Reference in New Issue
Block a user