init
This commit is contained in:
@@ -2,6 +2,7 @@ package com.ruoyi.cai.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.ruoyi.cai.domain.SysPush;
|
||||
import com.ruoyi.cai.dto.admin.query.syspush.SysPushParams;
|
||||
|
||||
/**
|
||||
* 推送系统消息Service接口
|
||||
@@ -11,4 +12,5 @@ import com.ruoyi.cai.domain.SysPush;
|
||||
*/
|
||||
public interface SysPushService extends IService<SysPush> {
|
||||
|
||||
void saveSysPush(SysPushParams params);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,41 @@
|
||||
package com.ruoyi.cai.service.impl;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.TypeReference;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.cai.domain.SysPush;
|
||||
import com.ruoyi.cai.domain.User;
|
||||
import com.ruoyi.cai.dto.admin.query.syspush.SysPushImageContextDTO;
|
||||
import com.ruoyi.cai.dto.admin.query.syspush.SysPushMasterDTO;
|
||||
import com.ruoyi.cai.dto.admin.query.syspush.SysPushParams;
|
||||
import com.ruoyi.cai.dto.admin.vo.syspush.SendSysPushResp;
|
||||
import com.ruoyi.cai.enums.SystemConfigEnum;
|
||||
import com.ruoyi.cai.enums.systempush.SystemPushStatusEnum;
|
||||
import com.ruoyi.cai.enums.systempush.SystemPushTypeEnum;
|
||||
import com.ruoyi.cai.manager.SystemConfigManager;
|
||||
import com.ruoyi.cai.mapper.SysPushMapper;
|
||||
import com.ruoyi.cai.notice.data.NoticeMsgR;
|
||||
import com.ruoyi.cai.notice.data.NoticeOnlyImageR;
|
||||
import com.ruoyi.cai.notice.data.NoticeR;
|
||||
import com.ruoyi.cai.notice.data.child.ExtNoticeData;
|
||||
import com.ruoyi.cai.notice.data.child.MultipleImageTextData;
|
||||
import com.ruoyi.cai.notice.data.child.MultipleImageTextNode;
|
||||
import com.ruoyi.cai.notice.data.child.SimpleImageTextData;
|
||||
import com.ruoyi.cai.notice.enums.MessageBaseTypeEnum;
|
||||
import com.ruoyi.cai.service.SysPushService;
|
||||
import com.ruoyi.cai.service.UserService;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.common.utils.BeanConvertUtil;
|
||||
import com.ruoyi.yunxin.Yunxin;
|
||||
import com.ruoyi.yunxin.enums.ImTypeEnum;
|
||||
import com.ruoyi.yunxin.resp.YxCommonR;
|
||||
import com.ruoyi.yunxin.resp.YxDataR;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 推送系统消息Service业务层处理
|
||||
*
|
||||
@@ -15,4 +45,155 @@ import org.springframework.stereotype.Service;
|
||||
@Service
|
||||
public class SysPushServiceImpl extends ServiceImpl<SysPushMapper, SysPush> implements SysPushService {
|
||||
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
@Autowired
|
||||
private Yunxin yunxin;
|
||||
@Autowired
|
||||
private SystemConfigManager systemConfigManager;
|
||||
|
||||
@Override
|
||||
public void saveSysPush(SysPushParams params) {
|
||||
SysPushMasterDTO master = params.getMaster();
|
||||
Integer type = master.getType();
|
||||
SystemPushTypeEnum systemPushType = SystemPushTypeEnum.getByCode(type);
|
||||
if(systemPushType == null){
|
||||
throw new ServiceException("消息类型有误!");
|
||||
}
|
||||
User user = userService.getByUserCode(master.getUsercode());
|
||||
if(user == null){
|
||||
throw new ServiceException("蜜瓜号不存在!");
|
||||
}
|
||||
SysPush sysPush = new SysPush();
|
||||
sysPush.setGroupId(master.getGroupId());
|
||||
sysPush.setType(master.getType());
|
||||
sysPush.setUserId(user.getId());
|
||||
sysPush.setUsercode(master.getUsercode());
|
||||
sysPush.setTitle(master.getTitle());
|
||||
sysPush.setRemark(master.getRemark());
|
||||
sysPush.setSendTimeType(master.getSendTimeType());
|
||||
sysPush.setSendTime(master.getSendTime());
|
||||
sysPush.setStatus(SystemPushStatusEnum.NO_RUN.getCode());
|
||||
String context = null;
|
||||
switch (systemPushType){
|
||||
case SIMPLE_TEXT:
|
||||
NoticeMsgR ok = NoticeMsgR.ok(master.getOnlyText());
|
||||
context = JSON.toJSONString(ok);
|
||||
break;
|
||||
case TEXT:
|
||||
ExtNoticeData data = new ExtNoticeData();
|
||||
data.setTitle(master.getTitle());
|
||||
data.setTxt1(master.getTextText1());
|
||||
List<ExtNoticeData.MessageExtDataList> fields = BeanConvertUtil.convertListTo(params.getTextContext(), ExtNoticeData.MessageExtDataList::new);
|
||||
data.setFields(fields);
|
||||
data.setTxt2(master.getTextText2());
|
||||
data.setLink_type(master.getTextLinkType());
|
||||
data.setLink_url(master.getTextLinkUrl());
|
||||
NoticeR<ExtNoticeData> noticeR = NoticeR.ok(MessageBaseTypeEnum.TXT, data);
|
||||
context = JSON.toJSONString(noticeR);
|
||||
break;
|
||||
case SIMPLE_IMAGE_TEXT:
|
||||
SimpleImageTextData simpleImageTextData = new SimpleImageTextData();
|
||||
simpleImageTextData.setAct_type(master.getOneImageTitleType());
|
||||
if(simpleImageTextData.getAct_type() == 1){ // 水印标题
|
||||
simpleImageTextData.setAct_string(master.getOneImageText());
|
||||
simpleImageTextData.setTitle(master.getOneImageText());
|
||||
}else if(simpleImageTextData.getAct_type() == 2){ // 正常标题
|
||||
simpleImageTextData.setAct_string(master.getOneImageText());
|
||||
simpleImageTextData.setTitle(master.getOneImageText());
|
||||
simpleImageTextData.setTxt(master.getOneImageText());
|
||||
}
|
||||
simpleImageTextData.setImage(master.getOneImageImage());
|
||||
simpleImageTextData.setLink_type(master.getOneImageLinkType());
|
||||
simpleImageTextData.setLink_url(master.getOneImageLinkUrl());
|
||||
NoticeR<SimpleImageTextData> simpleImageTextR = NoticeR.ok(MessageBaseTypeEnum.SIMPLE_IMAGE_TEXT, simpleImageTextData);
|
||||
context = JSON.toJSONString(simpleImageTextR);
|
||||
break;
|
||||
case IMAGE_TEXT:
|
||||
List<SysPushImageContextDTO> imageContext = params.getImageContext();
|
||||
List<MultipleImageTextNode> multipleImageTextNodeList = new ArrayList<>();
|
||||
for (SysPushImageContextDTO dto : imageContext) {
|
||||
MultipleImageTextNode multipleImageTextNode = new MultipleImageTextNode();
|
||||
multipleImageTextNode.setImage(dto.getImage());
|
||||
multipleImageTextNode.setTitle(dto.getText());
|
||||
multipleImageTextNode.setLink_type(dto.getLinkType());
|
||||
multipleImageTextNode.setLink_url(dto.getLinkUrl());
|
||||
multipleImageTextNodeList.add(multipleImageTextNode);
|
||||
}
|
||||
MultipleImageTextData multipleImageTextData = new MultipleImageTextData();
|
||||
multipleImageTextData.setList(multipleImageTextNodeList);
|
||||
NoticeR<MultipleImageTextData> multipleImageTextDataNoticeR = NoticeR.ok(MessageBaseTypeEnum.MULTIPLE_IMAGE_TEXT, multipleImageTextData);
|
||||
context = JSON.toJSONString(multipleImageTextDataNoticeR);
|
||||
break;
|
||||
case ONLY_IMAGE:
|
||||
NoticeOnlyImageR noticeOnlyImageR = new NoticeOnlyImageR();
|
||||
context = JSON.toJSONString(noticeOnlyImageR);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
sysPush.setContent(context);
|
||||
sysPush.setParams(JSON.toJSONString(params));
|
||||
this.save(sysPush);
|
||||
}
|
||||
|
||||
|
||||
public SendSysPushResp sendSysPush(SysPush sysPush, List<Long> userIds){
|
||||
String cosUrl = systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN);
|
||||
Integer type = sysPush.getType();
|
||||
SystemPushTypeEnum systemPushType = SystemPushTypeEnum.getByCode(type);
|
||||
if(systemPushType == null){
|
||||
throw new ServiceException("消息类型有误!");
|
||||
}
|
||||
String content = sysPush.getContent();
|
||||
Object body;
|
||||
ImTypeEnum imTypeEnum;
|
||||
switch (systemPushType){
|
||||
case SIMPLE_TEXT:
|
||||
body = JSON.parseObject(content, NoticeMsgR.class);
|
||||
imTypeEnum = ImTypeEnum.TXT;
|
||||
break;
|
||||
case TEXT:
|
||||
NoticeR<ExtNoticeData> noticeR = JSON.parseObject(content, new TypeReference<NoticeR<ExtNoticeData>>() {});
|
||||
noticeR.getData().setCurrentDate();
|
||||
body = noticeR;
|
||||
imTypeEnum = ImTypeEnum.CUSTOM;
|
||||
break;
|
||||
case SIMPLE_IMAGE_TEXT:
|
||||
NoticeR<SimpleImageTextData> simpleImageTextR = JSON.parseObject(content, new TypeReference<NoticeR<SimpleImageTextData>>() {});
|
||||
imTypeEnum = ImTypeEnum.CUSTOM;
|
||||
SimpleImageTextData data = simpleImageTextR.getData();
|
||||
if(data.getImage() != null){
|
||||
data.setImage(cosUrl+data.getImage());
|
||||
}
|
||||
body = simpleImageTextR;
|
||||
break;
|
||||
case IMAGE_TEXT:
|
||||
NoticeR<MultipleImageTextData> multipleImageTextR = JSON.parseObject(content, new TypeReference<NoticeR<MultipleImageTextData>>() {});
|
||||
MultipleImageTextData multipleImageTextData = multipleImageTextR.getData();
|
||||
List<MultipleImageTextNode> list = multipleImageTextData.getList();
|
||||
for (MultipleImageTextNode node : list) {
|
||||
if(node.getImage() != null){
|
||||
node.setImage(cosUrl+node.getImage());
|
||||
}
|
||||
}
|
||||
body = multipleImageTextR;
|
||||
imTypeEnum = ImTypeEnum.CUSTOM;
|
||||
break;
|
||||
case ONLY_IMAGE:
|
||||
NoticeOnlyImageR imageR = JSON.parseObject(content, NoticeOnlyImageR.class);
|
||||
if(imageR.getUrl() != null){
|
||||
imageR.setUrl(cosUrl+imageR.getUrl());
|
||||
}
|
||||
body = imageR;
|
||||
imTypeEnum = ImTypeEnum.IMAGE;
|
||||
break;
|
||||
default:
|
||||
throw new ServiceException("消息类型有误");
|
||||
}
|
||||
YxDataR<YxCommonR> r = yunxin.batchSendToNotice(userIds, body, null, imTypeEnum);
|
||||
SendSysPushResp resp = new SendSysPushResp();
|
||||
resp.setImResp(r);
|
||||
return resp;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user