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/api/DriverController.java | 127 ++++++++++++++++++----------------------- 1 files changed, 56 insertions(+), 71 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 bad9032..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 @@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSONObject; import com.alipay.api.internal.util.file.IOUtils; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.plugins.Page; import com.stylefeng.guns.config.properties.GunsProperties; import com.stylefeng.guns.core.util.DateUtil; @@ -25,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; @@ -39,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.*; @@ -56,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; @@ -531,94 +534,70 @@ } - @ApiOperation(value = "个人的小程序码(分享码)生成", tags = {"司机端-首页"}, notes = "") - @GetMapping("/api/driver/person-code") + @ApiOperation(value = "个人的小程序码(分享码)/链接", tags = {"司机端-首页"}, notes = "") + @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) { return ResultUtil.tokenErr(); } + Driver driver = driverService.selectById(uid); + String accessToken=null; + Object img = redisTemplate.opsForValue().get("DRIVER_WX_IMG" + uid); // 获取调用凭证accessToken - String accessToken = getAccessToken(); - RestTemplate rest = new RestTemplate(); + if(ToolUtil.isEmpty(driver.getShareLink())|| ToolUtil.isEmpty(img)){ + accessToken = getAccessToken(); + } + int index=0; - 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); + if(ToolUtil.isEmpty(img)) { + RestTemplate rest = new RestTemplate(); + 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); //二维码尺寸 + 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); + byte[] result = post.execute().bodyBytes(); + // base64 + img = Base64.getEncoder().encodeToString(result); + redisTemplate.opsForValue().set("DRIVER_WX_IMG" + uid, img,30, TimeUnit.DAYS); + } - System.out.println(object); + String urlLink = driver.getShareLink(); + if(ToolUtil.isEmpty(urlLink)) { + index=1; + String url1 = "https://api.weixin.qq.com/wxa/generate_urllink?access_token=" + accessToken; + Map<String, Object> param1 = new HashMap<>(); + param1.put("path", "pages/home/home"); + param1.put("query", "driverId=" + uid); - String url1 ="https://api.weixin.qq.com/wxa/generate_urllink?access_token="+accessToken; - Map<String, Object> param1 = new HashMap<>(); - param1.put("path", "pages/home/home"); - param1.put("query","driverId="+uid); + HttpRequest post = HttpUtil.createPost(url1); + // map转json + String jsonString = JSON.toJSONString(param1); + post.body(jsonString); + HttpResponse execute = post.execute(); + String body = execute.body(); + urlLink = JSONObject.parseObject(body).get("url_link").toString(); + driver.setShareLink(urlLink); + } - HttpRequest post = HttpUtil.createPost(url1); - // map转json - String jsonString = JSON.toJSONString(param1); - post.body(jsonString); - HttpResponse execute = post.execute(); - String body = execute.body(); - String urlLink = JSONObject.parseObject(body).get("url_link").toString(); + if(index==1){ + driverService.updateById(driver); + } - - HashMap<String, String> stringStringHashMap = new HashMap<>(); + HashMap<String, Object> stringStringHashMap = new HashMap<>(); stringStringHashMap.put("url_link",urlLink); - stringStringHashMap.put("img",object); - - -// 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); + stringStringHashMap.put("img",img); 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("获取二维码失败"); } @@ -1601,9 +1580,10 @@ @ApiOperation(value = "通过区code获取服务商", tags = {"司机端-注册"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "区code", name = "areaCode", required = true, dataType = "String"), + @ApiImplicitParam(value = "name", name = "name", required = false, dataType = "String"), }) - public ResultUtil<List<CompanyVo>> getCompany(String areaCode){ + public ResultUtil<List<CompanyVo>> getCompany(String areaCode,String name){ try { ArrayList<CompanyVo> companyVos = new ArrayList<>(); @@ -1611,7 +1591,12 @@ if(companyCities.isEmpty()){ return ResultUtil.success(companyVos); } - List<Company> companies = companyService.selectList(new EntityWrapper<Company>().ne("type", 1).ne("flag", 3).in("id", companyCities.stream().map(CompanyCity::getCompanyId).collect(Collectors.toList()))); + Wrapper<Company> in = new EntityWrapper<Company>().ne("type", 1).ne("flag", 3).in("id", companyCities.stream().map(CompanyCity::getCompanyId).collect(Collectors.toList())); + + if(ToolUtil.isNotEmpty( name)){ + in.like("name", name); + } + List<Company> companies = companyService.selectList(in); for (Company company : companies) { CompanyVo companyVo = new CompanyVo(company.getId(), company.getName()); companyVos.add(companyVo); -- Gitblit v1.7.1