From b02beccf4567068cb47a3f1181a00039456c872d Mon Sep 17 00:00:00 2001
From: zqy <2522236926@qq.com>
Date: 星期三, 06 八月 2025 15:37:20 +0800
Subject: [PATCH] 用户修改姓名和电话同步修改uaid

---
 zhang-content/src/main/java/com/ruoyi/service/impl/ZTravelPriceServiceImpl.java |  374 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 373 insertions(+), 1 deletions(-)

diff --git a/zhang-content/src/main/java/com/ruoyi/service/impl/ZTravelPriceServiceImpl.java b/zhang-content/src/main/java/com/ruoyi/service/impl/ZTravelPriceServiceImpl.java
index 58c7334..2cda4f0 100644
--- a/zhang-content/src/main/java/com/ruoyi/service/impl/ZTravelPriceServiceImpl.java
+++ b/zhang-content/src/main/java/com/ruoyi/service/impl/ZTravelPriceServiceImpl.java
@@ -1,15 +1,33 @@
 package com.ruoyi.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.MapUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.domain.ZTravelBase;
 import com.ruoyi.domain.ZTravelPrice;
+import com.ruoyi.domain.ZTravelPriceDetail;
+import com.ruoyi.domain.dto.PriceDto;
 import com.ruoyi.mapper.ZTravelPriceMapper;
+import com.ruoyi.service.ZTravelBaseService;
+import com.ruoyi.service.ZTravelPriceDetailService;
 import com.ruoyi.service.ZTravelPriceService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
- *  鏈嶅姟瀹炵幇绫�
+ * 鏈嶅姟瀹炵幇绫�
  * </p>
  *
  * @author ojq
