新增 微信第三方平台 提交代码生成体验版小程序接口

This commit is contained in:
Lemon
2023-07-29 14:37:46 +08:00
parent 13b7a1f9a6
commit ad6b914abf
4 changed files with 118 additions and 6 deletions

View File

@@ -5,10 +5,10 @@ import com.jsowell.common.annotation.Anonymous;
import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.core.controller.BaseController;
import com.jsowell.common.response.RestApiResponse; import com.jsowell.common.response.RestApiResponse;
import com.jsowell.pile.domain.AuthorizationEventResult; import com.jsowell.pile.domain.AuthorizationEventResult;
import com.jsowell.pile.dto.GetComponentTokenDTO; import com.jsowell.pile.dto.agentDev.CommitCodeDTO;
import com.jsowell.pile.dto.agentDev.GetComponentTokenDTO;
import com.jsowell.pile.vo.agentDev.AuthInfo; import com.jsowell.pile.vo.agentDev.AuthInfo;
import com.jsowell.service.AgentDevService; import com.jsowell.service.AgentDevService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@@ -86,6 +86,7 @@ public class AgentDevController extends BaseController {
/** /**
* 使用授权码获取授权信息 * 使用授权码获取授权信息
*
* @param authorizationCode * @param authorizationCode
* @return * @return
*/ */
@@ -103,4 +104,26 @@ public class AgentDevController extends BaseController {
logger.info("使用授权码获取授权信息 result:{}", response); logger.info("使用授权码获取授权信息 result:{}", response);
return response; return response;
} }
/**
* 提交代码并生成体验版小程序
*
* @param dto
* @return
*/
@PostMapping("/commitCode")
public RestApiResponse<?> commitCode(@RequestBody CommitCodeDTO dto) {
logger.info("提交代码并生成体验版小程序 params:{}", JSONObject.toJSONString(dto));
RestApiResponse<?> response = null;
try {
String commitResult = agentDevService.commitCode(dto);
response = new RestApiResponse<>(commitResult);
} catch (Exception e) {
logger.error("提交代码并生成体验版小程序 error,", e);
response = new RestApiResponse<>(e);
}
logger.info("提交代码并生成体验版小程序 result:{}", response);
return response;
}
} }

View File

@@ -8,16 +8,17 @@ import com.jsowell.common.util.http.HttpUtils;
import com.jsowell.common.util.wxplatform.AesException; import com.jsowell.common.util.wxplatform.AesException;
import com.jsowell.common.util.wxplatform.WXBizMsgCrypt; import com.jsowell.common.util.wxplatform.WXBizMsgCrypt;
import com.jsowell.common.util.wxplatform.WXXmlToMapUtil; import com.jsowell.common.util.wxplatform.WXXmlToMapUtil;
import com.jsowell.pile.dto.GetComponentTokenDTO; import com.jsowell.pile.domain.agentDev.CategoryInfo;
import com.jsowell.pile.dto.agentDev.CommitCodeDTO;
import com.jsowell.pile.dto.agentDev.GetComponentTokenDTO;
import com.jsowell.pile.vo.agentDev.AuthInfo; import com.jsowell.pile.vo.agentDev.AuthInfo;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Locale; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -251,4 +252,43 @@ public class AgentDevService {
return authInfo; return authInfo;
} }
/**
* 提交代码并生成体验版小程序
*
* @param dto
* @return
*/
public String commitCode(CommitCodeDTO dto) {
String redisKey = CacheConstants.AUTHORIZER_ACCESS_TOKEN + dto.getAuthorizerAppid();
String authAccessToken = redisCache.getCacheObject(redisKey);
if (StringUtils.isBlank(authAccessToken)) {
throw new RuntimeException("微信第三方平台 提交代码 error: authAccessToken为空");
}
// 提交代码 url
String url = "https://api.weixin.qq.com/wxa/commit?access_token=" + authAccessToken;
JSONObject jsonObject = new JSONObject();
jsonObject.put("template_id", dto.getTemplateId());
jsonObject.put("ext_json", dto.getExtJson());
jsonObject.put("user_version", dto.getUserVersion());
jsonObject.put("user_desc", dto.getUserDesc());
String result = HttpUtils.sendPost(url, JSONObject.toJSONString(jsonObject));
logger.info("获取第三方平台 使用授权码获取授权信息 请求参数:{}, 请求结果:{}", JSONObject.toJSONString(jsonObject), result);
// 将返回结果转为json对象
JSONObject resultJson = JSONObject.parseObject(result);
return resultJson.getString("errmsg");
}
public String submitAudit() {
return null;
}
} }

View File

@@ -0,0 +1,49 @@
package com.jsowell.pile.dto.agentDev;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 微信第三方平台 提交代码并生成体验版DTO
*
* @author Lemon
* @Date 2023/7/29 13:26
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class CommitCodeDTO {
/**
* 授权方appid
*/
private String authorizerAppid;
/**
* 代码库中的代码模板 ID可通过getTemplateList接口获取代码模板template_id。
*/
// @JSONField(name = "template_id")
private String templateId;
/**
* 为了方便第三方平台的开发者引入 extAppid 的开发调试工作引入ext.json配置文件概念该参数则是用于控制ext.json配置文件的内容。
*/
// @JSONField(name = "ext_json")
private String extJson;
/**
* 代码版本号,开发者可自定义(长度不要超过 64 个字符)
*/
// @JSONField(name = "user_version")
private String userVersion;
/**
* 代码描述,开发者可自定义
*/
// @JSONField(name = "user_desc")
private String userDesc;
}

View File

@@ -1,4 +1,4 @@
package com.jsowell.pile.dto; package com.jsowell.pile.dto.agentDev;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;