Commit 3c1fe36c by 曾迫

个人号发送小程序基础

parent edc35b01
......@@ -9,7 +9,7 @@ import lombok.Data;
@ApiModel("回复统一参数")
public class ReplyParamDTO extends BaseDto {
@ApiModelProperty("类型 1 文字 2 图片 3 链接 4应用 5素材")
@ApiModelProperty("类型 1 文字 2 图片 3 链接 4应用 5素材 7小程序")
private Integer replyType;
@ApiModelProperty("内容")
......@@ -30,6 +30,9 @@ public class ReplyParamDTO extends BaseDto {
@ApiModelProperty("资源id")
private Long resourceId;
@ApiModelProperty("小程序主键id")
private Long personalAppletsId;
@ApiModelProperty("描述")
private String description;
......
......@@ -30,7 +30,12 @@ public enum ReplyTypeEnum {
/**
* 语音
*/
AUDIO(6);
AUDIO(6),
/**
* 小程序
*/
PERSONALAPPLETS(7);
/**
* 值
*/
......
......@@ -42,6 +42,8 @@ import com.pcloud.book.pcloudkeyword.facade.response.PcloudRobotClassifyResponse
import com.pcloud.book.pcloudkeyword.facade.response.PcloudRobotResponseVO;
import com.pcloud.book.pcloudkeyword.set.PcloudRobotSet;
import com.pcloud.book.push.biz.SelfPushBiz;
import com.pcloud.book.push.dao.PersonalAppletsDao;
import com.pcloud.book.push.entity.PersonalApplets;
import com.pcloud.book.skill.biz.PcloudSkillBiz;
import com.pcloud.book.skill.entity.PcloudSkill;
import com.pcloud.book.util.common.ThreadPoolUtils;
......@@ -132,6 +134,11 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz {
@Autowired
private QrcodeService qrcodeService;
@Autowired
private PersonalAppletsDao personalAppletsDao;
@ParamLog(value = "[changeRobotRealStatus]", isAfterReturn = false)
@Override
@Transactional(rollbackFor = {Exception.class})
......@@ -373,6 +380,35 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz {
sendMomentsDTO.setCounts(count);
sendMomentsDTO.setIndex(index);
sendMomentsDTO.setRobotProcessType(RobotProcessTypeEnum.WELCOME);
WxGroupSDK.sendMessageToPhone(sendMomentsDTO);
}else if (WelcomeReplyTypeEnum.APPLETS.value.equals(replyType)){
SendMomentsDTO sendMomentsDTO=new SendMomentsDTO();
List<String> userWxIds=new ArrayList<>();
userWxIds.add(userWxId);
//发送的小程序
PersonalApplets byId = personalAppletsDao.getById(robotWelcome.getPersonalAppletsId());
if(byId==null){
return;
}
GroupRobotDTO info = wechatGroupConsr.getGroupRobotByRobotId(robotWxId);
if (info!=null){
sendMomentsDTO.setIsMasterWx(info.getMasterWx());
sendMomentsDTO.setReceiveAccount(info.getMac());
}
sendMomentsDTO.setMomentType(BusinessConstant.MomentTypeEnum.SEND_WX_MINI);
sendMomentsDTO.setContent(byId.getAppletsId());//小程序id
sendMomentsDTO.setLink(byId.getAppletsUrl());//小程序访问地址
sendMomentsDTO.setImages(userWxIds);//发送人
sendMomentsDTO.setLinkTitle(byId.getSlogan());//小程序宣传语
sendMomentsDTO.setLinkDesc(byId.getSloganImgUrl());//小程序宣传图
sendMomentsDTO.setIp(ip);
sendMomentsDTO.setMessageGroupId(messageGroup);
sendMomentsDTO.setCounts(count);
sendMomentsDTO.setIndex(index);
sendMomentsDTO.setCode(SendMessageTypeEnum.SELF.getCode());
sendMomentsDTO.setRobotProcessType(RobotProcessTypeEnum.WELCOME);
sendMomentsDTO.setAltId(robotWxId);
sendMomentsDTO.setWxId(userWxId);
wechatGroupConsr.sendMessage(JSON.toJSONString(sendMomentsDTO));
}
index ++;
......
......@@ -19,7 +19,7 @@ public class PcloudRobotWelcome extends BaseEntity {
@ApiModelProperty("全平台分类id")
private Long pcloudClassifyId;
@ApiModelProperty("类型 1 文字 2 图片 3 链接 4应用 5素材")
@ApiModelProperty("类型 1 文字 2 图片 3 链接 4应用 5素材 6小程序")
private Integer replyType;
@ApiModelProperty("内容")
......@@ -61,6 +61,16 @@ public class PcloudRobotWelcome extends BaseEntity {
@ApiModelProperty("文件转码后的单张图片集合")
private List<ResourceOfficeItemDTO> resourceOfficeItemDTOs;
@ApiModelProperty("小程序主键id")
private Integer personalAppletsId;
@ApiModelProperty("小程序宣传语")
private String slogan;
@ApiModelProperty("小程序宣传图片")
private String sloganImgUrl;
}
......@@ -18,7 +18,11 @@ public enum WelcomeReplyTypeEnum {
/**
* 语音
*/
AUDIO(6);
AUDIO(6),
/**
* 值
*/
APPLETS(7);
/**
* 值
*/
......
......@@ -12,6 +12,8 @@ import com.pcloud.book.group.tools.SendWeixinRequestTools;
import com.pcloud.book.keywords.enums.ReplyTypeEnum;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobotWelcome;
import com.pcloud.book.pcloudkeyword.enums.WelcomeReplyTypeEnum;
import com.pcloud.book.push.dao.PersonalAppletsDao;
import com.pcloud.book.push.entity.PersonalApplets;
import com.pcloud.book.skill.dto.AppOrProductReplyDTO;
import com.pcloud.channelcenter.wechat.dto.AccountSettingDto;
import com.pcloud.common.core.aspect.ParamLog;
......@@ -44,6 +46,9 @@ public class PcloudRobotSet {
@Autowired
private WechatGroupConsr wechatGroupConsr;
@Autowired
private PersonalAppletsDao personalAppletsDao;
@ParamLog("填充欢迎语回复")
public void fillRobotWelcome(List<PcloudRobotWelcome> robotWelcomeList) {
if(ListUtils.isEmpty(robotWelcomeList)){
......@@ -75,6 +80,11 @@ public class PcloudRobotSet {
robotWelcome.setResourceOfficeItemDTOs(resourceDTO.getResourceOfficeItemDTOs());
}
}
if (WelcomeReplyTypeEnum.APPLETS.value.equals(type)){
PersonalApplets byId = personalAppletsDao.getById(robotWelcome.getPersonalAppletsId());
robotWelcome.setSlogan(byId.getSlogan());
robotWelcome.setSloganImgUrl(byId.getSloganImgUrl());
}
}
}
public void sendAppOrProductReply(AppOrProductReplyDTO replyDTO) {
......
......@@ -47,6 +47,8 @@ import com.pcloud.book.personalstage.enums.StageReplyRelevEnum;
import com.pcloud.book.personalstage.utils.CacheUtils;
import com.pcloud.book.personalstage.vo.request.AddScoreRequestVO;
import com.pcloud.book.personlstage.dto.UserReplaceCodeDTO;
import com.pcloud.book.push.dao.PersonalAppletsDao;
import com.pcloud.book.push.entity.PersonalApplets;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.mq.DelayQueueDTO;
import com.pcloud.common.exceptions.BizException;
......@@ -135,6 +137,10 @@ public class PersonalStageBizImpl implements PersonalStageBiz {
@Autowired
private ReplaceCodeDao replaceCodeDao;
@Autowired
private PersonalAppletsDao personalAppletsDao;
@Value("${wechat.group.link.prefix}")
private String wechatLinkPrefix;
......@@ -230,15 +236,13 @@ public class PersonalStageBizImpl implements PersonalStageBiz {
}
List<Long> resourceIds=replyItems.stream().filter(s->(ReplyTypeEnum.RESOURCE.value.equals(s.getReplyType())
||ReplyTypeEnum.AUDIO.value.equals(s.getReplyType()))&&s.getResourceId()!=null).map(PersonalStageReplyItem::getResourceId).collect(Collectors.toList());
if (ListUtils.isEmpty(resourceIds)){
return;
}
if (!ListUtils.isEmpty(resourceIds)){
Map<Long, ResourceDTO> resourceDTOMap = resourceConsr.mapByIds(resourceIds);
for (PersonalStageReplyItem item:replyItems){
Integer type=item.getReplyType();
if (ReplyTypeEnum.RESOURCE.value.equals(type)||ReplyTypeEnum.AUDIO.value.equals(type)){
for (PersonalStageReplyItem item:replyItems) {
Integer type = item.getReplyType();
if (ReplyTypeEnum.RESOURCE.value.equals(type) || ReplyTypeEnum.AUDIO.value.equals(type)) {
ResourceDTO resourceDTO = resourceDTOMap.get(item.getResourceId());
if (resourceDTO!=null){
if (resourceDTO != null) {
item.setResourceName(resourceDTO.getResourceName());
item.setResourceUrl(resourceDTO.getFileUrl());
item.setResourceTypeCode(resourceDTO.getTypeCode());
......@@ -251,6 +255,15 @@ public class PersonalStageBizImpl implements PersonalStageBiz {
}
}
}
for (PersonalStageReplyItem item:replyItems){
Integer type=item.getReplyType();
if (ReplyTypeEnum.PERSONALAPPLETS.value.equals(type)) {
PersonalApplets byId = personalAppletsDao.getById(item.getPersonalAppletsId());
item.setSlogan(byId.getSlogan());
item.setSloganImgUrl(byId.getSloganImgUrl());
}
}
}
@Transactional(rollbackFor = Exception.class)
@ParamLog("修改排序值")
......@@ -999,6 +1012,38 @@ public class PersonalStageBizImpl implements PersonalStageBiz {
wechatGroupConsr.sendMessage(JSON.toJSONString(sendMomentsDTO));
}
}
if (ReplyTypeEnum.PERSONALAPPLETS.value.equals(type)) {
SendMomentsDTO sendMomentsDTO=new SendMomentsDTO();
List<String> userWxIds=new ArrayList<>();
userWxIds.add(userWxId);
//发送的小程序
PersonalApplets byId = personalAppletsDao.getById(item.getPersonalAppletsId());
if(byId==null){
return;
}
GroupRobotDTO info = wechatGroupConsr.getGroupRobotByRobotId(robotId);
if (info != null) {
sendMomentsDTO.setIsMasterWx(info.getMasterWx());
sendMomentsDTO.setReceiveAccount(info.getMac());
}
sendMomentsDTO.setMomentType(BusinessConstant.MomentTypeEnum.SEND_WX_MINI);
sendMomentsDTO.setContent(byId.getAppletsId());//小程序id
sendMomentsDTO.setLink(byId.getAppletsUrl());//小程序访问地址
sendMomentsDTO.setImages(userWxIds);//发送人
sendMomentsDTO.setLinkTitle(byId.getSlogan());//小程序宣传语
sendMomentsDTO.setLinkDesc(byId.getSloganImgUrl());//小程序宣传图
sendMomentsDTO.setIp(ip);
sendMomentsDTO.setMessageGroupId(uuid);
sendMomentsDTO.setCounts(replyItems.size());
sendMomentsDTO.setIndex(replyItems.indexOf(item));
sendMomentsDTO.setCode(SendMessageTypeEnum.SELF.getCode());
sendMomentsDTO.setRobotProcessType(robotProcessType);
sendMomentsDTO.setAltId(robotId);
sendMomentsDTO.setWxId(userWxId);
wechatGroupConsr.sendMessage(JSON.toJSONString(sendMomentsDTO));
}
}
}
......
......@@ -28,6 +28,8 @@ import com.pcloud.book.personalstage.enums.PersonalStageUserStateEnum;
import com.pcloud.book.personalstage.vo.request.BaseStageJumpRequestVO;
import com.pcloud.book.personalstage.vo.request.CreateStageJumpRequestVO;
import com.pcloud.book.personalstage.vo.request.UpdateStageJumpRequestVO;
import com.pcloud.book.push.dao.PersonalAppletsDao;
import com.pcloud.book.push.entity.PersonalApplets;
import com.pcloud.book.util.common.YesOrNoEnums;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.biz.MessageBiz;
......@@ -46,11 +48,7 @@ import com.pcloud.contentcenter.resource.dto.ResourceDTO;
import com.pcloud.feedback.paper.dto.PaperAndQuestionDto;
import com.pcloud.wechatgroup.group.dto.GroupRobotDTO;
import com.pcloud.wechatgroup.group.dto.GroupUserDTO;
import com.sdk.wxgroup.BaseVO;
import com.sdk.wxgroup.RobotProcessTypeEnum;
import com.sdk.wxgroup.SendMessageTypeEnum;
import com.sdk.wxgroup.SendPicMessageVO;
import com.sdk.wxgroup.SendTextMessageVO;
import com.sdk.wxgroup.*;
import com.sdk.wxgroup.im.mimc.BusinessConstant;
import com.sdk.wxgroup.im.mimc.dto.SendMomentsDTO;
import lombok.extern.slf4j.Slf4j;
......@@ -114,6 +112,11 @@ public class PersonalStageJumpBizImpl implements PersonalStageJumpBiz {
@Autowired
private CustomPlanBiz customPlanBiz;
@Autowired
private PersonalAppletsDao personalAppletsDao;
@Value("${wechat.group.link.prefix}")
private String wechatLinkPrefix;
//需求单链接替换符
......@@ -260,15 +263,13 @@ public class PersonalStageJumpBizImpl implements PersonalStageJumpBiz {
}
List<Long> resourceIds=linkups.stream().filter(s->(ReplyTypeEnum.RESOURCE.value.equals(s.getReplyType())
||ReplyTypeEnum.AUDIO.value.equals(s.getReplyType()))&&s.getResourceId()!=null).map(PersonalStageJumpLinkup::getResourceId).collect(Collectors.toList());
if (ListUtils.isEmpty(resourceIds)){
return;
}
if (!ListUtils.isEmpty(resourceIds)){
Map<Long, ResourceDTO> resourceDTOMap = resourceConsr.mapByIds(resourceIds);
for (PersonalStageJumpLinkup item:linkups){
Integer type=item.getReplyType();
if (ReplyTypeEnum.RESOURCE.value.equals(type)||ReplyTypeEnum.AUDIO.value.equals(type)){
for (PersonalStageJumpLinkup item:linkups) {
Integer type = item.getReplyType();
if (ReplyTypeEnum.RESOURCE.value.equals(type) || ReplyTypeEnum.AUDIO.value.equals(type)) {
ResourceDTO resourceDTO = resourceDTOMap.get(item.getResourceId());
if (resourceDTO!=null){
if (resourceDTO != null) {
item.setResourceName(resourceDTO.getResourceName());
item.setResourceUrl(resourceDTO.getFileUrl());
item.setResourceTypeCode(resourceDTO.getTypeCode());
......@@ -281,6 +282,17 @@ public class PersonalStageJumpBizImpl implements PersonalStageJumpBiz {
}
}
}
for (PersonalStageJumpLinkup item:linkups){
Integer type = item.getReplyType();
if (ReplyTypeEnum.PERSONALAPPLETS.value.equals(type)){
if(item.getPersonalAppletsId()!=null) {
PersonalApplets byId = personalAppletsDao.getById(item.getPersonalAppletsId());
item.setSlogan(byId.getSlogan());
item.setSloganImgUrl(byId.getSloganImgUrl());
}
}
}
}
@ParamLog("填充跳转关键字列表")
private void fillJumpKeywords(List<PersonalStageJumpDto> recordList) {
......@@ -558,6 +570,33 @@ public class PersonalStageJumpBizImpl implements PersonalStageJumpBiz {
fillMessageBaseInfo(sendMomentsDTO, linkupDelayDTO);
wechatGroupConsr.sendMessage(JSON.toJSONString(sendMomentsDTO));
}
} else if (ReplyTypeEnum.PERSONALAPPLETS.value.equals( jumpLinkup.getReplyType())){
SendMomentsDTO sendMomentsDTO=new SendMomentsDTO();
List<String> userWxIds=new ArrayList<>();
userWxIds.add(dto.getKey());
//发送的小程序
PersonalApplets byId = personalAppletsDao.getById(jumpLinkup.getPersonalAppletsId());
if(byId==null){
return;
}
GroupRobotDTO info = wechatGroupConsr.getGroupRobotByRobotId(linkupDelayDTO.getRobotId());
if (info != null) {
sendMomentsDTO.setIsMasterWx(info.getMasterWx());
sendMomentsDTO.setReceiveAccount(info.getMac());
}
sendMomentsDTO.setMomentType(BusinessConstant.MomentTypeEnum.SEND_WX_MINI);
sendMomentsDTO.setContent(byId.getAppletsId());//小程序id
sendMomentsDTO.setLink(byId.getAppletsUrl());//小程序访问地址
sendMomentsDTO.setImages(userWxIds);//发送人
sendMomentsDTO.setLinkTitle(byId.getSlogan());//小程序宣传语
sendMomentsDTO.setLinkDesc(byId.getSloganImgUrl());//小程序宣传图
sendMomentsDTO.setIp(linkupDelayDTO.getIp());
sendMomentsDTO.setCode(SendMessageTypeEnum.SELF.getCode());
fillMessageBaseInfo(sendMomentsDTO, linkupDelayDTO);
sendMomentsDTO.setAltId(linkupDelayDTO.getRobotId());
sendMomentsDTO.setWxId(dto.getKey());
wechatGroupConsr.sendMessage(JSON.toJSONString(sendMomentsDTO));
}
}
......
......@@ -22,7 +22,7 @@ public class PersonalStageJumpLinkup extends BaseEntity {
@ApiModelProperty("距离阶段开始时间")
private Integer toStageStartTime;
@ApiModelProperty("类型:1:文字;2:图片;6语音")
@ApiModelProperty("类型:1:文字;2:图片;6语音 7小程序")
private Integer replyType;
@ApiModelProperty("图片链接")
......@@ -55,4 +55,14 @@ public class PersonalStageJumpLinkup extends BaseEntity {
@ApiModelProperty("文件大小")
private Long fileSize;
@ApiModelProperty("小程序主键id")
private Long personalAppletsId;
@ApiModelProperty("小程序宣传语")
private String slogan;
@ApiModelProperty("小程序宣传图")
private String sloganImgUrl;
}
\ No newline at end of file
......@@ -16,7 +16,7 @@ public class PersonalStageReplyItem extends BaseEntity {
@ApiModelProperty("定制化阶段回复id")
private Long personalStageReplyId;
@ApiModelProperty("回复类型 1 文字 2 图片 3 链接 4应用 5素材 6语音")
@ApiModelProperty("回复类型 1 文字 2 图片 3 链接 4应用 5素材 6语音 7小程序")
private Integer replyType;
@ApiModelProperty("内容")
......@@ -52,4 +52,13 @@ public class PersonalStageReplyItem extends BaseEntity {
@ApiModelProperty("文件大小")
private Long fileSize;
@ApiModelProperty("小程序主键id")
private Long personalAppletsId;
@ApiModelProperty("小程序宣传语")
private String slogan;
@ApiModelProperty("小程序宣传图片")
private String sloganImgUrl;
}
\ No newline at end of file
......@@ -85,6 +85,7 @@ public abstract class BaseStageJumpRequestVO extends BaseRequestVO {
jumpLinkup.setReplyType((null == linkup.getReplyType() || linkup.getReplyType() == 0 ? 1 : linkup.getReplyType()));
jumpLinkup.setPicUrl(linkup.getPicUrl());
jumpLinkup.setResourceId(linkup.getResourceId());
jumpLinkup.setPersonalAppletsId(linkup.getPersonalAppletsId());
jumpLinkups.add(jumpLinkup);
}
return jumpLinkups;
......
package com.pcloud.book.push.biz;
import com.pcloud.book.group.vo.UserBookInfoVO;
import com.pcloud.book.push.dto.PersonalAppletsRecordDTO;
import com.pcloud.book.push.dto.SelfPushAddParamDTO;
import com.pcloud.book.push.dto.SelfPushRecordDTO;
import com.pcloud.book.push.entity.PersonalApplets;
import com.pcloud.book.push.entity.SelfPush;
import com.pcloud.common.page.PageBeanNew;
import java.util.List;
/**
* @描述:个人号群发
* @作者:zhuyajie
......@@ -62,4 +66,16 @@ public interface SelfPushBiz {
void updateSelfPush(Long partyId, SelfPushAddParamDTO addParamDTO);
SelfPush getSelfPush(Long pushId);
void createPersonalApplets(PersonalApplets applets);
void deleteAppletsById(Long id);
void updatePersonalApplets(PersonalApplets applets);
PageBeanNew<PersonalApplets> getAllApplets(String appletsId,Integer currentPage,Integer numPerPage);
PageBeanNew<PersonalAppletsRecordDTO> getSendAppletsRecords(Integer currentPage, Integer numPerPage, String startTime, String endTime, Integer status, Long partyId);
PersonalApplets getAppletsById(Long id);
}
package com.pcloud.book.push.dao;
import com.pcloud.book.push.entity.PersonalApplets;
import com.pcloud.book.push.entity.SelfPush;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
/**
* @描述:小程序
* @作者:zengpo
* @创建时间:18:57 2020/03/16
* @版本:1.0
*/
public interface PersonalAppletsDao extends BaseDao<PersonalApplets>{
List<PersonalApplets> getAllApplets(String appletsId);
}
package com.pcloud.book.push.dao.impl;
import com.pcloud.book.push.dao.PersonalAppletsDao;
import com.pcloud.book.push.dao.SelfPushDao;
import com.pcloud.book.push.entity.PersonalApplets;
import com.pcloud.book.push.entity.SelfPush;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.lang.reflect.MalformedParameterizedTypeException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @描述:个人号群发
* @作者:zhuyajie
* @创建时间:18:57 2019/11/26
* @版本:1.0
*/
@Component("personalAppletsDao")
public class PersonalAppletsDaoImpl extends BaseDaoImpl<PersonalApplets> implements PersonalAppletsDao {
@Override
public List<PersonalApplets> getAllApplets(String appletsId) {
Map<String,Object> map=new HashMap<>();
map.put("appletsId",appletsId);
return getSessionTemplate().selectList(getStatement("getAllApplets"),map);
}
}
package com.pcloud.book.push.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.book.push.entity.SelfPushItem;
import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @描述:个人号群发记录
* @作者:zhuyajie
* @创建时间:16:50 2019/11/27
* @版本:1.0
*/
@Data
public class PersonalAppletsRecordDTO extends BaseDto{
@ApiModelProperty("群发小号id")
private String altId;
@ApiModelProperty("小号名称")
private String robotName;
@ApiModelProperty("推送id")
private Long pushId;
@ApiModelProperty("推送项id")
private Long pushItemId;
@ApiModelProperty("推送内容项类型:1文本,2链接,3应用,4图片")
private Integer itemType;
@ApiModelProperty("发送状态(0发送中1发送成功2发送失败)")
private Integer pushStatus;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("发送好友数量")
private Integer userCount;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("发送时间")
private Date sendTime;
@ApiModelProperty("创建人")
private Long createUser;
@ApiModelProperty("创建人账号")
private String userName;
@ApiModelProperty("计划发送时间")
private String pushSendTime;
@ApiModelProperty("周几")
private String weekDays;
@ApiModelProperty("时间推送类型")
private Integer pushType;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty("开始时间")
private Date startTime;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty("结束时间")
private Date endTime;
@ApiModelProperty("发送时间拼接")
private String realSendTime;
@ApiModelProperty("分类名称")
private String classifyName;
@ApiModelProperty("小号分类id")
private Integer classifyId;
@ApiModelProperty("小号编号")
private String uniqueNumber;
@ApiModelProperty("小程序主键id")
private Long personalAppletsId;
@ApiModelProperty("小程序id")
private String appletsId;
@ApiModelProperty("小程序访问地址")
private String appletsUrl;
@ApiModelProperty("小程序宣传语")
private String slogan;
@ApiModelProperty("小程序宣图片")
private String sloganImgUrl;
}
package com.pcloud.book.push.entity;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Description
* @Author zengpo
* @Date 2020/03/16 16:46
**/
@ApiModel("消息推送项模型")
@Data
public class PersonalApplets extends BaseEntity {
@ApiModelProperty("小程序id")
private String appletsId;
@ApiModelProperty("小程序宣传语")
private String slogan;
@ApiModelProperty("小程序宣传图片")
private String sloganImgUrl;
@ApiModelProperty("小程序访问地址")
private String appletsUrl;
}
......@@ -19,10 +19,10 @@ public class SelfPushItem extends BaseEntity{
@ApiModelProperty("推送id")
private Long pushId;
@ApiModelProperty("推送内容项类型:1文本,2链接,3应用,4图片5素材")
@ApiModelProperty("推送内容项类型:1文本,2链接,3应用,4图片5素材,6小程序")
private Integer itemType;
@ApiModelProperty("类型 1 文字 2 图片 3 链接 4应用 5素材")
@ApiModelProperty("类型 1 文字 2 图片 3 链接 4应用 5素材 6小程序")
private Integer replyType;
@ApiModelProperty("文本内容")
......@@ -79,6 +79,10 @@ public class SelfPushItem extends BaseEntity{
@ApiModelProperty("资源id")
private Long resourceId;
@ApiModelProperty("小程序主键id")
private Long personalAppletsId;
@ApiModelProperty("资源链接")
private String resourceUrl;
......
......@@ -26,7 +26,12 @@ public enum ItemTypeEnum {
/**
* 资源
*/
RESOURCE(5);
RESOURCE(5),
/**
* 小程序
*/
PERSANALAPPLETS(7);
public final Integer value;
......
......@@ -4,8 +4,10 @@ import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.group.vo.UserBookInfoVO;
import com.pcloud.book.push.biz.SelfPushBiz;
import com.pcloud.book.push.check.PushCheck;
import com.pcloud.book.push.dto.PersonalAppletsRecordDTO;
import com.pcloud.book.push.dto.SelfPushAddParamDTO;
import com.pcloud.book.push.dto.SelfPushRecordDTO;
import com.pcloud.book.push.entity.PersonalApplets;
import com.pcloud.common.core.constant.SystemCode;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.page.PageBeanNew;
......@@ -132,4 +134,87 @@ public class SelfPushFacade {
SessionUtil.getInfoToken4Redis(token);
return new ResponseDto<>(selfPushBiz.getSelfPush(pushId));
}
@ApiOperation("创建小程序")
@PostMapping("createPersonalApplets")
public ResponseDto<?> createPersonalApplets(@RequestHeader("token") String token,@RequestBody @ApiParam PersonalApplets applets) throws PermissionException {
SessionUtil.getInfoToken4Redis(token);
if (applets!=null&&applets.getAppletsId()==null) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "缺失小程序id");
}
selfPushBiz.createPersonalApplets(applets);
return new ResponseDto<>();
}
@ApiOperation("删除小程序")
@GetMapping("deleteAppletsById")
public ResponseDto<?> deleteAppletsById(@RequestHeader("token") String token,@RequestParam("id") Long id) throws PermissionException {
SessionUtil.getInfoToken4Redis(token);
selfPushBiz.deleteAppletsById(id);
return new ResponseDto<>();
}
@ApiOperation("更新小程序")
@PostMapping("updatePersonalApplets")
public ResponseDto<?> updatePersonalApplets(@RequestHeader("token") String token,@RequestBody @ApiParam PersonalApplets applets) throws PermissionException {
SessionUtil.getInfoToken4Redis(token);
if (applets!=null&&applets.getId()==null) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "缺失小程序主键id");
}
selfPushBiz.updatePersonalApplets(applets);
return new ResponseDto<>();
}
@ApiOperation("查询所有小程序")
@GetMapping("getAllApplets")
public ResponseDto<?> getAllApplets(@RequestHeader("token") String token,
@RequestParam(value = "appletsId",required = false) @ApiParam("小程序id") String appletsId,
@RequestParam("currentPage") @ApiParam("当前页") Integer currentPage,
@RequestParam("numPerPage") @ApiParam("每页数量") Integer numPerPage) throws PermissionException {
SessionUtil.getInfoToken4Redis(token);
if (null == currentPage || null == numPerPage) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "缺少分页参数");
}
PageBeanNew<PersonalApplets> pageBeanNew=selfPushBiz.getAllApplets(appletsId,currentPage,numPerPage);
return new ResponseDto<>(pageBeanNew);
}
@ApiOperation("根据小程序主键id获取小程序信息")
@GetMapping("getAppletsById")
public ResponseDto<?> getAppletsById(@RequestHeader("token") String token,
@RequestParam(value = "id",required = true) @ApiParam("小程序主键id") Long id
) throws PermissionException {
SessionUtil.getInfoToken4Redis(token);
PersonalApplets personalApplets=selfPushBiz.getAppletsById(id);
return new ResponseDto<>(personalApplets);
}
@ApiOperation("查询小程序发送记录")
@GetMapping("getSendAppletsRecords")
public ResponseDto<PageBeanNew<PersonalAppletsRecordDTO>> getSendAppletsRecords(
@RequestHeader("token") String token,
@RequestParam("currentPage") @ApiParam("当前页") Integer currentPage,
@RequestParam("numPerPage") @ApiParam("每页数量") Integer numPerPage,
@RequestParam(value = "startTime", required = false) @ApiParam("开始时间") String startTime,
@RequestParam(value = "endTime", required = false) @ApiParam("结束时间") String endTime,
@RequestParam(value = "status", required = false) @ApiParam("发送状态(1发送中2发送成功3发送失败)") Integer status) throws PermissionException {
Map<String, Object> map = SessionUtil.getToken4Redis(token);
if (null == currentPage || null == numPerPage) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "缺少分页参数");
}
Long partyId = (Long) map.get(SessionUtil.PARTY_ID);
if (partyId == 0){
String isSystem = (String) map.get(SessionUtil.IS_SYSTEM);
if ("0".equals(isSystem)) {
partyId = (Long) map.get(SessionUtil.MEMBER_ID);
}
}
PageBeanNew<PersonalAppletsRecordDTO> pageBeanNew = selfPushBiz.getSendAppletsRecords(currentPage, numPerPage, startTime, endTime, status,partyId);
return new ResponseDto<>(pageBeanNew);
}
}
......@@ -14,11 +14,12 @@
<result column="file_size" property="fileSize" jdbcType="BIGINT"/>
<result column="resource_id" property="resourceId" jdbcType="INTEGER"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="personal_applets_id" property="personalAppletsId" jdbcType="BIGINT"/>
</resultMap>
<sql id="Base_Column_List" >
id, pcloud_robot_id, pcloud_classify_id, reply_type, content, pic_url, file_name, file_type, file_url,
file_size, resource_id, create_time
file_size, resource_id, create_time,personal_applets_id
</sql>
<!--批量插入-->
......@@ -34,7 +35,8 @@
file_url,
file_size,
resource_id,
create_time
create_time,
personal_applets_id
) values
<foreach collection="list" item="item" index="index" separator=",">
(
......@@ -48,7 +50,8 @@
#{item.fileUrl,jdbcType=VARCHAR},
#{item.fileSize,jdbcType=BIGINT},
#{item.resourceId,jdbcType=BIGINT},
NOW()
NOW(),
#{item.personalAppletsId,jdbcType=BIGINT}
)
</foreach>
</insert>
......
......@@ -10,10 +10,11 @@
<result property="replyType" column="reply_type" jdbcType="INTEGER"/>
<result property="picUrl" column="pic_url" jdbcType="VARCHAR"/>
<result property="resourceId" column="resource_id" jdbcType="BIGINT"/>
<result column="personal_applets_id" property="personalAppletsId" jdbcType="BIGINT"/>
</resultMap>
<sql id="Base_Column_List">
id, personal_stage_jump_id, linkup_content, to_stage_start_time, reply_type, pic_url, resource_id
id, personal_stage_jump_id, linkup_content, to_stage_start_time, reply_type, pic_url, resource_id,personal_applets_id
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long">
......@@ -58,7 +59,8 @@
to_stage_start_time,
reply_type,
pic_url,
resource_id
resource_id,
personal_applets_id
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{personalStageJumpId,jdbcType=BIGINT},
......@@ -66,7 +68,8 @@
#{toStageStartTime,jdbcType=INTEGER},
#{replyType,jdbcType=INTEGER},
#{picUrl,jdbcType=VARCHAR},
#{resourceId,jdbcType=BIGINT}
#{resourceId,jdbcType=BIGINT},
#{personalAppletsId,jdbcType=BIGINT}
</trim>
</insert>
......@@ -78,7 +81,8 @@
to_stage_start_time,
reply_type,
pic_url,
resource_id
resource_id,
personal_applets_id
</trim>
values
<foreach collection="list" item="item" separator=",">
......@@ -88,7 +92,8 @@
#{item.toStageStartTime,jdbcType=INTEGER},
#{item.replyType,jdbcType=INTEGER},
#{item.picUrl,jdbcType=VARCHAR},
#{item.resourceId,jdbcType=BIGINT}
#{item.resourceId,jdbcType=BIGINT},
#{item.personalAppletsId,jdbcType=BIGINT}
</trim>
</foreach>
</insert>
......
......@@ -10,10 +10,11 @@
<result property="picUrl" column="pic_url" jdbcType="VARCHAR"/>
<result property="resourceId" column="resource_id" jdbcType="BIGINT"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result column="personal_applets_id" property="personalAppletsId" jdbcType="BIGINT"/>
</resultMap>
<sql id="Base_Column_List">
id, personal_stage_reply_id, reply_type, content, pic_url, resource_id, create_time
id, personal_stage_reply_id, reply_type, content, pic_url, resource_id, create_time,personal_applets_id
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long">
......@@ -36,7 +37,8 @@
content,
pic_url,
resource_id,
create_time
create_time,
personal_applets_id
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{personalStageReplyId,jdbcType=BIGINT},
......@@ -44,7 +46,8 @@
#{content,jdbcType=VARCHAR},
#{picUrl,jdbcType=VARCHAR},
#{resourceId,jdbcType=BIGINT},
NOW()
NOW(),
#{personalAppletsId,jdbcType=BIGINT}
</trim>
</insert>
......@@ -55,7 +58,8 @@
content,
pic_url,
resource_id,
create_time
create_time,
personal_applets_id
) values
<foreach collection="list" item="item" index="index" separator=",">
(
......@@ -64,7 +68,8 @@
#{item.content,jdbcType=VARCHAR},
#{item.picUrl,jdbcType=VARCHAR},
#{item.resourceId,jdbcType=BIGINT},
NOW()
NOW(),
#{item.personalAppletsId,jdbcType=BIGINT}
)
</foreach>
</insert>
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.push.dao.impl.PersonalAppletsDaoImpl" >
<resultMap id="BaseResultMap" type="com.pcloud.book.push.entity.PersonalApplets" >
<id column="id" property="id" jdbcType="BIGINT" />
<result column="applets_id" property="appletsId" jdbcType="VARCHAR" />
<result column="slogan" property="slogan" jdbcType="VARCHAR" />
<result column="slogan_img_url" property="sloganImgUrl" jdbcType="VARCHAR" />
<result column="applets_url" property="appletsUrl" jdbcType="VARCHAR" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
</resultMap>
<sql id="Base_Column_List" >
id, applets_id, slogan, slogan_img_url, applets_url, create_time, update_time
</sql>
<insert id="insert" parameterType="com.pcloud.book.push.entity.PersonalApplets" useGeneratedKeys="true" keyProperty="id">
insert into personal_applets ( applets_id,
slogan, slogan_img_url, applets_url,
create_time, update_time
)
values (#{appletsId,jdbcType=VARCHAR}, #{slogan,jdbcType=VARCHAR},
#{sloganImgUrl,jdbcType=VARCHAR}, #{appletsUrl,jdbcType=VARCHAR},
now(), now()
)
</insert>
<select id="selectById" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from personal_applets where id=#{id}
</select>
<select id="getAllApplets" parameterType="map" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from personal_applets
where 1=1
<if test="appletsId!=null">
and applets_id=#{appletsId}
</if>
order by create_time desc
</select>
<update id="update" parameterType="com.pcloud.book.push.entity.PersonalApplets">
update personal_applets
<set>
<if test="appletsId != null">
applets_id = #{appletsId,jdbcType=VARCHAR},
</if>
<if test="slogan != null">
slogan = #{slogan,jdbcType=VARCHAR},
</if>
<if test="sloganImgUrl != null">
slogan_img_url = #{sloganImgUrl,jdbcType=VARCHAR},
</if>
<if test="appletsUrl != null">
applets_url = #{appletsUrl,jdbcType=VARCHAR},
</if>
update_time = NOW(),
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<delete id="deleteById">
delete from personal_applets where id=#{id}
</delete>
</mapper>
\ No newline at end of file
......@@ -22,12 +22,13 @@
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
<result column="send_time" property="sendTime" jdbcType="TIMESTAMP" />
<result column="resource_id" property="resourceId" jdbcType="BIGINT"/>
<result column="personal_applets_id" property="personalAppletsId" jdbcType="BIGINT"/>
</resultMap>
<sql id="Base_Column_List" >
id, push_id, item_type, text_content, link_url, link_title, link_description,
link_image_url, image_url, app_id, app_url, product_id, product_url, push_status,
create_user, create_time, update_user, update_time, send_time, resource_id
create_user, create_time, update_user, update_time, send_time, resource_id,personal_applets_id
</sql>
<insert id="insert" parameterType="com.pcloud.book.push.entity.SelfPushItem" useGeneratedKeys="true" keyProperty="id">
......@@ -36,14 +37,14 @@
link_description, link_image_url, image_url,
app_id, app_url, product_id,
product_url, push_status, create_user,
create_time, update_user, update_time, send_time, resource_id
create_time, update_user, update_time, send_time, resource_id,personal_applets_id
)
values (#{pushId,jdbcType=BIGINT}, #{itemType,jdbcType=INTEGER},
#{textContent,jdbcType=VARCHAR}, #{linkUrl,jdbcType=VARCHAR}, #{linkTitle,jdbcType=VARCHAR},
#{linkDescription,jdbcType=VARCHAR}, #{linkImageUrl,jdbcType=VARCHAR}, #{imageUrl,jdbcType=VARCHAR},
#{appId,jdbcType=BIGINT}, #{appUrl,jdbcType=VARCHAR}, #{productId,jdbcType=BIGINT},
#{productUrl,jdbcType=VARCHAR}, #{pushStatus,jdbcType=INTEGER}, #{createUser,jdbcType=BIGINT},
now(), #{updateUser,jdbcType=BIGINT}, now(), #{sendTime}, #{resourceId}
now(), #{updateUser,jdbcType=BIGINT}, now(), #{sendTime}, #{resourceId},#{personalAppletsId}
)
</insert>
......@@ -68,7 +69,8 @@
update_user,
update_time,
send_time,
resource_id
resource_id,
personal_applets_id
) values
<foreach collection="list" item="item" index="index" separator=",">
(
......@@ -90,7 +92,8 @@
#{item.updateUser,jdbcType=BIGINT},
NOW(),
#{item.sendTime},
#{item.resourceId}
#{item.resourceId},
#{item.personalAppletsId}
)
</foreach>
</insert>
......@@ -151,6 +154,56 @@
i.create_time DESC, i.id DESC
</select>
<select id="getSendAppletsRecords" parameterType="map" resultType="com.pcloud.book.push.dto.PersonalAppletsRecordDTO">
SELECT
p.alt_id altId,
p.id pushId,
i.id pushItemId,
i.item_type itemType,
i.push_status pushStatus,
i.create_time createTime,
min(i.send_time) sendTime,
p.create_user createUser,
p.start_time startTime,
p.end_time endTime,
p.push_send_time pushSendTime,
p.week_days weekDays,
p.push_type pushType,
a.id personalAppletsId,
a.applets_id appletsId,
a.applets_url appletsUrl,
a.slogan ,
a.slogan_img_url sloganImgUrl,
(select count(1) from self_push_user where push_id=p.id) userCount
FROM
self_push_item i
LEFT JOIN self_push p ON i.push_id = p.id
LEFT JOIN personal_applets a ON a.id=i.personal_applets_id
WHERE
1 = 1
and i.personal_applets_id is not null
<if test="startTime != null and endTime != null">
AND (
(i.send_time BETWEEN #{startTime} AND #{endTime} )
OR (p.start_time >= #{startTime} AND p.end_time &lt;= #{endTime})
)
</if>
<if test="pushStatus != null">
AND i.push_status = #{pushStatus}
</if>
<choose>
<when test="partyId == 0">
AND p.alt_id IS NOT NULL AND p.alt_id !=""
</when>
<otherwise>
AND p.create_user = #{partyId}
</otherwise>
</choose>
group by push_id
ORDER BY
i.create_time DESC, i.id DESC
</select>
<update id="updatePushStatusByPushId" parameterType="map">
UPDATE self_push_item
SET push_status = #{pushStatus}
......
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