Commit 8e18195b by 高鹏

Merge branch 'feat-1002338' into 'master'

【1002338】共读活动剩余模块:支持群内打卡、群游戏、问题反馈

See merge request rays/pcloud-book!415
parents 3155297d c5435c6e
...@@ -95,4 +95,18 @@ public interface ReadingActivityBiz { ...@@ -95,4 +95,18 @@ public interface ReadingActivityBiz {
* @return * @return
*/ */
Boolean isKeyWord(SendTextDTO sendTextDTO); Boolean isKeyWord(SendTextDTO sendTextDTO);
/**
* 根据wxGroupId获取到共读活动详情
* @param wxGroupId
* @return
*/
ReadingActivityDTO getReadingActivityByWxGroupId(String wxGroupId);
/**
* 获取活动开启的天数
* @param readingActivityId
* @return
*/
Long getReadingActivityDays4Wechat(Long readingActivityId);
} }
...@@ -35,6 +35,7 @@ import com.pcloud.book.reading.enums.JoinConditionEnum; ...@@ -35,6 +35,7 @@ import com.pcloud.book.reading.enums.JoinConditionEnum;
import com.pcloud.book.reading.enums.JoinStateEnum; import com.pcloud.book.reading.enums.JoinStateEnum;
import com.pcloud.book.reading.enums.JoinTypeEnum; import com.pcloud.book.reading.enums.JoinTypeEnum;
import com.pcloud.book.util.common.ThreadPoolUtils; import com.pcloud.book.util.common.ThreadPoolUtils;
import com.pcloud.common.constant.UrlConstant;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam; import com.pcloud.common.page.PageParam;
...@@ -44,6 +45,7 @@ import com.pcloud.common.utils.QrcodeUtils; ...@@ -44,6 +45,7 @@ import com.pcloud.common.utils.QrcodeUtils;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils; import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.httpclient.UrlUtils; import com.pcloud.common.utils.httpclient.UrlUtils;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.common.utils.validate.ValidateUtils;
import com.pcloud.convert.file.entity.FileUploadInfo; import com.pcloud.convert.file.entity.FileUploadInfo;
import com.pcloud.facade.quartz.entity.CallBackParam; import com.pcloud.facade.quartz.entity.CallBackParam;
import com.pcloud.facade.quartz.entity.ScheduleJob; import com.pcloud.facade.quartz.entity.ScheduleJob;
...@@ -648,9 +650,13 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{ ...@@ -648,9 +650,13 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{
if (!readingActivity.getClockResultOpen()){ if (!readingActivity.getClockResultOpen()){
return; return;
} }
//todo String text = "本期活动结束了,有没有收获很大呢,快来看看我的成绩报告吧\n——> ";
String resultLink=""; String clockLink = readingActivity.getClockLink();
sendToGroup(readingActivity.getId(),ContentTypeEnum.TEXT.value,resultLink,null); String originLink = UrlUtils.getUrl4Own(clockLink.replaceAll(UrlConstant.OWN_SHORT_URL, ""));
// 原链接类似:https://app10035515.raysyun.com/clock/W35515/C35515/A1018656/custom/sign?isPreview=1&adviserId=12829
String resultLink = originLink.replace("/sign","/report").concat("&readingActivityId=" + readingActivity.getId());
String shortUrl4Own = UrlUtils.getShortUrl4Own(resultLink);
sendToGroup(readingActivity.getId(),ContentTypeEnum.TEXT.value,text.concat(shortUrl4Own),null);
} }
@ParamLog("发送活动奖励") @ParamLog("发送活动奖励")
...@@ -968,8 +974,16 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{ ...@@ -968,8 +974,16 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{
return; return;
} }
String text = readingActivity.getClockRemindContent(); String text = readingActivity.getClockRemindContent();
String clockLink = UrlUtils.getShortUrl4Own(readingActivity.getClockLink()); // 先将打卡短链转长链
text = text + "/n打卡链接:" + clockLink; String hex = readingActivity.getClockLink().replaceAll(UrlConstant.OWN_SHORT_URL, "");
String originLink = UrlUtils.getUrl4Own(hex);
// 补充参数
if(originLink.indexOf("?")>-1){
originLink = originLink.concat("&readingActivityId="+readingActivity.getId());
} else {
originLink = originLink.concat("?readingActivityId="+readingActivity.getId());
}
text = text + "\n打卡链接:" + UrlUtils.getShortUrl4Own(originLink);;
//发送提醒内容+打卡链接 //发送提醒内容+打卡链接
sendToGroup(activityId, ContentTypeEnum.TEXT.value, text, null); sendToGroup(activityId, ContentTypeEnum.TEXT.value, text, null);
} }
...@@ -1145,5 +1159,20 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{ ...@@ -1145,5 +1159,20 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{
} }
} }
@Override
public ReadingActivityDTO getReadingActivityByWxGroupId(String wxGroupId) {
return readingGroupDao.getDetailByWxGroupId(wxGroupId);
}
@Override
public Long getReadingActivityDays4Wechat(Long readingActivityId) {
ReadingActivity readingActivity = readingActivityDao.getById(readingActivityId);
if (!ValidateUtils.isEmpty(readingActivity.getStartTime()) && !ValidateUtils.isEmpty(readingActivity.getEndTime())) {
Long timeDiff = readingActivity.getEndTime().getTime() - readingActivity.getStartTime().getTime();
return timeDiff / 86400000L + (timeDiff % 86400000L > 0 ? 1 : 0);
} else {
return 0L;
}
}
} }
...@@ -8,8 +8,10 @@ import com.pcloud.book.reading.entity.ReadingInvite; ...@@ -8,8 +8,10 @@ import com.pcloud.book.reading.entity.ReadingInvite;
import com.pcloud.book.reading.enums.ContentTypeEnum; import com.pcloud.book.reading.enums.ContentTypeEnum;
import com.pcloud.book.reading.enums.JoinConditionEnum; import com.pcloud.book.reading.enums.JoinConditionEnum;
import com.pcloud.book.reading.enums.JoinTypeEnum; import com.pcloud.book.reading.enums.JoinTypeEnum;
import com.pcloud.common.constant.UrlConstant;
import com.pcloud.common.utils.DateUtils; import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.httpclient.UrlUtils;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -155,12 +157,19 @@ public class ParamCheck { ...@@ -155,12 +157,19 @@ public class ParamCheck {
if (StringUtil.isEmpty(activityAdditionParamDTO.getClockRemindTime()) || StringUtil.isEmpty(activityAdditionParamDTO.getClockRemindContent()) || StringUtil.isEmpty(activityAdditionParamDTO.getClockLink())) { if (StringUtil.isEmpty(activityAdditionParamDTO.getClockRemindTime()) || StringUtil.isEmpty(activityAdditionParamDTO.getClockRemindContent()) || StringUtil.isEmpty(activityAdditionParamDTO.getClockLink())) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "请填写打卡设置"); throw new BookBizException(BookBizException.PARAM_IS_NULL, "请填写打卡设置");
} }
if (StringUtil.isEmpty(activityAdditionParamDTO.getClockLink())) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "请填写打卡链接");
}
String clockLink = activityAdditionParamDTO.getClockLink();
// 先将短链转长链
String hex = clockLink.replaceAll(UrlConstant.OWN_SHORT_URL, "");
String originLink = UrlUtils.getUrl4Own(hex);
//编辑端自定义打卡 //编辑端自定义打卡
if (!activityAdditionParamDTO.getClockLink().contains("clock")) { if (!originLink.contains("clock")) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "请填写正确的打卡链接"); throw new BookBizException(BookBizException.PARAM_IS_NULL, "请填写正确的打卡链接");
} }
String clockLink = activityAdditionParamDTO.getClockLink(); // 拿到打卡的主键id
String clockId = clockLink.substring(clockLink.indexOf("/A") + 2, clockLink.indexOf("/custom/sign?")); String clockId = originLink.substring(originLink.indexOf("/A") + 2, originLink.indexOf("/custom/sign?"));
if (StringUtil.isEmpty(clockId)) { if (StringUtil.isEmpty(clockId)) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "请填写正确的打卡链接"); throw new BookBizException(BookBizException.PARAM_IS_NULL, "请填写正确的打卡链接");
} }
......
package com.pcloud.book.reading.dao; package com.pcloud.book.reading.dao;
import com.pcloud.book.reading.dto.ReadingActivityDTO;
import com.pcloud.book.reading.entity.ReadingGroup; import com.pcloud.book.reading.entity.ReadingGroup;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
...@@ -53,4 +54,10 @@ public interface ReadingGroupDao extends BaseDao<ReadingGroup> { ...@@ -53,4 +54,10 @@ public interface ReadingGroupDao extends BaseDao<ReadingGroup> {
* @param id * @param id
*/ */
public void updateGroupName(String wxGroupName, Long id); public void updateGroupName(String wxGroupName, Long id);
/** 根据wxGroupId查找共读活动
* 更新群名称
* @param wxGroupId
*/
ReadingActivityDTO getDetailByWxGroupId(String wxGroupId);
} }
package com.pcloud.book.reading.dao.impl; package com.pcloud.book.reading.dao.impl;
import com.pcloud.book.reading.dao.ReadingGroupDao; import com.pcloud.book.reading.dao.ReadingGroupDao;
import com.pcloud.book.reading.dto.ReadingActivityDTO;
import com.pcloud.book.reading.entity.ReadingGroup; import com.pcloud.book.reading.entity.ReadingGroup;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
...@@ -55,4 +56,9 @@ public class ReadingGroupDaoImpl extends BaseDaoImpl<ReadingGroup> implements Re ...@@ -55,4 +56,9 @@ public class ReadingGroupDaoImpl extends BaseDaoImpl<ReadingGroup> implements Re
map.put("id", id); map.put("id", id);
getSessionTemplate().update(getStatement("updateGroupName"), map); getSessionTemplate().update(getStatement("updateGroupName"), map);
} }
@Override
public ReadingActivityDTO getDetailByWxGroupId(String wxGroupId) {
return getSessionTemplate().selectOne(getStatement("getDetailByWxGroupId"), wxGroupId);
}
} }
...@@ -3,6 +3,7 @@ package com.pcloud.book.reading.facade; ...@@ -3,6 +3,7 @@ package com.pcloud.book.reading.facade;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.reading.biz.ReadingActivityBiz; import com.pcloud.book.reading.biz.ReadingActivityBiz;
import com.pcloud.book.reading.check.ParamCheck; import com.pcloud.book.reading.check.ParamCheck;
import com.pcloud.book.reading.dao.ReadingActivityDao;
import com.pcloud.book.reading.dto.AssignGroupDTO; import com.pcloud.book.reading.dto.AssignGroupDTO;
import com.pcloud.book.reading.dto.ReadingActivityAdditionParamDTO; import com.pcloud.book.reading.dto.ReadingActivityAdditionParamDTO;
import com.pcloud.book.reading.dto.ReadingActivityBaseParamDTO; import com.pcloud.book.reading.dto.ReadingActivityBaseParamDTO;
...@@ -12,10 +13,12 @@ import com.pcloud.common.dto.ResponseDto; ...@@ -12,10 +13,12 @@ import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.permission.PermissionException; import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.SessionUtil; import com.pcloud.common.utils.SessionUtil;
import com.pcloud.common.utils.cookie.Cookie;
import com.sdk.wxgroup.CollectionVO; import com.sdk.wxgroup.CollectionVO;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
...@@ -45,6 +48,8 @@ public class ReadingActivityFacade { ...@@ -45,6 +48,8 @@ public class ReadingActivityFacade {
private ReadingActivityBiz readingActivityBiz; private ReadingActivityBiz readingActivityBiz;
@Autowired @Autowired
private ParamCheck paramCheck; private ParamCheck paramCheck;
@Autowired
ReadingActivityDao readingActivityDao;
@PostMapping("receiveMoney") @PostMapping("receiveMoney")
public ResponseDto<Void> receiveMoney(@RequestBody CollectionVO vo) { public ResponseDto<Void> receiveMoney(@RequestBody CollectionVO vo) {
...@@ -115,5 +120,13 @@ public class ReadingActivityFacade { ...@@ -115,5 +120,13 @@ public class ReadingActivityFacade {
return new ResponseDto<>(); return new ResponseDto<>();
} }
@ApiOperation("获取活动开启的总天数")
@GetMapping("getReadingActivityDays4Wechat")
public ResponseDto<?> getReadingActivityDays4Wechat(@CookieValue("userInfo") String userInfo, @RequestParam("readingActivityId") Long readingActivityId) throws PermissionException {
if (null == readingActivityId) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "id为空");
}
Long wechatUserId = Cookie.getId(userInfo, Cookie._WECHAT_USER_ID);
return new ResponseDto<>(readingActivityBiz.getReadingActivityDays4Wechat(readingActivityId));
}
} }
...@@ -7,6 +7,8 @@ import com.pcloud.book.group.biz.GroupQrcodeBiz; ...@@ -7,6 +7,8 @@ import com.pcloud.book.group.biz.GroupQrcodeBiz;
import com.pcloud.book.group.dao.GroupQrcodeDao; import com.pcloud.book.group.dao.GroupQrcodeDao;
import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO; import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import com.pcloud.book.group.entity.GroupQrcode; import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.reading.biz.ReadingActivityBiz;
import com.pcloud.book.reading.dto.ReadingActivityDTO;
import com.pcloud.book.riddle.biz.RiddleRecordBiz; import com.pcloud.book.riddle.biz.RiddleRecordBiz;
import com.pcloud.book.riddle.constants.RiddleConstant; import com.pcloud.book.riddle.constants.RiddleConstant;
import com.pcloud.book.riddle.dao.RiddleClickRecordDao; import com.pcloud.book.riddle.dao.RiddleClickRecordDao;
...@@ -27,6 +29,7 @@ import com.pcloud.book.riddle.enums.RiddleClickTypeEnum; ...@@ -27,6 +29,7 @@ import com.pcloud.book.riddle.enums.RiddleClickTypeEnum;
import com.pcloud.book.riddle.enums.RiddleRecordStatusEnum; import com.pcloud.book.riddle.enums.RiddleRecordStatusEnum;
import com.pcloud.book.riddle.enums.RiddleReplyTypeEnum; import com.pcloud.book.riddle.enums.RiddleReplyTypeEnum;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.httpclient.UrlUtils; import com.pcloud.common.utils.httpclient.UrlUtils;
...@@ -90,6 +93,8 @@ public class RiddleRecordBizImpl implements RiddleRecordBiz { ...@@ -90,6 +93,8 @@ public class RiddleRecordBizImpl implements RiddleRecordBiz {
private RiddleCouponDao riddleCouponDao; private RiddleCouponDao riddleCouponDao;
@Autowired @Autowired
private BookGroupClassifyBiz bookGroupClassifyBiz; private BookGroupClassifyBiz bookGroupClassifyBiz;
@Autowired
private ReadingActivityBiz readingActivityBiz;
@Override @Override
@ParamLog("猜谜语游戏过程") @ParamLog("猜谜语游戏过程")
...@@ -108,9 +113,18 @@ public class RiddleRecordBizImpl implements RiddleRecordBiz { ...@@ -108,9 +113,18 @@ public class RiddleRecordBizImpl implements RiddleRecordBiz {
GroupQrcode groupQrcode = groupQrcodeDao.getGroupQrcodeByGroupId(wxGroupId); GroupQrcode groupQrcode = groupQrcodeDao.getGroupQrcodeByGroupId(wxGroupId);
if (null != groupQrcode) { if (null != groupQrcode) {
if (!groupQrcode.getRiddleOpen()) { if (!groupQrcode.getRiddleOpen()) {
logger.info("微信群=" + wxGroupId + "没有开启猜谜语游戏权限"); ReadingActivityDTO readingActivityDTO = readingActivityBiz.getReadingActivityByWxGroupId(wxGroupId);
return; if (null == readingActivityDTO){
logger.info("微信群=" + wxGroupId + "共读活动="+readingActivityDTO.getTheme()+"没有开启猜谜语游戏权限");
return;
}else if (null != readingActivityDTO && !readingActivityDTO.getRiddleOpen()){
logger.info("微信群=" + wxGroupId + "共读活动="+readingActivityDTO.getTheme()+"没有开启猜谜语游戏权限");
return;
}
} }
}else
{
throw new BizException(BizException.PARAM_IS_NULL.getCode(),"根据wxGroupId找不到群");
} }
//历史记录 //历史记录
RiddleRecord riddleRecord = riddleRecordDao.getLastRecordByWxGroupId(wxGroupId, null); RiddleRecord riddleRecord = riddleRecordDao.getLastRecordByWxGroupId(wxGroupId, null);
......
...@@ -80,6 +80,13 @@ ...@@ -80,6 +80,13 @@
clock_link, clock_serve_id, clock_serve_type, clock_result_open, create_time, create_user, update_time clock_link, clock_serve_id, clock_serve_type, clock_result_open, create_time, create_user, update_time
</sql> </sql>
<sql id="Base_Column_List_ra" >
ra.id, ra.theme, ra.brand_id, ra.join_condition, ra.join_keyword, ra.join_amount, ra.join_type, ra.join_qrcode_pic,
ra.rule_type, ra.rule, ra.rule_resource_id, ra.start_time, ra.start_slogan_type, ra.start_slogan, ra.start_resource_id, ra.end_time, ra.end_slogan_type,
ra.end_slogan,ra.end_resource_id, ra.riddle_open, ra.award_open, ra.award_text, ra.award_pic, ra.clock_open, ra.clock_remind_time, ra.clock_remind_content,
ra.clock_link, ra.clock_serve_id, ra.clock_serve_type, ra.clock_result_open, ra.create_time, ra.create_user, ra.update_time
</sql>
<insert id="insert" parameterType="com.pcloud.book.reading.entity.ReadingActivity" useGeneratedKeys="true" keyProperty="id"> <insert id="insert" parameterType="com.pcloud.book.reading.entity.ReadingActivity" useGeneratedKeys="true" keyProperty="id">
insert into reading_activity (theme, brand_id, insert into reading_activity (theme, brand_id,
join_condition, join_keyword, join_amount, join_condition, join_keyword, join_amount,
......
...@@ -85,4 +85,14 @@ ...@@ -85,4 +85,14 @@
id = #{id} id = #{id}
</update> </update>
<select id="getDetailByWxGroupId" parameterType="string" resultMap="com.pcloud.book.reading.dao.impl.ReadingActivityDaoImpl.BaseDTOResultMap">
select
<include refid="com.pcloud.book.reading.dao.impl.ReadingActivityDaoImpl.Base_Column_List_ra"/>
from
reading_group rg
left join reading_activity ra
on rg.activity_id = ra.id
where rg.wx_group_id = #{wxGroupId}
</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