| | |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.stylefeng.guns.core.common.constant.state.Order; |
| | | import com.stylefeng.guns.core.util.DateUtil; |
| | |
| | | import com.stylefeng.guns.modular.system.dao.PhoneMapper; |
| | | import com.stylefeng.guns.modular.system.dao.RegionMapper; |
| | | import com.stylefeng.guns.modular.system.dao.SysReformistMapper; |
| | | import com.stylefeng.guns.modular.system.model.BankCard; |
| | | import com.stylefeng.guns.modular.system.model.Driver; |
| | | import com.stylefeng.guns.modular.system.model.OrderPosition; |
| | | import com.stylefeng.guns.modular.system.model.Region; |
| | | import com.stylefeng.guns.modular.system.model.*; |
| | | import com.stylefeng.guns.modular.system.service.*; |
| | | import com.stylefeng.guns.modular.system.util.*; |
| | | import com.stylefeng.guns.modular.system.util.GoogleMap.DistancematrixVo; |
| | |
| | | |
| | | @Autowired |
| | | private IBankCardService bankCardService; |
| | | |
| | | @Autowired |
| | | private ICancleOrderService cancleOrderService; |
| | | |
| | | @Autowired |
| | | private ISettlementDetailService settlementDetailService; |
| | | |
| | | @Autowired |
| | | private ISettlementRecordService settlementRecordService; |
| | | |
| | | @Resource |
| | | private IBalanceUsageRecordService balanceUsageRecordService; |
| | | |
| | | |
| | | |
| | |
| | | // List<Map<String, Object>> list2 = orderCrossCityService.queryOrderList(state, uid); |
| | | // datas.addAll(list2); |
| | | //小件物流 |
| | | List<Map<String, Object>> list3 = orderLogisticsService.queryOrderList(uid, language); |
| | | List<Map<String, Object>> list3 = orderLogisticsService.queryOrderList(state, uid, language); |
| | | datas.addAll(list3); |
| | | |
| | | //分页 |
| | |
| | | List<Map<String, Object>> list2 = orderCrossCityService.queryOrderList(language, state, uid); |
| | | datas.addAll(list2); |
| | | }else{//小件物流 |
| | | List<Map<String, Object>> list3 = orderLogisticsService.queryOrderList(uid, language); |
| | | List<Map<String, Object>> list3 = orderLogisticsService.queryOrderList(state, uid, language); |
| | | datas.addAll(list3); |
| | | } |
| | | |
| | |
| | | // datas.addAll(list); |
| | | //专车 |
| | | List<Map<String, Object>> list1 = orderPrivateCarService.queryMyAllOrder(state, uid, language); |
| | | for (Map<String, Object> map : list1) { |
| | | Integer id = Integer.valueOf(map.get("id").toString()); |
| | | map.put("settleAccounts", 0); |
| | | SettlementDetail settlementDetail = settlementDetailService.selectOne(new EntityWrapper<SettlementDetail>().eq("orderId", id).eq("orderType", 1)); |
| | | if(null != settlementDetail){ |
| | | SettlementRecord settlementRecord = settlementRecordService.selectById(settlementDetail.getSettlementRecordId()); |
| | | map.put("settleAccounts", null == settlementRecord || settlementRecord.getPaymentStatus() == 1 ? 0 : 1); |
| | | } |
| | | } |
| | | datas.addAll(list1); |
| | | //跨城 |
| | | // List<Map<String, Object>> list2 = orderCrossCityService.queryMyAllOrder(state, uid); |
| | | // datas.addAll(list2); |
| | | //小件物流 |
| | | List<Map<String, Object>> list3 = orderLogisticsService.queryMyAllOrder(state, uid, language); |
| | | for (Map<String, Object> map : list3) { |
| | | Integer id = Integer.valueOf(map.get("id").toString()); |
| | | map.put("settleAccounts", 0); |
| | | SettlementDetail settlementDetail = settlementDetailService.selectOne(new EntityWrapper<SettlementDetail>().eq("orderId", id).eq("orderType", 4)); |
| | | if(null != settlementDetail){ |
| | | SettlementRecord settlementRecord = settlementRecordService.selectById(settlementDetail.getSettlementRecordId()); |
| | | map.put("settleAccounts", null == settlementRecord || settlementRecord.getPaymentStatus() == 1 ? 0 : 1); |
| | | } |
| | | } |
| | | datas.addAll(list3); |
| | | |
| | | List<OrderListWarpper> orderListWarpper = OrderListWarpper.getOrderListWarpper(datas); |
| | |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public ResultUtil process(Integer orderId, Integer orderType, Integer state, Integer uid, Double lon, Double lat,String phone, Integer language) throws Exception { |
| | | public ResultUtil process(Integer orderId, Integer orderType, Integer state, Integer uid, Double lon, Double lat,String phone, String pickUpCode, Integer language) throws Exception { |
| | | ReverseGeocodeVo reverseGeocode = GoogleMapUtil.getReverseGeocode(lat, lon); |
| | | if(null == reverseGeocode){ |
| | | return ResultUtil.error(language == 1 ? "无效的经纬度" : language == 2 ? "Invalid longitude and latitude" : "Longitude et latitude non valides"); |
| | |
| | | case 3://城际 |
| | | // return orderCrossCityService.process(orderId, state, lon, lat, address); |
| | | case 4://同城小件 |
| | | return orderLogisticsService.process(orderId, state, lon, lat, address, language); |
| | | return orderLogisticsService.process(orderId, state, lon, lat, address, pickUpCode, language); |
| | | case 5://跨城小件 |
| | | // return orderLogisticsService.process(orderId, state, lon, lat, address); |
| | | case 6: |
| | |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public ResultUtil confirmFees(Integer orderId, Integer orderType, Integer type, Double travelFee, Double parkingFee, Double crossingFee) throws Exception { |
| | | public ResultUtil confirmFees(Integer language, Integer orderId, Integer orderType, Integer type, Double travelFee, Double parkingFee, Double crossingFee) throws Exception { |
| | | switch (orderType){ |
| | | case 1://专车 |
| | | return orderPrivateCarService.confirmFees(orderId, type, parkingFee, crossingFee); |
| | | return orderPrivateCarService.confirmFees(language, orderId, type, parkingFee, crossingFee); |
| | | case 2://出租 |
| | | return orderTaxiService.confirmFees(orderId, type, travelFee, parkingFee, crossingFee); |
| | | case 3://城际(没有此流程) |
| | | break; |
| | | case 4:// |
| | | break; |
| | | return orderLogisticsService.confirmFees(language, orderId, type, parkingFee, crossingFee); |
| | | case 5: |
| | | break; |
| | | case 6: |
| | |
| | | case 3://城际(没有此流程) |
| | | return null; |
| | | case 4:// |
| | | break; |
| | | return orderLogisticsService.queryOrderInfo(language, orderId); |
| | | case 5: |
| | | break; |
| | | case 6: |
| | |
| | | case 3://城际 |
| | | return orderCrossCityService.calculateMileage(orderPosition); |
| | | case 4:// |
| | | break; |
| | | return orderLogisticsService.calculateMileage(orderPosition.getOrderId(), orderPosition.getLon(), orderPosition.getLat()); |
| | | case 5: |
| | | break; |
| | | case 6: |
| | |
| | | @Override |
| | | public Integer queryOrderNum(Integer driverId, Date start, Date end) throws Exception { |
| | | //出租车 |
| | | Integer[] state = new Integer[]{6, 7, 8, 9}; |
| | | int i = orderPrivateCarService.selectCount(new EntityWrapper<OrderPrivateCar>().eq("driverId", driverId).between("insertTime", start, end).in("", state)); |
| | | int i = orderPrivateCarService.selectCount(new EntityWrapper<OrderPrivateCar>().eq("driverId", driverId) |
| | | .between("insertTime", start, end).in("state", Arrays.asList(6, 7, 8, 9))); |
| | | return i; |
| | | } |
| | | |
| | |
| | | redisUtil.setStrValue("VEHICLE", jsonArray.toJSONString()); |
| | | } |
| | | break; |
| | | case 4: |
| | | OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId); |
| | | if(orderLogistics.getState() == 8 || orderLogistics.getState() == 9){ |
| | | return ResultUtil.error(language == 1 ? "订单已完成支付,不允许重复支付" : language == 2 ? "The order has been paid, recurring payments is not allowed." : "La commande a été payée, les paiements récurrents ne sont pas autorisés."); |
| | | } |
| | | if(orderLogistics.getState() != 7){ |
| | | return ResultUtil.error(language == 1 ? "订单不在待支付,无法完成订单" : language == 2 ? "The order is no longer with Pending Payment, unable to complete the order." : "La commande n’est plus en attente de paiement, il est impossible de terminer la commande."); |
| | | } |
| | | orderLogistics.setPayManner(2);//其他方式支付 |
| | | orderLogistics.setRedPacketMoney(0D); |
| | | orderLogistics.setCouponMoney(0D); |
| | | orderLogistics.setDiscount(0D); |
| | | orderLogistics.setDiscountMoney(0D); |
| | | orderLogistics.setPayMoney(orderLogistics.getOrderMoney()); |
| | | orderLogistics.setState(8); |
| | | orderLogisticsService.updateById(orderLogistics); |
| | | userId = orderLogistics.getUserId(); |
| | | driverId = orderLogistics.getDriverId(); |
| | | state = orderLogistics.getState(); |
| | | break; |
| | | } |
| | | |
| | | |
| | |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushUtil.pushOrderState(1, finalUserId, orderId, orderType, finalState); |
| | | pushUtil.pushOrderState(2, finalDriverId, orderId, orderType, finalState); |
| | | pushUtil.pushOrderState(1, finalUserId, orderId, orderType, finalState, 0, ""); |
| | | pushUtil.pushOrderState(2, finalDriverId, orderId, orderType, finalState, 0, ""); |
| | | } |
| | | }).start(); |
| | | return ResultUtil.success(); |
| | |
| | | return orderPrivateCarService.queryMoneyInfo(orderId); |
| | | case 2: |
| | | break; |
| | | case 4: |
| | | return orderLogisticsService.queryMoneyInfo(orderId); |
| | | } |
| | | return null; |
| | | } |
| | |
| | | */ |
| | | @Override |
| | | public void taskSmsSend() throws Exception { |
| | | Integer language = 2; |
| | | //获取未支付订单 |
| | | Date day = new Date(); |
| | | List<OrderPrivateCar> orderList = orderPrivateCarService.getSmsOrderList(); |
| | | |
| | | for(OrderPrivateCar order : orderList){ |
| | | if(order.getSmsTime()==null ){ |
| | | if(order.getGetoffTime().getTime()+24*60*60*1000L<day.getTime()){ |
| | | if(null != order.getGetoffTime() && order.getGetoffTime().getTime()+24*60*60*1000L<day.getTime()){ |
| | | order.setSmsNumber(order.getSmsNumber()+1); |
| | | order.setSmsTime(day); |
| | | //发送短信 |
| | |
| | | String sData = aLiSendSms.sendSms1(order.getPassengersPhone(), "SMS_215342869", "{\"time\":\"" + DateUtil.format(order.getGetoffTime(),"yyyy-MM-dd HH:mm:ss") + "\",\"money\":\"" + order.getOrderMoney() + "\"}"); |
| | | } |
| | | //添加消息记录 |
| | | systemNoticeService.addSystemNotice(1, "有一笔订单未付款,请前往支付!", order.getUserId()); |
| | | systemNoticeService.addSystemNotice(1, language == 1 ? "有一笔订单未付款,请前往支付!" : language == 2 ? "There is an order pending payment, please pay." : "Il y a une commande en attente de paiement, veuillez payer.", order.getUserId()); |
| | | } |
| | | }else{ |
| | | if(order.getSmsTime().getTime()+24*60*60*1000L<day.getTime()){ |
| | |
| | | } |
| | | |
| | | //添加消息记录 |
| | | systemNoticeService.addSystemNotice(1, "有一笔订单未付款,请前往支付!", order.getUserId()); |
| | | systemNoticeService.addSystemNotice(1, language == 1 ? "有一笔订单未付款,请前往支付!" : language == 2 ? "There is an order pending payment, please pay." : "Il y a une commande en attente de paiement, veuillez payer.", order.getUserId()); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | if(payType == 3){//余额支付 |
| | | driver.setBalance(driver.getBalance() - money); |
| | | if(driver.getLaveBusinessMoney().compareTo(money) < 0){ |
| | | double b = money - driver.getLaveBusinessMoney(); |
| | | Double laveBusinessMoney = driver.getLaveBusinessMoney(); |
| | | if(laveBusinessMoney.compareTo(money) < 0){ |
| | | double b = money - laveBusinessMoney; |
| | | driver.setLaveBusinessMoney(0D); |
| | | driver.setLaveActivityMoney(driver.getLaveActivityMoney() - b); |
| | | driverService.updateById(driver); |
| | | balanceUsageRecordService.saveBalanceUsageRecord(driver.getId(), 1, b, orderType == 1 ? 1 : 2); |
| | | balanceUsageRecordService.saveBalanceUsageRecord(driver.getId(), 2, laveBusinessMoney, orderType == 1 ? 1 : 2); |
| | | }else{ |
| | | driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - money); |
| | | driverService.updateById(driver); |
| | | balanceUsageRecordService.saveBalanceUsageRecord(driver.getId(), 2, money, orderType == 1 ? 1 : 2); |
| | | } |
| | | |
| | | if(orderType == 1){//专车 |