From 6707b8df16cf531d6654d8a3b429de45f5fe9db3 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 25 十二月 2023 15:18:00 +0800
Subject: [PATCH] 修改小程序码
---
server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java | 100 +++++++++++++++++++-
server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java | 2
server/services/src/main/java/com/doumee/core/utils/ImageDesignerUtil.java | 132 ++++++++++++++++++++++++++
server/services/src/main/java/com/doumee/core/constants/Constants.java | 1
server/services/src/main/resources/application-dev.yml | 1
server/services/src/main/java/com/doumee/core/utils/HttpsUtil.java | 42 ++++++++
6 files changed, 271 insertions(+), 7 deletions(-)
diff --git a/server/services/src/main/java/com/doumee/core/constants/Constants.java b/server/services/src/main/java/com/doumee/core/constants/Constants.java
index cacca62..d803d96 100644
--- a/server/services/src/main/java/com/doumee/core/constants/Constants.java
+++ b/server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -37,6 +37,7 @@
public static final String FORCE_BACK_SITE = "FORCE_BACK_SITE";
//杞﹁締绫诲瀷鏁版嵁
public static final String BIKE_TYPE ="0,1,2,3,4,5,6,7,8" ;
+ public static final String MINI_PROGRAMME_REALEASE ="MINI_PROGRAMME_REALEASE" ;
public static String REDIS_DEBUG_STR="test_";
public static final String AD = "AD";
public static String REPAIR = "REPAIR";
diff --git a/server/services/src/main/java/com/doumee/core/utils/HttpsUtil.java b/server/services/src/main/java/com/doumee/core/utils/HttpsUtil.java
index 291d14f..3de1d47 100644
--- a/server/services/src/main/java/com/doumee/core/utils/HttpsUtil.java
+++ b/server/services/src/main/java/com/doumee/core/utils/HttpsUtil.java
@@ -30,7 +30,6 @@
public static String post(String url, String data, String contentType, boolean ignoreSSL) {
return connection(url, "POST", data, contentType, ignoreSSL);
}
-
public static String connection(String url,String method,String data,String contentType,boolean ignoreSSL){
HttpsURLConnection connection = null;
try {
@@ -89,7 +88,48 @@
}
return null;
}
+ public static InputStream postJson(String url, String data){
+ HttpsURLConnection connection = null;
+ try {
+ URL _url = new URL(url);
+ connection = (HttpsURLConnection) _url.openConnection();
+ connection.setRequestMethod("POST");
+ connection.setDoOutput(true);
+ connection.setDoInput(true);
+ connection.setUseCaches(false);
+ connection.setRequestProperty("Content-Type", "application/json");
+ connection.connect();
+ //淇′换鎵�鏈塻sl璇佷功鍜屼富鏈�
+ TrustManager[] trustManagers = {new HttpsTrustManager()};
+ SSLContext context = SSLContext.getInstance("TLS");
+ context.init(null, trustManagers, new SecureRandom());
+ connection.setSSLSocketFactory(context.getSocketFactory());
+ connection.setHostnameVerifier(new HostnameVerifier() {
+ @Override
+ public boolean verify(String hostname, SSLSession session) {
+ return true;
+ }
+ });
+ if(data != null){
+ OutputStream outputStream = connection.getOutputStream();
+ outputStream.write(data.getBytes("utf-8"));
+ outputStream.close();
+ }
+ int responseCode = connection.getResponseCode();
+ if (responseCode == HttpsURLConnection.HTTP_OK) {
+ InputStream is = connection.getInputStream();
+ return is;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if(connection != null){
+ // connection.disconnect();
+ }
+ }
+ return null;
+ }
/**
* 鍙戦�乬et璇锋眰
* @param url 璇锋眰URL
diff --git a/server/services/src/main/java/com/doumee/core/utils/ImageDesignerUtil.java b/server/services/src/main/java/com/doumee/core/utils/ImageDesignerUtil.java
new file mode 100644
index 0000000..da1dc75
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/utils/ImageDesignerUtil.java
@@ -0,0 +1,132 @@
+package com.doumee.core.utils;
+
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+
+//import com.sun.image.codec.jpeg.JPEGCodec;
+//import com.sun.image.codec.jpeg.JPEGImageEncoder;
+
+import javax.imageio.ImageIO;
+
+public class ImageDesignerUtil {
+
+ private static BufferedImage image;
+
+ private static void createImage(String fileLocation,BufferedImage image) {
+ try {
+// FileOutputStream fos = new FileOutputStream(fileLocation);
+// BufferedOutputStream bos = new BufferedOutputStream(fos);
+// JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
+// encoder.encode(image);
+// bos.close();
+ String formatName = fileLocation.substring(fileLocation.lastIndexOf(".") + 1);
+ ImageIO.write(image, formatName , new File(fileLocation) );
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ public static boolean graphicsGenerationIs(String bottom, InputStream imgurl, String savePath) {
+ try {
+ int imageWidth = 320;// 鍥剧墖鐨勫搴�
+ int imageHeight = 370;// 鍥剧墖鐨勯珮搴�
+ BufferedImage image = new BufferedImage(imageWidth, imageHeight,
+ BufferedImage.TYPE_INT_RGB);
+ Graphics graphics = image.getGraphics();
+ graphics.setColor(Color.black);
+ graphics.fillRect(0, 0, imageWidth, imageHeight);
+ // 鏀规垚杩欐牱:
+ BufferedImage bimg = null;
+ try {
+ bimg = javax.imageio.ImageIO.read(imgurl);
+ } catch (Exception e) {
+ }
+
+ if (bimg != null)
+ graphics.drawImage(bimg, 15, 15, null);
+ // ------------------------鑳屾櫙鍥剧敾缁撴潫--------------
+
+
+
+ graphics.setColor(Color.WHITE);
+ graphics.setFont(new Font("寰蒋闆呴粦", Font.PLAIN, 30));
+ graphics.drawString(bottom, 90, 345);
+ // --------------------鏄电О鐢荤粨鏉�------------------
+ graphics.dispose();
+ createImage(savePath,image);
+ return new File(savePath).isFile();
+
+ }catch (Exception e){
+ return false;
+ }
+
+ }
+ public static String graphicsGeneration(String name, String imgurl, String header,
+ String qrCode,String savePath) {
+
+ int imageWidth = 640;// 鍥剧墖鐨勫搴�
+ int imageHeight = 1020;// 鍥剧墖鐨勯珮搴�
+ image = new BufferedImage(imageWidth, imageHeight,
+ BufferedImage.TYPE_INT_RGB);
+ Graphics graphics = image.getGraphics();
+ graphics.setColor(Color.WHITE);
+ graphics.fillRect(0, 0, imageWidth, imageHeight);
+ // 鏀规垚杩欐牱:
+ BufferedImage bimg = null;
+ try {
+ bimg = javax.imageio.ImageIO.read(new java.io.File(imgurl));
+ } catch (Exception e) {
+ }
+
+ if (bimg != null)
+ graphics.drawImage(bimg, 0, 0, null);
+ // ------------------------鑳屾櫙鍥剧敾缁撴潫--------------
+
+ // graphics.fillRect(0, 0, headWidth, headHeight);
+ // 鏀规垚杩欐牱:
+ bimg = null;
+ try {
+ bimg = javax.imageio.ImageIO.read(new java.io.File(header));
+ } catch (Exception e) {
+ }
+
+ if (bimg != null)
+ graphics.drawImage(bimg, 26, 34, 90, 90, null);
+ // --------------澶村儚鐢荤粨鏉�---------------
+ graphics.setColor(Color.BLACK);
+ graphics.setFont(new Font("寰蒋闆呴粦", Font.PLAIN, 30));
+ graphics.drawString(name, 134, 70);
+ // --------------------鏄电О鐢荤粨鏉�------------------
+
+ graphics.setColor(Color.WHITE);
+ // graphics.fillRect(0, 0, codeWidth, codeHeight);
+ // 鏀规垚杩欐牱:
+ bimg = null;
+ try {
+ bimg = javax.imageio.ImageIO.read(new java.io.File(qrCode));
+ } catch (Exception e) {
+ }
+
+ if (bimg != null)
+ graphics.drawImage(bimg, 140, 547, 360, 360, null);
+ // --------------浜岀淮鐮佺敾缁撴潫---------------
+ graphics.dispose();
+ createImage(savePath,image);
+
+ return savePath;
+
+ }
+
+ public static void main(String[] args) {
+ ImageDesignerUtil cg = new ImageDesignerUtil();
+ try {
+ graphicsGeneration("鎴戞槸鏂颁笘鐣屼箣绁�", "bg.png",
+ "D:\\test\\head.png", "D:\\test\\code.png","D:\\test\\test0.png");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
\ No newline at end of file
diff --git a/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java b/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java
index f57abb7..68b4972 100644
--- a/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java
+++ b/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java
@@ -6,7 +6,9 @@
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.utils.DateUtil;
+import com.doumee.core.utils.HttpsUtil;
import com.doumee.core.utils.ID;
+import com.doumee.core.utils.ImageDesignerUtil;
import com.doumee.dao.business.RefundMapper;
import com.doumee.dao.business.TransactionsMapper;
import com.doumee.dao.business.model.Locks;
@@ -22,13 +24,12 @@
import okhttp3.Request;
import okhttp3.Response;
import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.InputStream;
+import java.io.*;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
@@ -201,6 +202,52 @@
}
+ public static void main(String[] args) throws IOException {
+ /* InputStream inputStream = HttpsUtil.postJson("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=75_W8lx5-bp9WEo69pQ6hvN70fJJJCNSRby6Wi6z_R9G7Sd5GMdY7ZT8Zq3PrKWrFBq92utfgqu3P8iw1NOvJNfyZssEYCy6k94Wch-GQNXcarSV65gowLk-SA9bncWTJbAGAHEU", "{\"check_path\":false,\"is_hyaline\":false,\"page\":\"pages/index/index\",\"scene\":\"1993/90\",\"env_version\":\"trial\"}");
+ File file = new File("D://test.png");
+
+ //瀹氫箟涓�涓敤浜庤鍙朓nputStream鏁版嵁鐨刡yte鏁扮粍
+ byte[] buffer = new byte[1024];
+
+//杈撳嚭娴侊紝鐢ㄤ簬鍐欏叆鏂囦欢
+ FileOutputStream outputStream = new FileOutputStream(file);
+
+//寰幆璇诲彇鏁版嵁骞跺皢鍏跺啓鍏ユ枃浠朵腑
+ int length;
+ while ((length = inputStream.read(buffer)) > 0) {
+ outputStream.write(buffer, 0, length);
+ }
+
+//鍏抽棴InputStream鍜孫utputStream
+ inputStream.close();
+ outputStream.close();*/
+ Map<String,Object> body = new HashMap<>();
+ // 鍦烘櫙鐮侊紝涓庡墠绔害瀹氾紝鏈�缁堟槸闇�瑕佸墠绔В鏋�
+ body.put("scene", "1992/41" );
+ // 姝e紡鐗堜负 "release"锛屼綋楠岀増涓� "trial"锛屽紑鍙戠増涓� "develop"銆傞粯璁ゆ槸姝e紡鐗堛��
+// body.put("env_version", "release");
+ body.put("env_version", "trial");
+ // 閫忔槑锛屾牴鎹綘鐨勫満鏅嚜琛岃缃産ody鍙傛暟
+ body.put("is_hyaline",false);
+ body.put("check_path", false);
+ body.put("page","pages/index/index");
+ OkHttpClient client = new OkHttpClient().newBuilder().build();
+ okhttp3.MediaType mediaType = okhttp3.MediaType.parse("application/json");
+ log.info("=========================================="+JSONObject.toJSONString(body));
+ okhttp3.RequestBody requestBody = okhttp3.RequestBody.create(mediaType, JSONObject.toJSONString(body));
+ Request request = new Request.Builder().url("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=75_MppLyM-Fy1rWPbJE8ccXfy90Afg_3wdENqKBEshglyyARP3egjvsti3agoaZJ0UVKHh_wwuIDcbu41ptPKleUcaD1vDRi4BrH8oN8TEHPTUCb1Kcp6ZoMJNNWScZKChAIAHSK").method("POST", requestBody).build();
+ try {
+ Response response = client.newCall(request).execute();
+ if (response.isSuccessful()) {
+ InputStream inputStream = new ByteArrayInputStream(response.body().bytes());
+ String nowDate = DateUtil.getNowShortDate();
+ File file = new File("D://test1.png");
+ FileUtils.copyInputStreamToFile(inputStream,file);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
/**
* 鐢熸垚灏忕▼搴忕爜
@@ -212,20 +259,63 @@
if(Objects.isNull(systemDictData)){
return;
}
+ String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+ systemDictData.getCode();
+ String release = systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.MINI_PROGRAMME_REALEASE).getCode();
//鐢熸垚鍥剧墖涓婁紶OSS
Map<String,Object> body = new HashMap<>();
// 鍦烘櫙鐮侊紝涓庡墠绔害瀹氾紝鏈�缁堟槸闇�瑕佸墠绔В鏋�
body.put("scene", locks.getSiteId() + "/" +locks.getCode() );
// 姝e紡鐗堜负 "release"锛屼綋楠岀増涓� "trial"锛屽紑鍙戠増涓� "develop"銆傞粯璁ゆ槸姝e紡鐗堛��
- body.put("env_version", "release");
- body.put("env_version", "trial");
+// body.put("env_version", "release");
+ body.put("env_version", StringUtils.defaultString(release, "release"));
// 閫忔槑锛屾牴鎹綘鐨勫満鏅嚜琛岃缃産ody鍙傛暟
body.put("is_hyaline", false);
body.put("check_path", false);
+ body.put("width", 290);
+ body.put("page","pages/index/index");
+ log.info("=========================================="+url+"\n"+JSONObject.toJSONString(body));
+ try {
+ InputStream inputStream =HttpsUtil.postJson(url,JSONObject.toJSONString(body));;
+ if (inputStream !=null) {
+ String nowDate = DateUtil.getNowShortDate();
+ String name =locks.getSiteId()+"-"+locks.getCode()+"-"+nowDate+".png";
+ String fileName =prePath+path+"/"+name;
+// File file = new File(prePath+path,locks.getSiteId()+"-"+locks.getCode()+"-"+nowDate+".png");
+// FileUtils.copyInputStreamToFile(inputStream,file);
+ if(ImageDesignerUtil.graphicsGenerationIs(locks.getSiteId()+"/"+locks.getCode(),inputStream,fileName)){
+ locks.setInfo(name);
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ /**
+ * 鐢熸垚灏忕▼搴忕爜
+ * https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/qr-code/getUnlimitedQRCode.html
+ * @return
+ */
+ public void generateWXMiniCodeOld(Locks locks,SystemDictData systemDictData,String prePath,String path){
+
+ if(Objects.isNull(systemDictData)){
+ return;
+ }
+ String release = systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.MINI_PROGRAMME_REALEASE).getCode();
+ //鐢熸垚鍥剧墖涓婁紶OSS
+ Map<String,Object> body = new HashMap<>();
+ // 鍦烘櫙鐮侊紝涓庡墠绔害瀹氾紝鏈�缁堟槸闇�瑕佸墠绔В鏋�
+ body.put("scene", locks.getSiteId() + "/" +locks.getCode() );
+ // 姝e紡鐗堜负 "release"锛屼綋楠岀増涓� "trial"锛屽紑鍙戠増涓� "develop"銆傞粯璁ゆ槸姝e紡鐗堛��
+// body.put("env_version", "release");
+ body.put("env_version", StringUtils.defaultString(release, "release"));
+ // 閫忔槑锛屾牴鎹綘鐨勫満鏅嚜琛岃缃産ody鍙傛暟
+ body.put("is_hyaline", Boolean.FALSE.toString());
+ body.put("check_path", Boolean.FALSE.toString());
body.put("page","pages/index/index");
OkHttpClient client = new OkHttpClient().newBuilder().build();
okhttp3.MediaType mediaType = okhttp3.MediaType.parse("application/json");
okhttp3.RequestBody requestBody = okhttp3.RequestBody.create(mediaType, JSONObject.toJSONString(body));
+ log.info("=========================================="+JSONObject.toJSONString(body));
Request request = new Request.Builder().url("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+systemDictData.getCode()).method("POST", requestBody).build();
try {
Response response = client.newCall(request).execute();
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
index 448d72e..b6147fa 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
@@ -792,7 +792,7 @@
if(Objects.nonNull(sites)){
Sites sites1 = new Sites();
sites1.setId(sites.getId());
- sites1.setLockNum(sites.getLockNum()+1);
+ sites1.setLockNum(Constants.formatIntegerNum(sites.getLockNum())+1);
sitesMapper.updateById(sites1);
}
}else{
diff --git a/server/services/src/main/resources/application-dev.yml b/server/services/src/main/resources/application-dev.yml
index 77fa08a..0ceac3a 100644
--- a/server/services/src/main/resources/application-dev.yml
+++ b/server/services/src/main/resources/application-dev.yml
@@ -5,6 +5,7 @@
username: postgres
password: Doumee@168
driver-class-name: org.postgresql.Driver
+
jpa:
properties:
hibernate:
--
Gitblit v1.9.3