圣诞节活动-情书-小秘书带跳转链接

This commit is contained in:
khalil
2023-12-19 20:31:29 +08:00
parent 75d06b34c7
commit f46d77f820
15 changed files with 300 additions and 39 deletions

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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

View File

@@ -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;
}

View File

@@ -11,4 +11,6 @@ import java.util.Set;
@Data
public class ChristmasLetterActConfigDto extends TaskActConfigDto {
private String skipUrl;
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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)){

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -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);
}
/**
* 点对点发信息
*