公众号开发
This commit is contained in:
parent
2fb4395eb7
commit
ef261ff833
7
pom.xml
7
pom.xml
@ -118,6 +118,13 @@
|
|||||||
<version>${poi.version}</version>
|
<version>${poi.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- xstream -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.thoughtworks.xstream</groupId>
|
||||||
|
<artifactId>xstream</artifactId>
|
||||||
|
<version>1.4.11.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!--velocity代码生成使用模板 -->
|
<!--velocity代码生成使用模板 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.velocity</groupId>
|
<groupId>org.apache.velocity</groupId>
|
||||||
|
@ -1,12 +1,15 @@
|
|||||||
package com.stdiet.web.controller.custom;
|
package com.stdiet.web.controller.custom;
|
||||||
|
|
||||||
import com.stdiet.common.core.controller.BaseController;
|
import com.stdiet.common.core.controller.BaseController;
|
||||||
|
import com.stdiet.common.core.domain.AjaxResult;
|
||||||
|
import com.stdiet.custom.domain.WxXmlData;
|
||||||
import com.stdiet.custom.service.ISysWxService;
|
import com.stdiet.custom.service.ISysWxService;
|
||||||
|
import com.thoughtworks.xstream.XStream;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import javax.xml.bind.annotation.XmlMimeType;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/wx")
|
@RequestMapping("/wx")
|
||||||
@ -20,4 +23,9 @@ public class CusWxController extends BaseController {
|
|||||||
return sysWxService.wxCheckAuth(signature, timestamp, nonce, echostr);
|
return sysWxService.wxCheckAuth(signature, timestamp, nonce, echostr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/checkSign")
|
||||||
|
public String autoResonse(HttpServletRequest request){
|
||||||
|
return sysWxService.autoResponse(request);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -45,6 +45,28 @@
|
|||||||
<artifactId>itext-asian</artifactId>
|
<artifactId>itext-asian</artifactId>
|
||||||
<version>5.2.0</version>
|
<version>5.2.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.thoughtworks.xstream</groupId>
|
||||||
|
<artifactId>xstream</artifactId>
|
||||||
|
<version>1.4.11.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.java.dev.jna</groupId>
|
||||||
|
<artifactId>jna-platform</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.http-client</groupId>
|
||||||
|
<artifactId>google-http-client</artifactId>
|
||||||
|
<version>1.21.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
@ -5,6 +5,7 @@ import java.util.Date;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import lombok.Data;
|
||||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||||
import com.stdiet.common.annotation.Excel;
|
import com.stdiet.common.annotation.Excel;
|
||||||
@ -16,6 +17,7 @@ import com.stdiet.common.core.domain.BaseEntity;
|
|||||||
* @author wonder
|
* @author wonder
|
||||||
* @date 2020-09-24
|
* @date 2020-09-24
|
||||||
*/
|
*/
|
||||||
|
@Data
|
||||||
public class SysOrder extends BaseEntity {
|
public class SysOrder extends BaseEntity {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@ -227,386 +229,9 @@ public class SysOrder extends BaseEntity {
|
|||||||
private List<SysOrderPause> orderPauseList;
|
private List<SysOrderPause> orderPauseList;
|
||||||
private Integer amountFlag;
|
private Integer amountFlag;
|
||||||
|
|
||||||
public Long getCusId() {
|
|
||||||
return cusId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCusId(Long cusId) {
|
|
||||||
this.cusId = cusId;
|
|
||||||
}
|
|
||||||
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
public Date getStartTime() {
|
public Date getStartTime() {
|
||||||
return startTime;
|
return startTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BigDecimal getWeight() {
|
|
||||||
return weight;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getPauseTime() {
|
|
||||||
return pauseTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStartTime(Date startTime) {
|
|
||||||
this.startTime = startTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPauseTime(Date pauseTime) {
|
|
||||||
this.pauseTime = pauseTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(String status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void setWeight(BigDecimal weight) {
|
|
||||||
this.weight = weight;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getServeTime() {
|
|
||||||
return serveTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setServeTimeId(Long serveTimeId) {
|
|
||||||
this.serveTimeId = serveTimeId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getServeTimeId() {
|
|
||||||
return serveTimeId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setServeTime(String serveTime) {
|
|
||||||
this.serveTime = serveTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOperatorAssis(String operatorAssis) {
|
|
||||||
this.operatorAssis = operatorAssis;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOperatorAssisId(Long operatorAssisId) {
|
|
||||||
this.operatorAssisId = operatorAssisId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getOperatorAssisId() {
|
|
||||||
return operatorAssisId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOperatorAssis() {
|
|
||||||
return operatorAssis;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getReviewStatus() {
|
|
||||||
return reviewStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setReviewStatus(String reviewStatus) {
|
|
||||||
this.reviewStatus = reviewStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOrderId(Long orderId) {
|
|
||||||
this.orderId = orderId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getOrderId() {
|
|
||||||
return orderId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCustomer(String customer) {
|
|
||||||
this.customer = customer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCustomer() {
|
|
||||||
return customer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPhone(String phone) {
|
|
||||||
this.phone = phone;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPhone() {
|
|
||||||
return phone;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAmount(BigDecimal amount) {
|
|
||||||
this.amount = amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getAmount() {
|
|
||||||
return amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPayTypeId(Long payTypeId) {
|
|
||||||
this.payTypeId = payTypeId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getPayTypeId() {
|
|
||||||
return payTypeId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPayType(String payType) {
|
|
||||||
this.payType = payType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPayType() {
|
|
||||||
return payType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPreSaleId(Long preSaleId) {
|
|
||||||
this.preSaleId = preSaleId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getPreSaleId() {
|
|
||||||
return preSaleId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPreSale(String preSale) {
|
|
||||||
this.preSale = preSale;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPreSale() {
|
|
||||||
return preSale;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAfterSaleId(Long afterSaleId) {
|
|
||||||
this.afterSaleId = afterSaleId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getAfterSaleId() {
|
|
||||||
return afterSaleId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAfterSale(String afterSale) {
|
|
||||||
this.afterSale = afterSale;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAfterSale() {
|
|
||||||
return afterSale;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNutritionistId(Long nutritionistId) {
|
|
||||||
this.nutritionistId = nutritionistId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getNutritionistId() {
|
|
||||||
return nutritionistId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNutritionist(String nutritionist) {
|
|
||||||
this.nutritionist = nutritionist;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getNutritionist() {
|
|
||||||
return nutritionist;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNutriAssisId(Long nutriAssisId) {
|
|
||||||
this.nutriAssisId = nutriAssisId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getNutriAssisId() {
|
|
||||||
return nutriAssisId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNutriAssis(String nutriAssis) {
|
|
||||||
this.nutriAssis = nutriAssis;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getNutriAssis() {
|
|
||||||
return nutriAssis;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccountId(Long accountId) {
|
|
||||||
this.accountId = accountId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getAccountId() {
|
|
||||||
return accountId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccount(String account) {
|
|
||||||
this.account = account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAccount() {
|
|
||||||
return account;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPlannerId(Long plannerId) {
|
|
||||||
this.plannerId = plannerId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getPlannerId() {
|
|
||||||
return plannerId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPlanner(String planner) {
|
|
||||||
this.planner = planner;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPlanner() {
|
|
||||||
return planner;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPlannerAssisId(Long plannerAssisId) {
|
|
||||||
this.plannerAssisId = plannerAssisId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getPlannerAssisId() {
|
|
||||||
return plannerAssisId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPlannerAssis(String plannerAssis) {
|
|
||||||
this.plannerAssis = plannerAssis;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPlannerAssis() {
|
|
||||||
return plannerAssis;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOperatorId(Long operatorId) {
|
|
||||||
this.operatorId = operatorId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getOperatorId() {
|
|
||||||
return operatorId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOperator(String operator) {
|
|
||||||
this.operator = operator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOperator() {
|
|
||||||
return operator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecommender(String recommender) {
|
|
||||||
this.recommender = recommender;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRecommender() {
|
|
||||||
return recommender;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOrderTime(Date orderTime) {
|
|
||||||
this.orderTime = orderTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getOrderTime() {
|
|
||||||
return orderTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getGiveServeDay() {
|
|
||||||
return giveServeDay;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGiveServeDay(Integer giveServeDay) {
|
|
||||||
this.giveServeDay = giveServeDay;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<SysOrderPause> getOrderPauseList() {
|
|
||||||
return orderPauseList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOrderPauseList(List<SysOrderPause> orderPauseList) {
|
|
||||||
this.orderPauseList = orderPauseList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getConditioningProjectId() {
|
|
||||||
return conditioningProjectId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setConditioningProjectId(Integer conditioningProjectId) {
|
|
||||||
this.conditioningProjectId = conditioningProjectId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getServerEndTime() {
|
|
||||||
return serverEndTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setServerEndTime(Date serverEndTime) {
|
|
||||||
this.serverEndTime = serverEndTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getBecomeFanTime() {
|
|
||||||
return becomeFanTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBecomeFanTime(Date becomeFanTime) {
|
|
||||||
this.becomeFanTime = becomeFanTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getServerDay() {
|
|
||||||
return serverDay;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setServerDay(Integer serverDay) {
|
|
||||||
this.serverDay = serverDay;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
|
|
||||||
.append("orderId", getOrderId())
|
|
||||||
.append("customer", getCustomer())
|
|
||||||
.append("phone", getPhone())
|
|
||||||
.append("amount", getAmount())
|
|
||||||
.append("payTypeId", getPayTypeId())
|
|
||||||
.append("payType", getPayType())
|
|
||||||
.append("preSaleId", getPreSaleId())
|
|
||||||
.append("createBy", getCreateBy())
|
|
||||||
.append("preSale", getPreSale())
|
|
||||||
.append("createTime", getCreateTime())
|
|
||||||
.append("afterSaleId", getAfterSaleId())
|
|
||||||
.append("updateBy", getUpdateBy())
|
|
||||||
.append("afterSale", getAfterSale())
|
|
||||||
.append("updateTime", getUpdateTime())
|
|
||||||
.append("nutritionistId", getNutritionistId())
|
|
||||||
.append("remark", getRemark())
|
|
||||||
.append("nutritionist", getNutritionist())
|
|
||||||
.append("nutriAssisId", getNutriAssisId())
|
|
||||||
.append("nutriAssis", getNutriAssis())
|
|
||||||
.append("accountId", getAccountId())
|
|
||||||
.append("account", getAccount())
|
|
||||||
.append("plannerId", getPlannerId())
|
|
||||||
.append("planner", getPlanner())
|
|
||||||
.append("plannerAssisId", getPlannerAssisId())
|
|
||||||
.append("plannerAssis", getPlannerAssis())
|
|
||||||
.append("operatorId", getOperatorId())
|
|
||||||
.append("operator", getOperator())
|
|
||||||
.append("operatorAssisId", getOperatorAssisId())
|
|
||||||
.append("operatorAssis", getOperatorAssis())
|
|
||||||
.append("recommender", getRecommender())
|
|
||||||
.append("orderTime", getOrderTime())
|
|
||||||
.append("serveTimeId", getServeTimeId())
|
|
||||||
.append("serveTime", getServeTime())
|
|
||||||
.append("reviewStatus", getReviewStatus())
|
|
||||||
.append("status", getStatus())
|
|
||||||
.append("startTime", getStartTime())
|
|
||||||
.append("pauseTime", getPauseTime())
|
|
||||||
.append("weight", getWeight())
|
|
||||||
.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getConditioningProject() {
|
|
||||||
return conditioningProject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setConditioningProject(String conditioningProject) {
|
|
||||||
this.conditioningProject = conditioningProject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getAmountFlag() {
|
|
||||||
return amountFlag;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAmountFlag(Integer amountFlag) {
|
|
||||||
this.amountFlag = amountFlag;
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
package com.stdiet.custom.domain;
|
||||||
|
|
||||||
|
|
||||||
|
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@XStreamAlias("xml")
|
||||||
|
public class WxXmlData implements Serializable {
|
||||||
|
@XStreamAlias("ToUserName")
|
||||||
|
private String toUserName;
|
||||||
|
@XStreamAlias("FromUserName")
|
||||||
|
private String fromUserName;
|
||||||
|
@XStreamAlias("CreateTime")
|
||||||
|
private Long createTime;
|
||||||
|
@XStreamAlias("MsgType")
|
||||||
|
private String msgType;
|
||||||
|
@XStreamAlias("Content")
|
||||||
|
private String content;
|
||||||
|
@XStreamAlias("MsgId")
|
||||||
|
private String msgId;
|
||||||
|
//
|
||||||
|
@XStreamAlias("Title")
|
||||||
|
private String title;
|
||||||
|
@XStreamAlias("Description")
|
||||||
|
private String description;
|
||||||
|
@XStreamAlias("Url")
|
||||||
|
private String url;
|
||||||
|
/**
|
||||||
|
* 订阅或者取消订阅的事件
|
||||||
|
*/
|
||||||
|
@XStreamAlias("Event")
|
||||||
|
private String event;
|
||||||
|
@XStreamAlias("EventKey")
|
||||||
|
private String eventkey;
|
||||||
|
|
||||||
|
}
|
@ -1,5 +1,9 @@
|
|||||||
package com.stdiet.custom.service;
|
package com.stdiet.custom.service;
|
||||||
|
|
||||||
|
import com.stdiet.custom.domain.WxXmlData;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
public interface ISysWxService {
|
public interface ISysWxService {
|
||||||
/**
|
/**
|
||||||
* 微信token验证
|
* 微信token验证
|
||||||
@ -10,4 +14,6 @@ public interface ISysWxService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public String wxCheckAuth(String signature, String timestamp, String nonce, String echostr);
|
public String wxCheckAuth(String signature, String timestamp, String nonce, String echostr);
|
||||||
|
|
||||||
|
public String autoResponse(HttpServletRequest request);
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,17 @@
|
|||||||
package com.stdiet.custom.service.impl;
|
package com.stdiet.custom.service.impl;
|
||||||
|
|
||||||
|
import com.stdiet.common.utils.StringUtils;
|
||||||
|
import com.stdiet.custom.domain.WxXmlData;
|
||||||
import com.stdiet.custom.service.ISysWxService;
|
import com.stdiet.custom.service.ISysWxService;
|
||||||
|
import com.stdiet.custom.utils.WechatMessageUtil;
|
||||||
import com.stdiet.custom.utils.WxTokenUtils;
|
import com.stdiet.custom.utils.WxTokenUtils;
|
||||||
|
import com.thoughtworks.xstream.XStream;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Transactional
|
@Transactional
|
||||||
public class SysWxServiceImpl implements ISysWxService {
|
public class SysWxServiceImpl implements ISysWxService {
|
||||||
@ -13,4 +20,39 @@ public class SysWxServiceImpl implements ISysWxService {
|
|||||||
public String wxCheckAuth(String signature, String timestamp, String nonce, String echostr) {
|
public String wxCheckAuth(String signature, String timestamp, String nonce, String echostr) {
|
||||||
return WxTokenUtils.checkSignature(signature, timestamp, nonce) ? echostr : null;
|
return WxTokenUtils.checkSignature(signature, timestamp, nonce) ? echostr : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String autoResponse(HttpServletRequest request) {
|
||||||
|
try {
|
||||||
|
WxXmlData wxData = WxTokenUtils.resolveXmlData(request.getInputStream());
|
||||||
|
|
||||||
|
WxXmlData resultXmlData = new WxXmlData();
|
||||||
|
resultXmlData.setToUserName(wxData.getFromUserName()); //收到的消息是谁发来的再发给谁
|
||||||
|
resultXmlData.setFromUserName(wxData.getToUserName()); //
|
||||||
|
if (!StringUtils.isEmpty(wxData.getEvent())) {
|
||||||
|
if (wxData.getEvent().equals(WechatMessageUtil.MESSAGE_EVENT_SUBSCRIBE)) {
|
||||||
|
resultXmlData.setMsgType("text");
|
||||||
|
resultXmlData.setCreateTime(System.currentTimeMillis());
|
||||||
|
resultXmlData.setContent("欢迎来到胜唐体控,这是一条测试用的关注信息");
|
||||||
|
} else if (wxData.getEvent().equals(WechatMessageUtil.MESSAGE_EVENT_UNSUBSCRIBE)) {
|
||||||
|
|
||||||
|
}
|
||||||
|
} else if (wxData.getContent().equalsIgnoreCase("vip")) {
|
||||||
|
resultXmlData.setMsgType("text");
|
||||||
|
resultXmlData.setCreateTime(System.currentTimeMillis());
|
||||||
|
resultXmlData.setContent("<a href=\"https://my.openwrite.cn/code/generate?blogId=18931-1576559666626-322\">点击该链接,获取博客解锁验证码</a>");
|
||||||
|
} else {
|
||||||
|
resultXmlData.setMsgType("text");
|
||||||
|
resultXmlData.setCreateTime(System.currentTimeMillis());
|
||||||
|
resultXmlData.setContent("公众号正在开发中。后期请多多关注!");
|
||||||
|
}
|
||||||
|
XStream xstream = new XStream();
|
||||||
|
xstream.processAnnotations(WxXmlData.class);
|
||||||
|
xstream.setClassLoader(WxXmlData.class.getClassLoader());
|
||||||
|
return xstream.toXML(resultXmlData); //XStream的方法,直接将对象转换成 xml数据
|
||||||
|
} catch (IOException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,63 @@
|
|||||||
|
package com.stdiet.custom.utils;
|
||||||
|
|
||||||
|
public class WechatMessageUtil {
|
||||||
|
// 各种消息类型,除了扫带二维码事件
|
||||||
|
/**
|
||||||
|
* 文本消息
|
||||||
|
*/
|
||||||
|
public static final String MESSAGE_TEXT = "text";
|
||||||
|
/**
|
||||||
|
* 图片消息
|
||||||
|
*/
|
||||||
|
public static final String MESSAtGE_IMAGE = "image";
|
||||||
|
/**
|
||||||
|
* 图文消息
|
||||||
|
*/
|
||||||
|
public static final String MESSAGE_NEWS = "news";
|
||||||
|
/**
|
||||||
|
* 语音消息
|
||||||
|
*/
|
||||||
|
public static final String MESSAGE_VOICE = "voice";
|
||||||
|
/**
|
||||||
|
* 视频消息
|
||||||
|
*/
|
||||||
|
public static final String MESSAGE_VIDEO = "video";
|
||||||
|
/**
|
||||||
|
* 小视频消息
|
||||||
|
*/
|
||||||
|
public static final String MESSAGE_SHORTVIDEO = "shortvideo";
|
||||||
|
/**
|
||||||
|
* 地理位置消息
|
||||||
|
*/
|
||||||
|
public static final String MESSAGE_LOCATION = "location";
|
||||||
|
/**
|
||||||
|
* 链接消息
|
||||||
|
*/
|
||||||
|
public static final String MESSAGE_LINK = "link";
|
||||||
|
/**
|
||||||
|
* 事件推送消息
|
||||||
|
*/
|
||||||
|
public static final String MESSAGE_EVENT = "event";
|
||||||
|
/**
|
||||||
|
* 事件推送消息中,事件类型,subscribe(订阅)
|
||||||
|
*/
|
||||||
|
public static final String MESSAGE_EVENT_SUBSCRIBE = "subscribe";
|
||||||
|
/**
|
||||||
|
* 事件推送消息中,事件类型,unsubscribe(取消订阅)
|
||||||
|
*/
|
||||||
|
public static final String MESSAGE_EVENT_UNSUBSCRIBE = "unsubscribe";
|
||||||
|
/**
|
||||||
|
* 事件推送消息中,上报地理位置事件
|
||||||
|
*/
|
||||||
|
public static final String MESSAGE_EVENT_LOCATION_UP = "LOCATION";
|
||||||
|
/**
|
||||||
|
* 事件推送消息中,自定义菜单事件,点击菜单拉取消息时的事件推送
|
||||||
|
*/
|
||||||
|
public static final String MESSAGE_EVENT_CLICK = "CLICK";
|
||||||
|
/**
|
||||||
|
* 事件推送消息中,自定义菜单事件,点击菜单跳转链接时的事件推送
|
||||||
|
*/
|
||||||
|
public static final String MESSAGE_EVENT_VIEW = "VIEW";
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,5 +1,11 @@
|
|||||||
package com.stdiet.custom.utils;
|
package com.stdiet.custom.utils;
|
||||||
|
|
||||||
|
import com.stdiet.custom.domain.WxXmlData;
|
||||||
|
import com.thoughtworks.xstream.XStream;
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
|
||||||
@ -81,4 +87,21 @@ public class WxTokenUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static WxXmlData resolveXmlData(InputStream in) {
|
||||||
|
WxXmlData wxXmlData = null;
|
||||||
|
try {
|
||||||
|
String xmlData = IOUtils.toString(in, StandardCharsets.UTF_8.name());
|
||||||
|
XStream xstream = new XStream();
|
||||||
|
//这个必须要加 不然无法转换成WxXmlData对象
|
||||||
|
xstream.setClassLoader(WxXmlData.class.getClassLoader());
|
||||||
|
xstream.processAnnotations(WxXmlData.class);
|
||||||
|
xstream.alias("xml", WxXmlData.class);
|
||||||
|
wxXmlData = (WxXmlData) xstream.fromXML(xmlData);
|
||||||
|
// log.info("【wxXmlData: {}】 ", wxXmlData);
|
||||||
|
} catch (Exception e) {
|
||||||
|
// log.error("【error】{}", e.getMessage());
|
||||||
|
}
|
||||||
|
return wxXmlData;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user