java后台接受事件推送_七、⼩程序Java后台完成消
息推送
⼀、必须 需要前端传⼊的数据:
template_id
form_id
openid(或者userid:通过userid获取已经存⼊数据库中的⽤户openid)
我这⾥根据⾃⼰的⼀些业务创建了两个⼊参实体:
1、
/**
* 说明:
*
* @author panhh
* @date 2019/7/18 10:32
*/
@Data
public class MsgPushRequest {
/**
* ⽤户id :⽤户查询活⽤的openid
*/
@ApiModelProperty(value = "⽤户id")
@NotEmpty(message = "userId不能为空")
private Long userId;
/
**
* form_id 前端
*/
@ApiModelProperty(value = "必须的请求参数")
@NotEmpty(message = "formId不能为空")
private String formId;
/**
* 模板id 前台
*/
@ApiModelProperty(value = "template_id")
@NotEmpty(message = "templateId不能为空")
private String templateId;
有趣的java小程序/**
* 判断要推送的消息是推送给⽤户还是给商户
* 1:对⽤户 ;2:对商家
*/
@ApiModelProperty(value = "推送的消息⾯对商户还是⽤户") @NotNull(message = "mark不能为空")
private Integer mark;
}
2、
/**
* 说明:
*
* @author panhh
* @date 2019/7/18 15:23
*/
@Data
public class OrderMsgRequest implements Serializable { /**
* 订单编号
*/
@ApiModelProperty(value = "订单编号")
@NotEmpty(message = "订单编号不能为空")
private String orderId;
/
**
* 取餐时间
*/
@ApiModelProperty(value = "取餐时间")
@NotEmpty(message = "取餐时间不能为空")
private String eatTime;
/**
* 就餐类型
*/
@ApiModelProperty(value = "就餐类型")
@NotEmpty(message = "就餐类型不能为空")
private String eatStatus;
/**
* 下单时间
*/
@ApiModelProperty(value = "下单时间")
@NotEmpty(message = "下单时间不能为空")
private String orderCreateTime;
/**
* 取餐码
*/
@ApiModelProperty(value = "取餐码")
@NotEmpty(message = "取餐码不能为空")
private String diningCode;
/**
* 温馨提⽰
*/
@ApiModelProperty(value = "温馨提⽰")
@NotEmpty(message = "'温馨提⽰'不能为空")
private String tips;
/**
* 商户名称,给⽤户推送消息需要,商户则不需要
* 1:对⽤户 ;2:对商家
*/
@ApiModelProperty(value = "商户名称,给⽤户推送消息需要,商户则不需要") private String shopName ;
}
⼆、定义接⼝
/**
* 说明:消息推送相关接⼝
*
* @author panhh
* @date 2019/7/18 10:27
*/
@RestController
@Api(value = "message",description = "消息推送相关接⼝")
@RequestMapping("/msg/")
public class MsgController {
@Autowired
private MsgService msgService;
/**
* 向⽤户推送消息
* @param msgPushRequest
* @return
*/
@PostMapping("/pushMessage")
public ResultVo msgPush2User(MsgPushRequest msgPushRequest, OrderMsgRequest orderMsgRequest){ System.out.println("msgPushRequest:"+msgPushRequest);
System.out.println("orderMsgRequest:"+orderMsgRequest);
String returnBody = msgService.msgPush2User(msgPushRequest, orderMsgRequest);
JSONObject bodyJson = JSONObject.parseObject(returnBody);
Set keySet = bodyJson.keySet();
for (String key : keySet) {
if ("errcode".equals(key)){
(ExceptionMsg.FAILED,returnBody);
}
}
return Result.success(returnBody);
}
}
三、业务层:
/**
* 说明:
*
* @author panhh
* @date 2019/7/18 10:29
*/
@Service
public class MsgService {
@Autowired
private RestTemplate restTemplate;
@Autowired
private IdWorkerUtils idWorkerUtils;
@Autowired
private MsgMapper msgMapper;
@Value("${message.appid}")
private String appid;
@Value("${message.appSecret}")
private String appSecret;
private int unique1 = 7;
private String accessToken;
/**
* 向⽤户推送消息
* @param msgPushRequest
*/
public String msgPush2User(MsgPushRequest msgPushRequest, OrderMsgRequest orderMsgRequest) { AccessTokenEntity accessTokenEntity = new AccessTokenEntity();
// 1、通过⽤户id查询⽤户的openid
String openid = "testOpenId";
//2、从数据库中获取access_token,并判断是否失效,失效的话重新获取
//2.1、从数据库中查询并判断
accessTokenEntity.setUnique1(unique1);
accessTokenEntity = AccessToken(accessTokenEntity);
System.out.println("accessTokenEntity--->"+accessTokenEntity);
if (accessTokenEntity == null){
//为null-->获取后添加
System.out.println("为null~~~~~~");
String accessTokenJson = getAccessToken();
//解析
JSONObject jsonObject = JSONObject.parseObject(accessTokenJson);
accessToken = (String) ("access_token");
Integer expiresIn = (Integer) ("expires_in");

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。