首先导包:
<!--微信模版消息推送三方sdk-->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
封装一个Vo对象
@Data
@AllArgsConstructor
@NoArgsConstructor
public class WeChatPushVo {
private String openId;
private String courseId;
private String first;
private String keyword1;
private String keyword2;
private String remark;
}
封装一个配置类:
@ConfigurationProperties(prefix = "wechat.test")
@Component
public class WeChatPushConfig {
// 可在类中设置默认值,具体可以通过application.properties修改内容
private String first = "ppone在测试捏";
private String keyword1 = "课程名称\n";
private String keyword2 = "上课地点\n";
private String remark = "上课时间\n";
private String appId = "appid";
private String secret = "secret";
private String templateId = "templateId ";
}
wechat.test.first=ppone测试代码
wechat.test.keyword1=pro课程名称\n
wechat.test.keyword2=pro上课地点\n
wechat.test.remark=pro上课时间\n
wechat.test.appId=appId
wechat.test.secret=secret
wechat.test.templateId=templateId
封装一个Pusher类:
@Component
public class Pusher {
private String appId;
private String secret;
private String first;
private String keyword1;
private String keyword2;
private String remark;
private String templateId;
public Pusher(String appId, String secret,String templateId) {
this.appId = appId;
this.secret = secret;
this.templateId = templateId;
}
public Pusher() {
}
public void push(WeChatPushVo weChatPushVo, WeChatPushConfig config){
//1,配置
WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage();
wxStorage.setAppId(appId);
wxStorage.setSecret(secret);
WxMpService wxMpService = new WxMpServiceImpl();
wxMpService.setWxMpConfigStorage(wxStorage);
//2,推送消息
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
.toUser(weChatPushVo.getOpenId())
.templateId(templateId)
.build();
//3,如果是正式版发送模版消息,这里需要配置你的信息
templateMessage.addData(new WxMpTemplateData("first",config.getFirst()+weChatPushVo.getFirst(),"#00FFFF"));
templateMessage.addData(new WxMpTemplateData("keyword1",config.getKeyword1()+weChatPushVo.getKeyword1(),"#00FFFF"));
templateMessage.addData(new WxMpTemplateData("keyword2",config.getKeyword2()+weChatPushVo.getKeyword2(),"#00FFFF"));
templateMessage.addData(new WxMpTemplateData("remark",config.getRemark()+weChatPushVo.getRemark(),"#001EFF"));
try {
System.out.println(templateMessage.toJson());
System.out.println(wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage));
} catch (Exception e) {
System.out.println("推送失败:" + e.getMessage());
e.printStackTrace();
}
}
}
service层:
@Service
public class WeChatServiceImpl implements WeChatService {
@Autowired
private UserService userService;
@Autowired
private CourseService courseService;
@Autowired
private WeChatPushConfig weChatPushConfig;
@Override
public R push(WeChatPushVo weChatPushVo){
Pusher pusher = new Pusher(weChatPushConfig.getAppId(),weChatPushConfig .getSecret(),weChatPushConfig.getTemplateId());
User user = userService.getById(1);
weChatPushVo.setOpenId(user.getOpenId());
Course course = courseService.getById(111);
weChatPushVo.setFirst("ppOneJava推送");
weChatPushVo.setKeyword1(course.getName());
weChatPushVo.setKeyword2(course.getClassroom());
weChatPushVo.setRemark(course.getTime());
try {
pusher.push(weChatPushVo,weChatPushConfig);
return R.ok();
}catch(Exception e){
System.out.println("推送失败");
return R.error().message("推送失败");
}
}