Commit 1d77f013 authored by muhong's avatar muhong

修改 发送消息和浏览量

parent 0e0babdf
......@@ -102,5 +102,38 @@ public class MessageEnum {
}
}
public enum ContentTextEnum {
ITEM_SHARE(1, "分享了您的藏品"),
ITEM_COLLECT(2, "收藏了您的藏品"),
FAVORITES_SHARE(3, "分享了您的收藏册"),
FAVORITES_COLLECT(3, "收藏了您的收藏册"),
;
private int code;
private String des;
ContentTextEnum(int code, String des) {
this.code = code;
this.des = des;
}
public static String getNameByCode(int code) {
for (ContentTextEnum contentTextEnum : ContentTextEnum.values()) {
if (code == contentTextEnum.getCode()) {
return contentTextEnum.getDes();
}
}
return null;
}
public int getCode() {
return code;
}
public String getDes() {
return des;
}
}
}
......@@ -39,7 +39,7 @@ public interface FootPrintDao {
* @param itemIds
* @return
*/
long countByItemIds(Long itemId, List<Long> itemIds);
long countByItemIds(Long userId, Long itemId, List<Long> itemIds);
/**
* 批量删除记录
......
......@@ -58,11 +58,12 @@ public class FootPrintDaoImpl implements FootPrintDao {
}
@Override
public long countByItemIds(Long itemId, List<Long> itemIds) {
public long countByItemIds(Long userId, Long itemId, List<Long> itemIds) {
FootprintExample example = new FootprintExample();
FootprintExample.Criteria criteria = example.createCriteria();
JdbcHelper.ifPresent(itemId, criteria::andItemIdEqualTo);
JdbcHelper.ifPresent(itemIds, criteria::andItemIdIn);
JdbcHelper.ifPresent(userId, criteria::andUserIdNotEqualTo);
criteria.andDeletedEqualTo(false);
return footprintMapper.countByExample(example);
}
......
......@@ -47,4 +47,6 @@ public class ItemRequestDto implements Entity {
private Integer loginType;
// 查看权限(0所有人,1仅自己可见)
private Integer viewPermission;
// 分享类型(0、藏品,1、收藏册,2、用户主页)
private Integer shareType;
}
......@@ -273,7 +273,7 @@ public class FavoritesServiceImpl implements FavoritesService {
itemCommonService.getNicknameAvatar(item.getId(), vo);
vo.setViewPermission(item.getViewPermission());
// 设置浏览量
vo.setViewsNumber(item.getViewPermission().equals(ViewPermissionEnum.ALL.getCode()) ? StringUtil.formatCount(footPrintDao.countByItemIds(item.getId(), null)) : "0");
vo.setViewsNumber(item.getViewPermission().equals(ViewPermissionEnum.ALL.getCode()) ? StringUtil.formatCount(footPrintDao.countByItemIds(vo.getItemUserId(), item.getId(), null)) : "0");
// 设置图片或视频
vo.setHomePageImage(MediaUtil.getHomePageImage(item.getImages(), item.getVideos()));
......
......@@ -91,11 +91,14 @@ public class ItemCommonServiceImpl implements ItemCommonService {
List<Long> itemIds = userItemsRelations.stream()
.map(UserItemsRelation::getItemId).collect(Collectors.toList());
collectionsNumber = favoritesItemsRelationDao.countByItemIds(itemIds);
viewsNumber = footPrintDao.countByItemIds(null, itemIds);
CoinRequestDto coinRequestDto = new CoinRequestDto();
coinRequestDto.setIds(itemIds);
List<Item> itemList = itemDao.findListNotDeleted(coinRequestDto);
allNumber = itemList.stream().filter(s -> s.getViewPermission().equals(ViewPermissionEnum.ALL.getCode())).count();
List<Item> allItemList = itemList.stream().filter(s -> s.getViewPermission().equals(ViewPermissionEnum.ALL.getCode())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(allItemList)) {
allNumber = allItemList.size();
viewsNumber = footPrintDao.countByItemIds(userInfo.getUserId(), null, allItemList.stream().map(Item::getId).collect(Collectors.toList()));
}
privacyNumber = itemList.stream().filter(s -> s.getViewPermission().equals(ViewPermissionEnum.ONLY_ONESELF.getCode())).count();
}
......
package com.wwdz.ch.wx.impl;
import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageInfo;
import com.qiniu.storage.model.FileInfo;
import com.wwdz.ch.core.consts.*;
......@@ -15,6 +16,7 @@ import com.wwdz.ch.db.dto.request.EsSearchRequestDto;
import com.wwdz.ch.db.dto.request.FollowFansRecordRequestDto;
import com.wwdz.ch.db.es.ItemEsDao;
import com.wwdz.ch.wx.constant.LoginTypeEnum;
import com.wwdz.ch.wx.entity.MessageContentText;
import com.wwdz.ch.wx.entity.request.ItemRequestDto;
import com.wwdz.ch.wx.entity.request.MessageRequestDto;
import com.wwdz.ch.wx.entity.vo.AgentTranceResponseVo;
......@@ -27,6 +29,7 @@ import com.wwdz.ch.wx.service.FollowFansRecordService;
import com.wwdz.ch.wx.service.ItemCommonService;
import com.wwdz.ch.wx.service.ItemService;
import com.wwdz.ch.wx.service.MessageService;
import com.wwdz.ch.wx.util.RedisUtil;
import com.wwdz.ch.wx.util.StringUtil;
import com.xxdxxs.utils.CommonUtils;
import com.xxdxxs.utils.DateUtils;
......@@ -42,13 +45,13 @@ import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
......@@ -84,6 +87,8 @@ public class ItemServiceImpl implements ItemService {
private UserTokenManager userTokenManager;
@Autowired
private QiniuStorage qiniuStorage;
@Autowired
private RedisUtil redisUtil;
@Autowired
private ItemCommonService itemCommonService;
......@@ -261,7 +266,7 @@ public class ItemServiceImpl implements ItemService {
vo.setItemAvatar(avatar);
vo.setViewPermission(item.getViewPermission());
// 设置浏览量
vo.setViewsNumber(item.getViewPermission().equals(ViewPermissionEnum.ALL.getCode()) ? StringUtil.formatCount(footPrintDao.countByItemIds(item.getId(), null)) : "0");
vo.setViewsNumber(item.getViewPermission().equals(ViewPermissionEnum.ALL.getCode()) ? StringUtil.formatCount(footPrintDao.countByItemIds(dto.getUserId(), item.getId(), null)) : "0");
AgentTranceResponseVo agentTranceResponseVo = new AgentTranceResponseVo();
agentTranceResponseVo.setAgentTraceInfo_("");
......@@ -309,7 +314,7 @@ public class ItemServiceImpl implements ItemService {
vo.setItemAvatar(itemAvatar);
vo.setViewPermission(0);
// 设置浏览量
vo.setViewsNumber(StringUtil.formatCount(footPrintDao.countByItemIds(es.getId(), null)));
vo.setViewsNumber(StringUtil.formatCount(footPrintDao.countByItemIds(dto.getUserId(), es.getId(), null)));
AgentTranceResponseVo agentTranceResponseVo = new AgentTranceResponseVo();
agentTranceResponseVo.setAgentTraceInfo_("");
......@@ -420,7 +425,7 @@ public class ItemServiceImpl implements ItemService {
item.setSource(CommonEnum.SourceEnum.USER_UPLOAD.getCode());
item.setIsDeleted(false);
item.setKind(ItemKindEnum.COIN.getCode());
item.setState(ItemStateEnum.PENDING.getCode());
item.setState(ItemStateEnum.SHELVE.getCode());
item.setViewPermission(Objects.isNull(dto.getViewPermission()) ? ViewPermissionEnum.ALL.getCode() : dto.getViewPermission());
itemDao.insert(item);
......@@ -649,7 +654,7 @@ public class ItemServiceImpl implements ItemService {
String collectCount = StringUtil.formatCount(count);
// 发送收藏消息
sendMessage(item.getId(), dto.getUserId(), MessageEnum.TypeEnum.COLLECT.getCode());
sendMessage(item.getId(), dto.getUserId(), MessageEnum.TypeEnum.COLLECT.getCode(), MessageEnum.ContentIdTypeEnum.ITEM.getCode());
Map<String, Object> map = new HashMap<>();
map.put("collectCount", collectCount);
......@@ -723,7 +728,7 @@ public class ItemServiceImpl implements ItemService {
}
@Override
public Result getAcode(String page, String scene, Integer loginType, HttpServletRequest request, HttpServletResponse response) {
public Result getAcode(String page, String scene, Integer loginType, HttpServletRequest request) {
try {
String url = "";
if (loginType.equals(LoginTypeEnum.WECHAT.getCode())) {
......@@ -757,12 +762,6 @@ public class ItemServiceImpl implements ItemService {
return Result.failed("获取抖音小程序码失败");
}
}
// 发送消息
Long userId = userTokenManager.getUserId(request.getHeader("Authorization"));
if (Objects.nonNull(userId)) {
Long itemId = Long.parseLong(scene.split("=")[1]);
sendMessage(itemId, userId, MessageEnum.TypeEnum.SHARE.getCode());
}
Map<String, Object> map = new HashMap<>();
map.put("url", url);
......@@ -775,7 +774,7 @@ public class ItemServiceImpl implements ItemService {
}
@Override
public Result getLink(String pageUrl, Integer loginType, HttpServletRequest request) {
public Result getLink(String pageUrl, Integer loginType, Integer shareType, HttpServletRequest request) {
try {
String link = "";
if (loginType.equals(LoginTypeEnum.WECHAT.getCode())) {
......@@ -804,7 +803,7 @@ public class ItemServiceImpl implements ItemService {
Long userId = userTokenManager.getUserId(request.getHeader("Authorization"));
if (Objects.nonNull(userId)) {
Long itemId = Long.parseLong(pageUrl.split("=")[1]);
sendMessage(itemId, userId, MessageEnum.TypeEnum.SHARE.getCode());
sendMessage(itemId, userId, MessageEnum.TypeEnum.SHARE.getCode(), shareType);
}
Map<String, Object> map = new HashMap<>();
......@@ -865,7 +864,7 @@ public class ItemServiceImpl implements ItemService {
// 发送消息
Long userId = userTokenManager.getUserId(request.getHeader("Authorization"));
if (Objects.nonNull(userId)) {
sendMessage(dto.getItemId(), userId, MessageEnum.TypeEnum.SHARE.getCode());
sendMessage(dto.getId(), userId, MessageEnum.TypeEnum.SHARE.getCode(), dto.getShareType());
}
logger.info("【请求结束】分享发送消息成功");
return Result.success();
......@@ -988,21 +987,68 @@ public class ItemServiceImpl implements ItemService {
/**
* 发送消息
*
* @param itemId 藏品id
* @param id id
* @param userId 用户id
* @param messageType 消息类型
*/
private void sendMessage(Long itemId, Long userId, Integer messageType) {
UserItemsRelation userItemsRelation = userItemsRelationDao.find(itemId);
private void sendMessage(Long id, Long userId, Integer messageType, Integer idType) {
if (idType.equals(MessageEnum.ContentIdTypeEnum.ITEM.getCode())) {
UserItemsRelation userItemsRelation = userItemsRelationDao.find(id);
if (Objects.nonNull(userItemsRelation)) {
if (!userItemsRelation.getUserId().equals(userId)) {
if (messageType.equals(MessageEnum.TypeEnum.COLLECT.getCode())) {
String messageKey = StringUtil.formatCollectMessageKey(userId, MessageEnum.TypeEnum.COLLECT.getCode(), userItemsRelation.getUserId(), idType, id);
if (redisUtil.hasKey(messageKey)) {
return;
}
redisUtil.set(messageKey, LocalDateTime.now(), 60 * 5);
}
MessageRequestDto messageRequestDto = new MessageRequestDto();
messageRequestDto.setSenderId(userId);
messageRequestDto.setType(messageType);
messageRequestDto.setContent(itemId.toString());
MessageContentText messageContentText = new MessageContentText();
messageContentText.setId(id);
messageContentText.setIdType(MessageEnum.ContentIdTypeEnum.ITEM.getCode());
if (messageType.equals(MessageEnum.TypeEnum.COLLECT.getCode())) {
messageContentText.setText(MessageEnum.ContentTextEnum.ITEM_COLLECT.getDes());
}
if (messageType.equals(MessageEnum.TypeEnum.SHARE.getCode())) {
messageContentText.setText(MessageEnum.ContentTextEnum.ITEM_SHARE.getDes());
}
messageRequestDto.setContent(JSON.toJSONString(messageContentText));
messageRequestDto.setReceiverId(userItemsRelation.getUserId());
messageService.add(messageRequestDto);
}
}
}
if (idType.equals(MessageEnum.ContentIdTypeEnum.COLLECTION_BOOK.getCode())) {
Favorites favorites = favoritesDao.info(id);
if (Objects.nonNull(favorites)) {
if (!favorites.getUserId().equals(userId)) {
if (messageType.equals(MessageEnum.TypeEnum.COLLECT.getCode())) {
String messageKey = StringUtil.formatCollectMessageKey(userId, MessageEnum.TypeEnum.COLLECT.getCode(), favorites.getUserId(), idType, id);
if (redisUtil.hasKey(messageKey)) {
return;
}
redisUtil.set(messageKey, LocalDateTime.now(), 60 * 5);
}
MessageRequestDto messageRequestDto = new MessageRequestDto();
messageRequestDto.setSenderId(userId);
messageRequestDto.setType(messageType);
MessageContentText messageContentText = new MessageContentText();
messageContentText.setId(id);
messageContentText.setIdType(MessageEnum.ContentIdTypeEnum.COLLECTION_BOOK.getCode());
if (messageType.equals(MessageEnum.TypeEnum.COLLECT.getCode())) {
messageContentText.setText(MessageEnum.ContentTextEnum.FAVORITES_COLLECT.getDes());
}
if (messageType.equals(MessageEnum.TypeEnum.SHARE.getCode())) {
messageContentText.setText(MessageEnum.ContentTextEnum.FAVORITES_SHARE.getDes());
}
messageRequestDto.setContent(JSON.toJSONString(messageContentText));
messageRequestDto.setReceiverId(favorites.getUserId());
messageService.add(messageRequestDto);
}
}
}
}
}
......@@ -5,7 +5,6 @@ import com.wwdz.ch.wx.entity.request.ItemRequestDto;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface ItemService {
/**
......@@ -93,18 +92,22 @@ public interface ItemService {
*
* @param page
* @param scene
* @param response
* @param loginType
* @param request
* @return
*/
Result getAcode(String page, String scene, Integer loginType, HttpServletRequest request, HttpServletResponse response);
Result getAcode(String page, String scene, Integer loginType, HttpServletRequest request);
/**
* 获取小程序链接
*
* @param pageUrl
* @param loginType
* @param shareType
* @param request
* @return
*/
Result getLink(String pageUrl, Integer loginType, HttpServletRequest request);
Result getLink(String pageUrl, Integer loginType, Integer shareType, HttpServletRequest request);
/**
* 上传图片
......
......@@ -70,4 +70,8 @@ public class StringUtil {
public static String formatMessageKey(long sendId, int type, long receiverId) {
return "" + sendId + ":" + type + ":" + receiverId;
}
public static String formatCollectMessageKey(long sendId, int type, long receiverId, int idType, long id) {
return "" + sendId + ":" + type + ":" + receiverId + ":" + idType + ":" + id;
}
}
......@@ -13,7 +13,6 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Objects;
......@@ -176,7 +175,7 @@ public class WxItemController {
@ApiOperation(value = "小程序码")
@GetMapping("/getAcode")
public Result getAcode(String page, String scene, Integer loginType, HttpServletRequest request, HttpServletResponse response) {
public Result getAcode(String page, String scene, Integer loginType, HttpServletRequest request) {
logger.info("【请求开始】获小程序码,请求参数:{}", "page=" + page + ",scene=" + scene + ",loginType=" + loginType);
if (StringUtils.isBlank(page)) {
return Result.failed("页面路径不能为空");
......@@ -187,7 +186,7 @@ public class WxItemController {
if (Objects.isNull(loginType)) {
return Result.failed("请提供请求的环境类型");
}
return itemService.getAcode(page, scene, loginType, request, response);
return itemService.getAcode(page, scene, loginType, request);
}
@ApiOperation(value = "小程序链接")
......@@ -200,15 +199,18 @@ public class WxItemController {
if (Objects.isNull(dto.getLoginType())) {
return Result.failed("请提供请求的环境类型");
}
return itemService.getLink(dto.getPageUrl(), dto.getLoginType(), request);
if (Objects.isNull(dto.getShareType())) {
return Result.failed("请提供分享类型");
}
return itemService.getLink(dto.getPageUrl(), dto.getLoginType(), dto.getShareType(), request);
}
@ApiOperation(value = "分享发送消息")
@PostMapping("/shareSendMessage")
public Result shareSendMessage(@RequestBody ItemRequestDto dto, HttpServletRequest request) {
logger.info("【请求开始】分享发送消息,请求参数:{}", JSON.toJSONString(dto));
if (Objects.isNull(dto.getItemId())) {
return Result.failed("请选择被分享的藏品");
if (Objects.isNull(dto.getId())) {
return Result.failed("请选择被分享的对象");
}
return itemService.shareSendMessage(dto, request);
}
......
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