修改weaponSkinModel.js

简介: 在 `weaponSkinModel.js` 中新增分页查询功能,支持按类别、品质、收藏状态、基础武器等条件筛选,返回数据列表及分页信息,提升查询效率与灵活性。

1.1 修改weaponSkinModel.js
在weaponSkinModel.js中添加分页查询方法,支持筛选条件
JavaScript
运行代码
复制代码
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
// model/weaponSkinModel.js
}

// 类别筛选
if (category && category.length > 0) {
  const categoryMap = {
    'weapon_skin': '武器皮肤',
    'sticker': '印花',
    'glove': '手套',
    'knife': '刀具',
    'music_kit': '音乐盒'
  };
  const categoryValues = category.map(val => categoryMap[val] || val).filter(Boolean);
  if (categoryValues.length > 0) {
    conditions.push(`category IN (${categoryValues.map(() => '?').join(',')})`);
    params.push(...categoryValues);
  }
}

// 品质筛选
if (quality && quality.length > 0) {
  const qualityMap = {
    'consumer': '消费级',
    'industrial': '工业级',
    'milspec': '军规级',
    'restricted': '受限',
    'classified': '保密',
    'covert': '隐秘',
    'exceedingly_rare': '非凡'
  };
  const qualityValues = quality.map(val => qualityMap[val] || val).filter(Boolean);
  if (qualityValues.length > 0) {
    conditions.push(`quality IN (${qualityValues.map(() => '?').join(',')})`);
    params.push(...qualityValues);
  }
}

// 收藏品筛选
if (isCollectible !== null && isCollectible !== '') {
  conditions.push('isCollectible = ?');
  params.push(isCollectible === true || isCollectible === 'true' || isCollectible === 1 ? 1 : 0);
}

// 基础武器筛选
if (baseWeapon && baseWeapon.length > 0) {
  conditions.push(`baseWeapon IN (${baseWeapon.map(() => '?').join(',')})`);
  params.push(...baseWeapon);
}

// 构建 WHERE 子句
const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';

// 计算偏移量
const offset = (page - 1) * pageSize;

// 查询总数
const [countResult] = await pool.execute(
  `SELECT COUNT(*) as total FROM weapon_skins ${whereClause}`,
  params
);
const total = countResult[0].total;

// 查询数据
const [rows] = await pool.execute(
  `SELECT * FROM weapon_skins ${whereClause} ORDER BY id DESC LIMIT ? OFFSET ?`,
  [...params, pageSize, offset]
);

// 计算总页数
const totalPages = Math.ceil(total / pageSize);

return {
  success: true,
  data: rows,
  pagination: {
    page: parseInt(page),
    pageSize: parseInt(pageSize),
    total: total,
    totalPages: totalPages,
    hasNext: page < totalPages,
    hasPrev: page > 1
  }
};

} catch (error) {
console.error('❌ 分页查询失败:', error.message);
throw error;
}
}

// 只暴露当前开发的功能
module.exports = {
getAllWeaponSkins,
addWeaponSkin,
deleteWeaponSkin,
updateWeaponSkinPrice,
getWeaponSkinsWithPagination
};

相关文章
|
1天前
|
搜索推荐 算法 UED
15 | 最近邻检索(上):如何用局部敏感哈希快速过滤相似文章?
在搜索引擎与推荐系统中,相似文章去重至关重要。本文介绍如何利用向量空间模型将文章转化为高维向量,并通过局部敏感哈希(如SimHash)实现高效近似最近邻检索,结合抽屉原理优化索引,快速找出内容相似的文章,提升用户体验。该技术广泛应用于网页去重、图像识别等场景。
|
1天前
|
NoSQL 中间件 关系型数据库
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:如何进行Docker部署后端
GoWind Admin风行是一款企业级中后台框架,支持Docker一键部署。通过Makefile封装构建流程,提供docker-compose全量部署与docker run单服务部署两种模式,适配开发、生产多场景。支持服务增减灵活配置,助力高效容器化落地。
31 1
|
1天前
|
Java
类型转换
本示例演示Java中自动类型转换规则:小范围数据类型可自动转为大范围类型。如byte、short、char自动转int,int转long,long转float等,其中float精度约8位,超出部分用科学计数法表示。
|
1天前
|
前端开发 程序员 开发者
常见注解及使用说明
本文介绍SpringMVC中常用注解及其用法,重点讲解@RequestMapping如何将HTTP请求映射到控制器方法,实现前后端接口对接。通过实例展示增删改查路径定义,并解析@GetMapping等派生注解的本质,帮助开发者快速掌握接口映射机制。
9 0
|
1天前
|
Java Maven Spring
动态代理:面向接口编程,屏蔽 RPC 处理流程
本节讲解动态代理在RPC中的核心作用:通过面向接口编程,利用JDK动态代理技术生成代理类,拦截接口调用并透明嵌入远程通信逻辑,屏蔽底层网络细节,实现“本地调用即远程调用”的无缝体验,提升开发效率与系统解耦能力。
|
1天前
|
存储 关系型数据库 MySQL
数据库检索
本文探讨如何用B+树为海量磁盘数据建立高效索引。由于磁盘访问远慢于内存,关键在于减少磁盘I/O次数。B+树通过多路平衡查找、节点大小匹配磁盘块、顺序访问优化等方式,显著提升磁盘数据检索效率,广泛应用于MySQL等数据库系统。
|
1天前
|
前端开发
1.前端知识回顾
创建HTML文件需将后缀命名为.html,如“01-新浪新闻-标题-排版.html”。输入英文感叹号!后回车,自动生成基础结构,修改标题并保存。在浏览器中打开预览效果,确保页面正常显示,完成初步测试。(239字)
|
1天前
|
JavaScript 前端开发 测试技术
3.5 测试数据库删除
本节实现数据库的删除与修改功能测试。在`weaponSkinModel.js`中新增按ID修改价格和扣减库存的功能,通过`index.js`编写测试代码验证逻辑正确性,结合控制台输出与数据库数据双向校验,确保增删改查操作符合预期,提升数据交互稳定性。(238字)
|
1天前
|
前端开发 JavaScript
修改index.html
本项目为“无畏契约皮肤商城”前端页面,包含左右广告栏、导航筛选、商品展示与分页功能,支持价格、外观、类别等多维度筛选,结构清晰,适配移动端,通过HTML、CSS与JS实现交互动态加载。
|
1天前
|
JSON 前端开发 JavaScript
修改server.js
在 `server.js` 中新增分页查询API,支持按价格、外观、类别等条件筛选武器皮肤,实现前端分页与多参数过滤功能,提升数据加载效率与用户体验。