@@ -18,4 +36,358 @@
 @Service
 public class ZTravelPriceServiceImpl extends ServiceImpl<ZTravelPriceMapper, ZTravelPrice> implements ZTravelPriceService {
 
+    @Autowired
+    ZTravelPriceServiceImpl zTravelPriceService;
+
+    @Autowired
+    ZTravelPriceDetailService zTravelPriceDetailService;
+
+    @Autowired
+    ZTravelBaseService zTravelBaseService;
+
+//    private LambdaQueryWrapper<ZTravelPrice> uniqueCondition(ZTravelPrice zTravelPrice){
+//        LambdaQueryWrapper<ZTravelPrice> lqw = new LambdaQueryWrapper<>();
+//        lqw.eq(zTravelPrice.getMyId()!=null,ZTravelPrice::getMyId,zTravelPrice.getMyId())
+//                .eq(zTravelPrice.getStartTime()!=null,ZTravelPrice::getStartTime,zTravelPrice.getStartTime())
+//                .eq(zTravelPrice.getEndTime()!=null,ZTravelPrice::getEndTime,zTravelPrice.getEndTime())
+//                .eq(zTravelPrice.getTotalDay()!=null,ZTravelPrice::getTotalDay,zTravelPrice.getTotalDay())
+//                .eq(StringUtils.isNotEmpty(zTravelPrice.getTitle()),ZTravelPrice::getTitle,zTravelPrice.getTitle());
+////                .eq(zTravelPrice.getEat()!=null,ZTravelPrice::getEat,zTravelPrice.getEat())
+////                .eq(zTravelPrice.getStay()!=null,ZTravelPrice::getStay,zTravelPrice.getStay())
+////                .eq(zTravelPrice.getTraffic()!=null,ZTravelPrice::getTraffic,zTravelPrice.getTraffic())
+////                .eq(zTravelPrice.getShopping()!=null,ZTravelPrice::getShopping,zTravelPrice.getShopping());
+//        return lqw;
+//    }
+
+    private LambdaQueryWrapper<ZTravelPrice> buildCondition(ZTravelPrice zTravelPrice, Long userId) {
+        LambdaQueryWrapper<ZTravelPrice> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(ZTravelPrice::getMyId, userId)
+                .eq(zTravelPrice.getTotalDay() != null, ZTravelPrice::getTotalDay, zTravelPrice.getTotalDay())
+                .like(StringUtils.isNotEmpty(zTravelPrice.getTitle()),ZTravelPrice::getTitle,zTravelPrice.getTitle())
+                .eq(zTravelPrice.getTotalCost()!=null,ZTravelPrice::getTotalCost,zTravelPrice.getTotalCost())
+                .le(zTravelPrice.getEnd() != null, ZTravelPrice::getEndTime, zTravelPrice.getEnd())
+                .ge(zTravelPrice.getStart() != null, ZTravelPrice::getStartTime, zTravelPrice.getStart())
+                .eq(zTravelPrice.getEat()!=null,ZTravelPrice::getEat,zTravelPrice.getEat())
+                .eq(zTravelPrice.getStay()!=null,ZTravelPrice::getStay,zTravelPrice.getStay())
+                .eq(zTravelPrice.getTraffic()!=null,ZTravelPrice::getTraffic,zTravelPrice.getTraffic())
+                .eq(zTravelPrice.getShopping()!=null,ZTravelPrice::getShopping,zTravelPrice.getShopping());
+
+        lqw.orderBy(true, true, ZTravelPrice::getStartTime);
+        return lqw;
+    }
+
+    /**
+     * 鍒嗛〉鏌ユ壘
+     */
+    @Override
+    public AjaxResult selectDataList(ZTravelPrice zTravelPrice, Integer pageNum, Integer pageSize) {
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        Long userId = user.getUserId();
+        LambdaQueryWrapper<ZTravelPrice> lqw = buildCondition(zTravelPrice, userId);
+
+        Page<ZTravelPrice> pageBean = new Page<>(pageNum, pageSize);
+        Page<ZTravelPrice> pageResult = page(pageBean, lqw);
+
+        List<ZTravelPrice> priceList = pageResult.getRecords();//寰楀埌鏌ヨ鍑烘潵鐨勬暟鎹�
+
+        //鏌ヨ璐圭敤璇︽儏
+        for (ZTravelPrice price : priceList) {
+            LambdaQueryWrapper<ZTravelPriceDetail> detailLqw = new LambdaQueryWrapper<>();
+            detailLqw.eq(ZTravelPriceDetail::getFeeId,price.getId());
+            List<ZTravelPriceDetail> detailList = zTravelPriceDetailService.list(detailLqw);
+            price.setDetailList(detailList);
+        }
+
+        HashMap<String, Object> data = MapUtils.getResult(pageResult, priceList);
+        return AjaxResult.success(data);
+
+    }
+
+    @Override
+    public List<ZTravelPrice> selectCondition(ZTravelPrice zTravelPrice) {
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        Long userId = user.getUserId();
+        LambdaQueryWrapper<ZTravelPrice> lqw = buildCondition(zTravelPrice, userId);
+        return list(lqw);
+    }
+
+    @Override
+    public List<ZTravelPrice> selectByIds(Long[] ids) {
+        List<ZTravelPrice> list = new ArrayList<>();
+        if (ids.length != 0)
+            list = listByIds(Arrays.asList(ids));
+        else
+            list = list();
+        return list;
+    }
+
+
+    @Override
+    @Transactional
+    public AjaxResult mySave(PriceDto priceDto) {
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        Long userId = user.getUserId();
+
+        List<ZTravelPriceDetail> detailList = priceDto.getDetailList();
+
+        //鐢熸垚璐圭敤琛╥d
+        String priceId = IdUtils.fastSimpleUUID();
+
+        //寰楀埌鎬诲ぉ鏁�
+        long count = detailList.stream().map(ZTravelPriceDetail::getHappenTime).distinct().count();
+        Integer totalDay = Math.toIntExact(count);
+
+
+        //鍏堟彃鍏ユ槑缁嗚〃
+
+        //collectList杩樻病鏈夋坊鍔犳瘡鏃ラ噾棰濆瓧娈�
+        List<ZTravelPriceDetail> collectList = detailList.stream().peek((priceDetail) ->
+        {
+            priceDetail.setFeeId(priceId);
+            if (priceDetail.getEat() == null || priceDetail.getStay() == null || priceDetail.getTraffic() == null || priceDetail.getEntrance() == null || priceDetail.getShopping() == null) {
+                throw new RuntimeException("濡傛灉娌℃湁瀵瑰簲鐨勮垂鐢紝鍓嶇瑕佷紶涓�0杩囨潵");
+            }
+            Double totalCost = priceDetail.getEat() + priceDetail.getStay() + priceDetail.getTraffic() + priceDetail.getEntrance() + priceDetail.getShopping();
+            priceDetail.setTotalCost(totalCost);
+        }).collect(Collectors.toList());
+
+
+        //鎸夋棩鏈熷垎缁�
+        Map<String, List<ZTravelPriceDetail>> groupByTimeMap = collectList.stream().collect(Collectors.groupingBy(ZTravelPriceDetail::getHappenTime));
+
+        //灏嗘瘡鏃ラ噾棰濆瓧娈电殑鍊间篃娣诲姞涓�
+        for (String key : groupByTimeMap.keySet()) {
+            List<ZTravelPriceDetail> groupByTimeList = groupByTimeMap.get(key);
+            Double dayTotalCost = 0d;
+            for (ZTravelPriceDetail detail : groupByTimeList) {
+                dayTotalCost += detail.getTotalCost();
+            }
+
+            for (ZTravelPriceDetail detail : groupByTimeList){
+                detail.setDayCost(dayTotalCost);
+            }
+        }
+
+        //寮�濮嬫彃鍏ヨ垂鐢ㄨ鎯呮暟鎹�
+        for (String key : groupByTimeMap.keySet()) {
+            List<ZTravelPriceDetail> dataList = groupByTimeMap.get(key);
+            for (ZTravelPriceDetail detail : dataList) {
+                zTravelPriceDetailService.save(detail);
+            }
+        }
+
+
+        //鍐嶆彃鍏ヨ垂鐢ㄨ褰曠粺璁¤〃
+
+        //鍏堝緱鍒板悇涓鎯呰垂鐢ㄧ殑鎬诲拰
+        Double eatTotal = 0d;
+        Double stayTotal = 0d;
+        Double trafficTotal = 0d;
+        Double entranceTotal = 0d;
+        Double shoppingTotal = 0d;
+        Double totalFee = 0d;
+
+        for (String key : groupByTimeMap.keySet()) {
+            List<ZTravelPriceDetail> dataList = groupByTimeMap.get(key);
+            for (ZTravelPriceDetail priceDetail : dataList) {
+                if (priceDetail.getEat() == null || priceDetail.getStay() == null || priceDetail.getTraffic() == null || priceDetail.getEntrance() == null || priceDetail.getShopping() == null) {
+                    throw new RuntimeException("濡傛灉娌℃湁瀵瑰簲鐨勮垂鐢紝鍓嶇瑕佷紶涓�0杩囨潵");
+                }
+                eatTotal+=priceDetail.getEat();
+                stayTotal+=priceDetail.getStay();
+                trafficTotal+=priceDetail.getTraffic();
+                entranceTotal+=priceDetail.getEntrance();
+                shoppingTotal+=priceDetail.getShopping();
+                totalFee+=priceDetail.getTotalCost();
+            }
+        }
+
+        ZTravelPrice zTravelPrice = new ZTravelPrice();
+        zTravelPrice.setId(priceId);
+        zTravelPrice.setStartTime(priceDto.getStartTime());
+        zTravelPrice.setEndTime(priceDto.getEndTime());
+        zTravelPrice.setTotalDay(totalDay);
+        zTravelPrice.setTitle(priceDto.getTitle());
+        zTravelPrice.setTableName(priceDto.getTableName());
+        zTravelPrice.setProperty(priceDto.getProperty());
+        zTravelPrice.setType(priceDto.getType());
+        zTravelPrice.setDestination(priceDto.getDestination());
+        zTravelPrice.setEat(eatTotal);
+        zTravelPrice.setStay(stayTotal);
+        zTravelPrice.setTraffic(trafficTotal);
+        zTravelPrice.setEntrance(entranceTotal);
+        zTravelPrice.setShopping(shoppingTotal);
+        zTravelPrice.setTotalCost(totalFee);
+        zTravelPrice.setMyId(userId);
+
+        //鎻掑叆璐圭敤璁板綍缁熻
+        zTravelPriceService.save(zTravelPrice);
+
+        return AjaxResult.success();
+
+    }
+
+    @Override
+    @Transactional
+    public AjaxResult myUpdate(PriceDto priceDto) {
+
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        Long userId = user.getUserId();
+
+        List<ZTravelPriceDetail> detailList = priceDto.getDetailList();
+
+        //鍏堟煡鏁版嵁搴撻噷闈㈣繖涓�娆¤垂鐢ㄦ墍鏈夌殑鏁版嵁
+        LambdaQueryWrapper<ZTravelPriceDetail> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(ZTravelPriceDetail::getFeeId,priceDto.getId());
+        List<ZTravelPriceDetail> selectDetailList = zTravelPriceDetailService.list(lqw);
+
+        //鎶婁紶杩囨潵鐨勬暟鎹腑娌℃湁鐨刬d锛屽湪鏁版嵁搴撲腑鍒犳帀
+        List<Long> detailIdList = detailList.stream().filter(priceDetail -> priceDetail.getId() != null).map(ZTravelPriceDetail::getId).collect(Collectors.toList());
+        List<Long> deleteIdList = selectDetailList.stream().filter(priceDetail -> !detailIdList.contains(priceDetail.getId())).map(ZTravelPriceDetail::getId).collect(Collectors.toList());
+        zTravelPriceDetailService.removeBatchByIds(deleteIdList);
+
+
+        //濡傛灉浼犺繃鏉ョ殑鍒楄〃鐨勬暟鎹噷闈㈡病鏈塱d
+        List<ZTravelPriceDetail> addPriceDetail = detailList.stream().filter(priceDetail -> priceDetail.getId() == null || priceDetail.getId() == 0 ).collect(Collectors.toList());
+        addPriceDetail.forEach(priceDetail -> {
+            priceDetail.setFeeId(priceDto.getId());
+        });
+
+        //閭e氨鍏堝鍔犲埌鏁版嵁搴撲腑
+        zTravelPriceDetailService.saveBatch(addPriceDetail);
+
+        //寰楀埌鎬诲ぉ鏁�
+        long count = detailList.stream().map(ZTravelPriceDetail::getHappenTime).distinct().count();
+        Integer totalDay = Math.toIntExact(count);
+
+        List<ZTravelPriceDetail> collectList = detailList.stream().peek((priceDetail) ->
+        {
+            if (priceDetail.getEat() == null || priceDetail.getStay() == null || priceDetail.getTraffic() == null || priceDetail.getEntrance() == null || priceDetail.getShopping() == null) {
+                throw new RuntimeException("濡傛灉娌℃湁瀵瑰簲鐨勮垂鐢紝鍓嶇瑕佷紶涓�0杩囨潵");
+            }
+            Double totalCost = priceDetail.getEat() + priceDetail.getStay() + priceDetail.getTraffic() + priceDetail.getEntrance() + priceDetail.getShopping();
+            priceDetail.setTotalCost(totalCost);
+        }).collect(Collectors.toList());
+
+        //鎸夋棩鏈熷垎缁�
+        Map<String, List<ZTravelPriceDetail>> groupByTimeMap = collectList.stream().collect(Collectors.groupingBy(ZTravelPriceDetail::getHappenTime));
+
+        //灏嗘瘡鏃ラ噾棰濆瓧娈电殑鍊间篃娣诲姞涓�
+        for (String key : groupByTimeMap.keySet()) {
+            List<ZTravelPriceDetail> groupByTimeList = groupByTimeMap.get(key);
+            Double dayTotalCost = 0d;
+            for (ZTravelPriceDetail detail : groupByTimeList) {
+                dayTotalCost += detail.getTotalCost();
+            }
+
+            for (ZTravelPriceDetail detail : groupByTimeList){
+                detail.setDayCost(dayTotalCost);
+            }
+        }
+
+        //寮�濮嬩慨鏀硅垂鐢ㄨ鎯呮暟鎹�
+        for (String key : groupByTimeMap.keySet()) {
+            List<ZTravelPriceDetail> dataList = groupByTimeMap.get(key);
+            for (ZTravelPriceDetail detail : dataList) {
+                zTravelPriceDetailService.updateById(detail);
+            }
+        }
+
+        //鍐嶄慨鏀硅垂鐢ㄨ褰曠粺璁¤〃
+
+        //鍏堝緱鍒板悇涓鎯呰垂鐢ㄧ殑鎬诲拰
+        Double eatTotal = 0d;
+        Double stayTotal = 0d;
+        Double trafficTotal = 0d;
+        Double entranceTotal = 0d;
+        Double shoppingTotal = 0d;
+        Double totalFee = 0d;
+
+        for (String key : groupByTimeMap.keySet()) {
+            List<ZTravelPriceDetail> dataList = groupByTimeMap.get(key);
+            for (ZTravelPriceDetail priceDetail : dataList) {
+                if (priceDetail.getEat() == null || priceDetail.getStay() == null || priceDetail.getTraffic() == null || priceDetail.getEntrance() == null || priceDetail.getShopping() == null) {
+                    throw new RuntimeException("濡傛灉娌℃湁瀵瑰簲鐨勮垂鐢紝鍓嶇瑕佷紶涓�0杩囨潵");
+                }
+                eatTotal+=priceDetail.getEat();
+                stayTotal+=priceDetail.getStay();
+                trafficTotal+=priceDetail.getTraffic();
+                entranceTotal+=priceDetail.getEntrance();
+                shoppingTotal+=priceDetail.getShopping();
+                totalFee+=priceDetail.getTotalCost();
+            }
+        }
+
+        ZTravelPrice zTravelPrice = new ZTravelPrice();
+        zTravelPrice.setId(priceDto.getId());
+        zTravelPrice.setStartTime(priceDto.getStartTime());
+        zTravelPrice.setEndTime(priceDto.getEndTime());
+        zTravelPrice.setTotalDay(totalDay);
+        zTravelPrice.setTitle(priceDto.getTitle());
+        zTravelPrice.setTableName(priceDto.getTableName());
+        zTravelPrice.setProperty(priceDto.getProperty());
+        zTravelPrice.setType(priceDto.getType());
+        zTravelPrice.setDestination(priceDto.getDestination());
+        zTravelPrice.setEat(eatTotal);
+        zTravelPrice.setStay(stayTotal);
+        zTravelPrice.setTraffic(trafficTotal);
+        zTravelPrice.setEntrance(entranceTotal);
+        zTravelPrice.setShopping(shoppingTotal);
+        zTravelPrice.setTotalCost(totalFee);
+        zTravelPrice.setMyId(userId);
+
+        //淇敼缁熻琛�
+        zTravelPriceService.updateById(zTravelPrice);
+
+        return AjaxResult.success();
+
+
+    }
+
+    @Override
+    @Transactional
+    public AjaxResult myRemove(String[] ids) {
+
+        for (String feeId : ids) {
+            //鍒犻櫎鏃呮父缁忓巻
+            zTravelBaseService.remove(new LambdaQueryWrapper<ZTravelBase>().eq(ZTravelBase::getFeeId,feeId));
+
+            //鍒犻櫎璐圭敤璇︽儏
+            zTravelPriceDetailService.remove(new LambdaQueryWrapper<ZTravelPriceDetail>().eq(ZTravelPriceDetail::getFeeId,feeId));
+
+            //鍒犻櫎璐圭敤璁板綍
+            zTravelPriceService.remove(new LambdaQueryWrapper<ZTravelPrice>().eq(ZTravelPrice::getId,feeId));
+        }
+
+        return AjaxResult.success();
+
+    }
+
+//    @Override
+//    public AjaxResult importExcel(MultipartFile file) {
+//
+//    }
+
+
+//    @Override
+//    @Transactional
+//    public AjaxResult importExcel(MultipartFile file) {
+//
+//        ExcelUtil<ZTravelPrice> util = new ExcelUtil<>(ZTravelPrice.class);
+//        List<ZTravelPrice> dataList = null;
+//        try {
+//            dataList = util.importExcel(file.getInputStream());
+//        } catch (Exception e) {
+//            throw new RuntimeException("娌℃湁鎸夌収瑙勫垯瀵煎叆鏁版嵁");
+//        }
+//
+//        assert dataList != null;
+//
+//        for (ZTravelPrice zTravelPrice : dataList) {
+//            zTravelPriceService.mySave(zTravelPrice);
+//        }
+//
+//        return AjaxResult.success();
+//
+//    }
 }

--
Gitblit v1.9.1