Browse Source

生成urlschema和小程序码

chunping 3 years ago
parent
commit
a1407670b7

+ 5 - 27
mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/ChannelInviteController.java

@@ -2,47 +2,22 @@ package com.qs.mp.web.controller.api.channel;
 
 import cn.jsms.api.ValidSMSResult;
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.channel.domain.Channel;
-import com.qs.mp.channel.domain.ChannelCommission;
 import com.qs.mp.channel.domain.param.ChannelInviteParam;
-import com.qs.mp.channel.domain.param.ChannelParam;
-import com.qs.mp.channel.domain.param.SiteParam;
-import com.qs.mp.channel.domain.param.VerifyParam;
-import com.qs.mp.channel.domain.vo.ChannelOperDataVO;
-import com.qs.mp.channel.domain.vo.ChannelVO;
-import com.qs.mp.channel.service.IChannelCommissionService;
 import com.qs.mp.channel.service.IChannelService;
-import com.qs.mp.channel.service.IChannelUserRelService;
-import com.qs.mp.common.constant.UserConstants;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.domain.AjaxResult.Type;
-import com.qs.mp.common.core.page.TableDataInfo;
-import com.qs.mp.common.enums.ChannelCertifyStatusEnum;
 import com.qs.mp.common.enums.ChannelRoleEnum;
-import com.qs.mp.common.enums.ChannelVerifyStatusEnum;
-import com.qs.mp.common.enums.ErrorCodeEnum;
 import com.qs.mp.common.jsms.JSMSUtils;
-import com.qs.mp.common.utils.DateUtils;
 import com.qs.mp.framework.service.IWxUrlLinkService;
