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,24 +236,31 @@ 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)) {
ResourceDTO resourceDTO = resourceDTOMap.get(item.getResourceId());
if (resourceDTO != null) {
item.setResourceName(resourceDTO.getResourceName());
item.setResourceUrl(resourceDTO.getFileUrl());
item.setResourceTypeCode(resourceDTO.getTypeCode());
item.setResourceTypeName(resourceDTO.getTypeName());
item.setFileType(resourceDTO.getFileType());
item.setResourcePdfItems(resourceDTO.getResourcePdfItems());
item.setResourceOfficeItemDTOs(resourceDTO.getResourceOfficeItemDTOs());
item.setFileSize(resourceDTO.getFileSize());
}
}
}
}
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)){
ResourceDTO resourceDTO = resourceDTOMap.get(item.getResourceId());
if (resourceDTO!=null){
item.setResourceName(resourceDTO.getResourceName());
item.setResourceUrl(resourceDTO.getFileUrl());
item.setResourceTypeCode(resourceDTO.getTypeCode());
item.setResourceTypeName(resourceDTO.getTypeName());
item.setFileType(resourceDTO.getFileType());
item.setResourcePdfItems(resourceDTO.getResourcePdfItems());
item.setResourceOfficeItemDTOs(resourceDTO.getResourceOfficeItemDTOs());
item.setFileSize(resourceDTO.getFileSize());
}
if (ReplyTypeEnum.PERSONALAPPLETS.value.equals(type)) {
PersonalApplets byId = personalAppletsDao.getById(item.getPersonalAppletsId());
item.setSlogan(byId.getSlogan());
item.setSloganImgUrl(byId.getSloganImgUrl());
}
}
}
......@@ -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,23 +263,32 @@ 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)) {
ResourceDTO resourceDTO = resourceDTOMap.get(item.getResourceId());
if (resourceDTO != null) {
item.setResourceName(resourceDTO.getResourceName());
item.setResourceUrl(resourceDTO.getFileUrl());
item.setResourceTypeCode(resourceDTO.getTypeCode());
item.setResourceTypeName(resourceDTO.getTypeName());
item.setFileType(resourceDTO.getFileType());
item.setResourcePdfItems(resourceDTO.getResourcePdfItems());
item.setResourceOfficeItemDTOs(resourceDTO.getResourceOfficeItemDTOs());
item.setFileSize(resourceDTO.getFileSize());
}
}
}
}
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)){
ResourceDTO resourceDTO = resourceDTOMap.get(item.getResourceId());
if (resourceDTO!=null){
item.setResourceName(resourceDTO.getResourceName());
item.setResourceUrl(resourceDTO.getFileUrl());
item.setResourceTypeCode(resourceDTO.getTypeCode());
item.setResourceTypeName(resourceDTO.getTypeName());
item.setFileType(resourceDTO.getFileType());
item.setResourcePdfItems(resourceDTO.getResourcePdfItems());
item.setResourceOfficeItemDTOs(resourceDTO.getResourceOfficeItemDTOs());
item.setFileSize(resourceDTO.getFileSize());
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());
}
}
}
......@@ -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);
}
......@@ -21,15 +21,19 @@ import com.pcloud.book.keywords.enums.ReplyTypeEnum;
import com.pcloud.book.pcloudKeyword.dto.RobotClassifyDTO;
import com.pcloud.book.pcloudkeyword.biz.PcloudRobotBiz;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobot;
import com.pcloud.book.pcloudkeyword.enums.WelcomeReplyTypeEnum;
import com.pcloud.book.pcloudkeyword.set.PcloudRobotSet;
import com.pcloud.book.push.biz.SelfPushBiz;
import com.pcloud.book.push.constant.PushConstant;
import com.pcloud.book.push.dao.PersonalAppletsDao;
import com.pcloud.book.push.dao.SelfPushDao;
import com.pcloud.book.push.dao.SelfPushItemDao;
import com.pcloud.book.push.dao.SelfPushUserDao;
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.dto.UserCountAndPushDTO;
import com.pcloud.book.push.entity.PersonalApplets;
import com.pcloud.book.push.entity.SelfPush;
import com.pcloud.book.push.entity.SelfPushItem;
import com.pcloud.book.push.entity.SelfPushUser;
......@@ -55,6 +59,8 @@ import com.pcloud.wechatgroup.group.dto.GroupRobotDTO;
import com.pcloud.wechatgroup.group.dto.GroupUserDTO;
import com.pcloud.wechatgroup.selfrobot.dto.RobotBaseInfoDTO;
import com.sdk.wxgroup.*;
import com.sdk.wxgroup.im.mimc.BusinessConstant;
import com.sdk.wxgroup.im.mimc.dto.SendMomentsDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.ArrayUtils;
......@@ -106,6 +112,8 @@ public class SelfPushBizImpl implements SelfPushBiz {
private ResourceConsr resourceConsr;
@Autowired
private PcloudRobotSet pcloudRobotSet;
@Autowired
private PersonalAppletsDao personalAppletsDao;
private static final String self_push_SCHEDULE_PRE = "self_push_";
......@@ -113,6 +121,12 @@ public class SelfPushBizImpl implements SelfPushBiz {
@Override
public void createSelfPush(Long partyId, SelfPushAddParamDTO addParamDTO) {
Boolean sendNow = addParamDTO.getSendNow();
Integer itemType=0;
Long personalAppletsId=0L;
if(addParamDTO.getReplyParamDTOS()!=null&&addParamDTO.getReplyParamDTOS().get(0)!=null) {
personalAppletsId = addParamDTO.getReplyParamDTOS().get(0).getPersonalAppletsId();
itemType=addParamDTO.getReplyParamDTOS().get(0).getReplyType();
}
//群发
SelfPush selfPush = new SelfPush();
selfPush.setCreateUser(partyId);
......@@ -145,7 +159,7 @@ public class SelfPushBizImpl implements SelfPushBiz {
Long pushId = selfPush.getId();
//群发项
List<SelfPushItem> itemList = addParamDTO.getPushItemList();
setSelfPushItem(pushId, sendNow, partyId, itemList, selfPush.getSendTime());
setSelfPushItem(pushId, sendNow, partyId, itemList, selfPush.getSendTime(),personalAppletsId,itemType);
//群发用户
List<String> userIdList = addParamDTO.getUserIdList();
setSelfPushUser(userIdList, partyId, pushId);
......@@ -304,6 +318,12 @@ public class SelfPushBizImpl implements SelfPushBiz {
List<String> sendUserIds = new ArrayList<>();
sendUserIds.addAll(userIdList);
ThreadPoolUtils.SEND_MESSAGE_THREAD_POOL.execute(() -> {
if(itemList.size()==1&&itemList.get(0).getPersonalAppletsId()!=null){
for (SelfPushItem pushItem : itemList) {
String uuid1= UUID.randomUUID().toString();
sendSelfMsgNew(sendUserIds, altId, pushItem, uuid1, itemList.indexOf(pushItem),itemList.size());
}
}
for (String userId : sendUserIds) {
String uuid= UUID.randomUUID().toString();
for (SelfPushItem pushItem : itemList) {
......@@ -338,10 +358,12 @@ public class SelfPushBizImpl implements SelfPushBiz {
}
/**
* 群发项设置
*/
private void setSelfPushItem(Long pushId, Boolean sendNow, Long partyId, List<SelfPushItem> itemList, Date sendTime) {
private void setSelfPushItem(Long pushId, Boolean sendNow, Long partyId, List<SelfPushItem> itemList, Date sendTime,Long personalAppletsId,Integer itemType) {
Integer status;
if (sendNow) {
status = PushStatusEnum.PUSHING.value;
......@@ -354,6 +376,10 @@ public class SelfPushBizImpl implements SelfPushBiz {
selfPushItem.setPushId(pushId);
selfPushItem.setPushStatus(status);
selfPushItem.setSendTime(sendTime);
selfPushItem.setItemType(itemType);
if(personalAppletsId!=null&&personalAppletsId!=0L) {
selfPushItem.setPersonalAppletsId(personalAppletsId);
}
});
selfPushItemDao.insert(itemList);
}
......@@ -486,8 +512,52 @@ public class SelfPushBizImpl implements SelfPushBiz {
sendFileVO.setCounts(counts);
wechatGroupConsr.sendMessage(JSON.toJSONString(sendFileVO));
}
}
/**
* 小程序群发
* @param userWxIds
* @param altId
* @param selfPushItem
*/
public void sendSelfMsgNew(List<String> userWxIds, String altId, SelfPushItem selfPushItem, String uuid, Integer index, Integer counts) {
if (ListUtils.isEmpty(userWxIds) || StringUtil.isEmpty(altId)){
return;
}
RobotProcessTypeEnum robotProcessType = RobotProcessTypeEnum.SELF_PUSH;
Integer code = SendMessageTypeEnum.SELF.getCode();
Integer itemType = selfPushItem.getItemType();
if (ItemTypeEnum.PERSANALAPPLETS.value.equals(itemType)){
SendMomentsDTO sendMomentsDTO=new SendMomentsDTO();
//发送的小程序
PersonalApplets byId = personalAppletsDao.getById(selfPushItem.getPersonalAppletsId());
if(byId==null){
return;
}
GroupRobotDTO info = wechatGroupConsr.getGroupRobotByRobotId(altId);
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(getIpByRobot(altId));
sendMomentsDTO.setMessageGroupId(uuid);
sendMomentsDTO.setCounts(counts);
sendMomentsDTO.setIndex(index);
sendMomentsDTO.setCode(code);
sendMomentsDTO.setRobotProcessType(robotProcessType);
sendMomentsDTO.setAltId(altId);
sendMomentsDTO.setWxId(userWxIds.get(0));
wechatGroupConsr.sendMessage(JSON.toJSONString(sendMomentsDTO));
}
}
/**
* 获取ip
* @param altId
......@@ -829,4 +899,122 @@ public class SelfPushBizImpl implements SelfPushBiz {
selfPush.setAltTypeName(altTypeName);
return selfPush;
}
@Override
public void createPersonalApplets(PersonalApplets applets) {
personalAppletsDao.insert(applets);
}
@Override
public void deleteAppletsById(Long id) {
personalAppletsDao.deleteById(id);
}
@Override
public void updatePersonalApplets(PersonalApplets applets) {
personalAppletsDao.update(applets);
}
@Override
public PageBeanNew<PersonalApplets> getAllApplets(String appletsId,Integer currentPage,Integer numPerPage) {
Map<String, Object> map = new HashMap<>();
map.put("appletsId", appletsId);
return personalAppletsDao.listPageNew(new PageParam(currentPage, numPerPage),map,"getAllApplets");
}
@Override
public PageBeanNew<PersonalAppletsRecordDTO> getSendAppletsRecords(Integer currentPage, Integer numPerPage, String startTime, String endTime, Integer status, Long partyId) {
Map<String, Object> map = new HashMap<>();
map.put("startTime", startTime);
map.put("endTime", endTime);
map.put("pushStatus", status);
map.put("partyId", partyId);
PageBeanNew<PersonalAppletsRecordDTO> pageBeanNew = selfPushItemDao.listPageNew(new PageParam(currentPage, numPerPage), map, "getSendAppletsRecords");
if (null == pageBeanNew || ListUtils.isEmpty(pageBeanNew.getRecordList())) {
return new PageBeanNew<>(currentPage, numPerPage, 0, new ArrayList<>());
}
for (PersonalAppletsRecordDTO dto:pageBeanNew.getRecordList()) {
String realSendTime="";
if(dto.getPushType()!=null&&dto.getPushType()==1){
realSendTime=DateUtils.formatDate(dto.getStartTime(),"yyyy-MM-dd")+"至"+DateUtils.formatDate(dto.getEndTime(),"yyyy-MM-dd")+";";
realSendTime=realSendTime+"每天;"+dto.getPushSendTime();
dto.setRealSendTime(realSendTime);
}else if(dto.getPushType()!=null&&dto.getPushType()==2){
String weekDays = dto.getWeekDays();
realSendTime=DateUtils.formatDate(dto.getStartTime(),"yyyy-MM-dd")+"至"+DateUtils.formatDate(dto.getEndTime(),"yyyy-MM-dd")+";";
if(weekDays.contains("1")){
weekDays= weekDays.replace("1","周一");
}
if(weekDays.contains("2")){
weekDays= weekDays.replace("2","周二");
}
if(weekDays.contains("3")){
weekDays= weekDays.replace("3","周三");
}
if(weekDays.contains("4")){
weekDays= weekDays.replace("4","周四");
}
if(weekDays.contains("5")){
weekDays= weekDays.replace("5","周五");
}
if(weekDays.contains("6")){
weekDays= weekDays.replace("6","周六");
}
if(weekDays.contains("7")){
weekDays= weekDays.replace("7","周日");
}
realSendTime=realSendTime+weekDays+";"+dto.getPushSendTime();
dto.setRealSendTime(realSendTime);
}else{
dto.setRealSendTime(DateUtils.formatDate(dto.getSendTime(),"yyyy-MM-dd HH:mm:ss"));
}
}
List<String> wxIds = pageBeanNew.getRecordList().stream().filter(s -> !StringUtil.isEmpty(s.getAltId())).map(PersonalAppletsRecordDTO::getAltId).distinct().collect(Collectors.toList());
Map<String, GroupUserDTO> robotMap = new HashMap<>();
Map<String, RobotClassifyDTO> robotClassifyDTOMap =new HashMap<>();
if (!ListUtils.isEmpty(wxIds)){
robotMap = wechatGroupConsr.mapRobotInfoByIdList(wxIds);
robotClassifyDTOMap=pcloudRobotBiz.mapByIds4Classify(wxIds);
}
List<Long> pcloudPartyIds = pageBeanNew.getRecordList().stream().filter(s->!StringUtil.isEmpty(s.getAltId())).map(PersonalAppletsRecordDTO::getCreateUser).distinct().collect(Collectors.toList());
Map<Long, UserLogin> loginMap = new HashMap<>();
if (!ListUtils.isEmpty(pcloudPartyIds)){
for (Long id : pcloudPartyIds){
if (id == 0L){
continue;
}
UserLogin userLogin = partyConsr.getUserLoginInfoByPartyId(id,SystemCode.pcloud.code,"0");
loginMap.put(id,userLogin);
}
}
for (PersonalAppletsRecordDTO dto : pageBeanNew.getRecordList()) {
if (!MapUtils.isEmpty(robotMap) && !StringUtil.isEmpty(dto.getAltId()) && robotMap.containsKey(dto.getAltId())) {
GroupUserDTO userDTO = robotMap.get(dto.getAltId());
dto.setRobotName(userDTO.getNickName());
}
if (!MapUtils.isEmpty(robotClassifyDTOMap) && !StringUtil.isEmpty(dto.getAltId()) && robotClassifyDTOMap.containsKey(dto.getAltId())) {
RobotClassifyDTO robotClassifyDTO = robotClassifyDTOMap.get(dto.getAltId());
dto.setClassifyId(null!=robotClassifyDTO?robotClassifyDTO.getClassifyId():null);
dto.setClassifyName(null!=robotClassifyDTO?robotClassifyDTO.getClassifyName():null);
dto.setUniqueNumber(null!=robotClassifyDTO?robotClassifyDTO.getUniqueNumber():null);
}
if (!StringUtil.isEmpty(dto.getAltId())){//平台端登录账号
if (dto.getCreateUser() == 0L){
dto.setUserName("pcloud");
}else if (!MapUtils.isEmpty(loginMap) && loginMap.containsKey(dto.getCreateUser())){
UserLogin userLogin = loginMap.get(dto.getCreateUser());
dto.setUserName(null == userLogin? "":userLogin.getUserName());
}
}
}
return pageBeanNew;
}
@Override
public PersonalApplets getAppletsById(Long id) {
return personalAppletsDao.getById(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