Commit 688d5b89 by 田超

Merge branch 'feature/1003917' into 'master'

feat: [1003917] 增加本书服务订阅更新机制

See merge request rays/pcloud-book!1086
parents 276f0c7d 1897f8b1
package com.pcloud.book.applet.dao;
import com.pcloud.book.applet.entity.AnswerSubscribeAdviser;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
/**
* 答案订阅-编辑发送记录(AnswerSubscribeAdviser)表数据库访问层
*
* @author makejava
* @since 2020-12-01 19:15:10
*/
public interface AnswerSubscribeAdviserDao extends BaseDao<AnswerSubscribeAdviser> {
/**
* 查询
* @author:zhuyajie
* @date:2020/12/1 19:34
* * @param null
*/
AnswerSubscribeAdviser queryAll(AnswerSubscribeAdviser answerSubscribeAdviser);
/**
* 查询待发送记录
* @author:zhuyajie
* @date:2020/12/1 19:48
* * @param null
*/
List<AnswerSubscribeAdviser> getRecord4Send();
}
\ No newline at end of file
package com.pcloud.book.applet.dao; package com.pcloud.book.applet.dao;
import com.pcloud.book.applet.dto.AnswerSubscribeCountDto;
import com.pcloud.book.applet.entity.AnswerSubscribe; import com.pcloud.book.applet.entity.AnswerSubscribe;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
...@@ -46,4 +47,18 @@ public interface AnswerSubscribeDao extends BaseDao<AnswerSubscribe>{ ...@@ -46,4 +47,18 @@ public interface AnswerSubscribeDao extends BaseDao<AnswerSubscribe>{
* * @param null * * @param null
*/ */
List<AnswerSubscribe> getBookBySendState(Integer sendState); List<AnswerSubscribe> getBookBySendState(Integer sendState);
/**
* 查编辑订阅人数
* @author:zhuyajie
* @date:2020/12/1 19:21
* * @param null
*/
List<AnswerSubscribeCountDto> getSubscribeCount4Adviser(Integer limit);
/**
* 查订阅人数
* @author:zhuyajie
* @date:2020/12/1 19:54
* * @param null
*/
Integer getUserCountByBookAdviser(AnswerSubscribe answerSubscribe);
} }
\ No newline at end of file
package com.pcloud.book.applet.dao.impl;
import com.pcloud.book.applet.dao.AnswerSubscribeAdviserDao;
import com.pcloud.book.applet.entity.AnswerSubscribeAdviser;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @ClassName com.pcloud.book.applet.dao.impl.AnswerSubscribeAdviserDaoImpl
* @Author zhuyajie
* @Description
* @Date 2020/12/1 19:17
* @Version 1.0
**/
@Component
public class AnswerSubscribeAdviserDaoImpl extends BaseDaoImpl<AnswerSubscribeAdviser> implements AnswerSubscribeAdviserDao {
@Override
public AnswerSubscribeAdviser queryAll(AnswerSubscribeAdviser answerSubscribeAdviser) {
return getSessionTemplate().selectOne(getStatement("queryAll"), answerSubscribeAdviser);
}
@Override
public List<AnswerSubscribeAdviser> getRecord4Send() {
return getSessionTemplate().selectList(getStatement("getRecord4Send"));
}
}
package com.pcloud.book.applet.dao.impl; package com.pcloud.book.applet.dao.impl;
import com.pcloud.book.applet.dao.AnswerSubscribeDao; import com.pcloud.book.applet.dao.AnswerSubscribeDao;
import com.pcloud.book.applet.dto.AnswerSubscribeCountDto;
import com.pcloud.book.applet.entity.AnswerSubscribe; import com.pcloud.book.applet.entity.AnswerSubscribe;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @ClassName com.pcloud.book.applet.dao.impl.AnswerSubscribeDaoImpl * @ClassName com.pcloud.book.applet.dao.impl.AnswerSubscribeDaoImpl
...@@ -37,4 +40,16 @@ public class AnswerSubscribeDaoImpl extends BaseDaoImpl<AnswerSubscribe> impleme ...@@ -37,4 +40,16 @@ public class AnswerSubscribeDaoImpl extends BaseDaoImpl<AnswerSubscribe> impleme
public List<AnswerSubscribe> getBookBySendState(Integer sendState) { public List<AnswerSubscribe> getBookBySendState(Integer sendState) {
return getSessionTemplate().selectList(getStatement("getBookBySendState"), sendState); return getSessionTemplate().selectList(getStatement("getBookBySendState"), sendState);
} }
@Override
public List<AnswerSubscribeCountDto> getSubscribeCount4Adviser(Integer limit) {
Map<String,Object> map = new HashMap<>();
map.put("limit", limit);
return getSessionTemplate().selectList(getStatement("getSubscribeCount4Adviser"), map);
}
@Override
public Integer getUserCountByBookAdviser(AnswerSubscribe answerSubscribe) {
return getSessionTemplate().selectOne(getStatement("getUserCountByBookAdviser"), answerSubscribe);
}
} }
package com.pcloud.book.applet.dto;
import com.pcloud.common.dto.BaseDto;
import lombok.Data;
/**
* @ClassName com.pcloud.book.applet.dto.AnswerSubscribeCountDto
* @Author zhuyajie
* @Description 订阅服务
* @Date 2020/12/1 19:18
* @Version 1.0
**/
@Data
public class AnswerSubscribeCountDto extends BaseDto {
private Integer userCount;
/**
* 书刊id
*/
private Long bookId;
/**
* 渠道id
*/
private Long channelId;
/**
* 编辑id
*/
private Long adviserId;
}
...@@ -49,5 +49,9 @@ public class AnswerSubscribe extends BaseEntity { ...@@ -49,5 +49,9 @@ public class AnswerSubscribe extends BaseEntity {
* 公众号id * 公众号id
*/ */
private Long accountSettingId; private Long accountSettingId;
/**
* 当前资源数量
*/
private Integer resourceCount;
} }
\ No newline at end of file
package com.pcloud.book.applet.entity;
import com.pcloud.common.entity.BaseEntity;
import java.util.Date;
import java.io.Serializable;
import lombok.Data;
/**
* 答案订阅-编辑发送记录(AnswerSubscribeAdviser)实体类
*
* @author makejava
* @since 2020-12-01 19:15:10
*/
@Data
public class AnswerSubscribeAdviser extends BaseEntity {
private static final long serialVersionUID = 441706888820089566L;
/**
* 主键
*/
private Long id;
/**
* 发送状态(0/1)
*/
private Integer sendState;
/**
* 发送类型(10人发/50人发)
*/
private Integer sendType;
/**
* 书刊id
*/
private Long bookId;
/**
* 渠道id
*/
private Long channelId;
/**
* 编辑id
*/
private Long adviserId;
}
\ No newline at end of file
<?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.pcloud.book.applet.dao.impl.AnswerSubscribeAdviserDaoImpl">
<resultMap type="com.pcloud.book.applet.entity.AnswerSubscribeAdviser" id="AnswerSubscribeAdviserMap">
<result property="id" column="id" jdbcType="INTEGER"/>
<result property="adviserId" column="adviser_id" jdbcType="INTEGER"/>
<result property="sendState" column="send_state" jdbcType="INTEGER"/>
<result property="sendType" column="send_type" jdbcType="INTEGER"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="bookId" column="book_id" jdbcType="INTEGER"/>
<result property="channelId" column="channel_id" jdbcType="INTEGER"/>
</resultMap>
<!--查询单个-->
<select id="getById" resultMap="AnswerSubscribeAdviserMap">
select
id, adviser_id, send_state, send_type, create_time, update_time, book_id, channel_id
from book.answer_subscribe_adviser
where id = #{id}
</select>
<!--通过实体作为筛选条件查询-->
<select id="queryAll" resultMap="AnswerSubscribeAdviserMap">
select
id, adviser_id, send_state, send_type, create_time, update_time, book_id, channel_id
from book.answer_subscribe_adviser
<where>
<if test="adviserId != null">
and adviser_id = #{adviserId}
</if>
<if test="bookId != null">
and book_id = #{bookId}
</if>
<if test="channelId != null">
and channel_id = #{channelId}
</if>
<if test="sendState != null">
and send_state = #{sendState}
</if>
<if test="sendType != null">
and send_type = #{sendType}
</if>
</where>
limit 1
</select>
<!--新增所有列-->
<insert id="insert" keyProperty="id" useGeneratedKeys="true">
insert into book.answer_subscribe_adviser(adviser_id, send_state, send_type, create_time, update_time,book_id, channel_id)
values (#{adviserId}, #{sendState}, #{sendType}, now(), now(), #{bookId}, #{channelId})
</insert>
<!--通过主键修改数据-->
<update id="update">
update book.answer_subscribe_adviser
<set>
<if test="sendState != null">
send_state = #{sendState},
</if>
<if test="sendType != null">
send_type = #{sendType},
</if>
update_time = now(),
</set>
where id = #{id}
</update>
<!--通过主键删除-->
<delete id="deleteById">
delete from book.answer_subscribe_adviser where id = #{id}
</delete>
<select id="getRecord4Send" resultMap="AnswerSubscribeAdviserMap">
select
id, adviser_id, send_state, send_type, create_time, update_time, book_id, channel_id
from book.answer_subscribe_adviser
WHERE send_state = 0
GROUP BY
book_id, channel_id, adviser_id
</select>
</mapper>
\ No newline at end of file
...@@ -12,17 +12,18 @@ ...@@ -12,17 +12,18 @@
<result property="accountSettingId" column="account_setting_id" jdbcType="INTEGER"/> <result property="accountSettingId" column="account_setting_id" jdbcType="INTEGER"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP" /> <result property="updateTime" column="update_time" jdbcType="TIMESTAMP" />
<result property="resourceCount" column="resource_count" jdbcType="INTEGER"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, wechat_user_id, book_id, channel_id, adviser_id, send_state, account_setting_id, create_time, update_time id, wechat_user_id, book_id, channel_id, adviser_id, send_state, account_setting_id, create_time, update_time, resource_count
</sql> </sql>
<!--新增所有列--> <!--新增所有列-->
<insert id="insert" keyProperty="id" useGeneratedKeys="true"> <insert id="insert" keyProperty="id" useGeneratedKeys="true">
insert into book.answer_subscribe(wechat_user_id, book_id, channel_id, adviser_id, send_state, insert into book.answer_subscribe(wechat_user_id, book_id, channel_id, adviser_id, send_state,
account_setting_id, create_time, update_time) account_setting_id, create_time, update_time, resource_count)
values (#{wechatUserId}, #{bookId}, #{channelId}, #{adviserId}, 0, #{accountSettingId}, NOW(), NOW()) values (#{wechatUserId}, #{bookId}, #{channelId}, #{adviserId}, 0, #{accountSettingId}, NOW(), NOW(), #{resourceCount})
</insert> </insert>
...@@ -57,14 +58,36 @@ ...@@ -57,14 +58,36 @@
and adviser_id = #{adviserId} and adviser_id = #{adviserId}
</select> </select>
<select id="getBookBySendState" resultType="com.pcloud.book.applet.entity.AnswerSubscribe" parameterType="integer"> <select id="getBookBySendState" resultMap="AnswerSubscribeMap" parameterType="integer">
SELECT SELECT
book_id bookId, <include refid="Base_Column_List"/>
channel_id channelId,
adviser_id adviserId
FROM book.answer_subscribe FROM book.answer_subscribe
WHERE send_state = #{sendState} WHERE send_state = #{sendState}
group by book_id, channel_id, adviser_id group by book_id, channel_id, adviser_id
</select> </select>
<select id="getSubscribeCount4Adviser" parameterType="map" resultType="com.pcloud.book.applet.dto.AnswerSubscribeCountDto">
SELECT
adviser_id adviserId,
COUNT(DISTINCT wechat_user_id) userCount,
book_id bookId,
channel_id channelId
FROM
answer_subscribe
WHERE
1=1
GROUP BY
book_id, channel_id, adviser_id
HAVING
COUNT(DISTINCT wechat_user_id) >= #{limit}
</select>
<select id="getUserCountByBookAdviser" resultType="integer" parameterType="com.pcloud.book.applet.entity.AnswerSubscribe">
SELECT COUNT(DISTINCT wechat_user_id)
FROM book.answer_subscribe
WHERE book_id = #{bookId}
and channel_id = #{channelId}
and adviser_id = #{adviserId}
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment