diff --git a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/annotation/FarmMsgAspect.java b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/annotation/FarmMsgAspect.java index f17d9eb9..e12cff0a 100644 --- a/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/annotation/FarmMsgAspect.java +++ b/zsw-farm/zsw-farm-impl/src/main/java/cn/iocoder/yudao/module/farm/annotation/FarmMsgAspect.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.farm.annotation; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.module.farm.dal.dataobject.discuss.DiscussDO; @@ -19,20 +20,25 @@ import cn.iocoder.yudao.module.system.dal.dataobject.CpUser.CpUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.dal.mysql.CpUser.CpUserMapper; import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper; +import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.cp.api.WxCpMessageService; import me.chanjar.weixin.cp.api.WxCpService; +import me.chanjar.weixin.cp.bean.message.WxCpAppChatMessage; import me.chanjar.weixin.cp.bean.message.WxCpMessage; import me.chanjar.weixin.cp.bean.message.WxCpMessageSendResult; +import me.chanjar.weixin.cp.bean.messagebuilder.MiniProgramNoticeMsgBuilder; +import me.chanjar.weixin.cp.tp.message.WxCpTpMessageHandler; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.time.LocalDateTime; +import java.util.*; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; @@ -61,6 +67,9 @@ public class FarmMsgAspect { @Resource private WxCpService wxCpService; + @Value("${wxma.app_id}") + private String appid; + /** * 定义切入点 @PointCut * 使用了@FarmMsg注解的地方切入 @@ -111,8 +120,10 @@ public class FarmMsgAspect { return object; } if (!farmMsgDTO.getNoSendMsg()){ - //发送信息 - this.sendCpMsg(description.toString(), toUserStr); + //企业微信内部发送信息 + //this.sendCpMsg(description.toString(), toUserStr); + //企业微信小程序通知消息 + this.sendMiniMsg(user, farmMsgDTO, toUserStr); } } @@ -155,6 +166,34 @@ public class FarmMsgAspect { log.info("企业微信消息发送结果:{}",result); } + //发送小程序通知消息 + public void sendMiniMsg(CpUserDO createUser, FarmMsgDTO farmMsgDTO, String toUserStr) throws WxErrorException { + // 发小程序 + WxCpMessageService wxCpMessageService = wxCpService.getMessageService(); + // 构造一个企业推送消息 + WxCpMessage message = new WxCpMessage(); + + //接受者 + message.setToUser(toUserStr); + //消息类型 + message.setMsgType("miniprogram_notice"); + + message.setAppId(appid); + message.setTitle(farmMsgDTO.getType().getDesc() + farmMsgDTO.getOperation().getDesc() + "通知"); + message.setDescription(LocalDateTimeUtil.formatNormal(LocalDateTime.now())); + + Map map2 = new HashMap<>(); + map2.put("发起人", createUser.getName()); + map2.put("内容", ObjectUtil.isEmpty(farmMsgDTO.getMsg()) ? farmMsgDTO.getTitle() : farmMsgDTO.getMsg()); + message.setContentItems(map2); + + + log.info("企业微信小程序通知消息发送内容:{}", message); + WxCpMessageSendResult result = wxCpMessageService.send(message); + log.info("企业微信小程序通知消息发送结果:{}",result); + } + + /** * @Description 获取需要接受信息的成员 * @param id 可能是 projectId taskId 或 discussId