Commit 4d637238 by 吴博

feat: [1004100] 个人中心新增任务

parent f16b1ef5
package com.pcloud.book.applet.biz;
import com.pcloud.book.applet.dto.AppletTaskDTO;
import com.pcloud.book.applet.dto.AppletUserBookcaseDTO;
import com.pcloud.book.applet.dto.UserLastBookReDTO;
import com.pcloud.book.applet.entity.AppletUserBookcase;
......@@ -19,7 +20,7 @@ public interface AppletUserBookcaseBiz {
* 添加图书到书架
* @param appletUserBookcase
*/
void addUserBook(AppletUserBookcase appletUserBookcase);
AppletTaskDTO addUserBook(AppletUserBookcase appletUserBookcase);
/**
* 查用户书架列表
......
package com.pcloud.book.applet.biz;
import com.pcloud.book.applet.dto.AppletTaskDTO;
import com.pcloud.book.applet.dto.ServeCollectDTO;
import com.pcloud.book.applet.entity.ServeCollect;
import com.pcloud.common.page.PageBeanNew;
......@@ -34,7 +35,7 @@ public interface ServeCollectBiz {
* @param serveCollect 实例对象
* @return 主键
*/
Long insert(ServeCollect serveCollect);
AppletTaskDTO insert(ServeCollect serveCollect);
/**
* 修改数据
......
......@@ -9,6 +9,7 @@ import com.pcloud.book.applet.dao.AppletThirdResourcesDao;
import com.pcloud.book.applet.dao.AppletUserBookcaseDao;
import com.pcloud.book.applet.dto.AppletNewsDTO;
import com.pcloud.book.applet.dto.AppletNewsServeDTO;
import com.pcloud.book.applet.dto.AppletTaskDTO;
import com.pcloud.book.applet.dto.AppletUserBookcaseDTO;
import com.pcloud.book.applet.dto.BookResourceExcelDTO;
import com.pcloud.book.applet.dto.UserLastBookReDTO;
......@@ -28,6 +29,7 @@ import com.pcloud.book.book.entity.BookLabel;
import com.pcloud.book.book.entity.BookRaysClassify;
import com.pcloud.book.consumer.app.AssistTempletConsr;
import com.pcloud.book.consumer.common.ExportConsr;
import com.pcloud.book.consumer.reader.ReaderConsr;
import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.copyright.tools.ExcelUtil;
import com.pcloud.book.es.biz.ESBookAndAdviserBiz;
......@@ -58,10 +60,12 @@ import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.readercenter.common.enums.YesOrNoNumEnum;
import com.pcloud.readercenter.rmall.constants.RmallContants;
import com.pcloud.readercenter.rmall.enums.MoneyReceiveTypeEnum;
import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.apache.regexp.RE;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
......@@ -129,17 +133,21 @@ public class AppletUserBookcaseBizImpl implements AppletUserBookcaseBiz {
private RmallBookMoneyRecordService rmallBookMoneyRecordService;
@Autowired
private BookLabelDao bookLabelDao;
@Autowired
private ReaderConsr readerConsr;
@Override
@ParamLog("小程序用户添加书架")
public void addUserBook(AppletUserBookcase appletUserBookcase) {
public AppletTaskDTO addUserBook(AppletUserBookcase appletUserBookcase) {
AppletTaskDTO appletTaskDTO = new AppletTaskDTO();
Integer isFinish = 0;
Long wechatUserId = appletUserBookcase.getWechatUserId();
if (BookConstant.visitorWechatUserId.equals(wechatUserId)) {
return;
return appletTaskDTO;
}
if (null != appletUserBookcase.getBookId() &&
(null == appletUserBookcase.getChannelId() || null == appletUserBookcase.getAdviserId())) {
return;
return appletTaskDTO;
}
if (null == appletUserBookcase.getRightsSettingId()) {//书刊对应的权益
RightsSettingDto rightsSettingDto = rightsSettingBiz.getReadType4Book(wechatUserId, appletUserBookcase.getBookId(), appletUserBookcase.getChannelId(), appletUserBookcase.getAdviserId());
......@@ -158,6 +166,11 @@ public class AppletUserBookcaseBizImpl implements AppletUserBookcaseBiz {
//查询这本书书架中有没有
AppletUserBookcase userBook = appletUserBookcaseDao.getUserReadType(wechatUserId, appletUserBookcase.getBookId(), appletUserBookcase.getAdviserId(), appletUserBookcase.getChannelId());
if (null == userBook) {
Integer taskCount = readerConsr.getTaskCount(wechatUserId, MoneyReceiveTypeEnum.NEW_BOOK.key);
Integer subtractTaskCount = RmallContants.NEW_BOOK_MONEY_TIMES - 1;
if (null != taskCount && subtractTaskCount.equals(taskCount)) {
isFinish = 1;
}
RMALL_SIGN_IN.execute(()->{
//收藏埋点
RmallBookMoneyRecord rmallBookMoneyRecord = new RmallBookMoneyRecord();
......@@ -171,6 +184,8 @@ public class AppletUserBookcaseBizImpl implements AppletUserBookcaseBiz {
JedisClusterUtils.del(AppletConstants.USER_BOOK_CASE + wechatUserId);
JedisClusterUtils.del(AppletConstants.USER_BOOK_CASE_COUNT + wechatUserId);
esBookAndAdviserBiz.updateBookAndAdviserToES(Collections.singletonList(appletUserBookcase.getBookId()));
appletTaskDTO.setIsFinishTask(isFinish);
return appletTaskDTO;
}
@Override
......
......@@ -9,6 +9,7 @@ import com.pcloud.book.applet.dao.ServeCollectDao;
import com.pcloud.book.applet.dto.AppletAppOrProductDTO;
import com.pcloud.book.applet.dto.AppletNewsDTO;
import com.pcloud.book.applet.dto.AppletRecordDTO;
import com.pcloud.book.applet.dto.AppletTaskDTO;
import com.pcloud.book.applet.dto.ServeCollectDTO;
import com.pcloud.book.applet.entity.ServeCollect;
import com.pcloud.book.applet.enums.AppletRecordTypeEnum;
......@@ -16,6 +17,7 @@ import com.pcloud.book.applet.enums.CollectionTypeEnum;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.consumer.app.AppConsr;
import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
import com.pcloud.book.consumer.reader.ReaderConsr;
import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.group.enums.AppAndProductTypeEnum;
import com.pcloud.book.group.tools.SendWeixinRequestTools;
......@@ -32,8 +34,10 @@ import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.NumberUtil;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.readercenter.common.enums.YesOrNoNumEnum;
import com.pcloud.readercenter.rmall.constants.RmallContants;
import com.pcloud.readercenter.rmall.enums.MoneyReceiveTypeEnum;
import com.pcloud.resourcecenter.product.dto.ProductDto;
import io.swagger.models.auth.In;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -76,6 +80,8 @@ public class ServeCollectBizImpl implements ServeCollectBiz {
private AppletNewsBiz appletNewsBiz;
@Autowired
private RmallBookMoneyRecordService rmallBookMoneyRecordService;
@Autowired
private ReaderConsr readerConsr;
@Override
......@@ -263,10 +269,18 @@ public class ServeCollectBizImpl implements ServeCollectBiz {
@Override
@ParamLog("新增收藏")
public Long insert(ServeCollect serveCollect) {
public AppletTaskDTO insert(ServeCollect serveCollect) {
paramCheck(serveCollect);
fillParam(serveCollect);
AppletTaskDTO appletTaskDTO = new AppletTaskDTO();
serveCollectDao.insert(serveCollect);
Integer taskCount = readerConsr.getTaskCount(serveCollect.getWechatUserId(), MoneyReceiveTypeEnum.COLLECTION.key);
Integer subtractTaskCount = RmallContants.COLLECTION_MONEY_TIMES - 1;
Integer isFinish = 0;
if (null != taskCount && subtractTaskCount.equals(taskCount)) {
isFinish = 1;
}
appletTaskDTO.setIsFinishTask(isFinish);
RMALL_SIGN_IN.execute(()->{
//收藏埋点
if (null == serveCollect.getIsDelete() || YesOrNoNumEnum.NO.getValue().equals(serveCollect.getIsDelete())){
......@@ -276,7 +290,7 @@ public class ServeCollectBizImpl implements ServeCollectBiz {
rmallBookMoneyRecordService.insert(rmallBookMoneyRecord);
}
});
return serveCollect.getId();
return appletTaskDTO;
}
private void fillParam(ServeCollect serveCollect) {
......
......@@ -56,4 +56,11 @@ public interface AppletBookClassifyDao extends BaseDao<AppletBookClassify>{
Long getAppletBookClassifyId(Long firstClassifyId);
Map<Long, AppletBookClassifyDTO> getBookClassifyByIds(List<Long> bookAdviserIds);
/**
* 根据书刊分类id获取客户端标签
* @param templetIds
* @return
*/
Map<Long, AppletBookClassifyDTO> getClassifyNames(List<Long> templetIds);
}
\ No newline at end of file
......@@ -52,4 +52,9 @@ public class AppletBookClassifyDaoImpl extends BaseDaoImpl<AppletBookClassify> i
@Override
public Map<Long, AppletBookClassifyDTO> getBookClassifyByIds(List<Long> bookAdviserIds) {
return getSessionTemplate().selectMap(getStatement("getBookClassifyByIds"),bookAdviserIds,"id"); }
@Override
public Map<Long, AppletBookClassifyDTO> getClassifyNames(List<Long> templetIds) {
return getSessionTemplate().selectMap(getStatement("getClassifyNames"),templetIds,"templetId");
}
}
......@@ -56,4 +56,9 @@ public class AppletBookClassifyDTO extends BaseDto{
* 客户端标签
*/
private List<AppletLabelDTO> userLabelDTOS;
/**
* 书刊分类id
*/
private Long templetId;
}
package com.pcloud.book.applet.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class AppletTaskDTO {
@ApiModelProperty("是否第一次完成了今日任务 1是第一次完成所有任务 0 未完成或不是第一次")
private Integer isFinishTask;
}
......@@ -605,8 +605,7 @@ public class AppletHomeFacade {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "缺少参数");
}
appletUserBookcase.setWechatUserId(wechatUserId);
appletUserBookcaseBiz.addUserBook(appletUserBookcase);
return new ResponseDto<>();
return new ResponseDto<>(appletUserBookcaseBiz.addUserBook(appletUserBookcase));
}
@ApiOperation("查用户书架列表")
......
......@@ -59,7 +59,7 @@ public class ServeCollectFacade {
public ResponseDto<?> insert(@CookieValue("userInfo") String userInfo, @RequestBody ServeCollect serveCollect)
throws BizException, PermissionException {
Long wechatUserId = Cookie.getId(userInfo, Cookie._WECHAT_USER_ID);
return new ResponseDto<>(serveCollectBiz.insert(serveCollect));
return new ResponseDto<>();
}
@ApiOperation("收藏")
......
package com.pcloud.book.book.biz.impl;
import cn.hutool.core.collection.CollUtil;
import com.pcloud.book.applet.dao.AppletBookClassifyDao;
import com.pcloud.book.applet.dto.AppletBookClassifyDTO;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.biz.SearchBiz;
import com.pcloud.book.book.dao.BookDao;
......@@ -35,6 +37,7 @@ import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.readercenter.wechat.entity.WechatUser;
import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
import com.pcloud.wechatgroup.group.dto.GroupUserDTO;
import org.apache.commons.collections.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -80,6 +83,8 @@ public class SearchBizImpl implements SearchBiz {
private SearchRecordSaleDao searchRecordSaleDao;
@Autowired
private SearchRecordDisSaleDao searchRecordDisSaleDao;
@Autowired
private AppletBookClassifyDao appletBookClassifyDao;
@ParamLog("创建热门书")
@Transactional(rollbackFor = Exception.class)
......@@ -113,9 +118,30 @@ public class SearchBizImpl implements SearchBiz {
List<HotBook> list=pageNew.getRecordList();
//填充出版社信息
fillHotBookAgent(list);
fillClassify(list);
return pageNew;
}
private void fillClassify(List<HotBook> list) {
if (ListUtils.isEmpty(list)) {
return;
}
List<Long> templetIds = list.stream().filter(s -> s.getTempletId() != null).map(HotBook::getTempletId).distinct().collect(Collectors.toList());
if (ListUtils.isEmpty(templetIds)) {
return;
}
Map<Long, AppletBookClassifyDTO> classifyNameMap = appletBookClassifyDao.getClassifyNames(templetIds);
if (MapUtils.isEmpty(classifyNameMap)) {
return;
}
for (HotBook hotBook : list) {
AppletBookClassifyDTO appletBookClassifyDTO = classifyNameMap.get(hotBook.getTempletId());
if (appletBookClassifyDTO != null) {
hotBook.setClassifyName(appletBookClassifyDTO.getClassifyName());
}
}
}
@ParamLog("填充书的出版社")
private void fillHotBookAgent(List<HotBook> list) {
if (ListUtils.isEmpty(list)){
......
......@@ -43,5 +43,11 @@ public class HotBook extends BaseEntity {
@ApiModelProperty("出版社")
private String publish;
@ApiModelProperty("一级分类id")
private Long templetId;
@ApiModelProperty("分类名称")
private String classifyName;
}
......@@ -336,6 +336,16 @@ public class ReaderConsr {
}
return null;
}
public Integer getTaskCount(Long wechatUserId, Integer taskType) {
Integer taskCount = null;
try {
taskCount = ResponseHandleUtil.parseResponse(rmallBookMoneyRecordService.getTaskCountByType(wechatUserId, taskType), Integer.class);
} catch (Exception e) {
LOGGER.error("获取微信用户信息失败[wechatUserService.getWechatUserInfo]:" + e.getMessage(), e);
}
return taskCount;
}
}
......@@ -14,6 +14,7 @@ import com.pcloud.book.applet.biz.AppletGroupSearchRecordBiz;
import com.pcloud.book.applet.biz.AppletRecordBiz;
import com.pcloud.book.applet.biz.AppletUserBookcaseBiz;
import com.pcloud.book.applet.biz.ServeCollectBiz;
import com.pcloud.book.applet.dto.AppletTaskDTO;
import com.pcloud.book.applet.entity.AppletGroupSearchRecord;
import com.pcloud.book.applet.entity.AppletRecord;
import com.pcloud.book.applet.entity.AppletUserBookcase;
......@@ -5093,7 +5094,10 @@ public class BookGroupBizImpl implements BookGroupBiz {
appletUserBookcase.setAdviserId(bookGroupDTO.getCreateUser());
appletUserBookcase.setBookId(bookGroupDTO.getBookId());
appletUserBookcase.setChannelId(bookGroupDTO.getChannelId());
appletUserBookcaseBiz.addUserBook(appletUserBookcase);
AppletTaskDTO appletTaskDTO = appletUserBookcaseBiz.addUserBook(appletUserBookcase);
if (null != appletTaskDTO && YesOrNoEnums.YES.getValue().equals(appletTaskDTO.getIsFinishTask())) {
dto.setIsFinshTask(appletTaskDTO.getIsFinishTask());
}
//社群书埋点
AppletGroupSearchRecord appletGroupSearchRecord = new AppletGroupSearchRecord();
appletGroupSearchRecord.setAdviserId(bookGroupDTO.getCreateUser());
......@@ -5124,7 +5128,10 @@ public class BookGroupBizImpl implements BookGroupBiz {
appletUserBookcase.setAdviserId(byId.getCreatedByUserLogin());
appletUserBookcase.setBookId(byId.getAdviserBookId());
appletUserBookcase.setChannelId(byId.getChannelPartyId());
appletUserBookcaseBiz.addUserBook(appletUserBookcase);
AppletTaskDTO appletTaskDTO = appletUserBookcaseBiz.addUserBook(appletUserBookcase);
if (null != appletTaskDTO && YesOrNoEnums.YES.getValue().equals(appletTaskDTO.getIsFinishTask())) {
dto.setIsFinshTask(appletTaskDTO.getIsFinishTask());
}
//足迹埋点
AppletRecord appletRecord = new AppletRecord();
appletRecord.setWechatUserId(wechatUserId);
......
......@@ -10,6 +10,7 @@ import com.pcloud.book.group.entity.BookGroupServe;
import com.pcloud.book.group.entity.GroupQrcodeStyle;
import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
......@@ -341,6 +342,17 @@ public class BookGroupDTO extends BaseDto {
*/
private String originUrl;
@ApiModelProperty("是否第一次完成了今日任务 1是第一次完成所有任务 0 未完成或不是第一次")
private Integer isFinshTask;
public Integer getIsFinshTask() {
return isFinshTask;
}
public void setIsFinshTask(Integer isFinshTask) {
this.isFinshTask = isFinshTask;
}
public String getOriginUrl() {
return originUrl;
}
......
......@@ -96,4 +96,23 @@
order by seq asc, id asc
</select>
<select id="getClassifyNames" parameterType="list" resultType="com.pcloud.book.applet.dto.AppletBookClassifyDTO">
select
book_templet_id templetId,
classify_name classifyName
from book.applet_book_classify a
left join
applet_book_classify_relation b
on a.id = b.applet_book_classify_id
<where>
<if test="list != null">
book_templet_id in
<foreach collection="list" index="index" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</where>
group by book_templet_id
</select>
</mapper>
\ No newline at end of file
......@@ -49,7 +49,8 @@
b.publish,
a.ADVISER_ID adviserId,
a.channel_id channelId,
count(r.id) searchCount
count(r.id) searchCount,
a.TEMPLET_ID templetId
from hot_book h
LEFT JOIN search_record r
on h.id=r.hot_book_id
......@@ -57,6 +58,8 @@
on h.book_id=b.BOOK_ID
INNER JOIN book_adviser a
ON h.book_id=a.BOOK_ID
INNER JOIN
applet_book_classify_relation
group by h.id
order by h.seq_num
</select>
......
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