圣诞节活动-情书-小秘书带跳转链接
This commit is contained in:
@@ -28,7 +28,6 @@ public abstract class BaseTicketActDao implements InitializingBean {
|
||||
Integer totalTicketNum = userTotalTicketNum.addAndGet(uid, num);
|
||||
Integer curTicketNum = userCurTicketNum.addAndGet(uid, num);
|
||||
logAfterAddUserTicketNum(uid, num, curTicketNum, totalTicketNum);
|
||||
//log.info("[2023中秋活动]-任务 {} 增加 {} 个月饼, 剩余 {} 个月饼, 累计获得 {} 个月饼", uid, num, curMoonCakeNum, totalMoonCakeNum);
|
||||
return curTicketNum;
|
||||
}
|
||||
|
||||
@@ -37,7 +36,6 @@ public abstract class BaseTicketActDao implements InitializingBean {
|
||||
public Integer reduceUserTicketNum(Long uid, Integer num) {
|
||||
Integer curTicketNum = userCurTicketNum.addAndGet(uid, -num);
|
||||
logAfterReduceUserTicketNum(uid, num, curTicketNum);
|
||||
//log.info("[2023中秋活动]-任务 {} 消耗 {} 个月饼, 剩余 {} 个月饼", uid, num, curTicketNum);
|
||||
return curTicketNum;
|
||||
}
|
||||
|
||||
|
@@ -38,7 +38,7 @@ public class ChristmasCpDao implements InitializingBean {
|
||||
|
||||
private RMap<Long, Integer> userCpRewardMap;
|
||||
private RMap<String, ChristmasCpProp> cpPropMap;
|
||||
private RMap<Long, Map<Long, ChristmasCpUserProp>> userCpPropMap;
|
||||
private RMap<Long, Map<String, ChristmasCpUserProp>> userCpPropMap;
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
@@ -50,17 +50,20 @@ public class ChristmasCpDao implements InitializingBean {
|
||||
userCpPropMap = redissonClient.getMap(userCpProp);
|
||||
}
|
||||
|
||||
public List<ChristmasCpUserProp> listCpByUid(Long uid) {
|
||||
Map<Long, ChristmasCpUserProp> propMap = userCpPropMap.get(uid);
|
||||
public List<ChristmasCpUserProp> listCpByUid(Long uid, Long size) {
|
||||
Map<String, ChristmasCpUserProp> propMap = userCpPropMap.get(uid);
|
||||
if (CollectionUtils.isEmpty(propMap)){
|
||||
return null;
|
||||
}
|
||||
if (null == size){
|
||||
size = Long.MAX_VALUE;
|
||||
}
|
||||
return propMap.values().stream()
|
||||
.sorted(Comparator.comparing(ChristmasCpUserProp::getScore).reversed()).collect(Collectors.toList());
|
||||
.sorted(Comparator.comparing(ChristmasCpUserProp::getScore).reversed()).limit(size).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public ChristmasCpUserProp getCpByUid(Long fromUid, Long toUid) {
|
||||
Map<Long, ChristmasCpUserProp> propMap = userCpPropMap.get(fromUid);
|
||||
Map<String, ChristmasCpUserProp> propMap = userCpPropMap.get(fromUid);
|
||||
if (CollectionUtils.isEmpty(propMap)){
|
||||
return null;
|
||||
}
|
||||
@@ -76,7 +79,7 @@ public class ChristmasCpDao implements InitializingBean {
|
||||
}
|
||||
|
||||
public String getTheBestCpUidByUid(Long uid) {
|
||||
Map<Long, ChristmasCpUserProp> propMap = userCpPropMap.get(uid);
|
||||
Map<String, ChristmasCpUserProp> propMap = userCpPropMap.get(uid);
|
||||
if (CollectionUtils.isEmpty(propMap)){
|
||||
return null;
|
||||
}
|
||||
@@ -102,7 +105,15 @@ public class ChristmasCpDao implements InitializingBean {
|
||||
return cpPropMap.get(cpUid);
|
||||
}
|
||||
|
||||
private <R> R withLock(Long uid, String redisKey, Function<Map<Long, ChristmasCpUserProp>, R> function){
|
||||
public Map<String,ChristmasCpProp> mapCpPropByCpUidSet(Set<String> cpUidSet) {
|
||||
Map<String, ChristmasCpProp> map = cpPropMap.getAll(cpUidSet);
|
||||
if (CollectionUtils.isEmpty(map)){
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
private <R> R withLock(Long uid, String redisKey, Function<Map<String, ChristmasCpUserProp>, R> function){
|
||||
String lockKey = String.join("_", AppEnum.getCurApp().getValue(), ChristmasConstant.actName, MODULE_NAME, redisKey, uid.toString());
|
||||
RLock lock = redissonClient.getLock(lockKey);
|
||||
boolean isLocked = false;
|
||||
@@ -112,7 +123,7 @@ public class ChristmasCpDao implements InitializingBean {
|
||||
log.error("[2023圣诞节活动] {} 获取 {} 锁超时", uid, lockKey);
|
||||
throw new ServiceException(BusiStatus.SERVER_BUSY);
|
||||
}
|
||||
Map<Long, ChristmasCpUserProp> propMap = userCpPropMap.getOrDefault(uid, new HashMap<>());
|
||||
Map<String, ChristmasCpUserProp> propMap = userCpPropMap.getOrDefault(uid, new HashMap<>());
|
||||
return function.apply(propMap);
|
||||
} catch (InterruptedException e) {
|
||||
log.error("[2023圣诞节活动] {} 获取 {} 锁异常", uid, lockKey, e);
|
||||
@@ -130,7 +141,7 @@ public class ChristmasCpDao implements InitializingBean {
|
||||
return false;
|
||||
}
|
||||
|
||||
ChristmasCpUserProp cpUserProp = propMap.get(toUid);
|
||||
ChristmasCpUserProp cpUserProp = propMap.get(toUid.toString());
|
||||
if (null == cpUserProp){
|
||||
return false;
|
||||
}
|
||||
@@ -145,17 +156,20 @@ public class ChristmasCpDao implements InitializingBean {
|
||||
}
|
||||
|
||||
cpUserProp.getCpTaskStatus().put(taskId, status);
|
||||
|
||||
return userCpPropMap.fastPut(fromUid, propMap);
|
||||
userCpPropMap.fastPut(fromUid, propMap);
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
public void saveCpRewardStatus(Long senderUid, Long recvUid){
|
||||
userCpRewardMap.fastPutIfAbsent(senderUid, ChristmasConstant.BtnStatus.CAN);
|
||||
userCpRewardMap.fastPutIfAbsent(recvUid, ChristmasConstant.BtnStatus.CAN);
|
||||
}
|
||||
|
||||
public void saveCpProp(ChristmasCpProp cpProp) {
|
||||
if (!cpPropMap.fastPutIfAbsent(cpProp.getCpUid(), cpProp)){
|
||||
return;
|
||||
}
|
||||
userCpRewardMap.fastPutIfAbsent(cpProp.getFromUid(), ChristmasConstant.BtnStatus.CAN);
|
||||
userCpRewardMap.fastPutIfAbsent(cpProp.getToUid(), ChristmasConstant.BtnStatus.CAN);
|
||||
|
||||
ChristmasCpUserProp userProp = new ChristmasCpUserProp();
|
||||
BeanUtils.copyProperties(cpProp, userProp);
|
||||
@@ -168,14 +182,14 @@ public class ChristmasCpDao implements InitializingBean {
|
||||
public boolean saveUserCpProp(Long fromUid, Long toUid, ChristmasCpUserProp userProp){
|
||||
return withLock(fromUid, "user_cp_prop_lock", propMap->{
|
||||
if (CollectionUtils.isEmpty(propMap)){
|
||||
propMap.put(toUid, userProp);
|
||||
propMap.put(toUid.toString(), userProp);
|
||||
userCpPropMap.fastPut(fromUid, propMap);
|
||||
return false;
|
||||
}
|
||||
|
||||
ChristmasCpUserProp cpUserProp = propMap.get(toUid);
|
||||
ChristmasCpUserProp cpUserProp = propMap.get(toUid.toString());
|
||||
if (null == cpUserProp){
|
||||
propMap.put(toUid, userProp);
|
||||
propMap.put(toUid.toString(), userProp);
|
||||
userCpPropMap.fastPut(fromUid, propMap);
|
||||
return false;
|
||||
}
|
||||
|
@@ -50,7 +50,7 @@ public class ChristmasLetterDao implements InitializingBean {
|
||||
}
|
||||
|
||||
public List<ChristmasLetterDto> listUserSquare(){
|
||||
Collection<ScoredEntry<ChristmasLetterDto>> uidScoreList = letterSortedSet.entryRangeReversed(0, 30);
|
||||
Collection<ScoredEntry<ChristmasLetterDto>> uidScoreList = letterSortedSet.entryRangeReversed(0, 29);
|
||||
if (CollectionUtils.isEmpty(uidScoreList)){
|
||||
return Collections.emptyList();
|
||||
}
|
||||
@@ -93,7 +93,7 @@ public class ChristmasLetterDao implements InitializingBean {
|
||||
uidLetterList.add(dto);
|
||||
uidLetterList.sort(Comparator.comparing(ChristmasLetterDto::getCreateTime).reversed());
|
||||
|
||||
return userSendLetterMap.fastPut(toUid, uidLetterList);
|
||||
return userRecvLetterMap.fastPut(toUid, uidLetterList);
|
||||
});
|
||||
log.info("[2023-圣诞节活动]-信 {} 给 {} 接收情信 {} 结果 {}", uid, toUid, JSON.toJSONString(dto), recvSucceed);
|
||||
|
||||
|
@@ -50,7 +50,7 @@ public class ChristmasLetterNumDao implements InitializingBean, ApplicationConte
|
||||
if (curNum < 1){
|
||||
throw new ServiceException(BusiStatus.PARAMERROR, ChristmasConstant.BusiStatus.LETTER_NUM_UN_ENOUGH);
|
||||
}
|
||||
dao.reduceUserTicketNum(uid, -1);
|
||||
dao.reduceUserTicketNum(uid, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -0,0 +1,15 @@
|
||||
package com.accompany.business.christmas.dto;
|
||||
|
||||
import com.accompany.business.common.dto.CpRankActConfigDto;
|
||||
import com.accompany.business.common.dto.RewardDto;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Data
|
||||
public class ChristmasCpRankActConfigDto extends CpRankActConfigDto {
|
||||
public Set<Integer> cpRewardGiftIds;
|
||||
public List<RewardDto> cpRewardList;
|
||||
|
||||
}
|
@@ -11,4 +11,6 @@ import java.util.Set;
|
||||
@Data
|
||||
public class ChristmasLetterActConfigDto extends TaskActConfigDto {
|
||||
|
||||
private String skipUrl;
|
||||
|
||||
}
|
||||
|
@@ -9,7 +9,7 @@ import java.util.*;
|
||||
public class CpRankActConfigDto extends TimeRangeActConfigDto{
|
||||
|
||||
public Set<Integer> cpGiftIds;
|
||||
public List<RewardDto> cpRewardList;
|
||||
|
||||
public List<CpScoreTask> cpScoreTasks;
|
||||
|
||||
public Set<CpRankTypeEnum> rankTypes;
|
||||
|
@@ -12,6 +12,7 @@ import com.accompany.common.utils.DateTimeUtil;
|
||||
import com.accompany.core.base.SpringContextHolder;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
@@ -100,7 +100,7 @@ public abstract class BaseCpRankActService<Provider extends CpRankObjectProvider
|
||||
cpRankItemVo.setCpUid(cpUid);
|
||||
|
||||
Integer cpRanking = cpRankingList.get(index);
|
||||
cpRankItemVo.setRanking(null != cpRanking? cpRanking + 1: 0);
|
||||
cpRankItemVo.setRanking(null != cpRanking && cpRanking < 30? cpRanking + 1: 0);
|
||||
|
||||
Double cpScore = cpScoreList.get(index);
|
||||
cpRankItemVo.setScore(null != cpScore? BigDecimal.valueOf(cpScore).setScale(0, RoundingMode.DOWN).longValue(): 0L);
|
||||
|
@@ -0,0 +1,53 @@
|
||||
package com.accompany.business.christmas.listener;
|
||||
|
||||
import com.accompany.business.christmas.ChristmasCpDao;
|
||||
import com.accompany.business.christmas.dto.ChristmasCpRankActConfigDto;
|
||||
import com.accompany.business.christmas.service.ChristmasCpRankService;
|
||||
import com.accompany.business.event.GiftMessageEvent;
|
||||
import com.accompany.business.message.GiftMessage;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationListener;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class ChristmasCpRewardGiftListener implements ApplicationListener<GiftMessageEvent>{
|
||||
|
||||
@Autowired
|
||||
private ChristmasCpRankService service;
|
||||
@Autowired
|
||||
private ChristmasCpDao cpDao;
|
||||
|
||||
@Async
|
||||
@Override
|
||||
public void onApplicationEvent(GiftMessageEvent giftMessageEvent) {
|
||||
GiftMessage giftMessage = (GiftMessage) giftMessageEvent.getSource();
|
||||
|
||||
Date sendGiftTime = DateTimeUtil.convertMsToDate(giftMessage.getMessTime());
|
||||
LocalDateTime sendGiftLocalDateTime = DateTimeUtil.converDateToLocalDateTime(sendGiftTime);
|
||||
|
||||
ChristmasCpRankActConfigDto config = service.getConfig();
|
||||
if (!config.inActTimeRange(sendGiftLocalDateTime)){
|
||||
return;
|
||||
}
|
||||
|
||||
Long senderUid = giftMessage.getSendUid();
|
||||
Long receiverUid = giftMessage.getRecvUid();
|
||||
Integer giftId = giftMessage.getGiftId();
|
||||
|
||||
if (CollectionUtils.isEmpty(config.getCpRewardGiftIds())
|
||||
|| !config.getCpRewardGiftIds().contains(giftId)){
|
||||
return;
|
||||
}
|
||||
|
||||
cpDao.saveCpRewardStatus(senderUid, receiverUid);
|
||||
}
|
||||
|
||||
}
|
@@ -1,12 +1,11 @@
|
||||
package com.accompany.business.christmas.service;
|
||||
|
||||
import com.accompany.business.base.rankobj.CpUsersRankObjectProvider;
|
||||
import com.accompany.business.base.service.BaseCpRankActService;
|
||||
import com.accompany.business.christmas.ChristmasCpDao;
|
||||
import com.accompany.business.christmas.constant.ChristmasConstant;
|
||||
import com.accompany.business.christmas.dto.ChristmasCpProp;
|
||||
import com.accompany.business.christmas.dto.ChristmasCpRankActConfigDto;
|
||||
import com.accompany.business.christmas.dto.ChristmasCpUserProp;
|
||||
import com.accompany.business.christmas.vo.ChristmasCpVo;
|
||||
import com.accompany.business.common.constant.CpRankTypeEnum;
|
||||
import com.accompany.business.common.dto.CpRankActConfigDto;
|
||||
import com.accompany.business.common.vo.ActivityCpRankVo;
|
||||
@@ -22,13 +21,14 @@ import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ChristmasCpRankService extends BaseCpRankActService<CpUsersRankObjectProvider> {
|
||||
public class ChristmasCpRankService extends BaseCpRankActService<ChristmasCpUsersRankObjectProvider> {
|
||||
|
||||
@Autowired
|
||||
private SysConfService sysConfService;
|
||||
@@ -74,11 +74,12 @@ public class ChristmasCpRankService extends BaseCpRankActService<CpUsersRankObje
|
||||
}
|
||||
|
||||
public ActivityCpRankVo getRank(Long uid, CpRankTypeEnum rankType, String date) {
|
||||
List<ChristmasCpUserProp> cpUserPropList = cpDao.listCpByUid(uid);
|
||||
List<ChristmasCpUserProp> cpUserPropList = cpDao.listCpByUid(uid, 10L);
|
||||
List<String> cpUidList = !CollectionUtils.isEmpty(cpUserPropList)?
|
||||
cpDao.listCpByUid(uid).stream().map(ChristmasCpProp::getCpUid)
|
||||
.limit(10)
|
||||
.collect(Collectors.toList()):
|
||||
cpUserPropList.stream()
|
||||
.sorted(Comparator.comparing(ChristmasCpUserProp::getScore).reversed())
|
||||
.map(ChristmasCpProp::getCpUid)
|
||||
.collect(Collectors.toList()):
|
||||
Collections.emptyList();
|
||||
return super.getRank(cpUidList, rankType, date, 30);
|
||||
}
|
||||
@@ -98,12 +99,12 @@ public class ChristmasCpRankService extends BaseCpRankActService<CpUsersRankObje
|
||||
return getConfig();
|
||||
}
|
||||
|
||||
public CpRankActConfigDto getConfig(){
|
||||
public ChristmasCpRankActConfigDto getConfig(){
|
||||
String configStr = sysConfService.getSysConfValueById(ChristmasConstant.SysConfId.ACT_CP_RANK_CONFIG);
|
||||
if (!StringUtils.hasText(configStr)){
|
||||
throw new ServiceException(BusiStatus.ALREADY_NOTEXISTS_CONFIG);
|
||||
}
|
||||
return JSON.parseObject(configStr, CpRankActConfigDto.class);
|
||||
return JSON.parseObject(configStr, ChristmasCpRankActConfigDto.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -2,6 +2,7 @@ package com.accompany.business.christmas.service;
|
||||
|
||||
import com.accompany.business.christmas.ChristmasCpDao;
|
||||
import com.accompany.business.christmas.constant.ChristmasConstant;
|
||||
import com.accompany.business.christmas.dto.ChristmasCpRankActConfigDto;
|
||||
import com.accompany.business.christmas.dto.ChristmasCpUserProp;
|
||||
import com.accompany.business.christmas.vo.ChristmasCpUserPropVo;
|
||||
import com.accompany.business.christmas.vo.ChristmasCpUserTaskVo;
|
||||
@@ -19,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -42,7 +44,7 @@ public class ChristmasCpService {
|
||||
ChristmasCpVo cpVo = new ChristmasCpVo();
|
||||
cpVo.setUid(uid);
|
||||
|
||||
List<ChristmasCpUserProp> cpList = cpDao.listCpByUid(uid);
|
||||
List<ChristmasCpUserProp> cpList = cpDao.listCpByUid(uid, 10L);
|
||||
if (CollectionUtils.isEmpty(cpList)){
|
||||
cpVo.setCpList(Collections.emptyList());
|
||||
cpVo.setBoxStatus(ChristmasConstant.BtnStatus.NONE);
|
||||
@@ -93,7 +95,7 @@ public class ChristmasCpService {
|
||||
vo.setCpTaskList(taskVoList);
|
||||
|
||||
return vo;
|
||||
}).collect(Collectors.toList());
|
||||
}).sorted(Comparator.comparing(ChristmasCpUserPropVo::getScore).reversed()).collect(Collectors.toList());
|
||||
cpVo.setCpList(cpVoList);
|
||||
|
||||
Integer status = cpDao.getCpRewardStatus(uid);
|
||||
@@ -102,7 +104,11 @@ public class ChristmasCpService {
|
||||
}
|
||||
|
||||
public List<RewardVo> getCpReward(Long uid) {
|
||||
CpRankActConfigDto configDto = cpRankService.getConfig();
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
ChristmasCpRankActConfigDto configDto = cpRankService.getConfig();
|
||||
if (!configDto.inActTimeRange(now)){
|
||||
throw new ServiceException(BusiStatus.NOT_IN_ACT_TIME_RANGE);
|
||||
}
|
||||
|
||||
Integer status = cpDao.getCpRewardStatus(uid);
|
||||
if (ChristmasConstant.BtnStatus.NONE.equals(status)){
|
||||
|
@@ -0,0 +1,116 @@
|
||||
package com.accompany.business.christmas.service;
|
||||
|
||||
import com.accompany.business.base.rankobj.CpRankObject;
|
||||
import com.accompany.business.base.rankobj.CpRankObjectProvider;
|
||||
import com.accompany.business.christmas.ChristmasCpDao;
|
||||
import com.accompany.business.christmas.dto.ChristmasCpProp;
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
import com.accompany.core.model.Users;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class ChristmasCpUsersRankObjectProvider implements CpRankObjectProvider {
|
||||
|
||||
@Autowired
|
||||
private ChristmasCpDao cpDao;
|
||||
@Autowired
|
||||
private UsersService usersService;
|
||||
|
||||
@Override
|
||||
public Map<String, CpRankObject> mapRankObjectByUids(List<String> cpUidList) {
|
||||
Map<String, CpRankObject> map = new HashMap<>();
|
||||
|
||||
Map<String, ChristmasCpProp> cpPropMap = cpDao.mapCpPropByCpUidSet(new HashSet<>(cpUidList));
|
||||
|
||||
List<Long> uidList = cpUidList.stream()
|
||||
.map(cpUid->cpUid.split("_"))
|
||||
.flatMap(Arrays::stream)
|
||||
.map(Long::parseLong)
|
||||
.distinct().collect(Collectors.toList());
|
||||
|
||||
Map<Long, Users> userMap = usersService.getUsersMapByUids(uidList);
|
||||
|
||||
for (String cpUid: cpUidList) {
|
||||
CpRankObject obj = new CpRankObject();
|
||||
obj.setType(CpRankObject.CpRankObjectType.CP_USER);
|
||||
obj.setCpUid(cpUid);
|
||||
|
||||
String[] uidArray = cpUid.split("_");
|
||||
Long leftUid = Long.parseLong(uidArray[0]);
|
||||
Long rightUid = Long.parseLong(uidArray[1]);
|
||||
|
||||
ChristmasCpProp cpProp = cpPropMap.get(cpUid);
|
||||
if (null != cpProp){
|
||||
leftUid = cpProp.getFromUid();
|
||||
rightUid = cpProp.getToUid();
|
||||
}
|
||||
|
||||
obj.setLeftUid(leftUid);
|
||||
|
||||
Users leftUser = userMap.get(leftUid);
|
||||
if (null != leftUser){
|
||||
obj.setLeftErbanNo(leftUser.getErbanNo());
|
||||
obj.setLeftNick(leftUser.getNick());
|
||||
obj.setLeftAvatar(leftUser.getAvatar());
|
||||
}
|
||||
|
||||
obj.setRightUid(rightUid);
|
||||
|
||||
Users rightUser = userMap.get(rightUid);
|
||||
if (null != rightUser){
|
||||
obj.setRightErbanNo(rightUser.getErbanNo());
|
||||
obj.setRightNick(rightUser.getNick());
|
||||
obj.setRightAvatar(rightUser.getAvatar());
|
||||
}
|
||||
|
||||
map.put(cpUid, obj);
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CpRankObject getRankObjectByUid(String cpUid) {
|
||||
if (StringUtils.isBlank(cpUid)){
|
||||
return null;
|
||||
}
|
||||
|
||||
List<Long> uidList = Arrays.stream(cpUid.split("_"))
|
||||
.map(Long::parseLong)
|
||||
.distinct().collect(Collectors.toList());
|
||||
|
||||
Map<Long, Users> userMap = usersService.getUsersMapByUids(uidList);
|
||||
|
||||
CpRankObject obj = new CpRankObject();
|
||||
obj.setType(CpRankObject.CpRankObjectType.CP_USER);
|
||||
obj.setCpUid(cpUid);
|
||||
|
||||
String[] uidArray = cpUid.split("_");
|
||||
Long leftUid = Long.parseLong(uidArray[0]);
|
||||
obj.setLeftUid(leftUid);
|
||||
|
||||
Users leftUser = userMap.get(leftUid);
|
||||
if (null != leftUser){
|
||||
obj.setLeftErbanNo(leftUser.getErbanNo());
|
||||
obj.setLeftNick(leftUser.getNick());
|
||||
obj.setLeftAvatar(leftUser.getAvatar());
|
||||
}
|
||||
|
||||
Long rightUid = Long.parseLong(uidArray[1]);
|
||||
obj.setRightUid(rightUid);
|
||||
|
||||
Users rightUser = userMap.get(rightUid);
|
||||
if (null != rightUser){
|
||||
obj.setRightErbanNo(rightUser.getErbanNo());
|
||||
obj.setRightNick(rightUser.getNick());
|
||||
obj.setRightAvatar(rightUser.getAvatar());
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
}
|
@@ -113,7 +113,7 @@ public class ChristmasLetterService extends BaseMulitTicketTaskActService<Christ
|
||||
vo.setAvatar(me.getAvatar());
|
||||
}
|
||||
|
||||
List<ChristmasCpUserProp> cpList = cpDao.listCpByUid(uid);
|
||||
List<ChristmasCpUserProp> cpList = cpDao.listCpByUid(uid, null);
|
||||
if (CollectionUtils.isEmpty(cpList)){
|
||||
vo.setCpList(Collections.emptyList());
|
||||
return vo;
|
||||
@@ -145,6 +145,12 @@ public class ChristmasLetterService extends BaseMulitTicketTaskActService<Christ
|
||||
}
|
||||
|
||||
public void publishLetter(Long uid, Long toUid, Integer letterType, String text) {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
ChristmasLetterActConfigDto configDto = getConfig();
|
||||
if (!configDto.inActTimeRange(now)){
|
||||
throw new ServiceException(BusiStatus.NOT_IN_ACT_TIME_RANGE);
|
||||
}
|
||||
|
||||
Users toUser = usersService.getUsersByUid(toUid);
|
||||
if (null == toUser){
|
||||
throw new ServiceException(BusiStatus.USERNOTEXISTS);
|
||||
@@ -161,17 +167,17 @@ public class ChristmasLetterService extends BaseMulitTicketTaskActService<Christ
|
||||
throw new ServiceException(BusiStatus.PARAMERROR, ChristmasConstant.BusiStatus.CONTEXT_SENSITIVE);
|
||||
}
|
||||
letterDao.saveLetter(uid, toUid, letterType, text);
|
||||
SpringContextHolder.getBean(ChristmasLetterService.class).sendSecretMsg(uid, toUid);
|
||||
SpringContextHolder.getBean(ChristmasLetterService.class).sendSecretMsg(uid, toUid, configDto.getSkipUrl());
|
||||
}
|
||||
|
||||
@Async
|
||||
public void sendSecretMsg(Long uid, Long toUid) {
|
||||
public void sendSecretMsg(Long uid, Long toUid, String skipUrl) {
|
||||
Users user = usersService.getUsersByUid(uid);
|
||||
if (null == user){
|
||||
return;
|
||||
}
|
||||
String tip = String.format(ChristmasConstant.LETTER_TIP, user.getNick());
|
||||
sendSysMsgService.sendPersonTextMsg(SystemConfig.secretaryUid, toUid, tip);
|
||||
sendSysMsgService.sendPersonTextMsgWithSkipUrl(SystemConfig.secretaryUid, toUid, tip, skipUrl);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -3,9 +3,14 @@ package com.accompany.business.service;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.accompany.business.param.neteasepush.*;
|
||||
import com.accompany.common.config.SystemConfig;
|
||||
import com.accompany.common.constant.AppEnum;
|
||||
import com.accompany.common.constant.Attach;
|
||||
import com.accompany.common.constant.Constant;
|
||||
import com.accompany.common.netease.neteaseacc.result.RubbishRet;
|
||||
import com.accompany.common.utils.ReplaceAppDomainUtils;
|
||||
import com.accompany.core.base.SpringContextHolder;
|
||||
import com.accompany.core.model.Account;
|
||||
import com.accompany.core.service.account.AccountService;
|
||||
import com.accompany.core.service.base.BaseService;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@@ -232,6 +237,50 @@ public class SendSysMsgService extends BaseService {
|
||||
return sendMsg(neteaseSendMsgParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送点对点文本消息
|
||||
*
|
||||
* @param from
|
||||
* @param to
|
||||
* @param message
|
||||
* @return
|
||||
*/
|
||||
public int sendPersonTextMsgWithSkipUrl(String from, Long to, String message, String url) {
|
||||
//替换域名
|
||||
Account account = SpringContextHolder.getBean(AccountService.class).getAccountByUid(to);
|
||||
if (null != account){
|
||||
AppEnum appEnum = AppEnum.valueOf(account.getApp());
|
||||
url = ReplaceAppDomainUtils.replaceUrl(url, appEnum);
|
||||
}
|
||||
|
||||
NeteaseSendMsgParam neteaseSendMsgParam = new NeteaseSendMsgParam();
|
||||
|
||||
Attach attach = new Attach();
|
||||
attach.setFirst(Constant.DefineProtocol.CUSTOM_MESS_HEAD_SECRETARY);
|
||||
attach.setSecond(Constant.DefineProtocol.CUSTOM_MESS_SUB_SECRETARY_INTRACTION);
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("title", message);
|
||||
jsonObject.put("msg", message);
|
||||
jsonObject.put("routerType", Constant.SecretarySkipType.H5);
|
||||
jsonObject.put("routerValue", url);
|
||||
attach.setData(jsonObject);
|
||||
neteaseSendMsgParam.setAttach(attach);
|
||||
|
||||
Payload payload = new Payload();
|
||||
payload.setSkiptype(Constant.SecretarySkipType.H5);
|
||||
payload.setData(url);
|
||||
|
||||
neteaseSendMsgParam.setPayload(payload);
|
||||
|
||||
// 批量发送文字(带跳转链接)自定义类型
|
||||
neteaseSendMsgParam.setType(Constant.DefineProtocol.CUSTOM_MESS_DEFINE);
|
||||
neteaseSendMsgParam.setFrom(from);
|
||||
neteaseSendMsgParam.setOpe(0);
|
||||
neteaseSendMsgParam.setTo(to.toString());
|
||||
neteaseSendMsgParam.setUseYidun(0);
|
||||
return sendMsg(neteaseSendMsgParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* 点对点发信息
|
||||
*
|
||||
|
Reference in New Issue
Block a user