From 6209aee60fd4a4a0253a701659c411e4dc35063b Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期一, 11 八月 2025 19:36:39 +0800 Subject: [PATCH] 修改bug --- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java | 174 ++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 104 insertions(+), 70 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 aae9336..3b42ed5 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 @@ -24,8 +24,12 @@ import com.stylefeng.guns.modular.system.service.*; 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.util.zhenglian.CallbackUtil; +import com.stylefeng.guns.modular.system.util.zhenglian.TokenUtil; +import com.stylefeng.guns.modular.system.util.zhenglian.model.MessageBody; +import com.stylefeng.guns.modular.system.util.zhenglian.model.TokenRequest; +import com.stylefeng.guns.modular.system.util.zhenglian.model.TradeTerminalInfo; import com.stylefeng.guns.modular.system.warpper.*; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; @@ -36,25 +40,19 @@ 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.HttpEntity; -import org.springframework.http.HttpMethod; -import org.springframework.http.ResponseEntity; -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.*; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -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.*; @@ -88,7 +86,7 @@ @Autowired private ICarService carService; - @Autowired + @Resource private RegionMapper regionMapper; @Autowired @@ -109,7 +107,6 @@ @Autowired private GunsProperties gunsProperties; - @Autowired private ICompanyService companyService; @@ -119,9 +116,26 @@ @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; + + @Autowired + private WeChatUtil weChatUtil; /** * 获取短信验证码 @@ -545,7 +559,7 @@ } Driver driver = driverService.selectById(uid); String accessToken=null; - Object img = redisTemplate.opsForValue().get("DRIVER_WX_IMG" + uid); + Object img = redisTemplate.opsForValue().get("dache:DRIVER_WX_IMG" + uid); // 获取调用凭证accessToken if(ToolUtil.isEmpty(driver.getShareLink())|| ToolUtil.isEmpty(img)){ accessToken = getAccessToken(); @@ -600,17 +614,7 @@ 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() { @@ -734,6 +738,18 @@ @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.setDriverId(orderPosition.getDriverId()); + position.setPoint(point); + mongoTemplate.save(position); + //处理业务上的功能 orderPositionService.saveData(orderPosition); return JSON.toJSONString(ResultUtil.success()); }catch (Exception e){ @@ -1590,7 +1606,7 @@ if(companyCities.isEmpty()){ return ResultUtil.success(companyVos); } - Wrapper<Company> in = 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>().eq("type", 2).ne("flag", 3).in("id", companyCities.stream().map(CompanyCity::getCompanyId).collect(Collectors.toList())); if(ToolUtil.isNotEmpty( name)){ in.like("name", name); @@ -1730,8 +1746,7 @@ } } - @Autowired - private WeChatUtil weChatUtil; + @ResponseBody @PostMapping("/api/driver/getDriverCode") @@ -1795,13 +1810,13 @@ driver.setAuthState(3); driverService.updateById(driver); //开始验证当前账号是否在别处登录 - String value = (String) redisTemplate.opsForValue().get("DRIVER_" + driverId); + String value = (String) redisTemplate.opsForValue().get("dache:DRIVER_" + driverId); if (ToolUtil.isNotEmpty(value)) {//将另外设备上的强迫下线 //开始清除redis中无效的数据 - String key = (String) redisTemplate.opsForValue().get("DRIVER_" + driver.getPhone()); + String key = (String) redisTemplate.opsForValue().get("dache:DRIVER_" + driver.getPhone()); redisTemplate.delete(key);//删除个人信息数据 - redisTemplate.delete("DRIVER_" + driver.getPhone());//删除后台冻结相关缓存 - redisTemplate.delete("DRIVER_" + driverId);//清除存储的token + redisTemplate.delete("dache:DRIVER_" + driver.getPhone());//删除后台冻结相关缓存 + redisTemplate.delete("dache:DRIVER_" + driverId);//清除存储的token } return ResultUtil.success(); } catch (Exception e) { @@ -1810,40 +1825,59 @@ } } - - -// @ResponseBody -// @RequestMapping(value = "/base/driver/uploadImg", method = RequestMethod.POST) -// @ApiOperation(value = "上传图片", tags = {"司机端-注册"}, notes = "") -// public ResultUtil uploadImg(MultipartFile file) { -// try { -// String bucketName = "grjy_test"; -// Bucket grjyTest = NCOSSUtil.getBucketInfo(bucketName); -// if (null == grjyTest) { -// //创建桶 -// Boolean bucket = NCOSSUtil.createBucket(bucketName); -// if (!bucket) { -// return ResultUtil.error("创建存储桶失败"); -// } -// //设置桶策略 -// String policyText = "{\"Version\":\"2025-06-23\",\"Statement\":[{\"Sid\":\"Stmt20250623\",\"Action\":[\"GetObject\"]" + -// ",\"Effect\":\"Allow\",\"Resource\":[\"" + bucketName + "\"/*],\"Principal\":{*}}]}"; -// Boolean bucketPolicy = NCOSSUtil.setBucketPolicy(bucketName, policyText); -// if (!bucketPolicy) { -// return ResultUtil.error("设置桶策略失败"); -// } -// } -// //上传对象 -// String key = "image/driver/" + UUID.randomUUID().toString() + ".png"; -// String object = NCOSSUtil.putObject(bucketName, key, file.getInputStream()); -// if (null == object) { -// return ResultUtil.error("上传图片失败"); -// } -// -// return ResultUtil.success("http://" + QianYunTongProperties.endPoint + "/" + key); -// } catch (Exception e) { -// e.printStackTrace(); -// return ResultUtil.runErr(); -// } -// } + @ResponseBody + @PostMapping("/api/driver/getZLToken") + @ApiOperation(value = "获取证联token(黔云通)", tags = {"司机端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(value = "当前设备IP地址", name = "ip", required = true, dataType = "String"), + @ApiImplicitParam(value = "当前设备mac地址", name = "mac", required = true, dataType = "String"), + @ApiImplicitParam(value = "01 证联收银台支付\n" + + "\t 04 HOME 页\n" + + "\t 06 申请免密签约\n" + + "\t 07 商户收银台支付\n" + + "\t 08 开户(绑卡)\n" + + "\t 09 开通支付账户\n" + + "\t 10 打开付款码", name = "type", required = true, dataType = "String"), + }) + public ResultUtil<String> getZLToken(String ip, String mac, String type, HttpServletRequest request){ + try { + Integer driverId = driverService.getUserIdFormRedis(request); + if (null == driverId) { + return ResultUtil.tokenErr(); + } + Driver driver = driverService.selectById(driverId); + TokenRequest tokenRequest = new TokenRequest(); + tokenRequest.setAppUserId(driver.getEmpId().toString()); + tokenRequest.setUserName(driver.getName()); + tokenRequest.setCertNo(driver.getIdCard()); + tokenRequest.setPhone(driver.getPhone()); + TradeTerminalInfo tradeTerminalInfo = new TradeTerminalInfo(); + tradeTerminalInfo.setIp(ip); + tradeTerminalInfo.setTerminal("1"); + tradeTerminalInfo.setMac(mac); + tokenRequest.setTradeTerminalInfo(tradeTerminalInfo); + tokenRequest.setType(type); + String token = TokenUtil.getToken(tokenRequest); + return ResultUtil.success(token); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + + /** + * 证联通知回调 + * @param messageBody + * @param request + * @return + */ + @ResponseBody + @PostMapping("/base/driver/zlCallback") + public void zlCallback(@RequestBody MessageBody messageBody, HttpServletRequest request){ + String callback = CallbackUtil.callback(messageBody); + System.err.println("证联通知回调:" + callback); + log.info("证联通知回调:" + callback); + } } -- Gitblit v1.7.1