Kaynağa Gözat

Merge branch 'dev' into 'mp-server-test'

生成urlSchema

See merge request quanshu/mp-server!96
zhong chunping 3 yıl önce
ebeveyn
işleme
ff597f5988

+ 49 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/common/WxServerController.java

@@ -0,0 +1,49 @@
+package com.qs.mp.web.controller.common;
+
+import cn.jsms.api.ValidSMSResult;
+import com.alibaba.fastjson.JSONObject;
+import com.qs.mp.channel.domain.Channel;
+import com.qs.mp.channel.domain.param.ChannelInviteParam;
+import com.qs.mp.channel.service.IChannelService;
+import com.qs.mp.common.core.domain.AjaxResult;
+import com.qs.mp.common.core.domain.AjaxResult.Type;
+import com.qs.mp.common.enums.ChannelRoleEnum;
+import com.qs.mp.common.jsms.JSMSUtils;
+import com.qs.mp.framework.service.IWxUrlLinkService;
+import com.qs.mp.utils.SecurityUtils;
+import io.swagger.annotations.Api;
+import ma.glasnost.orika.MapperFacade;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @auther zhongcp
+ * @create 2022-02-28 16:17:48
+ * @describe 渠道邀请前端控制器
+ */
+@Api("微信服务端调用API")
+@RestController
+@RequestMapping("/api/v1/mp/wx/*")
+@Component
+public class WxServerController extends BaseApiController {
+
+	@Autowired
+	private IWxUrlLinkService wxUrlLinkService;
+
+	/**
+	 * 生成邀请码
+	 *
+	 * @return
+	 */
+	@PostMapping("urlschema/generate")
+	public AjaxResult listChannel(@RequestBody  JSONObject jsonObject) {
+		String query = jsonObject.getString("query");
+		String rst = wxUrlLinkService.generateUrlSchema("pages/login/invitation", query);
+		return new AjaxResult(Type.SUCCESS, "", rst);
+	}
+}

+ 2 - 1
mp-framework/src/main/java/com/qs/mp/framework/config/SecurityConfig.java

@@ -108,7 +108,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                     "/wxlogin",
                     "/api/v1/mp/sms/sendSmsCode",
                     "/api/v1/mp/user/wxauth/mobile",
-                    "/api/v1/mp/channel/invite/register").anonymous()
+                    "/api/v1/mp/channel/invite/register",
+                    "/api/v1/mp/wx/urlschema/generate").anonymous()
                 .antMatchers(
                         HttpMethod.GET,
                         "/",

+ 8 - 0
mp-service/src/main/java/com/qs/mp/framework/service/IWxUrlLinkService.java

@@ -14,6 +14,14 @@ public interface IWxUrlLinkService {
    */
   String generate(String path, String query);
 
+  /**
+   * 生成小程序链接
+   * @param path 小程序页面路径
+   * @param query 查询参数
+   * @return
+   */
+  String generateUrlSchema(String path, String query);
+
   /**
    * 生成小程序码,返回的是base64字符串
    * @param path

+ 30 - 0
mp-service/src/main/java/com/qs/mp/framework/service/impl/WxUrlLinkServiceImpl.java

@@ -68,6 +68,36 @@ public class WxUrlLinkServiceImpl implements IWxUrlLinkService {
     return jsonObject.getString("url_link");
   }
 
+
+  @Override
+  public String generateUrlSchema(String path, String query) {
+    Map<String, Object> param = new HashMap<String, Object>();
+    Map<String, Object> jumpParam = new HashMap<>();
+    jumpParam.put("path", path);
+    jumpParam.put("query", query);
+    jumpParam.put("env_version", "trial");
+    param.put("jump_wxa", jumpParam);
+    // 有效时间超过31天的 Link 或永久有效的 Link 为长期有效Link,
+    // 单个小程序总共可生成长期有效 Link 上限为10万个,请谨慎调用
+    param.put("is_expire", true);
+    param.put("expire_type", 1);
+    param.put("expire_interval", 1);
+    // 云管铺小程序永久短链接https://wxaurl.cn/YL8D48CQbMr
+    // 获取access_token
+    String accessToken = appTokenService.getAccessToken(channelAppId);
+    String res = HttpUtils.sendPost(
+        "https://api.weixin.qq.com/wxa/generatescheme?access_token=" + accessToken,
+        JSON.toJSONString(param));
+    LogUtil.info(logger, "小程序UrlSchema获取,path:{0},query:{1},res:{2}",
+        new Object[]{path, query, res});
+    JSONObject jsonObject = JSON.parseObject(res);
+    if (jsonObject.getIntValue("errcode") != 0) {
+      LogUtil.error(logger, "小程序UrlSchema获取错误,res:{0}", res);
+      return null;
+    }
+    return jsonObject.getString("openlink");
+  }
+
   @Override
   public String generateCode(String path, String scene) {
     Map<String, Object> param = new HashMap<String, Object>();