Merge remote-tracking branch 'origin/master'
# Conflicts:
# DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java
# DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
# DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/zhenglian/SM4Util.java
# DriverQYTTravel/guns-admin/src/main/resources/application-dev.yml
# DriverQYTTravel/guns-admin/src/main/resources/application.yml
# UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
# UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
# UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
| | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | 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; |
| | |
| | | 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 java.text.MessageFormat; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | |
| | | |
| | | @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) { |
| | |
| | | } |
| | | 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(); |
| | |
| | | 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("获取二维码失败"); |
| | | } |
| | |
| | | @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<>(); |
| | |
| | | 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); |
| | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.stylefeng.guns.core.util.DateUtil; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; |
| | | import com.stylefeng.guns.modular.crossCity.warpper.OrderCrossCityInfoWrapper; |
| | | import com.stylefeng.guns.modular.crossCity.warpper.OrderWarpper; |
| | | import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics; |
| | |
| | | private ISysTimeoutMoneyService sysTimeoutMoneyService; |
| | | @Autowired |
| | | private IOpenCityService openCityService; |
| | | |
| | | @Autowired |
| | | private ICarService carService; |
| | | |
| | | |
| | | |
| | | |
| | |
| | | if(null == driverWork1){ |
| | | return ResultUtil.error("您已下班,无法接单"); |
| | | } |
| | | |
| | | Driver driver = driverService.selectById(uid); |
| | | |
| | | //判断车辆是否正在使用中 |
| | | Car car = carService.selectById(driver.getCarId()); |
| | | if(car.getUseDriverId() != null && !car.getUseDriverId().equals(uid)){ |
| | | return ResultUtil.error("当前绑定车辆正在使用中,请更换车辆"); |
| | | }else if(car.getUseDriverId()==null){ |
| | | car.setUseDriverId(uid); |
| | | carService.updateById(car); |
| | | } |
| | | |
| | | return orderService.grabOrder(orderId, orderType, uid); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | |
| | | |
| | | List<Map<String, Object>> queryIdleDataFromId(@Param("id") Integer id); |
| | | |
| | | void updateUseState(@Param("uid") Integer uid); |
| | | |
| | | |
| | | } |
| | |
| | | <result column="addType" property="addType"/> |
| | | <result column="addObjectId" property="addObjectId"/> |
| | | </resultMap> |
| | | |
| | | <update id="updateUseState"> |
| | | update t_car set useDriverId = null where useDriverId = #{uid} |
| | | </update> |
| | | |
| | | |
| | | <select id="queryIdleData" resultType="map"> |
| | |
| | | <select id="queryIdleDataFromId" resultType="java.util.Map"> |
| | | select |
| | | a.id as id, |
| | | CONCAT(a.carLicensePlate, '-',c.`name`, b.`name`, ' ', a.carColor) as name |
| | | CONCAT(a.carLicensePlate, '-',c.`name`, b.`name`, ' ', a.carColor) as name, |
| | | a.useDriverId as useDriverId |
| | | from t_car a |
| | | left join t_car_model b on (a.carModelId = b.id) |
| | | left join t_car_brand c on (b.brandId = c.id) |
| | |
| | | @TableField("addObjectId") |
| | | private Integer addObjectId; |
| | | |
| | | |
| | | /** |
| | | * 使用司机id |
| | | */ |
| | | @TableField("useDriverId") |
| | | private Integer useDriverId; |
| | | |
| | | public Integer getUseDriverId() { |
| | | return useDriverId; |
| | | } |
| | | |
| | | public void setUseDriverId(Integer useDriverId) { |
| | | this.useDriverId = useDriverId; |
| | | } |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | import com.stylefeng.guns.modular.system.model.Car; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.Date; |
| | |
| | | */ |
| | | ResultUtil addCar(Integer modelId, String color, String licensePlate, Date time, String drivingLicensePhoto, |
| | | String carPhoto, String insurancePhoto, Integer uid) throws Exception; |
| | | |
| | | boolean useState(@Param("carId") Integer carId, @Param("uid") Integer uid); |
| | | |
| | | void updateUseState(Integer carId, Integer uid); |
| | | void updateUseState(Integer uid); |
| | | |
| | | } |
| | |
| | | // driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1)); |
| | | for (Map<String, Object> stringObjectMap : list) { |
| | | // 1使用中 2空闲中 |
| | | if(stringObjectMap.get("id").toString().equals(carId.toString())){ |
| | | if(stringObjectMap.get("useDriverId").toString().equals(uid.toString())){ |
| | | map.put("useState", 1); |
| | | }else { |
| | | map.put("useState", 0); |
| | |
| | | this.insert(car); |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | @Override |
| | | public boolean useState(Integer carId, Integer uid) { |
| | | Car car = carMapper.selectById(carId); |
| | | if(car.getUseDriverId()!=null || !car.getUseDriverId().equals(uid)){ |
| | | return false; |
| | | } |
| | | return true; |
| | | |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void updateUseState(Integer carId, Integer uid) { |
| | | carMapper.updateUseState(uid); |
| | | Car car = carMapper.selectById(carId); |
| | | car.setUseDriverId(uid); |
| | | this.baseMapper.updateById(car); |
| | | } |
| | | @Override |
| | | public void updateUseState(Integer uid) { |
| | | carMapper.updateUseState(uid); |
| | | } |
| | | } |
| | |
| | | driver.setCityCode(registeredWarpper.getCityCode()); |
| | | driver.setProvince(registeredWarpper.getProvince()); |
| | | driver.setProvinceCode(registeredWarpper.getProvinceCode()); |
| | | driver.setCompanyId(registeredWarpper.getCompanyId()); |
| | | |
| | | String code = registeredWarpper.getAreaCode(); |
| | | Company query = companyCityService.query(code); |
| | |
| | | driverWorkMapper.updateById(driverWork); |
| | | driver.setState(1); |
| | | |
| | | // 更新车辆使用状态 |
| | | carService.updateUseState(uid); |
| | | |
| | | |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | |
| | | return ResultUtil.error("车辆正在使用中"); |
| | | } |
| | | } |
| | | |
| | | //判断车辆是否正在使用中 |
| | | Car car = carService.selectById(driver.getCarId()); |
| | | if(car.getUseDriverId() != null && !car.getUseDriverId().equals(uid)){ |
| | | return ResultUtil.error("当前绑定车辆正在使用中,请更换车辆"); |
| | | }else if(car.getUseDriverId()==null){ |
| | | car.setUseDriverId(uid); |
| | | carService.updateById(car); |
| | | } |
| | | |
| | | |
| | | |
| | | driverWork = new DriverWork(); |
| | | driverWork.setState(1); |
| | | driverWork.setDriverId(uid); |
| | |
| | | driverWorkMapper.updateById(driverWork); |
| | | driver.setState(1); |
| | | |
| | | // 更新车辆使用状态 |
| | | carService.updateUseState(uid); |
| | | |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | |
| | | } |
| | | }).start(); |
| | | }else{ |
| | | |
| | | //判断车辆是否正在使用中 |
| | | Car car = carService.selectById(driver.getCarId()); |
| | | if(car.getUseDriverId() != null && !car.getUseDriverId().equals(uid)){ |
| | | return ResultUtil.error("当前绑定车辆正在使用中,请更换车辆"); |
| | | }else if(car.getUseDriverId()==null){ |
| | | car.setUseDriverId(uid); |
| | | carService.updateById(car); |
| | | } |
| | | |
| | | |
| | | |
| | | driverWork = new DriverWork(); |
| | | driverWork.setState(1); |
| | | driverWork.setDriverId(uid); |
| | |
| | | if(driver.getState() == 3){ |
| | | return ResultUtil.error("还在服务中,不能更换"); |
| | | } |
| | | boolean idle = carService.idle(carId); |
| | | // boolean idle = carService.idle(carId); |
| | | // 修改是否别司机在使用 |
| | | boolean idle = carService.useState(carId,uid); |
| | | if(!idle){ |
| | | return ResultUtil.error("当前车辆已经有其他司机在使用,请更换车辆"); |
| | | } |
| | | // 将所有绑定他的车 =null |
| | | carService.updateUseState(carId,uid); |
| | | Car car = carService.selectById(carId); |
| | | car.setUseDriverId(uid); |
| | | carService.updateById( car); |
| | | driver.setCarId(carId); |
| | | this.updateById(driver); |
| | | return ResultUtil.success(); |
| | |
| | | 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; |
| | | // } |
| | | //} |
| | |
| | | @ApiModelProperty("区代码") |
| | | private String areaCode; |
| | | |
| | | @ApiModelProperty("公司id") |
| | | private Integer companyId; |
| | | |
| | | public Integer getCompanyId() { |
| | | return companyId; |
| | | } |
| | | |
| | | public void setCompanyId(Integer companyId) { |
| | | this.companyId = companyId; |
| | | } |
| | | |
| | | public String getProvince() { |
| | | return province; |
| | | } |
| | |
| | | password: 123456 |
| | | database: 0 |
| | | timeout: 1000 |
| | | cluster: |
| | | nodes: 192.168.110.80:6379 |
| | | # cluster: |
| | | # nodes: 127.0.0.1:6379 |
| | | mybatis-plus: |
| | | typeAliasesPackage: com.stylefeng.guns.modular |
| | | global-config: |
| | |
| | | } |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/api/order/addAppeal") |
| | | @ApiOperation(value = "发起申诉", tags = {"用户端-服务中"}, notes = "",response = OrderInfoWarpper.class) |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "申诉描述", name = "abnormalIntro", required = true, dataType = "String"), |
| | | @ApiImplicitParam(value = "申诉图片", name = "abnormalImg", required = true, dataType = "String"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<OrderInfoWarpper> addAppeal(Integer orderId, Integer orderType,String abnormalIntro, String abnormalImg, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = userInfoService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | switch (orderType){ |
| | | case 1://专车 |
| | | orderPrivateCarService.addAppeal(uid, orderId,abnormalIntro,abnormalImg); |
| | | break; |
| | | case 2://出租车 |
| | | orderTaxiService.addAppeal(uid,orderId,abnormalIntro,abnormalImg); |
| | | break; |
| | | case 3://跨城 |
| | | orderCrossCityService.addAppeal(uid,orderId,abnormalIntro,abnormalImg); |
| | | break; |
| | | } |
| | | return ResultUtil.success(); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取服务中的详情数据 |
| | |
| | | h.remark as cancelRemark, |
| | | CONCAT(j.startTime, '-', j.endTime) as lineShiftTime, |
| | | a.holidayFee, |
| | | a.discountAmount as taxiCardMoney |
| | | a.discountAmount as taxiCardMoney, |
| | | a.responsibilityType, |
| | | a.abnormalStatus, |
| | | a.abnormalRemark, |
| | | a.abnormalIntro, |
| | | a.abnormalImg |
| | | from t_order_cross_city a |
| | | left join t_driver b on (a.driverId = b.id) |
| | | left join t_car c on (a.carId = c.id) |
| | |
| | | @TableField("billNo") |
| | | private String billNo; |
| | | |
| | | /** |
| | | * 是否异常订单 1否 2是 |
| | | */ |
| | | @TableField("abnormal") |
| | | private Integer abnormal; |
| | | |
| | | |
| | | /** |
| | | * 乘客反馈情况 |
| | | */ |
| | | @TableField("abnormalIntro") |
| | | private String abnormalIntro; |
| | | |
| | | /** |
| | | * 乘客反馈图片 |
| | | */ |
| | | @TableField("abnormalImg") |
| | | private String abnormalImg; |
| | | |
| | | private String splitAllocation; |
| | | |
| | | public Integer getAbnormal() { |
| | | return abnormal; |
| | | } |
| | | |
| | | public void setAbnormal(Integer abnormal) { |
| | | this.abnormal = abnormal; |
| | | } |
| | | |
| | | public String getAbnormalIntro() { |
| | | return abnormalIntro; |
| | | } |
| | | |
| | | public void setAbnormalIntro(String abnormalIntro) { |
| | | this.abnormalIntro = abnormalIntro; |
| | | } |
| | | |
| | | public String getAbnormalImg() { |
| | | return abnormalImg; |
| | | } |
| | | |
| | | public void setAbnormalImg(String abnormalImg) { |
| | | this.abnormalImg = abnormalImg; |
| | | } |
| | | |
| | | public String getBillNo() { |
| | | return billNo; |
| | | } |
| | |
| | | * 获取未支付的跨城订单 |
| | | */ |
| | | List<UnPayOrderVO> getUnpayCrossCityOrders(Integer uid) throws Exception; |
| | | |
| | | /** |
| | | * 添加申诉 |
| | | */ |
| | | void addAppeal(Integer uid, Integer orderId,String abnormalIntro, String abnormalImg); |
| | | |
| | | } |
| | |
| | | if (Integer.valueOf(String.valueOf(map.get("state"))) == 11) { |
| | | map.put("state", map.get("oldState")); |
| | | } |
| | | if(Integer.valueOf(String.valueOf(map.get("state"))) ==7 && (map.get("responsibilityType")==null || Integer.valueOf(String.valueOf(map.get("responsibilityType")))<4)){ |
| | | map.put("appealButton", 1); |
| | | } |
| | | if(map.get("abnormalIntro")!=null){ |
| | | map.put("appealStatus", 1); |
| | | } |
| | | |
| | | Map<String, String> geocode = gdMapGeocodingUtil.geocode(map.get("startLon").toString(), map.get("startLat").toString()); |
| | | map.put("startCity", geocode.get("city")); |
| | | geocode = gdMapGeocodingUtil.geocode(map.get("endLon").toString(), map.get("endLat").toString()); |
| | |
| | | } |
| | | return unPayOrderVOList; |
| | | } |
| | | |
| | | @Override |
| | | public void addAppeal(Integer uid, Integer orderId, String abnormalIntro, String abnormalImg) { |
| | | OrderCrossCity orderCrossCity = this.selectById(orderId); |
| | | if(orderCrossCity.getState()!=7 || orderCrossCity.getAbnormalIntro()!=null){ |
| | | throw new RuntimeException("此订单无法申诉"); |
| | | } |
| | | orderCrossCity.setAbnormalIntro(abnormalIntro); |
| | | orderCrossCity.setAbnormalImg(abnormalImg); |
| | | orderCrossCity.setAbnormal(1); |
| | | this.baseMapper.updateById(orderCrossCity); |
| | | } |
| | | } |
| | |
| | | a.waitRule, |
| | | a.chargeRule, |
| | | a.chargeRules, |
| | | a.discountAmount as taxiCardMoney |
| | | a.discountAmount as taxiCardMoney, |
| | | a.responsibilityType, |
| | | a.abnormalStatus, |
| | | a.abnormalRemark, |
| | | a.abnormalIntro, |
| | | a.abnormalImg |
| | | from t_order_private_car a |
| | | left join t_driver b on (a.driverId = b.id) |
| | | left join t_car c on (a.carId = c.id) |
| | |
| | | @TableField("pid") |
| | | private Integer pid; |
| | | |
| | | /** |
| | | * 是否异常订单 1否 2是 |
| | | */ |
| | | @TableField("abnormal") |
| | | private Integer abnormal; |
| | | |
| | | |
| | | /** |
| | | * 乘客反馈情况 |
| | | */ |
| | | @TableField("abnormalIntro") |
| | | private String abnormalIntro; |
| | | |
| | | /** |
| | | * 乘客反馈图片 |
| | | */ |
| | | @TableField("abnormalImg") |
| | | private String abnormalImg; |
| | | |
| | | private Integer totalPeopleNum; |
| | | /** |
| | | * 预估里程(米) |
| | |
| | | |
| | | private String splitAllocation; |
| | | |
| | | public Integer getAbnormal() { |
| | | return abnormal; |
| | | } |
| | | |
| | | public void setAbnormal(Integer abnormal) { |
| | | this.abnormal = abnormal; |
| | | } |
| | | |
| | | public String getAbnormalIntro() { |
| | | return abnormalIntro; |
| | | } |
| | | |
| | | public void setAbnormalIntro(String abnormalIntro) { |
| | | this.abnormalIntro = abnormalIntro; |
| | | } |
| | | |
| | | public String getAbnormalImg() { |
| | | return abnormalImg; |
| | | } |
| | | |
| | | public void setAbnormalImg(String abnormalImg) { |
| | | this.abnormalImg = abnormalImg; |
| | | } |
| | | |
| | | public Integer getSpellSuccess() { |
| | | return spellSuccess; |
| | | } |
| | |
| | | * 获取专车未支付的订单 |
| | | */ |
| | | List<UnPayOrderVO> getUnpayPrivateOrders(Integer uid); |
| | | |
| | | /** |
| | | * 添加申诉 |
| | | */ |
| | | void addAppeal(Integer uid, Integer orderId,String abnormalIntro, String abnormalImg); |
| | | |
| | | } |
| | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.aliyun.oss.ServiceException; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | |
| | | } |
| | | return resultUtil; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public Map<String, Object> queryOrderInfo(Integer uid, Integer orderId) throws Exception { |
| | | Map<String, Object> map = orderPrivateCarMapper.queryOrderInfo(orderId); |
| | | if(null == map){ |
| | | OrderTaxi orderTaxi = orderTaxiService.selectOne(new EntityWrapper<OrderTaxi>() |
| | | .eq("userId", uid) |
| | | .eq("isDelete", 1) |
| | | .in("state", Arrays.asList(2, 3, 4, 5, 6, 7)) |
| | | ); |
| | | return orderTaxiService.queryOrderInfo(orderTaxi.getId()); |
| | | } |
| | | if(null != map.get("reassignNotice") && Integer.valueOf(String.valueOf(map.get("reassignNotice"))) == 2){//改派完成,重新获取了新的司机数据,开始修改数据防止继续调用 |
| | | OrderPrivateCar orderPrivateCar = this.selectById(orderId); |
| | | orderPrivateCar.setReassignNotice(0); |
| | | this.updateById(orderPrivateCar); |
| | | } |
| | | if(Integer.valueOf(String.valueOf(map.get("state"))) == 11){ |
| | | map.put("state", map.get("oldState")); |
| | | } |
| | | if(Integer.valueOf(String.valueOf(map.get("state"))) ==7 && (map.get("responsibilityType")==null || Integer.valueOf(String.valueOf(map.get("responsibilityType")))<4)){ |
| | | map.put("appealButton", 1); |
| | | } |
| | | if(map.get("abnormalIntro")!=null){ |
| | | map.put("appealStatus", 1); |
| | | } |
| | | |
| | | |
| | | if(Integer.valueOf(String.valueOf(map.get("state"))) != 8 && Integer.valueOf(String.valueOf(map.get("state"))) != 9){ |
| | | map.put("redPacketMoney", null); |
| | | map.put("couponMoney", null); |
| | | } |
| | | |
| | | String driverId = (String) redisTemplate.opsForValue().get("DEVICE_" + map.get("driverId")); |
| | | map.put("device", ToolUtil.isNotEmpty(driverId) ? 2 : 1); |
| | | map.put("orderType", 1); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 获取服务中的订单数据 |
| | | * @param uid |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public OrderServerWarpper queryOrderServer(Integer orderId, Integer uid) throws Exception { |
| | | OrderPrivateCar orderPrivateCar = this.selectById(orderId); |
| | | if(null == orderPrivateCar){ |
| | | return orderTaxiService.queryOrderServer(orderId, uid); |
| | | } |
| | | //计算预计距离和剩余时间 |
| | | String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(orderPrivateCar.getDriverId())); |
| | | if(null == value || "".equals(value)){ |
| | | System.err.println("司机没有上传位置信息"); |
| | | |
| | | //调用获取轨迹中的数据 |
| | | List<Map<String, Object>> list = orderPositionService.queryTrack(orderId, 2); |
| | | if(list.size() > 0){ |
| | | Map<String, Object> map = list.get(list.size() - 1); |
| | | value = map.get("lon") + "," + map.get("lat"); |
| | | } |
| | | |
| | | } |
| | | |
| | | OrderServerWarpper orderServerWarpper = new OrderServerWarpper(); |
| | | orderServerWarpper.setOrderId(orderPrivateCar.getId()); |
| | | orderServerWarpper.setOrderType(1); |
| | | orderServerWarpper.setState(orderPrivateCar.getState()); |
| | | orderServerWarpper.setLon(null != value ? value.split(",")[0] : "0.0"); |
| | | orderServerWarpper.setLat(null != value ? value.split(",")[1] : "0.0"); |
| | | orderServerWarpper.setReassignNotice(orderPrivateCar.getReassignNotice()); |
| | | if(orderPrivateCar.getState() == 2 || orderPrivateCar.getState() == 3){//前往预约地 |
| | | // TODO: 2023/11/4 无法修改 |
| | | Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), 1); |
| | | String d = "0"; |
| | | String t = "0"; |
| | | if(null == distance){ |
| | | System.err.println("查询距离出错了"); |
| | | }else{ |
| | | d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).toString(); |
| | | t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + ""; |
| | | } |
| | | orderServerWarpper.setReservationMileage(d); |
| | | orderServerWarpper.setReservationTime(t); |
| | | orderServerWarpper.setServedMileage("0"); |
| | | orderServerWarpper.setServedTime("0"); |
| | | orderServerWarpper.setLaveMileage("0"); |
| | | orderServerWarpper.setLaveTime("0"); |
| | | } |
| | | if(orderPrivateCar.getState() == 5 || orderPrivateCar.getState() == 6){//服务中 |
| | | // TODO: 2023/11/4 无法修改 |
| | | Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), 1); |
| | | String d = "0"; |
| | | String t = "0"; |
| | | if(null == distance){ |
| | | System.err.println("查询距离出错了"); |
| | | }else{ |
| | | d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).toString(); |
| | | t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + ""; |
| | | } |
| | | orderServerWarpper.setReservationMileage("0"); |
| | | orderServerWarpper.setReservationTime("0"); |
| | | orderServerWarpper.setServedMileage(String.valueOf((null == orderPrivateCar.getMileage() ? 0 : orderPrivateCar.getMileage()) / 1000)); |
| | | orderServerWarpper.setServedTime(Long.valueOf((new Date().getTime() - orderPrivateCar.getStartServiceTime().getTime()) / 60000).intValue() + ""); |
| | | orderServerWarpper.setLaveMileage(d); |
| | | orderServerWarpper.setLaveTime(t); |
| | | } |
| | | |
| | | return orderServerWarpper; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public synchronized String getOrderNum() throws Exception { |
| | |
| | | } |
| | | }).start(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void addAppeal(Integer uid, Integer orderId,String abnormalIntro, String abnormalImg) { |
| | | OrderPrivateCar orderPrivateCar = this.selectById(orderId); |
| | | if(orderPrivateCar.getState()!=7 || orderPrivateCar.getAbnormalIntro()!=null){ |
| | | throw new RuntimeException("此订单无法申诉"); |
| | | } |
| | | orderPrivateCar.setAbnormalIntro(abnormalIntro); |
| | | orderPrivateCar.setAbnormalImg(abnormalImg); |
| | | orderPrivateCar.setAbnormal(1); |
| | | this.baseMapper.updateById(orderPrivateCar); |
| | | |
| | | } |
| | | } |
| | |
| | | |
| | | private String time; |
| | | |
| | | |
| | | @ApiModelProperty("申诉按钮 1显示 0不显示") |
| | | private Integer appealButton=0; |
| | | |
| | | @ApiModelProperty("申诉状态 0未申诉 1申诉中") |
| | | private Integer appealStatus=0; |
| | | |
| | | |
| | | @ApiModelProperty("处理状态 1审核中 2已处理") |
| | | private Integer abnormalStatus; |
| | | @ApiModelProperty("处理结果") |
| | | private String abnormalRemark; |
| | | @ApiModelProperty("乘客反馈情况") |
| | | private String abnormalIntro; |
| | | @ApiModelProperty("乘客反馈情况图片") |
| | | private String abnormalImg; |
| | | @ApiModelProperty("1平台全责 2司机全责 3乘客全责 4平台部分 5司机部分") |
| | | private String responsibilityType; |
| | | |
| | | |
| | | public Integer getAbnormalStatus() { |
| | | return abnormalStatus; |
| | | } |
| | | |
| | | public void setAbnormalStatus(Integer abnormalStatus) { |
| | | this.abnormalStatus = abnormalStatus; |
| | | } |
| | | |
| | | public String getAbnormalRemark() { |
| | | return abnormalRemark; |
| | | } |
| | | |
| | | public void setAbnormalRemark(String abnormalRemark) { |
| | | this.abnormalRemark = abnormalRemark; |
| | | } |
| | | |
| | | public String getAbnormalIntro() { |
| | | return abnormalIntro; |
| | | } |
| | | |
| | | public void setAbnormalIntro(String abnormalIntro) { |
| | | this.abnormalIntro = abnormalIntro; |
| | | } |
| | | |
| | | public String getAbnormalImg() { |
| | | return abnormalImg; |
| | | } |
| | | |
| | | public void setAbnormalImg(String abnormalImg) { |
| | | this.abnormalImg = abnormalImg; |
| | | } |
| | | |
| | | public String getResponsibilityType() { |
| | | return responsibilityType; |
| | | } |
| | | |
| | | public void setResponsibilityType(String responsibilityType) { |
| | | this.responsibilityType = responsibilityType; |
| | | } |
| | | |
| | | public Integer getAppealStatus() { |
| | | return appealStatus; |
| | | } |
| | | |
| | | public void setAppealStatus(Integer appealStatus) { |
| | | this.appealStatus = appealStatus; |
| | | } |
| | | |
| | | public Integer getAppealButton() { |
| | | return appealButton; |
| | | } |
| | | |
| | | public void setAppealButton(Integer appealButton) { |
| | | this.appealButton = appealButton; |
| | | } |
| | | |
| | | public String getTime() { |
| | | return time; |
| | | } |
| | |
| | | @ApiModelProperty("订单状态(1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付)") |
| | | private Integer state; |
| | | |
| | | |
| | | |
| | | public Integer getOrderId() { |
| | | return orderId; |
| | | } |
| | |
| | | h.reason as cancelReason, |
| | | h.remark as cancelRemark, |
| | | a.holidayFee, |
| | | a.discountAmount as taxiCardMoney |
| | | a.discountAmount as taxiCardMoney, |
| | | a.responsibilityType, |
| | | a.abnormalStatus, |
| | | a.abnormalRemark, |
| | | a.abnormalIntro, |
| | | a.abnormalImg |
| | | from t_order_taxi a |
| | | left join t_driver b on (a.driverId = b.id) |
| | | left join t_car c on (a.carId = c.id) |
| | |
| | | @TableField("bindId") |
| | | private String bindId; |
| | | |
| | | /** |
| | | * 是否异常订单 1否 2是 |
| | | */ |
| | | @TableField("abnormal") |
| | | private Integer abnormal; |
| | | |
| | | |
| | | /** |
| | | * 乘客反馈情况 |
| | | */ |
| | | @TableField("abnormalIntro") |
| | | private String abnormalIntro; |
| | | |
| | | /** |
| | | * 乘客反馈图片 |
| | | */ |
| | | @TableField("abnormalImg") |
| | | private String abnormalImg; |
| | | |
| | | private String splitAllocation; |
| | | |
| | | |
| | | public Integer getAbnormal() { |
| | | return abnormal; |
| | | } |
| | | |
| | | public void setAbnormal(Integer abnormal) { |
| | | this.abnormal = abnormal; |
| | | } |
| | | |
| | | public String getAbnormalIntro() { |
| | | return abnormalIntro; |
| | | } |
| | | |
| | | public void setAbnormalIntro(String abnormalIntro) { |
| | | this.abnormalIntro = abnormalIntro; |
| | | } |
| | | |
| | | public String getAbnormalImg() { |
| | | return abnormalImg; |
| | | } |
| | | |
| | | public void setAbnormalImg(String abnormalImg) { |
| | | this.abnormalImg = abnormalImg; |
| | | } |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | |
| | | */ |
| | | List<UnPayOrderVO> getUnpayTaxiOrders(Integer uid); |
| | | |
| | | |
| | | /** |
| | | * 添加申诉 |
| | | * @param uid |
| | | * @param orderId |
| | | */ |
| | | void addAppeal(Integer uid, Integer orderId,String abnormalIntro, String abnormalImg); |
| | | } |
| | |
| | | if (Integer.valueOf(String.valueOf(map.get("state"))) == 11) { |
| | | map.put("state", map.get("oldState")); |
| | | } |
| | | |
| | | if(Integer.valueOf(String.valueOf(map.get("state"))) ==7 && (map.get("responsibilityType")==null || Integer.valueOf(String.valueOf(map.get("responsibilityType")))<4)){ |
| | | map.put("appealButton", 1); |
| | | } |
| | | if(map.get("abnormalIntro")!=null){ |
| | | map.put("appealStatus", 1); |
| | | } |
| | | String driverId = (String) redisTemplate.opsForValue().get("DEVICE_" + map.get("driverId")); |
| | | map.put("device", ToolUtil.isNotEmpty(driverId) ? 2 : 1); |
| | | map.put("orderType", 2); |
| | |
| | | |
| | | return unPayOrderVOList; |
| | | } |
| | | |
| | | @Override |
| | | public void addAppeal(Integer uid, Integer orderId, String abnormalIntro, String abnormalImg) { |
| | | OrderTaxi orderTaxi = this.selectById(orderId); |
| | | if(orderTaxi.getState()!=7 || orderTaxi.getAbnormalIntro()!=null){ |
| | | throw new RuntimeException("此订单无法申诉"); |
| | | } |
| | | orderTaxi.setAbnormalIntro(abnormalIntro); |
| | | orderTaxi.setAbnormalImg(abnormalImg); |
| | | orderTaxi.setAbnormal(1); |
| | | this.baseMapper.updateById(orderTaxi); |
| | | } |
| | | } |