You've already forked FrameTour-BE
feat(notify): 新增用户通知授权管理功能
- 添加用户通知授权记录的完整CRUD操作 - 实现授权次数的记录与消费逻辑 - 提供授权状态检查与剩余次数查询接口 - 支持按用户、模板或景区维度查询授权记录 - 新增授权统计信息接口,包括总授权数、消费数等 - 完成移动端相关请求/响应DTO定义 - 集成MyBatis Mapper实现数据持久化操作 - 添加服务层事务控制确保操作一致性
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
<?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.ycwl.basic.mapper.UserNotificationAuthorizationMapper">
|
||||
|
||||
<!-- 结果映射 -->
|
||||
<resultMap id="BaseResultMap" type="com.ycwl.basic.model.pc.notify.entity.UserNotificationAuthorizationEntity">
|
||||
<id column="id" property="id" jdbcType="BIGINT"/>
|
||||
<result column="member_id" property="memberId" jdbcType="BIGINT"/>
|
||||
<result column="template_id" property="templateId" jdbcType="VARCHAR"/>
|
||||
<result column="scenic_id" property="scenicId" jdbcType="BIGINT"/>
|
||||
<result column="authorization_count" property="authorizationCount" jdbcType="INTEGER"/>
|
||||
<result column="consumed_count" property="consumedCount" jdbcType="INTEGER"/>
|
||||
<result column="remaining_count" property="remainingCount" jdbcType="INTEGER"/>
|
||||
<result column="last_authorized_time" property="lastAuthorizedTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="last_consumed_time" property="lastConsumedTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="status" property="status" jdbcType="TINYINT"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 基础字段 -->
|
||||
<sql id="Base_Column_List">
|
||||
id, member_id, template_id, scenic_id, authorization_count, consumed_count,
|
||||
remaining_count, last_authorized_time, last_consumed_time, status, create_time, update_time
|
||||
</sql>
|
||||
|
||||
<!-- 根据用户ID、模板ID和景区ID查询授权记录 -->
|
||||
<select id="selectByMemberAndTemplateAndScenic" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="Base_Column_List"/>
|
||||
FROM user_notification_authorization
|
||||
WHERE member_id = #{memberId}
|
||||
AND template_id = #{templateId}
|
||||
AND scenic_id = #{scenicId}
|
||||
AND status = 1
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 根据用户ID查询授权记录列表 -->
|
||||
<select id="selectByMemberId" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="Base_Column_List"/>
|
||||
FROM user_notification_authorization
|
||||
WHERE member_id = #{memberId}
|
||||
AND status = 1
|
||||
ORDER BY create_time DESC
|
||||
</select>
|
||||
|
||||
<!-- 根据用户ID和模板ID查询授权记录列表 -->
|
||||
<select id="selectByMemberIdAndTemplateId" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="Base_Column_List"/>
|
||||
FROM user_notification_authorization
|
||||
WHERE member_id = #{memberId}
|
||||
AND template_id = #{templateId}
|
||||
AND status = 1
|
||||
ORDER BY create_time DESC
|
||||
</select>
|
||||
|
||||
<!-- 根据景区ID查询授权记录列表 -->
|
||||
<select id="selectByScenicId" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="Base_Column_List"/>
|
||||
FROM user_notification_authorization
|
||||
WHERE scenic_id = #{scenicId}
|
||||
AND status = 1
|
||||
ORDER BY create_time DESC
|
||||
</select>
|
||||
|
||||
<!-- 增加授权次数 -->
|
||||
<update id="increaseAuthorizationCount">
|
||||
UPDATE user_notification_authorization
|
||||
SET authorization_count = authorization_count + #{count},
|
||||
last_authorized_time = NOW(),
|
||||
update_time = NOW()
|
||||
WHERE id = #{id}
|
||||
AND status = 1
|
||||
</update>
|
||||
|
||||
<!-- 增加消费次数 -->
|
||||
<update id="increaseConsumedCount">
|
||||
UPDATE user_notification_authorization
|
||||
SET consumed_count = consumed_count + #{count},
|
||||
last_consumed_time = NOW(),
|
||||
update_time = NOW()
|
||||
WHERE id = #{id}
|
||||
AND status = 1
|
||||
AND consumed_count + #{count} <= authorization_count
|
||||
</update>
|
||||
|
||||
<!-- 检查用户是否还有剩余授权次数 -->
|
||||
<select id="selectRemainingCount" resultType="java.lang.Integer">
|
||||
SELECT COALESCE(remaining_count, 0)
|
||||
FROM user_notification_authorization
|
||||
WHERE member_id = #{memberId}
|
||||
AND template_id = #{templateId}
|
||||
AND scenic_id = #{scenicId}
|
||||
AND status = 1
|
||||
AND remaining_count > 0
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user