Răsfoiți Sursa

小程序二维码

zoujiajian 2 ani în urmă
părinte
comite
d8a5b4d498

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/mini/MiniService.java

@@ -27,4 +27,6 @@ public interface MiniService {
 	 * 生成小程序schema
 	 * 生成小程序schema
 	 */
 	 */
 	String generateSchema(MiniSchemaReq req) throws Exception;
 	String generateSchema(MiniSchemaReq req) throws Exception;
+
+	byte[] generateCode(MiniSchemaReq req) throws Exception;
 }
 }

+ 11 - 0
netflix-service/src/main/java/com/cyksj/service/mini/impl/MiniServiceImpl.java

@@ -194,6 +194,17 @@ public class MiniServiceImpl implements MiniService {
 		return miniSchema;
 		return miniSchema;
 	}
 	}
 
 
+	@Override
+	public byte[] generateCode(MiniSchemaReq req) throws Exception {
+		req.setPath("pages/index/index");
+		//调用微信小程序接口
+		if (StrUtil.isNotBlank(req.getDsCode())) {
+			req.setPath(req.getPath() + "?dsCode=" + req.getDsCode());
+		}
+		String accessToken = weChatService.getAccessToken(certMiniConfig.getAppId());
+		return weChatService.generateCode(accessToken, req.getPath());
+	}
+
 	public void updateArticleMarkNum(Integer type, Long articleId, Integer offset) {
 	public void updateArticleMarkNum(Integer type, Long articleId, Integer offset) {
 		Integer success = 0;
 		Integer success = 0;
 		while (success != 1) {
 		while (success != 1) {

+ 1 - 0
netflix-service/src/main/java/com/cyksj/service/user/impl/UserActivityServiceImpl.java

@@ -36,6 +36,7 @@ public class UserActivityServiceImpl extends ServiceImpl<UserActivityMapper, Use
 		UserActivity activity = getById(1);
 		UserActivity activity = getById(1);
 		Long sendUserId = user.getId();
 		Long sendUserId = user.getId();
 		if (StrUtil.isNotBlank(dsCode)) {
 		if (StrUtil.isNotBlank(dsCode)) {
+			log.info("用户code:{}进行大学生身份认证成功..", dsCode);
 			User toUser = userMapper.selectOne(Wrappers.lambdaQuery(User.class).eq(User::getShowId, dsCode).last("limit 1"));
 			User toUser = userMapper.selectOne(Wrappers.lambdaQuery(User.class).eq(User::getShowId, dsCode).last("limit 1"));
 			if (toUser != null) {
 			if (toUser != null) {
 				sendUserId = toUser.getId();
 				sendUserId = toUser.getId();

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/wechat/WeChatService.java

@@ -106,4 +106,6 @@ public interface WeChatService {
     void getMiniStudentIdentity(String openId, String code) throws Exception;
     void getMiniStudentIdentity(String openId, String code) throws Exception;
 
 
 	String generateSchema(String accessToken, TargetAppletSchemeReq targetAppletSchemeReq) throws Exception;
 	String generateSchema(String accessToken, TargetAppletSchemeReq targetAppletSchemeReq) throws Exception;
+
+    byte[] generateCode(String accessToken, String path) throws Exception;
 }
 }

+ 17 - 1
netflix-service/src/main/java/com/cyksj/service/wechat/impl/WeChatServiceImpl.java

@@ -715,8 +715,24 @@ public class WeChatServiceImpl implements WeChatService {
             throw BusinessRuntimeException.getInstance(jsonObject.getStr("errmsg"));
             throw BusinessRuntimeException.getInstance(jsonObject.getStr("errmsg"));
         }
         }
         if (StrUtil.isEmpty(jsonObject.getStr("openlink"))) {
         if (StrUtil.isEmpty(jsonObject.getStr("openlink"))) {
-            log.info("积善scheme body: {}", jsonObject);
+            throw BusinessRuntimeException.getInstance("系统异常..");
         }
         }
         return jsonObject.getStr("openlink");
         return jsonObject.getStr("openlink");
     }
     }
+
+    @Override
+    public byte[] generateCode(String accessToken, String path) throws Exception {
+        String url = "https://api.weixin.qq.com/wxa/getwxacode?access_token=" + accessToken;
+        JSONObject params = new JSONObject();
+        params.putOpt("path", path);
+        HttpResponse<byte[]> res = J11HttpC.custom()
+                .ofPost()
+                .url(url)
+                .body(HttpRequest.BodyPublishers.ofString(params.toString()))
+                .send(HttpResponse.BodyHandlers.ofByteArray());
+        if (200 != res.statusCode()) {
+            throw BusinessRuntimeException.getInstance("获取用户信息失败: " + IoKit.toString(res.body()));
+        }
+        return res.body();
+    }
 }
 }

+ 28 - 0
netflix-web/src/main/java/com/cyksj/web/controller/mini/MiniController.java

@@ -1,6 +1,8 @@
 package com.cyksj.web.controller.mini;
 package com.cyksj.web.controller.mini;
 
 
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.exception.BusinessRuntimeException;
+import com.cyksj.common.util.IoKit;
+import com.cyksj.common.util.StringUtil;
 import com.cyksj.dto.Result;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.model.entity.User;
 import com.cyksj.model.entity.User;
@@ -23,6 +25,8 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.OutputStream;
 
 
 /*
 /*
  *项目名: netflix
  *项目名: netflix
@@ -61,6 +65,30 @@ public class MiniController {
 		return GatewayResponse.SUCCESS.newBuilder().toResult(url);
 		return GatewayResponse.SUCCESS.newBuilder().toResult(url);
 	}
 	}
 
 
+	/**
+	 * 生成小程序code
+	 */
+	@GetMapping("/generate/code")
+	public void generateCode(String dsCode, HttpServletResponse response) throws Exception {
+		MiniSchemaReq req = new MiniSchemaReq();
+		req.setDsCode(dsCode);
+		byte [] s = miniService.generateCode(req);
+		response.reset();
+		// 若直接在浏览器预览 需要注释下面的response header
+		//response.addHeader("Content-Disposition", "attachment;filename=share.jpeg");
+		response.setContentType("image/jpeg");
+		// 处理文件 返回流
+		OutputStream out = null;
+		try {
+			out = response.getOutputStream();
+			IoKit.write(s, out);
+		} catch (Throwable e) {
+			throw BusinessRuntimeException.getInstance(StringUtil.getErrorMsg(e));
+		} finally {
+			IoKit.close(out);
+		}
+	}
+
 	/**
 	/**
 	 * 银河小程序 静默授权登录
 	 * 银河小程序 静默授权登录
 	 */
 	 */