Merge remote-tracking branch 'origin/master'
| | |
| | | try { |
| | | String[] split = orderId.split(","); |
| | | Double aDouble = orderService.queryReassignMoney(Integer.valueOf(split[0]), orderType); |
| | | if(Objects.isNull(aDouble)){ |
| | | return ResultUtil.error("未设置改派金额",null); |
| | | } |
| | | BaseWarpper baseWarpper = new BaseWarpper(); |
| | | if(orderType == 3){ |
| | | aDouble = aDouble * split.length; |
| | |
| | | case 2: |
| | | historyVo.setState("订单收入"); |
| | | break; |
| | | case 3: |
| | | historyVo.setState("城际出行"); |
| | | break; |
| | | default: |
| | | historyVo.setState("充值"); |
| | | break; |
| | |
| | | case 2: |
| | | historyVo.setState("订单收入"); |
| | | break; |
| | | case 3: |
| | | historyVo.setState("城际出行"); |
| | | break; |
| | | default: |
| | | historyVo.setState("充值"); |
| | | break; |
| | |
| | | * @return |
| | | */ |
| | | public Map<String, String> getDistance(String origins, String destination, Integer type){ |
| | | |
| | | String[] split = origins.split(","); |
| | | String[] split1 = destination.split(","); |
| | | origins = split[1] + "," + split[0]; |
| | | destination = split1[1] + "," + split1[0]; |
| | | |
| | | String url = "https://api.map.baidu.com/directionlite/v1/driving?origin="+origins+"&destination="+destination+"&ak="+key; |
| | | String forObject = restTemplate.getForObject(url, String.class); |
| | | JSONObject jsonObject = JSON.parseObject(forObject); |
| | |
| | | import com.stylefeng.guns.core.util.DateUtil; |
| | | import com.stylefeng.guns.core.util.ExcelExportUtil; |
| | | import com.stylefeng.guns.core.util.SinataUtil; |
| | | import com.stylefeng.guns.modular.system.service.ITOrderCrossCityService; |
| | | import com.stylefeng.guns.modular.system.service.ITOrderTaxiService; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | |
| | | |
| | | @Resource |
| | | private ITOrderTaxiService orderTaxiService; |
| | | |
| | | @Resource |
| | | private ITOrderCrossCityService orderCrossCityService; |
| | | |
| | | |
| | | /** |
| | | * 跳转支付订单统计页 |
| | |
| | | @ResponseBody |
| | | @RequestMapping("/paymentOrderStatisticsList") |
| | | public Object paymentOrderStatisticsList(String paymentCode, String orderCode, String userPhone, |
| | | String driverPhone, String createTime, String paymentTime){ |
| | | String driverPhone, String createTime, String paymentTime,Integer orderType){ |
| | | Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); |
| | | List<Map<String, Object>> list = orderTaxiService.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTime, paymentTime); |
| | | List<Map<String, Object>> list = orderTaxiService.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTime, paymentTime,orderType); |
| | | List<Map<String, Object>> list1 = orderCrossCityService.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTime, paymentTime,orderType); |
| | | list.addAll(list1); |
| | | list.sort((o1, o2) -> { |
| | | String insertTime = o1.get("insertTime").toString(); |
| | | String insertTime1 = o2.get("insertTime").toString(); |
| | | Date o1Date = null; |
| | | Date o2Date = null; |
| | | try { |
| | | o1Date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(insertTime); |
| | | o2Date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(insertTime1); |
| | | return o2Date.compareTo(o1Date); |
| | | } catch (ParseException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | }); |
| | | return super.packForBT(page.setRecords(list)); |
| | | } |
| | | |
| | |
| | | @ResponseBody |
| | | @RequestMapping("/paymentOrderStatisticsList_export") |
| | | public void paymentOrderStatisticsList_export(String paymentCode, String orderCode, String userPhone, |
| | | String driverPhone, String createTime, String paymentTime, HttpServletRequest request, HttpServletResponse response){ |
| | | String driverPhone, String createTime, String paymentTime,Integer orderType, |
| | | HttpServletRequest request, HttpServletResponse response){ |
| | | Page<Map<String, Object>> page = new Page(1, 9999); |
| | | List<Map<String, Object>> list = orderTaxiService.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTime, paymentTime); |
| | | List<Map<String, Object>> list = orderTaxiService.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTime, paymentTime,orderType); |
| | | |
| | | // 表格数据【封装】 |
| | | List<List<String>> dataList = new ArrayList<>(); |
| | |
| | | List<String> shellList = new ArrayList<String>(); |
| | | shellList.add("支付流水号"); |
| | | shellList.add("订单号"); |
| | | shellList.add("订单类型"); |
| | | shellList.add("支付用户手机号"); |
| | | shellList.add("支付金额"); |
| | | shellList.add("接单司机手机号"); |
| | |
| | | }else{ |
| | | shellList.add("-"); |
| | | } |
| | | if(SinataUtil.isNotEmpty(object.get("orderType"))){ |
| | | int orderType1 = Integer.parseInt(object.get("orderType").toString()); |
| | | switch (orderType1){ |
| | | case 2: |
| | | shellList.add("出租车订单"); |
| | | break; |
| | | case 3: |
| | | shellList.add("跨城出行订单"); |
| | | break; |
| | | } |
| | | }else{ |
| | | shellList.add("-"); |
| | | } |
| | | if(SinataUtil.isNotEmpty(object.get("userPhone"))){ |
| | | shellList.add(object.get("userPhone").toString()); |
| | | }else{ |
| | |
| | | TAgreement two = tAgreementService.selectOne(new EntityWrapper<TAgreement>().eq("useType", 1).eq("type", 2)); |
| | | //隐私协议 |
| | | TAgreement three = tAgreementService.selectOne(new EntityWrapper<TAgreement>().eq("useType", 1).eq("type", 1)); |
| | | //隐私协议 |
| | | TAgreement four = tAgreementService.selectOne(new EntityWrapper<TAgreement>().eq("useType", 1).eq("type", 11)); |
| | | model.addAttribute("one",one); |
| | | model.addAttribute("two",two); |
| | | model.addAttribute("three",three); |
| | | model.addAttribute("four",four); |
| | | return PREFIX + "tAgreement.html"; |
| | | } |
| | | |
| | |
| | | @RequestMapping("") |
| | | public String index(Model model) { |
| | | //改派设置 |
| | | /*TSysReformist reformist = tSysReformistService.selectOne(new EntityWrapper<TSysReformist>().eq("companyId", ShiroKit.getUser().getObjectId())); |
| | | TSysReformist reformist = tSysReformistService.selectOne(new EntityWrapper<TSysReformist>().eq("companyId", ShiroKit.getUser().getObjectId())); |
| | | model.addAttribute("reformist",reformist); |
| | | //积分设置 |
| | | TSysIntegral integral = tSysIntegralService.selectOne(new EntityWrapper<TSysIntegral>().eq("companyId", ShiroKit.getUser().getObjectId())); |
| | | /*TSysIntegral integral = tSysIntegralService.selectOne(new EntityWrapper<TSysIntegral>().eq("companyId", ShiroKit.getUser().getObjectId())); |
| | | model.addAttribute("integral",integral);*/ |
| | | //人脸识别 |
| | | TSysFaceDistinguish faceDistinguish = tSysFaceDistinguishService.selectOne(new EntityWrapper<TSysFaceDistinguish>().eq("companyId", ShiroKit.getUser().getObjectId())); |
| | |
| | | @RequestParam Double czc4,@RequestParam Integer czc5,@RequestParam Double czc6, |
| | | @RequestParam Double czc7,@RequestParam Integer czc8,@RequestParam Double czc9, |
| | | @RequestParam String phone1,@RequestParam String phone2,@RequestParam String phone3 |
| | | ,@RequestParam String res,@RequestParam String money |
| | | ,@RequestParam String res,@RequestParam String money,@RequestParam Double one |
| | | ) { |
| | | |
| | | //改派设置 |
| | | TSysReformist reformist = tSysReformistService.selectOne(new EntityWrapper<TSysReformist>().eq("companyId", ShiroKit.getUser().getObjectId())); |
| | | if (SinataUtil.isNotEmpty(reformist)){ |
| | | reformist.setMoney(new BigDecimal(one)); |
| | | tSysReformistService.updateById(reformist); |
| | | }else{ |
| | | reformist = new TSysReformist(); |
| | | reformist.setCompanyId(ShiroKit.getUser().getObjectId()); |
| | | reformist.setMoney(new BigDecimal(one)); |
| | | tSysReformistService.insert(reformist); |
| | | } |
| | | //人脸识别 |
| | | TSysFaceDistinguish faceDistinguish = tSysFaceDistinguishService.selectOne(new EntityWrapper<TSysFaceDistinguish>().eq("companyId", ShiroKit.getUser().getObjectId())); |
| | | if (SinataUtil.isNotEmpty(faceDistinguish)){ |
| | |
| | | |
| | | List<TOrderCrossCity> queryOrders(@Param("driverId") Integer driverId, @Param("lineShiftDriverId") Integer lineShiftDriverId, |
| | | @Param("state") List<Integer> state); |
| | | |
| | | List<Map<String, Object>> paymentOrderStatisticsList(Page<Map<String, Object>> page, @Param("paymentCode") String paymentCode, |
| | | @Param("orderCode") String orderCode, @Param("userPhone") String userPhone, |
| | | @Param("driverPhone") String driverPhone, @Param("createTimeStart") String createTimeStart, |
| | | @Param("createTimeEnd") String createTimeEnd, @Param("paymentTimeStart") String paymentTimeStart, |
| | | @Param("paymentTimeEnd") String paymentTimeEnd,@Param("orderType") Integer orderType); |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | @Param("orderCode") String orderCode, @Param("userPhone") String userPhone, |
| | | @Param("driverPhone") String driverPhone, @Param("createTimeStart") String createTimeStart, |
| | | @Param("createTimeEnd") String createTimeEnd, @Param("paymentTimeStart") String paymentTimeStart, |
| | | @Param("paymentTimeEnd") String paymentTimeEnd); |
| | | @Param("paymentTimeEnd") String paymentTimeEnd,@Param("orderType") Integer orderType); |
| | | |
| | | |
| | | /** |
| | |
| | | </foreach> |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="paymentOrderStatisticsList" resultType="map"> |
| | | select |
| | | a.id, |
| | | b.code as paymentCode, |
| | | a.orderNum, |
| | | c.phone as userPhone, |
| | | b.amount, |
| | | d.phone as driverPhone, |
| | | e.name as company, |
| | | f.money as income, |
| | | b.orderType as orderType, |
| | | DATE_FORMAT(a.insertTime, '%Y-%m-%d %H:%i:%s') as insertTime, |
| | | DATE_FORMAT(b.insertTime, '%Y-%m-%d %H:%i:%s') as paymentTime |
| | | from t_order_cross_city a |
| | | left join t_payment_record b on (a.id = b.orderId and b.orderType = 3 and b.state = 2) |
| | | left join t_user c on (a.userId = c.id) |
| | | left join t_driver d on (a.driverId = d.id) |
| | | left join t_company e on (d.companyId = e.id) |
| | | left join t_pub_transaction_details f on (a.id = f.orderId and f.userType = 2 and f.state = 2) |
| | | where a.state in (8, 9) and a.isDelete = 1 and a.payManner = 1 |
| | | <if test="null != paymentCode and '' != paymentCode"> |
| | | and b.code like CONCAT('%', #{paymentCode}, '%') |
| | | </if> |
| | | <if test="null != orderCode and '' != orderCode"> |
| | | and a.orderNum like CONCAT('%', #{orderCode}, '%') |
| | | </if> |
| | | <if test="null != orderType"> |
| | | and b.orderType = #{orderType} |
| | | </if> |
| | | <if test="null != userPhone and '' != userPhone"> |
| | | and c.phone like CONCAT('%', #{userPhone}, '%') |
| | | </if> |
| | | <if test="null != driverPhone and '' != driverPhone"> |
| | | and d.phone like CONCAT('%', #{driverPhone}, '%') |
| | | </if> |
| | | <if test="null != createTimeStart and '' != createTimeStart and null != createTimeEnd and '' != createTimeEnd"> |
| | | and a.insertTime between #{createTimeStart} and #{createTimeEnd} |
| | | </if> |
| | | <if test="null != paymentTimeStart and '' != paymentTimeStart and null != paymentTimeEnd and '' != paymentTimeEnd"> |
| | | and b.insertTime between #{paymentTimeStart} and #{paymentTimeEnd} |
| | | </if> |
| | | order by a.insertTime desc |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | d.phone as driverPhone, |
| | | e.name as company, |
| | | f.money as income, |
| | | b.orderType as orderType, |
| | | DATE_FORMAT(a.insertTime, '%Y-%m-%d %H:%i:%s') as insertTime, |
| | | DATE_FORMAT(b.insertTime, '%Y-%m-%d %H:%i:%s') as paymentTime |
| | | from t_order_taxi a |
| | |
| | | <if test="null != orderCode and '' != orderCode"> |
| | | and a.orderNum like CONCAT('%', #{orderCode}, '%') |
| | | </if> |
| | | <if test="null != orderType"> |
| | | and b.orderType = #{orderType} |
| | | </if> |
| | | <if test="null != userPhone and '' != userPhone"> |
| | | and c.phone like CONCAT('%', #{userPhone}, '%') |
| | | </if> |
| | |
| | | |
| | | |
| | | String getOrderNum(Integer driverId, Integer lineShiftDriverId) throws Exception; |
| | | |
| | | List<Map<String, Object>> paymentOrderStatisticsList(Page<Map<String, Object>> page, String paymentCode, String orderCode, String userPhone, String driverPhone, String createTime, String paymentTime, Integer orderType); |
| | | |
| | | |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | List<Map<String, Object>> paymentOrderStatisticsList(Page<Map<String, Object>> page, String paymentCode, String orderCode, String userPhone, |
| | | String driverPhone, String createTime, String paymentTime); |
| | | String driverPhone, String createTime, String paymentTime, Integer orderType); |
| | | |
| | | |
| | | /** |
| | |
| | | package com.stylefeng.guns.modular.system.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.plugins.Page; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.system.model.TOrderCrossCity; |
| | | import com.stylefeng.guns.modular.system.dao.TOrderCrossCityMapper; |
| | | import com.stylefeng.guns.modular.system.service.ITOrderCrossCityService; |
| | |
| | | int size = this.selectCount(null); |
| | | return "CROSS" + String.valueOf(1000000 + size + 1).substring(1); |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> paymentOrderStatisticsList(Page<Map<String, Object>> page, String paymentCode, String orderCode, String userPhone, String driverPhone, String createTime, String paymentTime, Integer orderType) { |
| | | String createTimeStart = null; |
| | | String createTimeEnd = null; |
| | | String paymentTimeStart = null; |
| | | String paymentTimeEnd = null; |
| | | if(ToolUtil.isNotEmpty(createTime)){ |
| | | String[] split = createTime.split(" - "); |
| | | createTimeStart = split[0]; |
| | | createTimeEnd = split[1]; |
| | | } |
| | | if(ToolUtil.isNotEmpty(paymentTime)){ |
| | | String[] split = paymentTime.split(" - "); |
| | | paymentTimeStart = split[0]; |
| | | paymentTimeEnd = split[1]; |
| | | } |
| | | return this.baseMapper.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTimeStart, createTimeEnd, paymentTimeStart, paymentTimeEnd,orderType); |
| | | } |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<Map<String, Object>> paymentOrderStatisticsList(Page<Map<String, Object>> page, String paymentCode, String orderCode, String userPhone, String driverPhone, String createTime, String paymentTime) { |
| | | public List<Map<String, Object>> paymentOrderStatisticsList(Page<Map<String, Object>> page, String paymentCode, String orderCode, String userPhone, |
| | | String driverPhone, String createTime, String paymentTime,Integer orderType) { |
| | | String createTimeStart = null; |
| | | String createTimeEnd = null; |
| | | String paymentTimeStart = null; |
| | |
| | | paymentTimeStart = split[0]; |
| | | paymentTimeEnd = split[1]; |
| | | } |
| | | return this.baseMapper.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTimeStart, createTimeEnd, paymentTimeStart, paymentTimeEnd); |
| | | return this.baseMapper.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTimeStart, createTimeEnd, paymentTimeStart, paymentTimeEnd,orderType); |
| | | } |
| | | |
| | | /** |
| | |
| | | <h1 class="no-margins" id="orderDetail2">0</h1> |
| | | <small>出租车订单</small> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins" id="orderDetail3">0</h1> |
| | | <small>跨城出行订单</small> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | |
| | | <small>出租车订单数</small> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins" id="orderDetail31">0</h1> |
| | | <small>跨城出行订单数</small> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins" id="paiceSum1">0</h1> |
| | | <small>交易总金额</small> |
| | | </div> |
| | |
| | | </h1> |
| | | <small>出租车订单趋势图</small> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins"> |
| | | <span class="dynamicsparkline" id="orderDetail32">Loading..</span> |
| | | </h1> |
| | | <small>跨城订单趋势图</small> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <#TimeCon id="paymentTime" name="支付时间" isTime="false"/> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | | <#SelectCon id="orderType" name="订单类型" > |
| | | <option value="">全部</option> |
| | | <option value="2">出租车订单</option> |
| | | <option value="3">跨城出行订单</option> |
| | | </#SelectCon> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | | <#button name="搜索" icon="fa-search" clickFun="PaymentOrderStatistics.search()"/> |
| | | <#button name="重置" icon="fa-trash" clickFun="PaymentOrderStatistics.resetSearch()" space="true"/> |
| | | </div> |
| | |
| | | <div class="col-sm-3"> |
| | | <#SelectCon id="type" name="类别" > |
| | | <option value="2">出租车</option> |
| | | <option value="3">跨城出行</option> |
| | | </#SelectCon> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | |
| | | <#SelectCon id="couponUseType" name="优惠券类型" > |
| | | <option value="">全部</option> |
| | | <option value="2">出租车券</option> |
| | | <option value="3">跨城出行券</option> |
| | | </#SelectCon> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | |
| | | <#SelectCon id="couponUseType" name="优惠券类型" > |
| | | <option value="">全部</option> |
| | | <option value="2">出租车券</option> |
| | | <option value="3">跨城出行券</option> |
| | | </#SelectCon> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | |
| | | </div> |
| | | <#select id="couponUseType" name="服务类型" underline="true"> |
| | | <option value="2">出租车券</option> |
| | | <option value="3">跨城出行券</option> |
| | | </#select> |
| | | <#input id="money" name="金额" underline="true" placeholder="最多4位数字"/> |
| | | <div class="form-group" id="fullMoneys" style="display: none"> |
| | |
| | | <li class="active"><a data-toggle="tab" href="#tab-1" aria-expanded="true">注册协议</a></li> |
| | | <li class=""><a data-toggle="tab" href="#tab-2" aria-expanded="false">用户协议</a></li> |
| | | <li class=""><a data-toggle="tab" href="#tab-3" aria-expanded="false">隐私协议</a></li> |
| | | <li class=""><a data-toggle="tab" href="#tab-4" aria-expanded="false">跨城出行须知</a></li> |
| | | </ul> |
| | | <div class="tab-content"> |
| | | <div id="tab-1" class="tab-pane active"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div id="tab-4" class="tab-pane"> |
| | | <div class="panel-body"> |
| | | <textarea type="text/plain" id="editor_4" style="width:1200px;height:400px;">${four.content}</textarea> |
| | | <div class="row btn-group-m-t"> |
| | | <div class="col-sm-10 col-sm-offset-5"> |
| | | <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="update_4(${four.id});"/> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | |
| | | var editor_1 = null; |
| | | var editor_2 = null; |
| | | var editor_3 = null; |
| | | var editor_4 = null; |
| | | $(function () { |
| | | //初始化编辑器 |
| | | editor_1 = UE.getEditor('editor_1'); |
| | | editor_2 = UE.getEditor('editor_2'); |
| | | editor_3 = UE.getEditor('editor_3'); |
| | | editor_4 = UE.getEditor('editor_4'); |
| | | }); |
| | | |
| | | function update_1(id){ |
| | |
| | | } |
| | | submitData($("#three").val(),id); |
| | | } |
| | | function update_4(id){ |
| | | if (editor_4.getContentTxt() == ""){ |
| | | Feng.error("内容不能为空!"); |
| | | return; |
| | | } |
| | | submitData(editor_4.getContent(),id); |
| | | } |
| | | |
| | | function submitData(content,id) { |
| | | //提交信息 |
| | |
| | | <input type="checkbox" checked name="serverBox" id="serverBox2" value="2"> |
| | | <label for="serverBox2"> 出租车 </label> |
| | | </div> |
| | | <div class="checkbox checkbox-success checkbox-inline"> |
| | | <input type="checkbox" name="serverBox" id="serverBox3" value="3" onclick="TCarInfoDlg.kcServerClick()"> |
| | | <label for="serverBox3"> 跨城 </label> |
| | | </div> |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | |
| | | <input type="checkbox" name="serverBox" id="serverBox2" value="2" ${2 == two ? 'checked=checked' : ''}> |
| | | <label for="serverBox2"> 出租车 </label> |
| | | </div> |
| | | <div class="checkbox checkbox-success checkbox-inline"> |
| | | <input type="checkbox" name="serverBox" id="serverBox3" value="3" ${2 == three ? 'checked=checked' : ''} onclick="TCarInfoDlg.kcServerClick()"> |
| | | <label for="serverBox3"> 跨城 </label> |
| | | </div> |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | |
| | | <label for="checkbox2"> |
| | | 出租车 |
| | | </label> |
| | | |
| | | </div> |
| | | <div class="checkbox checkbox-success"> |
| | | <input name="checkbox" id="checkbox3" type="checkbox" value="3" ${1 == item.isCross ? 'checked=checked' : ''} onclick="TCompanyInfoDlg.checkbox3()"> |
| | | <label for="checkbox3"> |
| | | 跨城出行 |
| | | </label> |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | |
| | | <label for="checkbox2"> |
| | | 出租车 |
| | | </label> |
| | | <!-- <fieldset>--> |
| | | <!-- <div class="row" style="display: none;" id="czDiv">--> |
| | | <!-- <div class="col-sm-6">--> |
| | | <!-- <div class="checkbox checkbox-circle">--> |
| | | <!-- <input type="radio" name="cz" id="cz1" value="1" checked="">--> |
| | | <!-- <label for="cz1">--> |
| | | <!-- <div style="position: relative;top: -8px;">--> |
| | | <!-- <span>按比例抽成,每笔订单抽取</span>--> |
| | | <!-- <input style="width: 50%;display: inline-block;" type="text" class="form-control" id="czPercent" name="czPercent">--> |
| | | <!-- <span>%</span>--> |
| | | <!-- </div>--> |
| | | <!-- </label>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="checkbox checkbox-circle">--> |
| | | <!-- <input type="radio" name="cz" id="cz2" value="2">--> |
| | | <!-- <label for="cz2">--> |
| | | <!-- <div style="position: relative;top: -8px;">--> |
| | | <!-- <span>按固定金额抽成,每笔订单抽取</span>--> |
| | | <!-- <input style="width: 50%;display: inline-block;" type="text" class="form-control" id="czMoney" name="czMoney">--> |
| | | <!-- <span>元</span>--> |
| | | <!-- </div>--> |
| | | <!-- </label>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </fieldset>--> |
| | | </div> |
| | | <div class="checkbox checkbox-success"> |
| | | <input name="checkbox" id="checkbox3" type="checkbox" value="3" onclick="TCompanyInfoDlg.checkbox3()"> |
| | | <label for="checkbox3"> |
| | | 跨城 |
| | | </label> |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | |
| | | <label for="checkbox2"> |
| | | 出租车 |
| | | </label> |
| | | |
| | | </div> |
| | | <div class="checkbox checkbox-success"> |
| | | <input name="checkbox" id="checkbox3" type="checkbox" value="3" onclick="FranchiseeInfoDlg.checkbox3()"> |
| | | <label for="checkbox3"> |
| | | 跨城 |
| | | </label> |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | |
| | | 出租车 |
| | | </label> |
| | | </div> |
| | | <div class="checkbox checkbox-success"> |
| | | <input name="checkbox" id="checkbox3" type="checkbox" disabled value="3" ${1 == item.isCross ? 'checked=checked' : ''} > |
| | | <label for="checkbox3"> |
| | | 跨城 |
| | | </label> |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | </div> |
| | |
| | | <label for="checkbox2"> |
| | | 出租车 |
| | | </label> |
| | | |
| | | </div> |
| | | <div class="checkbox checkbox-success"> |
| | | <input name="checkbox" id="checkbox3" type="checkbox" disabled value="3" ${1 == item.isCross ? 'checked=checked' : ''} > |
| | | <label for="checkbox3"> |
| | | 跨城 |
| | | </label> |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | |
| | | <label for="checkbox2"> |
| | | 出租车 |
| | | </label> |
| | | |
| | | </div> |
| | | <div class="checkbox checkbox-success"> |
| | | <input name="checkbox" id="checkbox3" type="checkbox" value="3" ${1 == item.isCross ? 'checked=checked' : ''} onclick="TCompanyInfoDlg.checkbox3()"> |
| | | <label for="checkbox3"> |
| | | 跨城 |
| | | </label> |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | |
| | | 出租车 |
| | | </label> |
| | | </div> |
| | | <div class="checkbox checkbox-success"> |
| | | <input name="checkbox" id="checkbox3" type="checkbox" value="3" ${1 == item.isCross ? 'checked=checked' : ''} onclick="FranchiseeInfoDlg.checkbox3()"> |
| | | <label for="checkbox3"> |
| | | 跨城 |
| | | </label> |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | </div> |
| | |
| | | <input type="checkbox" name="serverBox" id="serverBox2" value="2"> |
| | | <label for="serverBox2"> 出租车 </label> |
| | | </div> |
| | | <div class="checkbox checkbox-success checkbox-inline"> |
| | | <input type="checkbox" name="serverBox" id="serverBox3" value="3" onclick="YesDriverInfoDlg.checkBox()" > |
| | | <label for="serverBox3"> 跨城 </label> |
| | | </div> |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | |
| | | <input type="checkbox" name="serverBox" id="serverBox2" value="2" ${2 == two ? 'checked=checked' : ''}> |
| | | <label for="serverBox2"> 出租车 </label> |
| | | </div> |
| | | <div class="checkbox checkbox-success checkbox-inline"> |
| | | <input type="checkbox" name="serverBox" id="serverBox3" value="3" ${2 == three ? 'checked=checked' : ''} onclick="YesDriverInfoDlg.checkBox()" > |
| | | <label for="serverBox3"> 跨城 </label> |
| | | </div> |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | |
| | | <select class="form-control" id="businessType"> |
| | | <option value="">选择经营业务</option> |
| | | <option value="2">出租车</option> |
| | | <option value="3">跨城出行</option> |
| | | </select> |
| | | </div> |
| | | <div class="col-sm-3" > |
| | |
| | | <select class="form-control" id="businessType"> |
| | | <option value="">选择经营业务</option> |
| | | <option value="2">出租车</option> |
| | | <option value="3">跨城出行</option> |
| | | </select> |
| | | </div> |
| | | <div class="col-sm-3" > |
| | |
| | | <h3>系统设置:</h3> |
| | | </div> |
| | | |
| | | <!--<div class="form-group"> |
| | | <div class="form-group"> |
| | | <label class="col-sm-2 control-label">改派设置:</label> |
| | | <div class="col-sm-10"> |
| | | 改派费用为 <input type="text" oninput="checkIsDouble(this)" |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="form-group"> |
| | | <!--<div class="form-group"> |
| | | <label class="col-sm-2 control-label">积分设置:</label> |
| | | <div class="col-sm-10"> |
| | | 消费一元积 <input type="text" oninput="checkIsInt(this)" |
| | |
| | | } |
| | | }); |
| | | var openValue = $("#openValue").val(); |
| | | var one = $("#one").val().trim(); |
| | | var czc1 = $("#czc1").val().trim(); |
| | | var czc2 = $("#czc2").val().trim(); |
| | | var czc3 = $("#czc3").val().trim(); |
| | |
| | | |
| | | if ( |
| | | "" == czc1 || "" == czc2 || "" == czc3 || "" == czc4 || "" == czc5 || "" == czc6 || "" == czc7 || "" == czc8 || "" == czc9 |
| | | || "" == phone1 || "" == phone2 ) { |
| | | || "" == phone1 || "" == phone2 || "" == one) { |
| | | Feng.info("输入框不能为空!"); |
| | | return; |
| | | } else if ( |
| | | !regDouble.test(czc1) || !regInt.test(czc2) || !regDouble.test(czc3) |
| | | || !regDouble.test(czc4) || !regInt.test(czc5) || !regDouble.test(czc6) |
| | | || !regDouble.test(czc7) || !regInt.test(czc8) || !regDouble.test(czc9) |
| | | || !regDouble.test(czc7) || !regInt.test(czc8) || !regDouble.test(czc9)|| !regDouble.test(one) |
| | | ) { |
| | | Feng.info("格式不正确!"); |
| | | return ; |
| | |
| | | },function(data){ |
| | | Feng.error("操作失败!" + data.responseJSON.message + "!"); |
| | | }); |
| | | ajax.set("one", one); |
| | | ajax.set("czc1", czc1); |
| | | ajax.set("czc2", czc2); |
| | | ajax.set("czc3", czc3); |
| | |
| | | {title: '', field: 'id', visible: false, align: 'center', valign: 'middle'}, |
| | | {title: '支付流水号', field: 'paymentCode', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '订单号', field: 'orderNum', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '订单类型', field: 'orderType', visible: true, align: 'center', valign: 'middle', |
| | | formatter: function (value, row) { |
| | | if(row.orderType == 2) { |
| | | return '出租车订单'; |
| | | } else { |
| | | return '跨城出行订单'; |
| | | } |
| | | } |
| | | }, |
| | | {title: '支付用户手机号', field: 'userPhone', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '支付金额', field: 'amount', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '接单司机手机号', field: 'driverPhone', visible: true, align: 'center', valign: 'middle'}, |
| | |
| | | let driverPhone = $("#driverPhone").val(); |
| | | let createTime = $("#createTime").val(); |
| | | let paymentTime = $("#paymentTime").val(); |
| | | let orderType = $("#orderType").val(); |
| | | window.location.href = Feng.ctxPath + '/financialStatement/paymentOrderStatisticsList_export?paymentCode=' + paymentCode + "&orderCode=" + orderCode + |
| | | "&userPhone=" + userPhone + "&driverPhone=" + driverPhone + "&createTime=" + createTime + "&paymentTime=" + paymentTime |
| | | "&userPhone=" + userPhone + "&driverPhone=" + driverPhone + "&createTime=" + createTime + "&paymentTime=" + paymentTime + "&orderType=" + orderType |
| | | } |
| | | |
| | | |
| | |
| | | queryData['driverPhone'] = $("#driverPhone").val(); |
| | | queryData['createTime'] = $("#createTime").val(); |
| | | queryData['paymentTime'] = $("#paymentTime").val(); |
| | | queryData['orderType'] = $("#orderType").val(); |
| | | PaymentOrderStatistics.table.refresh({query: queryData}); |
| | | }; |
| | | |
| | |
| | | $("#driverPhone").val(""); |
| | | $("#createTime").val(""); |
| | | $("#paymentTime").val(""); |
| | | $("#orderType").val(""); |
| | | PaymentOrderStatistics.search(); |
| | | }; |
| | | |
| | |
| | | }) |
| | | public ResultUtil<DriverInfoWarpper> queryDriverInfo(Integer id){ |
| | | try { |
| | | System.err.println(id); |
| | | Map<String, Object> map = driverService.queryDriverInfo(id); |
| | | System.err.println(map); |
| | | String name = String.valueOf(map.get("name")); |
| | | map.put("name", name.substring(0, 1) + "师傅"); |
| | | List<BaseWarpper> list = driverService.queryBusiness(id); |
| | |
| | | public ResultUtil<List<BaseWarpper>> queryBusiness(String province, String city, String district){ |
| | | try { |
| | | List<BaseWarpper> list = openCityBusinessService.queryBusiness(province, city, district); |
| | | System.err.println(list); |
| | | return ResultUtil.success(list); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | |
| | | @PostMapping("/base/wxPayOrderTaxi") |
| | | public void wxPayOrderTaxi(HttpServletRequest request, HttpServletResponse response){ |
| | | try { |
| | | System.out.println("完成订单微信支付回调"); |
| | | System.err.println("完成订单微信支付回调"); |
| | | Map<String, String> map = payMoneyUtil.weixinpayCallback(request); |
| | | System.out.println("wx支付信息:"+map); |
| | | |
| | |
| | | orderTaxiService.payOrderTaxiCallback(id, order_id, 1); |
| | | break; |
| | | case 3: |
| | | orderCrossCityService.payOrderCrossCityCallback(id, order_id, 1); |
| | | break; |
| | | case 4: |
| | | break; |
| | |
| | | |
| | | |
| | | List<OrderCrossCity> queryListOrder(Integer driverId, Integer lineShiftId, List<Integer> state, String day) throws Exception; |
| | | |
| | | /** |
| | | * 自动取消订单 |
| | | */ |
| | | void autoCancelOrder(); |
| | | |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import com.stylefeng.guns.core.util.GpsCoordinateUtils; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.crossCity.dao.LinePriceMapper; |
| | | import com.stylefeng.guns.modular.crossCity.dao.LineShiftDriverMapper; |
| | |
| | | import org.springframework.transaction.annotation.Isolation; |
| | | import org.springframework.transaction.annotation.Propagation; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.util.LinkedMultiValueMap; |
| | | import org.springframework.util.MultiValueMap; |
| | | import org.springframework.web.client.RestTemplate; |
| | |
| | | import java.math.BigDecimal; |
| | | import java.math.MathContext; |
| | | import java.math.RoundingMode; |
| | | import java.time.LocalDateTime; |
| | | import java.util.*; |
| | | |
| | | import static com.stylefeng.guns.modular.taxi.service.impl.OrderTaxiServiceImpl.orderIds; |
| | |
| | | |
| | | @Autowired |
| | | private IOpenCityService openCityService; |
| | | |
| | | @Autowired |
| | | private PayMoneyUtil payMoneyUtil; |
| | | @Autowired |
| | | private ICompanyService companyService; |
| | | @Value("${callbackPath}") |
| | | private String callbackPath; |
| | | |
| | |
| | | }else{ |
| | | appletsOpenId = userInfo.getAppletsOpenId(); |
| | | } |
| | | Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + ",3", 9, 5, uid.toString(), "完成订单", orderMoney, callbackPath + "/base/wxPayOrderTaxi", "", type, appletsOpenId); |
| | | if(map.get("code").equals("200")){ |
| | | paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 1, orderMoney, map.get("order_id"), 1);//添加预支付数据 |
| | | resultUtil = ResultUtil.success(map.get("data")); |
| | | }else{ |
| | | resultUtil = ResultUtil.error(map.get("msg"), ""); |
| | | } |
| | | // Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + ",3", 9, 5, uid.toString(), "完成订单", orderMoney, callbackPath + "/base/wxPayOrderTaxi", "", type, appletsOpenId); |
| | | // if(map.get("code").equals("200")){ |
| | | // paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 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 + "_3_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId()); |
| | | paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 1, orderMoney, "", 1);//添加预支付数据 |
| | | } |
| | | if(payType == 2){//支付宝支付 |
| | | Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + ",3", 10, 5, uid.toString(), "完成订单", orderMoney, callbackPath + "/base/aliPayOrderTaxi", "", type, null); |
| | |
| | | OrderCrossCity orderCrossCity = this.selectById(id); |
| | | PaymentRecord query = paymentRecordService.query(1, orderCrossCity.getUserId(), 1, Integer.valueOf(id), 3, type, 1); |
| | | if(null != query){ |
| | | Integer placeOrderWay = null; |
| | | switch (orderCrossCity.getOrderSource()){ |
| | | case 2: |
| | | placeOrderWay = 4; |
| | | break; |
| | | case 3: |
| | | placeOrderWay = 4; |
| | | break; |
| | | case 6: |
| | | placeOrderWay = 1; |
| | | break; |
| | | case 7: |
| | | placeOrderWay = 2; |
| | | break; |
| | | case 5: |
| | | placeOrderWay = 3; |
| | | break; |
| | | } |
| | | //添加交易明细 |
| | | transactionDetailsService.saveData(orderCrossCity.getUserId(), "完成订单", query.getAmount(), 2, 1, 1, 3, query.getOrderId()); |
| | | orderCrossCity.setState(2);//先支付再服务 |
| | |
| | | orderCrossCity.setPayMoney(query.getAmount()); |
| | | this.updateById(orderCrossCity); |
| | | |
| | | UserInfo userInfo = userInfoService.selectById(orderCrossCity.getUserId()); |
| | | SysIntegral query1 = sysIntegralMapper.query(orderCrossCity.getCompanyId()); |
| | | userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分 |
| | | userInfoService.updateById(userInfo); |
| | | // UserInfo userInfo = userInfoService.selectById(orderCrossCity.getUserId()); |
| | | // SysIntegral query1 = sysIntegralMapper.query(orderCrossCity.getCompanyId()); |
| | | // userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分 |
| | | // userInfoService.updateById(userInfo); |
| | | |
| | | //处理优惠券和红包 |
| | | if(null != orderCrossCity.getCouponId()){ |
| | |
| | | paymentRecordService.updateById(query); |
| | | |
| | | //添加已收入明细 |
| | | Line line = lineService.selectById(orderCrossCity.getLineId()); |
| | | Double speMoney = Double.valueOf(line.getRakeRate()); |
| | | BigDecimal d = new BigDecimal(orderCrossCity.getOrderMoney()).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_EVEN);//企业收入 |
| | | BigDecimal c = new BigDecimal(orderCrossCity.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);//司机收入 |
| | | incomeService.saveData(1, orderCrossCity.getCompanyId(), 2, orderCrossCity.getId(), 3, d.doubleValue()); |
| | | incomeService.saveData(2, orderCrossCity.getDriverId(), 2, orderCrossCity.getId(), 3, c.doubleValue()); |
| | | // Line line = lineService.selectById(orderCrossCity.getLineId()); |
| | | // Double speMoney = Double.valueOf(line.getRakeRate()); |
| | | // BigDecimal d = new BigDecimal(orderCrossCity.getOrderMoney()).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_EVEN);//企业收入 |
| | | // BigDecimal c = new BigDecimal(orderCrossCity.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);//司机收入 |
| | | // incomeService.saveData(1, orderCrossCity.getCompanyId(), 2, orderCrossCity.getId(), 3, d.doubleValue()); |
| | | // incomeService.saveData(2, orderCrossCity.getDriverId(), 2, orderCrossCity.getId(), 3, c.doubleValue()); |
| | | Driver driver = driverService.selectById(orderCrossCity.getDriverId()); |
| | | driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | // driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | // driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | // driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | // driverService.updateById(driver); |
| | | |
| | | Company company = companyService.selectById(driver.getFranchiseeId()); |
| | | if(Objects.isNull(company)){ |
| | | company = companyService.selectById(driver.getCompanyId()); |
| | | } |
| | | // 司机收入 |
| | | double moneyTwo; |
| | | // 平台收入 |
| | | double money; |
| | | if(orderCrossCity.getOrderSource() == 2 || orderCrossCity.getOrderSource() == 3){ |
| | | double v = company.getPercentageDeduction() / 100; |
| | | money = v * orderCrossCity.getOrderMoney(); |
| | | moneyTwo = orderCrossCity.getOrderMoney()-money; |
| | | }else { |
| | | money = company.getFixedDeduction(); |
| | | moneyTwo = orderCrossCity.getOrderMoney()-money; |
| | | } |
| | | driver.setBalance(driver.getBalance() + moneyTwo); |
| | | // 新增扣除使用费记录 |
| | | transactionDetailsService.saveDataTaxi(driver.getId(), "软件使用费", money, 2, 1, 2, 6, orderCrossCity.getId(),placeOrderWay,company.getId()); |
| | | // 司机订单收入 |
| | | transactionDetailsService.saveDataTaxi(driver.getId(), "完成订单", moneyTwo, 1, 1, 2, 3, orderCrossCity.getId(),placeOrderWay,company.getId()); |
| | | |
| | | driverService.updateById(driver); |
| | | |
| | | // TODO: 2020/5/24 这里需要给司机和用户推送订单状态 |
| | |
| | | |
| | | |
| | | systemNoticeService.addSystemNotice(1, "您已使用" + (type == 1 ? "微信" : "支付宝") + "成功完成出行订单支付,谢谢使用!", orderCrossCity.getUserId(), 1); |
| | | //添加司机消息提醒 |
| | | systemNoticeService.addSystemNotice(2, "用户已线上完成支付", driver.getId(), 1); |
| | | }else{ |
| | | System.err.println("预支付数据异常(orderId = " + id + ")"); |
| | | } |
| | |
| | | } |
| | | |
| | | //还原座位 |
| | | CancleOrder query1 = cancleOrderService.query(1, 3, orderCrossCity.getCompanyId()); |
| | | if (null != query1) { |
| | | integer = orderCancelService.saveData(id, 3, reason, remark, null, null, 2, 1, uid); |
| | | orderCrossCity.setState(10); |
| | | this.updateById(orderCrossCity); |
| | | // CancleOrder query1 = cancleOrderService.query(1, 3, orderCrossCity.getCompanyId()); |
| | | // if (null != query1) { |
| | | integer = orderCancelService.saveData(id, 3, reason, remark, null, null, 2, 1, uid); |
| | | orderCrossCity.setState(10); |
| | | this.updateById(orderCrossCity); |
| | | |
| | | if(orderCrossCity.getState() != 7){//已经支付的情况推送给司机提醒 |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushUtil.pushOrderState(2, orderCrossCity.getDriverId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 0); |
| | | System.err.println("推送取消操作---------------------"); |
| | | } |
| | | }).start(); |
| | | } |
| | | |
| | | //修改司机座位 |
| | | LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId()); |
| | | lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber()); |
| | | lineShiftDriver.setLaveSeatNumber(lineShiftDriver.getLaveSeatNumber() + (orderCrossCity.getTravelMode() == 1 ? "," : "") + orderCrossCity.getSeatNumber()); |
| | | lineShiftDriverMapper.updateById(lineShiftDriver); |
| | | |
| | | //修改司机为空闲 |
| | | List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryByDriverId(orderCrossCity.getDriverId(), 2, 3, 4, 5, 11); |
| | | if(orderCrossCities.size() == 0){ |
| | | Driver driver = driverService.selectById(orderCrossCity.getDriverId()); |
| | | driver.setState(2); |
| | | driverService.updateById(driver); |
| | | } |
| | | }else{ |
| | | return ResultUtil.error("请完善后台取消规则设置"); |
| | | if(orderCrossCity.getState() != 7){//已经支付的情况推送给司机提醒 |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushUtil.pushOrderState(2, orderCrossCity.getDriverId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 0); |
| | | System.err.println("推送取消操作---------------------"); |
| | | } |
| | | }).start(); |
| | | } |
| | | |
| | | //修改司机座位 |
| | | LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId()); |
| | | lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber()); |
| | | lineShiftDriver.setLaveSeatNumber(lineShiftDriver.getLaveSeatNumber() + (orderCrossCity.getTravelMode() == 1 ? "," : "") + orderCrossCity.getSeatNumber()); |
| | | lineShiftDriverMapper.updateById(lineShiftDriver); |
| | | |
| | | //修改司机为空闲 |
| | | List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryByDriverId(orderCrossCity.getDriverId(), 2, 3, 4, 5, 11); |
| | | if(orderCrossCities.size() == 0){ |
| | | Driver driver = driverService.selectById(orderCrossCity.getDriverId()); |
| | | driver.setState(2); |
| | | driverService.updateById(driver); |
| | | } |
| | | // } |
| | | // else{ |
| | | // return ResultUtil.error("请完善后台取消规则设置"); |
| | | // } |
| | | |
| | | //已支付的情况下进行退款操作 |
| | | if(null != orderCrossCity.getPayType() && null != orderCrossCity.getPayMoney()){ |
| | |
| | | if(null == query){ |
| | | return ResultUtil.error("订单还未进行支付"); |
| | | } |
| | | Map<String, Object> merrefund = icbcPayUtil.merrefund(query.getCode(), "", query.getAmount(), id + "_3", orderCrossCity.getOrderNum()); |
| | | if(Integer.valueOf(merrefund.get("code").toString()) == 0){ |
| | | Map<String, Object> refundqry = icbcPayUtil.refundqry("", query.getCode(), orderCrossCity.getOrderNum()); |
| | | if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 0){//成功 |
| | | //添加交易明细 |
| | | transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", query.getAmount(), 1, 1, 1, 3, id); |
| | | } |
| | | if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 1){//失败 |
| | | return ResultUtil.error("订单取消失败(退款不成功)"); |
| | | } |
| | | if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 2){//未知 |
| | | return ResultUtil.error("退款返回未知异常"); |
| | | } |
| | | } |
| | | Map<String, String> merrefund = payMoneyUtil.wxRefund(query.getCode(), orderCrossCity.getOrderNum(), String.valueOf(query.getAmount()), String.valueOf(query.getAmount()), ""); |
| | | System.err.println("跨城退款数据:::"+merrefund); |
| | | //添加交易明细 |
| | | transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", query.getAmount(), 1, 1, 1, 3, id); |
| | | integer = orderCancelService.saveData(id, 3, reason, remark, null, null, 2, 1, uid); |
| | | } |
| | | |
| | | //添加负的收入明细 |
| | | List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", id).eq("orderType", 3)); |
| | | for(Income income : incomes){ |
| | | if(income.getUserType() == 2){//处理司机的收入 |
| | | Driver driver = driverService.selectById(income.getObjectId()); |
| | | driver.setBalance(driver.getBalance() - income.getMoney()); |
| | | driver.setBusinessMoney(driver.getBusinessMoney() - income.getMoney()); |
| | | driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - income.getMoney()); |
| | | driverService.updateById(driver); |
| | | } |
| | | Income income1 = new Income(); |
| | | BeanUtils.copyProperties(income, income1); |
| | | income1.setMoney(income.getMoney() * -1); |
| | | income1.setId(null); |
| | | income1.setInsertTime(new Date()); |
| | | incomeService.insert(income1); |
| | | } |
| | | // List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", id).eq("orderType", 3)); |
| | | // for(Income income : incomes){ |
| | | // if(income.getUserType() == 2){//处理司机的收入 |
| | | // Driver driver = driverService.selectById(income.getObjectId()); |
| | | // driver.setBalance(driver.getBalance() - income.getMoney()); |
| | | // driver.setBusinessMoney(driver.getBusinessMoney() - income.getMoney()); |
| | | // driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - income.getMoney()); |
| | | // driverService.updateById(driver); |
| | | // } |
| | | // Income income1 = new Income(); |
| | | // BeanUtils.copyProperties(income, income1); |
| | | // income1.setMoney(income.getMoney() * -1); |
| | | // income1.setId(null); |
| | | // income1.setInsertTime(new Date()); |
| | | // incomeService.insert(income1); |
| | | // } |
| | | } |
| | | |
| | | //添加消息 |
| | |
| | | if(null == distance){ |
| | | System.err.println("查询距离出错了"); |
| | | }else{ |
| | | d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000)).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString(); |
| | | t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60)).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + ""; |
| | | d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000),2, BigDecimal.ROUND_HALF_EVEN).toString(); |
| | | t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60),2,BigDecimal.ROUND_HALF_EVEN).toString(); |
| | | } |
| | | OrderServerWarpper orderServerWarpper = new OrderServerWarpper(); |
| | | orderServerWarpper.setOrderId(orderCrossCity.getId()); |
| | |
| | | orderServerWarpper.setState(orderCrossCity.getState()); |
| | | orderServerWarpper.setLon(null != value ? value.split(",")[0] : "0.0"); |
| | | orderServerWarpper.setLat(null != value ? value.split(",")[1] : "0.0"); |
| | | value = value == null ? "0.0,0.0" : value; |
| | | double[] doubles = GpsCoordinateUtils.calBD09toGCJ02(Double.parseDouble(value.split(",")[1]), Double.parseDouble(value.split(",")[0])); |
| | | orderServerWarpper.setNextLongitude(String.valueOf(doubles[0])); |
| | | orderServerWarpper.setNextLatitude(String.valueOf(doubles[1])); |
| | | // 起点地址转换 |
| | | doubles = GpsCoordinateUtils.calBD09toGCJ02(orderCrossCity.getStartLat(), orderCrossCity.getStartLon()); |
| | | orderServerWarpper.setStartLat(String.valueOf(doubles[0])); |
| | | orderServerWarpper.setStartLon(String.valueOf(doubles[1])); |
| | | // 终点地址转换 |
| | | doubles = GpsCoordinateUtils.calBD09toGCJ02(orderCrossCity.getEndLat(), orderCrossCity.getEndLon()); |
| | | orderServerWarpper.setEndLat(String.valueOf(doubles[0])); |
| | | orderServerWarpper.setEndLon(String.valueOf(doubles[1])); |
| | | orderServerWarpper.setReassignNotice(orderCrossCity.getReassignNotice()); |
| | | if(orderCrossCity.getState() == 2 || orderCrossCity.getState() == 3){//前往预约地 |
| | | orderServerWarpper.setReservationMileage(d); |
| | |
| | | return orderCrossCityMapper.queryListOrder(driverId, lineShiftId, state, day); |
| | | } |
| | | |
| | | @Override |
| | | public void autoCancelOrder() { |
| | | LocalDateTime localDateTime = LocalDateTime.now(); |
| | | LocalDateTime dateTime = localDateTime.minusMinutes(30); |
| | | String time = dateUtil.localDateTimeToStringHHmm(dateTime); |
| | | List<OrderCrossCity> orderCrossCities = this.selectList(new EntityWrapper<OrderCrossCity>().eq("state", 7).like("insertTime", time)); |
| | | if(!CollectionUtils.isEmpty(orderCrossCities)){ |
| | | for (OrderCrossCity orderCrossCity : orderCrossCities) { |
| | | orderCrossCity.setState(10); |
| | | } |
| | | this.updateBatchById(orderCrossCities); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取订单编号 |
| | | * @return |
| | |
| | | if(openCityBusinesses.size() == 0){ |
| | | openCityBusinesses = openCityBusinessMapper.queryBusiness(province, null, null); |
| | | } |
| | | System.err.println(openCityBusinesses); |
| | | List<BaseWarpper> list = new ArrayList<>(); |
| | | for(OpenCityBusiness b : openCityBusinesses){ |
| | | BaseWarpper baseWarpper = new BaseWarpper(); |
| | |
| | | |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | |
| | | /** |
| | |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * localdate转为字符串 |
| | | * |
| | | * @param time localdate |
| | | * @return 字符串 |
| | | */ |
| | | public String localDateToString(LocalDate time) { |
| | | DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
| | | return df.format(time); |
| | | } |
| | | |
| | | /** |
| | | * localdatetime转为字符串 |
| | | * |
| | | * @param time localdatetime |
| | | * @return 字符串 |
| | | */ |
| | | public static String localDateTimeToStringHHmm(LocalDateTime time) { |
| | | DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); |
| | | return df.format(time); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取月初和月末日期 |
| | |
| | | * @return |
| | | */ |
| | | public Map<String, String> getDistance(String origins, String destination, Integer type){ |
| | | |
| | | String[] split = origins.split(","); |
| | | String[] split1 = destination.split(","); |
| | | origins = split[1] + "," + split[0]; |
| | | destination = split1[1] + "," + split1[0]; |
| | | |
| | | String url = "https://api.map.baidu.com/directionlite/v1/driving?origin="+origins+"&destination="+destination+"&ak="+key; |
| | | String forObject = restTemplate.getForObject(url, String.class); |
| | | JSONObject jsonObject = JSON.parseObject(forObject); |
| | | System.err.println("获取距离"+jsonObject); |
| | | String status = jsonObject.getString("status"); |
| | | // gdInterfaceService.saveData("https://restapi.amap.com/v3/distance", "查询两点间的距离"); |
| | | if(status.equals("0")){ |
| | | JSONObject result = jsonObject.getJSONObject("result"); |
| | | JSONArray results = result.getJSONArray("routes"); |
| | | System.err.println("路线数组"+results); |
| | | JSONObject jsonObject1 = results.getJSONObject(0); |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("distance", jsonObject1.getString("distance"));//距离(米) |
| | | map.put("duration", jsonObject1.getString("duration"));//预计时间(秒) |
| | | System.err.println("返回map"); |
| | | return map; |
| | | }else{ |
| | | System.err.println(forObject); |
| | |
| | | |
| | | Map<String, String> map1 = null; |
| | | String body1 = httpClientUtil.pushHttpRequsetXml(url, xmlString.toString(), new HashMap<>()); |
| | | System.err.println("退款返回信息========"+body1); |
| | | //将结果xml解析成map |
| | | body1 = body1.replaceAll("<!\\[CDATA\\[",""); |
| | | body1 = body1.replaceAll("]]>", ""); |
| | |
| | | } catch (DocumentException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | System.err.println("跨城推送取消====="+map1); |
| | | String return_code = map1.get("return_code"); |
| | | Map<String, String> map2 = new HashMap<>(); |
| | | if("SUCCESS".equals(return_code)){ |
| | |
| | | package com.stylefeng.guns.modular.system.util; |
| | | |
| | | |
| | | import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; |
| | | import com.stylefeng.guns.modular.system.service.IUserCouponRecordService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | |
| | | |
| | | @Autowired |
| | | private IUserCouponRecordService userCouponRecordService; |
| | | @Autowired |
| | | private IOrderCrossCityService orderCrossCityService; |
| | | |
| | | |
| | | |
| | |
| | | try { |
| | | //修改过期的优惠券 |
| | | userCouponRecordService.updateTimeOut(); |
| | | // 自动取消未支付订单 |
| | | orderCrossCityService.autoCancelOrder(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |