wenhongquan 1 год назад
Родитель
Сommit
730069d8b8

+ 23 - 3
ruoyi-modules/ruoyi-dzbc/src/main/java/org/dromara/system/controller/TblDzbcOrderController.java

@@ -19,7 +19,9 @@ import jakarta.validation.constraints.*;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.system.domain.vo.SysSocialVo;
 import org.dromara.system.domain.vo.SysSocialVo;
+import org.dromara.system.domain.vo.TblDzbcPathSchedulingVo;
 import org.dromara.system.service.ISysSocialService;
 import org.dromara.system.service.ISysSocialService;
+import org.dromara.system.service.ITblDzbcPathSchedulingService;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
@@ -52,6 +54,8 @@ public class TblDzbcOrderController extends BaseController {
 
 
     private final ITblDzbcOrderService tblDzbcOrderService;
     private final ITblDzbcOrderService tblDzbcOrderService;
 
 
+    private final ITblDzbcPathSchedulingService tbspSchedulingService;
+
     private final ISysSocialService sysSocialService;
     private final ISysSocialService sysSocialService;
 
 
     private final WxPayService wxPayService;
     private final WxPayService wxPayService;
@@ -91,7 +95,22 @@ public class TblDzbcOrderController extends BaseController {
     @GetMapping("/{id}")
     @GetMapping("/{id}")
     public R<TblDzbcOrderVo> getInfo(@NotNull(message = "主键不能为空")
     public R<TblDzbcOrderVo> getInfo(@NotNull(message = "主键不能为空")
                                      @PathVariable Long id) {
                                      @PathVariable Long id) {
-        return R.ok(tblDzbcOrderService.queryById(id));
+        Long userid=null;
+        if(!LoginHelper.getLoginUser().getRoles().stream().map(i->i.getRoleName()).collect(Collectors.joining(",")).contains("定制班车-管理员")){
+            userid = (LoginHelper.getUserId());
+        }
+        TblDzbcOrderVo orderVo = tblDzbcOrderService.queryById(id);
+        if(userid!=null){
+            if(!orderVo.getUserId().equals(userid)){
+                return R.fail("您没有权限查看该订单");
+            }
+        }
+        TblDzbcPathSchedulingVo scheduling = tbspSchedulingService.queryById(orderVo.getSchedulingId());
+        scheduling.setStartSites(null);
+        scheduling.setEndSites(null);
+        orderVo.setScheduling(scheduling);
+
+        return R.ok(orderVo);
     }
     }
 
 
     /**
     /**
@@ -142,7 +161,7 @@ public class TblDzbcOrderController extends BaseController {
     @Log(title = "定制班车-订单", businessType = BusinessType.INSERT)
     @Log(title = "定制班车-订单", businessType = BusinessType.INSERT)
     @RepeatSubmit()
     @RepeatSubmit()
     @GetMapping("/pay/wx/{id}")
     @GetMapping("/pay/wx/{id}")
-    public R<Void> getOrderWxPay(@PathVariable Long id) {
+    public R getOrderWxPay(@PathVariable Long id) {
         TblDzbcOrderVo tblDzbcOrderVo = tblDzbcOrderService.queryById(id);
         TblDzbcOrderVo tblDzbcOrderVo = tblDzbcOrderService.queryById(id);
         if (tblDzbcOrderVo == null) return R.fail("该订单不存在");
         if (tblDzbcOrderVo == null) return R.fail("该订单不存在");
         if (tblDzbcOrderVo.getStatus().equals("0")) {
         if (tblDzbcOrderVo.getStatus().equals("0")) {
@@ -169,7 +188,8 @@ public class TblDzbcOrderController extends BaseController {
                 orderRequest.setTimeStart(DateUtil.format(new Date(), "yyyyMMddHHmmss"));
                 orderRequest.setTimeStart(DateUtil.format(new Date(), "yyyyMMddHHmmss"));
                 orderRequest.setTimeExpire(DateUtil.format(DateUtil.offsetMinute(new Date(), 30), "yyyyMMddHHmmss"));
                 orderRequest.setTimeExpire(DateUtil.format(DateUtil.offsetMinute(new Date(), 30), "yyyyMMddHHmmss"));
 
 
-                return R.ok(wxPayService.createOrder(orderRequest));
+                Object data = wxPayService.createOrder(orderRequest);
+                return R.ok(data);
 
 
             } catch (Exception w) {
             } catch (Exception w) {
                 log.error("微信支付异常,异常原因{}", w.getMessage());
                 log.error("微信支付异常,异常原因{}", w.getMessage());

+ 9 - 0
ruoyi-modules/ruoyi-dzbc/src/main/java/org/dromara/system/controller/TblDzbcPathSchedulingController.java

@@ -157,13 +157,22 @@ public class TblDzbcPathSchedulingController extends BaseController {
         if(dataMap == null||dataMap.size()<1){
         if(dataMap == null||dataMap.size()<1){
             return  R.fail("没有排班信息");
             return  R.fail("没有排班信息");
         }else{
         }else{
+            Date finalDate = date;
             List<TblDzbcPathSchedulingVo> carTickets = dataMap.values().stream().filter(item -> {
             List<TblDzbcPathSchedulingVo> carTickets = dataMap.values().stream().filter(item -> {
                 if(item.getExt1()!=null){
                 if(item.getExt1()!=null){
                    JSONObject dataObject = JSONUtil.parseObj(item.getExt1()).getJSONObject("pathInfo");
                    JSONObject dataObject = JSONUtil.parseObj(item.getExt1()).getJSONObject("pathInfo");
                    if(dataObject.getLong("startArea").equals(fromareaId) && dataObject.getLong("endArea").equals(toareaId)){
                    if(dataObject.getLong("startArea").equals(fromareaId) && dataObject.getLong("endArea").equals(toareaId)){
+                       //大于1小时
+                       if(item.getMdate().getTime()- finalDate.getTime()> 3600*1000){
+                           dataMap.remove(item.getId());
+                           RedisUtils.setCacheMap(StrUtil.format("dzbc_path_scheduling|{}", DateUtil.formatDate(finalDate)), dataMap);
+                           return false;
+                       }
+
                        return true;
                        return true;
                    }
                    }
                 }
                 }
+
                 return false;
                 return false;
             }).collect(Collectors.toList());
             }).collect(Collectors.toList());
 
 

+ 4 - 0
ruoyi-modules/ruoyi-dzbc/src/main/java/org/dromara/system/domain/vo/TblDzbcOrderVo.java

@@ -93,5 +93,9 @@ public class TblDzbcOrderVo implements Serializable {
     private Integer price;
     private Integer price;
     private Integer totalPrice;
     private Integer totalPrice;
 
 
+    private String userPhone;
+
+    private TblDzbcPathSchedulingVo scheduling;
+
 
 
 }
 }

+ 2 - 0
ruoyi-modules/ruoyi-dzbc/src/main/java/org/dromara/system/service/ITblDzbcPathSchedulingService.java

@@ -42,6 +42,8 @@ public interface ITblDzbcPathSchedulingService {
      */
      */
     Boolean updateByBo(TblDzbcPathSchedulingBo bo);
     Boolean updateByBo(TblDzbcPathSchedulingBo bo);
 
 
+    void SysCache();
+
     /**
     /**
      * 校验并批量删除定制班车-路线排班信息
      * 校验并批量删除定制班车-路线排班信息
      */
      */

+ 12 - 5
ruoyi-modules/ruoyi-dzbc/src/main/java/org/dromara/system/service/impl/TblDzbcOrderServiceImpl.java

@@ -12,6 +12,7 @@ import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
 import com.github.binarywang.wxpay.service.WxPayService;
 import com.github.binarywang.wxpay.service.WxPayService;
 import jakarta.annotation.PostConstruct;
 import jakarta.annotation.PostConstruct;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.PageQuery;
@@ -20,9 +21,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.common.satoken.utils.LoginHelper;
-import org.dromara.system.domain.TblDzbcOrderLog;
-import org.dromara.system.domain.TblDzbcPathScheduling;
-import org.dromara.system.domain.TblDzbcSite;
+import org.dromara.system.domain.*;
 import org.dromara.system.domain.bo.TblDzbcOrderLogBo;
 import org.dromara.system.domain.bo.TblDzbcOrderLogBo;
 import org.dromara.system.domain.bo.TblDzbcPathSchedulingBo;
 import org.dromara.system.domain.bo.TblDzbcPathSchedulingBo;
 import org.dromara.system.domain.vo.*;
 import org.dromara.system.domain.vo.*;
@@ -30,7 +29,6 @@ import org.dromara.system.mapper.*;
 import org.dromara.util.DistanceCalculator;
 import org.dromara.util.DistanceCalculator;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.dromara.system.domain.bo.TblDzbcOrderBo;
 import org.dromara.system.domain.bo.TblDzbcOrderBo;
-import org.dromara.system.domain.TblDzbcOrder;
 import org.dromara.system.service.ITblDzbcOrderService;
 import org.dromara.system.service.ITblDzbcOrderService;
 import org.springframework.util.Assert;
 import org.springframework.util.Assert;
 
 
@@ -75,6 +73,15 @@ public class TblDzbcOrderServiceImpl implements ITblDzbcOrderService {
     public TableDataInfo<TblDzbcOrderVo> queryPageList(TblDzbcOrderBo bo, PageQuery pageQuery) {
     public TableDataInfo<TblDzbcOrderVo> queryPageList(TblDzbcOrderBo bo, PageQuery pageQuery) {
         LambdaQueryWrapper<TblDzbcOrder> lqw = buildQueryWrapper(bo);
         LambdaQueryWrapper<TblDzbcOrder> lqw = buildQueryWrapper(bo);
         Page<TblDzbcOrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
         Page<TblDzbcOrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        SysUserMapper userMapper = SpringUtils.getBean(SysUserMapper.class);
+        Map<Long, SysUser> userMap = new HashMap<>();
+        userMapper.selectList().forEach(user -> {
+            userMap.put(user.getUserId(), user);
+        });
+        result.getRecords().forEach(order -> {
+            order.setUserPhone(userMap.get(order.getUserId()).getUserName());
+        });
+
         return TableDataInfo.build(result);
         return TableDataInfo.build(result);
     }
     }
 
 
@@ -99,7 +106,7 @@ public class TblDzbcOrderServiceImpl implements ITblDzbcOrderService {
         lqw.eq(StringUtils.isNotBlank(bo.getEndInfo()), TblDzbcOrder::getEndInfo, bo.getEndInfo());
         lqw.eq(StringUtils.isNotBlank(bo.getEndInfo()), TblDzbcOrder::getEndInfo, bo.getEndInfo());
         lqw.eq(StringUtils.isNotBlank(bo.getExt1()), TblDzbcOrder::getExt1, bo.getExt1());
         lqw.eq(StringUtils.isNotBlank(bo.getExt1()), TblDzbcOrder::getExt1, bo.getExt1());
         lqw.eq(StringUtils.isNotBlank(bo.getExt2()), TblDzbcOrder::getExt2, bo.getExt2());
         lqw.eq(StringUtils.isNotBlank(bo.getExt2()), TblDzbcOrder::getExt2, bo.getExt2());
-
+        lqw.orderBy(true, false,TblDzbcOrder::getCreateTime);
         if(params!=null && params.containsKey("kyzId")){
         if(params!=null && params.containsKey("kyzId")){
             String datasql = "( select id from tbl_dzbc_car where kyz_id = "+bo.getParams().get("kyzId").toString()+")";
             String datasql = "( select id from tbl_dzbc_car where kyz_id = "+bo.getParams().get("kyzId").toString()+")";
             lqw.apply(StringUtils.format(" scheduling_id in {}", datasql));
             lqw.apply(StringUtils.format(" scheduling_id in {}", datasql));

+ 30 - 35
ruoyi-modules/ruoyi-dzbc/src/main/java/org/dromara/system/service/impl/TblDzbcPathSchedulingServiceImpl.java

@@ -3,6 +3,7 @@ package org.dromara.system.service.impl;
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import cn.hutool.json.JSONUtil;
 import org.dromara.common.core.service.OssService;
 import org.dromara.common.core.service.OssService;
@@ -58,6 +59,7 @@ public class TblDzbcPathSchedulingServiceImpl implements ITblDzbcPathSchedulingS
      */
      */
     @Override
     @Override
     public TblDzbcPathSchedulingVo queryById(Long id){
     public TblDzbcPathSchedulingVo queryById(Long id){
+        SysCache();
         return baseMapper.selectVoById(id);
         return baseMapper.selectVoById(id);
     }
     }
 
 
@@ -142,7 +144,7 @@ public class TblDzbcPathSchedulingServiceImpl implements ITblDzbcPathSchedulingS
         boolean flag = baseMapper.insert(add) > 0;
         boolean flag = baseMapper.insert(add) > 0;
         if (flag) {
         if (flag) {
             bo.setId(add.getId());
             bo.setId(add.getId());
-            SysCache(add.getId(),null);
+            SysCache();
         }
         }
         return flag;
         return flag;
     }
     }
@@ -156,48 +158,41 @@ public class TblDzbcPathSchedulingServiceImpl implements ITblDzbcPathSchedulingS
         validEntityBeforeSave(update);
         validEntityBeforeSave(update);
         int c = baseMapper.updateById(update) ;
         int c = baseMapper.updateById(update) ;
         if(c>0){
         if(c>0){
-            SysCache(bo.getId(),null);
+            SysCache();
         }
         }
         return c> 0;
         return c> 0;
     }
     }
 
 
 
 
-    private void SysCache(Long id, Collection<Long> ids) {
-        try {
 
 
-            if(ids!=null){
-                List<String> keys = RedisUtils.keys("dzbc_path_scheduling").stream().toList();
-                for (String key : keys) {
-                    Map<String,TblDzbcPathSchedulingVo> boMap = RedisUtils.getCacheMap(key.toString());
-                    if(boMap == null){
-                        boMap = new HashMap<>();
-                    }
-                    for (Long id1 : ids) {
-                        boMap.remove(id1.toString());
-                    }
-                    RedisUtils.setCacheMap(key.toString(),boMap);
-                    String date = key.split("\\|")[1];
-                    long datetime = DateUtil.parseDate(date).getTime();
-                    long currentdatetime = DateUtil.parseDate(DateUtil.today()).getTime();
-                    if(datetime<currentdatetime){
-                        RedisUtils.deleteObject(key.toString());
+    @Override
+    public void SysCache() {
+        try {
+            ThreadUtil.execAsync(new Runnable() {
+
+                @Override
+                public void run() {
+                    TblDzbcPathSchedulingBo bo = new TblDzbcPathSchedulingBo();
+                    bo.getParams().put("mdate", DateUtil.today());
+                    LambdaQueryWrapper<TblDzbcPathScheduling> lqw = buildQueryWrapper(bo);
+                    List<TblDzbcPathSchedulingVo> list = baseMapper.selectVoList(lqw);
+                    Map<String,Map<String,TblDzbcPathSchedulingVo> > map = new HashMap<>();
+                    for (TblDzbcPathSchedulingVo tblDzbcPathSchedulingVo : list) {
+                        if(tblDzbcPathSchedulingVo.getMdate()!=null){
+                            if(map.containsKey(DateUtil.formatDate(tblDzbcPathSchedulingVo.getMdate()))){
+                                map.get(DateUtil.formatDate(tblDzbcPathSchedulingVo.getMdate())).put(tblDzbcPathSchedulingVo.getId().toString(),tblDzbcPathSchedulingVo);
+                            }else{
+                                map.put(DateUtil.formatDate(tblDzbcPathSchedulingVo.getMdate()),Map.of(tblDzbcPathSchedulingVo.getId().toString(),tblDzbcPathSchedulingVo));
+                            }
+                        }
                     }
                     }
-                    RedisUtils.expire(key.toString(),DateUtil.parseDate(date).offset(DateField.HOUR_OF_DAY,24).getTime()-DateUtil.current() );
+                    map.keySet().forEach(key ->{
+                        RedisUtils.setCacheMap(StrUtil.format("dzbc_path_scheduling|{}", key), map.get(key));
+                        RedisUtils.expire(StrUtil.format("dzbc_path_scheduling|{}", key), DateUtil.offset(DateUtil.parseDate(key), DateField.HOUR_OF_DAY, 24).getTime() - DateUtil.current());
+                    });
                 }
                 }
-            }else{
-                TblDzbcPathSchedulingVo bo = baseMapper.selectVoById(id);
-                if(bo == null||bo.getMdate()==null) return;
-                {
-                    Map<String, TblDzbcPathSchedulingVo> boMap = RedisUtils.getCacheMap(StrUtil.format("dzbc_path_scheduling|{}", DateUtil.formatDate(bo.getMdate())));
-                    if (boMap == null||boMap.size() <1) {
-                        boMap = new HashMap<>();
-                    }
+            });
 
 
-                    boMap.put(id.toString(), bo);
-                    RedisUtils.setCacheMap(StrUtil.format("dzbc_path_scheduling|{}", DateUtil.formatDate(bo.getMdate())), boMap);
-                    RedisUtils.expire(StrUtil.format("dzbc_path_scheduling|{}", DateUtil.formatDate(bo.getMdate())), DateUtil.offset(bo.getMdate(), DateField.HOUR_OF_DAY, 24).getTime() - DateUtil.current());
-                }
-            }
         }catch (Exception e){}
         }catch (Exception e){}
 
 
 
 
@@ -221,7 +216,7 @@ public class TblDzbcPathSchedulingServiceImpl implements ITblDzbcPathSchedulingS
         }
         }
         int c =  baseMapper.deleteBatchIds(ids) ;
         int c =  baseMapper.deleteBatchIds(ids) ;
         if(c>0){
         if(c>0){
-            SysCache(null,ids);
+            SysCache();
         }
         }
         return c>0;
         return c>0;
     }
     }