Browse Source

update tt

master
xhxu 3 years ago
parent
commit
920730b767
6 changed files with 124 additions and 58 deletions
  1. +4
    -4
      mallinkService/src/main/java/com/iformall/service/toutiao/api/TtOpenMaService.java
  2. +4
    -0
      mallinkService/src/main/java/com/iformall/service/toutiao/api/bean/TtOpenNotifyMsg.java
  3. +2
    -0
      mallinkService/src/main/java/com/iformall/service/toutiao/api/bean/TtOpenNotifyMsgGsonAdapter.java
  4. +13
    -8
      mallinkService/src/main/java/com/iformall/service/toutiao/api/impl/TtOpenMaServiceImpl.java
  5. +98
    -36
      mlToutiaoOpen/src/main/java/com/iformall/controller/TtCalllbackController.java
  6. +3
    -10
      mlToutiaoOpen/src/main/java/com/iformall/controller/WxWeappInfoController.java

+ 4
- 4
mallinkService/src/main/java/com/iformall/service/toutiao/api/TtOpenMaService.java View File

@@ -129,7 +129,7 @@ public interface TtOpenMaService extends TtMaService {
/**
* 5. 将第三方提交的代码包提交审核(仅供第三方开发者代小程序调用)
*/
String API_SUBMIT_AUDIT = "https://api.weixin.qq.com/wxa/submit_audit";
String API_SUBMIT_AUDIT = "https://open.microapp.bytedance.com/openapi/v2/microapp/package/audit";

/**
* 7. 查询某个指定版本的审核状态(仅供第三方代小程序调用)
@@ -144,7 +144,7 @@ public interface TtOpenMaService extends TtMaService {
/**
* 9. 发布已通过审核的小程序(仅供第三方代小程序调用)
*/
String API_RELEASE = "https://api.weixin.qq.com/wxa/release";
String API_RELEASE = "https://open.microapp.bytedance.com/openapi/v1/microapp/package/release";

/**
* 10. 修改小程序线上代码的可见状态(仅供第三方代小程序调用)
@@ -371,7 +371,7 @@ public interface TtOpenMaService extends TtMaService {
/**
* 将第三方提交的代码包提交审核(仅供第三方开发者代小程序调用)
*/
WxOpenMaSubmitAuditResult submitAudit(WxOpenMaSubmitAuditMessage submitAuditMessage) throws WxErrorException;
TtOpenResult submitAudit() throws WxErrorException;

/**
* 查询某个指定版本的审核状态(仅供第三方代小程序调用)
@@ -386,7 +386,7 @@ public interface TtOpenMaService extends TtMaService {
/**
* 发布已通过审核的小程序(仅供第三方代小程序调用).
*/
WxOpenResult releaesAudited() throws WxErrorException;
TtOpenResult releaesAudited() throws WxErrorException;

/**
* 10. 修改小程序线上代码的可见状态(仅供第三方代小程序调用)


+ 4
- 0
mallinkService/src/main/java/com/iformall/service/toutiao/api/bean/TtOpenNotifyMsg.java View File

@@ -1,5 +1,6 @@
package com.iformall.service.toutiao.api.bean;

import com.google.gson.JsonArray;
import lombok.*;

import java.io.Serializable;
@@ -29,6 +30,7 @@ public class TtOpenNotifyMsg implements Serializable {
* AUTHORIZED ------ 授权通知
* UNAUTHORIZED ----- 解除授权通知
* UPDATE_AUTHORIZED ------- 找回授权码通知
* PACKAGE_AUDIT ------审核结果通知
*/
private String event;

@@ -48,6 +50,8 @@ public class TtOpenNotifyMsg implements Serializable {
private String authorizationCode;//授权码
private Integer authorizationCodeExpiresIn;//授权码有效期

private JsonArray auditResults;//审核结果


public static TtOpenNotifyMsg fromJson(String json) {
return TtOpenGsonBuilder.create().fromJson(json, TtOpenNotifyMsg.class);


+ 2
- 0
mallinkService/src/main/java/com/iformall/service/toutiao/api/bean/TtOpenNotifyMsgGsonAdapter.java View File

@@ -30,6 +30,8 @@ public class TtOpenNotifyMsgGsonAdapter implements JsonDeserializer<TtOpenNotify
openTicket.setEventTime(GsonHelper.getString(json,"EventTime"));
openTicket.setAuthorizationCode(GsonHelper.getString(json,"AuthorizationCode"));
openTicket.setAuthorizationCodeExpiresIn(GsonHelper.getInteger(json,"AuthorizationCodeExpiresIn"));

openTicket.setAuditResults(json.getAsJsonArray("AuditResults"));
return openTicket;
}



+ 13
- 8
mallinkService/src/main/java/com/iformall/service/toutiao/api/impl/TtOpenMaServiceImpl.java View File

@@ -351,14 +351,19 @@ public class TtOpenMaServiceImpl extends TtMaServiceImpl implements TtOpenMaServ
/**
* 将第三方提交的代码包提交审核(仅供第三方开发者代小程序调用)
*
* @param submitAuditMessage
* @param
* @return
* @throws WxErrorException
*/
@Override
public WxOpenMaSubmitAuditResult submitAudit(WxOpenMaSubmitAuditMessage submitAuditMessage) throws WxErrorException {
String response = post(API_SUBMIT_AUDIT, GSON.toJson(submitAuditMessage));
return WxMaGsonBuilder.create().fromJson(response, WxOpenMaSubmitAuditResult.class);
public TtOpenResult submitAudit() throws WxErrorException {
String uri = API_SUBMIT_AUDIT + "?component_appid=" + ttOpenComponentService.getWxOpenConfigStorage().getComponentAppId();
JsonObject params = new JsonObject();
JsonArray array = new JsonArray();
array.add("douyin");
params.add("hostNames",array);
String response = ttOpenComponentService.postByAppAccessToken(appId,uri,GSON.toJson(params),"authorizer_access_token");
return TtOpenGsonBuilder.create().fromJson(response, TtOpenResult.class);
}

/**
@@ -398,10 +403,10 @@ public class TtOpenMaServiceImpl extends TtMaServiceImpl implements TtOpenMaServ
* @throws WxErrorException
*/
@Override
public WxOpenResult releaesAudited() throws WxErrorException {
JsonObject params = new JsonObject();
String response = post(API_RELEASE, GSON.toJson(params));
return WxMaGsonBuilder.create().fromJson(response, WxOpenResult.class);
public TtOpenResult releaesAudited() throws WxErrorException {
String uri = API_RELEASE + "?component_appid=" + ttOpenComponentService.getWxOpenConfigStorage().getComponentAppId();
String response = ttOpenComponentService.postByAppAccessToken(appId,uri,null,"authorizer_access_token");
return TtOpenGsonBuilder.create().fromJson(response, TtOpenResult.class);
}




+ 98
- 36
mlToutiaoOpen/src/main/java/com/iformall/controller/TtCalllbackController.java View File

@@ -1,15 +1,22 @@
package com.iformall.controller;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxComponentVerifyTicket;
import com.iformall.service.WxAuthorizerInfoService;
import com.iformall.service.WxComponentVerifyTicketService;
import com.iformall.domain.po.WxWeappAuditStatus;
import com.iformall.enums.EnumAppType;
import com.iformall.enums.EnumWeappAuditStatus;
import com.iformall.service.*;
import com.iformall.service.toutiao.FmTtOpenService;
import com.iformall.service.toutiao.api.bean.TtOpenNotifyMsg;
import com.iformall.utils.DateUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.json.GsonHelper;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -21,6 +28,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

@@ -39,6 +47,18 @@ public class TtCalllbackController extends BaseController {
@Autowired
private WxAuthorizerInfoService authorizerInfoService;

@Autowired
private WxWeappAuditStatusService weappAuditStatusService;

@Autowired
private WxAppinfoService appinfoService;

@Autowired
private MailService mailService;

@Autowired
private String fmAuditEmails;

@PostMapping(value = "/notify")
@ApiOperation("接收ticket回调")
@ResponseBody
@@ -93,45 +113,87 @@ public class TtCalllbackController extends BaseController {
}else if(StringUtils.isNotBlank(ticket.getEvent()) && StringUtils.equalsIgnoreCase(ticket.getEvent(), "UPDATE_AUTHORIZED")){
logger.info("------------找回授权码通知");

}else if(StringUtils.isNotBlank(ticket.getEvent()) && StringUtils.equalsIgnoreCase(ticket.getEvent(), "PACKAGE_AUDIT")){
logger.info("------------审核结果通知");
handleWeappAuditedMessage(ticket);
}else{
logger.info("------------未知通知");
}
}

// /**
// * 处理小程序审核消息
// * @param inMessage
// * @return
// */
// private boolean handleWeappAuditedMessage(WxOpenXmlMessage inMessage) {
// // 审核通过
// try {
// WxOpenQueryAuthResult queryAuthResult = openService.getWxOpenComponentService().getQueryAuth(inMessage.getAuthorizationCode());
// logger.info("getQueryAuth", queryAuthResult);
//
// WxOpenAuthorizerInfoResult openAuthorizerInfoResult = openService.getWxOpenComponentService().getAuthorizerInfo(
// queryAuthResult.getAuthorizationInfo().getAuthorizerAppid());
// logger.info(openAuthorizerInfoResult.toString());
// // save auth info
// authorizerInfoService.saveOrUpdate(new WxAuthorizerInfo() {
// {
// setAuthorizerAppid(openAuthorizerInfoResult.getAuthorizationInfo().getAuthorizerAppid());
// setAlias(openAuthorizerInfoResult.getAuthorizerInfo().getAlias());
// setHeadImg(openAuthorizerInfoResult.getAuthorizerInfo().getHeadImg());
// setQrcodeUrl(openAuthorizerInfoResult.getAuthorizerInfo().getQrcodeUrl());
// setRefreshToken(openAuthorizerInfoResult.getAuthorizationInfo().getAuthorizerRefreshToken());
// setAccessToken(openAuthorizerInfoResult.getAuthorizationInfo().getAuthorizerAccessToken());
// setAccessTokenExpire(new Date(Long.valueOf(System.currentTimeMillis() + openAuthorizerInfoResult.getAuthorizationInfo().getExpiresIn()*1000)));
// setAuthorizationStatus(EnumWxAuthorizationStatus.AUTHORIZED.getCode());
// setAuthTime(new Date());
// }
// });
// return true;
// } catch (WxErrorException e) {
// logger.error(e.getMessage());
// }
// return false;
// }
/**
* 处理小程序审核消息
* @param
* @return
*/
private boolean handleWeappAuditedMessage(TtOpenNotifyMsg notifyMsg) {

WxWeappAuditStatus auditStatus = weappAuditStatusService.getByAppId(notifyMsg.getAppId());

if(auditStatus == null){
logger.error("------------审核结果通知未找到审核小程序 "+notifyMsg.getAppId());
}

JsonArray auditResults = notifyMsg.getAuditResults();
int status = 0;
String reason = "";
for (int i = 0;i < auditResults.size(); i++) {
JsonObject obj = auditResults.get(i).getAsJsonObject();
if(("toutiao").equals(GsonHelper.getString(obj,"hostName"))){
status = GsonHelper.getInteger(obj,"status");
reason = GsonHelper.getString(obj,"auditDetail");
break;
}
}

if (status == 1) {//通过
auditStatus.setAuditStatus(EnumWeappAuditStatus.SUCCESS.getCode());
auditStatus.setAuditErrCode("");
} else {
auditStatus.setAuditStatus(EnumWeappAuditStatus.FAIL.getCode());
auditStatus.setAuditErrCode(reason);
}
auditStatus.setAuditTime(DateUtils.stringToDate(notifyMsg.getEventTime(),"yyyy-MM-dd HH:mm:ss"));
weappAuditStatusService.updateStatus(auditStatus);

// 发邮件
WxAppinfo appinfo = appinfoService.getByAppId(notifyMsg.getAppId());
if (appinfo != null) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

StringBuilder titleSB = new StringBuilder();
if (appinfo.getType().equals(EnumAppType.C.getCode())) {
titleSB.append("C端小程序");
} else if (appinfo.getType().equals(EnumAppType.B.getCode())) {
titleSB.append("B端小程序");
} else if (appinfo.getType().equals(EnumAppType.MP_S.getCode())) {
titleSB.append("公众号-服务号");
} else if (appinfo.getType().equals(EnumAppType.MP_P.getCode())) {
titleSB.append("公众号-订阅号");
}
titleSB.append(appinfo.getName());
if (status == 1) {
titleSB.append("审核通过");
} else {
titleSB.append("审核未通过");
}

StringBuilder sb = new StringBuilder();
sb.append(df.format(new Date())).append("\n");
if (status == 1) {
sb.append("审核通过\n");
} else {
sb.append("审核未通过\n").append("原因").append(reason);
}

String[] receivers = fmAuditEmails.split(",");

//发送邮件
mailService.sendSimpleMail(receivers, titleSB.toString(), sb.toString());
}

return false;
}

@RequestMapping(value = "/{appId}/callback")
@ApiOperation("消息回调")


+ 3
- 10
mlToutiaoOpen/src/main/java/com/iformall/controller/WxWeappInfoController.java View File

@@ -676,14 +676,11 @@ public class WxWeappInfoController extends BaseController {
Long auditid = null;
String codeErrCode = "";
try {
WxOpenMaSubmitAuditMessage subMessage = gson.fromJson(extSet.getReleaseJson(), new TypeToken<WxOpenMaSubmitAuditMessage>() {}.getType());
logger.info(subMessage.toString());
TtOpenMaService openMaService = openService.getTtOpenComponentService().getTtMaServiceByAppid(codeStatus.getAppId());
WxOpenMaSubmitAuditResult openRet = openMaService.submitAudit(subMessage);
TtOpenResult openRet = openMaService.submitAudit();
logger.info(openRet.toString());
if(openRet.isSuccess()) {
submitStatus = true;
auditid = openRet.getAuditId();
} else {
submitStatus = false;
}
@@ -880,7 +877,7 @@ public class WxWeappInfoController extends BaseController {

try {
TtOpenMaService openMaService = openService.getTtOpenComponentService().getTtMaServiceByAppid(auditStatus.getAppId());
WxOpenResult openRet = openMaService.releaesAudited();
TtOpenResult openRet = openMaService.releaesAudited();
logger.info(openRet.toString());
boolean releaseSuccess = false;
if(openRet.isSuccess()) {
@@ -889,11 +886,7 @@ public class WxWeappInfoController extends BaseController {
if(releaseSuccess) {
releaseStatus.setReleaseStatus(EnumWeappReleaseStatus.SUCCESS.getCode());
} else {
if(openRet.getErrcode().equals(OpenConstant.ERR_CODE_APP_IS_RELEASED)) {
releaseStatus.setReleaseStatus(EnumWeappReleaseStatus.SUCCESS.getCode());
} else {
releaseStatus.setReleaseStatus(EnumWeappReleaseStatus.FAIL.getCode());
}
releaseStatus.setReleaseStatus(EnumWeappReleaseStatus.FAIL.getCode());
}
releaseStatus.setReleaseErrCode(gson.toJson(openRet));
releaseStatus.setReleaseTime(new Date());


Loading…
Cancel
Save