From ae58e2ed4030730b772b30c91a8f129de63a94f6 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期日, 27 七月 2025 10:45:21 +0800
Subject: [PATCH] 添加首页地图车辆相关皆苦

---
 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java |  203 ++++++++++++++++++++++----------------------------
 1 files changed, 91 insertions(+), 112 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..c721ab2 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
@@ -6,8 +6,8 @@
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 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;
@@ -22,10 +22,8 @@
 import com.stylefeng.guns.modular.system.model.*;
 import com.stylefeng.guns.modular.system.model.vo.*;
 import com.stylefeng.guns.modular.system.service.*;
-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.QianYunTongConfig;
 import com.stylefeng.guns.modular.system.warpper.*;
 import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
@@ -37,28 +35,24 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.geo.Point;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.http.*;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.util.MultiValueMap;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
 import java.math.BigDecimal;
-import java.security.SecureRandom;
 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;
 
 /**
  * 司机控制器
@@ -87,7 +81,7 @@
     @Autowired
     private ICarService carService;
     
-    @Autowired
+    @Resource
     private RegionMapper regionMapper;
     
     @Autowired
@@ -108,7 +102,6 @@
     @Autowired
     private GunsProperties gunsProperties;
 
-
     @Autowired
     private ICompanyService companyService;
 
@@ -118,9 +111,23 @@
     @Autowired
     private TDriverPromotionActivityService driverPromotionActivityService;
 
-
     @Autowired
     private QianYunTongConfig qianYunTongConfig;
+    
+    @Value("${wx.url}")
+    private String ACCESS_TOKEN_URL;
+    
+    @Value("${wx.appletsAppSecret}")
+    private String memberAppSecret;
+    
+    @Value("${wx.appletsAppid}")
+    private String wxAppId;
+    
+    @Autowired
+    private RestTemplate restTemplate;
+    
+    @Autowired
+    private MongoTemplate mongoTemplate;
     
     /**
      * 获取短信验证码
@@ -531,109 +538,75 @@
     }
 
 
-    @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("获取二维码失败");
     }
 
-    @Value("${wx.url}")
-    private String ACCESS_TOKEN_URL;
-
-    @Value("${wx.appletsAppSecret}")
-    private String memberAppSecret;
-
-    @Value("${wx.appletsAppid}")
-    private String wxAppId;
-
-    @Autowired
-    private RestTemplate restTemplate;
+    
 
 
     public  String getAccessToken() {
@@ -757,6 +730,17 @@
     @PostMapping("/base/savePosition")
     public String savePosition(OrderPosition orderPosition){
         try {
+            //将最新定位存储mongodb中
+            GeoJsonPoint point = new GeoJsonPoint(new Point(Double.parseDouble(orderPosition.getLon()),
+                    Double.parseDouble(orderPosition.getLat())));
+            DriverPosition position = mongoTemplate.findOne(Query.query(Criteria.where("driverId")
+                    .is(orderPosition.getDriverId())), DriverPosition.class);
+            if(null == position){
+                position = new DriverPosition();
+            }
+            position.setPoint(point);
+            mongoTemplate.save(position);
+            //处理业务上的功能
             orderPositionService.saveData(orderPosition);
             return JSON.toJSONString(ResultUtil.success());
         }catch (Exception e){
@@ -992,17 +976,18 @@
      */
     @ResponseBody
     @PostMapping("/api/driver/queryPhone")
-    @ApiOperation(value = "获取客服电话", tags = {"司机端-个人中心"}, notes = "车队=franchisee,分公司=branch,平台=platform")
+    @ApiOperation(value = "获取客服电话(黔云通)", tags = {"司机端-个人中心"}, notes = "车队=franchisee,分公司=branch,平台=platform")
     @ApiImplicitParams({
+            @ApiImplicitParam(value = "当前行政区划代码", name = "code", required = true, dataType = "String"),
             @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
     })
-    public ResultUtil queryPhone(HttpServletRequest request){
+    public ResultUtil queryPhone(String code, HttpServletRequest request){
         try {
             Integer uid = driverService.getUserIdFormRedis(request);
             if(null == uid){
                 return ResultUtil.tokenErr();
             }
-            Map<String, Object> map = driverService.queryPhone(uid);
+            Map<String, Object> map = driverService.queryPhone(uid, code);
             return ResultUtil.success(map);
         }catch (Exception e){
             e.printStackTrace();
@@ -1601,9 +1586,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 +1597,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);
@@ -1826,18 +1817,6 @@
         }
     }
     
-    
-    @ResponseBody
-    @GetMapping("/base/driver/getDriverInfo")
-    public void getDriverInfo(String lsu, String ssologinid, String ticket, HttpSession session) {
-        try {
-            String onconParam = edu.yale.its.tp.cas.client.Util.getOnconParam(session);
-            onconParam = new String(Base64.getDecoder().decode(onconParam), "UTF-8");
-            System.err.println("lsu: " + lsu + ",ticket: " + ticket + ",ssologinid: " + ssologinid);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
 
 
 //    @ResponseBody

--
Gitblit v1.7.1