From d2b9ce5ceb7059dfa06e9281661c8c9516686dd0 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期一, 06 十月 2025 19:54:22 +0800 Subject: [PATCH] bug修改 --- cloud-server-activity/src/main/java/com/dsh/activity/util/GeoFenceChecker.java | 78 ++++++++++++++++++++++++++ cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js | 6 + cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupCompetitorServiceImpl.java | 7 ++ cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java | 11 +++ cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html | 42 +++++++++---- cloud-server-other/src/main/java/com/dsh/other/controller/StoreConfigController.java | 4 - cloud-server-management/src/main/webapp/WEB-INF/view/system/tHuiminCard/tHuiminCard_detail.html | 15 +++++ 7 files changed, 140 insertions(+), 23 deletions(-) diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/util/GeoFenceChecker.java b/cloud-server-activity/src/main/java/com/dsh/activity/util/GeoFenceChecker.java new file mode 100644 index 0000000..e5203c6 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/util/GeoFenceChecker.java @@ -0,0 +1,78 @@ +package com.dsh.activity.util; + +import java.util.ArrayList; +import java.util.List; + +public class GeoFenceChecker { + + /** + * 判断点是否在多边形内 + * @param polygon 多边形顶点坐标列表 + * @param point 待检测的点 + * @return true表示在多边形内,false表示在多边形外 + */ + public static boolean isPointInPolygon(List<Point> polygon, Point point) { + int intersectCount = 0; + int vertexCount = polygon.size(); + + for (int i = 0; i < vertexCount; i++) { + Point p1 = polygon.get(i); + Point p2 = polygon.get((i + 1) % vertexCount); + + // 检查水平向右的射线是否与边相交 + if (rayIntersectsSegment(p1, p2, point)) { + intersectCount++; + } + } + + // 交点为奇数表示点在多边形内 + return intersectCount % 2 == 1; + } + + /** + * 判断射线是否与线段相交 + * @param p1 线段端点1 + * @param p2 线段端点2 + * @param point 测试点 + * @return 是否相交 + */ + private static boolean rayIntersectsSegment(Point p1, Point p2, Point point) { + // 确保p1的y坐标小于等于p2的y坐标 + if (p1.y > p2.y) { + Point temp = p1; + p1 = p2; + p2 = temp; + } + + // 如果点的y坐标在线段y坐标范围之外,则不相交 + if (point.y < p1.y || point.y > p2.y) { + return false; + } + + // 水平线情况特殊处理 + if (p1.y == p2.y) { + return false; + } + + // 计算交点的x坐标 + double xIntersection = (point.y - p1.y) * (p2.x - p1.x) / (p2.y - p1.y) + p1.x; + + // 如果交点在测试点的右边,则相交 + return point.x < xIntersection; + } + + /** + * 坐标点类 + */ + public static class Point { + public double x; + public double y; + + public Point(double x, double y) { + this.x = x; + this.y = y; + } + } + + +} diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupCompetitorServiceImpl.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupCompetitorServiceImpl.java index a9eee9a..d2e1d63 100644 --- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupCompetitorServiceImpl.java +++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupCompetitorServiceImpl.java @@ -335,7 +335,12 @@ } } // 排序 - list = list.stream().sorted(Comparator.comparing(WorldCupRankVo::getIntegral).reversed().thenComparing(WorldCupRankVo::getTotalSession).reversed().thenComparing(WorldCupRankVo::getWinRate).reversed()).collect(Collectors.toList()); + list = list.stream() + .filter(Objects::nonNull) + .sorted(Comparator.comparing(WorldCupRankVo::getIntegral, Comparator.nullsLast(Comparator.reverseOrder())) + .thenComparing(WorldCupRankVo::getTotalSession, Comparator.nullsLast(Comparator.reverseOrder())) + .thenComparing(WorldCupRankVo::getWinRate, Comparator.nullsLast(Comparator.reverseOrder()))) + .collect(Collectors.toList()); int a = 1; for (WorldCupRankVo worldCupRankVo : list) { worldCupRankVo.setRank(a); diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tHuiminCard/tHuiminCard_detail.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tHuiminCard/tHuiminCard_detail.html index 13c42b0..bc35967 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tHuiminCard/tHuiminCard_detail.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tHuiminCard/tHuiminCard_detail.html @@ -938,7 +938,22 @@ }, handleRemoveStore(index) { + // 先删除表格中的数据 this.tableData.splice(index, 1); + + // 同步更新 huiminCard.useIds + if (this.huiminCard.useScope === '1') { + // 指定门店 + this.huiminCard.useIds = this.tableData.map(item => item.storeId).join(','); + } else if (this.huiminCard.useScope === '2') { + // 指定场地 + this.huiminCard.useIds = this.tableData.map(item => item.siteId).join(','); + } + + // 如果没有数据了,设置为空字符串而不是null + if (this.tableData.length === 0) { + this.huiminCard.useIds = ''; + } }, handleSelectStore() { this.queryParams.pageNum = 1; diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html index d179f30..cd6ef91 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html @@ -125,7 +125,8 @@ accept="." :file-list="imageUrl2" :on-success="handleAvatarSuccess" - :on-remove="handleRemove"> + :on-remove="handleRemove" + :before-upload="beforeAvatarUpload"> <i class="el-icon-plus"></i> </el-upload> <el-dialog :visible.sync="dialogVisible"> @@ -211,10 +212,14 @@ }, methods: { handleAvatarSuccess(res, file) { - file.url =file.response + // 确保文件对象有完整的结构 + if (file && file.response) { + file.url = file.response; + } TCarInfoDlg.goodsPicArray.push(res); - console.log(TCarInfoDlg.goodsPicArray) + console.log(TCarInfoDlg.goodsPicArray); }, + // 添加 beforeUpload 钩子到 el-upload 组件 beforeAvatarUpload(file) { const isLt2M = file.size / 1024 / 1024 < 10; if (!isLt2M) { @@ -222,23 +227,32 @@ } return isLt2M; }, + // 修改 handleRemove 方法 handleRemove(file, fileList) { + // 使用更安全的方式过滤 TCarInfoDlg.goodsPicArray = TCarInfoDlg.goodsPicArray.filter(item => { - return item.uid != file.uid; + // 如果是文件对象,比较 uid;如果是字符串,比较值 + if (typeof item === 'object' && item !== null) { + return item.uid !== file.uid; + } else { + return item !== file.url; + } }); }, changeImg(){ - var i = id.split(",") - for (let j = 0; j <i.length; j++) { - let obj={ - fileName:i[j], - uuid:i[j], - url:i[j], - response:i[j], - } - this.imageUrl2.push(obj) + if (!id) return; // 如果没有图片数据则返回 + + var i = id.split(",").filter(url => url.trim() !== ''); // 过滤空字符串 + for (let j = 0; j < i.length; j++) { + let obj = { + uid: 'existing-' + j + '-' + Date.now(), // 确保 uid 是唯一的字符串 + name: 'image-' + j + '.jpg', // 添加 name 属性 + url: i[j], + status: 'success' // 标记为已上传状态 + }; + this.imageUrl2.push(obj); } - console.log( this.imageUrl2,111) + console.log(this.imageUrl2, 111); }, }, created() { diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js index 044eba8..f59a69c 100644 --- a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js +++ b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js @@ -566,12 +566,14 @@ Feng.info("请上传实景图") return; } + console.log("图片") + console.log(goodImgs) var imgOne =""; for (let i = 0; i <goodImgs.length; i++) { if(i==goodImgs.length-1){ - imgOne += (goodImgs[i].response) + imgOne += (goodImgs[i]) }else { - imgOne+=(goodImgs[i].response+",") + imgOne+=(goodImgs[i]+",") } } diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/StoreConfigController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/StoreConfigController.java index f02a264..b38837a 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/controller/StoreConfigController.java +++ b/cloud-server-other/src/main/java/com/dsh/other/controller/StoreConfigController.java @@ -116,10 +116,8 @@ storeConfigVo.setBackgroundImage("https://we-park-life.oss-cn-beijing.aliyuncs.com/img/0771fb3bd4de43c08492d0912209e51f.png"); break; } - } } - listVo.add(storeConfigVo); } @@ -136,8 +134,6 @@ storeConfigVo.setSort(worldCupStore.getSort()); listVo.add(storeConfigVo); } - - //排序 Collections.sort(listVo, new Comparator<StoreConfigVo>() { @Override diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java index 24c18f3..1020aa5 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java +++ b/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java @@ -429,9 +429,16 @@ try { List<TStoreOtherConfigTrue> tStoreOtherConfigTrues = new ArrayList<>(); - List<TStoreOther> list = tStoreOtherService.list(new LambdaQueryWrapper<TStoreOther>().eq(TStoreOther::getStoreId, id).eq(TStoreOther::getState, 1)); + List<TStoreOther> list = tStoreOtherService + .list(new LambdaQueryWrapper<TStoreOther>().eq(TStoreOther::getStoreId, id) + .eq(TStoreOther::getState, 1)); if (list.size() > 0) { - tStoreOtherConfigTrues = tStoreOtherConfigTrueService.list(new LambdaQueryWrapper<TStoreOtherConfigTrue>().in(TStoreOtherConfigTrue::getPid, list.stream().map(TStoreOther::getId).collect(Collectors.toList())).eq(TStoreOtherConfigTrue::getState, 1)); + tStoreOtherConfigTrues = tStoreOtherConfigTrueService + .list(new LambdaQueryWrapper<TStoreOtherConfigTrue>() + .in(TStoreOtherConfigTrue::getPid, + list.stream().map(TStoreOther::getId) + .collect(Collectors.toList())) + .eq(TStoreOtherConfigTrue::getState, 1)); } for (TStoreOtherConfigTrue tStoreOtherConfigTrue : tStoreOtherConfigTrues) { for (TStoreOther tStoreOther : list) { -- Gitblit v1.7.1