巷陌店铺方法功能整理

一、首页功能方法

(一)初始化与核心控制方法
方法名 功能描述
init() 初始化入口方法,重置页码并调用initShop()initTag();绑定表单提交阻止默认行为,确保异步交互
initShop(data, activetag, isReset) 核心数据请求方法,向后端发起店铺列表查询;实现加载状态控制、数据渲染触发、分页更新
(二)数据交互方法
方法名 功能描述
initTag() 获取分类标签数据,调用renderTagList()渲染标签栏;标签加载失败时保底显示 "全部" 标签
searchShop() 封装搜索逻辑,整合搜索框输入与标签筛选条件;调用initShop()执行查询,实现条件联动
(三)UI 渲染方法
方法名 功能描述
renderShopList(data, isReset) 店铺列表渲染核心方法,根据后端返回数据生成店铺卡片;处理空数据、轮播图初始化、默认文案填充
renderTagList(tags, container, maxVisible) 标签栏渲染方法,控制标签显示数量、生成 "更多" 按钮;绑定标签点击事件,实现激活状态管理
renderPagination() 分页控件渲染,基于 layui 分页组件实现页码、条数控制;监听分页跳转事件,更新页码并触发数据查询
(四)交互控制方法
方法名 功能描述
setActiveTag(element, event) 标签激活状态管理,移除其他标签高亮并设置当前标签激活;触发searchShop()更新筛选结果
resetSearch() 重置搜索条件,清空输入框并激活 "全部" 标签;快速恢复初始展示状态
(五)轮播图相关方法
方法名 功能描述
initCarousels() 店铺卡片轮播图初始化,解析轮播图 URL 并生成轮播结构;实现自动轮播(3 秒间隔)、圆点指示器绑定
changeCarousel(carousel, index) 轮播图切换控制,更新图片显示状态与圆点激活状态;支持自动 / 手动切换场景
(六)辅助方法
方法名 功能描述
goToDetail(id) 店铺详情跳转,拼接店铺 ID 构造跳转 URL
toggleMoreTags(element, event) 标签 "更多" 按钮交互,控制隐藏标签显示 / 隐藏;支持点击外部区域关闭展开的标签(预留扩展)

二、详情页功能方法

(一)店铺基础展示与轮播
方法名 功能描述
initCarousel() 初始化店铺轮播图,支持自动切换(3 秒间隔)、手动圆点切换、左右箭头控制
goToIndex()/showPrev()/showNext() 轮播图切换逻辑,实现无缝轮播效果
updateShopStatus() 实时判断店铺营业状态(对比当前时间与营业时段),动态更新状态文案

并通过以下代码将经纬度转换为相应位置

