From 1d07ee4cfa2965587f092e5295ce96f4079268b4 Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期六, 26 七月 2025 16:50:11 +0800 Subject: [PATCH] 更新微信三方 --- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/NCOSSUtil.java | 486 ++++++++++++++++++++++++------------------------ DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java | 70 +----- 2 files changed, 258 insertions(+), 298 deletions(-) diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java index fe52aee..eeb5a38 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java @@ -26,7 +26,7 @@ import com.stylefeng.guns.modular.system.util.ALiSendSms; import com.stylefeng.guns.modular.system.util.ResultUtil; import com.stylefeng.guns.modular.system.util.WeChatUtil; -import com.stylefeng.guns.modular.system.util.qianyuntong.NCOSSUtil; +//import com.stylefeng.guns.modular.system.util.qianyuntong.NCOSSUtil; import com.stylefeng.guns.modular.system.util.qianyuntong.QianYunTongConfig; import com.stylefeng.guns.modular.system.warpper.*; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; @@ -40,6 +40,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.http.*; +import org.springframework.util.Base64Utils; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.*; @@ -57,6 +58,7 @@ import java.text.MessageFormat; import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import static org.bouncycastle.cms.RecipientId.password; @@ -533,13 +535,11 @@ @ApiOperation(value = "个人的小程序码(分享码)/链接", tags = {"司机端-首页"}, notes = "") - @GetMapping("/api/driver/person-code") + @GetMapping("/api/driver/personCode") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) - public ResultUtil<HashMap<String, String>> createQRcode(HttpServletRequest request) { - InputStream inputStream = null; - OutputStream outputStream = null; + public ResultUtil<HashMap<String, Object>> personCode(HttpServletRequest request) { try { Integer uid = driverService.getUserIdFormRedis(request); if (null == uid) { @@ -547,37 +547,26 @@ } Driver driver = driverService.selectById(uid); String accessToken=null; + Object img = redisTemplate.opsForValue().get("DRIVER_WX_IMG" + uid); // 获取调用凭证accessToken - if(ToolUtil.isEmpty(driver.getShareImg())|| ToolUtil.isEmpty(driver.getShareImg())){ + if(ToolUtil.isEmpty(driver.getShareLink())|| ToolUtil.isEmpty(img)){ accessToken = getAccessToken(); } - String img=driver.getShareImg(); int index=0; - if(ToolUtil.isEmpty(driver.getShareImg())) { - index=1; + if(ToolUtil.isEmpty(img)) { RestTemplate rest = new RestTemplate(); - String imgUrl = ""; String url = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=" + accessToken; Map<String, Object> param = new HashMap<>(); param.put("path", "pages/home/home?driverId=" + uid); param.put("width", 430); //二维码尺寸 - MultiValueMap<String, String> headers = new LinkedMultiValueMap<>(); - HttpEntity requestEntity = new HttpEntity(param, headers); - ResponseEntity<byte[]> entity = rest.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]); - byte[] result = entity.getBody(); - inputStream = new ByteArrayInputStream(result); + HttpRequest post = HttpUtil.createPost(url); + post.body(JSON.toJSONString(param)); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); - // 最后上传生成的文件名 - String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + ".jpg"; - // oss中的文件夹名 - String objectName = sdf.format(new Date()) + "/" + finalFileName; - String key = "imgs/management/" + objectName; - String object = NCOSSUtil.putObject(qianYunTongConfig.getBucketName(), key, inputStream); - System.out.println(object); - driver.setShareImg(object); - img= object; + byte[] result = post.execute().bodyBytes(); + // base64 + img = Base64.getEncoder().encodeToString(result); + redisTemplate.opsForValue().set("DRIVER_WX_IMG" + uid, img,30, TimeUnit.DAYS); } String urlLink = driver.getShareLink(); @@ -602,42 +591,13 @@ driverService.updateById(driver); } - HashMap<String, String> stringStringHashMap = new HashMap<>(); + HashMap<String, Object> stringStringHashMap = new HashMap<>(); stringStringHashMap.put("url_link",urlLink); stringStringHashMap.put("img",img); - - -// inputStream = new ByteArrayInputStream(result); -// -// SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); -// // 最后上传生成的文件名 -// String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + ".jpg"; -// // oss中的文件夹名 -// String objectName = sdf.format(new Date()) + "/" + finalFileName; -// // 上传oss -//// ossUtil.uploadFile2OSS(inputStream, objectName); -//// //获取文件的URl地址 -//// imgUrl = ossUtil.getImgUrl(objectName); -// log.info("imgUrl: "+imgUrl); return ResultUtil.success(stringStringHashMap); } catch (Exception e) { log.error("调用小程序生成微信永久小程序码URL接口异常", e); - }finally { - if(inputStream != null){ - try { - inputStream.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if(outputStream != null){ - try { - outputStream.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } } return ResultUtil.error("获取二维码失败"); } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/NCOSSUtil.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/NCOSSUtil.java index e65e84f..b4b768f 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/NCOSSUtil.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/NCOSSUtil.java @@ -1,243 +1,243 @@ -package com.stylefeng.guns.modular.system.util.qianyuntong; - -import com.heredata.hos.HOS; -import com.heredata.hos.HOSClientBuilder; -import com.heredata.hos.model.CreateBucketRequest; -import com.heredata.hos.model.HOSObject; -import com.heredata.hos.model.PutObjectRequest; -import com.heredata.hos.model.PutObjectResult; -import com.heredata.hos.model.bucket.Bucket; -import com.heredata.model.VoidResult; -import com.stylefeng.guns.modular.system.util.SpringContextsUtil; -import lombok.extern.slf4j.Slf4j; - -import java.io.InputStream; - -/** - * OSS 工具类 - * @author zhibing.pu - * @Date 2025/6/23 17:50 - */ -@Slf4j -public class NCOSSUtil { - - private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig();; - - /** - * 创建桶 - * @param bucketName - * @return - */ - public static Boolean createBucket(String bucketName) { - /** - * endPoint:HOS的基础路径(公共前缀) - * account:账户的ID - * accessKey:向UAAS服务请求到的access_key - * secretKey:向UAAS服务请求到的secret_key - */ - HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); - try { - // 创建请求对象,并且设置创建桶名为"example"的桶 - CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName); - VoidResult result = hos.createBucket(createBucketRequest); - if (result.getResponse().isSuccessful()) { - log.info("创建桶成功:" + bucketName); - return true; - } - } catch (Exception e){ - log.info("创建桶失败:" + bucketName); - e.printStackTrace(); - } - return false; - } - - - /** - * 查询桶详情 - * @param bucketName - * @return - */ - public static Bucket getBucketInfo(String bucketName) { - /** - * endPoint:HOS的基础路径(公共前缀) - * account:账户的ID - * accessKey:向UAAS服务请求到的access_key - * secretKey:向UAAS服务请求到的secret_key - */ - HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); - try { - // 查询桶名为"example"的详情 - Bucket bucket = hos.getBucketInfo(bucketName); - return bucket; - } catch (Exception e){ - e.printStackTrace(); - } - return null; - } - - - /** - * 删除桶 - * @param bucketName - * @return - */ - public static Boolean deleteBucket(String bucketName) { - /** - * endPoint:HOS的基础路径(公共前缀) - * account:账户的ID - * accessKey:向UAAS服务请求到的access_key - * secretKey:向UAAS服务请求到的secret_key - */ - HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); - try { - VoidResult result = hos.deleteBucket(bucketName); - if (result.getResponse().isSuccessful()) { - log.info("删除桶成功:" + bucketName); - return true; - } - } catch (Exception e){ - log.info("删除桶成功:" + bucketName); - e.printStackTrace(); - } - return false; - } - - - /** - * 设置桶策略 - * @param bucketName 桶名 - * @param policyText 策略规则字符串 - * { - * // 策略配置的版本号,由用户定义 - * "Version": "2012-10-17", - * // 策略规则配置,可指定多条策略规则 - * "Statement": [{ - * // 策略规则ID,可用户指定,如不指定则服务自动生成一条 - * "Sid": "sid", - * // 策略规则指定的HOS API接口标识,可参照下表填写 - * "Action": [ - * "action" - * ], - * // 策略规则效果,具体表现为允许或拒绝,有效值为Allow(允许),Deny(拒绝); - * "Effect": "Allow", - * // 策略规则指定的资源参照下面resource配置 - * "Resource": "resource", - * // 策略规则指定的授权人 参照下面Principal配置 - * "Principal": { - * "HWS": [ - * "account_id:root" - * ] - * } - * } - * ] - * } - * @return - */ - public static Boolean setBucketPolicy(String bucketName, String policyText) { - /** - * endPoint:HOS的基础路径(公共前缀) - * account:账户的ID - * accessKey:向UAAS服务请求到的access_key - * secretKey:向UAAS服务请求到的secret_key - */ - HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); - // 桶策略字符串 - try { - VoidResult result = hos.setBucketPolicy(bucketName, policyText); - if (result.getResponse().isSuccessful()) { - log.info("设置桶策略成功:" + bucketName); - return true; - } - } catch (Exception e) { - log.info("设置桶策略失败:" + bucketName); - e.printStackTrace(); - } - return false; - } - - - /** - * 上传对象 - * @param bucketName 桶名称 - * @param key 存储文件名 - * @param inputStream 上传文件流 - * @return 对象唯一标识 - */ - public static String putObject(String bucketName, String key, InputStream inputStream) { - /** - * endPoint:HOS的基础路径(公共前缀) - * account:账户的ID - * accessKey:向UAAS服务请求到的access_key - * secretKey:向UAAS服务请求到的secret_key - */ - HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); - try { - PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key , inputStream); - PutObjectResult example = hos.putObject(putObjectRequest); - if (example.getResponse().isSuccessful()) { - log.info("上传对象成功:" + bucketName + "--->" + key); - return example.getETag(); - } - } catch (Exception e) { - log.info("上传对象成功:" + bucketName); - e.printStackTrace(); - } - return null; - } - - - /** - * 查询对象 - * @param bucketName 桶名称 - * @param key 存储文件名 - * @return - */ - public static HOSObject getObject(String bucketName, String key) { - /** - * endPoint:HOS的基础路径(公共前缀) - * account:账户的ID - * accessKey:向UAAS服务请求到的access_key - * secretKey:向UAAS服务请求到的secret_key - */ - HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); - try { - HOSObject example = hos.getObject(bucketName, key); - if (example.getResponse().isSuccessful()) { - log.info("查询对象成功:" + bucketName + "--->" + key); - return example; - } - } catch (Exception e) { - log.info("查询对象失败:" + bucketName); - e.printStackTrace(); - } - return null; - } - - - /** - * 删除对象 - * @param bucketName 桶名称 - * @param key 存储文件名 - * @return - */ - public static Boolean deleteObject(String bucketName, String key) { - /** - * endPoint:HOS的基础路径(公共前缀) - * account:账户的ID - * accessKey:向UAAS服务请求到的access_key - * secretKey:向UAAS服务请求到的secret_key - */ - HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); - try { - VoidResult example = hos.deleteObject(bucketName, key); - if (example.getResponse().isSuccessful()) { - log.info("删除对象成功:" + bucketName + "--->" + key); - return true; - } - } catch (Exception e) { - log.info("删除对象失败:" + bucketName + "--->" + key); - e.printStackTrace(); - } - return false; - } -} +//package com.stylefeng.guns.modular.system.util.qianyuntong; +// +//import com.heredata.hos.HOS; +//import com.heredata.hos.HOSClientBuilder; +//import com.heredata.hos.model.CreateBucketRequest; +//import com.heredata.hos.model.HOSObject; +//import com.heredata.hos.model.PutObjectRequest; +//import com.heredata.hos.model.PutObjectResult; +//import com.heredata.hos.model.bucket.Bucket; +//import com.heredata.model.VoidResult; +//import com.stylefeng.guns.modular.system.util.SpringContextsUtil; +//import lombok.extern.slf4j.Slf4j; +// +//import java.io.InputStream; +// +///** +// * OSS 工具类 +// * @author zhibing.pu +// * @Date 2025/6/23 17:50 +// */ +//@Slf4j +//public class NCOSSUtil { +// +// private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig();; +// +// /** +// * 创建桶 +// * @param bucketName +// * @return +// */ +// public static Boolean createBucket(String bucketName) { +// /** +// * endPoint:HOS的基础路径(公共前缀) +// * account:账户的ID +// * accessKey:向UAAS服务请求到的access_key +// * secretKey:向UAAS服务请求到的secret_key +// */ +// HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); +// try { +// // 创建请求对象,并且设置创建桶名为"example"的桶 +// CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName); +// VoidResult result = hos.createBucket(createBucketRequest); +// if (result.getResponse().isSuccessful()) { +// log.info("创建桶成功:" + bucketName); +// return true; +// } +// } catch (Exception e){ +// log.info("创建桶失败:" + bucketName); +// e.printStackTrace(); +// } +// return false; +// } +// +// +// /** +// * 查询桶详情 +// * @param bucketName +// * @return +// */ +// public static Bucket getBucketInfo(String bucketName) { +// /** +// * endPoint:HOS的基础路径(公共前缀) +// * account:账户的ID +// * accessKey:向UAAS服务请求到的access_key +// * secretKey:向UAAS服务请求到的secret_key +// */ +// HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); +// try { +// // 查询桶名为"example"的详情 +// Bucket bucket = hos.getBucketInfo(bucketName); +// return bucket; +// } catch (Exception e){ +// e.printStackTrace(); +// } +// return null; +// } +// +// +// /** +// * 删除桶 +// * @param bucketName +// * @return +// */ +// public static Boolean deleteBucket(String bucketName) { +// /** +// * endPoint:HOS的基础路径(公共前缀) +// * account:账户的ID +// * accessKey:向UAAS服务请求到的access_key +// * secretKey:向UAAS服务请求到的secret_key +// */ +// HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); +// try { +// VoidResult result = hos.deleteBucket(bucketName); +// if (result.getResponse().isSuccessful()) { +// log.info("删除桶成功:" + bucketName); +// return true; +// } +// } catch (Exception e){ +// log.info("删除桶成功:" + bucketName); +// e.printStackTrace(); +// } +// return false; +// } +// +// +// /** +// * 设置桶策略 +// * @param bucketName 桶名 +// * @param policyText 策略规则字符串 +// * { +// * // 策略配置的版本号,由用户定义 +// * "Version": "2012-10-17", +// * // 策略规则配置,可指定多条策略规则 +// * "Statement": [{ +// * // 策略规则ID,可用户指定,如不指定则服务自动生成一条 +// * "Sid": "sid", +// * // 策略规则指定的HOS API接口标识,可参照下表填写 +// * "Action": [ +// * "action" +// * ], +// * // 策略规则效果,具体表现为允许或拒绝,有效值为Allow(允许),Deny(拒绝); +// * "Effect": "Allow", +// * // 策略规则指定的资源参照下面resource配置 +// * "Resource": "resource", +// * // 策略规则指定的授权人 参照下面Principal配置 +// * "Principal": { +// * "HWS": [ +// * "account_id:root" +// * ] +// * } +// * } +// * ] +// * } +// * @return +// */ +// public static Boolean setBucketPolicy(String bucketName, String policyText) { +// /** +// * endPoint:HOS的基础路径(公共前缀) +// * account:账户的ID +// * accessKey:向UAAS服务请求到的access_key +// * secretKey:向UAAS服务请求到的secret_key +// */ +// HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); +// // 桶策略字符串 +// try { +// VoidResult result = hos.setBucketPolicy(bucketName, policyText); +// if (result.getResponse().isSuccessful()) { +// log.info("设置桶策略成功:" + bucketName); +// return true; +// } +// } catch (Exception e) { +// log.info("设置桶策略失败:" + bucketName); +// e.printStackTrace(); +// } +// return false; +// } +// +// +// /** +// * 上传对象 +// * @param bucketName 桶名称 +// * @param key 存储文件名 +// * @param inputStream 上传文件流 +// * @return 对象唯一标识 +// */ +// public static String putObject(String bucketName, String key, InputStream inputStream) { +// /** +// * endPoint:HOS的基础路径(公共前缀) +// * account:账户的ID +// * accessKey:向UAAS服务请求到的access_key +// * secretKey:向UAAS服务请求到的secret_key +// */ +// HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); +// try { +// PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key , inputStream); +// PutObjectResult example = hos.putObject(putObjectRequest); +// if (example.getResponse().isSuccessful()) { +// log.info("上传对象成功:" + bucketName + "--->" + key); +// return example.getETag(); +// } +// } catch (Exception e) { +// log.info("上传对象成功:" + bucketName); +// e.printStackTrace(); +// } +// return null; +// } +// +// +// /** +// * 查询对象 +// * @param bucketName 桶名称 +// * @param key 存储文件名 +// * @return +// */ +// public static HOSObject getObject(String bucketName, String key) { +// /** +// * endPoint:HOS的基础路径(公共前缀) +// * account:账户的ID +// * accessKey:向UAAS服务请求到的access_key +// * secretKey:向UAAS服务请求到的secret_key +// */ +// HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); +// try { +// HOSObject example = hos.getObject(bucketName, key); +// if (example.getResponse().isSuccessful()) { +// log.info("查询对象成功:" + bucketName + "--->" + key); +// return example; +// } +// } catch (Exception e) { +// log.info("查询对象失败:" + bucketName); +// e.printStackTrace(); +// } +// return null; +// } +// +// +// /** +// * 删除对象 +// * @param bucketName 桶名称 +// * @param key 存储文件名 +// * @return +// */ +// public static Boolean deleteObject(String bucketName, String key) { +// /** +// * endPoint:HOS的基础路径(公共前缀) +// * account:账户的ID +// * accessKey:向UAAS服务请求到的access_key +// * secretKey:向UAAS服务请求到的secret_key +// */ +// HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); +// try { +// VoidResult example = hos.deleteObject(bucketName, key); +// if (example.getResponse().isSuccessful()) { +// log.info("删除对象成功:" + bucketName + "--->" + key); +// return true; +// } +// } catch (Exception e) { +// log.info("删除对象失败:" + bucketName + "--->" + key); +// e.printStackTrace(); +// } +// return false; +// } +//} -- Gitblit v1.7.1