无关风月
2 天以前 d2b9ce5ceb7059dfa06e9281661c8c9516686dd0
bug修改
6个文件已修改
1个文件已添加
163 ■■■■ 已修改文件
cloud-server-activity/src/main/java/com/dsh/activity/util/GeoFenceChecker.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupCompetitorServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tHuiminCard/tHuiminCard_detail.html 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/StoreConfigController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/util/GeoFenceChecker.java
New file
@@ -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;
        }
    }
}
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);
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;
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() {
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]+",")
        }
    }
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
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) {