-import com.qs.mp.system.service.ISysUserService;
 import com.qs.mp.utils.SecurityUtils;
 import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
 import ma.glasnost.orika.MapperFacade;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -68,6 +43,9 @@ public class ChannelInviteController extends BaseApiController {
 	@Autowired
 	private MapperFacade mapperFacade;
 
+	@Value("${wx-channel.appId}")
+	private String channelAppId;
+
 	/**
 	 * 生成邀请码
 	 *
@@ -81,7 +59,7 @@ public class ChannelInviteController extends BaseApiController {
 			return new AjaxResult(Type.SUCCESS, "", channel.getInvitePic());
 		}
 		String type = jsonObject.getString("type");
-		String rst = wxUrlLinkService.generateCode("pages/login/invitation", "id=" + channelId + ",type=" + type);
+		String rst = wxUrlLinkService.generateCode("pages/login/invitation", "id=" + channelId + "&type=" + type, channelAppId);
 		channel.setInvitePic(rst);
 		channelService.updateById(channel);
 		return new AjaxResult(Type.SUCCESS, "", rst);

+ 8 - 12
mp-admin/src/main/java/com/qs/mp/web/controller/common/WxServerController.java

@@ -1,20 +1,12 @@
 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.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -35,15 +27,19 @@ public class WxServerController extends BaseApiController {
 	@Autowired
 	private IWxUrlLinkService wxUrlLinkService;
 
+	@Value("${wx-user.appId}")
+	private String userAppId;
+
 	/**
-	 * 生成邀请码
+	 * 用户扫描盲票二维码,生成schemaUrl,每天限量50w个
 	 *
 	 * @return
 	 */
 	@PostMapping("urlschema/generate")
-	public AjaxResult listChannel(@RequestBody  JSONObject jsonObject) {
+	public AjaxResult generateUrlSchema(@RequestBody  JSONObject jsonObject) {
 		String query = jsonObject.getString("query");
-		String rst = wxUrlLinkService.generateUrlSchema("pages/login/invitation", query);
+		String path = jsonObject.getString("path"); // "/pages/deposit/index"
+		String rst = wxUrlLinkService.generateUrlSchema(path, query, userAppId);
 		return new AjaxResult(Type.SUCCESS, "", rst);
 	}
 }

+ 1 - 0
mp-admin/src/main/resources/application.yml

@@ -126,6 +126,7 @@ cloud:
 #渠道端小程序appid和密钥
 wx-channel:
   appId: wxc3a684f1196f6e15
+  #appId: wxb86cb7f459fc3675
   appSecret: 7708655ba65f04de2a42f23d20ab4134
 #用户端小程序appid和密钥
 wx-user:

+ 19 - 4
mp-admin/src/test/java/com/qs/mp/service/ServiceImplTest.java

@@ -1,9 +1,8 @@
 package com.qs.mp.service;
 
 import com.qs.mp.MpApplication;
+import com.qs.mp.admin.service.ITicketBoxSerialService;
 import com.qs.mp.framework.service.IWxUrlLinkService;
-import java.util.Date;
-import java.util.Random;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -28,12 +27,28 @@ public class ServiceImplTest {
   @Autowired
   private IWxUrlLinkService wxUrlLinkService;
 
+  @Autowired
+  private ITicketBoxSerialService ticketBoxSerialService;
+
   @Test
   public void testGenerateQrCode() {
-    System.out.println(wxUrlLinkService.generateCode("", "xxx=1"));
+    System.out.println(wxUrlLinkService.generateCode("pages/login/invitation", "id=1&type=salesite", "wxc3a684f1196f6e15"));
+
+  }
+
+  @Test
+  public void testGenerateUrlSchema() {
+    System.out.println(wxUrlLinkService.generateUrlSchema("/pages/deposit/index", "", "wxb86cb7f459fc3675"));
 
   }
 
+  @Test
+  public void testGenerateSerial() {
+    System.out.println(ticketBoxSerialService.generateSerial(null));
+
+  }
+
+
 
   public static void main(String[] args) {
     /*int n = 500;
@@ -54,7 +69,7 @@ public class ServiceImplTest {
 
     System.out.println(i + "");
 
-    char[] a = Character.toChars(123);
+    char[] a = Character.toChars(72);
 
     System.out.println(new String(a));
   }

+ 2 - 2
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketBoxServiceImpl.java

@@ -213,10 +213,10 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
         ticket.setTitle(ticketBox.getTitle());
         ticket.setSerialNo(ticketPackage.getPkgNo() + "-" + String.format("%1$07d", ticketCnt));
         ticket.setFacePrice(ticketBox.getFacePrice());
-        int luckyNum = new Random().nextInt(18) + 1;
+        int luckyNum = new Random().nextInt(99) + 1;
         ticket.setCipherLuckyNum(String.valueOf(luckyNum));
         List<TicketDrawNumDTO> drawNumDTOList = new ArrayList<>();
-        List<Integer> randomNumList = getRandomList(new ArrayList<Integer>(), 18, 18);
+        List<Integer> randomNumList = getRandomList(new ArrayList<Integer>(), 18, 99);
         for (Integer drawNum : randomNumList) {
           if (drawNum == luckyNum) {
             drawNumDTOList.add(new TicketDrawNumDTO(pkgAwards.getName(), drawNum));

+ 6 - 3
mp-service/src/main/java/com/qs/mp/framework/service/IWxUrlLinkService.java

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

+ 11 - 15
mp-service/src/main/java/com/qs/mp/framework/service/impl/WxUrlLinkServiceImpl.java

@@ -2,7 +2,6 @@ package com.qs.mp.framework.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.qs.mp.common.exception.ServiceException;
 import com.qs.mp.common.qcloud.QcloudFileUtils;
 import com.qs.mp.common.utils.LogUtil;
 import com.qs.mp.common.utils.UUIDUtils;
@@ -33,9 +32,6 @@ public class WxUrlLinkServiceImpl implements IWxUrlLinkService {
   @Autowired
   private IAppTokenService appTokenService;
 
-  @Value("${wx-channel.appId}")
-  private String channelAppId;
-
   /**
    * 公开
    */
@@ -43,7 +39,7 @@ public class WxUrlLinkServiceImpl implements IWxUrlLinkService {
   private String publicBucketName;
 
   @Override
-  public String generate(String path, String query) {
+  public String generate(String path, String query, String appId) {
     Map<String, Object> param = new HashMap<String, Object>();
     param.put("path", path);
     param.put("query", query);
@@ -54,7 +50,7 @@ public class WxUrlLinkServiceImpl implements IWxUrlLinkService {
     param.put("expire_interval", 30);
     // 云管铺小程序永久短链接https://wxaurl.cn/YL8D48CQbMr
     // 获取access_token
-    String accessToken = appTokenService.getAccessToken(channelAppId);
+    String accessToken = appTokenService.getAccessToken(appId);
     String res = HttpUtils.sendPost(
         "https://api.weixin.qq.com/wxa/generate_urllink?access_token=" + accessToken,
         JSON.toJSONString(param));
@@ -70,12 +66,12 @@ public class WxUrlLinkServiceImpl implements IWxUrlLinkService {
 
 
   @Override
-  public String generateUrlSchema(String path, String query) {
+  public String generateUrlSchema(String path, String query, String appId) {
     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");
+    jumpParam.put("env_version", "release");
     param.put("jump_wxa", jumpParam);
     // 有效时间超过31天的 Link 或永久有效的 Link 为长期有效Link,
     // 单个小程序总共可生成长期有效 Link 上限为10万个,请谨慎调用
@@ -84,7 +80,7 @@ public class WxUrlLinkServiceImpl implements IWxUrlLinkService {
     param.put("expire_interval", 1);
     // 云管铺小程序永久短链接https://wxaurl.cn/YL8D48CQbMr
     // 获取access_token
-    String accessToken = appTokenService.getAccessToken(channelAppId);
+    String accessToken = appTokenService.getAccessToken(appId);
     String res = HttpUtils.sendPost(
         "https://api.weixin.qq.com/wxa/generatescheme?access_token=" + accessToken,
         JSON.toJSONString(param));
@@ -99,16 +95,16 @@ public class WxUrlLinkServiceImpl implements IWxUrlLinkService {
   }
 
   @Override
-  public String generateCode(String path, String scene) {
+  public String generateCode(String path, String scene, String appId) {
     Map<String, Object> param = new HashMap<String, Object>();
-    param.put("path", path); // 页面路径
-    param.put("scene", scene); // 参数
-    param.put("check_path", false);// 为 true 时 page 必须是已经发布的小程序存在的页面(否则报错);为 false 时允许小程序未发布或者 page 不存在
+    param.put("path", path + "?" + scene); // 页面路径
+    //param.put("scene", scene); // 参数
+//    param.put("check_path", true);// 为 true 时 page 必须是已经发布的小程序存在的页面(否则报错);为 false 时允许小程序未发布或者 page 不存在
     param.put("env_version", "trial");
     // 获取access_token
-    String accessToken = appTokenService.getAccessToken(channelAppId);
+    String accessToken = appTokenService.getAccessToken(appId);
     InputStream in = HttpUtils.sendImagePost(
-        "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken,
+        "https://api.weixin.qq.com/wxa/getwxacode?access_token=" + accessToken,
         JSON.toJSONString(param));
     LogUtil.info(logger, "小程序链接获取,path:{0},scene:{1}",
         new Object[]{path, scene});