javascript 复制代码
function getAddressFromKnownCoordinates(longitude, latitude) {
    return new Promise((resolve, reject) => {
        const apiKey = '2105ba620f46e78a74b47d937077308a';
        const url = `https://restapi.amap.com/v3/geocode/regeo?key=${apiKey}&location=${longitude},${latitude}&output=JSON`;

        fetch(url)
            .then(response => response.json())
            .then(data => {
                if (data.status === '1' && data.regeocode) {
                    const addressComponent = data.regeocode.addressComponent;
                    resolve({
                        fullAddress: data.regeocode.formatted_address,
                        province: addressComponent.province,
                        city: addressComponent.city || addressComponent.province,
                        district: addressComponent.district,
                        township: addressComponent.township,
                        street: addressComponent.streetNumber?.street || '',
                        streetNumber: addressComponent.streetNumber?.number || '',
                        citycode: addressComponent.citycode,
                        adcode: addressComponent.adcode
                    });
                } else {
                    reject(new Error('获取地址信息失败: ' + (data.info || '未知错误')));
                }
            })
            .catch(error => {
                reject(error);
            });
    });
}
(二)用户信息与权限校验
功能说明 实现逻辑
用户信息获取 通过/user/getCurrentUser接口获取当前登录用户信息,为后续互动功能提供用户 ID
权限拦截 点赞、收藏、评分、评论等操作前校验登录状态,未登录时提示登录
(三)点赞互动功能
方法名 功能描述
getLikeStatusAndCount() 获取用户对店铺的点赞状态及总点赞数
updateLikeUI() 根据点赞状态更新 UI(颜色、文案切换)
点赞切换逻辑 调用/homepage/likeToggle接口实现点赞 / 取消点赞,同步更新点赞数
(四)评分功能
方法名 功能描述
fetchRatingData() 获取店铺评分总数和平均分,更新评分 UI
评分状态校验 通过/shop/ratingCount检查用户是否已评分,避免重复评分
星级评分提交 支持 1-5 星评分选择,提交后更新评分数据
(五)收藏功能
方法名 功能描述
loadFolders() 加载用户收藏文件夹列表,若无文件夹则跳转收藏夹新建
showCollectionDialog()/closeCollectionDialog() 收藏弹窗的显示与关闭
collection() 提交收藏请求,支持选择文件夹和添加收藏理由
createNewFolder() 创建新文件夹,动态更新文件夹列表
(六)打卡功能
方法名 功能描述
checkinUploadImage() 通过/upload接口上传打卡图片
checkinSubmitData() 提交打卡内容(文字 + 图片),成功后刷新打卡列表
打卡弹窗交互 支持图片预览、移除,内容输入校验
(七)评论功能
方法名 功能描述
getReviewsByShopId() 分页加载店铺评论,支持 "加载更多" 和追加模式
showAddCommentDialog() 评论弹窗展示,支持图片上传和内容输入
评论提交逻辑 调用/shop/addReview发表评论,成功后重置分页并刷新列表
likeComment() 评论点赞 / 取消点赞,同步更新点赞数和 UI 状态
(八)分享功能
方法名 功能描述
copyShopLink() 复制店铺链接到剪贴板,提供成功提示
openShareModal()/closeShareModal() 分享弹窗的打开与关闭,支持动态生成店铺链接

获取协议名称、ip地址及端口核心方法如下:

java 复制代码
        String scheme = request.getScheme();
        String serverName = request.getServerName();
        int serverPort = request.getServerPort();
        String baseUrl;
        if ((scheme.equals("http") && serverPort == 80) || (scheme.equals("https") && serverPort == 443)) {
            baseUrl = scheme + "://" + serverName;
        } else {
            baseUrl = scheme + "://" + serverName + ":" + serverPort;
        }
(九)辅助工具方法
方法名 功能描述
formatTime() 时间格式化(YYYY-MM-DD)
previewImage() 图片预览弹窗,支持点击关闭
isTimeBetween()/timeToSeconds() 时间区间判断,用于营业状态计算

三、通用优化机制

机制说明 实现方式
异步请求管理 通过isLoading状态防止重复请求,加载过程中显示 loading 提示
数据缓存与复用 分页数据缓存(如allCheckins),减少重复请求
相关推荐
叽里咕噜怪1 小时前
MySQL-主从复制实验详解
数据库·mysql
菜萝卜子1 小时前
k8s 启动 postgresql 数据库
数据库·postgresql·kubernetes
jfqqqqq1 小时前
postgres查看数据库大小
数据库·postgres
xcLeigh1 小时前
实测 openEuler 生态适配与应用部署:多架构 + 云原生 + 数据库全场景落地指南
数据库·云原生·架构·openeuler
热爱跑步的恒川1 小时前
OpenEuler上Docker Compose部署PostgreSQL数据库
数据库·docker·postgresql
noravinsc1 小时前
yum install -y mysql-community-server报错 GPG Keys are configured as....
数据库·mysql
Han.miracle1 小时前
数据库圣经--Alter & 视图
数据库·sql·视图
minebmw71 小时前
MySQL内存监控深度解析与排查实践
mysql
LeeZhao@1 小时前
【狂飙全模态】狂飙AGI-智能图文理解助手
数据库·人工智能·redis·语言模型·机器人·agi