| | |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | withdrawalService.addWithdrawal(receivePaymentName, receivePaymentAccount, withdrawalType, openBank, withdrawalMoney, uid); |
| | | return ResultUtil.success(); |
| | | return withdrawalService.addWithdrawal(receivePaymentName, receivePaymentAccount, withdrawalType, openBank, withdrawalMoney, uid); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | |
| | | @PostMapping("/queryList") |
| | | @ApiOperation(value = "提现查看分页列表", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "pageNum", name = "pageNum", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "size", name = "size", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil queryList(HttpServletRequest request){ |
| | | public ResultUtil queryList(Integer pageNum,Integer size,HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | Page<TWithdrawal> page = new PageFactory<TWithdrawal>().defaultPage(); |
| | | Page<TWithdrawal> page = new Page<>(pageNum,size); |
| | | List<TWithdrawal> result = withdrawalService.queryList(page, uid); |
| | | page.setRecords(result); |
| | | return ResultUtil.success(super.packForBT(page)); |
| | |
| | | Driver driver = driverService.selectById(uid); |
| | | Company company = companyService.selectById(driver.getCompanyId()); |
| | | Double driverRestriction = company.getDriverRestriction(); |
| | | if(driverRestriction>=driver.getBalance()){ |
| | | if(driverRestriction>driver.getBalance()){ |
| | | return ResultUtil.success(0); |
| | | }else { |
| | | return ResultUtil.success(1); |
| | |
| | | * 每笔订单扣除的使用费 |
| | | */ |
| | | private Double money; |
| | | /** |
| | | * 线上订单扣除比例% |
| | | */ |
| | | private Double onlineMoney; |
| | | /** |
| | | * 司机接单余额限制 |
| | | */ |
| | | private Double balance; |
| | | private Integer companyId; |
| | | |
| | | @Override |
| | |
| | | * @param withdrawalMoney |
| | | * @param uid |
| | | */ |
| | | void addWithdrawal(String receivePaymentName, String receivePaymentAccount, Integer withdrawalType, String openBank, BigDecimal withdrawalMoney, Integer uid); |
| | | ResultUtil addWithdrawal(String receivePaymentName, String receivePaymentAccount, Integer withdrawalType, String openBank, BigDecimal withdrawalMoney, Integer uid); |
| | | |
| | | /** |
| | | * 查询提现记录 |
| | |
| | | case 1: |
| | | return orderPrivateCarService.queryMoneyInfo(orderId); |
| | | case 2: |
| | | break; |
| | | return orderTaxiService.queryMoneyInfo(orderId); |
| | | } |
| | | return null; |
| | | } |
| | |
| | | @Service |
| | | public class TWithdrawalServiceImpl extends ServiceImpl<TWithdrawalMapper, TWithdrawal> implements ITWithdrawalService { |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | @Override |
| | | public void addWithdrawal(String receivePaymentName, String receivePaymentAccount, Integer withdrawalType, String openBank, BigDecimal withdrawalMoney, Integer uid) { |
| | | public ResultUtil addWithdrawal(String receivePaymentName, String receivePaymentAccount, Integer withdrawalType, String openBank, BigDecimal withdrawalMoney, Integer uid) { |
| | | |
| | | // 查询司机余额是否足够 |
| | | Driver driver = driverService.selectById(uid); |
| | | |
| | | if(withdrawalMoney.compareTo(BigDecimal.valueOf(driver.getBalance())) > 0){ |
| | | return ResultUtil.error("提现金额大于余额"); |
| | | } |
| | | |
| | | driver.setBalance(BigDecimal.valueOf(driver.getBalance()).subtract(withdrawalMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | driverService.updateById(driver); |
| | | |
| | | TWithdrawal tWithdrawal = new TWithdrawal(); |
| | | tWithdrawal.setDriverId(uid); |
| | | tWithdrawal.setReceivePaymentName(receivePaymentName); |
| | |
| | | tWithdrawal.setStatus(1); |
| | | tWithdrawal.setOpenBank(openBank); |
| | | this.insert(tWithdrawal); |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | @Override |
| | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.aliyun.oss.ServiceException; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.ApplicationArguments; |
| | | import org.springframework.boot.ApplicationRunner; |
| | |
| | | @Component |
| | | public class GDFalconUtil implements ApplicationRunner { |
| | | |
| | | private String key = "94fb3bba5b141c701cbdcab72fe9d9cf"; |
| | | private String key = "5053ca611c0106e01a665ce7ab84ff26"; |
| | | |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | |
| | | */ |
| | | @Override |
| | | public void run(ApplicationArguments args) throws Exception { |
| | | this.init(); |
| | | // this.init(); |
| | | } |
| | | |
| | | |
| | |
| | | /** |
| | | * 初始化创建服务 |
| | | */ |
| | | public void init(){ |
| | | if(serverId == null){ |
| | | JSONArray jsonArray = this.selectServer(); |
| | | if(null == jsonArray){ |
| | | serverId = this.createServer("server"); |
| | | }else{ |
| | | serverId = jsonArray.getJSONObject(0).getString("sid"); |
| | | } |
| | | } |
| | | |
| | | } |
| | | // public void init(){ |
| | | // if(serverId == null){ |
| | | // JSONArray jsonArray = this.selectServer(); |
| | | // if(null == jsonArray){ |
| | | // serverId = this.createServer("server"); |
| | | // }else{ |
| | | // serverId = jsonArray.getJSONObject(0).getString("sid"); |
| | | // } |
| | | // } |
| | | // |
| | | // } |
| | | |
| | | |
| | | /** |
| | |
| | | * @return |
| | | */ |
| | | public String selectTerminal(String name){ |
| | | String url = "https://tsapi.amap.com/v1/track/terminal/list?key=" + key + "&sid=" + serverId + "&name=" + name; |
| | | String url = "https://tsapi.amap.com/v1/track/terminal/list?key=" + key + "&name=" + name; |
| | | String forObject = restTemplate.getForObject(url, String.class); |
| | | JSONObject jsonObject = JSON.parseObject(forObject); |
| | | if(jsonObject.getIntValue("errcode") == 10000){ |
| | |
| | | System.err.println(jsonObject.getString("errmsg")); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 查询轨迹 |
| | | * @param tid 终端id |
| | | */ |
| | | public String selectTrack(String tid, String trid,Integer page){ |
| | | String url = "https://tsapi.amap.com/v1/track/terminal/trsearch?key=" + key + "&sid=" + serverId + "&tid=" + tid + "&trid=" + trid + "&page=" + page + "&pagesize=" + 999; |
| | | // String url = "https://tsapi.amap.com/v1/track/terminal/trsearch?key=" + key + "&sid=" + serverId + "&tid=" + tid + "&starttime=1708410190000" + "&endtime=1708419641315"; |
| | | //将请求头部和参数合成一个请求 |
| | | String s = restTemplate.getForObject(url , String.class); |
| | | JSONObject jsonObject = JSON.parseObject(s); |
| | | if(jsonObject.getIntValue("errcode") == 10000){ |
| | | return jsonObject.getString("data"); |
| | | } |
| | | System.err.println(jsonObject.getString("errmsg")); |
| | | if(jsonObject.getIntValue("errcode") != 10000){ |
| | | throw new ServiceException(jsonObject.getString("errmsg")); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | |
| | | // |
| | |
| | | @Component |
| | | public class GDMapGeocodingUtil { |
| | | |
| | | private String key = "WQhfsluNzEeUHUxoH4jc4JiCQOXw4Mnx"; |
| | | private String key = "3491db7ed190e5e4757fcb838e012130"; |
| | | |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | |
| | | |
| | | /** |
| | | * 将行政区域名称转化为坐标 |
| | | * |
| | | * @param province |
| | | * @param city |
| | | * @param county |
| | |
| | | } |
| | | |
| | | |
| | | public Map<String, Object> geocoding(String address) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | String url = "https://api.map.baidu.com/geocoding/v3/?address"+ address+"&output=json&ak=" +key+"&ret_coordtype="+"bd09ll"; |
| | | String forObject = restTemplate.getForObject(url, String.class); |
| | | JSONObject jsonObject = JSON.parseObject(forObject); |
| | | String status = jsonObject.getString("status"); |
| | | List<String> list = new ArrayList<>(); |
| | | if (status.equals("0")) { |
| | | JSONObject result = jsonObject.getJSONObject("result"); |
| | | JSONObject location = result.getJSONObject("location"); |
| | | String lng = location.getString("lng"); |
| | | String lat = location.getString("lat"); |
| | | list.add(lat + "," + lng); |
| | | } |
| | | map.put("status", 0); |
| | | map.put("data", list); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 根据经纬度获取行政区域信息 |
| | | * |
| | | * @param lon |
| | | * @param lan |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public Map<String, String> geocode(String lon, String lan) throws Exception { |
| | | String url = "https://api.map.baidu.com/reverse_geocoding/v3/?ak=" + key + "&output=json&coordtype=bd09ll" + "&location=" + lan + "," + lon; |
| | | String url = "https://restapi.amap.com/v3/geocode/regeo?key=" + key + "&location=" + lon + "," + lan; |
| | | String forObject = restTemplate.getForObject(url, String.class); |
| | | JSONObject jsonObject = JSON.parseObject(forObject); |
| | | Map<String, String> map = new HashMap<>(); |
| | | if (jsonObject.getString("status").equals("0")) { |
| | | JSONObject result = jsonObject.getJSONObject("result"); |
| | | JSONObject addressComponent = result.getJSONObject("addressComponent"); |
| | | String address = result.getString("formatted_address"); |
| | | |
| | | // gdInterfaceService.saveData("https://restapi.amap.com/v3/geocode/regeo", "经纬度转行政区域"); |
| | | |
| | | if(jsonObject.getString("status").equals("1")){ |
| | | JSONObject regeocode = jsonObject.getJSONObject("regeocode"); |
| | | JSONObject addressComponent = regeocode.getJSONObject("addressComponent"); |
| | | String address = regeocode.getString("formatted_address"); |
| | | map.put("address", address); |
| | | String code = addressComponent.getString("adcode"); |
| | | String province = addressComponent.getString("province"); |
| | |
| | | return map; |
| | | } |
| | | } |
| | | |
| | |
| | | tipMoney as redMoney, |
| | | state as state, |
| | | orderType as reservation, |
| | | payManner as payManner, |
| | | driverId as driverId |
| | | from t_order_taxi where 1 = 1 |
| | | <if test="null != driverId"> |
| | |
| | | tipMoney as redMoney, |
| | | state as state, |
| | | orderType as reservation, |
| | | payManner as payManner, |
| | | driverId as driverId |
| | | from t_order_taxi where 1 = 1 |
| | | <if test="null != driverId"> |
| | |
| | | tipMoney as redMoney, |
| | | state as state, |
| | | orderType as reservation, |
| | | payManner as payManner, |
| | | driverId as driverId |
| | | from t_order_taxi where 1 = 1 |
| | | <if test="null != driverId"> |
| | |
| | | * @throws Exception |
| | | */ |
| | | List<OrderTaxi> taskMidAxbUnBindSend() throws Exception; |
| | | |
| | | Map<String, Object> queryMoneyInfo(Integer orderId) throws Exception; |
| | | } |
| | |
| | | orderTaxi.setPayManner(type); |
| | | if(type == 2){//其他支付,不需要操作,直接完成订单 |
| | | orderTaxi = this.setMoney1(orderTaxi, travelFee, parkingFee, crossingFee); |
| | | orderTaxi.setState(8); |
| | | orderTaxi.setState(7); |
| | | }else{ |
| | | orderTaxi = this.setMoney2(orderTaxi, parkingFee, crossingFee); |
| | | orderTaxi.setState(7); |
| | |
| | | public List<OrderTaxi> taskMidAxbUnBindSend() throws Exception { |
| | | return orderTaxiMapper.taskMidAxbUnBindSend(); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> queryMoneyInfo(Integer orderId) throws Exception { |
| | | OrderTaxi orderTaxi = this.selectById(orderId); |
| | | if(orderTaxi.getState() == 5 || orderTaxi.getState() == 6){//服务中的时候获取实时费用数据 |
| | | if(orderTaxi.getPayManner() == 2){//其他支付,不需要操作,直接完成订单 |
| | | orderTaxi = this.setMoney1(orderTaxi, 0D, 0D, 0D); |
| | | }else{ |
| | | orderTaxi = this.setMoney2(orderTaxi, 0D, 0D); |
| | | } |
| | | } |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("orderMoney", orderTaxi.getOrderMoney());//订单金额 |
| | | map.put("startMileage", orderTaxi.getStartMileage());//起步价 |
| | | map.put("startMoney", orderTaxi.getStartMoney());//起步价 |
| | | map.put("mileageKilometers", orderTaxi.getMileageKilometers());//里程费 |
| | | map.put("mileageMoney", orderTaxi.getMileageMoney());//里程费 |
| | | map.put("duration", orderTaxi.getDuration());//时长费 |
| | | map.put("durationMoney", orderTaxi.getDurationMoney());//时长费 |
| | | map.put("wait", orderTaxi.getWait());//等待费 |
| | | map.put("waitMoney", orderTaxi.getWaitMoney());//等待费 |
| | | map.put("longDistance", orderTaxi.getLongDistance());//远途费 |
| | | map.put("longDistanceMoney", orderTaxi.getLongDistanceMoney());//远途费 |
| | | map.put("parkMoney", orderTaxi.getParkMoney());//停车费 |
| | | map.put("roadTollMoney", orderTaxi.getRoadTollMoney());//过路费 |
| | | map.put("redPacketMoney", orderTaxi.getRedPacketMoney());//红包抵扣金额 |
| | | map.put("couponMoney", orderTaxi.getCouponMoney());//优惠券抵扣金额 |
| | | map.put("discountMoney", orderTaxi.getDiscountMoney());//折扣抵扣金额 |
| | | map.put("discount", orderTaxi.getDiscount());//折扣 |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 计算价格 |
| | | * @param orderTaxi |
| | |
| | | // OrderTaxi.setLongDistance(new BigDecimal((d > rule.getDouble("num6")) ? d - rule.getDouble("num6") : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | OrderTaxi.setLongDistance(new BigDecimal((d > rule.getDouble("num6")) ? d - rule.getDouble("num6") : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | OrderTaxi.setLongDistanceMoney(new BigDecimal(yt1 + yt2 + yt3).setScale(2, BigDecimal.ROUND_DOWN).doubleValue());//远途费 |
| | | OrderTaxi.setParkMoney(parkingFee);//停车费 |
| | | OrderTaxi.setRoadTollMoney(crossingFee);//过路费 |
| | | OrderTaxi.setParkMoney(Objects.isNull(parkingFee)?0D:parkingFee);//停车费 |
| | | OrderTaxi.setRoadTollMoney(Objects.isNull(crossingFee)?0D:crossingFee);//过路费 |
| | | OrderTaxi.setRedPacketMoney(0D);//红包抵扣 |
| | | OrderTaxi.setCouponMoney(0D);//优惠券抵扣 |
| | | OrderTaxi.setDiscount(0D);//优惠抵扣 |
| | |
| | | // OrderTaxi.setLongDistance(new BigDecimal((d > rule.getDouble("num6")) ? d - rule.getDouble("num6") : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | OrderTaxi.setLongDistance(new BigDecimal((d > rule.getDouble("num6")) ? d - rule.getDouble("num6") : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | OrderTaxi.setLongDistanceMoney(new BigDecimal(yt1 + yt2 + yt3).setScale(2, BigDecimal.ROUND_DOWN).doubleValue());//远途费 |
| | | OrderTaxi.setParkMoney(parkingFee);//停车费 |
| | | OrderTaxi.setRoadTollMoney(crossingFee);//过路费 |
| | | OrderTaxi.setParkMoney(Objects.isNull(parkingFee)?0D:parkingFee);//停车费 |
| | | OrderTaxi.setRoadTollMoney(Objects.isNull(crossingFee)?0D:crossingFee);//过路费 |
| | | OrderTaxi.setRedPacketMoney(0D);//红包抵扣 |
| | | OrderTaxi.setCouponMoney(0D);//优惠券抵扣 |
| | | OrderTaxi.setDiscount(0D);//优惠抵扣 |
| | |
| | | // OrderTaxi.setLongDistance(new BigDecimal((d > rule.getDouble("num6")) ? d - rule.getDouble("num6") : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | OrderTaxi.setLongDistance(new BigDecimal((d > rule.getDouble("num6")) ? d - rule.getDouble("num6") : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | OrderTaxi.setLongDistanceMoney(new BigDecimal(yt1 + yt2 + yt3).setScale(2, BigDecimal.ROUND_DOWN).doubleValue());//远途费 |
| | | OrderTaxi.setParkMoney(parkingFee);//停车费 |
| | | OrderTaxi.setRoadTollMoney(crossingFee);//过路费 |
| | | OrderTaxi.setParkMoney(Objects.isNull(parkingFee)?0D:parkingFee);//停车费 |
| | | OrderTaxi.setRoadTollMoney(Objects.isNull(crossingFee)?0D:crossingFee);//过路费 |
| | | OrderTaxi.setRedPacketMoney(0D);//红包抵扣 |
| | | OrderTaxi.setCouponMoney(0D);//优惠券抵扣 |
| | | OrderTaxi.setDiscount(0D);//优惠抵扣 |
| | |
| | | |
| | | spring: |
| | | datasource: |
| | | # url: jdbc:mysql://127.0.0.1:3306/ziang?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai |
| | | # username: root |
| | | # password: fVa%egqp_1du |
| | | url: jdbc:mysql://127.0.0.1:10633/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true |
| | | url: jdbc:mysql://127.0.0.1:3306/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true |
| | | username: root |
| | | password: XianNing@2024! |
| | | password: 123456 |
| | | # url: jdbc:mysql://127.0.0.1:10633/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true |
| | | # username: root |
| | | # password: XianNing@2024! |
| | | db-name: guns #用来搜集数据库的所有表 |
| | | filters: wall,mergeStat |
| | | |
| | |
| | | .eq("userType", 6) |
| | | .eq("payState", 2) |
| | | .last("LIMIT 1")); |
| | | if (tPubTransactionDetails==null){ |
| | | model.addAttribute("companyMoney",""); |
| | | model.addAttribute("driverMoney",""); |
| | | |
| | | }else{ |
| | | model.addAttribute("companyMoney",tPubTransactionDetails.getMoney()); |
| | | model.addAttribute("driverMoney",new BigDecimal(tOrderTaxi.get("payMoney").toString()).subtract(tPubTransactionDetails.getMoney())); |
| | | |
| | | |
| | | } |
| | | if (tOrderTaxi.get("payManner")!=null){ |
| | | if(tOrderTaxi.get("payManner").equals("1")){ |
| | | model.addAttribute("payMannerStr","线上收款"); |
| | | }else { |
| | | model.addAttribute("payMannerStr","计费打表"); |
| | | } |
| | | } |
| | | |
| | | LogObjectHolder.me().set(tOrderTaxi); |
| | | return PREFIX + "tOrderTaxi_edit.html"; |
| | | } |
| | |
| | | * @param orderDetailId |
| | | * @return |
| | | */ |
| | | public static String URL = "https://yingyan.baidu.com/api/v3/track/gettrack?"; |
| | | |
| | | public static String AK = "WQhfsluNzEeUHUxoH4jc4JiCQOXw4Mnx"; |
| | | @ResponseBody |
| | | @RequestMapping(value = "/getOrderTrack", method = RequestMethod.POST) |
| | | public ResultUtil getOrderTrack(String orderDetailId){ |
| | |
| | | return map; |
| | | } |
| | | |
| | | String url = "https://api.map.baidu.com/geocoding/v3/"+"?output=json&ak=" +key+"&ret_coordtype="+"bd09ll"; |
| | | String url = "https://restapi.amap.com/v3/geocode/geo?key=" + key + "&output=JSON"; |
| | | url += "&address=" + (ToolUtil.isNotEmpty(province) ? province : "") + (ToolUtil.isNotEmpty(city) ? city : "") + (ToolUtil.isNotEmpty(county) ? county : "") + address; |
| | | String forObject = restTemplate.getForObject(url, String.class); |
| | | JSONObject jsonObject = JSON.parseObject(forObject); |
| | | String status = jsonObject.getString("status"); |
| | | List<String> list = new ArrayList<>(); |
| | | if(status.equals("0")){ |
| | | JSONObject result = jsonObject.getJSONObject("result"); |
| | | JSONObject location = result.getJSONObject("location"); |
| | | String lng = location.getString("lng"); |
| | | String lat = location.getString("lat"); |
| | | list.add(lat+","+lng); |
| | | |
| | | gdInterfaceService.saveData("https://restapi.amap.com/v3/geocode/geo", "行政区域转经纬度"); |
| | | |
| | | if(status.equals("1")){ |
| | | JSONArray geocodes = jsonObject.getJSONArray("geocodes"); |
| | | for(int i = 0; i < geocodes.size(); i++){ |
| | | String location = geocodes.getJSONObject(i).getString("location"); |
| | | list.add(location); |
| | | } |
| | | } |
| | | map.put("status", 0); |
| | | map.put("data", list); |
| | |
| | | |
| | | public Map<String, Object> geocoding(String address){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | String url = "https://api.map.baidu.com/geocoding/v3/?address"+ address+"&output=json&ak=" +key+"&ret_coordtype="+"bd09ll"; |
| | | String url = "https://restapi.amap.com/v3/geocode/geo?key=" + key + "&output=JSON&address=" + address; |
| | | String forObject = restTemplate.getForObject(url, String.class); |
| | | JSONObject jsonObject = JSON.parseObject(forObject); |
| | | String status = jsonObject.getString("status"); |
| | | List<String> list = new ArrayList<>(); |
| | | if(status.equals("0")){ |
| | | JSONObject result = jsonObject.getJSONObject("result"); |
| | | JSONObject location = result.getJSONObject("location"); |
| | | String lng = location.getString("lng"); |
| | | String lat = location.getString("lat"); |
| | | list.add(lat+","+lng); |
| | | |
| | | gdInterfaceService.saveData("https://restapi.amap.com/v3/geocode/geo", "行政区域转经纬度"); |
| | | |
| | | if(status.equals("1")){ |
| | | JSONArray geocodes = jsonObject.getJSONArray("geocodes"); |
| | | for(int i = 0; i < geocodes.size(); i++){ |
| | | String location = geocodes.getJSONObject(i).getString("location"); |
| | | list.add(location); |
| | | } |
| | | } |
| | | map.put("status", 0); |
| | | map.put("data", list); |
| | |
| | | * @throws Exception |
| | | */ |
| | | public Map<String, String> geocode(String lon, String lan) throws Exception{ |
| | | String url = "https://api.map.baidu.com/reverse_geocoding/v3/?ak=" + key + "&output=json&coordtype=bd09ll" + "&location=" + lan + "," + lon; |
| | | String url = "https://restapi.amap.com/v3/geocode/regeo?key=" + key + "&location=" + lon + "," + lan; |
| | | String forObject = restTemplate.getForObject(url, String.class); |
| | | JSONObject jsonObject = JSON.parseObject(forObject); |
| | | Map<String, String> map = new HashMap<>(); |
| | | |
| | | gdInterfaceService.saveData("https://api.map.baidu.com/reverse_geocoding", "经纬度转行政区域"); |
| | | gdInterfaceService.saveData("https://restapi.amap.com/v3/geocode/regeo", "经纬度转行政区域"); |
| | | |
| | | if (jsonObject.getString("status").equals("0")) { |
| | | JSONObject result = jsonObject.getJSONObject("result"); |
| | | JSONObject addressComponent = result.getJSONObject("addressComponent"); |
| | | String address = result.getString("formatted_address"); |
| | | if(jsonObject.getString("status").equals("1")){ |
| | | JSONObject regeocode = jsonObject.getJSONObject("regeocode"); |
| | | JSONObject addressComponent = regeocode.getJSONObject("addressComponent"); |
| | | String address = regeocode.getString("formatted_address"); |
| | | map.put("address", address); |
| | | String code = addressComponent.getString("adcode"); |
| | | String province = addressComponent.getString("province"); |
| | |
| | | # url: jdbc:mysql://127.0.0.1:3306/ziang?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai |
| | | # username: root |
| | | # password: fVa%egqp_1du |
| | | url: jdbc:mysql://192.168.110.34:3306/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true |
| | | url: jdbc:mysql://127.0.0.1:3306/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true |
| | | username: root |
| | | password: 123456 |
| | | db-name: guns #用来搜集数据库的所有表 |
| | |
| | | <meta name="renderer" content="webkit"/><!-- 让360浏览器默认选择webkit内核 --> |
| | | |
| | | <!--地图--> |
| | | <!-- <script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&ak=3mHKIXMArjgIkgADzOlTYp4XssNSNkwr"></script>--> |
| | | <!-- <script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&ak=3mHKIXMArjgIkgADzOlTYp4XssNSNkwr"></script>--> |
| | | <!-- <script src="https://webapi.amap.com/maps?v=1.4.8&key=e17d799b2506d05faf7f88320a266803"></script>--> |
| | | <script src="https://webapi.amap.com/maps?v=1.4.8&key=e17d799b2506d05faf7f88320a266803"></script> |
| | | <!--<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=IRKL4FLGKZUFr6T3gFk3t9X6kKarKu1K"></script>--> |
| | | <!-- <script src="https://api.map.baidu.com/api?v=3.0&ak=3mHKIXMArjgIkgADzOlTYp4XssNSNkwr"></script>--> |
| | | <!-- <script src="https://api.map.baidu.com/api?v=1.0&ak=3mHKIXMArjgIkgADzOlTYp4XssNSNkwr"></script>--> |
| | | |
| | | <!-- <script src="${ctxPath}/static/js/track1.js"></script>--> |
| | | |
| | | <!-- 全局css --> |
| | | <link rel="shortcut icon" href="${ctxPath}/static/img/logo.jpg"> |
| | |
| | | @layout("/common/_container.html"){ |
| | | <style type="text/css"> |
| | | body, |
| | | html { |
| | | width: 100%; |
| | | height: 100%; |
| | | margin: 0; |
| | | } |
| | | |
| | | #allmap { |
| | | html, body, #container { |
| | | height: 100%; |
| | | width: 100%; |
| | | } |
| | | |
| | | ul li { |
| | | list-style: none; |
| | | .input-card .btn{ |
| | | margin-right: 1.2rem; |
| | | width: 9rem; |
| | | } |
| | | |
| | | .btn-wrap { |
| | | z-index: 999; |
| | | position: fixed; |
| | | bottom: 3.5rem; |
| | | margin-left: 3rem; |
| | | padding: 1rem 1rem; |
| | | border-radius: .25rem; |
| | | background-color: #fff; |
| | | box-shadow: 0 2px 6px 0 rgba(27, 142, 236, 0.5); |
| | | } |
| | | |
| | | .btn { |
| | | width: 75px; |
| | | height: 30px; |
| | | float: left; |
| | | background-color: #fff; |
| | | color: rgba(27, 142, 236, 1); |
| | | font-size: 14px; |
| | | border: 1px solid rgba(27, 142, 236, 1); |
| | | border-radius: 5px; |
| | | margin: 0 5px; |
| | | text-align: center; |
| | | line-height: 30px; |
| | | } |
| | | |
| | | .btn:hover { |
| | | background-color: rgba(27, 142, 236, 0.8); |
| | | color: #fff; |
| | | .input-card .btn:last-child{ |
| | | margin-right: 0; |
| | | } |
| | | </style> |
| | | <div class="ibox float-e-margins"> |
| | |
| | | </div> |
| | | <div class="row"> |
| | | <div class="col-sm-10"> |
| | | <div class="form-horizontal" id="allmap" style="margin-left: 50px;width: 100%; height: 500px;"></div> |
| | | <div class="form-horizontal" id="container" style="margin-left: 50px;width: 100%; height: 500px;"></div> |
| | | <div class="input-card" style="margin-left: 50px;"> |
| | | <h4>轨迹回放控制</h4> |
| | | <div class="input-item"> |
| | |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=t5pcBZB5G4D11G9MzHq8Kik7jqzlTrAL"></script> |
| | | <script src="${ctxPath}/static/js/track1.js"></script> |
| | | <script src="${ctxPath}/static/js/track2.js"></script> |
| | | <script src="${ctxPath}/static/js/track3.js"></script> |
| | | <script type="text/javascript" src="//mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/track.js"></script> |
| | | <script src="${ctxPath}/static/modular/system/tOrderTaxi/tOrderTaxi_info.js"></script> |
| | | |
| | | </div> |
| | | </div> |
| | | <script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script> |
| | | <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=3mHKIXMArjgIkgADzOlTYp4XssNSNkwr"></script> |
| | | <script src="https://cache.amap.com/lbs/static/addToolbar.js"></script> |
| | | <script src="${ctxPath}/static/modular/system/tOrderTaxi/tOrderTaxi_info.js"></script> |
| | | @} |
| | |
| | | <h2 class="h3Class" style="font-weight: 700;">线路轨迹</h2> |
| | | </div> |
| | | </div> |
| | | <div class="row"> |
| | | <div class="row" style="margin-top: 30px;"> |
| | | <div class="col-sm-10"> |
| | | <div class="form-horizontal" id="allmap" style="margin-left: 50px;width: 100%; height: 500px;"></div> |
| | | <div class="form-horizontal" id="container" style="margin-left: 50px;width: 100%; height: 500px;"></div> |
| | | <div class="input-card" style="margin-left: 50px;"> |
| | | <h4>轨迹回放控制</h4> |
| | | <div class="input-item"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=t5pcBZB5G4D11G9MzHq8Kik7jqzlTrAL"></script> |
| | | <script src="${ctxPath}/static/js/track1.js"></script> |
| | | <script src="${ctxPath}/static/js/track2.js"></script> |
| | | <script src="${ctxPath}/static/js/track3.js"></script> |
| | | <script type="text/javascript" src="//mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/track.js"></script> |
| | | <script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script> |
| | | <script src="https://webapi.amap.com/maps?v=1.4.8&key=e17d799b2506d05faf7f88320a266803"></script> |
| | | <script src="https://cache.amap.com/lbs/static/addToolbar.js"></script> |
| | | <script src="${ctxPath}/static/modular/system/tOrderTaxi/tOrderTaxi_info.js"></script> |
| | | @} |
| | |
| | | ajax.start(); |
| | | } |
| | | |
| | | var map = new BMapGL.Map('allmap', { |
| | | style: 'grayed-out', |
| | | displayOptions: { |
| | | indoor: false, |
| | | poiText: false, |
| | | poiIcon: false, |
| | | building: false, |
| | | } |
| | | |
| | | var map = new AMap.Map("container", { |
| | | resizeEnable: true, |
| | | zoom: 14 |
| | | }); |
| | | var point = new BMapGL.Point(demo_data[0][0], demo_data[0][1]); |
| | | |
| | | map.centerAndZoom(point, 18); |
| | | map.enableScrollWheelZoom(true); |
| | | map.setTilt(35); |
| | | |
| | | var track = new Track.View(map, { |
| | | lineLayerOptions: { |
| | | style: { |
| | | strokeWeight: 8, |
| | | strokeLineJoin: 'round', |
| | | strokeLineCap: 'round' |
| | | }, |
| | | } |
| | | }); |
| | | |
| | | var trackData = []; |
| | | var colorOffset = []; |
| | | |
| | | function orderTrack(data) { |
| | | for(var item in data){ |
| | | var point = new BMapGL.Point(data[item].lon, data[item].lat); |
| | | var trackPoint = new Track.TrackPoint(point); |
| | | trackData.push(trackPoint); |
| | | // 不同速度区间对应颜色 |
| | | var choose = [0.9, 0.5, 0.1]; |
| | | var color = choose[Math.floor(Math.random() * choose.length)]; |
| | | colorOffset.push(color); |
| | | } |
| | | } |
| | | var startMarker = new BMapGL.Marker(trackData[0].getPoint(), { |
| | | icon: new BMapGL.Icon('https://mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/img/start.png', new BMapGL.Size(25, 40)), |
| | | offset: new BMapGL.Size(0, -16), |
| | | }); |
| | | map.addOverlay(startMarker); |
| | | var endMarker = new BMapGL.Marker(trackData[trackData.length-1].getPoint(), { |
| | | icon: new BMapGL.Icon('https://mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/img/end.png', new BMapGL.Size(25, 40)), |
| | | offset: new BMapGL.Size(0, -16), |
| | | |
| | | }); |
| | | map.addOverlay(endMarker); |
| | | var duration = 60000; |
| | | var step = duration / trackData.length; |
| | | |
| | | var trackRoad = new Track.LiveTrack({ |
| | | // visible: false, |
| | | duration: step, |
| | | linearTexture: [[0, '#f45e0c'], [0.5, '#f6cd0e'], [1, '#2ad61d']], |
| | | guideStyle: { |
| | | style:{ |
| | | traceDisappear: false, |
| | | traceStart: true, |
| | | sequence: true, |
| | | marginLength: 32, |
| | | arrowColor: '#fff', |
| | | strokeColor: 'rgba(27, 142, 236, 1)', |
| | | strokeTextureUrl: 'https://mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/img/down.png', |
| | | strokeTextureWidth: 64, |
| | | strokeTextureHeight: 32, |
| | | } |
| | | }, |
| | | }); |
| | | |
| | | trackRoad.setGuidTrackPath(trackData); |
| | | trackRoad.on(Track.LineCodes.GUIDE_STATUS, (e) => { |
| | | if (e.status === Track.GuidCodes.ADD_TO_MAP) { |
| | | var guidTrack = trackRoad.getGuidTrack(); |
| | | guidTrack.on(Track.LineCodes.STATUS, (status) => { |
| | | switch (status) { |
| | | case Track.StatusCodes.FINISH: |
| | | var box = trackRoad.getBBox(); |
| | | if(box){ |
| | | var bounds = [new BMapGL.Point(box[0], box[1]), new BMapGL.Point(box[2], box[3])]; |
| | | map.setViewport(bounds); |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | var movePoint = new Track.ModelPoint({ point: trackData[0].getPoint(), style:{ |
| | | url: 'https://mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/img/bus.glb', |
| | | scale: 9, |
| | | level: 18, |
| | | rotationX: 90, |
| | | rotationY: 90, |
| | | rotationZ: 0 |
| | | } }); |
| | | movePoint.setRotation(trackRoad.getGuidTrack().getStepInfoByIndex(0).angle); |
| | | |
| | | trackRoad.setMovePoint(movePoint); |
| | | |
| | | track.addTrackLine(trackRoad); |
| | | track.focusTrack(trackRoad); |
| | | |
| | | var ani; |
| | | var start = null; |
| | | var index = 0; |
| | | var finishIndex = 0; |
| | | |
| | | |
| | | function startAnimation(timestamp) { |
| | | if (!start) start = timestamp; |
| | | var progress = timestamp - start; |
| | | var next = step * (index - finishIndex); |
| | | |
| | | if(progress > next){ |
| | | if(index<trackData.length){ |
| | | movePoint.moveTo(trackData[index]); |
| | | var obj = trackRoad.getGuidTrack().getStepInfoByIndex(index); |
| | | trackRoad.setGradientColors(colorOffset.slice(0,index+1)); |
| | | index++; |
| | | }else{ |
| | | pauseAnimation(); |
| | | } |
| | | |
| | | } |
| | | ani = requestAnimationFrame(startAnimation); |
| | | } |
| | | |
| | | |
| | | function stopAnimation() { |
| | | pauseAnimation(); |
| | | index = 0; |
| | | finishIndex = index; |
| | | |
| | | start = null; |
| | | trackRoad.clearTrackPoint(); |
| | | movePoint.setPoint(trackData[0].getPoint()); |
| | | movePoint.setRotation(trackRoad.getGuidTrack().getStepInfoByIndex(0).angle); |
| | | } |
| | | function pauseAnimation() { |
| | | cancelAnimationFrame(ani); |
| | | finishIndex = index; |
| | | start = null; |
| | | } |
| | | function resumeAnimation() { |
| | | startAnimation(); |
| | | } |
| | | |
| | | $(function() { |
| | | $('#orderType').on('change', function () { |
| | | if($(this).val() == 1){ |
| | |
| | | }); |
| | | } |
| | | |
| | | var marker, lineArr = []; |
| | | |
| | | function orderTrack(data) { |
| | | for(var i in data){ |
| | | var waypoints = []; |
| | | var lon = parseFloat(data[i].lon); |
| | | var lat = parseFloat(data[i].lat); |
| | | waypoints.push(lon); |
| | | waypoints.push(lat); |
| | | lineArr.push(waypoints); |
| | | } |
| | | |
| | | marker = new AMap.Marker({ |
| | | map: map, |
| | | position: lineArr[0], |
| | | icon: "https://webapi.amap.com/images/car.png", |
| | | offset: new AMap.Pixel(-26, -13), |
| | | autoRotation: true, |
| | | angle:-90, |
| | | }); |
| | | |
| | | // 绘制轨迹 |
| | | var polyline = new AMap.Polyline({ |
| | | map: map, |
| | | path: lineArr, |
| | | showDir:true, |
| | | strokeColor: "#28F", //线颜色 |
| | | // strokeOpacity: 1, //线透明度 |
| | | strokeWeight: 6, //线宽 |
| | | // strokeStyle: "solid" //线样式 |
| | | }); |
| | | |
| | | var passedPolyline = new AMap.Polyline({ |
| | | map: map, |
| | | // path: lineArr, |
| | | strokeColor: "#AF5", //线颜色 |
| | | // strokeOpacity: 1, //线透明度 |
| | | strokeWeight: 6, //线宽 |
| | | // strokeStyle: "solid" //线样式 |
| | | }); |
| | | |
| | | |
| | | marker.on('moving', function (e) { |
| | | passedPolyline.setPath(e.passedPath); |
| | | }); |
| | | |
| | | map.setFitView(); |
| | | } |
| | | |
| | | |
| | | function startAnimation () { |
| | | marker.moveAlong(lineArr, 200); |
| | | } |
| | | |
| | | function pauseAnimation () { |
| | | marker.pauseMove(); |
| | | } |
| | | |
| | | function resumeAnimation () { |
| | | marker.resumeMove(); |
| | | } |
| | | |
| | | function stopAnimation () { |
| | | marker.stopMove(); |
| | | } |
| | |
| | | @Component |
| | | public class GDMapGeocodingUtil { |
| | | |
| | | private String key = "WQhfsluNzEeUHUxoH4jc4JiCQOXw4Mnx"; |
| | | private String key = "9de4f857805bc84051aa13adeb2c44c8"; |
| | | |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | |
| | | |
| | | public Map<String, Object> geocoding(String address){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | String url = "https://api.map.baidu.com/geocoding/v3/?address"+ address+"&output=json&ak=" +key+"&ret_coordtype="+"bd09ll"; |
| | | String url = "https://restapi.amap.com/v3/geocode/geo?key=" + key + "&output=JSON&address=" + address; |
| | | String forObject = restTemplate.getForObject(url, String.class); |
| | | JSONObject jsonObject = JSON.parseObject(forObject); |
| | | String status = jsonObject.getString("status"); |
| | | List<String> list = new ArrayList<>(); |
| | | if(status.equals("0")){ |
| | | JSONObject result = jsonObject.getJSONObject("result"); |
| | | JSONObject location = result.getJSONObject("location"); |
| | | String lng = location.getString("lng"); |
| | | String lat = location.getString("lat"); |
| | | list.add(lat+","+lng); |
| | | if(status.equals("1")){ |
| | | JSONArray geocodes = jsonObject.getJSONArray("geocodes"); |
| | | for(int i = 0; i < geocodes.size(); i++){ |
| | | String location = geocodes.getJSONObject(i).getString("location"); |
| | | list.add(location); |
| | | } |
| | | } |
| | | map.put("status", 0); |
| | | map.put("data", list); |
| | | return map; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 根据经纬度获取行政区域信息 |
| | | * @param lon |
| | |
| | | * @throws Exception |
| | | */ |
| | | public Map<String, String> geocode(String lon, String lan) throws Exception{ |
| | | String url = "https://api.map.baidu.com/reverse_geocoding/v3/?ak=" + key +"&output=json&coordtype=bd09ll"+"&location=" + lan + "," + lon; |
| | | String url = "https://restapi.amap.com/v3/geocode/regeo?key=" + key + "&location=" + lon + "," + lan; |
| | | String forObject = restTemplate.getForObject(url, String.class); |
| | | JSONObject jsonObject = JSON.parseObject(forObject); |
| | | Map<String, String> map = new HashMap<>(); |
| | | if(jsonObject.getString("status").equals("0")){ |
| | | JSONObject result = jsonObject.getJSONObject("result"); |
| | | JSONObject addressComponent = result.getJSONObject("addressComponent"); |
| | | String address = result.getString("formatted_address"); |
| | | |
| | | // gdInterfaceService.saveData("https://restapi.amap.com/v3/geocode/regeo", "经纬度转行政区域"); |
| | | |
| | | if(jsonObject.getString("status").equals("1")){ |
| | | JSONObject regeocode = jsonObject.getJSONObject("regeocode"); |
| | | JSONObject addressComponent = regeocode.getJSONObject("addressComponent"); |
| | | String address = regeocode.getString("formatted_address"); |
| | | map.put("address", address); |
| | | String code = addressComponent.getString("adcode"); |
| | | String province = addressComponent.getString("province"); |
| | |
| | | @Value("${wx.appid}") |
| | | private String appid;//微信appid |
| | | |
| | | @Value("${wx.appletsAppid}") |
| | | private String appletsAppid;//微信小程序appid |
| | | |
| | | @Value("${wx.mchId}") |
| | | private String mchId;//微信商户号 |
| | | |
| | |
| | | * @param tradeType 交易类型 |
| | | * @return |
| | | */ |
| | | public ResultUtil weixinpay(String body, String attach, String out_trade_no, String total_fee, String notify_url, String tradeType) throws Exception{ |
| | | public ResultUtil weixinpay(String body, String attach, String out_trade_no, String total_fee, String notify_url, String tradeType, String openId) throws Exception{ |
| | | int i = new BigDecimal(total_fee).multiply(new BigDecimal("100")).intValue(); |
| | | String hostAddress = null; |
| | | try { |
| | |
| | | } |
| | | String nonce_str = UUIDUtil.getRandomCode(16); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("appid", appid); |
| | | map.put("appid", "APP".equals(tradeType) ? appid : appletsAppid); |
| | | map.put("mch_id", mchId); |
| | | map.put("nonce_str", nonce_str); |
| | | map.put("body", body); |
| | |
| | | map.put("spbill_create_ip", hostAddress); |
| | | map.put("notify_url", callbackPath + notify_url); |
| | | map.put("trade_type", tradeType); |
| | | if("JSAPI".equals(tradeType)){ |
| | | map.put("openid", openId); |
| | | } |
| | | String s = this.weixinSignature(map); |
| | | map.put("sign", s); |
| | | |
| | |
| | | String result_code = map1.get("result_code"); |
| | | if("SUCCESS".equals(result_code)){ |
| | | String type = map1.get("trade_type"); |
| | | String prepay_id = map1.get("prepay_id"); |
| | | switch (type){ |
| | | case "JSAPI": |
| | | break; |
| | | //重新进行签名后返回给前端 |
| | | Map<String, Object> map2 = new HashMap<>(); |
| | | map2.put("appId", map1.get("appid")); |
| | | map2.put("nonceStr", map1.get("nonce_str")); |
| | | map2.put("package", "prepay_id=" + prepay_id); |
| | | map2.put("signType", "MD5"); |
| | | map2.put("timeStamp", new Date().getTime() + ""); |
| | | String s2 = this.weixinSignature(map2); |
| | | |
| | | map2.put("prepay_id", prepay_id); |
| | | map2.put("mch_id", map1.get("mch_id")); |
| | | map2.put("trade_type", map1.get("trade_type")); |
| | | |
| | | map2.put("sign", s2); |
| | | return ResultUtil.success(map2); |
| | | case "NATIVE": |
| | | String code_url = map1.get("code_url"); |
| | | return ResultUtil.success(code_url); |
| | | case "APP": |
| | | String prepay_id = map1.get("prepay_id"); |
| | | //重新进行签名后返回给前端 |
| | | Map<String, Object> map2 = new HashMap<>(); |
| | | map2.put("appid", appid); |
| | | map2.put("noncestr", nonce_str); |
| | | map2.put("package", "Sign=WXPay"); |
| | | map2.put("partnerid", mchId); |
| | | map2.put("prepayid", prepay_id); |
| | | map2.put("timestamp", new Date().getTime() / 1000); |
| | | String s1 = this.weixinSignature(map2); |
| | | map2.put("sign", s1); |
| | | System.err.println(map2); |
| | | return ResultUtil.success(map2); |
| | | Map<String, Object> map3 = new HashMap<>(); |
| | | map3.put("appid", appid); |
| | | map3.put("noncestr", nonce_str); |
| | | map3.put("package", "Sign=WXPay"); |
| | | map3.put("partnerid", mchId); |
| | | map3.put("prepayid", prepay_id); |
| | | map3.put("timestamp", new Date().getTime() / 1000); |
| | | String s1 = this.weixinSignature(map3); |
| | | map3.put("sign", s1); |
| | | System.err.println(map3); |
| | | return ResultUtil.success(map3); |
| | | } |
| | | return null; |
| | | }else{ |
| | |
| | | private String cancelRemark; |
| | | @ApiModelProperty("备注") |
| | | private String remark; |
| | | @ApiModelProperty("1=线上 2=打表") |
| | | private Integer payManner; |
| | | |
| | | public Integer getPayManner() { |
| | | return payManner; |
| | | } |
| | | |
| | | public void setPayManner(Integer payManner) { |
| | | this.payManner = payManner; |
| | | } |
| | | |
| | | public Integer getOrderId() { |
| | | return orderId; |
| | |
| | | orderInfoWarpper.setEndCity(null != map.get("endCity") ? map.get("endCity").toString() : ""); |
| | | orderInfoWarpper.setRemark(null != map.get("remark") ? map.get("remark").toString() : ""); |
| | | orderInfoWarpper.setLineShiftTime(null != map.get("lineShiftTime") ? map.get("lineShiftTime").toString() : ""); |
| | | orderInfoWarpper.setPayManner(null != map.get("payManner") ? Integer.valueOf(map.get("payManner").toString()) : 1); |
| | | } |
| | | return orderInfoWarpper; |
| | | } |
| | |
| | | a.endAddress as endAddress, |
| | | a.driverId as driverId, |
| | | a.orderMoney as orderMoney, |
| | | a.startMileage as startMileage, |
| | | a.startMoney as startMoney, |
| | | a.mileageKilometers as mileageKilometers, |
| | | a.mileageMoney as mileageMoney, |
| | | a.duration as duration, |
| | | a.durationMoney as durationMoney, |
| | | a.wait as wait, |
| | | a.waitMoney as waitMoney, |
| | | a.longDistance as longDistance, |
| | | a.longDistanceMoney as longDistanceMoney, |
| | | a.travelMoney as travelMoney, |
| | | a.parkMoney as parkMoney, |
| | | a.roadTollMoney as roadTollMoney, |
| | |
| | | appletsOpenId = userInfo.getAppletsOpenId(); |
| | | } |
| | | Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + ",2", 9, 5, uid.toString(), "完成订单", orderMoney, callbackPath + "/base/wxPayOrderTaxi", "", type, appletsOpenId); |
| | | if(map.get("code").equals("200")){ |
| | | paymentRecordService.saveData(1, orderTaxi.getUserId(), 1, orderId, 2, 1, orderMoney, map.get("order_id"), 1);//添加预支付数据 |
| | | resultUtil = ResultUtil.success(map.get("data")); |
| | | }else{ |
| | | resultUtil = ResultUtil.error(map.get("msg"), ""); |
| | | } |
| | | String app = type == 1 ? "APP" : "JSAPI"; |
| | | resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_2_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId()); |
| | | paymentRecordService.saveData(1, orderTaxi.getUserId(), 1, orderId, 2, 1, orderMoney, "", 1);//添加预支付数据 |
| | | // if(map.get("code").equals("200")){ |
| | | // paymentRecordService.saveData(1, orderTaxi.getUserId(), 1, orderId, 2, 1, orderMoney, map.get("order_id"), 1);//添加预支付数据 |
| | | // resultUtil = ResultUtil.success(map.get("data")); |
| | | // }else{ |
| | | // resultUtil = ResultUtil.error(map.get("msg"), ""); |
| | | // } |
| | | } |
| | | if(payType == 2){//支付宝支付 |
| | | Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + ",2", 10, 5, uid.toString(), "完成订单", orderMoney, callbackPath + "/base/aliPayOrderTaxi", "", type, null); |
| | |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | System.out.println("进入订单推送111111111111"); |
| | | orderIds.add(orderTaxi.getId());//添加记录,防止调用接口重复提醒无人接单 |
| | | String vehicle = redisUtil.getValue("VEHICLE"); |
| | | List<Integer> integers = new ArrayList<>(); |
| | | if(ToolUtil.isNotEmpty(vehicle)){ |
| | | integers = JSON.parseArray(vehicle).toJavaList(Integer.class); |
| | | } |
| | | System.out.println("进入订单推送22222222222222=========="+integers); |
| | | Company query = companyCityService.query(String.valueOf(orderTaxi.getStartLon()), String.valueOf(orderTaxi.getStartLat()));//获取起点所属分公司 |
| | | System.out.println("进入订单推送=========3==========="+query); |
| | | List<PushOrder> querys = pushOrderService.querys(null, 2, query.getId());//获取需要推送的次数 |
| | | System.out.println("进入订单推送=========4==========="+querys); |
| | | for(int i = 1; i <= querys.size(); i++){ |
| | | System.out.println("进入订单推送"); |
| | | PushOrder pushOrder = pushOrderService.querys(i, 2, query.getId()).get(0); |
| | | System.out.println("进入订单推送"); |
| | | //获取空闲司机 |
| | |
| | | if(list.size() > 0){ |
| | | System.out.println("进入司机推送"); |
| | | double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 |
| | | System.out.println("推送占比计算成小数======="+driverProportion); |
| | | int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取) |
| | | System.out.println("计算占比转成整数======="+lastIndex); |
| | | list = list.subList(0, lastIndex);//获取空闲司机中占比数据 |
| | | System.out.println("获取空闲司机中占比数据======="+list); |
| | | for(Driver driver : list){//开始进行推送 |
| | | System.out.println("开始进行推送======="+driver); |
| | | //查询是否在限制推单范围内 |
| | |
| | | if(bo){ |
| | | continue; |
| | | } |
| | | System.out.println("推送订单前"); |
| | | pushUtil.pushOrderState(2, driver.getId(), orderTaxi.getId(), 2, orderTaxi.getState(), pushOrder.getPushTime()); |
| | | System.out.println("推送订单后"); |
| | | } |
| | |
| | | |
| | | @ApiModelProperty(dataType = "int", required = true, value = "是否是老年人(0=否,1=是)") |
| | | private Integer oldPeople; |
| | | @ApiModelProperty(dataType = "int", required = true, value = "支付方式 1=平台支付 2=其他支付") |
| | | private Integer payManner; |
| | | |
| | | public Integer getPayManner() { |
| | | return payManner; |
| | | } |
| | | |
| | | public void setPayManner(Integer payManner) { |
| | | this.payManner = payManner; |
| | | } |
| | | |
| | | public Integer getOldPeople() { |
| | | return oldPeople; |
| | |
| | | orderTaxi.setStartAddress(orderTaxiWarpper.getStartAddress()); |
| | | orderTaxi.setEndAddress(orderTaxiWarpper.getEndAddress()); |
| | | orderTaxi.setOldPeople(orderTaxiWarpper.getOldPeople()); |
| | | orderTaxi.setPayManner(orderTaxiWarpper.getPayManner()); |
| | | return orderTaxi; |
| | | } |
| | | } |
| | |
| | | |
| | | spring: |
| | | datasource: |
| | | url: jdbc:mysql://127.0.0.1:10633/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true |
| | | url: jdbc:mysql://127.0.0.1:3306/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true |
| | | username: root |
| | | password: XianNing@2024! |
| | | password: 123456 |
| | | # url: jdbc:mysql://127.0.0.1:10633/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true |
| | | # username: root |
| | | # password: XianNing@2024! |
| | | # url: jdbc:mysql://116.169.59.170:3306/ziang?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai |
| | | # username: root |
| | | # password: fVa%egqp_1du |
| | |
| | | appSecret: f3874e9c813f31a2e90c37346eb74d82 #应用密钥AppSecret,在微信开放平台提交应用审核通过后获得 |
| | | appletsAppid: wx4d36488fa2cd2718 #小程序APPid |
| | | appletsAppSecret: f3874e9c813f31a2e90c37346eb74d82 # |
| | | mchId: 1593080081 #微信支付分配的商户号 |
| | | key: JnhREmZwHNKyFUQPEhijp1gdaCUzKg8P #key为商户平台设置的密钥key: |
| | | mchId: 1680621323 #微信支付分配的商户号 |
| | | key: g2sHcxXkfQ7HO92B5qhTgrA6XTLm9KYj #key为商户平台设置的密钥key: |
| | | |
| | | --- |
| | | |
| | |
| | | #spring.redis.port=16379 |
| | | spring.redis.port=6379 |
| | | # Redis·þÎñÆ÷Á¬½ÓÃÜÂ루ĬÈÏΪ¿Õ£© |
| | | spring.redis.password=XianNing@2024! |
| | | #spring.redis.password=123456 |
| | | #spring.redis.password=XianNing@2024! |
| | | spring.redis.password=123456 |
| | | # Á¬½Ó³Ø×î´óÁ¬½ÓÊý£¨Ê¹ÓøºÖµ±íʾûÓÐÏÞÖÆ£© |
| | | spring.redis.jedis.pool.max-active=1024 |
| | | # Á¬½Ó³Ø×î´ó×èÈûµÈ´ýʱ¼ä£¨Ê¹ÓøºÖµ±íʾûÓÐÏÞÖÆ£© |