commit 17a21c4cb4568d83ca0b52d4abaa4c23e343c71c Author: Administrator <1269936630@qq.com> Date: Mon Jun 15 13:47:39 2026 +0800 修改数字 diff --git a/.codebuddy/plans/修复BatchPushProducts并生成测试变量_92dc0570(未完成).md b/.codebuddy/plans/修复BatchPushProducts并生成测试变量_92dc0570(未完成).md new file mode 100644 index 0000000..d06fb9c --- /dev/null +++ b/.codebuddy/plans/修复BatchPushProducts并生成测试变量_92dc0570(未完成).md @@ -0,0 +1,5 @@ +--- +name: 修复BatchPushProducts并生成测试变量 +overview: 修复 service/product.go 中 BatchPushProducts 方法的编译错误(strconv.Itoa → strconv.Itoa),并生成测试用的请求变量(UserId=1965254774327533570,包含 shop_ids 和 product_ids) +--- + diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..35410ca --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/cards.iml b/.idea/cards.iml new file mode 100644 index 0000000..5e764c4 --- /dev/null +++ b/.idea/cards.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..b8745f4 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/PSI项目说明文档.md b/PSI项目说明文档.md new file mode 100644 index 0000000..2f0d6a4 --- /dev/null +++ b/PSI项目说明文档.md @@ -0,0 +1,610 @@ +# PSI 进销存系统 - 项目说明文档 + +## 一、项目概述 + +PSI 是一套基于 Go 语言开发的完整进销存管理系统,涵盖采购、销售、库存、仓库、物流等核心业务环节,支持波次(Wave)管理、OCR 识别、外部系统对接等企业级功能。 + +- **项目名称**:PSI 进销存系统 +- **技术栈**:Go 1.25.7 + Gin + GORM + MySQL +- **服务端口**:`9090` +- **项目路径**:`D:\www\wwwroot\psi` + +--- + +## 二、技术架构 + +| 组件 | 技术 | +|------|------| +| Web 框架 | [Gin v1.11.0](https://github.com/gin-gonic/gin) | +| ORM | [GORM v1.31.1](https://gorm.io/) + MySQL Driver | +| 认证 | JWT(golang-jwt/jwt/v5) | +| 日志 | Logrus + file-rotatelogs(按时间轮转) | +| 搜索引擎 | Elasticsearch v8(可选,当前已注释) | +| OCR | 本地 OCR 服务(可启动独立进程) | +| Excel 导出 | Excelize v2 | +| 条形码 | boombuler/barcode(二维码/条形码生成) | +| 图像处理 | golang.org/x/image | +| 加密 | golang.org/x/crypto | + +--- + +## 三、目录结构 + +``` +psi/ +├── main.go # 程序入口 +├── config.yaml # 配置文件 +├── go.mod / go.sum # Go 依赖管理 +├── config/ # 配置加载模块 +├── constant/ # 常量定义(日志通道等) +├── controllers/ # HTTP 控制器层(处理请求,32个) +├── middleware/ # 中间件(JWT 认证、CORS、API 签名) +├── models/ # 数据模型层 +│ ├── request/ # 请求参数结构体 +│ ├── response/ # 响应结构体 +│ ├── book_info.go # 图书信息模型 +│ ├── employee.go # 员工模型 +│ └── ... # 其他业务模型(共41个表) +├── service/ # 业务逻辑层 +├── database/ # 数据库连接初始化 +├── routes/ # 路由定义 +├── utils/ # 工具函数(JWT、加密等) +├── es/ # Elasticsearch 初始化(可选) +├── ocr/ # OCR 服务 +├── template/ # 模板文件 +├── fonts/ # 字体文件 +├── linux/ # Linux 部署文件 +├── runtime/ # 运行时文件(日志等) +├── .idea/ # IDE 配置 +└── sql.txt # 数据库补充脚本 +``` + +--- + +## 四、数据库表关系 + +### 4.1 表分类统计 + +| 模块 | 表数量 | 说明 | +|-----|-------|------| +| 基础信息 | 10 | 员工、供应商、仓库、库位、商品、店铺、客户等 | +| 库存管理 | 5 | 库存、库存明细、库存流水、盘库等 | +| 采购管理 | 4 | 采购订单、采购明细、入库单、入库明细 | +| 销售出库 | 7 | 销售订单、销售明细、出库单、出库明细、发货单等 | +| 波次管理 | 3 | 波次主表、波次任务、波次任务明细 | +| 其他 | 12 | 小车、外部任务、打印、分账、统计等 | +| **总计** | **41** | | + +### 4.2 核心表结构 + +#### (1)基础信息模块 + +| 表名 | 说明 | 关键字段 | +|-----|------|---------| +| **employees** | 员工表 | id, username, role, status, expire_time | +| **supplier** | 供应商表 | id, code, name, status | +| **warehouse** | 仓库表 | id, code, name, logistics_id, type, status | +| **location** | 库位表 | id, warehouse_id, code, type, capacity, status | +| **product** | 商品表 | id, category_id, barcode, name, price, status | +| **shop** | 店铺表 | id, mall_id, shop_type, shop_alias_name, status | +| **customer** | 客户表 | - | +| **logistics** | 物流模板表 | - | + +#### (2)库存模块 + +| 表名 | 说明 | 关键字段 | +|-----|------|---------| +| **inventory** | 库存汇总表 | id, warehouse_id, product_id, batch_no, quantity, locked_quantity | +| **inventory_log** | 库存流水表 | id, warehouse_id, product_id, location_id, change_type, change_quantity, related_order_no | + +#### (3)采购模块 + +| 表名 | 说明 | 关键字段 | +|-----|------|---------| +| **purchase_order** | 采购订单主表 | id, po_no, supplier_id, warehouse_id, total_amount, status | +| **receiving_order** | 入库单主表 | id, receiving_no, purchase_order_id, wave_task_id, warehouse_id, status | + +#### (4)销售与出库模块 + +| 表名 | 说明 | 关键字段 | +|-----|------|---------| +| **sales_order** | 销售订单主表 | id, so_no, customer_id, warehouse_id, shop_type, total_amount, status, is_distribution | +| **outbound_order** | 出库单主表 | id, out_no, wave_task_id, warehouse_id, total_quantity, status | +| **shipping_order** | 发货单主表 | id, shipping_no, customer_id, status, shipping_time | + +#### (5)波次管理模块 + +| 表名 | 说明 | 关键字段 | +|-----|------|---------| +| **wave_header** | 波次主表 | id, wave_no, direction, type, warehouse_id, related_order_id, status | +| **wave_task** | 波次任务表 | - | +| **wave_task_detail** | 波次任务明细表 | - | + +### 4.3 表关系图谱 + +``` +┌─────────────┐ +│ employees │ +└──────┬──────┘ + │ 创建/操作 + ↓ +┌───────────────────────────────────────────────────────────────────┐ +│ 核心业务流程 │ +├───────────────────────────────────────────────────────────────────┤ +│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ +│ │ supplier │─────▶│purchase_order│─────▶│ receiving │ │ +│ │ (供应商) │ │ (采购单) │ │ (入库单) │ │ +│ └──────────────┘ └──────┬───────┘ └──────┬───────┘ │ +│ │ │ │ +│ ┌──────────────┐ │ │ │ +│ │ product │◀──────────┘ │ │ +│ │ (商品) │ │ │ +│ └──────┬───────┘ │ │ +│ │ │ │ +│ │ ┌──────────────┐ │ │ +│ └─────────────▶│ inventory │◀───────────┘ │ +│ │ (库存) │ │ +│ └──────┬───────┘ │ +│ │ │ +│ │ │ +│ ┌──────────────┐ │ ┌──────────────┐ │ +│ │ customer │ │ │ sales │ │ +│ │ (客户) │◀───────────┴───────────▶│ (销售单) │ │ +│ └──────────────┘ └──────┬───────┘ │ +│ │ │ +│ ┌──────────────┐ ┌──────────────┐ │ │ +│ │ shop │ │ outbound │◀───────┘ │ +│ │ (店铺) │◀────▶│ (出库单) │ │ +│ └──────────────┘ └──────┬───────┘ │ +│ │ │ +│ ▼ │ +│ ┌──────────────┐ │ +│ │ shipping │ │ +│ │ (发货单) │ │ +│ └──────────────┘ │ +└───────────────────────────────────────────────────────────────────┘ + ↑ + │ + ┌──────────────┐ + │ wave_header │ + │ (波次) │ + └──────┬───────┘ + │ + ┌──────────────┐ + │ wave_task │ + │ (波次任务) │ + └──────────────┘ + ↑ + │ + ┌──────────────┐ + │ car │ + │ (小车) │ + └──────────────┘ + +┌─────────────────────────────────────────────────────────────────┐ +│ 基础信息层 │ +├─────────────────────────────────────────────────────────────────┤ +│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ +│ │ warehouse│ │ location │ │logistics │ │ +│ │ (仓库) │───▶│ (库位) │ │(物流模板)│ │ +│ └──────────┘ └──────────┘ └──────────┘ │ +└─────────────────────────────────────────────────────────────────┘ +``` + +### 4.4 关键表关系详细说明 + +#### 采购入库流程关系 + +``` +供应商(supplier) → 采购订单(purchase_order) + ↓ + 波次(wave_header) + ↓ + 波次任务(wave_task) + ↓ + 入库单(receiving_order) + ↓ + 库存增加(inventory + inventory_log) +``` + +- **purchase_order.supplier_id** → supplier.id +- **purchase_order.warehouse_id** → warehouse.id +- **receiving_order.purchase_order_id** → purchase_order.id +- **receiving_order.wave_task_id** → wave_task.id +- **inventory_log.related_order_no** → purchase_order.po_no 或 receiving_order.receiving_no + +#### 销售出库流程关系 + +``` +客户(customer) → 销售订单(sales_order) + ↓ + 波次(wave_header) + ↓ + 波次任务(wave_task) + ↓ + 出库单(outbound_order) + ↓ + 库存减少(inventory + inventory_log) + ↓ + 发货单(shipping_order) +``` + +- **sales_order.customer_id** → customer.id +- **sales_order.warehouse_id** → warehouse.id +- **sales_order.sales_person_id** → shop.id +- **outbound_order.wave_task_id** → wave_task.id +- **outbound_order.warehouse_id** → warehouse.id +- **inventory_log.related_order_no** → sales_order.so_no 或 outbound_order.out_no + +#### 库存管理关系 + +``` +warehouse(仓库) ──┐ + ├─→ inventory(库存) ←─ product(商品) +location(库位) ──┘ ↑ + │ + └─ inventory_log(库存流水) +``` + +- **inventory.warehouse_id** → warehouse.id +- **inventory.product_id** → product.id +- **inventory_log.warehouse_id** → warehouse.id +- **inventory_log.location_id** → location.id +- **inventory_log.product_id** → product.id +- **location.warehouse_id** → warehouse.id + +--- + +## 五、核心业务模块 + +### 5.1 认证与权限 + +| 功能 | 说明 | +|------|------| +| JWT 认证 | 基于 Bearer Token,有效期 24 小时 | +| 角色权限 | 普通员工(role≠255)/ 管理员(role=255) | +| API 签名 | MD5 签名验证,防篡改(app_key + app_secret) | +| 账号过期 | 支持设置员工账号过期时间 | + +### 5.2 员工管理(管理员接口) + +- 员工列表 / 新增 / 修改密码 / 设置级别 +- 设置账号过期时间 / 查看过期状态 +- PDA 配置(用于手持设备) +- 员工操作日志 + +### 5.3 供应商管理 + +- 供应商增删改查 +- 供应商详情查看 + +### 5.4 仓库与库位管理 + +- 仓库增删改查 +- 库位增删改查 +- **库位批量生成**(按规则批量创建库位编号) +- 库位同步外部系统 + +### 5.5 商品管理 + +- 商品列表(支持分页、筛选) +- 商品新增 / 修改(支持图片上传) +- **商品售价批量修改**(公开接口,支持外部调用) +- 商品导出到 Excel +- 商品库存查询(按库位/仓库聚合) +- 商品日志(记录价格/信息变更,支持审核流程) +- 图书信息获取(对接外部图书 API) +- 条形码 / 二维码生成 + +### 5.6 采购流程(波次模式) + +``` +创建采购单 → 生成采购波次 → 释放波次(生成波次任务) + ↓ + PDA 扫码收货 + ↓ + 提交入库单 → 库存增加 +``` + +- `POST /api/purchase-order/create-with-wave` — 创建采购单并生成波次 +- `POST /api/wave/release` — 释放波次,生成波次任务明细 +- `POST /api/receiving/bind-wave` — 绑定波次,创建入库单 +- `POST /api/receiving/submit` — 提交入库,更新库存 +- 支持**小车(Car)**容量管理,按车容量分配波次任务 + +### 5.7 销售与出库流程 + +``` +创建销售单 → 生成出库波次 → 释放出库波次 + ↓ + PDA 拣货/出库 + ↓ + 提交出库单 → 库存减少 + ↓ + 创建发货单 → 填写物流信息 +``` + +- `POST /api/sales-order/create` — 创建销售订单(公开接口) +- `POST /api/outbound-order/create` — 创建出库单 +- `POST /api/wave/outbound/create` — 生成出库波次 +- `POST /api/wave/outbound/release` — 释放出库波次 +- `POST /api/outbound/bind-wave` — 绑定出库波次 +- `POST /api/outbound/submit` — 提交出库 +- `POST /api/shipping-order/create` — 创建发货单 +- `POST /api/shipping-order/update` — 更新物流信息 +- `POST /api/sales-order/cancel` — 取消销售单 +- `POST /api/wave/outbound/cancel` — 取消出库波次 + +### 5.8 库存管理 + +- 库存列表(按商品/库位/仓库维度) +- **库存按商品聚合列表**(同商品不同库位合并显示) +- 库存明细(跟踪每笔出入库记录) +- 库存变动日志 +- **盘库调整**(库存盘点,支持盘盈/盘亏调整) +- **盘库退货**(将盘点差异商品退回) +- 库存统计 + +### 5.9 波次任务管理 + +- 波次任务列表(按采购/出库类型) +- 波次任务详情 +- 波次任务进度跟踪 + +### 5.10 店铺与外部对接 + +- 店铺管理(增删改查) +- **外部任务(OutTask)**:与外部系统同步任务状态 +- 按店铺查询外部任务 +- 外部任务日志 +- 同步商品到外部系统(`external_api.sync_product_url`) +- 同步任务到外部系统(`external_api.sync_task_url`) + +### 5.11 物流管理 + +- 物流模板增删改查 +- 物流模板详情 + +### 5.12 分拣设置 + +- 获取分拣配置 +- 保存分拣配置(影响波次任务分配逻辑) + +### 5.13 仪表盘统计 + +- 仪表盘概览统计(`/api/dashboard/statist`) +- 各仓库库存统计(`/api/dashboard/warehouse`) +- 订单统计(`/api/dashboard/order`) + +### 5.14 OCR 识别 + +- `POST /api/ocr` — 图片文字识别(公开接口) +- 可启动本地 OCR 服务进程(`OCRService.exe`) + +--- + +## 六、API 接口分类 + +### 公开接口(无需认证) + +| 接口 | 方法 | 说明 | +|------|------|------| +| `/api/login/:type` | POST | 员工登录 | +| `/api/employee/reg` | POST | 员工注册 | +| `/api/ocr` | POST | OCR 文字识别 | +| `/api/sales-order/create` | POST | 创建销售单 | +| `/api/product/updatePrice` | POST | 批量修改商品售价 | +| `/api/product/getProductInventory` | GET | 查询商品库存 | +| `/api/employee/check_code` | GET | 校验员工码 | +| `/api/employee/clear_code` | POST | 清除员工码 | +| `/api/out-task-log/update` | POST | 更新外部任务日志 | + +### 签名接口(需要 API 签名,无需 JWT) + +| 接口 | 方法 | 说明 | +|------|------|------| +| `/api/location/sync-locations` | POST | 同步库位到外部系统 | +| `/api/goods/sync-batch` | POST | 批量同步商品到外部系统 | + +### 需认证接口(JWT + API 签名) + +大部分业务接口需要 `Authorization: Bearer ` 请求头,以及 API 签名验证。 + +### 管理员接口(需要 role=255) + +员工管理、用户类型管理的完整 CRUD。 + +--- + +## 七、配置说明(config.yaml) + +```yaml +server: + port: "9090" # 服务监听端口 + host: "http://192.168.101.213:9090/" # 服务外部访问地址 + +database: + host: localhost + port: "3306" + user: root + password: root + name: psi # 数据库名 + encrypt_key: "..." # 敏感字段加密密钥(AES) + +jwt: + secret: "..." # JWT 签名密钥 + expire_hours: 24 # Token 有效期 + +api_sign: + app_key: "psi" + app_secret: "psi_api_sign_secret" # API 签名密钥 + timestamp_tolerance: 300 # 时间戳容差(秒) + +log: + max_age: 600 # 日志最大保留时间(秒) + rotate_time: 600 # 日志轮转时间间隔(秒) + root_path: "./runtime/logs" + channel: # 各日志通道文件路径 + sql: "/sql/err.log" + work: "/work/err.log" + request: "/request/err.log" + es: "/es/err.log" + redis: "/redis/err.log" + +ocr: + service_url: "http://127.0.0.1:35569/ocr" + exe_url: "./ocr/OCRService.exe" # OCR 可执行文件路径 + +external_api: + sync_product_url: "http://192.168.101.127:8080/zhishu/filterSet/save" + sync_task_url: "http://192.168.101.156:8080/task/create" + sync_task_body_url: "http://192.168.101.156:8080/task/setTaskBody" + timeout: 30 +``` + +> **注意**:Elasticsearch 配置已注释,ES 同步功能当前未启用。 + +--- + +## 八、数据库模型一览 + +| 模型文件 | 说明 | +|----------|------| +| `employee.go` | 员工/用户信息 | +| `employee_level.go` | 员工级别配置 | +| `employee_level_log.go` | 员工级别变更日志 | +| `employee_settings.go` | 员工 PDA 配置 | +| `supplier.go` | 供应商 | +| `warehouse.go` | 仓库 | +| `location.go` | 库位 | +| `product.go` | 商品 | +| `product_category.go` | 商品分类 | +| `product_unit_conversion.go` | 商品单位换算 | +| `product_serial.go` | 商品序列号 | +| `product_log.go` | 商品变更日志(审核流) | +| `purchase_order.go` | 采购订单 | +| `purchase_order_item.go` | 采购订单明细 | +| `receiving_order.go` | 入库单 | +| `receiving_order_item.go` | 入库单明细 | +| `sales_order.go` | 销售订单 | +| `sales_order_item.go` | 销售订单明细 | +| `outbound_order.go` | 出库单 | +| `outbound_order_item.go` | 出库单明细 | +| `shipping_order.go` | 发货单 | +| `inventory.go` | 库存 | +| `inventory_detail.go` | 库存明细 | +| `inventory_log.go` | 库存变动日志 | +| `stock_check.go` | 盘库单 | +| `stock_check_item.go` | 盘库明细 | +| `wave_header.go` | 波次头 | +| `wave_task.go` | 波次任务 | +| `wave_task_detail.go` | 波次任务明细 | +| `car.go` | 小车(AGV/搬运车) | +| `car_shop.go` | 小车与店铺关联 | +| `shop.go` | 店铺 | +| `logistics.go` | 物流模板 | +| `out_task.go` | 外部任务 | +| `out_task_log.go` | 外部任务日志 | +| `print_log.go` | 打印日志 | +| `print_task.go` | 打印任务 | +| `sorting_settings.go` | 分拣设置 | +| `statist.go` | 统计数据 | +| `customer.go` | 客户 | +| `user_type.go` | 用户类型 | +| `book_info.go` | 图书信息(对接外部图书 API) | +| `split_account_config.go` | 分账配置 | +| `split_account_deduction_log.go` | 分账扣钱日志 | +| `outbound_order_location_log.go` | 出库单库位变更记录 | + +--- + +## 九、启动与运行 + +### 本地开发 + +```bash +# 进入项目目录 +cd D:\www\wwwroot\psi + +# 安装依赖 +go mod download + +# 运行项目 +go run main.go +``` + +服务启动后监听 `http://localhost:9090`。 + +### 配置说明 + +1. 确保 MySQL 服务运行,并创建 `psi` 数据库 +2. 根据实际的 MySQL 账号密码修改 `config.yaml` +3. 如需启用 OCR,确保 `ocr/OCRService.exe` 存在 +4. 如需启用 Elasticsearch,取消 `main.go` 中 ES 初始化代码的注释,并配置 `config.yaml` 中的 `es` 节点 +5. 执行 `sql.txt` 中的补充 SQL 脚本(分账配置、出库单库位变更记录等) + +--- + +## 十、中间件说明 + +| 中间件文件 | 功能 | +|-----------|------| +| `middleware/cors.go` | 跨域资源共享(CORS)处理 | +| `middleware/auth.go` | JWT 认证 + 员工状态校验 + 租户数据库连接 | +| `middleware/sign.go` | API 签名验证(防篡改、防重放攻击) | + +**请求头要求(需认证接口)**: + +``` +Authorization: Bearer +X-App-Key: psi +X-Timestamp: +X-Sign: +``` + +签名计算方式:`md5(app_key + app_secret + timestamp)` + +--- + +## 十一、外部系统集成 + +系统支持与以下外部系统对接: + +| 对接功能 | 配置项 | 说明 | +|---------|--------|------| +| 商品同步 | `sync_product_url` | 将商品信息推送到外部系统 | +| 任务创建 | `sync_task_url` | 在外部系统创建任务 | +| 任务内容同步 | `sync_task_body_url` | 同步任务详细信息到外部系统 | +| 库位同步 | `/api/location/sync-locations` | 将库位信息推送到外部系统 | +| 商品批量同步 | `/api/goods/sync-batch` | 批量推送商品到外部系统 | + +--- + +## 十二、技术架构亮点 + +| 技术特性 | 说明 | +|---------|------| +| **GORM ORM** | 强大的数据库操作,自动关联查询 | +| **JWT 认证** | 无状态认证,有效期 24 小时 | +| **API 签名验证** | MD5 签名防篡改、防重放攻击 | +| **Elasticsearch** | 可选的搜索引擎集成(代码已注释) | +| **OCR 识别** | 本地 OCR 服务进程,支持图片文字识别 | +| **Excel 处理** | Excelize 库,支持数据导入导出 | +| **条码生成** | boombuler/barcode,支持二维码/条形码 | +| **日志轮转** | file-rotatelogs,按时间轮转日志 | +| **软删除** | 所有表都支持 IsDel 逻辑删除标记 | +| **时间戳** | 使用 Unix 时间戳(秒)而非 datetime | + +--- + +## 十三、待完善功能(根据代码注释) + +- ✅ Elasticsearch 同步功能(代码已注释,可启用) +- ✅ OCR 服务(代码已注释,可启用) +- 外部系统对接 URL 已在配置中,需确认外部系统接口可用性 +- `main.go` 中 ES 和 OCR 的初始化代码已注释,按需启用 + +--- + +*文档生成时间:2026-06-05* +*项目路径:D:\www\wwwroot\psi* diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..7918c25 --- /dev/null +++ b/config.yaml @@ -0,0 +1,61 @@ +server: + port: "9090" +# host: "https://psi.api.buzhiyushu.cn/" + host: "http://192.168.101.213:9090/" + +database: + host: 175.27.224.66 + port: "3306" + user: root + password: 5e07c0eec1770c94 + name: psi + encrypt_key: "0123456789abcdef0123456789abcdef" + +task_database: + host: nj-cynosdbmysql-grp-1v6vxn5f.sql.tencentcdb.com + port: "26247" + user: root + password: Long6166@@ + name: task + +jwt: + secret: "0123456789abcdef0123456789abcdef" + expire_hours: 24 + +api_sign: + app_key: "psi" + app_secret: "psi_api_sign_secret" + client_id: "psi" + sign_method: "md5" + timestamp_tolerance: 300 + +log: + max_age: 600 + rotate_time: 600 + root_path: "./runtime/logs" + channel: + sql: "/sql/err.log" + work: "/work/err.log" + request: "/request/err.log" + es: "/es/err.log" + redis: "/redis/err.log" + +es: + host: "http://36.212.12.92:9527" + index: "books-from-mysql-v2" + username: "elastic" + password: "+Tz5qR_KushZ-bPgZ_H-" + +ocr: + service_url: "http://127.0.0.1:35569/ocr" + exe_url: "./ocr/OCRService.exe" + +external_api: + # sync_product_url: "http://192.168.101.127:8080/zhishu/filterSet/save" + sync_product_url: "https://api.buzhiyushu.cn/zhishu/filterSet/save" + es_update_book_url: "https://book.center.yushutx.com/api/es/updateBookFieldsByISBN" + # sync_task_url: "http://192.168.101.156:8080/task/create" + sync_task_url: "http://36.212.7.246:8283/task/create" + # sync_task_body_url: "http://192.168.101.156:8080/task/setTaskBody" + sync_task_body_url: "http://36.212.7.246:8283/task/setTaskBody" + timeout: 30 \ No newline at end of file diff --git a/config/config.go b/config/config.go new file mode 100644 index 0000000..21821e8 --- /dev/null +++ b/config/config.go @@ -0,0 +1,106 @@ +package config + +import ( + "fmt" + "log" + "os" + + "gopkg.in/yaml.v3" +) + +type Config struct { + Server ServerConfig `yaml:"server"` + Database DatabaseConfig `yaml:"database"` + TaskDatabase DatabaseConfig `yaml:"task_database"` + JWT JWTConfig `yaml:"jwt"` + APISign APISignConfig `yaml:"api_sign"` + Log LogConfig `yaml:"log"` + ES ESConfig `yaml:"es"` + OCR OCRConfig `yaml:"ocr"` + ExternalAPI ExternalAPIConfig `yaml:"external_api"` +} + +type ServerConfig struct { + Port string `yaml:"port"` + Host string `yaml:"host"` +} + +type DatabaseConfig struct { + Host string `yaml:"host"` + Port string `yaml:"port"` + User string `yaml:"user"` + Password string `yaml:"password"` + Name string `yaml:"name"` + EncryptKey string `yaml:"encrypt_key"` +} + +type JWTConfig struct { + Secret string `yaml:"secret"` + ExpireHours int `yaml:"expire_hours"` +} + +type APISignConfig struct { + AppKey string `yaml:"app_key"` + AppSecret string `yaml:"app_secret"` + SignMethod string `yaml:"sign_method"` + TimestampTolerance int `yaml:"timestamp_tolerance"` + ClientId string `yaml:"client_id"` +} + +type LogConfig struct { + MaxAge int `yaml:"max_age"` + RotateTime int `yaml:"rotate_time"` + RootPath string `yaml:"root_path"` + Channel map[string]string `yaml:"channel"` +} + +type ESConfig struct { + Host string `yaml:"host"` + Index string `yaml:"index"` + Username string `yaml:"username"` + Password string `yaml:"password"` +} + +type OCRConfig struct { + ServiceUrl string `yaml:"service_url"` + ExeUrl string `yaml:"exe_url"` +} + +type ExternalAPIConfig struct { + SyncProductURL string `yaml:"sync_product_url"` + SyncTaskURL string `yaml:"sync_task_url"` + SyncTaskBodyURL string `yaml:"sync_task_body_url"` + ESUpdateBookURL string `yaml:"es_update_book_url"` + Timeout int `yaml:"timeout"` +} + +var AppConfig *Config + +func Init() { + configPath := "config.yaml" + + data, err := os.ReadFile(configPath) + if err != nil { + log.Fatalf("读取配置文件失败: %v", err) + } + + AppConfig = &Config{} + err = yaml.Unmarshal(data, AppConfig) + if err != nil { + log.Fatalf("解析配置文件失败: %v", err) + } + + log.Println("配置文件加载成功") +} + +// GetDSN 返回MySQL连接字符串 +func (c *Config) GetDSN() string { + return fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local&timeout=10s&readTimeout=30s&writeTimeout=30s&interpolateParams=true&multiStatements=true&allowNativePasswords=true&checkConnLiveness=true", + c.Database.User, c.Database.Password, c.Database.Host, c.Database.Port, c.Database.Name) +} + +// GetTaskDSN 返回任务库MySQL连接字符串(腾讯云MySQL) +func (c *Config) GetTaskDSN() string { + return fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local&timeout=10s&readTimeout=30s&writeTimeout=30s&allowNativePasswords=true", + c.TaskDatabase.User, c.TaskDatabase.Password, c.TaskDatabase.Host, c.TaskDatabase.Port, c.TaskDatabase.Name) +} diff --git a/constant/constant.go b/constant/constant.go new file mode 100644 index 0000000..0e427f0 --- /dev/null +++ b/constant/constant.go @@ -0,0 +1,120 @@ +package constant + +const MaxTaskQuantity int = 200 // 单次任务最大数量 + +// 响应状态码 +const ( + OAUTH = 401 // 未授权 + ERROR = 500 // 服务器错误 + SUCCESS = 200 // 成功 + VALIDATE = 204 +) + +// 波次类型 +const ( + WaveNormal = 1 // 普通 + WaveNUrgent = 2 // 紧急 + WaveNBatch = 3 // 批量 +) + +// 波次状态 +const ( + WaveStatusCreated = 1 // 已创建 + WaveStatusReleased = 2 // 已下发 + WaveStatusPicking = 3 // 拣货中 + WaveStatusCompleted = 4 // 已完成 + WaveStatusCancelled = 5 // 已取消 +) + +// 入出库方向 +const ( + DirectionInbound = 1 // 入库 + DirectionOutbound = 2 // 出库 +) + +// 任务类型 +const ( + TaskTypePicking = 1 // 拣货任务 + TaskTypePutaway = 4 // 上架任务 +) + +// 库存变更类型 +const ( + InventoryChangeInbound = 1 // 入库 + InventoryChangeOutbound = 2 // 出库 + InventoryChangeTransfer = 3 // 移库 + InventoryChangeAdjustment = 4 // 盘点调整 + InventoryChangeLock = 5 // 锁定库存 + InventoryChangeUnlock = 6 // 解锁库存 +) + +// 订单类型 +const ( + OrderTypePurchase = "purchase" // 采购订单 + OrderTypeReceiving = "receiving" // 入库订单 + OrderTypeSales = "sales" // 销售订单 + OrderTypeStockCheck = "stock_check" // 盘库单 +) + +// 采购订单状态 (PurchaseOrder.Status) +const ( + PurchaseStatusDraft = 1 // 草稿 + PurchaseStatusSubmitted = 2 // 已提交 + PurchaseStatusApproved = 3 // 已审核 + PurchaseStatusPartialReceived = 4 // 部分收货 + PurchaseStatusReceived = 5 // 已收货 + PurchaseStatusCancelled = 6 // 已取消 +) + +// 入库单状态 (ReceivingOrder.Status) +const ( + ReceivingStatusPending = 1 // 待收货 + ReceivingStatusChecking = 2 // 验收中 + ReceivingStatusCompleted = 3 // 已完成 + ReceivingStatusCancelled = 4 // 已取消 +) + +// 销售订单状态 (SalesOrder.Status) +const ( + SalesStatusDraft = 1 // 草稿 + SalesStatusConfirmed = 2 // 已确认 + SalesStatusAllocated = 3 // 已分配库存 + SalesStatusPicking = 4 // 拣货完成 + SalesStatusShipped = 5 // 已发货 + SalesStatusCancelled = 6 // 已取消 +) + +// 出库单状态 (OutboundOrder.Status) +const ( + OutboundStatusCreated = 1 // 已创建 + OutboundStatusPicking = 2 // 拣货中 + OutboundStatusCompleted = 3 // 已完成 + OutboundStatusCancelled = 4 // 已取消 + OutboundStatusShipping = 5 // 发货中 + OutboundStatusShipped = 6 // 已发货 +) + +// 发货单状态 (ShippingOrder.Status) +const ( + ShippingStatusPending = 1 // 待发货 + ShippingStatusShipped = 2 // 已发货 + ShippingStatusSigned = 3 // 已签收 + ShippingStatusCancelled = 4 // 已取消 +) + +// 库存盘点状态 +const ( + InventoryCheckStatusDraft = 1 // 待盘点 + InventoryCheckStatusInProgress = 2 // 盘点中 + InventoryCheckStatusCompleted = 3 // 已完成 + InventoryCheckStatusCancelled = 4 // 已取消 +) + +// 日志渠道 +const ( + LoggerChannelSql = "sql" // SQL日志 + LoggerChannelWork = "work" // 业务日志 + LoggerChannelRequest = "request" // 请求日志 + LoggerChannelEs = "es" // ES日志 + LoggerChannelRedis = "redis" // Redis日志 +) diff --git a/controllers/barcode.go b/controllers/barcode.go new file mode 100644 index 0000000..f70b35f --- /dev/null +++ b/controllers/barcode.go @@ -0,0 +1,33 @@ +package controllers + +import ( + "github.com/gin-gonic/gin" + "net/http" + "psi/constant" + systemReq "psi/models/request" + "psi/service" + "psi/utils" +) + +type BarcodeApi struct{} + +var barcodeService = service.BarcodeService{} + +func (r *BarcodeApi) GenerateBarcode(c *gin.Context) { + var req systemReq.BarcodeRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "条形码生成请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := barcodeService.GenerateBarcode(req.Content) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "条形码生成异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} diff --git a/controllers/book.go b/controllers/book.go new file mode 100644 index 0000000..8517028 --- /dev/null +++ b/controllers/book.go @@ -0,0 +1,128 @@ +package controllers + +import ( + "github.com/gin-gonic/gin" + "net/http" + "psi/constant" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type BookApi struct{} + +var bookService = service.BookService{} + +// GetBookInfo 获取图书信息 +func (r *BookApi) GetBookInfo(c *gin.Context) { + var req systemReq.BookRequest + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "获取图书信息请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := bookService.GetBookInfo(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "获取图书信息异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetSuitBook 获取套装书 +func (r *BookApi) GetSuitBook(c *gin.Context) { + var req systemReq.BookRequest + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "获取套装书请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := bookService.GetSuitBook(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "获取套装书异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetNoIsbnBook 获取无书号书 +func (r *BookApi) GetNoIsbnBook(c *gin.Context) { + var req systemReq.GetNoIsbnBookRequest + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "获取无书号书请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := bookService.GetNoIsbnBook(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "获取无书号书异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + "msg": "查询成功", + }) +} + +// GetProCode 获取商品编码 +func (r *BookApi) GetProCode(c *gin.Context) { + var req systemReq.GetCodeRequest + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "获取商品编码请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := bookService.GetProCode(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "获取商品编码异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// SyncBook 同步书籍信息 +func (r *BookApi) SyncBook(c *gin.Context) { + var req systemReq.AddBookRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "同步书籍信息请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if len(req.LiveImage) == 0 { + image, err := parseImageFromForm(c) + if err != nil { + systemRes.FailWithValidateMessage("参数错误: "+err.Error(), c) + return + } + req.LiveImage = image + } + + bookID, result, err := bookService.SyncBook(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "同步书籍信息异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": gin.H{ + "id": bookID, + "isbn": result, + }, + }) +} diff --git a/controllers/cancel_logistics.go b/controllers/cancel_logistics.go new file mode 100644 index 0000000..aad3349 --- /dev/null +++ b/controllers/cancel_logistics.go @@ -0,0 +1,38 @@ +package controllers + +import ( + "net/http" + + "github.com/gin-gonic/gin" + "psi/models/request" + "psi/service" + "psi/utils" +) + +type CancelLogisticsApi struct{} + +var cancelLogisticsService = service.CancelLogisticsService{} + +// CancelLogistics 取消物流单号 +func (r *CancelLogisticsApi) CancelLogistics(c *gin.Context) { + var req request.CancelLogisticsRequest + if err := c.ShouldBind(&req); err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": "500", + "msg": "参数错误: " + err.Error(), + }) + return + } + + resp, err := cancelLogisticsService.CancelLogistics(req.UserID, req.LogisticsNo) + if err != nil { + utils.ErrorLog("cancel_logistics", nil) // simple log + c.JSON(http.StatusOK, gin.H{ + "code": "500", + "msg": err.Error(), + }) + return + } + + c.JSON(http.StatusOK, resp) +} diff --git a/controllers/car.go b/controllers/car.go new file mode 100644 index 0000000..7b6ea61 --- /dev/null +++ b/controllers/car.go @@ -0,0 +1,161 @@ +package controllers + +import ( + "encoding/json" + "fmt" + "github.com/gin-gonic/gin" + "github.com/sirupsen/logrus" + "net/http" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type CarApi struct{} + +var carService = service.CarService{} + +func (r *CarApi) GetCarList(c *gin.Context) { + var req systemReq.QueryCarRequest + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "查询小车列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + list, total, err := carService.GetCarList(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "查询小车列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "data": gin.H{ + "list": list, + "total": total, + "page": req.Page, + "page_size": req.PageSize, + }, + "msg": "查询成功", + }) +} + +func (r *CarApi) GetCarDetail(c *gin.Context) { + idStr := c.Param("id") + + if idStr == "" { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取小车详情请求参数异常", + "err_msg": "ID参数不能为空", + }) + systemRes.FailWithValidateMessage("参数错误: ID不能为空", c) + return + } + + var id int64 + if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil || id <= 0 { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取小车详情请求参数异常", + "err_msg": "ID格式错误: " + idStr, + }) + systemRes.FailWithValidateMessage("参数错误: ID格式不正确", c) + return + } + + car, err := carService.GetCarByID(id, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "查询小车详情异常", err, c, gin.H{"id": id}) + return + } + + systemRes.OkWithDetailed(car, "查询成功", c) +} + +func (r *CarApi) CreateCar(c *gin.Context) { + var req systemReq.CreateCarRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "创建小车请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if len(req.ShopInfo) == 0 { + info, err := parseInfo(c) + if err != nil { + systemRes.FailWithValidateMessage("参数错误: "+err.Error(), c) + return + } + req.ShopInfo = info + } + + userInfo := utils.GetUserInfo(c) + id, err := carService.CreateCar(req, userInfo.ID, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "创建小车异常", err, c, req) + return + } + + systemRes.OkWithDetailed(gin.H{"id": id}, "创建成功", c) +} + +func (r *CarApi) UpdateCar(c *gin.Context) { + var req systemReq.UpdateCarRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "更新小车请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if len(req.ShopInfo) == 0 { + info, err := parseInfo(c) + if err != nil { + systemRes.FailWithValidateMessage("参数错误: "+err.Error(), c) + return + } + req.ShopInfo = info + } + + userInfo := utils.GetUserInfo(c) + if err := carService.UpdateCar(req, userInfo.ID, database.GetDB(c)); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "更新小车异常", err, c, req) + return + } + + systemRes.OkWithMessage("更新成功", c) +} + +func (r *CarApi) DeleteCar(c *gin.Context) { + var req systemReq.DeleteCarRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "删除小车请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if err := carService.DeleteCar(req.ID, database.GetDB(c)); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "删除小车异常", err, c, req) + return + } + + systemRes.OkWithMessage("删除成功", c) +} + +func parseInfo(c *gin.Context) ([]map[string]interface{}, error) { + var info []map[string]interface{} + + for i := 0; i < 100; i++ { + infoStr := c.PostForm(fmt.Sprintf("shop_info[%d]", i)) + if infoStr == "" { + break + } + + var parsedData map[string]interface{} + if err := json.Unmarshal([]byte(infoStr), &parsedData); err != nil { + return nil, fmt.Errorf("第%d个shop_info参数JSON解析失败: %v", i, err) + } + + info = append(info, parsedData) + } + + return info, nil +} diff --git a/controllers/config.go b/controllers/config.go new file mode 100644 index 0000000..858ffb8 --- /dev/null +++ b/controllers/config.go @@ -0,0 +1,120 @@ +package controllers + +import ( + "fmt" + "github.com/gin-gonic/gin" + "github.com/sirupsen/logrus" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type ConfigApi struct{} + +var configService = service.ConfigService{} + +// GetConfigList 获取配置列表 +func (r *ConfigApi) GetConfigList(c *gin.Context) { + var req systemReq.GetConfigListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "配置列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := configService.GetConfigList(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "配置列表异常", err, c, req) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} + +// GetConfigDetail 获取配置详情 +func (r *ConfigApi) GetConfigDetail(c *gin.Context) { + idStr := c.Param("id") + + if idStr == "" { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取配置详情请求参数异常", + "err_msg": "ID参数不能为空", + }) + systemRes.FailWithValidateMessage("参数错误: ID不能为空", c) + return + } + + var id int64 + if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil || id <= 0 { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取配置详情请求参数异常", + "err_msg": "ID格式错误: " + idStr, + }) + systemRes.FailWithValidateMessage("参数错误: ID格式不正确", c) + return + } + + result, err := configService.GetConfigDetail(id, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "配置详情异常", err, c, gin.H{"id": id}) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} + +// CreateConfig 创建配置 +func (r *ConfigApi) CreateConfig(c *gin.Context) { + var req systemReq.AddConfigRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "创建配置请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + id, err := configService.CreateConfig(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "创建配置异常", err, c, req) + return + } + systemRes.OkWithDetailed(gin.H{"id": id}, "创建成功", c) +} + +// UpdateConfig 更新配置 +func (r *ConfigApi) UpdateConfig(c *gin.Context) { + var req systemReq.UpdateConfigRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "更新配置请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + err := configService.UpdateConfig(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "更新配置异常", err, c, req) + return + } + + systemRes.OkWithMessage("更新成功", c) +} + +// DeleteConfig 删除配置 +func (r *ConfigApi) DeleteConfig(c *gin.Context) { + var req systemReq.DeleteConfigRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "删除配置请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + err := configService.DeleteConfig(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "删除配置异常", err, c, req) + return + } + + systemRes.OkWithMessage("删除成功", c) +} diff --git a/controllers/employee.go b/controllers/employee.go new file mode 100644 index 0000000..da1a015 --- /dev/null +++ b/controllers/employee.go @@ -0,0 +1,308 @@ +package controllers + +import ( + "fmt" + "github.com/gin-gonic/gin" + "github.com/sirupsen/logrus" + "net/http" + "psi/constant" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type EmployeeApi struct{} + +var employeeService = service.EmployeeService{} + +// Login 登录 +// @param type: 255-admin, 128-employee +func (r *EmployeeApi) Login(c *gin.Context) { + userType := c.Param("type") + + var req systemReq.LoginRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "登录请求异常", "参数错误: "+err.Error(), c, err) + return + } + + response, err := employeeService.Login(req, userType, c) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "登录异常", + "err_msg": err.Error(), + }) + systemRes.FailWithMessage(err.Error(), c) + return + } + + systemRes.OkWithDetailed(response, "登录成功", c) +} + +// GetCurrentUser 获取当前用户信息 +func (r *EmployeeApi) GetCurrentUser(c *gin.Context) { + employee, exists := c.Get("employee") + if !exists { + systemRes.NoAuth("未登录", c) + return + } + + currentEmployee := employee.(models.Employee) + + employeeInfo, err := employeeService.GetCurrentUser(currentEmployee.ID) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "获取当前用户信息异常", + "err_msg": err.Error(), + }) + systemRes.FailWithMessage(err.Error(), c) + return + } + + systemRes.OkWithDetailed(gin.H{ + "type": "admin", + "id": employeeInfo.ID, + "employee_id_str": employeeInfo.EmployeeIDStr, + "username": employeeInfo.Username, + "name": employeeInfo.Name, + "role": employeeInfo.Role, + "points": employeeInfo.Score, + "status": employeeInfo.Status, + }, "获取成功", c) +} + +// Logout 退出登录 +func (r *EmployeeApi) Logout(c *gin.Context) { + systemRes.OkWithMessage("退出成功", c) +} + +// GetEmployeeList 员工列表 +func (r *EmployeeApi) GetEmployeeList(c *gin.Context) { + var req systemReq.GetEmployeeListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "员工列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := employeeService.GetEmployeeList(req, userInfo.ID, userInfo.AboutID) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "员工列表异常", + "err_msg": err.Error(), + }) + systemRes.FailWithMessage(err.Error(), c) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// AddEmployee 添加员工/租户注册 +func (r *EmployeeApi) AddEmployee(c *gin.Context) { + var req systemReq.AddEmployeeRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "添加员工请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := employeeService.AddEmployee(req) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "添加员工异常", + "err_msg": err.Error(), + }) + systemRes.FailWithMessage(err.Error(), c) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "message": "添加成功", + "data": result, + }) +} + +// UpdatePasswordEmployee 修改员工密码 +func (r *EmployeeApi) UpdatePasswordEmployee(c *gin.Context) { + var req systemReq.UpdatePasswordEmployeeRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "修改员工密码请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + err := employeeService.UpdatePasswordEmployee(req) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "修改员工密码异常", + "err_msg": err.Error(), + }) + systemRes.FailWithMessage(err.Error(), c) + return + } + + systemRes.OkWithMessage("修改成功", c) +} + +// UpdateExpireTimeEmployee 修改员工过期时间 +func (r *EmployeeApi) UpdateExpireTimeEmployee(c *gin.Context) { + var req systemReq.UpdateExpireTimeEmployeeRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "修改员工过期时间请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + err := employeeService.UpdateExpireTimeEmployee(req) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "修改员工过期时间异常", + "err_msg": err.Error(), + }) + systemRes.FailWithMessage(err.Error(), c) + return + } + + systemRes.OkWithMessage("修改成功", c) +} + +// CheckExpireTimeEmployee 校验员工过期时间 +func (r *EmployeeApi) CheckExpireTimeEmployee(c *gin.Context) { + userInfo := utils.GetUserInfo(c) + err := employeeService.CheckExpireTimeEmployee(userInfo.ID) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "校验员工过期时间异常", + "err_msg": err.Error(), + }) + systemRes.FailWithMessage(err.Error(), c) + return + } + + systemRes.OkWithMessage("操作成功", c) +} + +// CheckCodeEmployee 校验员工机械码 +func (r *EmployeeApi) CheckCodeEmployee(c *gin.Context) { + var req systemReq.CheckCodeEmployeeRequest + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "校验员工机械码请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + code, err := employeeService.CheckCodeEmployee(req) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "校验员工机械码异常", + "err_msg": err.Error(), + }) + systemRes.FailWithMessage(err.Error(), c) + return + } + + systemRes.OkWithDetailed(map[string]interface{}{ + "code": code, + }, "查询成功", c) +} + +// ClearCodeEmployee 清除员工机械码 +func (r *EmployeeApi) ClearCodeEmployee(c *gin.Context) { + var req systemReq.ClearCodeEmployeeRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "清除员工机械码请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + err := employeeService.ClearCodeEmployee(req) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "清除员工机械码异常", + "err_msg": err.Error(), + }) + systemRes.FailWithMessage(err.Error(), c) + return + } + + systemRes.OkWithMessage("修改成功", c) +} + +// GetLevelConfigList 获取员工等级配置列表 +func (r *EmployeeApi) GetLevelConfigList(c *gin.Context) { + levelStr := c.Query("level") + + var levelInt int8 + if levelStr != "" { + fmt.Sscanf(levelStr, "%d", &levelInt) + } + + result := service.GetLevelConfig(levelInt) + if result == nil { + systemRes.FailWithMessage("无效的等级配置", c) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// SetEmployeeLevel 设置员工等级 +func (r *EmployeeApi) SetEmployeeLevel(c *gin.Context) { + var req systemReq.SetEmployeeLevelRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "设置员工等级请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + err := employeeService.SetEmployeeLevel(req, userInfo.ID, userInfo.Username) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "设置员工等级异常", + "err_msg": err.Error(), + }) + systemRes.FailWithMessage(err.Error(), c) + return + } + + systemRes.OkWithMessage("操作成功", c) +} + +// GetEmployeeSettings 获取员工设置 +func (r *EmployeeApi) GetEmployeeSettings(c *gin.Context) { + var req systemReq.GetEmployeeSettingsRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "获取员工设置请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + result := employeeService.GetEmployeeSettings(req) + systemRes.OkWithDetailed(result, "查询成功", c) +} + +// SaveEmployeeSettings 保存员工设置 +func (r *EmployeeApi) SaveEmployeeSettings(c *gin.Context) { + var req systemReq.SaveEmployeeSettingsRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "保存员工设置请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + err := employeeService.SaveEmployeeSettings(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "保存员工设置异常", err, c, req) + return + } + + systemRes.OkWithMessage("保存成功", c) +} diff --git a/controllers/goods_import.go b/controllers/goods_import.go new file mode 100644 index 0000000..7df763e --- /dev/null +++ b/controllers/goods_import.go @@ -0,0 +1,99 @@ +package controllers + +import ( + "fmt" + "io" + "net/http" + "strconv" + + "github.com/gin-gonic/gin" + + "psi/constant" + "psi/service" + "psi/utils" +) + +var goodsImportService = &service.GoodsImportService{} + +// GoodsImportApi 商品导入API(独立模块) +type GoodsImportApi struct{} + +// ImportFromExcel 从Excel文件导入商品 +// POST /api/goods/import-from-excel +// multipart/form-data: file (Excel), user_id, warehouse_id +func (r *GoodsImportApi) ImportFromExcel(c *gin.Context) { + // 获取 user_id + userIDStr := c.PostForm("user_id") + if userIDStr == "" { + utils.FailWithRequestLog(constant.LoggerChannelRequest, "商品导入-缺少user_id", fmt.Errorf("user_id不能为空"), c, nil) + return + } + userID, err := strconv.ParseInt(userIDStr, 10, 64) + if err != nil || userID <= 0 { + utils.FailWithRequestLog(constant.LoggerChannelRequest, "商品导入-user_id格式错误", err, c, userIDStr) + return + } + + // 获取 warehouse_id + warehouseIDStr := c.PostForm("warehouse_id") + if warehouseIDStr == "" { + utils.FailWithRequestLog(constant.LoggerChannelRequest, "商品导入-缺少warehouse_id", fmt.Errorf("warehouse_id不能为空"), c, nil) + return + } + warehouseID, err := strconv.ParseInt(warehouseIDStr, 10, 64) + if err != nil || warehouseID <= 0 { + utils.FailWithRequestLog(constant.LoggerChannelRequest, "商品导入-warehouse_id格式错误", err, c, warehouseIDStr) + return + } + + // 获取上传的 Excel 文件 + file, _, err := c.Request.FormFile("file") + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelRequest, "商品导入-未上传文件", fmt.Errorf("未上传Excel文件: %v", err), c, nil) + return + } + defer file.Close() + + fileBytes, err := io.ReadAll(file) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelRequest, "商品导入-读取文件失败", fmt.Errorf("读取文件内容失败: %v", err), c, nil) + return + } + + // 解析Excel + rows, err := goodsImportService.ParseGoodsImportExcel(fileBytes) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "商品导入-解析Excel失败", err, c, nil) + return + } + + if len(rows) == 0 { + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "msg": "没有有效数据", + "data": gin.H{ + "success_count": 0, + "fail_count": 0, + "message": "Excel中没有有效数据行", + }, + }) + return + } + + // 导入商品 + result, err := goodsImportService.ImportGoodsFromExcel(userID, warehouseID, rows) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "商品导入-导入失败", err, c, nil) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "msg": "导入完成", + "data": gin.H{ + "success_count": result.SuccessCount, + "fail_count": result.FailCount, + "message": result.Message, + }, + }) +} diff --git a/controllers/inventory.go b/controllers/inventory.go new file mode 100644 index 0000000..4d76ba2 --- /dev/null +++ b/controllers/inventory.go @@ -0,0 +1,168 @@ +package controllers + +import ( + "github.com/gin-gonic/gin" + "net/http" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type InventoryApi struct{} + +var inventoryService = service.InventoryService{} + +// GetInventoryList 获取库存汇总列表 +func (r *InventoryApi) GetInventoryList(c *gin.Context) { + var req systemReq.GetInventoryListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "库存汇总列表请求异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := inventoryService.GetInventoryList(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "库存汇总列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetInventoryGroupedList 获取按仓库库位分组的库存列表 +func (i *InventoryApi) GetInventoryGroupedList(c *gin.Context) { + var req systemReq.GetInventoryGroupedListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "库存分组列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := inventoryService.GetInventoryGroupedList(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "库存分组列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetInventorySummary 获取库存统计信息 +func (r *InventoryApi) GetInventorySummary(c *gin.Context) { + result, err := inventoryService.GetInventorySummary(database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "库存统计信息异常", err, c, nil) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} + +// GetInventoryDetail 获取库存明细 +func (r *InventoryApi) GetInventoryDetail(c *gin.Context) { + var req systemReq.GetInventoryDetailRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "库存明细请求异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := inventoryService.GetInventoryDetail(req.ProductID, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "库存明细异常", err, c, req) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} + +// GetInventoryLogList 获取库存流水列表 +func (r *InventoryApi) GetInventoryLogList(c *gin.Context) { + var req systemReq.GetInventoryLogListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "库存流水列表请求异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := inventoryService.GetInventoryLogList(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "库存流水列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// InventoryStatist 获取ISBN/品相的库存总数 +func (r *InventoryApi) InventoryStatist(c *gin.Context) { + var req systemReq.InventoryStatistRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "库存统计请求异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := inventoryService.InventoryStatist(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "库存统计异常", err, c, req) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} + +// GetStockCheckList 获取盘库列表 +func (r *InventoryApi) GetStockCheckList(c *gin.Context) { + var req systemReq.GetStockCheckListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "盘库列表请求异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := inventoryService.GetStockCheckList(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "盘库列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetStockCheckDetail 获取盘库明细列表 +func (r *InventoryApi) GetStockCheckDetail(c *gin.Context) { + var req systemReq.GetStockCheckDetailRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "盘库明细列表请求异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := inventoryService.GetStockCheckDetail(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "盘库明细列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} diff --git a/controllers/location.go b/controllers/location.go new file mode 100644 index 0000000..0bc2291 --- /dev/null +++ b/controllers/location.go @@ -0,0 +1,333 @@ +package controllers + +import ( + "fmt" + "github.com/gin-gonic/gin" + "github.com/sirupsen/logrus" + "net/http" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type LocationApi struct{} + +var locationService = service.LocationService{} + +func (r *LocationApi) GetLocationList(c *gin.Context) { + var req systemReq.QueryLocationRequest + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "查询库位列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + list, total, err := locationService.GetLocationList(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "查询库位列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "data": gin.H{ + "list": list, + "total": total, + "page": req.Page, + "page_size": req.PageSize, + }, + "msg": "查询成功", + }) +} + +// GetAllLocationList 查询所有库位列表(仓库ID可选) +func (r *LocationApi) GetAllLocationList(c *gin.Context) { + var req systemReq.QueryAllLocationRequest + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "查询所有库位列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + list, total, err := locationService.GetAllLocationList(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "查询所有库位列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "data": gin.H{ + "list": list, + "total": total, + "page": req.Page, + "page_size": req.PageSize, + }, + "msg": "查询成功", + }) +} + +func (r *LocationApi) GetLocationDetail(c *gin.Context) { + idStr := c.Param("id") + + if idStr == "" { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取库位详情请求参数异常", + "err_msg": "ID参数不能为空", + }) + systemRes.FailWithValidateMessage("参数错误: ID不能为空", c) + return + } + + var id int64 + if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil || id <= 0 { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取库位详情请求参数异常", + "err_msg": "ID格式错误: " + idStr, + }) + systemRes.FailWithValidateMessage("参数错误: ID格式不正确", c) + return + } + + location, err := locationService.GetLocationDetail(id, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "查询库位详情异常", err, c, gin.H{"id": id}) + return + } + + systemRes.OkWithDetailed(location, "查询成功", c) +} + +// GetLocationInfo 获取库位ID +func (r *LocationApi) GetLocationInfo(c *gin.Context) { + var req systemReq.GetLocationIdRequest + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "获取库位ID请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + location, err := locationService.GetLocationInfo(req.Code, req.WarehouseCode, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "获取库位ID异常", err, c, gin.H{"code": req.Code}) + return + } + + systemRes.OkWithDetailed(location, "查询成功", c) +} + +func (r *LocationApi) CreateLocation(c *gin.Context) { + var req systemReq.CreateLocationRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "创建库位请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + id, err := locationService.CreateLocation(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "创建库位异常", err, c, req) + return + } + + systemRes.OkWithDetailed(gin.H{"id": id}, "创建成功", c) +} + +func (r *LocationApi) BatchGenerateLocations(c *gin.Context) { + var req systemReq.BatchGenerateLocationRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "批量生成库位请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + if len(req.Groups) == 0 { + groups, err := parseGroupsFromForm(c) + if err != nil { + systemRes.FailWithValidateMessage("参数错误: "+err.Error(), c) + return + } + req.Groups = groups + } + result, err := locationService.BatchGenerateLocations(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "批量生成库位异常", err, c, req) + return + } + + systemRes.OkWithDetailed(result, result.Message, c) +} + +func (r *LocationApi) UpdateLocation(c *gin.Context) { + var req systemReq.UpdateLocationRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "更新库位请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if len(req.IDs) == 0 { + ids, err := parseIdsFromForm(c) + if err != nil { + systemRes.FailWithValidateMessage("参数错误: "+err.Error(), c) + return + } + req.IDs = ids + } + if err := locationService.UpdateLocation(req, database.GetDB(c)); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "更新库位异常", err, c, req) + return + } + + systemRes.OkWithMessage("更新成功", c) +} + +func (r *LocationApi) DeleteLocation(c *gin.Context) { + var req systemReq.DeleteLocationRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "删除库位请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if len(req.IDs) == 0 { + ids, err := parseIdsFromForm(c) + if err != nil { + systemRes.FailWithValidateMessage("参数错误: "+err.Error(), c) + return + } + req.IDs = ids + } + if err := locationService.DeleteLocation(req.IDs, database.GetDB(c)); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "删除库位异常", err, c, req) + return + } + + systemRes.OkWithMessage("删除成功", c) +} + +func (r *LocationApi) SyncLocations(c *gin.Context) { + var req systemReq.SyncLocationRequest + if err := c.ShouldBindJSON(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "同步库位数据请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := locationService.SyncLocations(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "同步库位数据异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + "msg": "同步完成", + }) +} + +// SyncGoods 同步商品数据 +func (r *LocationApi) SyncGoods(c *gin.Context) { + var req systemReq.SyncGoodsRequest + if err := c.ShouldBindJSON(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "同步商品数据请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := locationService.SyncGoods(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "同步商品数据异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "msg": "同步完成", + "data": gin.H{ + "success_count": result.SuccessCount, + "fail_count": result.FailCount, + "message": result.Message, + }, + }) +} + +func parseIdsFromForm(c *gin.Context) ([]int64, error) { + var ids []int64 + + for i := 0; i < 100; i++ { + idStr := c.PostForm(fmt.Sprintf("ids[%d]", i)) + if idStr == "" { + break + } + + var id int64 + if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil { + return nil, fmt.Errorf("第%d个ID格式错误", i) + } + if id <= 0 { + return nil, fmt.Errorf("第%d个ID必须大于0", i) + } + ids = append(ids, id) + } + + if len(ids) == 0 { + return nil, fmt.Errorf("至少需要一个ID") + } + + return ids, nil +} + +func parseGroupsFromForm(c *gin.Context) ([]systemReq.GroupConfig, error) { + var groups []systemReq.GroupConfig + + for i := 0; i < 5; i++ { + formatTypeStr := c.PostForm(fmt.Sprintf("groups[%d][format_type]", i)) + if formatTypeStr == "" { + break + } + + startValue := c.PostForm(fmt.Sprintf("groups[%d][start_value]", i)) + endValue := c.PostForm(fmt.Sprintf("groups[%d][end_value]", i)) + separator := c.PostForm(fmt.Sprintf("groups[%d][separator]", i)) + paddingLenStr := c.PostForm(fmt.Sprintf("groups[%d][padding_len]", i)) + + if startValue == "" || endValue == "" { + return nil, fmt.Errorf("第%d组配置缺少必填字段", i) + } + + var formatType int + if _, err := fmt.Sscanf(formatTypeStr, "%d", &formatType); err != nil { + return nil, fmt.Errorf("第%d组format_type格式错误", i) + } + + if formatType < 1 || formatType > 4 { + return nil, fmt.Errorf("第%d组format_type必须在1-4之间", i) + } + + paddingLen := 0 + if paddingLenStr != "" { + if _, err := fmt.Sscanf(paddingLenStr, "%d", &paddingLen); err != nil { + return nil, fmt.Errorf("第%d组padding_len格式错误", i) + } + } + + if separator == "" { + separator = "" + } + + group := systemReq.GroupConfig{ + FormatType: formatType, + StartValue: startValue, + EndValue: endValue, + PaddingLen: paddingLen, + Separator: separator, + } + + groups = append(groups, group) + } + + if len(groups) == 0 { + return nil, fmt.Errorf("至少需要一个分组配置") + } + + if len(groups) > 5 { + return nil, fmt.Errorf("最多支持5组") + } + + return groups, nil +} diff --git a/controllers/location_import.go b/controllers/location_import.go new file mode 100644 index 0000000..f83848a --- /dev/null +++ b/controllers/location_import.go @@ -0,0 +1,99 @@ +package controllers + +import ( + "fmt" + "io" + "net/http" + "strconv" + + "github.com/gin-gonic/gin" + + "psi/constant" + "psi/service" + "psi/utils" +) + +var locationImportService = &service.LocationImportService{} + +// LocationImportApi 库位导入API +type LocationImportApi struct{} + +// ImportFromExcel 从Excel文件批量创建库位 +// POST /api/location/import-from-excel (sign鉴权) +// multipart/form-data: file (Excel), user_id, warehouse_id +func (r *LocationImportApi) ImportFromExcel(c *gin.Context) { + // 获取 user_id + userIDStr := c.PostForm("user_id") + if userIDStr == "" { + utils.FailWithRequestLog(constant.LoggerChannelRequest, "库位导入-缺少user_id", fmt.Errorf("user_id不能为空"), c, nil) + return + } + userID, err := strconv.ParseInt(userIDStr, 10, 64) + if err != nil || userID <= 0 { + utils.FailWithRequestLog(constant.LoggerChannelRequest, "库位导入-user_id格式错误", err, c, userIDStr) + return + } + + // 获取 warehouse_id + warehouseIDStr := c.PostForm("warehouse_id") + if warehouseIDStr == "" { + utils.FailWithRequestLog(constant.LoggerChannelRequest, "库位导入-缺少warehouse_id", fmt.Errorf("warehouse_id不能为空"), c, nil) + return + } + warehouseID, err := strconv.ParseInt(warehouseIDStr, 10, 64) + if err != nil || warehouseID <= 0 { + utils.FailWithRequestLog(constant.LoggerChannelRequest, "库位导入-warehouse_id格式错误", err, c, warehouseIDStr) + return + } + + // 获取上传的 Excel 文件 + file, _, err := c.Request.FormFile("file") + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelRequest, "库位导入-未上传文件", fmt.Errorf("未上传Excel文件: %v", err), c, nil) + return + } + defer file.Close() + + fileBytes, err := io.ReadAll(file) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelRequest, "库位导入-读取文件失败", fmt.Errorf("读取文件内容失败: %v", err), c, nil) + return + } + + // 解析Excel + rows, err := locationImportService.ParseLocationImportExcel(fileBytes) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "库位导入-解析Excel失败", err, c, nil) + return + } + + if len(rows) == 0 { + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "msg": "没有有效数据", + "data": gin.H{ + "success_count": 0, + "fail_count": 0, + "message": "Excel中没有有效的库位编码", + }, + }) + return + } + + // 导入库位 + result, err := locationImportService.ImportLocationsFromExcel(userID, warehouseID, rows) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "库位导入-导入失败", err, c, nil) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "msg": "导入完成", + "data": gin.H{ + "success_count": result.SuccessCount, + "fail_count": result.FailCount, + "message": result.Message, + }, + }) +} diff --git a/controllers/logistics.go b/controllers/logistics.go new file mode 100644 index 0000000..9c4cd72 --- /dev/null +++ b/controllers/logistics.go @@ -0,0 +1,111 @@ +package controllers + +import ( + "fmt" + "github.com/gin-gonic/gin" + "net/http" + "psi/constant" + "psi/database" + "psi/models/request" + "psi/models/response" + "psi/service" + "psi/utils" +) + +type LogisticsApi struct{} + +var logisticsService = service.LogisticsService{} + +func (r *LogisticsApi) GetLogisticsList(c *gin.Context) { + var req request.QueryLogisticsRequest + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "查询物流模板列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + list, total, err := logisticsService.GetLogisticsList(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "查询物流模板列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "data": gin.H{ + "list": list, + "total": total, + "page": req.Page, + "page_size": req.PageSize, + }, + "msg": "查询成功", + }) +} + +func (r *LogisticsApi) GetLogisticsDetail(c *gin.Context) { + idStr := c.Param("id") + + if idStr == "" { + response.FailWithValidateMessage("参数错误: ID不能为空", c) + return + } + + var id uint64 + if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil || id == 0 { + response.FailWithValidateMessage("参数错误: ID格式不正确", c) + return + } + + logistics, err := logisticsService.GetLogisticsByID(id, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "查询物流模板详情异常", err, c, gin.H{"id": id}) + return + } + + response.OkWithDetailed(logistics, "查询成功", c) +} + +func (r *LogisticsApi) CreateLogistics(c *gin.Context) { + var req request.CreateLogisticsRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "创建物流模板请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + id, err := logisticsService.CreateLogistics(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "创建物流模板异常", err, c, req) + return + } + + response.OkWithDetailed(gin.H{"id": id}, "创建成功", c) +} + +func (r *LogisticsApi) UpdateLogistics(c *gin.Context) { + var req request.UpdateLogisticsRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "更新物流模板请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if err := logisticsService.UpdateLogistics(req, database.GetDB(c)); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "更新物流模板异常", err, c, req) + return + } + + response.OkWithMessage("更新成功", c) +} + +func (r *LogisticsApi) DeleteLogistics(c *gin.Context) { + var req request.DeleteLogisticsRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "删除物流模板请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if err := logisticsService.DeleteLogistics(req.Id, database.GetDB(c)); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "删除物流模板异常", err, c, req) + return + } + + response.OkWithMessage("删除成功", c) +} diff --git a/controllers/ocr.go b/controllers/ocr.go new file mode 100644 index 0000000..eca0688 --- /dev/null +++ b/controllers/ocr.go @@ -0,0 +1,64 @@ +package controllers + +import ( + "github.com/gin-gonic/gin" + "github.com/sirupsen/logrus" + "io" + "net/http" + "psi/constant" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type OcrApi struct{} + +var ocrService = service.OcrService{} + +func (r *OcrApi) RecognizeText(c *gin.Context) { + file, err := c.FormFile("image") + if err != nil { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "OCR识别请求异常", + "err_msg": err.Error(), + }) + systemRes.FailWithValidateMessage("请上传图片文件", c) + return + } + + imageFile, err := file.Open() + if err != nil { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "打开图片文件异常", + "err_msg": err.Error(), + }) + systemRes.FailWithValidateMessage("读取图片文件失败", c) + return + } + defer imageFile.Close() + + imageData, err := io.ReadAll(imageFile) + if err != nil { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "读取图片数据异常", + "err_msg": err.Error(), + }) + systemRes.FailWithValidateMessage("读取图片数据失败", c) + return + } + + result, err := ocrService.RecognizeText(imageData) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "OCR识别异常", + "err_msg": err.Error(), + }) + systemRes.FailWithMessage(err.Error(), c) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} diff --git a/controllers/out_task.go b/controllers/out_task.go new file mode 100644 index 0000000..966b8f4 --- /dev/null +++ b/controllers/out_task.go @@ -0,0 +1,100 @@ +package controllers + +import ( + "github.com/gin-gonic/gin" + "net/http" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type OutTaskApi struct{} + +var outTaskService = service.OutTaskService{} + +// GetOutTaskList 获取外部任务列表 +func (r *OutTaskApi) GetOutTaskList(c *gin.Context) { + var req systemReq.GetOutTaskListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "外部任务列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := outTaskService.GetOutTaskList(req, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "外部任务列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetOutTaskLogList 获取外部任务日志列表 +func (r *OutTaskApi) GetOutTaskLogList(c *gin.Context) { + var req systemReq.GetOutTaskLogListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "外部任务日志列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := outTaskService.GetOutTaskLogList(req, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "外部任务日志列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetOutTaskByShop 按店铺分组获取外部任务列表 +func (r *OutTaskApi) GetOutTaskByShop(c *gin.Context) { + var req systemReq.GetOutTaskByShopRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "按店铺获取外部任务列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := outTaskService.GetOutTaskByShop(req, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "按店铺获取外部任务列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// UpdateOutTaskLog 修改外部任务日志 +func (r *OutTaskApi) UpdateOutTaskLog(c *gin.Context) { + var req systemReq.UpdateOutTaskLogRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "修改外部任务日志请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + err := outTaskService.UpdateOutTaskLog(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "修改外部任务日志异常", err, c, req) + return + } + + systemRes.OkWithMessage("操作成功", c) +} diff --git a/controllers/outbound.go b/controllers/outbound.go new file mode 100644 index 0000000..8118ed7 --- /dev/null +++ b/controllers/outbound.go @@ -0,0 +1,57 @@ +package controllers + +import ( + "github.com/gin-gonic/gin" + "net/http" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type OutboundApi struct{} + +var outboundService = service.OutboundService{} + +// GetOutboundOrderList 获取出库单列表 +func (r *OutboundApi) GetOutboundOrderList(c *gin.Context) { + var req systemReq.GetOutboundOrderListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "出库单列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := outboundService.GetOutboundOrderList(req, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "出库单列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetOutboundOrderDetail 获取出库单详情 +func (r *OutboundApi) GetOutboundOrderDetail(c *gin.Context) { + var req systemReq.GetOutboundOrderDetailRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "出库单详情请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := outboundService.GetOutboundOrderDetail(req.ID, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "出库单详情异常", err, c, req) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} diff --git a/controllers/process.go b/controllers/process.go new file mode 100644 index 0000000..be85f72 --- /dev/null +++ b/controllers/process.go @@ -0,0 +1,854 @@ +package controllers + +import ( + "bytes" + "errors" + "fmt" + "io" + "mime/multipart" + "net/http" + "strings" + + "github.com/gin-gonic/gin" + "github.com/sirupsen/logrus" + "psi/constant" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" + "strconv" +) + +type ProcessApi struct{} + +var processService = &service.ProcessService{} + +// CreatePurchaseOrderWithWave 创建采购单并生成入库波次 +func (r *ProcessApi) CreatePurchaseOrderWithWave(c *gin.Context) { + var req systemReq.PurchaseOrderCreateRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "创建采购单请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + carService := &service.CarService{} + capacity, err := carService.GetCarCapacityByID(req.CarID, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "查询小车容量异常", err, c, gin.H{"car_id": req.CarID}) + return + } + + if len(req.Items) == 0 { + items, err := bindPurchaseOrderItems(c, int(capacity)) + if err != nil { + logAndFail(constant.LoggerChannelRequest, "绑定采购订单项异常", "参数错误: "+err.Error(), c) + return + } + req.Items = items + } + + userInfo := utils.GetUserInfo(c) + purchaseOrderID, waveID, err := processService.CreatePurchaseOrderWithWave(req, userInfo.Username, userInfo.ID, int(capacity), database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "创建采购单及波次异常", err, c, req) + return + } + + systemRes.OkWithDetailed(gin.H{"order_id": purchaseOrderID, "wave_id": waveID}, "采购单创建成功,波次已生成", c) +} + +// ReleaseWave 提交波次,生成采购订单明细和波次任务明细 +func (r *ProcessApi) ReleaseWave(c *gin.Context) { + var req systemReq.WaveRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "提交波次请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + carService := &service.CarService{} + capacity, err := carService.GetCarCapacityByID(req.CarID, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "查询小车容量异常", err, c, gin.H{"car_id": req.CarID}) + return + } + + if len(req.Items) == 0 { + items, err := bindWaveItems(c, int(capacity)) + if err != nil { + logAndFail(constant.LoggerChannelRequest, "绑定波次项异常", "参数错误: "+err.Error(), c) + return + } + req.Items = items + } + + waveID, waveNo, err := processService.ReleaseWave(req, capacity, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "提交波次异常", err, c, req) + return + } + + systemRes.OkWithDetailed(systemRes.WaveReleaseResponse{ + WaveID: waveID, + WaveNo: waveNo, + }, "波次提交成功,任务和明细已生成", c) +} + +// BindWave 绑定波次,创建入库单 +func (r *ProcessApi) BindWave(c *gin.Context) { + var req systemReq.BindWaveRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "绑定波次请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + receivingOrderID, waveTaskID, waveTaskBatchNo, err := processService.BindWave(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "绑定波次异常", err, c, req) + return + } + + systemRes.OkWithDetailed(map[string]interface{}{ + "receiving_order_id": receivingOrderID, + "wave_task_id": waveTaskID, + "wave_task_batch_no": waveTaskBatchNo, + }, "绑定波次成功,入库单已创建", c) +} + +// GetWaveTaskInfo 获取波次任务信息 +func (r *ProcessApi) GetWaveTaskInfo(c *gin.Context) { + id, err := parsePathID(c, "id", "获取波次任务信息") + if err != nil { + return + } + + info, err := processService.GetWaveTaskInfo(id, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "获取波次任务信息异常", err, c, gin.H{"id": id}) + return + } + + systemRes.OkWithDetailed(info, "获取成功", c) +} + +// SubmitReceiving 提交入库 +func (r *ProcessApi) SubmitReceiving(c *gin.Context) { + var req systemReq.ReceivingSubmitRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "提交入库请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if len(req.Items) == 0 { + databaseConn := database.GetDB(c) + var waveTask models.WaveTask + if err := databaseConn.Where("id = ? AND is_del = 0", req.WaveTaskID).First(&waveTask).Error; err != nil { + logAndFail(constant.LoggerChannelWork, "查询波次任务失败", "错误: "+err.Error(), c) + return + } + + carCapacity := int(waveTask.CarCapacity) + if carCapacity <= 0 { + logAndFail(constant.LoggerChannelWork, "波次任务未设置小车容量", fmt.Sprintf("wave_task_id: %d", req.WaveTaskID), c) + return + } + items, err := bindReceivingItems(c, carCapacity) + if err != nil { + logAndFail(constant.LoggerChannelRequest, "绑定入库项异常", "参数错误: "+err.Error(), c) + return + } + req.Items = items + } + + userInfo := utils.GetUserInfo(c) + err := processService.SubmitReceiving(req, userInfo.Username, userInfo.ID, userInfo.AboutID, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "提交入库异常", err, c, req) + return + } + + go func(receivingOrderID, aboutID, waveTaskID int64, itemProductIDs []int64) { + databaseConn := database.DB + + var receivingOrder models.ReceivingOrder + if err := databaseConn.Where("id = ? AND is_del = 0", receivingOrderID).First(&receivingOrder).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "查询入库单失败", + "receiving_order_id": receivingOrderID, + "err_msg": err.Error(), + }) + return + } + + var warehouse models.Warehouse + if err := databaseConn.Where("id = ? AND is_del = 0", receivingOrder.WarehouseID).First(&warehouse).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "查询仓库失败", + "warehouse_id": receivingOrder.WarehouseID, + "err_msg": err.Error(), + }) + return + } + + warehouseId := warehouse.ID + + productIds := make([]string, len(itemProductIDs)) + for i, pid := range itemProductIDs { + productIds[i] = fmt.Sprintf("%d", pid) + } + productIdsStr := strings.Join(productIds, ",") + + url := "https://erp.buzhiyushu.cn/zhishu/product/releaseGoodsAuto" + method := "POST" + + payload := &bytes.Buffer{} + writer := multipart.NewWriter(payload) + _ = writer.WriteField("userId", fmt.Sprintf("%d", aboutID)) + _ = writer.WriteField("warehouseId", fmt.Sprintf("%d", warehouseId)) + _ = writer.WriteField("productId", productIdsStr) + err := writer.Close() + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "关闭multipart writer失败", + "err_msg": err.Error(), + }) + return + } + + client := &http.Client{} + req, err := http.NewRequest(method, url, payload) + + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "创建HTTP请求失败", + "err_msg": err.Error(), + }) + return + } + req.Header.Add("Authorization", "Basic ZWxhc3RpYzo1bVJESVVnNTJWQzBmcDE0bnctRg==") + req.Header.Set("Content-Type", writer.FormDataContentType()) + + res, err := client.Do(req) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "调用外部API失败", + "err_msg": err.Error(), + }) + return + } + defer func(Body io.ReadCloser) { + err := Body.Close() + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "调用外部API失败-Body关闭失败", + "err_msg": err.Error(), + }) + } + }(res.Body) + + body, err := io.ReadAll(res.Body) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "读取响应失败", + "err_msg": err.Error(), + }) + return + } + + utils.InfoLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "外部API调用完成", + "user_id": aboutID, + "warehouse_id": warehouseId, + "product_ids": productIdsStr, + "status_code": res.StatusCode, + "response": string(body), + }) + }(req.ReceivingOrderID, userInfo.AboutID, req.WaveTaskID, func() []int64 { + productIDs := make([]int64, len(req.Items)) + for i, item := range req.Items { + productIDs[i] = item.ProductID + } + return productIDs + }()) + + systemRes.OkWithMessage("入库提交成功", c) +} + +// GetReceivingDetail 获取入库单详情 +func (r *ProcessApi) GetReceivingDetail(c *gin.Context) { + id, err := parsePathID(c, "id", "获取入库单详情") + if err != nil { + return + } + + detail, err := processService.GetReceivingDetail(id, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "获取入库单详情异常", err, c, gin.H{"id": id}) + return + } + + systemRes.OkWithDetailed(detail, "获取成功", c) +} + +// CreateSalesOrderWithDetail 创建销售订单和明细 +func (r *ProcessApi) CreateSalesOrderWithDetail(c *gin.Context) { + var req systemReq.SalesOrderCreateRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "创建销售订单请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if len(req.Items) == 0 { + items, err := bindSalesOrderItems(c) + if err != nil { + logAndFail(constant.LoggerChannelRequest, "绑定销售订单项异常", "参数错误: "+err.Error(), c) + return + } + req.Items = items + } + + salesOrderID, err := processService.CreateSalesOrderWithDetail(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "创建销售订单及波次异常", err, c, req) + return + } + + systemRes.OkWithDetailed(gin.H{"order_id": salesOrderID}, "销售订单创建成功", c) +} + +// CreateOutboundOrder 基于多个销售订单创建出库单 +func (r *ProcessApi) CreateOutboundOrder(c *gin.Context) { + var req systemReq.CreateOutboundOrderRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "创建出库单请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if len(req.SalesOrderIDs) == 0 { + ids, err := parseIdsFrom(c, req.Total) + if err != nil { + systemRes.FailWithMessage("参数错误: "+err.Error(), c) + return + } + req.SalesOrderIDs = ids + } + + userInfo := utils.GetUserInfo(c) + outboundOrderID, outNo, err := processService.CreateOutboundOrder(req, userInfo.Username, userInfo.ID, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "创建出库单异常", err, c, req) + return + } + + systemRes.OkWithDetailed(gin.H{ + "outbound_order_id": outboundOrderID, + "out_no": outNo, + }, "出库单创建成功", c) +} + +// CreateOutboundWave 基于出库单创建出库波次 +func (r *ProcessApi) CreateOutboundWave(c *gin.Context) { + var req systemReq.CreateOutboundWaveRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "创建出库波次请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if req.OutboundOrderID == 0 { + systemRes.FailWithMessage("参数错误: 出库单ID不能为空", c) + return + } + + userInfo := utils.GetUserInfo(c) + waveID, err := processService.CreateOutboundWave(req, userInfo.Username, userInfo.ID, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "创建出库波次异常", err, c, req) + return + } + + systemRes.OkWithDetailed(systemRes.WaveReleaseResponse{ + WaveID: waveID, + }, "出库波次创建成功", c) +} + +// ReleaseOutboundWave 提交出库波次,生成波次任务明细 +func (r *ProcessApi) ReleaseOutboundWave(c *gin.Context) { + var req systemReq.WaveRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "提交出库波次请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + waveID, waveNo, err := processService.ReleaseOutboundWave(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "提交出库波次异常", err, c, req) + return + } + + systemRes.OkWithDetailed(systemRes.WaveReleaseResponse{ + WaveID: waveID, + WaveNo: waveNo, + }, "出库波次提交成功,任务和明细已生成", c) +} + +// BindOutboundWave 绑定出库波次 +func (r *ProcessApi) BindOutboundWave(c *gin.Context) { + var req systemReq.BindWaveRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "绑定出库波次请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + outboundOrderID, waveTaskID, waveTaskBatchNo, err := processService.BindOutboundWave(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "绑定出库波次异常", err, c, req) + return + } + + systemRes.OkWithDetailed(map[string]interface{}{ + "out_order_id": outboundOrderID, + "wave_task_id": waveTaskID, + "wave_task_batch_no": waveTaskBatchNo, + }, "绑定出库波次成功", c) +} + +// SubmitOutbound 提交出库 +func (r *ProcessApi) SubmitOutbound(c *gin.Context) { + var req systemReq.OutboundSubmitRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "提交出库请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if len(req.Items) == 0 { + databaseConn := database.GetDB(c) + var waveTask models.WaveTask + if err := databaseConn.Where("id = ? AND is_del = 0", req.WaveTaskID).First(&waveTask).Error; err != nil { + logAndFail(constant.LoggerChannelWork, "查询波次任务失败", "错误: "+err.Error(), c) + return + } + + var count int64 + if err := databaseConn.Model(&models.WaveTaskDetail{}).Where("wave_task_id = ? AND status = 1 AND is_del = 0", waveTask.ID).Count(&count).Error; err != nil { + logAndFail(constant.LoggerChannelWork, "查询波次任务明细数量失败", "错误: "+err.Error(), c) + return + } + + items, err := bindOutboundItems(c, int(count)) + if err != nil { + logAndFail(constant.LoggerChannelRequest, "绑定出库项异常", "参数错误: "+err.Error(), c) + return + } + req.Items = items + } + + userInfo := utils.GetUserInfo(c) + err := processService.SubmitOutbound(req, userInfo.Username, userInfo.ID, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "提交出库异常", err, c, req) + return + } + + systemRes.OkWithMessage("出库提交成功", c) +} + +// GetOutboundDetail 获取发货单详情 +func (r *ProcessApi) GetOutboundDetail(c *gin.Context) { + id, err := parsePathID(c, "id", "获取发货单详情") + if err != nil { + return + } + + detail, err := processService.GetOutboundDetail(id, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "获取发货单详情异常", err, c, gin.H{"id": id}) + return + } + + systemRes.OkWithDetailed(detail, "获取成功", c) +} + +// CreateShippingOrder 基于多个出库单创建发货单 +func (r *ProcessApi) CreateShippingOrder(c *gin.Context) { + var req systemReq.CreateShippingOrderRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "创建发货单请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if len(req.OutboundOrderIDs) == 0 { + ids, err := parseIdsFrom(c, req.Total) + if err != nil { + systemRes.FailWithMessage("参数错误: "+err.Error(), c) + return + } + req.OutboundOrderIDs = ids + } + + userInfo := utils.GetUserInfo(c) + shippingOrderID, shippingNo, err := processService.CreateShippingOrder(req, userInfo.Username, userInfo.ID, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "创建发货单异常", err, c, req) + return + } + + systemRes.OkWithDetailed(gin.H{ + "shipping_order_id": shippingOrderID, + "shipping_no": shippingNo, + }, "发货单创建成功", c) +} + +// UpdateShippingLogistics 更新发货单物流信息并回填销售订单明细 +func (r *ProcessApi) UpdateShippingLogistics(c *gin.Context) { + var req systemReq.UpdateShippingLogisticsRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "更新发货单物流信息请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + err := processService.UpdateShippingLogistics(req, userInfo.ID, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "更新发货单物流信息异常", err, c, req) + return + } + + systemRes.OkWithMessage("更新成功", c) +} + +// CancelSalesOrder 取消销售订单 +func (r *ProcessApi) CancelSalesOrder(c *gin.Context) { + var req systemReq.CancelSalesOrderRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "取消销售订单请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + err := processService.CancelSalesOrder(req.OrderID, userInfo.Username, userInfo.ID, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "取消销售订单异常", err, c, req) + return + } + + systemRes.OkWithMessage("销售订单取消成功,库存已释放", c) +} + +// CancelOutboundWave 取消出库波次 +func (r *ProcessApi) CancelOutboundWave(c *gin.Context) { + var req systemReq.CancelOutboundWaveRequest + + if err := c.ShouldBindJSON(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "取消出库波次请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + err := processService.CancelOutboundWave(req.WaveID, userInfo.Username, userInfo.ID, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "取消出库波次异常", err, c, req) + return + } + + systemRes.OkWithMessage("出库波次取消成功,库存已释放", c) +} + +// AdjustInventory 盘库调整(加库存/减库存) +func (r *ProcessApi) AdjustInventory(c *gin.Context) { + var req systemReq.StockCheckAdjustRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "盘库调整请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + if err := processService.AdjustInventory(req, userInfo.Username, userInfo.ID, database.GetDB(c)); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "盘库调整异常", err, c, req) + return + } + + systemRes.OkWithMessage("盘库调整成功", c) +} + +// ReturnInventory 盘库退货 +func (r *ProcessApi) ReturnInventory(c *gin.Context) { + var req systemReq.StockCheckReturnRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "盘库退货请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + if err := processService.ReturnInventory(req, userInfo.Username, userInfo.ID, database.GetDB(c)); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "盘库退货异常", err, c, req) + return + } + + systemRes.OkWithMessage("盘库退货成功", c) +} + +// ChangeLocation 出库单切换库位 +func (r *ProcessApi) ChangeLocation(c *gin.Context) { + var req systemReq.ChangeLocationRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "出库单切换库位请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + if err := processService.ChangeLocation(req, userInfo.Username, userInfo.ID, database.GetDB(c)); err != nil { + if errors.Is(err, utils.ErrNoAvailableLocation) { + c.Status(http.StatusNoContent) + return + } + utils.FailWithRequestLog(constant.LoggerChannelWork, "出库单切换库位异常", err, c, req) + return + } + + systemRes.OkWithMessage("库位切换成功", c) +} + +// parsePathID 从URL路径参数中获取并验证ID +func parsePathID(c *gin.Context, paramName, source string) (int64, error) { + idStr := c.Param(paramName) + + if idStr == "" { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": source + "请求参数异常", + "err_msg": "ID参数不能为空", + }) + systemRes.FailWithValidateMessage("参数错误: ID不能为空", c) + return 0, fmt.Errorf("ID参数不能为空") + } + + var id int64 + if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil || id <= 0 { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": source + "请求参数异常", + "err_msg": "ID格式错误: " + idStr, + }) + systemRes.FailWithValidateMessage("参数错误: ID格式不正确", c) + return 0, fmt.Errorf("ID格式错误") + } + + return id, nil +} + +// parseOptionalDate 解析可选日期字段 +func parseOptionalDate(c *gin.Context, key string) int64 { + if str := c.PostForm(key); str != "" { + if val, err := strconv.ParseInt(str, 10, 64); err == nil { + return val + } + } + return 0 +} + +// bindSimpleItem 绑定简单项(ProductID + Quantity + UnitPrice) +func bindSimpleItem[T any](c *gin.Context, i int, creator func(int64, int64, int64) T) (T, bool, error) { + var zero T + + productID, hasProduct, err := getPostFormInt64(c, fmt.Sprintf("items[%d][product_id]", i)) + if err != nil || !hasProduct { + return zero, false, err + } + + quantity, hasQuantity, err := getPostFormInt64(c, fmt.Sprintf("items[%d][quantity]", i)) + if err != nil || !hasQuantity { + return zero, false, err + } + + unitPrice, hasPrice, err := getPostFormInt64(c, fmt.Sprintf("items[%d][unit_price]", i)) + if err != nil || !hasPrice { + return zero, false, err + } + + return creator(productID, quantity, unitPrice), true, nil +} + +// bindLocationItem 绑定带位置信息的项(ProductID + LocationID + Quantity + 批次信息) +func bindLocationItem[T any](c *gin.Context, i int, creator func(int64, int64, string, int64, int64, int64) T) (T, bool, error) { + var zero T + + productID, hasProduct, err := getPostFormInt64(c, fmt.Sprintf("items[%d][product_id]", i)) + if err != nil || !hasProduct { + return zero, false, err + } + + locationID, hasLocation, err := getPostFormInt64(c, fmt.Sprintf("items[%d][location_id]", i)) + if err != nil || !hasLocation { + return zero, false, err + } + + quantity, hasQuantity, err := getPostFormInt64(c, fmt.Sprintf("items[%d][quantity]", i)) + if err != nil || !hasQuantity { + return zero, false, err + } + + batchNo := c.PostForm(fmt.Sprintf("items[%d][batch_no]", i)) + productionDate := parseOptionalDate(c, fmt.Sprintf("items[%d][production_date]", i)) + expiryDate := parseOptionalDate(c, fmt.Sprintf("items[%d][expiry_date]", i)) + + return creator(productID, locationID, batchNo, productionDate, expiryDate, quantity), true, nil +} + +// bindPurchaseOrderItems 绑定采购订单项 +func bindPurchaseOrderItems(c *gin.Context, capacity int) ([]systemReq.PurchaseOrderItemRequest, error) { + return bindItemsWithForm(c, func(i int) (systemReq.PurchaseOrderItemRequest, bool, error) { + return bindSimpleItem(c, i, func(productID, quantity, unitPrice int64) systemReq.PurchaseOrderItemRequest { + return systemReq.PurchaseOrderItemRequest{ + ProductID: productID, + Quantity: quantity, + UnitPrice: unitPrice, + } + }) + }, capacity) +} + +// bindWaveItems 绑定波次项 +func bindWaveItems(c *gin.Context, capacity int) ([]systemReq.WaveItemRequest, error) { + return bindItemsWithForm(c, func(i int) (systemReq.WaveItemRequest, bool, error) { + return bindSimpleItem(c, i, func(productID, quantity, unitPrice int64) systemReq.WaveItemRequest { + return systemReq.WaveItemRequest{ + ProductID: productID, + Quantity: quantity, + UnitPrice: unitPrice, + } + }) + }, capacity) +} + +// bindReceivingItems 绑定入库项 +func bindReceivingItems(c *gin.Context, maxItems int) ([]systemReq.ReceivingItemRequest, error) { + return bindItemsWithForm(c, func(i int) (systemReq.ReceivingItemRequest, bool, error) { + return bindLocationItem(c, i, func(productID, locationID int64, batchNo string, productionDate, expiryDate, quantity int64) systemReq.ReceivingItemRequest { + return systemReq.ReceivingItemRequest{ + ProductID: productID, + LocationID: locationID, + BatchNo: batchNo, + ProductionDate: productionDate, + ExpiryDate: expiryDate, + Quantity: quantity, + } + }) + }, maxItems) +} + +// bindSalesOrderItems 绑定销售订单项 +func bindSalesOrderItems(c *gin.Context) ([]systemReq.SalesOrderItemRequest, error) { + return bindItemsWithForm(c, func(i int) (systemReq.SalesOrderItemRequest, bool, error) { + return bindSimpleItem(c, i, func(productID, quantity, unitPrice int64) systemReq.SalesOrderItemRequest { + return systemReq.SalesOrderItemRequest{ + ProductID: productID, + Quantity: quantity, + UnitPrice: unitPrice, + } + }) + }, 200) +} + +// bindOutboundItems 绑定出库项 +func bindOutboundItems(c *gin.Context, maxItems int) ([]systemReq.OutboundItemRequest, error) { + return bindItemsWithForm(c, func(i int) (systemReq.OutboundItemRequest, bool, error) { + return bindLocationItem(c, i, func(productID, locationID int64, batchNo string, productionDate, expiryDate, quantity int64) systemReq.OutboundItemRequest { + return systemReq.OutboundItemRequest{ + ProductID: productID, + LocationID: locationID, + BatchNo: batchNo, + ProductionDate: productionDate, + ExpiryDate: expiryDate, + Quantity: quantity, + } + }) + }, maxItems) +} + +// bindItemsWithForm 通用表单项绑定函数 +func bindItemsWithForm[T any](c *gin.Context, builder func(int) (T, bool, error), maxItems int) ([]T, error) { + items := make([]T, 0) + for i := 0; i < maxItems; i++ { + item, hasData, err := builder(i) + if err != nil { + return nil, err + } + if !hasData { + continue + } + items = append(items, item) + } + return items, nil +} + +func parseIdsFrom(c *gin.Context, total int) ([]int64, error) { + var ids []int64 + + for i := 0; i < total; i++ { + idStr := c.PostForm(fmt.Sprintf("order_ids[%d]", i)) + if idStr == "" { + break + } + + var id int64 + if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil { + return nil, fmt.Errorf("第%d个ID格式错误", i) + } + if id <= 0 { + return nil, fmt.Errorf("第%d个ID必须大于0", i) + } + ids = append(ids, id) + } + + if len(ids) == 0 { + return nil, fmt.Errorf("至少需要一个ID") + } + + return ids, nil +} + +// getPostFormInt64 获取表单中的int64值 +func getPostFormInt64(c *gin.Context, key string) (int64, bool, error) { + str := c.PostForm(key) + if str == "" { + return 0, false, nil + } + val, err := strconv.ParseInt(str, 10, 64) + if err != nil { + return 0, true, err + } + return val, true, nil +} + +// logAndFail 业务统一的错误日志和响应函数 +func logAndFail(channel string, source, errMsg string, c *gin.Context) { + utils.ErrorLog(channel, logrus.Fields{ + "source": source, + "err_msg": errMsg, + }) + systemRes.FailWithMessage(errMsg, c) +} + +// ValidAndFail 参数统一的错误日志和响应函数 +func ValidAndFail(channel string, source, errMsg string, c *gin.Context, err error) { + utils.ErrorLog(channel, logrus.Fields{ + "source": source, + "err_msg": errMsg, + }) + utils.HandleValidationError(c, err) +} diff --git a/controllers/product.go b/controllers/product.go new file mode 100644 index 0000000..5cdd81a --- /dev/null +++ b/controllers/product.go @@ -0,0 +1,464 @@ +package controllers + +import ( + "fmt" + "github.com/gin-gonic/gin" + "net/http" + "net/url" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" + "strings" +) + +type ProductApi struct{} + +var productService = service.ProductService{} + +func (r *ProductApi) GetProductList(c *gin.Context) { + var req systemReq.GetProductListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "商品列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if len(req.IDs) == 0 { + ids, err := parseIds(c) + if err != nil { + systemRes.FailWithValidateMessage("参数错误: "+err.Error(), c) + return + } + req.IDs = ids + } + + result, err := productService.GetProductList(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "商品列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +func (r *ProductApi) GetDistributionProductList(c *gin.Context) { + var req systemReq.GetDistributionProductListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "分销商品列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + // Name支持双重编码:如果绑定后仍含%编码字符,再解码一次 + if req.Name != "" && strings.Contains(req.Name, "%") { + if decoded, err := url.QueryUnescape(req.Name); err == nil { + req.Name = decoded + } + } + // StockOperator支持双重编码 + if req.StockOperator != "" && strings.Contains(req.StockOperator, "%") { + if decoded, err := url.QueryUnescape(req.StockOperator); err == nil { + req.StockOperator = decoded + } + } + // SalePriceOperator支持双重编码 + if req.SalePriceOperator != "" && strings.Contains(req.SalePriceOperator, "%") { + if decoded, err := url.QueryUnescape(req.SalePriceOperator); err == nil { + req.SalePriceOperator = decoded + } + } + + result, err := productService.GetDistributionProductList(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "分销商品列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetProductDetail 获取商品详情 +func (r *ProductApi) GetProductDetail(c *gin.Context) { + var req systemReq.GetProductDetailRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "商品详情请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := productService.GetProductDetail(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "商品详情异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// SaveProduct 保存商品(添加或修改) +func (r *ProductApi) SaveProduct(c *gin.Context) { + var req systemReq.ProductRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "保存商品请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + if len(req.LiveImage) == 0 { + image, err := parseImageFromForm(c) + if err != nil { + systemRes.FailWithValidateMessage("参数错误: "+err.Error(), c) + return + } + req.LiveImage = image + } + id, err := productService.SaveProduct(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "保存商品异常", err, c, req) + return + } + + systemRes.OkWithDetailed(gin.H{"id": id}, "操作成功", c) +} + +// UpdatePrice 修改商品售价 +func (r *ProductApi) UpdatePrice(c *gin.Context) { + var req systemReq.UpdatePriceRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "修改售价请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if err := productService.UpdatePrice(req); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "修改售价异常", err, c, req) + return + } + + systemRes.OkWithMessage("售价修改成功", c) +} + +// DeleteProduct 删除商品 +func (r *ProductApi) DeleteProduct(c *gin.Context) { + var req systemReq.DeleteProductRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "删除商品请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + err := productService.DeleteProduct(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "删除商品异常", err, c, req) + return + } + + systemRes.OkWithMessage("删除成功", c) +} + +// GetProductInventory 获取商品库存数量 +func (r *ProductApi) GetProductInventory(c *gin.Context) { + var req systemReq.GetProductInventoryRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "获取商品库存请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := productService.GetProductInventory(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "获取商品库存异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// RetryOutTask 重试失败的外部任务 +func (r *ProductApi) RetryOutTask(c *gin.Context) { + var req systemReq.RetryOutTaskRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "重试任务请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if err := productService.RetryOutTask(req, database.GetDB(c)); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "重试任务异常", err, c, req) + return + } + + systemRes.OkWithMessage("重试任务已提交", c) +} + +// ExportProducts 导出商品到Excel +func (r *ProductApi) ExportProducts(c *gin.Context) { + var req systemReq.ExportProductRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "导出商品请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := productService.ExportProducts(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "导出商品异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// PushProductToShop 上架到商铺:创建商品、库存记录,并推送到商铺 +func (r *ProductApi) PushProductToShop(c *gin.Context) { + var req systemReq.PushProductToShopRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "上架到商铺请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + // 处理photos参数: 如果表单未绑定,尝试从原始表单解析 + if len(req.Photos) == 0 { + var photos []string + for i := 0; i < 20; i++ { + photoStr := c.PostForm(fmt.Sprintf("photos[%d]", i)) + if photoStr == "" { + break + } + photos = append(photos, photoStr) + } + req.Photos = photos + } + + result, err := productService.PushProductToShop(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "上架到商铺异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// BatchPushProducts 批量推送商品到多个店铺 +func (r *ProductApi) BatchPushProducts(c *gin.Context) { + var req systemReq.BatchPushProductRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "批量推送请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if err := productService.BatchPushProducts(req); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "批量推送异常", err, c, req) + return + } + + systemRes.OkWithMessage("批量推送完成", c) +} + +func (r *ProductApi) GetProductLogList(c *gin.Context) { + var req systemReq.GetProductLogListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "商品日志列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := productService.GetProductLogList(req, userInfo.AboutID) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "商品日志列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// SaveProductLog 保存商品日志(添加或修改) +func (r *ProductApi) SaveProductLog(c *gin.Context) { + var req systemReq.ProductLogRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "保存商品日志请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if len(req.OldLiveImage) == 0 { + image, err := parseOldImageFromForm(c) + if err != nil { + systemRes.FailWithValidateMessage("参数错误: "+err.Error(), c) + return + } + req.OldLiveImage = image + } + + if len(req.NewLiveImage) == 0 { + image, err := parseNewImageFromForm(c) + if err != nil { + systemRes.FailWithValidateMessage("参数错误: "+err.Error(), c) + return + } + req.NewLiveImage = image + } + + userInfo := utils.GetUserInfo(c) + id, err := productService.SaveProductLog(req, userInfo.ID) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "保存商品日志异常", err, c, req) + return + } + + systemRes.OkWithDetailed(gin.H{"id": id}, "操作成功", c) +} + +func (r *ProductApi) AuditProductLog(c *gin.Context) { + var req systemReq.AuditProductLogRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "审核商品日志请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if len(req.NewLiveImage) == 0 { + image, err := parseNewImageFromForm(c) + if err != nil { + systemRes.FailWithValidateMessage("参数错误: "+err.Error(), c) + return + } + req.NewLiveImage = image + } + + userInfo := utils.GetUserInfo(c) + if err := productService.AuditProductLog(req, userInfo.ID); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "审核商品日志异常", err, c, req) + return + } + + systemRes.OkWithMessage("审核成功", c) +} + +func (r *ProductApi) DeleteProductLog(c *gin.Context) { + var req systemReq.DeleteProductLogRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "删除商品日志请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if err := productService.DeleteProductLog(req); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "删除商品日志异常", err, c, req) + return + } + + systemRes.OkWithMessage("删除成功", c) +} + +// GetShopProductDetail 获取店铺商品详情(包含商品数据和发送记录) +func (r *ProductApi) GetShopProductDetail(c *gin.Context) { + var req systemReq.GetShopProductDetailRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "获取店铺商品详情请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := productService.GetShopProductDetail(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "获取店铺商品详情异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +func parseIds(c *gin.Context) ([]int64, error) { + var ids []int64 + + for i := 0; i < 100; i++ { + idStr := c.Query(fmt.Sprintf("ids[%d]", i)) + if idStr == "" { + break + } + + var id int64 + if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil { + return nil, fmt.Errorf("第%d个ID格式错误", i) + } + if id <= 0 { + return nil, fmt.Errorf("第%d个ID必须大于0", i) + } + ids = append(ids, id) + } + + return ids, nil +} + +func parseImageFromForm(c *gin.Context) ([]string, error) { + var images []string + + for i := 0; i < 10; i++ { + imageStr := c.PostForm(fmt.Sprintf("live_image[%d]", i)) + if imageStr == "" { + break + } + + images = append(images, imageStr) + } + + return images, nil +} + +func parseOldImageFromForm(c *gin.Context) ([]string, error) { + var images []string + + for i := 0; i < 10; i++ { + imageStr := c.PostForm(fmt.Sprintf("old_live_image[%d]", i)) + if imageStr == "" { + break + } + + images = append(images, imageStr) + } + + return images, nil +} + +func parseNewImageFromForm(c *gin.Context) ([]string, error) { + var images []string + + for i := 0; i < 10; i++ { + imageStr := c.PostForm(fmt.Sprintf("new_live_image[%d]", i)) + if imageStr == "" { + break + } + + images = append(images, imageStr) + } + + return images, nil +} diff --git a/controllers/purchase.go b/controllers/purchase.go new file mode 100644 index 0000000..3750474 --- /dev/null +++ b/controllers/purchase.go @@ -0,0 +1,57 @@ +package controllers + +import ( + "github.com/gin-gonic/gin" + "net/http" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type PurchaseApi struct{} + +var purchaseService = service.PurchaseService{} + +// GetPurchaseOrderList 获取采购订单列表 +func (r *PurchaseApi) GetPurchaseOrderList(c *gin.Context) { + var req systemReq.GetPurchaseOrderListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "采购订单列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := purchaseService.GetPurchaseOrderList(req, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "采购订单列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetPurchaseOrderDetail 获取采购订单详情 +func (r *PurchaseApi) GetPurchaseOrderDetail(c *gin.Context) { + var req systemReq.GetPurchaseOrderDetailRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "采购订单详情请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := purchaseService.GetPurchaseOrderDetail(req.ID, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "采购订单详情异常", err, c, req) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} diff --git a/controllers/receiving.go b/controllers/receiving.go new file mode 100644 index 0000000..748dce1 --- /dev/null +++ b/controllers/receiving.go @@ -0,0 +1,57 @@ +package controllers + +import ( + "github.com/gin-gonic/gin" + "net/http" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type ReceivingApi struct{} + +var receivingService = service.ReceivingService{} + +// GetReceivingOrderList 获取入库单列表 +func (r *ReceivingApi) GetReceivingOrderList(c *gin.Context) { + var req systemReq.GetReceivingOrderListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "入库单列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := receivingService.GetReceivingOrderList(req, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "入库单列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetReceivingOrderDetail 获取入库单详情 +func (r *ReceivingApi) GetReceivingOrderDetail(c *gin.Context) { + var req systemReq.GetReceivingOrderDetailRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "入库单详情请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := receivingService.GetReceivingOrderDetail(req.ID, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "入库单详情异常", err, c, req) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} diff --git a/controllers/sales.go b/controllers/sales.go new file mode 100644 index 0000000..264441b --- /dev/null +++ b/controllers/sales.go @@ -0,0 +1,79 @@ +package controllers + +import ( + "github.com/gin-gonic/gin" + "net/http" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type SalesApi struct{} + +var salesService = service.SalesService{} + +// GetSalesOrderList 获取销售订单列表 +func (r *SalesApi) GetSalesOrderList(c *gin.Context) { + var req systemReq.GetSalesOrderListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "销售订单列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := salesService.GetSalesOrderList(req, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "销售订单列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetSalesOrderDetail 获取销售订单详情 +func (r *SalesApi) GetSalesOrderDetail(c *gin.Context) { + var req systemReq.GetSalesOrderDetailRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "销售订单详情请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := salesService.GetSalesOrderDetail(req.ID, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "销售订单详情异常", err, c, req) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} + +// GetSalesOrderDetailList 获取分页的销售订单详情列表 +func (r *SalesApi) GetSalesOrderDetailList(c *gin.Context) { + var req systemReq.GetSalesOrderDetailListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "销售订单详情列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := salesService.GetSalesOrderDetailList(req, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "销售订单详情列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} diff --git a/controllers/shipping.go b/controllers/shipping.go new file mode 100644 index 0000000..4b3ba19 --- /dev/null +++ b/controllers/shipping.go @@ -0,0 +1,79 @@ +package controllers + +import ( + "github.com/gin-gonic/gin" + "net/http" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type ShippingApi struct{} + +var shippingService = service.ShippingService{} + +// GetShippingOrderList 获取发货单列表 +func (r *ShippingApi) GetShippingOrderList(c *gin.Context) { + var req systemReq.GetShippingOrderListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "发货单列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := shippingService.GetShippingOrderList(req, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "发货单列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetShippingOrderDetail 获取发货单详情 +func (r *ShippingApi) GetShippingOrderDetail(c *gin.Context) { + var req systemReq.GetShippingOrderDetailRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "发货单详情请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := shippingService.GetShippingOrderDetail(req.ID, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "发货单详情异常", err, c, req) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} + +// GetShippingOrderDetailList 获取发货单详情列表(按状态筛选,返回list+detail所有字段) +func (r *ShippingApi) GetShippingOrderDetailList(c *gin.Context) { + var req systemReq.GetShippingOrderDetailListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "发货单详情列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := shippingService.GetShippingOrderDetailList(req, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "发货单详情列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} diff --git a/controllers/shipping.go.bak b/controllers/shipping.go.bak new file mode 100644 index 0000000..c201066 --- /dev/null +++ b/controllers/shipping.go.bak @@ -0,0 +1,57 @@ +package controllers + +import ( + "github.com/gin-gonic/gin" + "net/http" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type ShippingApi struct{} + +var shippingService = service.ShippingService{} + +// GetShippingOrderList 获取发货单列表 +func (r *ShippingApi) GetShippingOrderList(c *gin.Context) { + var req systemReq.GetShippingOrderListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "发货单列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := shippingService.GetShippingOrderList(req, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "发货单列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetShippingOrderDetail 获取发货单详情 +func (r *ShippingApi) GetShippingOrderDetail(c *gin.Context) { + var req systemReq.GetShippingOrderDetailRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "发货单详情请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := shippingService.GetShippingOrderDetail(req.ID, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "发货单详情异常", err, c, req) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} diff --git a/controllers/shop.go b/controllers/shop.go new file mode 100644 index 0000000..56e5eb7 --- /dev/null +++ b/controllers/shop.go @@ -0,0 +1,120 @@ +package controllers + +import ( + "fmt" + "github.com/gin-gonic/gin" + "github.com/sirupsen/logrus" + "net/http" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type ShopApi struct{} + +var shopService = service.ShopService{} + +func (r *ShopApi) GetShopList(c *gin.Context) { + var req systemReq.QueryShopRequest + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "查询店铺列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + list, total, err := shopService.GetShopList(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "查询店铺列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "data": gin.H{ + "list": list, + "total": total, + "page": req.Page, + "page_size": req.PageSize, + }, + "msg": "查询成功", + }) +} + +func (r *ShopApi) GetShopDetail(c *gin.Context) { + idStr := c.Param("id") + + if idStr == "" { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取店铺详情请求参数异常", + "err_msg": "ID参数不能为空", + }) + systemRes.FailWithValidateMessage("参数错误: ID不能为空", c) + return + } + + var id int64 + if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil || id <= 0 { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取店铺详情请求参数异常", + "err_msg": "ID格式错误: " + idStr, + }) + systemRes.FailWithValidateMessage("参数错误: ID格式不正确", c) + return + } + + shop, err := shopService.GetShopByID(id, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "查询店铺详情异常", err, c, gin.H{"id": id}) + return + } + + systemRes.OkWithDetailed(shop, "查询成功", c) +} + +func (r *ShopApi) CreateShop(c *gin.Context) { + var req systemReq.CreateShopRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "创建店铺请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + id, err := shopService.CreateShop(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "创建店铺异常", err, c, req) + return + } + + systemRes.OkWithDetailed(gin.H{"id": id}, "创建成功", c) +} + +func (r *ShopApi) UpdateShop(c *gin.Context) { + var req systemReq.UpdateShopRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "更新店铺请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if err := shopService.UpdateShop(req, database.GetDB(c)); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "更新店铺异常", err, c, req) + return + } + + systemRes.OkWithMessage("更新成功", c) +} + +func (r *ShopApi) DeleteShop(c *gin.Context) { + var req systemReq.DeleteShopRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "删除店铺请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if err := shopService.DeleteShop(req.ID, database.GetDB(c)); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "删除店铺异常", err, c, req) + return + } + + systemRes.OkWithMessage("删除成功", c) +} diff --git a/controllers/sorting_settings.go b/controllers/sorting_settings.go new file mode 100644 index 0000000..04d9b50 --- /dev/null +++ b/controllers/sorting_settings.go @@ -0,0 +1,39 @@ +package controllers + +import ( + "github.com/gin-gonic/gin" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type SortingSettingsApi struct{} + +var sortingSettingsService = service.SortingSettingsService{} + +// GetSortingSettings 获取分拣设置 +func (r *SortingSettingsApi) GetSortingSettings(c *gin.Context) { + result := sortingSettingsService.GetSortingSettings(database.GetDB(c)) + systemRes.OkWithDetailed(result, "查询成功", c) +} + +// SaveSortingSettings 保存分拣设置 +func (r *SortingSettingsApi) SaveSortingSettings(c *gin.Context) { + var req systemReq.SaveSortingSettingsRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "保存分拣设置请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + err := sortingSettingsService.SaveSortingSettings(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "保存分拣设置异常", err, c, req) + return + } + + systemRes.OkWithMessage("保存成功", c) +} diff --git a/controllers/split_account_config.go b/controllers/split_account_config.go new file mode 100644 index 0000000..56d6902 --- /dev/null +++ b/controllers/split_account_config.go @@ -0,0 +1,127 @@ +package controllers + +import ( + "fmt" + "github.com/gin-gonic/gin" + "github.com/sirupsen/logrus" + "net/http" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type SplitAccountConfigApi struct{} + +var splitAccountConfigService = service.SplitAccountConfigService{} + +// GetSplitAccountConfigList 获取分账配置列表 +func (r *SplitAccountConfigApi) GetSplitAccountConfigList(c *gin.Context) { + var req systemReq.GetSplitAccountConfigListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "分账配置列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := splitAccountConfigService.GetSplitAccountConfigList(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "分账配置列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetSplitAccountConfigDetail 获取分账配置详情 +func (r *SplitAccountConfigApi) GetSplitAccountConfigDetail(c *gin.Context) { + idStr := c.Param("id") + + if idStr == "" { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取分账配置详情请求参数异常", + "err_msg": "ID参数不能为空", + }) + systemRes.FailWithValidateMessage("参数错误: ID不能为空", c) + return + } + + var id int64 + if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil || id <= 0 { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取分账配置详情请求参数异常", + "err_msg": "ID格式错误: " + idStr, + }) + systemRes.FailWithValidateMessage("参数错误: ID格式不正确", c) + return + } + + result, err := splitAccountConfigService.GetSplitAccountConfigDetail(id, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "分账配置详情异常", err, c, gin.H{"id": id}) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} + +// CreateSplitAccountConfig 创建分账配置 +func (r *SplitAccountConfigApi) CreateSplitAccountConfig(c *gin.Context) { + var req systemReq.AddSplitAccountConfigRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "创建分账配置请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + id, err := splitAccountConfigService.CreateSplitAccountConfig(req, userInfo.Username, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "创建分账配置异常", err, c, req) + return + } + systemRes.OkWithDetailed(gin.H{"id": id}, "创建成功", c) +} + +// UpdateSplitAccountConfig 更新分账配置 +func (r *SplitAccountConfigApi) UpdateSplitAccountConfig(c *gin.Context) { + var req systemReq.UpdateSplitAccountConfigRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "更新分账配置请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + err := splitAccountConfigService.UpdateSplitAccountConfig(req, userInfo.Username, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "更新分账配置异常", err, c, req) + return + } + + systemRes.OkWithMessage("更新成功", c) +} + +// DeleteSplitAccountConfig 删除分账配置 +func (r *SplitAccountConfigApi) DeleteSplitAccountConfig(c *gin.Context) { + var req systemReq.DeleteSplitAccountConfigRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "删除分账配置请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + err := splitAccountConfigService.DeleteSplitAccountConfig(req, userInfo.Username, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "删除分账配置异常", err, c, req) + return + } + + systemRes.OkWithMessage("删除成功", c) +} diff --git a/controllers/split_account_deduction_log.go b/controllers/split_account_deduction_log.go new file mode 100644 index 0000000..1a33aad --- /dev/null +++ b/controllers/split_account_deduction_log.go @@ -0,0 +1,127 @@ +package controllers + +import ( + "fmt" + "github.com/gin-gonic/gin" + "github.com/sirupsen/logrus" + "net/http" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type SplitAccountDeductionLogApi struct{} + +var splitAccountDeductionLogService = service.SplitAccountDeductionLogService{} + +// GetSplitAccountDeductionLogList 获取分账扣钱日志列表 +func (r *SplitAccountDeductionLogApi) GetSplitAccountDeductionLogList(c *gin.Context) { + var req systemReq.GetSplitAccountDeductionLogListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "分账扣钱日志列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := splitAccountDeductionLogService.GetSplitAccountDeductionLogList(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "分账扣钱日志列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetSplitAccountDeductionLogDetail 获取分账扣钱日志详情 +func (r *SplitAccountDeductionLogApi) GetSplitAccountDeductionLogDetail(c *gin.Context) { + idStr := c.Param("id") + + if idStr == "" { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取分账扣钱日志详情请求参数异常", + "err_msg": "ID参数不能为空", + }) + systemRes.FailWithValidateMessage("参数错误: ID不能为空", c) + return + } + + var id int64 + if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil || id <= 0 { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取分账扣钱日志详情请求参数异常", + "err_msg": "ID格式错误: " + idStr, + }) + systemRes.FailWithValidateMessage("参数错误: ID格式不正确", c) + return + } + + result, err := splitAccountDeductionLogService.GetSplitAccountDeductionLogDetail(id, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "分账扣钱日志详情异常", err, c, gin.H{"id": id}) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} + +// CreateSplitAccountDeductionLog 创建分账扣钱日志 +func (r *SplitAccountDeductionLogApi) CreateSplitAccountDeductionLog(c *gin.Context) { + var req systemReq.AddSplitAccountDeductionLogRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "创建分账扣钱日志请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + id, err := splitAccountDeductionLogService.CreateSplitAccountDeductionLog(req, userInfo.Username, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "创建分账扣钱日志异常", err, c, req) + return + } + systemRes.OkWithDetailed(gin.H{"id": id}, "创建成功", c) +} + +// UpdateSplitAccountDeductionLog 更新分账扣钱日志 +func (r *SplitAccountDeductionLogApi) UpdateSplitAccountDeductionLog(c *gin.Context) { + var req systemReq.UpdateSplitAccountDeductionLogRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "更新分账扣钱日志请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + err := splitAccountDeductionLogService.UpdateSplitAccountDeductionLog(req, userInfo.Username, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "更新分账扣钱日志异常", err, c, req) + return + } + + systemRes.OkWithMessage("更新成功", c) +} + +// DeleteSplitAccountDeductionLog 删除分账扣钱日志 +func (r *SplitAccountDeductionLogApi) DeleteSplitAccountDeductionLog(c *gin.Context) { + var req systemReq.DeleteSplitAccountDeductionLogRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "删除分账扣钱日志请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + err := splitAccountDeductionLogService.DeleteSplitAccountDeductionLog(req, userInfo.Username, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "删除分账扣钱日志异常", err, c, req) + return + } + + systemRes.OkWithMessage("删除成功", c) +} diff --git a/controllers/statist.go b/controllers/statist.go new file mode 100644 index 0000000..ca21c88 --- /dev/null +++ b/controllers/statist.go @@ -0,0 +1,69 @@ +package controllers + +import ( + "github.com/gin-gonic/gin" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type StatistApi struct{} + +var statistService = service.StatistService{} + +// DashboardStatist 仪表盘统计 +func (i *StatistApi) DashboardStatist(c *gin.Context) { + var req systemReq.DashboardStatistRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "仪表盘统计请求异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := statistService.DashboardStatist(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "仪表盘统计异常", err, c, req) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} + +// GetWarehouseStatist 仓库统计接口 +func (i *StatistApi) GetWarehouseStatist(c *gin.Context) { + var req systemReq.WarehouseStatistRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "仓库统计请求异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := statistService.GetWarehouseStatist(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "仓库统计异常", err, c, req) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} + +// GetOrderStatist 订单统计接口 +func (i *StatistApi) GetOrderStatist(c *gin.Context) { + var req systemReq.OrderStatistRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "订单统计请求异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := statistService.GetOrderStatist(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "订单统计异常", err, c, req) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} diff --git a/controllers/supplier.go b/controllers/supplier.go new file mode 100644 index 0000000..bb137d7 --- /dev/null +++ b/controllers/supplier.go @@ -0,0 +1,124 @@ +package controllers + +import ( + "fmt" + "github.com/gin-gonic/gin" + "github.com/sirupsen/logrus" + "net/http" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type SupplierApi struct{} + +var supplierService = service.SupplierService{} + +// GetSupplierList 获取供应商列表 +func (r *SupplierApi) GetSupplierList(c *gin.Context) { + var req systemReq.GetSupplierListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "供应商列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := supplierService.GetSupplierList(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "供应商列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetSupplierDetail 获取供应商详情 +func (r *SupplierApi) GetSupplierDetail(c *gin.Context) { + idStr := c.Param("id") + + if idStr == "" { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取供应商详情请求参数异常", + "err_msg": "ID参数不能为空", + }) + systemRes.FailWithValidateMessage("参数错误: ID不能为空", c) + return + } + + var id int64 + if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil || id <= 0 { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取供应商详情请求参数异常", + "err_msg": "ID格式错误: " + idStr, + }) + systemRes.FailWithValidateMessage("参数错误: ID格式不正确", c) + return + } + + result, err := supplierService.GetSupplierDetail(id, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "供应商详情异常", err, c, gin.H{"id": id}) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} + +// CreateSupplier 创建供应商 +func (r *SupplierApi) CreateSupplier(c *gin.Context) { + var req systemReq.AddSupplierRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "创建供应商请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + id, err := supplierService.CreateSupplier(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "创建供应商异常", err, c, req) + return + } + systemRes.OkWithDetailed(gin.H{"id": id}, "创建成功", c) +} + +// UpdateSupplier 更新供应商 +func (r *SupplierApi) UpdateSupplier(c *gin.Context) { + var req systemReq.UpdateSupplierRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "更新供应商请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + err := supplierService.UpdateSupplier(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "更新供应商异常", err, c, req) + return + } + + systemRes.OkWithMessage("更新成功", c) +} + +// DeleteSupplier 删除供应商 +func (r *SupplierApi) DeleteSupplier(c *gin.Context) { + var req systemReq.DeleteSupplierRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "删除供应商请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + err := supplierService.DeleteSupplier(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "删除供应商异常", err, c, req) + return + } + + systemRes.OkWithMessage("删除成功", c) +} diff --git a/controllers/user_type.go b/controllers/user_type.go new file mode 100644 index 0000000..999e2e2 --- /dev/null +++ b/controllers/user_type.go @@ -0,0 +1,123 @@ +package controllers + +import ( + "fmt" + "github.com/gin-gonic/gin" + "github.com/sirupsen/logrus" + "net/http" + "psi/constant" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" +) + +type UserTypeApi struct{} + +var userTypeService = service.UserTypeService{} + +// GetUserTypeList 获取用户类型列表 +func (r *UserTypeApi) GetUserTypeList(c *gin.Context) { + var req systemReq.GetUserTypeListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "用户类型列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := userTypeService.GetUserTypeList(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "用户类型列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetUserTypeDetail 获取用户类型详情 +func (r *UserTypeApi) GetUserTypeDetail(c *gin.Context) { + idStr := c.Param("id") + + if idStr == "" { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取用户类型详情请求参数异常", + "err_msg": "ID参数不能为空", + }) + systemRes.FailWithValidateMessage("参数错误: ID不能为空", c) + return + } + + var id int64 + if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil || id <= 0 { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取用户类型详情请求参数异常", + "err_msg": "ID格式错误: " + idStr, + }) + systemRes.FailWithValidateMessage("参数错误: ID格式不正确", c) + return + } + + result, err := userTypeService.GetUserTypeDetail(id) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "用户类型详情异常", err, c, gin.H{"id": id}) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} + +// CreateUserType 创建用户类型 +func (r *UserTypeApi) CreateUserType(c *gin.Context) { + var req systemReq.AddUserTypeRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "创建用户类型请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + id, err := userTypeService.CreateUserType(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "创建用户类型异常", err, c, req) + return + } + systemRes.OkWithDetailed(gin.H{"id": id}, "创建成功", c) +} + +// UpdateUserType 更新用户类型 +func (r *UserTypeApi) UpdateUserType(c *gin.Context) { + var req systemReq.UpdateUserTypeRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "更新用户类型请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + err := userTypeService.UpdateUserType(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "更新用户类型异常", err, c, req) + return + } + + systemRes.OkWithMessage("更新成功", c) +} + +// DeleteUserType 删除用户类型 +func (r *UserTypeApi) DeleteUserType(c *gin.Context) { + var req systemReq.DeleteUserTypeRequest + + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "删除用户类型请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + err := userTypeService.DeleteUserType(req) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "删除用户类型异常", err, c, req) + return + } + + systemRes.OkWithMessage("删除成功", c) +} diff --git a/controllers/warehouse.go b/controllers/warehouse.go new file mode 100644 index 0000000..d1a504e --- /dev/null +++ b/controllers/warehouse.go @@ -0,0 +1,207 @@ +package controllers + +import ( + "fmt" + "github.com/gin-gonic/gin" + "github.com/sirupsen/logrus" + "net/http" + "os" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" + "strings" + "time" +) + +type WarehouseApi struct{} + +var warehouseService = service.WarehouseService{} + +func (r *WarehouseApi) GetWarehouseList(c *gin.Context) { + var req systemReq.QueryWarehouseRequest + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "查询仓库列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + if len(req.IDs) == 0 { + ids, err := parseIds(c) + if err != nil { + systemRes.FailWithValidateMessage("参数错误: "+err.Error(), c) + return + } + req.IDs = ids + } + + list, total, err := warehouseService.GetWarehouseList(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "查询仓库列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "data": gin.H{ + "list": list, + "total": total, + "page": req.Page, + "page_size": req.PageSize, + }, + "msg": "查询成功", + }) +} + +func (r *WarehouseApi) GetWarehouseDetail(c *gin.Context) { + idStr := c.Param("id") + + if idStr == "" { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取仓库详情请求参数异常", + "err_msg": "ID参数不能为空", + }) + systemRes.FailWithValidateMessage("参数错误: ID不能为空", c) + return + } + + var id int64 + if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil || id <= 0 { + utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ + "source": "获取仓库详情请求参数异常", + "err_msg": "ID格式错误: " + idStr, + }) + systemRes.FailWithValidateMessage("参数错误: ID格式不正确", c) + return + } + + warehouse, err := warehouseService.GetWarehouseByID(id, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "查询仓库详情异常", err, c, gin.H{"id": id}) + return + } + + systemRes.OkWithDetailed(warehouse, "查询成功", c) +} + +func (r *WarehouseApi) CreateWarehouse(c *gin.Context) { + var req systemReq.CreateWarehouseRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "创建仓库请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + id, err := warehouseService.CreateWarehouse(req, userInfo.AboutID, userInfo.Username, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "创建仓库异常", err, c, req) + return + } + + systemRes.OkWithDetailed(gin.H{"id": id}, "创建成功", c) +} + +func (r *WarehouseApi) UpdateWarehouse(c *gin.Context) { + var req systemReq.UpdateWarehouseRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "更新仓库请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + if err := warehouseService.UpdateWarehouse(req, userInfo.AboutID, userInfo.Username, database.GetDB(c)); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "更新仓库异常", err, c, req) + return + } + + systemRes.OkWithMessage("更新成功", c) +} + +func (r *WarehouseApi) DeleteWarehouse(c *gin.Context) { + var req systemReq.DeleteWarehouseRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "删除仓库请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + if err := warehouseService.DeleteWarehouse(req.ID, userInfo.AboutID, userInfo.Username, database.GetDB(c)); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "删除仓库异常", err, c, req) + return + } + + systemRes.OkWithMessage("删除成功", c) +} + +func (r *LocationApi) LocationToCsv(c *gin.Context) { + var req systemReq.ExportLocationRequest + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "导出库位请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + result, err := locationService.ExportLocations(req, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "导出库位异常", err, c, req) + return + } + + systemRes.OkWithDetailed(result, "导出成功", c) +} + +func (r *LocationApi) CsvToLocation(c *gin.Context) { + var req systemReq.ImportLocationRequest + if err := c.ShouldBind(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "导入库位请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + file, err := c.FormFile("file") + if err != nil { + systemRes.FailWithValidateMessage("请上传文件", c) + return + } + + if !strings.HasSuffix(strings.ToLower(file.Filename), ".xlsx") && !strings.HasSuffix(strings.ToLower(file.Filename), ".xls") { + systemRes.FailWithValidateMessage("只支持Excel文件格式(.xlsx, .xls)", c) + return + } + + filePath := fmt.Sprintf("excel/import_%s_%d.xlsx", time.Now().Format("20060102150405"), time.Now().UnixNano()) + if err := c.SaveUploadedFile(file, filePath); err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "保存上传文件异常", err, c, gin.H{"filename": file.Filename}) + return + } + + defer func() { + if err := os.Remove(filePath); err != nil { + utils.ErrorLog(constant.LoggerChannelWork, logrus.Fields{ + "source": "删除临时文件失败", + "err_msg": err.Error(), + }) + } + }() + + result, err := locationService.ImportLocationsFromCSV(req, filePath, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "导入库位异常", err, c, gin.H{"filename": file.Filename}) + return + } + + systemRes.OkWithDetailed(result, result.Message, c) +} + +func (r *WarehouseApi) GetUserWarehouseMappings(c *gin.Context) { + data, err := warehouseService.GetUserWarehouseMappings() + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "获取用户的仓库映射列表异常", err, c, nil) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "data": data, + "msg": "查询成功", + }) +} diff --git a/controllers/wave.go b/controllers/wave.go new file mode 100644 index 0000000..f647393 --- /dev/null +++ b/controllers/wave.go @@ -0,0 +1,83 @@ +package controllers + +import ( + "github.com/gin-gonic/gin" + "net/http" + "psi/constant" + "psi/database" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/service" + "psi/utils" + "strconv" +) + +type WaveApi struct{} + +var waveService = service.WaveService{} + +// GetWaveTaskList 获取波次任务列表 +func (r *WaveApi) GetWaveTaskList(c *gin.Context) { + var req systemReq.GetWaveTaskListRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "波次任务列表请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := waveService.GetWaveTaskList(req, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "波次任务列表异常", err, c, req) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 200, + "data": result, + }) +} + +// GetWaveTaskDetail 获取波次任务详情 +func (r *WaveApi) GetWaveTaskDetail(c *gin.Context) { + var req systemReq.GetWaveTaskDetailRequest + + if err := c.ShouldBindQuery(&req); err != nil { + ValidAndFail(constant.LoggerChannelRequest, "波次任务详情请求参数异常", "参数错误: "+err.Error(), c, err) + return + } + + userInfo := utils.GetUserInfo(c) + result, err := waveService.GetWaveTaskDetail(req.ID, userInfo.ID, userInfo.Role, database.GetDB(c)) + if err != nil { + utils.FailWithRequestLog(constant.LoggerChannelWork, "波次任务详情异常", err, c, req) + return + } + + systemRes.OkWithDetailed(result, "查询成功", c) +} + +func (r *WaveApi) GetWaveStatusById(c *gin.Context) { + waveIDStr := c.Query("id") + if waveIDStr == "" { + systemRes.FailWithValidateMessage("参数错误: id不能为空", c) + return + } + + waveID, err := strconv.ParseInt(waveIDStr, 10, 64) + if err != nil || waveID <= 0 { + systemRes.FailWithValidateMessage("参数错误: id格式不正确", c) + return + } + + waveTask, err := waveService.GetWaveStatusById(waveID, database.GetDB(c)) + if err != nil { + systemRes.FailWithMessage(err.Error(), c) + return + } + + systemRes.OkWithDetailed(gin.H{ + "id": waveTask.ID, + "status": waveTask.Status, + }, "查询成功", c) +} diff --git a/database/db_helper.go b/database/db_helper.go new file mode 100644 index 0000000..c08e269 --- /dev/null +++ b/database/db_helper.go @@ -0,0 +1,45 @@ +package database + +import ( + "github.com/gin-gonic/gin" + "gorm.io/gorm" +) + +// GetTenantDBFromContext 从 gin.Context 获取租户 DB +// 已弃用,请使用 GetDB +func GetTenantDBFromContext(aboutID int64) (*gorm.DB, error) { + return GetTenantDB(aboutID) +} + +// GetDB 从 gin.Context 获取当前应使用的数据库连接 +// 如果上下文中有租户DB则返回租户DB,否则返回主库 +// 使用方式: db := database.GetDB(c) +func GetDB(c *gin.Context) *gorm.DB { + if c == nil { + return DB + } + if tenantDB, exists := c.Get("tenant_db"); exists { + if db, ok := tenantDB.(*gorm.DB); ok { + return db + } + } + return DB +} + +// GetDBWithFallback 获取数据库连接,支持可选的 DB 参数覆盖 +// 使用方式: db := database.GetDBWithFallback(c, dbOverride) +func GetDBWithFallback(c *gin.Context, dbOverride *gorm.DB) *gorm.DB { + if dbOverride != nil { + return dbOverride + } + return GetDB(c) +} + +// OptionalDB 可选 DB 参数处理 +// 使用方式: db := database.OptionalDB(db...) +func OptionalDB(db ...*gorm.DB) *gorm.DB { + if len(db) > 0 && db[0] != nil { + return db[0] + } + return DB +} diff --git a/database/mysql.go b/database/mysql.go new file mode 100644 index 0000000..f177a53 --- /dev/null +++ b/database/mysql.go @@ -0,0 +1,301 @@ +package database + +import ( + "gorm.io/driver/mysql" + "gorm.io/gorm" + "gorm.io/gorm/logger" + "log" + "os" + "psi/config" + "psi/models" + "psi/utils" + "time" +) + +var DB *gorm.DB + +func Init() { + cfg := config.AppConfig + + var err error + // 使用MySQL驱动连接数据库,开启慢查询日志(>=200ms) + slowLogger := logger.New( + log.New(os.Stdout, "\r\n", log.LstdFlags), + logger.Config{ + SlowThreshold: 200 * time.Millisecond, // 慢SQL阈值 + LogLevel: logger.Warn, // 只输出警告和错误 + IgnoreRecordNotFoundError: true, // 忽略RecordNotFound + Colorful: false, + }, + ) + DB, err = gorm.Open(mysql.Open(cfg.GetDSN()), &gorm.Config{ + Logger: slowLogger, + }) + if err != nil { + log.Fatal("数据库连接失败:", err) + } + // 获取底层的 sql.DB 对象以配置连接池 + sqlDB, err := DB.DB() + if err != nil { + log.Fatal("获取数据库连接失败:", err) + } + // 设置连接池参数 + sqlDB.SetMaxIdleConns(50) // 最大空闲连接数(提升以减少连接建立开销) + sqlDB.SetMaxOpenConns(200) // 最大打开连接数(提升以应对高并发) + sqlDB.SetConnMaxLifetime(30 * time.Minute) // 连接最大生命周期(30分钟) + sqlDB.SetConnMaxIdleTime(5 * time.Minute) // 连接最大空闲时间(5分钟,减少频繁创建连接) + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工表'").AutoMigrate(&models.Employee{}) + if err != nil { + log.Fatal("Employee表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='书籍信息表'").AutoMigrate(&models.BookInfo{}) + if err != nil { + log.Fatal("BookInfo表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户表'").AutoMigrate(&models.Customer{}) + if err != nil { + log.Fatal("Customer表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存表'").AutoMigrate(&models.Inventory{}) + if err != nil { + log.Fatal("Inventory表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存明细表'").AutoMigrate(&models.InventoryDetail{}) + if err != nil { + log.Fatal("InventoryDetail表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存流水表'").AutoMigrate(&models.InventoryLog{}) + if err != nil { + log.Fatal("InventoryLog表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库位表'").AutoMigrate(&models.Location{}) + if err != nil { + log.Fatal("Location表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='产品分类表'").AutoMigrate(&models.ProductCategory{}) + if err != nil { + log.Fatal("ProductCategory表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='产品表'").AutoMigrate(&models.Product{}) + if err != nil { + log.Fatal("Product表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='产品单位转换表'").AutoMigrate(&models.ProductUnitConversion{}) + if err != nil { + log.Fatal("ProductUnitConversion表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='产品序列号表'").AutoMigrate(&models.ProductSerial{}) + if err != nil { + log.Fatal("ProductSerial表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购订单主表'").AutoMigrate(&models.PurchaseOrder{}) + if err != nil { + log.Fatal("PurchaseOrder表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购订单明细表'").AutoMigrate(&models.PurchaseOrderItem{}) + if err != nil { + log.Fatal("PurchaseOrderItem表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='打印任务表'").AutoMigrate(&models.PrintTask{}) + if err != nil { + log.Fatal("PrintTask表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='打印日志表'").AutoMigrate(&models.PrintLog{}) + if err != nil { + log.Fatal("PrintLog表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='入库单主表'").AutoMigrate(&models.ReceivingOrder{}) + if err != nil { + log.Fatal("ReceivingOrder表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='入库单明细表'").AutoMigrate(&models.ReceivingOrderItem{}) + if err != nil { + log.Fatal("ReceivingOrderItem表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商表'").AutoMigrate(&models.Supplier{}) + if err != nil { + log.Fatal("Supplier表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售订单主表'").AutoMigrate(&models.SalesOrder{}) + if err != nil { + log.Fatal("SalesOrder表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售订单明细表'").AutoMigrate(&models.SalesOrderItem{}) + if err != nil { + log.Fatal("SalesOrderItem表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='仓库表'").AutoMigrate(&models.Warehouse{}) + if err != nil { + log.Fatal("Warehouse表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='波次单主表'").AutoMigrate(&models.WaveHeader{}) + if err != nil { + log.Fatal("WaveHeader表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='波次任务表'").AutoMigrate(&models.WaveTask{}) + if err != nil { + log.Fatal("WaveTask表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='波次任务明细表'").AutoMigrate(&models.WaveTaskDetail{}) + if err != nil { + log.Fatal("WaveTaskDetail表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小车表'").AutoMigrate(&models.Car{}) + if err != nil { + log.Fatal("Car表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小车店铺关联表'").AutoMigrate(&models.CarShop{}) + if err != nil { + log.Fatal("CarShop表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='店铺表'").AutoMigrate(&models.Shop{}) + if err != nil { + log.Fatal("Shop表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工等级表'").AutoMigrate(&models.EmployeeLevel{}) + if err != nil { + log.Fatal("EmployeeLevel表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工等级日志表'").AutoMigrate(&models.EmployeeLevelLog{}) + if err != nil { + log.Fatal("EmployeeLevelLog表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工配置表'").AutoMigrate(&models.EmployeeSettings{}) + if err != nil { + log.Fatal("EmployeeSettings表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='盘库单主表'").AutoMigrate(&models.StockCheck{}) + if err != nil { + log.Fatal("StockCheck表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='盘库单明细表'").AutoMigrate(&models.StockCheckItem{}) + if err != nil { + log.Fatal("StockCheckItem表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='外部任务表'").AutoMigrate(&models.OutTask{}) + if err != nil { + log.Fatal("OutTask表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='外部任务异常日志表'").AutoMigrate(&models.OutTaskLog{}) + if err != nil { + log.Fatal("OutTaskLog表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='出库单主表'").AutoMigrate(&models.OutboundOrder{}) + if err != nil { + log.Fatal("OutboundOrder表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='出库单明细表'").AutoMigrate(&models.OutboundOrderItem{}) + if err != nil { + log.Fatal("OutboundOrderItem表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发货单主表'").AutoMigrate(&models.ShippingOrder{}) + if err != nil { + log.Fatal("ShippingOrder表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发货单明细表'").AutoMigrate(&models.ShippingOrderItem{}) + if err != nil { + log.Fatal("ShippingOrderItem表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运费模板表'").AutoMigrate(&models.Logistics{}) + if err != nil { + log.Fatal("Logistics表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品日志表'").AutoMigrate(&models.ProductLog{}) + if err != nil { + log.Fatal("ProductLog表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户类型表'").AutoMigrate(&models.UserType{}) + if err != nil { + log.Fatal("UserType表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户映射表'").AutoMigrate(&models.UserMapping{}) + if err != nil { + log.Fatal("UserMapping表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分账配置表'").AutoMigrate(&models.SplitAccountConfig{}) + if err != nil { + log.Fatal("SplitAccountConfig表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分账扣钱日志表'").AutoMigrate(&models.SplitAccountDeductionLog{}) + if err != nil { + log.Fatal("SplitAccountDeductionLog表迁移失败:", err) + } + + err = DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配置表'").AutoMigrate(&models.Config{}) + if err != nil { + log.Fatal("Config表迁移失败:", err) + } + + createDefaultAdmin() + InitTaskDB() + log.Println("MySQL数据库连接成功:", cfg.Database.Host, cfg.Database.Name) +} + +func createDefaultAdmin() { + var count int64 + DB.Model(&models.Employee{}).Where("role = ?", 255).Count(&count) + if count == 0 { + // 创建默认管理员账号:账号init_00000,密码admin123 + hashedPassword, _ := utils.HashPassword("admin123") + admin := models.Employee{ + EmployeeIDStr: "00000", + Username: "init_00000", + Password: hashedPassword, + Name: "系统管理员", + Role: 255, + Score: 0, + Status: 1, + Fid: 0, + AboutId: 0, + From: "system", + CreatedAt: time.Now().Unix(), + UpdatedAt: time.Now().Unix(), + } + DB.Create(&admin) + log.Println("已创建默认管理员账号: init_00000 / admin123") + } +} diff --git a/database/task.go b/database/task.go new file mode 100644 index 0000000..feac4e1 --- /dev/null +++ b/database/task.go @@ -0,0 +1,48 @@ +package database + +import ( + "log" + "psi/config" + "time" + + "gorm.io/driver/mysql" + "gorm.io/gorm" + "gorm.io/gorm/logger" +) + +// TaskDB 任务数据库长连接(腾讯云 MySQL,用于导入后写 t_shop_goods_published) +var TaskDB *gorm.DB + +func InitTaskDB() { + cfg := config.AppConfig + + slowLogger := logger.New( + log.New(log.Writer(), "\r\n", log.LstdFlags), + logger.Config{ + SlowThreshold: 200 * time.Millisecond, + LogLevel: logger.Warn, + IgnoreRecordNotFoundError: true, + Colorful: false, + }, + ) + + var err error + TaskDB, err = gorm.Open(mysql.Open(cfg.GetTaskDSN()), &gorm.Config{ + Logger: slowLogger, + }) + if err != nil { + log.Fatal("任务数据库连接失败:", err) + } + + // 配置连接池 + sqlDB, err := TaskDB.DB() + if err != nil { + log.Fatal("获取任务数据库连接池失败:", err) + } + sqlDB.SetMaxIdleConns(10) // 最大空闲连接 + sqlDB.SetMaxOpenConns(50) // 最大打开连接 + sqlDB.SetConnMaxLifetime(10 * time.Minute) // 连接最大存活10分钟 + sqlDB.SetConnMaxIdleTime(2 * time.Minute) // 空闲连接2分钟后关闭 + + log.Println("任务数据库连接成功:", cfg.TaskDatabase.Host, cfg.TaskDatabase.Name) +} diff --git a/database/tenant.go b/database/tenant.go new file mode 100644 index 0000000..5bef4de --- /dev/null +++ b/database/tenant.go @@ -0,0 +1,415 @@ +package database + +import ( + "fmt" + "log" + "psi/config" + "psi/models" + "strings" + "sync" + "time" + + "gorm.io/driver/mysql" + "gorm.io/gorm" +) + +// TenantManager 租户数据库管理器 +type TenantManager struct { + connections map[int64]*gorm.DB // about_id -> DB连接 + mu sync.RWMutex +} + +var tenantManager *TenantManager + +func init() { + tenantManager = &TenantManager{ + connections: make(map[int64]*gorm.DB), + } +} + +// GetTenantDB 获取租户数据库连接(如果不存在则创建) +func GetTenantDB(aboutID int64) (*gorm.DB, error) { + if aboutID == 0 { + return DB, nil // 主库 + } + + tenantManager.mu.RLock() + conn, exists := tenantManager.connections[aboutID] + tenantManager.mu.RUnlock() + + if exists { + // 增量迁移:确保现有连接也有新表 + migrateIncrementalTenantTables(conn) + return conn, nil + } + + // 需要创建新连接 + tenantManager.mu.Lock() + defer tenantManager.mu.Unlock() + + // 双重检查 + if conn, exists = tenantManager.connections[aboutID]; exists { + migrateIncrementalTenantTables(conn) + return conn, nil + } + + // 创建租户数据库连接 + dbName := fmt.Sprintf("psi_%d", aboutID) + conn, err := createTenantDB(dbName) + if err != nil { + return nil, err + } + + tenantManager.connections[aboutID] = conn + log.Printf("租户数据库连接创建成功: %s", dbName) + return conn, nil +} + +// createTenantDB 创建租户数据库(如果不存在则新建库和表) +func createTenantDB(dbName string) (*gorm.DB, error) { + cfg := config.AppConfig + + // 先用主库连接检查/创建租户数据库 + mainDSN := cfg.GetDSN() + mainDB, err := gorm.Open(mysql.Open(mainDSN), &gorm.Config{}) + if err != nil { + return nil, fmt.Errorf("连接主库失败: %w", err) + } + + // 检查数据库是否存在 + var exists string + err = mainDB.Raw(fmt.Sprintf("SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '%s'", dbName)).Scan(&exists).Error + needCreate := err != nil || exists == "" + + // 创建数据库(如果不存在) + if needCreate { + createSQL := fmt.Sprintf("CREATE DATABASE `%s` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci", dbName) + if err = mainDB.Exec(createSQL).Error; err != nil { + // 如果数据库已存在(Error 1007),忽略该错误 + if strings.Contains(err.Error(), "1007") { + log.Printf("租户数据库已存在: %s", dbName) + } else { + sqlMainDB, _ := mainDB.DB() + sqlMainDB.Close() + return nil, fmt.Errorf("创建租户数据库失败: %w", err) + } + } else { + log.Printf("租户数据库创建成功: %s", dbName) + } + } + sqlMainDB, _ := mainDB.DB() + sqlMainDB.Close() + + // 连接租户数据库 + tenantDSN := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local&timeout=10s&readTimeout=30s&writeTimeout=30s&interpolateParams=true&multiStatements=true&allowNativePasswords=true&checkConnLiveness=true", + cfg.Database.User, cfg.Database.Password, cfg.Database.Host, cfg.Database.Port, dbName) + + tenantDB, err := gorm.Open(mysql.Open(tenantDSN), &gorm.Config{}) + if err != nil { + return nil, fmt.Errorf("连接租户数据库失败: %w", err) + } + + // 配置连接池 + sqlDB, err := tenantDB.DB() + if err != nil { + return nil, fmt.Errorf("获取租户数据库连接池失败: %w", err) + } + sqlDB.SetMaxIdleConns(20) // 最大空闲连接数 + sqlDB.SetMaxOpenConns(100) // 最大打开连接数 + sqlDB.SetConnMaxLifetime(10 * time.Minute) // 单个连接最大存活10分钟 + sqlDB.SetConnMaxIdleTime(2 * time.Minute) // 空闲连接2分钟后关闭 + + migrateTenantTables(tenantDB) + + return tenantDB, nil +} + +// migrateTenantTables 迁移租户业务表 +func migrateTenantTables(db *gorm.DB) { + // 迁移所有业务表(不包括 Employee 表,Employee 在主库) + err := db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户表'").AutoMigrate(&models.Customer{}) + if err != nil { + log.Printf("Customer表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存汇总表'").AutoMigrate(&models.Inventory{}) + if err != nil { + log.Printf("Inventory表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存明细表(库位级)'").AutoMigrate(&models.InventoryDetail{}) + if err != nil { + log.Printf("InventoryDetail表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存流水表'").AutoMigrate(&models.InventoryLog{}) + if err != nil { + log.Printf("InventoryLog表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库位表'").AutoMigrate(&models.Location{}) + if err != nil { + log.Printf("Location表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品分类表'").AutoMigrate(&models.ProductCategory{}) + if err != nil { + log.Printf("ProductCategory表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表'").AutoMigrate(&models.Product{}) + if err != nil { + log.Printf("Product表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品单位换算表'").AutoMigrate(&models.ProductUnitConversion{}) + if err != nil { + log.Printf("ProductUnitConversion表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='产品序列号表'").AutoMigrate(&models.ProductSerial{}) + if err != nil { + log.Printf("ProductSerial表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购订单主表'").AutoMigrate(&models.PurchaseOrder{}) + if err != nil { + log.Printf("PurchaseOrder表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购订单明细表'").AutoMigrate(&models.PurchaseOrderItem{}) + if err != nil { + log.Printf("PurchaseOrderItem表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='入库单主表'").AutoMigrate(&models.ReceivingOrder{}) + if err != nil { + log.Printf("ReceivingOrder表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='入库单明细表'").AutoMigrate(&models.ReceivingOrderItem{}) + if err != nil { + log.Printf("ReceivingOrderItem表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商表'").AutoMigrate(&models.Supplier{}) + if err != nil { + log.Printf("Supplier表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售订单主表'").AutoMigrate(&models.SalesOrder{}) + if err != nil { + log.Printf("SalesOrder表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售订单明细表'").AutoMigrate(&models.SalesOrderItem{}) + if err != nil { + log.Printf("SalesOrderItem表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='仓库表'").AutoMigrate(&models.Warehouse{}) + if err != nil { + log.Printf("Warehouse表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='波次单主表'").AutoMigrate(&models.WaveHeader{}) + if err != nil { + log.Printf("WaveHeader表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='波次任务表'").AutoMigrate(&models.WaveTask{}) + if err != nil { + log.Printf("WaveTask表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='波次任务明细表'").AutoMigrate(&models.WaveTaskDetail{}) + if err != nil { + log.Printf("WaveTaskDetail表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='打印任务表'").AutoMigrate(&models.PrintTask{}) + if err != nil { + log.Printf("PrintTask表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='打印日志表'").AutoMigrate(&models.PrintLog{}) + if err != nil { + log.Printf("PrintLog表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小车表'").AutoMigrate(&models.Car{}) + if err != nil { + log.Printf("Car表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小车店铺关联表'").AutoMigrate(&models.CarShop{}) + if err != nil { + log.Printf("CarShop表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='店铺表'").AutoMigrate(&models.Shop{}) + if err != nil { + log.Printf("Shop表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='盘库单主表'").AutoMigrate(&models.StockCheck{}) + if err != nil { + log.Printf("StockCheck表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='盘库单明细表'").AutoMigrate(&models.StockCheckItem{}) + if err != nil { + log.Printf("StockCheckItem表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='外部任务表'").AutoMigrate(&models.OutTask{}) + if err != nil { + log.Printf("OutTask表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='外部任务异常日志表'").AutoMigrate(&models.OutTaskLog{}) + if err != nil { + log.Printf("OutTaskLog表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='出库单主表'").AutoMigrate(&models.OutboundOrder{}) + if err != nil { + log.Printf("OutboundOrder表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='出库单明细表'").AutoMigrate(&models.OutboundOrderItem{}) + if err != nil { + log.Printf("OutboundOrderItem表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发货单主表'").AutoMigrate(&models.ShippingOrder{}) + if err != nil { + log.Printf("ShippingOrder表迁移失败: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发货单明细表'").AutoMigrate(&models.ShippingOrderItem{}) + if err != nil { + log.Printf("ShippingOrderItem表迁移失败: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运费模板表'").AutoMigrate(&models.Logistics{}) + if err != nil { + log.Printf("Logistics表迁移失败: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='统计表'").AutoMigrate(&models.Statist{}) + if err != nil { + log.Printf("Statist表迁移失败: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分账配置表'").AutoMigrate(&models.SplitAccountConfig{}) + if err != nil { + log.Printf("SplitAccountConfig表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分账扣钱日志表'").AutoMigrate(&models.SplitAccountDeductionLog{}) + if err != nil { + log.Printf("SplitAccountDeductionLog表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='出库单库位变更记录表'").AutoMigrate(&models.OutboundOrderLocationLog{}) + if err != nil { + log.Printf("OutboundOrderLocationLog表迁移警告: %v", err) + } + + err = db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配置表'").AutoMigrate(&models.Config{}) + if err != nil { + log.Printf("Config表迁移警告: %v", err) + } + + log.Println("租户业务表迁移完成") + //tableOptions := "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4" + // + //modelsToMigrate := []interface{}{ + // //&models.BookInfo{}, + // &models.Customer{}, + // &models.Inventory{}, + // &models.InventoryDetail{}, + // &models.InventoryLog{}, + // &models.Location{}, + // &models.ProductCategory{}, + // &models.Product{}, + // &models.ProductUnitConversion{}, + // &models.ProductSerial{}, + // &models.PurchaseOrder{}, + // &models.PurchaseOrderItem{}, + // &models.ReceivingOrder{}, + // &models.ReceivingOrderItem{}, + // &models.Supplier{}, + // &models.SalesOrder{}, + // &models.SalesOrderItem{}, + // &models.Warehouse{}, + // &models.WaveHeader{}, + // &models.WaveTask{}, + // &models.WaveTaskDetail{}, + // &models.PrintTask{}, + // &models.PrintLog{}, + // &models.Car{}, + // &models.CarShop{}, + // &models.Shop{}, + // &models.StockCheck{}, + // &models.StockCheckItem{}, + // &models.OutTask{}, + // &models.OutTaskLog{}, + // &models.OutboundOrder{}, + // &models.OutboundOrderItem{}, + //} + // + //for _, model := range modelsToMigrate { + // err := db.Set("gorm:table_options", tableOptions).AutoMigrate(model) + // if err != nil { + // log.Printf("租户表迁移警告: %v", err) + // } + //} +} + +// CloseTenantConnections 关闭所有租户连接(用于优雅关闭) +func CloseTenantConnections() { + tenantManager.mu.Lock() + defer tenantManager.mu.Unlock() + + for aboutID, conn := range tenantManager.connections { + sqlDB, err := conn.DB() + if err == nil { + sqlDB.Close() + } + delete(tenantManager.connections, aboutID) + } + log.Println("所有租户数据库连接已关闭") +} + +// migrateIncrementalTenantTables 增量迁移:补充已有租户数据库可能存在的新表 +func migrateIncrementalTenantTables(db *gorm.DB) { + // 检查 split_account_config 表是否存在,不存在则创建 + if !db.Migrator().HasTable(&models.SplitAccountConfig{}) { + err := db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分账配置表'").AutoMigrate(&models.SplitAccountConfig{}) + if err != nil { + log.Printf("SplitAccountConfig表增量迁移警告: %v", err) + } else { + log.Println("SplitAccountConfig表增量迁移成功") + } + } + + if !db.Migrator().HasTable(&models.SplitAccountDeductionLog{}) { + err := db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分账扣钱日志表'").AutoMigrate(&models.SplitAccountDeductionLog{}) + if err != nil { + log.Printf("SplitAccountDeductionLog表增量迁移警告: %v", err) + } else { + log.Println("SplitAccountDeductionLog表增量迁移成功") + } + } + + if !db.Migrator().HasTable(&models.Config{}) { + err := db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配置表'").AutoMigrate(&models.Config{}) + if err != nil { + log.Printf("Config表增量迁移警告: %v", err) + } else { + log.Println("Config表增量迁移成功") + } + } +} diff --git a/es/es.go b/es/es.go new file mode 100644 index 0000000..7e8301c --- /dev/null +++ b/es/es.go @@ -0,0 +1,162 @@ +package es + +import ( + "crypto/tls" + "encoding/json" + "fmt" + "github.com/elastic/go-elasticsearch/v8" + "net/http" + "strconv" + "strings" + "time" +) + +// BookPicObj 用于 book_pic +type BookPicObj struct { + LocalPath string `json:"localPath"` + PddPath string `json:"pddPath"` +} + +// BookPicSObj 用于 book_pic_s +type BookPicSObj struct { + LocalPath string `json:"localPath"` + PddResponse string `json:"pddResponse"` +} + +// BookDefPicObj 用于 book_def_pic +type BookDefPicObj struct { + LocalPath string `json:"localPath"` + PddPath string `json:"pddPath"` +} +type CatIdObject struct { + PinDuoDuoCatId string `json:"pin_duo_duo_cat_id"` // 拼多多分类 ID + KongFuZiCatId string `json:"kong_fu_zi_cat_id"` // 孔夫子分类 ID + XianYuCatId string `json:"xian_yu_cat_id"` // 闲鱼分类 ID +} + +// FlexibleString 处理可能是字符串或数组的字段 +type FlexibleString struct { + Value string +} + +// MarshalJSON 实现自定义 JSON 序列化 +func (f FlexibleString) MarshalJSON() ([]byte, error) { + return json.Marshal(f.Value) +} + +// UnmarshalJSON 实现自定义 JSON 反序列化 +func (f *FlexibleString) UnmarshalJSON(data []byte) error { + var value string + if err := json.Unmarshal(data, &value); err != nil { + return err + } + f.Value = value + return nil +} + +type NumberOrString string + +func (n *NumberOrString) UnmarshalJSON(data []byte) error { + s := strings.TrimSpace(string(data)) + + // 如果是数字(不以引号开头) + if len(s) > 0 && s[0] != '"' { + *n = NumberOrString(s) + return nil + } + + // 普通字符串 + var str string + if err := json.Unmarshal(data, &str); err != nil { + return err + } + *n = NumberOrString(str) + return nil +} + +type Float64OrString float64 + +func (f *Float64OrString) UnmarshalJSON(b []byte) error { + // 去掉空值 + if string(b) == "null" || len(b) == 0 { + *f = 0 + return nil + } + + // 尝试解析为 float + var num float64 + if err := json.Unmarshal(b, &num); err == nil { + *f = Float64OrString(num) + return nil + } + + // 尝试解析为 string + var str string + if err := json.Unmarshal(b, &str); err == nil { + if str == "" { + *f = 0 + return nil + } + parsed, err := strconv.ParseFloat(str, 64) + if err != nil { + return err + } + *f = Float64OrString(parsed) + return nil + } + + return fmt.Errorf("无法解析 fix_price: %s", string(b)) +} + +// ESClient 封装 Elasticsearch 客户端 +type ESClient struct { + Client *elasticsearch.Client +} + +var DefaultClient *ESClient + +// Init 初始化默认 ES 客户端 +func Init(addresses []string, username, password string) error { + client, err := NewESClient(addresses, username, password) + if err != nil { + return err + } + DefaultClient = client + return nil +} + +// NewESClient 初始化客户端 +func NewESClient(addresses []string, username, password string) (*ESClient, error) { + + cfg := elasticsearch.Config{ + Addresses: addresses, + Username: username, + Password: password, + Transport: &http.Transport{ + TLSClientConfig: &tls.Config{ + InsecureSkipVerify: true, + }, + MaxIdleConnsPerHost: 100, + ResponseHeaderTimeout: 60 * time.Second, + }, + CompressRequestBody: true, + } + + client, err := elasticsearch.NewClient(cfg) + if err != nil { + return nil, fmt.Errorf("创建 ES 客户端失败: %v", err) + } + + res, err := client.Info() + if err != nil { + return nil, fmt.Errorf("ES 连接失败: %v", err) + } + defer res.Body.Close() + + if res.IsError() { + return nil, fmt.Errorf("ES 返回错误: %s", res.String()) + } + + fmt.Println("✅ Elasticsearch 连接成功") + return &ESClient{Client: client}, nil +} diff --git a/fonts/youaimoshouheiti-regular.ttf b/fonts/youaimoshouheiti-regular.ttf new file mode 100644 index 0000000..2971537 Binary files /dev/null and b/fonts/youaimoshouheiti-regular.ttf differ diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..1a05a48 --- /dev/null +++ b/go.mod @@ -0,0 +1,70 @@ +module psi + +go 1.25.7 + +require ( + github.com/boombuler/barcode v1.1.0 + github.com/elastic/go-elasticsearch/v8 v8.19.3 + github.com/gin-gonic/gin v1.11.0 + github.com/go-playground/validator/v10 v10.30.1 + github.com/golang-jwt/jwt/v5 v5.3.1 + github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible + github.com/pkg/errors v0.9.1 + github.com/sirupsen/logrus v1.9.4 + github.com/xuri/excelize/v2 v2.10.1 + golang.org/x/crypto v0.48.0 + golang.org/x/image v0.39.0 + gopkg.in/yaml.v3 v3.0.1 + gorm.io/datatypes v1.2.7 + gorm.io/driver/mysql v1.6.0 + gorm.io/gorm v1.31.1 +) + +require ( + filippo.io/edwards25519 v1.2.0 // indirect + github.com/bytedance/gopkg v0.1.3 // indirect + github.com/bytedance/sonic v1.15.0 // indirect + github.com/bytedance/sonic/loader v0.5.0 // indirect + github.com/cloudwego/base64x v0.1.6 // indirect + github.com/elastic/elastic-transport-go/v8 v8.8.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.13 // indirect + github.com/gin-contrib/sse v1.1.0 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-sql-driver/mysql v1.9.3 // indirect + github.com/goccy/go-json v0.10.5 // indirect + github.com/goccy/go-yaml v1.19.2 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/jonboulle/clockwork v0.5.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/leodido/go-urn v1.4.0 // indirect + github.com/lestrrat-go/strftime v1.1.1 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pelletier/go-toml/v2 v2.2.4 // indirect + github.com/quic-go/qpack v0.6.0 // indirect + github.com/quic-go/quic-go v0.59.0 // indirect + github.com/richardlehane/mscfb v1.0.6 // indirect + github.com/richardlehane/msoleps v1.0.6 // indirect + github.com/tiendc/go-deepcopy v1.7.2 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.3.1 // indirect + github.com/xuri/efp v0.0.1 // indirect + github.com/xuri/nfp v0.0.2-0.20250530014748-2ddeb826f9a9 // indirect + go.opentelemetry.io/otel v1.28.0 // indirect + go.opentelemetry.io/otel/metric v1.28.0 // indirect + go.opentelemetry.io/otel/trace v1.28.0 // indirect + go.uber.org/mock v0.6.0 // indirect + golang.org/x/arch v0.24.0 // indirect + golang.org/x/net v0.51.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.36.0 // indirect + google.golang.org/protobuf v1.36.11 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..a2b8591 --- /dev/null +++ b/go.sum @@ -0,0 +1,183 @@ +filippo.io/edwards25519 v1.2.0 h1:crnVqOiS4jqYleHd9vaKZ+HKtHfllngJIiOpNpoJsjo= +filippo.io/edwards25519 v1.2.0/go.mod h1:xzAOLCNug/yB62zG1bQ8uziwrIqIuxhctzJT18Q77mc= +github.com/boombuler/barcode v1.1.0 h1:ChaYjBR63fr4LFyGn8E8nt7dBSt3MiU3zMOZqFvVkHo= +github.com/boombuler/barcode v1.1.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M= +github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM= +github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uSE= +github.com/bytedance/sonic v1.15.0/go.mod h1:tFkWrPz0/CUCLEF4ri4UkHekCIcdnkqXw9VduqpJh0k= +github.com/bytedance/sonic/loader v0.5.0 h1:gXH3KVnatgY7loH5/TkeVyXPfESoqSBSBEiDd5VjlgE= +github.com/bytedance/sonic/loader v0.5.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo= +github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= +github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/elastic/elastic-transport-go/v8 v8.8.0 h1:7k1Ua+qluFr6p1jfJjGDl97ssJS/P7cHNInzfxgBQAo= +github.com/elastic/elastic-transport-go/v8 v8.8.0/go.mod h1:YLHer5cj0csTzNFXoNQ8qhtGY1GTvSqPnKWKaqQE3Hk= +github.com/elastic/go-elasticsearch/v8 v8.19.3 h1:5LDg0hfGJXBa9Y+2QlUgRTsNJ/7rm7oNidydtFAq0LI= +github.com/elastic/go-elasticsearch/v8 v8.19.3/go.mod h1:tHJQdInFa6abmDbDCEH2LJja07l/SIpaGpJcm13nt7s= +github.com/gabriel-vasile/mimetype v1.4.13 h1:46nXokslUBsAJE/wMsp5gtO500a4F3Nkz9Ufpk2AcUM= +github.com/gabriel-vasile/mimetype v1.4.13/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= +github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w= +github.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM= +github.com/gin-gonic/gin v1.11.0 h1:OW/6PLjyusp2PPXtyxKHU0RbX6I/l28FTdDlae5ueWk= +github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.30.1 h1:f3zDSN/zOma+w6+1Wswgd9fLkdwy06ntQJp0BBvFG0w= +github.com/go-playground/validator/v10 v10.30.1/go.mod h1:oSuBIQzuJxL//3MelwSLD5hc2Tu889bF0Idm9Dg26cM= +github.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo= +github.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= +github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= +github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM= +github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= +github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= +github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= +github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9 h1:L0QtFUgDarD7Fpv9jeVMgy/+Ec0mtnmYuImjTz6dtDA= +github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.5.5 h1:amBjrZVmksIdNjxGW/IiIMzxMKZFelXbUoPNb+8sjQw= +github.com/jackc/pgx/v5 v5.5.5/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A= +github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= +github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= +github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc h1:RKf14vYWi2ttpEmkA4aQ3j4u9dStX2t4M8UM6qqNsG8= +github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc/go.mod h1:kopuH9ugFRkIXf3YoqHKyrJ9YfUFsckUU9S7B+XP+is= +github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible h1:Y6sqxHMyB1D2YSzWkLibYKgg+SwmyFU9dF2hn6MdTj4= +github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible/go.mod h1:ZQnN8lSECaebrkQytbHj4xNgtg8CR7RYXnPok8e0EHA= +github.com/lestrrat-go/strftime v1.1.1 h1:zgf8QCsgj27GlKBy3SU9/8MMgegZ8UCzlCyHYrUF0QU= +github.com/lestrrat-go/strftime v1.1.1/go.mod h1:YDrzHJAODYQ+xxvrn5SG01uFIQAeDTzpxNVppCz7Nmw= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/microsoft/go-mssqldb v1.7.2 h1:CHkFJiObW7ItKTJfHo1QX7QBBD1iV+mn1eOyRP3b/PA= +github.com/microsoft/go-mssqldb v1.7.2/go.mod h1:kOvZKUdrhhFQmxLZqbwUV0rHkNkZpthMITIb2Ko1IoA= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= +github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8= +github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII= +github.com/quic-go/quic-go v0.59.0 h1:OLJkp1Mlm/aS7dpKgTc6cnpynnD2Xg7C1pwL6vy/SAw= +github.com/quic-go/quic-go v0.59.0/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= +github.com/richardlehane/mscfb v1.0.6 h1:eN3bvvZCp00bs7Zf52bxNwAx5lJDBK1tCuH19qq5aC8= +github.com/richardlehane/mscfb v1.0.6/go.mod h1:pe0+IUIc0AHh0+teNzBlJCtSyZdFOGgV4ZK9bsoV+Jo= +github.com/richardlehane/msoleps v1.0.6 h1:9BvkpjvD+iUBalUY4esMwv6uBkfOip/Lzvd93jvR9gg= +github.com/richardlehane/msoleps v1.0.6/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= +github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/tiendc/go-deepcopy v1.7.2 h1:Ut2yYR7W9tWjTQitganoIue4UGxZwCcJy3orjrrIj44= +github.com/tiendc/go-deepcopy v1.7.2/go.mod h1:4bKjNC2r7boYOkD2IOuZpYjmlDdzjbpTRyCx+goBCJQ= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go/codec v1.3.1 h1:waO7eEiFDwidsBN6agj1vJQ4AG7lh2yqXyOXqhgQuyY= +github.com/ugorji/go/codec v1.3.1/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4= +github.com/xuri/efp v0.0.1 h1:fws5Rv3myXyYni8uwj2qKjVaRP30PdjeYe2Y6FDsCL8= +github.com/xuri/efp v0.0.1/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI= +github.com/xuri/excelize/v2 v2.10.1 h1:V62UlqopMqha3kOpnlHy2CcRVw1V8E63jFoWUmMzxN0= +github.com/xuri/excelize/v2 v2.10.1/go.mod h1:iG5tARpgaEeIhTqt3/fgXCGoBRt4hNXgCp3tfXKoOIc= +github.com/xuri/nfp v0.0.2-0.20250530014748-2ddeb826f9a9 h1:+C0TIdyyYmzadGaL/HBLbf3WdLgC29pgyhTjAT/0nuE= +github.com/xuri/nfp v0.0.2-0.20250530014748-2ddeb826f9a9/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ= +go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= +go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= +go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= +go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= +go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= +go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= +go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= +go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= +go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= +go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= +golang.org/x/arch v0.24.0 h1:qlJ3M9upxvFfwRM51tTg3Yl+8CP9vCC1E7vlFpgv99Y= +golang.org/x/arch v0.24.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/image v0.39.0 h1:skVYidAEVKgn8lZ602XO75asgXBgLj9G/FE3RbuPFww= +golang.org/x/image v0.39.0/go.mod h1:sIbmppfU+xFLPIG0FoVUTvyBMmgng1/XAMhQ2ft0hpA= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/datatypes v1.2.7 h1:ww9GAhF1aGXZY3EB3cJPJ7//JiuQo7DlQA7NNlVaTdk= +gorm.io/datatypes v1.2.7/go.mod h1:M2iO+6S3hhi4nAyYe444Pcb0dcIiOMJ7QHaUXxyiNZY= +gorm.io/driver/mysql v1.6.0 h1:eNbLmNTpPpTOVZi8MMxCi2aaIm0ZpInbORNXDwyLGvg= +gorm.io/driver/mysql v1.6.0/go.mod h1:D/oCC2GWK3M/dqoLxnOlaNKmXz8WNTfcS9y5ovaSqKo= +gorm.io/driver/postgres v1.5.0 h1:u2FXTy14l45qc3UeCJ7QaAXZmZfDDv0YrthvmRq1l0U= +gorm.io/driver/postgres v1.5.0/go.mod h1:FUZXzO+5Uqg5zzwzv4KK49R8lvGIyscBOqYrtI1Ce9A= +gorm.io/driver/sqlite v1.6.0 h1:WHRRrIiulaPiPFmDcod6prc4l2VGVWHz80KspNsxSfQ= +gorm.io/driver/sqlite v1.6.0/go.mod h1:AO9V1qIQddBESngQUKWL9yoH93HIeA1X6V633rBwyT8= +gorm.io/driver/sqlserver v1.6.0 h1:VZOBQVsVhkHU/NzNhRJKoANt5pZGQAS1Bwc6m6dgfnc= +gorm.io/driver/sqlserver v1.6.0/go.mod h1:WQzt4IJo/WHKnckU9jXBLMJIVNMVeTu25dnOzehntWw= +gorm.io/gorm v1.31.1 h1:7CA8FTFz/gRfgqgpeKIBcervUn3xSyPUmr6B2WXJ7kg= +gorm.io/gorm v1.31.1/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs= diff --git a/linux/go_build_main_go_linux_linux b/linux/go_build_main_go_linux_linux new file mode 100644 index 0000000..b0e8e09 Binary files /dev/null and b/linux/go_build_main_go_linux_linux differ diff --git a/main.go b/main.go new file mode 100644 index 0000000..7cf2e18 --- /dev/null +++ b/main.go @@ -0,0 +1,43 @@ +package main + +import ( + "log" + "psi/config" + "psi/database" + router "psi/routes" + "psi/utils" +) + +func main() { + log.Println("=== PSI 服务启动中 ===") + + // 初始化配置 + log.Println("[1/4] 初始化配置...") + config.Init() + log.Println("[1/4] 配置初始化完成") + + // 初始化日志 + log.Println("[2/4] 初始化日志...") + if err := utils.InitLogger(); err != nil { + log.Printf("[2/4] 日志初始化失败: %v", err) + } else { + log.Println("[2/4] 日志初始化完成") + } + + // 初始化数据库 + log.Println("[3/4] 初始化数据库...") + database.Init() + log.Println("[3/4] 数据库初始化完成") + + // 初始化 Elasticsearch + //esConfig := config.AppConfig.ES + //_ = es.Init([]string{esConfig.Host}, esConfig.Username, esConfig.Password) + // 启动 OCR 服务 + //go func() { + // ocr.StartService() + //}() + + // 设置路由并启动服务器 + log.Printf("[4/4] 启动服务器,端口: %s...", config.AppConfig.Server.Port) + router.Run() +} diff --git a/middleware/auth.go b/middleware/auth.go new file mode 100644 index 0000000..3277e5b --- /dev/null +++ b/middleware/auth.go @@ -0,0 +1,116 @@ +package middleware + +import ( + "github.com/gin-gonic/gin" + "net/http" + "psi/database" + "psi/models" + "psi/utils" + "strings" +) + +// JWTAuth JWT认证中间件 +func JWTAuth() gin.HandlerFunc { + // 处理JWT认证 + return func(c *gin.Context) { + // 检查认证头 + authHeader := c.GetHeader("Authorization") + // 检查认证头是否为空 + if authHeader == "" { + // 返回错误 + c.JSON(http.StatusUnauthorized, gin.H{"error": "未提供认证令牌"}) + // 中断处理 + c.Abort() + // 返回 + return + } + + // 提取令牌 + parts := strings.SplitN(authHeader, " ", 2) + // 处理错误 + if !(len(parts) == 2 && parts[0] == "Bearer") { + // 返回错误 + c.JSON(http.StatusUnauthorized, gin.H{"error": "认证格式错误"}) + // 中断处理 + c.Abort() + // 返回 + return + } + // 解析JWT + claims, err := utils.ParseJWT(parts[1]) + // 处理错误 + if err != nil { + // 返回错误 + c.JSON(http.StatusUnauthorized, gin.H{"error": "无效的认证令牌"}) + // 中断处理 + c.Abort() + // 返回 + return + } + // 判断是员工还是用户 + if claims.ID > 0 { + // 检查员工状态 + var employee models.Employee + // 查询员工 + if err := database.DB.Where("id = ? AND status = ? AND deleted_at = ?", claims.ID, 1, 0).First(&employee).Error; + // 处理错误 + err != nil { + // 返回错误 + c.JSON(http.StatusUnauthorized, gin.H{"error": "账号不存在或已被禁用"}) + // 中断处理 + c.Abort() + // 返回 + return + } + + // 将员工信息存入上下文 + c.Set("id", employee.ID) // 设置员工ID + c.Set("role", employee.Role) // 设置角色 + c.Set("username", employee.Username) // 设置用户名 + c.Set("employee", employee) // 添加员工信息 + c.Set("about_id", claims.AboutID) // 租户ID + c.Set("fid", employee.Fid) // 父级ID + + // 如果有租户ID,获取租户数据库连接并存入上下文 + if claims.AboutID > 0 { + tenantDB, err := database.GetTenantDB(claims.AboutID) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "租户数据库连接失败"}) + c.Abort() + return + } + c.Set("tenant_db", tenantDB) + } + } else { + // 无效的身份 + c.JSON(http.StatusUnauthorized, gin.H{"error": "无效的身份标识"}) + // 中断处理 + c.Abort() + // 返回 + return + } + + // 继续处理 + c.Next() + } +} + +// AdminRequired 管理员权限 +func AdminRequired() gin.HandlerFunc { + // 处理管理员权限 + return func(c *gin.Context) { + // 检查角色 + role, exists := c.Get("role") + // 处理错误 + if !exists || role.(int64) != 255 { + // 返回错误 + c.JSON(http.StatusForbidden, gin.H{"error": "需要管理员权限"}) + // 中断处理 + c.Abort() + // 返回 + return + } + // 继续处理 + c.Next() + } +} diff --git a/middleware/cors.go b/middleware/cors.go new file mode 100644 index 0000000..1651b33 --- /dev/null +++ b/middleware/cors.go @@ -0,0 +1,24 @@ +package middleware + +import ( + "github.com/gin-gonic/gin" +) + +// Cors 跨域中间件 +func Cors() gin.HandlerFunc { + // 处理CORS请求 + return func(c *gin.Context) { + c.Writer.Header().Set("Access-Control-Allow-Origin", "*") // 允许所有源 + c.Writer.Header().Set("Access-Control-Allow-Credentials", "true") // 允许携带cookie + c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With") // 允许的请求头 + c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT, DELETE, PATCH") // 允许的请求方法 + + // 处理OPTIONS请求 + if c.Request.Method == "OPTIONS" { + c.AbortWithStatus(204) // 返回204 + return + } + // 处理正常请求 + c.Next() + } +} diff --git a/middleware/sign.go b/middleware/sign.go new file mode 100644 index 0000000..5f9a9db --- /dev/null +++ b/middleware/sign.go @@ -0,0 +1,260 @@ +package middleware + +import ( + "crypto/md5" + "crypto/sha256" + "encoding/hex" + "fmt" + "github.com/gin-gonic/gin" + "net/http" + "psi/config" + "regexp" + "sort" + "strconv" + "strings" + "time" +) + +// APISign API签名验证中间件 +func APISign() gin.HandlerFunc { + return func(c *gin.Context) { + // 获取签名相关参数 + appKey := c.Query("app_key") + clientId := c.Query("client_id") + sign := c.Query("sign") + signMethod := c.Query("sign_method") + timestamp := c.Query("timestamp") + if appKey == "" { + appKey = c.PostForm("app_key") + } + if clientId == "" { + clientId = c.PostForm("client_id") + } + if sign == "" { + sign = c.PostForm("sign") + } + if signMethod == "" { + signMethod = c.PostForm("sign_method") + } + if timestamp == "" { + timestamp = c.PostForm("timestamp") + } + // 验证必填参数 + if appKey == "" { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "缺少app_key参数", + }) + c.Abort() + return + } + + if clientId == "" { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "缺少client_id参数", + }) + c.Abort() + return + } + + if sign == "" { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "缺少sign参数", + }) + c.Abort() + return + } + + if timestamp == "" { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "缺少timestamp参数", + }) + c.Abort() + return + } + + // 验证app_key + if appKey != config.AppConfig.APISign.AppKey { + c.JSON(http.StatusUnauthorized, gin.H{ + "error": "无效的app_key", + }) + c.Abort() + return + } + + // 验证client_id + if clientId != config.AppConfig.APISign.ClientId { + c.JSON(http.StatusUnauthorized, gin.H{ + "error": "无效的client_id", + }) + c.Abort() + return + } + + // 验证时间戳(防止重放攻击) + ts, err := strconv.ParseInt(timestamp, 10, 64) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "时间戳格式错误", + }) + c.Abort() + return + } + + currentTime := time.Now().Unix() + timeDiff := currentTime - ts + + // 检查时间戳是否在允许范围内(默认300秒) + tolerance := int64(config.AppConfig.APISign.TimestampTolerance) + if tolerance <= 0 { + tolerance = 300 // 默认5分钟 + } + + if timeDiff > tolerance || timeDiff < -tolerance { + c.JSON(http.StatusUnauthorized, gin.H{ + "error": "请求已过期,请检查系统时间", + }) + c.Abort() + return + } + + // 验证签名方法 + if signMethod == "" { + signMethod = config.AppConfig.APISign.SignMethod + } + if signMethod != "md5" && signMethod != "sha256" { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "不支持的签名方法", + }) + c.Abort() + return + } + + // 计算签名 + calculatedSign, err := calculateSign(c, signMethod) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": "签名计算失败", + }) + c.Abort() + return + } + // 验证签名 + if calculatedSign != sign { + c.JSON(http.StatusUnauthorized, gin.H{ + "error": "签名验证失败", + }) + c.Abort() + return + } + + c.Next() + } +} + +// calculateSign 计算签名 +func calculateSign(c *gin.Context, signMethod string) (string, error) { + // 收集所有参数 + params := make(map[string]string) + + // 获取URL查询参数 + for key, values := range c.Request.URL.Query() { + // 跳过sign参数本身 + if key == "sign" { + continue + } + if len(values) > 0 { + params[key] = values[0] + } + } + + // 如果是POST、PUT请求,获取表单参数 + if c.Request.Method == "POST" || c.Request.Method == "PUT" || c.Request.Method == "DELETE" { + c.Request.ParseForm() + for key, values := range c.Request.PostForm { + // 跳过sign参数本身 + if key == "sign" { + continue + } + if len(values) > 0 { + // 如果是数组参数,用逗号拼接所有值 + if len(values) > 1 { + params[key] = strings.Join(values, ",") + } else { + params[key] = values[0] + } + } + } + } + // 提取所有键并排序 + keys := make([]string, 0, len(params)) + for key := range params { + keys = append(keys, key) + } + sortKeysWithIndex(keys) + + // 构建签名字符串:key1=value1&key2=value2... + var signStrings []string + for _, key := range keys { + signStrings = append(signStrings, fmt.Sprintf("%s=%s", key, params[key])) + } + signStr := strings.Join(signStrings, "&") + //fmt.Println("signStr: %s", signStr) + // 在字符串前后添加secret + appSecret := config.AppConfig.APISign.AppSecret + signStr = appSecret + signStr + appSecret + // 根据签名方法计算哈希 + var hash []byte + switch signMethod { + case "md5": + md5Hash := md5.Sum([]byte(signStr)) + hash = md5Hash[:] + case "sha256": + sha256Hash := sha256.Sum256([]byte(signStr)) + hash = sha256Hash[:] + default: + return "", fmt.Errorf("不支持的签名方法: %s", signMethod) + } + + // 转换为大写十六进制字符串 + return strings.ToUpper(hex.EncodeToString(hash)), nil +} + +// sortKeysWithIndex 对参数键进行智能排序,处理带索引的数组参数 +func sortKeysWithIndex(keys []string) { + // 正则表达式匹配带索引的键,如 items[0][product_id] + indexPattern := regexp.MustCompile(`^(.+)\[(\d+)\](.*)$`) + + sort.Slice(keys, func(i, j int) bool { + keyI := keys[i] + keyJ := keys[j] + + matchI := indexPattern.FindStringSubmatch(keyI) + matchJ := indexPattern.FindStringSubmatch(keyJ) + + // 如果两个都是带索引的键 + if matchI != nil && matchJ != nil { + prefixI, idxIStr, suffixI := matchI[1], matchI[2], matchI[3] + prefixJ, idxJStr, suffixJ := matchJ[1], matchJ[2], matchJ[3] + + // 先比较前缀(如 items) + if prefixI != prefixJ { + return prefixI < prefixJ + } + + // 前缀相同,比较索引(数值比较) + idxI, errI := strconv.Atoi(idxIStr) + idxJ, errJ := strconv.Atoi(idxJStr) + + if errI == nil && errJ == nil { + if idxI != idxJ { + return idxI < idxJ + } + // 索引相同,比较后缀(如 [product_id]) + return suffixI < suffixJ + } + } + + // 至少有一个不是带索引的键,使用默认字典序 + return keyI < keyJ + }) +} diff --git a/models/book_info.go b/models/book_info.go new file mode 100644 index 0000000..0c9b713 --- /dev/null +++ b/models/book_info.go @@ -0,0 +1,32 @@ +package models + +import "gorm.io/datatypes" + +// BookInfo 书籍信息表 +type BookInfo struct { + ID int64 `json:"id" gorm:"primarykey;comment:自增ID"` + Fid int64 `json:"fid" gorm:"not null;default:0;comment:父级ID"` + Type int8 `json:"type" gorm:"not null;comment:类型 1正常 2套装书 3 一号多书 4无书号"` + ISBN string `json:"isbn" gorm:"size:20;not null;default:'';comment:ISBN;index:idx_isbn"` + FISBN string `json:"f_isbn" gorm:"size:20;not null;default:'';comment:FISBN;"` + BookName string `json:"book_name" gorm:"size:100;not null;default:'';comment:书名"` + FBookName string `json:"f_book_name" gorm:"size:100;not null;default:'';comment:副书名"` + Author string `json:"author" gorm:"size:100;not null;default:'';comment:作者"` + Publishing string `json:"publishing" gorm:"size:50;not null;default:'';comment:出版社"` + PublicationTime int64 `json:"publication_time" gorm:"type:bigint;not null;default:0;comment:出版日期时间戳"` + Binding string `json:"binding" gorm:"size:10;not null;default:'';comment:装帧"` + PagesCount int64 `json:"pages_count" gorm:"not null;default:0;comment:页数"` + WordsCount int64 `json:"words_count" gorm:"not null;default:0;comment:字数"` + Format int64 `json:"format" gorm:"not null;default:0;comment:开本"` + Price int64 `json:"price" gorm:"not null;default:0;comment:价格"` + CatID datatypes.JSON `json:"cat_id" gorm:"type:json;not null;comment:类目json"` + LiveImage datatypes.JSON `json:"live_image" gorm:"column:live_image;type:json;not null;comment:实拍图json"` +} + +func (BookInfo) TableName() string { + return "book_info" +} + +func (BookInfo) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='书籍信息表'" +} diff --git a/models/car.go b/models/car.go new file mode 100644 index 0000000..b0bb0f8 --- /dev/null +++ b/models/car.go @@ -0,0 +1,24 @@ +package models + +// Car 小车表 +type Car struct { + ID int64 `json:"id" gorm:"primarykey;comment:小车ID"` + WarehouseID int64 `json:"warehouse_id" gorm:"not null;default:0;index;comment:所属仓库ID"` + PushType int8 `json:"push_type" gorm:"type:tinyint(1);not null;default:1;comment:推送类型(1:创建波次后随即上架,2:入库后在上架)"` + ReleaseType int8 `json:"release_type" gorm:"type:tinyint(1);not null;default:1;comment:发布类型(1:独立库存,2:合并库存)"` + Code int64 `json:"code" gorm:"not null;default:0;comment:小车编号"` + Name string `json:"name" gorm:"size:50;not null;default:'';comment:小车名称"` + Capacity int64 `json:"capacity" gorm:"not null;default:0;comment:容量"` + Appearance int64 `json:"appearance" gorm:"type:bigint(20) unsigned;not null;default:0;comment:品相"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (Car) TableName() string { + return "car" +} + +func (Car) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小车表'" +} diff --git a/models/car_shop.go b/models/car_shop.go new file mode 100644 index 0000000..32b4da2 --- /dev/null +++ b/models/car_shop.go @@ -0,0 +1,24 @@ +package models + +// CarShop 小车店铺关联表 +type CarShop struct { + ID int64 `json:"id" gorm:"primarykey;comment:关联ID"` + CarID int64 `json:"car_id" gorm:"not null;default:0;comment:小车id"` + ShopID int64 `json:"shop_id" gorm:"not null;default:0;comment:店铺id"` + ShopName string `json:"shop_name" gorm:"size:50;not null;default:'';comment:店铺名称"` + ShopType int8 `json:"shop_type" gorm:"type:tinyint(1);not null;default:0;comment:店铺类型"` + ClientID string `json:"client_id" gorm:"size:50;not null;comment:客户端id"` + AppKey string `json:"app_key" gorm:"size:255;not null;default:'';comment:app_key"` + AppSecret string `json:"app_secret" gorm:"size:255;not null;default:'';comment:app_secret"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (CarShop) TableName() string { + return "car_shop" +} + +func (CarShop) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小车店铺关联表'" +} diff --git a/models/config.go b/models/config.go new file mode 100644 index 0000000..505250a --- /dev/null +++ b/models/config.go @@ -0,0 +1,19 @@ +package models + +// Config 配置表 +type Config struct { + ID int64 `json:"id" gorm:"primarykey;comment:配置ID"` + Key string `json:"key" gorm:"size:200;not null;default:'';uniqueIndex:uk_key;comment:配置键"` + Value string `json:"value" gorm:"type:text;comment:配置值"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (Config) TableName() string { + return "config" +} + +func (Config) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配置表'" +} diff --git a/models/customer.go b/models/customer.go new file mode 100644 index 0000000..34703d8 --- /dev/null +++ b/models/customer.go @@ -0,0 +1,23 @@ +package models + +// Customer 客户表 +type Customer struct { + ID int64 `json:"id" gorm:"primarykey;comment:客户ID"` + Code string `json:"code" gorm:"size:50;not null;default:'';uniqueIndex:uk_code;comment:客户编码"` + Name string `json:"name" gorm:"size:200;not null;default:'';comment:客户名称"` + ContactPerson string `json:"contact_person" gorm:"size:50;default:'';comment:联系人"` + ContactPhone string `json:"contact_phone" gorm:"size:20;default:'';comment:联系电话"` + Address string `json:"address" gorm:"size:255;default:'';comment:地址"` + Status int8 `json:"status" gorm:"type:tinyint(1);default:1;comment:状态(0:禁用,1:启用)"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (Customer) TableName() string { + return "customer" +} + +func (Customer) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户表'" +} diff --git a/models/employee.go b/models/employee.go new file mode 100644 index 0000000..1994fc1 --- /dev/null +++ b/models/employee.go @@ -0,0 +1,33 @@ +package models + +// Employee 员工 +type Employee struct { + ID int64 `json:"id" gorm:"primarykey;comment:自增ID"` + EmployeeIDStr string `json:"employee_id_str" gorm:"size:10;not null;uniqueIndex"` // 工号 + Fid int64 `json:"fid" gorm:"not null;default:0;comment:父级id"` + AboutId int64 `json:"about_id" gorm:"not null;default:0;comment:关联id"` + Code string `json:"code" gorm:"size:64;not null;default:'';comment:机械码"` + Username string `json:"username" gorm:"size:50;not null;default:'';comment:登录账号 (init_工号)"` + Password string `json:"password" gorm:"size:100;not null;default:'';comment:密码"` + Name string `json:"name" gorm:"size:50;not null;default:'';comment:姓名"` + Phone string `json:"phone" gorm:"size:11;not null;default:'';comment:手机号"` + Role int64 `json:"role" gorm:"not null;default:0;comment:权限"` + Status int8 `json:"status" gorm:"not null;default:1;comment:状态 1正常 0禁用"` + Score int64 `json:"score" gorm:"not null;default:0;comment:积分"` + From string `json:"from" gorm:"size:50;not null;default:'';comment:来源"` + TypeId int8 `json:"type_id" gorm:"not null;default:0;comment:关联类型"` + LastLoginAt int64 `json:"last_login_at" gorm:"not null;default:0;comment:最后登录时间"` + LastLoginIP string `json:"last_login_ip" gorm:"size:20;not null;default:'';comment:最后登录ip"` + CreatedAt int64 `json:"created_at" gorm:"not null;default:0;comment:创建时间"` + UpdatedAt int64 `json:"updated_at" gorm:"not null;default:0;comment:更新时间"` + DeletedAt int64 `json:"deleted_at" gorm:"not null;default:0;comment:删除时间"` + ExpireTime int64 `json:"expire_time" gorm:"not null;default:0;comment:过期时间"` +} + +func (Employee) TableName() string { + return "employees" +} + +func (Employee) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工表'" +} diff --git a/models/employee_level.go b/models/employee_level.go new file mode 100644 index 0000000..c5aa48b --- /dev/null +++ b/models/employee_level.go @@ -0,0 +1,22 @@ +package models + +// EmployeeLevel 员工等级 +type EmployeeLevel struct { + ID int64 `json:"id" gorm:"primarykey;comment:自增ID"` + EmpId int64 `json:"emp_id" gorm:"not null;default:0;comment:员工id"` + MaxNum int64 `json:"max_num" gorm:"not null;default:0;comment:最大数量"` + Level int8 `json:"level" gorm:"not null;default:0;comment:等级"` + PayTime int64 `json:"pay_time" gorm:"not null;default:0;comment:最新支付时间"` + ExpireTime int64 `json:"expire_time" gorm:"not null;default:0;comment:到期时间"` + CreatedAt int64 `json:"created_at" gorm:"not null;default:0;comment:创建时间"` + UpdatedAt int64 `json:"updated_at" gorm:"not null;default:0;comment:更新时间"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (EmployeeLevel) TableName() string { + return "employees_level" +} + +func (EmployeeLevel) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工等级表'" +} diff --git a/models/employee_level_log.go b/models/employee_level_log.go new file mode 100644 index 0000000..e4662fd --- /dev/null +++ b/models/employee_level_log.go @@ -0,0 +1,29 @@ +package models + +// EmployeeLevelLog 员工等级变更日志表 +type EmployeeLevelLog struct { + ID int64 `json:"id" gorm:"primarykey;comment:日志ID"` + EmpId int64 `json:"emp_id" gorm:"not null;default:0;index;comment:员工ID"` + OperationType int8 `json:"operation_type" gorm:"not null;default:1;comment:操作类型(1:开通,2:升级,3:续费)"` + OldLevel int8 `json:"old_level" gorm:"not null;default:0;comment:原等级"` + NewLevel int8 `json:"new_level" gorm:"not null;default:0;comment:新等级"` + OldMaxNum int64 `json:"old_max_num" gorm:"not null;default:0;comment:原子账号数量上限"` + NewMaxNum int64 `json:"new_max_num" gorm:"not null;default:0;comment:新子账号数量上限"` + OldExpireTime int64 `json:"old_expire_time" gorm:"not null;default:0;comment:原到期时间"` + NewExpireTime int64 `json:"new_expire_time" gorm:"not null;default:0;comment:新到期时间"` + Price int64 `json:"price" gorm:"not null;default:0;comment:价格(单位:分)"` + PayTime int64 `json:"pay_time" gorm:"not null;default:0;comment:支付时间"` + OperatorID int64 `json:"operator_id" gorm:"not null;default:0;comment:操作人ID"` + OperatorName string `json:"operator_name" gorm:"size:50;not null;default:'';comment:操作人姓名"` + Remark string `json:"remark" gorm:"size:255;not null;default:'';comment:备注"` + CreatedAt int64 `json:"created_at" gorm:"not null;default:0;index;comment:创建时间戳"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (EmployeeLevelLog) TableName() string { + return "employees_level_log" +} + +func (EmployeeLevelLog) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工等级变更日志表'" +} diff --git a/models/employee_settings.go b/models/employee_settings.go new file mode 100644 index 0000000..93b9a0f --- /dev/null +++ b/models/employee_settings.go @@ -0,0 +1,87 @@ +package models + +// EmployeeSettings 员工设置表 +type EmployeeSettings struct { + ID int64 `json:"id" gorm:"primarykey;comment:自增ID"` + EmpID int64 `json:"emp_id" gorm:"not null;default:0;uniqueIndex;comment:员工ID(关联employees.id)"` + Settings string `json:"settings" gorm:"type:text;not null;comment:员工配置(JSON格式)"` + CreatedAt int64 `json:"created_at" gorm:"not null;default:0;comment:创建时间"` + UpdatedAt int64 `json:"updated_at" gorm:"not null;default:0;comment:更新时间"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (EmployeeSettings) TableName() string { + return "employees_settings" +} + +func (EmployeeSettings) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工设置表'" +} + +// EmployeeSettingsConfig 员工配置结构体(JSON格式) +type EmployeeSettingsConfig struct { + // 筛选配置 + ShowPrice int8 `form:"show_price" json:"show_price"` // 比价结果开关 + ShowCategory int8 `form:"show_category" json:"show_category"` // 市场竞争开关 + ShowCache int8 `form:"show_cache" json:"show_cache"` // 缓存开启 + CompareCount int8 `form:"compare_count" json:"compare_count"` // 比较条数 + CompareCountEditable int8 `form:"compare_count_editable" json:"compare_count_editable"` // 比较条数是否可编辑 + PriceCompare string `form:"price_compare" json:"price_compare"` // 价格比较符号 + PriceValue float64 `form:"price_value" json:"price_value"` // 价格数值 + PriceEditable int8 `form:"price_editable" json:"price_editable"` // 比较条数是否可编辑 + SellCountCompare string `form:"sell_count_compare" json:"sell_count_compare"` // 在售数量比较符号 + SellCountValue float64 `form:"sell_count_value" json:"sell_count_value"` // 在售数量数值 + SellCountEditable int8 `form:"sell_count_editable" json:"sell_count_editable"` // 在售数量是否可编辑 + BuyCountCompare string `form:"buy_count_compare" json:"buy_count_compare"` // 已售数量比较符号 + BuyCountValue float64 `form:"buy_count_value" json:"buy_count_value"` // 已售数量数值 + BuyCountEditable int8 `form:"buy_count_editable" json:"buy_count_editable"` // 已售数量是否可编辑 + Condition string `form:"condition" json:"condition"` // 品相 + ConditionEditable int8 `form:"condition_editable" json:"condition_editable"` // 品相是否可编辑 + + // 精品书配置 + JingpinEnabled int8 `form:"jingpin_enabled" json:"jingpin_enabled"` // 开启精品书开关 + JingpinPriceCompare string `form:"jingpin_price_compare" json:"jingpin_price_compare"` // 精品书价格比较符号 + JingpinPriceValue float64 `form:"jingpin_price_value" json:"jingpin_price_value"` // 精品书价格数值 + JingpinPriceEditable int8 `form:"jingpin_price_editable" json:"jingpin_price_editable"` // 精品书价格是否可编辑 + JingpinSellCountCompare string `form:"jingpin_sell_count_compare" json:"jingpin_sell_count_compare"` // 精品书在售数量比较符号 + JingpinSellCountValue float64 `form:"jingpin_sell_count_value" json:"jingpin_sell_count_value"` // 精品书在售数量数值 + JingpinSellCountEditable int8 `form:"jingpin_sell_count_editable" json:"jingpin_sell_count_editable"` // 精品书在售数量是否可编辑 + JingpinBuyCountCompare string `form:"jingpin_buy_count_compare" json:"jingpin_buy_count_compare"` // 精品书已售数量比较符号 + JingpinBuyCountValue float64 `form:"jingpin_buy_count_value" json:"jingpin_buy_count_value"` // 精品书已售数量数值 + JingpinBuyCountEditable int8 `form:"jingpin_buy_count_editable" json:"jingpin_buy_count_editable"` // 精品书已售数量是否可编辑 +} + +// GetDefaultEmployeeSettingsConfig 获取默认用户配置 +func GetDefaultEmployeeSettingsConfig() EmployeeSettingsConfig { + return EmployeeSettingsConfig{ + // 筛选配置 + ShowPrice: 0, // 比价结果开启 + ShowCategory: 0, // 市场竞争开启 + ShowCache: 1, // 缓存开启 + CompareCount: 1, // 比较条数 + CompareCountEditable: 0, // 比较条数是否可编辑 + PriceCompare: ">=", // 价格比较符 + PriceValue: 4, // 价格阈值 + PriceEditable: 0, // 价格是否可编辑 + SellCountCompare: ">=", // 在售数量比较符 + SellCountValue: 10, // 在售数量阈值 + SellCountEditable: 0, // 在售数量是否可编辑 + BuyCountCompare: ">=", // 已售数量比较符 + BuyCountValue: 10, // 已售数量阈值 + BuyCountEditable: 0, // 已售数量是否可编辑 + Condition: "85~", // 品相等级 + ConditionEditable: 0, + + // 精品书配置 + JingpinEnabled: 0, // 开启精品书 + JingpinPriceCompare: ">=", // 精品书价格比较符 + JingpinPriceValue: 10, // 精品书价格阈值 + JingpinPriceEditable: 0, // 精品书价格是否可编辑 + JingpinSellCountCompare: ">=", // 精品书在售数量比较符 + JingpinSellCountValue: 10, // 精品书在售数量阈值 + JingpinSellCountEditable: 0, // 精品书在售数量是否可编辑 + JingpinBuyCountCompare: ">=", // 精品书已售数量比较符 + JingpinBuyCountValue: 10, // 精品书已售数量阈值 + JingpinBuyCountEditable: 0, // 精品书已售数量是否可编辑 + } +} diff --git a/models/inventory.go b/models/inventory.go new file mode 100644 index 0000000..402df86 --- /dev/null +++ b/models/inventory.go @@ -0,0 +1,25 @@ +package models + +// Inventory 库存汇总表 +type Inventory struct { + ID int64 `json:"id" gorm:"primarykey;comment:库存ID"` + WarehouseID int64 `json:"warehouse_id" gorm:"not null;default:0;uniqueIndex:uk_warehouse_product_batch;index;comment:仓库ID"` + ProductID int64 `json:"product_id" gorm:"not null;default:0;uniqueIndex:uk_warehouse_product_batch;index;comment:商品ID"` + BatchNo string `json:"batch_no" gorm:"size:100;not null;default:'';uniqueIndex:uk_warehouse_product_batch;comment:批次号(无批次管理则为空字符串)"` + ProductionDate int64 `json:"production_date" gorm:"not null;default:0;comment:生产日期时间戳(秒)"` + ExpiryDate int64 `json:"expiry_date" gorm:"not null;default:0;comment:失效日期时间戳(秒)"` + Quantity int64 `json:"quantity" gorm:"not null;default:0;comment:库存数量(最小单位,如个)"` + LockedQuantity int64 `json:"locked_quantity" gorm:"not null;default:0;comment:锁定数量(已分配但未出库)"` + AvailableQuantity int64 `json:"available_quantity" gorm:"->;comment:可用数量(计算字段)"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (Inventory) TableName() string { + return "inventory" +} + +func (Inventory) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存汇总表'" +} diff --git a/models/inventory_detail.go b/models/inventory_detail.go new file mode 100644 index 0000000..02aa514 --- /dev/null +++ b/models/inventory_detail.go @@ -0,0 +1,26 @@ +package models + +// InventoryDetail 库存明细表(库位级) +type InventoryDetail struct { + ID int64 `json:"id" gorm:"primarykey;comment:明细ID"` + WarehouseID int64 `json:"warehouse_id" gorm:"not null;default:0;index;comment:仓库ID"` + LocationID int64 `json:"location_id" gorm:"not null;default:0;uniqueIndex:uk_location_product_batch;index;comment:库位ID"` + ProductID int64 `json:"product_id" gorm:"not null;default:0;uniqueIndex:uk_location_product_batch;index;comment:商品ID"` + BatchNo string `json:"batch_no" gorm:"size:100;not null;default:'';uniqueIndex:uk_location_product_batch;index;comment:批次号"` + ProductionDate int64 `json:"production_date" gorm:"not null;default:0;comment:生产日期时间戳(秒)"` + ExpiryDate int64 `json:"expiry_date" gorm:"not null;default:0;index;comment:失效日期时间戳(秒)"` + Quantity int64 `json:"quantity" gorm:"not null;default:0;comment:当前数量(最小单位)"` + LockedQuantity int64 `json:"locked_quantity" gorm:"not null;default:0;comment:锁定数量"` + AvailableQuantity int64 `json:"available_quantity" gorm:"->;comment:可用数量"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (InventoryDetail) TableName() string { + return "inventory_detail" +} + +func (InventoryDetail) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存明细表(库位级)'" +} diff --git a/models/inventory_log.go b/models/inventory_log.go new file mode 100644 index 0000000..dd9c9c3 --- /dev/null +++ b/models/inventory_log.go @@ -0,0 +1,29 @@ +package models + +// InventoryLog 库存流水表 +type InventoryLog struct { + ID int64 `json:"id" gorm:"primarykey;comment:流水ID"` + WarehouseID int64 `json:"warehouse_id" gorm:"not null;default:0;index;comment:仓库ID"` + LocationID int64 `json:"location_id" gorm:"not null;default:0;comment:库位ID(可为空)"` + ProductID int64 `json:"product_id" gorm:"not null;default:0;index;comment:商品ID"` + BatchNo string `json:"batch_no" gorm:"size:100;not null;default:'';comment:批次号"` + ChangeType int8 `json:"change_type" gorm:"not null;default:0;comment:变动类型(1:入库,2:出库,3:移库,4:盘点调整,5:锁定库存,6:解锁库存)"` + ChangeQuantity int64 `json:"change_quantity" gorm:"not null;default:0;comment:变动数量(正增负减,最小单位)"` + BeforeQuantity int64 `json:"before_quantity" gorm:"not null;default:0;comment:变动前数量"` + AfterQuantity int64 `json:"after_quantity" gorm:"not null;default:0;comment:变动后数量"` + RelatedOrderType string `json:"related_order_type" gorm:"size:50;not null;default:'';comment:关联单据类型(如:采购单/purchase, 销售单/sales, 波次单/wave)"` + RelatedOrderNo string `json:"related_order_no" gorm:"size:100;not null;index;comment:关联单据号"` + Operator string `json:"operator" gorm:"size:100;not null;comment:操作人"` + OperatorID int64 `json:"operator_id" gorm:"not null;default:0;comment:操作人ID"` + Remark string `json:"remark" gorm:"size:255;not null;comment:备注"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;index;comment:操作时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (InventoryLog) TableName() string { + return "inventory_log" +} + +func (InventoryLog) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存流水表'" +} diff --git a/models/location.go b/models/location.go new file mode 100644 index 0000000..f6c1d4f --- /dev/null +++ b/models/location.go @@ -0,0 +1,23 @@ +package models + +// Location 库位表 +type Location struct { + ID int64 `json:"id" gorm:"primarykey;comment:库位ID"` + WarehouseID int64 `json:"warehouse_id" gorm:"not null;default:0;index;uniqueIndex:uk_warehouse_code,priority:1;comment:所属仓库ID"` + Code string `json:"code" gorm:"size:50;not null;default:'';uniqueIndex:uk_warehouse_code,priority:2;comment:库位编码(如 A-01-02)"` + Type int8 `json:"type" gorm:"not null;default:1;comment:库位类型(1:存储库位,2:拣货库位,3:收货库位,4:发货库位,5:退货库位)"` + Capacity int64 `json:"capacity" gorm:"not null;default:0;comment:容量(按体积立方厘米或重量克)"` + Sort int `json:"sort" gorm:"not null;default:0;comment:排序值(值越小越靠前)"` + Status int8 `json:"status" gorm:"type:tinyint(1);not null;default:1;comment:状态(0:禁用,1:启用)"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;index:idx_is_del;priority:3;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (Location) TableName() string { + return "location" +} + +func (Location) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库位表'" +} diff --git a/models/logistics.go b/models/logistics.go new file mode 100644 index 0000000..0b57a2a --- /dev/null +++ b/models/logistics.go @@ -0,0 +1,40 @@ +package models + +import "time" + +type Logistics struct { + Id uint64 `gorm:"primaryKey;column:id" json:"id"` + TemplateName string `gorm:"column:template_name;size:255" json:"templateName"` + DeliveryProvince string `gorm:"column:delivery_province;size:255" json:"deliveryProvince"` + DeliveryCity string `gorm:"column:delivery_city;size:255" json:"deliveryCity"` + DeliveryArea string `gorm:"column:delivery_area;size:255" json:"deliveryArea"` + DeliveryAddress string `gorm:"column:delivery_address;size:255" json:"deliveryAddress"` + PricingMethod string `gorm:"column:pricing_method;size:1;default:0" json:"pricingMethod"` + Shipping string `gorm:"column:shipping;size:1;default:0" json:"shipping"` + FirWbv float64 `gorm:"column:fir_wbv;type:double(20,2)" json:"firWbv"` + FirPrice float64 `gorm:"column:fir_price;type:decimal(10,2)" json:"firPrice"` + ContinueWbv float64 `gorm:"column:continue_wbv;type:double(20,2)" json:"continueWbv"` + ContinuePrice float64 `gorm:"column:continue_price;type:decimal(10,2)" json:"continuePrice"` + CreateBy uint64 `gorm:"column:create_by" json:"createBy"` + CreateTime *time.Time `gorm:"column:create_time" json:"createTime"` + UpdateBy uint64 `gorm:"column:update_by" json:"updateBy"` + UpdateTime *time.Time `gorm:"column:update_time" json:"updateTime"` + Status string `gorm:"column:status;size:1;default:0" json:"status"` + DelFlag string `gorm:"column:del_flag;size:1;default:0" json:"delFlag"` + TenantId string `gorm:"column:tenant_id;size:20" json:"tenantId"` + CreateDept uint64 `gorm:"column:create_dept" json:"createDept"` + ShippingRange string `gorm:"column:shipping_range;type:text" json:"shippingRange"` + WarehouseId uint64 `gorm:"column:warehouse_id" json:"warehouseId"` + Remark string `gorm:"column:remark;size:255" json:"remark"` + PhoneNumber uint64 `gorm:"column:phone_number" json:"phoneNumber"` + Contact string `gorm:"column:contact;size:14" json:"contact"` + FullAddress string `gorm:"column:full_address;size:255" json:"fullAddress"` +} + +func (Logistics) TableName() string { + return "logistics" +} + +func (Logistics) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物流模板表'" +} diff --git a/models/out_task.go b/models/out_task.go new file mode 100644 index 0000000..ddfea51 --- /dev/null +++ b/models/out_task.go @@ -0,0 +1,24 @@ +package models + +// OutTask 外部任务表 +type OutTask struct { + ID int64 `json:"id" gorm:"primarykey;comment:主键ID"` + ShopID int64 `json:"shop_id" gorm:"not null;default:0;index;comment:店铺ID"` + WaveTaskID int64 `json:"wave_task_id" gorm:"not null;default:0;index;comment:波次任务ID"` + OutTaskID int64 `json:"out_task_id" gorm:"not null;default:0;index;comment:外部任务ID"` + ShopType int8 `json:"shop_type" gorm:"not null;default:0;comment:店铺类型 1 拼多多 2 孔夫子 5 闲鱼"` + TaskType int8 `json:"task_type" gorm:"not null;default:0;comment:任务类型 1 核价发布 2 表格发布 3 商品拉取 4 商品详情拉取 5 操作商品 6 核价表格发布 10、按照数量删除任务 11、按照时间删除任务"` + ImgType int8 `json:"img_type" gorm:"not null;default:0;comment:图片类型 1仅官图 2 仅实拍图 3 优先官图 4 优先实拍图"` + TaskCount int64 `json:"task_count" gorm:"not null;default:0;comment:任务数(小车容量)"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (OutTask) TableName() string { + return "out_task" +} + +func (OutTask) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='外部任务表'" +} diff --git a/models/out_task_log.go b/models/out_task_log.go new file mode 100644 index 0000000..b383789 --- /dev/null +++ b/models/out_task_log.go @@ -0,0 +1,31 @@ +package models + +import "gorm.io/datatypes" + +// OutTaskLog 外部任务日志表 +type OutTaskLog struct { + ID int64 `json:"id" gorm:"primarykey;comment:主键ID"` + ShopID int64 `json:"shop_id" gorm:"not null;default:0;index;comment:店铺ID"` + WaveTaskID int64 `json:"wave_task_id" gorm:"not null;default:0;index;comment:波次任务ID"` + OutTaskID int64 `json:"out_task_id" gorm:"not null;default:0;index;comment:外部任务ID"` + ProductID int64 `json:"product_id" gorm:"not null;default:0;index;comment:产品ID"` + ISBN string `json:"isbn" gorm:"type:varchar(100);not null;default:'';comment:isbn"` + LiveImage datatypes.JSON `json:"live_image" gorm:"type:json;not null;comment:实拍图json"` + Stock int64 `json:"stock" gorm:"not null;default:0;comment:库存"` + SalePrice int64 `json:"sale_price" gorm:"not null;default:0;comment:售价"` + Cost int64 `json:"cost" gorm:"not null;default:0;comment:运费"` + SkuCode string `json:"sku_code" gorm:"type:varchar(100);not null;default:'';comment:货号"` + Status int8 `json:"status" gorm:"type:tinyint(1);not null;comment:状态 0异常 1推送成功 2发布成功"` + Msg string `json:"msg" gorm:"type:varchar(255);not null;default:'';comment:错误信息"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (OutTaskLog) TableName() string { + return "out_task_log" +} + +func (OutTaskLog) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='外部任务日志表'" +} diff --git a/models/outbound_order.go b/models/outbound_order.go new file mode 100644 index 0000000..d1a1fb7 --- /dev/null +++ b/models/outbound_order.go @@ -0,0 +1,27 @@ +package models + +// OutboundOrder 出库单主表 +type OutboundOrder struct { + ID int64 `json:"id" gorm:"primarykey;comment:出库单ID"` + OutNo string `json:"out_no" gorm:"size:100;not null;default:'';uniqueIndex;comment:出库单号"` + WaveTaskID int64 `json:"wave_task_id" gorm:"not null;default:0;index;comment:波次任务ID"` + WarehouseID int64 `json:"warehouse_id" gorm:"not null;default:0;comment:仓库ID"` + CustomerID int64 `json:"customer_id" gorm:"not null;default:0;comment:客户ID"` + TotalQuantity int64 `json:"total_quantity" gorm:"not null;default:0;comment:出库总数量"` + TotalAmount int64 `json:"total_amount" gorm:"not null;default:0;comment:出库总金额(分)"` + Status int8 `json:"status" gorm:"not null;default:1;index;comment:状态(1:已创建,2:拣货中,3:已完成,4:已取消,5:发货中,6:已发货)"` + Operator string `json:"operator" gorm:"size:100;not null;default:'';comment:操作员"` + OperatorID int64 `json:"operator_id" gorm:"not null;default:0;comment:操作员ID"` + Remark string `json:"remark" gorm:"size:255;not null;default:'';comment:备注"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (OutboundOrder) TableName() string { + return "outbound_order" +} + +func (OutboundOrder) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='出库单主表'" +} diff --git a/models/outbound_order_item.go b/models/outbound_order_item.go new file mode 100644 index 0000000..5db7abe --- /dev/null +++ b/models/outbound_order_item.go @@ -0,0 +1,26 @@ +package models + +// OutboundOrderItem 出库单明细表 +type OutboundOrderItem struct { + ID int64 `json:"id" gorm:"primarykey;comment:明细ID"` + OutOrderID int64 `json:"out_order_id" gorm:"not null;default:0;index;comment:出库单ID"` + SalesOrderID int64 `json:"sales_order_id" gorm:"not null;default:0;index;comment:销售单ID"` + ProductID int64 `json:"product_id" gorm:"not null;default:0;index;comment:商品ID"` + LocationID int64 `json:"location_id" gorm:"not null;default:0;comment:库位ID"` + BatchNo string `json:"batch_no" gorm:"size:100;not null;default:'';comment:批次号"` + ProductionDate int64 `json:"production_date" gorm:"not null;default:0;comment:生产日期时间戳(秒)"` + ExpiryDate int64 `json:"expiry_date" gorm:"not null;default:0;comment:失效日期时间戳(秒)"` + Quantity int64 `json:"quantity" gorm:"not null;default:0;comment:出库数量"` + UnitPrice int64 `json:"unit_price" gorm:"not null;default:0;comment:单价(分/基本单位)"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (OutboundOrderItem) TableName() string { + return "outbound_order_item" +} + +func (OutboundOrderItem) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='出库单明细表'" +} diff --git a/models/outbound_order_location_log.go b/models/outbound_order_location_log.go new file mode 100644 index 0000000..48d296e --- /dev/null +++ b/models/outbound_order_location_log.go @@ -0,0 +1,24 @@ +package models + +// OutboundOrderLocationLog 出库单库位变更记录表 +type OutboundOrderLocationLog struct { + ID int64 `json:"id" gorm:"primarykey;comment:记录ID"` + OutOrderID int64 `json:"out_order_id" gorm:"not null;default:0;index;comment:出库单ID"` + OutOrderItemID int64 `json:"out_order_item_id" gorm:"not null;default:0;index;comment:出库单明细ID"` + ProductID int64 `json:"product_id" gorm:"not null;default:0;comment:商品ID"` + OldLocationID int64 `json:"old_location_id" gorm:"not null;default:0;comment:原库位ID"` + NewLocationID int64 `json:"new_location_id" gorm:"not null;default:0;comment:新库位ID"` + BatchNo string `json:"batch_no" gorm:"size:100;not null;default:'';comment:批次号"` + Operator string `json:"operator" gorm:"size:100;not null;default:'';comment:操作员"` + OperatorID int64 `json:"operator_id" gorm:"not null;default:0;comment:操作员ID"` + Remark string `json:"remark" gorm:"size:255;not null;default:'';comment:备注"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` +} + +func (OutboundOrderLocationLog) TableName() string { + return "outbound_order_location_log" +} + +func (OutboundOrderLocationLog) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='出库单库位变更记录表'" +} diff --git a/models/print_log.go b/models/print_log.go new file mode 100644 index 0000000..771110b --- /dev/null +++ b/models/print_log.go @@ -0,0 +1,19 @@ +package models + +// PrintLog 打印日志表 +type PrintLog struct { + ID int64 `json:"id" gorm:"primarykey;comment:日志ID"` + PrintTaskID int64 `json:"print_task_id" gorm:"not null;default:0;index;comment:打印任务ID"` + PrintedAt int64 `json:"printed_at" gorm:"default:0;comment:打印时间戳(秒)"` + Result int8 `json:"result" gorm:"type:tinyint(1);default:1;comment:打印结果(1:成功,0:失败)"` + ErrorInfo string `json:"error_info" gorm:"size:255;default:'';comment:错误信息"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (PrintLog) TableName() string { + return "print_log" +} + +func (PrintLog) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='打印日志表'" +} diff --git a/models/print_task.go b/models/print_task.go new file mode 100644 index 0000000..cd1ecf3 --- /dev/null +++ b/models/print_task.go @@ -0,0 +1,31 @@ +package models + +import "gorm.io/datatypes" + +// PrintTask 打印任务表 +type PrintTask struct { + ID int64 `json:"id" gorm:"primarykey;comment:打印任务ID"` + TaskNo string `json:"task_no" gorm:"size:100;not null;default:'';uniqueIndex;comment:打印任务编号"` + BusinessType int8 `json:"business_type" gorm:"not null;default:1;comment:业务类型(1:物流面单/shipment_label,2:拣货单/pick_list,3:装箱单/packing_list,4:发票/invoice)"` + RelatedID int64 `json:"related_id" gorm:"not null;default:0;index;comment:关联业务ID(如出库单ID)"` + RelatedNo string `json:"related_no" gorm:"size:100;not null;default:'';comment:关联业务单号"` + PrinterName string `json:"printer_name" gorm:"size:100;not null;default:'';comment:指定打印机"` + TemplateCode string `json:"template_code" gorm:"size:50;not null;default:'';comment:打印模板编码"` + PrintData datatypes.JSON `json:"print_data" gorm:"type:json;comment:打印数据快照(JSON格式)"` + Status int8 `json:"status" gorm:"not null;default:1;index;comment:状态(1:待打印/pending,2:打印中/printing,3:成功/success,4:失败/failed)"` + RetryCount int `json:"retry_count" gorm:"not null;default:0;comment:重试次数"` + ErrorMessage string `json:"error_message" gorm:"size:255;not null;default:'';comment:失败原因"` + Operator string `json:"operator" gorm:"size:100;not null;default:'';comment:操作人"` + OperatorID int64 `json:"operator_id" gorm:"not null;default:0;comment:操作人ID"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;index;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (PrintTask) TableName() string { + return "print_task" +} + +func (PrintTask) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='打印任务表'" +} diff --git a/models/product.go b/models/product.go new file mode 100644 index 0000000..48c98d7 --- /dev/null +++ b/models/product.go @@ -0,0 +1,31 @@ +package models + +import "gorm.io/datatypes" + +// Product 商品表 +type Product struct { + ID int64 `json:"id" gorm:"primarykey;comment:商品ID"` + CategoryID int64 `json:"category_id" gorm:"not null;default:0;comment:分类ID"` + StandardProductID int64 `json:"standard_product_id" gorm:"not null;default:0;index;comment:关联标品ID"` + Name string `json:"name" gorm:"size:255;not null;default:'';comment:商品名称"` + Appearance int64 `json:"appearance" gorm:"not null;default:0;comment:品相"` + Barcode string `json:"barcode" gorm:"size:100;not null;default:'';index;comment:条码(可唯一,视业务而定)"` + Price int64 `json:"price" gorm:"not null;default:0;comment:价格"` + SalePrice int64 `json:"sale_price" gorm:"not null;default:0;comment:书价"` + Cost int64 `json:"cost" gorm:"not null;default:0;comment:最低运费"` + LiveImage datatypes.JSON `json:"live_image" gorm:"type:json;not null;comment:实拍图json"` + IsBatchManaged int8 `json:"is_batch_managed" gorm:"type:tinyint(1);not null;default:0;comment:是否批次管理(0:否,1:是)"` + IsShelfLifeManaged int8 `json:"is_shelf_life_managed" gorm:"type:tinyint(1);not null;default:0;comment:是否效期管理(0:否,1:是)"` + Status int8 `json:"status" gorm:"type:tinyint(1);not null;default:1;comment:状态(0:禁用,1:启用)"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳"` + IsDel int8 `json:"is_del" gorm:"not null;default:0;comment:逻辑删除"` +} + +func (Product) TableName() string { + return "product" +} + +func (Product) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表'" +} diff --git a/models/product_category.go b/models/product_category.go new file mode 100644 index 0000000..f02d507 --- /dev/null +++ b/models/product_category.go @@ -0,0 +1,20 @@ +package models + +// ProductCategory 商品分类表 +type ProductCategory struct { + ID int64 `json:"id" gorm:"primarykey;comment:分类ID"` + ParentID int64 `json:"parent_id" gorm:"not null;default:0;index;comment:上级分类ID,0表示顶级"` + Name string `json:"name" gorm:"size:100;not null;default:'';comment:分类名称"` + SortOrder int `json:"sort_order" gorm:"not null;default:0;comment:排序"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (ProductCategory) TableName() string { + return "product_category" +} + +func (ProductCategory) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品分类表'" +} diff --git a/models/product_log.go b/models/product_log.go new file mode 100644 index 0000000..1e0f42d --- /dev/null +++ b/models/product_log.go @@ -0,0 +1,44 @@ +package models + +import "gorm.io/datatypes" + +// ProductLog 商品表 +type ProductLog struct { + ID int64 `json:"id" gorm:"primarykey;comment:商品ID"` + Barcode string `json:"barcode" gorm:"size:100;not null;default:'';index;comment:条码(可唯一,视业务而定)"` + Md5Data string `json:"md5_data" gorm:"size:100;not null;default:'';comment:md5"` + OldName string `json:"old_name" gorm:"size:100;not null;default:'';comment:老书名"` + NewName string `json:"new_name" gorm:"size:100;not null;default:'';comment:新书名"` + OldPublisher string `json:"old_publisher" gorm:"size:100;not null;default:'';comment:老出版社"` + NewPublisher string `json:"new_publisher" gorm:"size:100;not null;default:'';comment:新出版社"` + OldAuthor string `json:"old_author" gorm:"size:100;not null;default:'';comment:老作者"` + NewAuthor string `json:"new_author" gorm:"size:100;not null;default:'';comment:新作者"` + OldPublicationTime int64 `json:"old_publication_time" gorm:"not null;default:0;comment:老出版时间"` + NewPublicationTime int64 `json:"new_publication_time" gorm:"not null;default:0;comment:新出版时间"` + OldPrice int64 `json:"old_price" gorm:"not null;default:0;comment:老价格"` + NewPrice int64 `json:"new_price" gorm:"not null;default:0;comment:新价格"` + OldBindingLayout string `json:"old_binding_layout" gorm:"size:20;not null;default:'';comment:老装帧"` + NewBindingLayout string `json:"new_binding_layout" gorm:"size:20;not null;default:'';comment:新装帧"` + OldPageCount int64 `json:"old_page_count" gorm:"not null;default:0;comment:老页数"` + NewPageCount int64 `json:"new_page_count" gorm:"not null;default:0;comment:新页数"` + OldWordCount int64 `json:"old_word_count" gorm:"not null;default:0;comment:老字数"` + NewWordCount int64 `json:"new_word_count" gorm:"not null;default:0;comment:新字数"` + OldLiveImage datatypes.JSON `json:"old_live_image" gorm:"type:json;not null;comment:老实拍图json"` + NewLiveImage datatypes.JSON `json:"new_live_image" gorm:"type:json;not null;comment:新实拍图json"` + OldIsSuit int8 `json:"old_is_suit" gorm:"type:tinyint(1);not null;default:0;comment:老是否是套装书(0:否,1:是)"` + NewIsSuit int8 `json:"new_is_suit" gorm:"type:tinyint(1);not null;default:0;comment:新是否是套装书(0:否,1:是)"` + Status int8 `json:"status" gorm:"type:tinyint(1);not null;default:0;comment:状态(0:审核中,1:通过 2:驳回)"` + CreateBy int64 `json:"create_by" gorm:"not null;default:0;comment:创建人"` + AuditBy int64 `json:"audit_by" gorm:"not null;default:0;comment:审核人"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳"` + IsDel int8 `json:"is_del" gorm:"not null;default:0;comment:逻辑删除"` +} + +func (ProductLog) TableName() string { + return "product_log" +} + +func (ProductLog) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品日志表'" +} diff --git a/models/product_serial.go b/models/product_serial.go new file mode 100644 index 0000000..204731f --- /dev/null +++ b/models/product_serial.go @@ -0,0 +1,21 @@ +package models + +// ProductSerial 商品序列号表 +type ProductSerial struct { + ID int64 `json:"id" gorm:"primarykey;comment:自增ID"` + ProductID int64 `json:"product_id" gorm:"not null;default:0;index;comment:商品ID"` + SerialNumber string `json:"serial_number" gorm:"size:100;not null;default:'';uniqueIndex:uk_serial;comment:序列号"` + Status int8 `json:"status" gorm:"not null;default:1;comment:状态(1:在库/in_stock,2:已售/sold,3:已退货/returned,4:已报废/scrapped)"` + InboundDate int64 `json:"inbound_date" gorm:"not null;default:0;comment:入库时间戳(秒)"` + OutboundDate int64 `json:"outbound_date" gorm:"not null;default:0;comment:出库时间戳(秒)"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (ProductSerial) TableName() string { + return "product_serial" +} + +func (ProductSerial) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品序列号表'" +} diff --git a/models/product_unit_conversion.go b/models/product_unit_conversion.go new file mode 100644 index 0000000..a18d6ec --- /dev/null +++ b/models/product_unit_conversion.go @@ -0,0 +1,19 @@ +package models + +// ProductUnitConversion 商品单位换算表 +type ProductUnitConversion struct { + ID int64 `json:"id" gorm:"primarykey;comment:自增ID"` + ProductID int64 `json:"product_id" gorm:"not null;uniqueIndex:uk_product_unit;comment:商品ID"` + FromUnit string `json:"from_unit" gorm:"size:20;not null;default:'';uniqueIndex:uk_product_unit;comment:源单位"` + ToUnit string `json:"to_unit" gorm:"size:20;not null;default:'';uniqueIndex:uk_product_unit;comment:目标单位"` + ConversionRate int64 `json:"conversion_rate" gorm:"not null;comment:换算率(放大10000倍的整数,如1箱=12个,则存120000)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (ProductUnitConversion) TableName() string { + return "product_unit_conversion" +} + +func (ProductUnitConversion) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品单位换算表'" +} diff --git a/models/purchase_order.go b/models/purchase_order.go new file mode 100644 index 0000000..d319467 --- /dev/null +++ b/models/purchase_order.go @@ -0,0 +1,27 @@ +package models + +// PurchaseOrder 采购订单主表 +type PurchaseOrder struct { + ID int64 `json:"id" gorm:"primarykey;comment:采购单ID"` + PoNo string `json:"po_no" gorm:"size:100;not null;default:'';uniqueIndex;comment:采购单号(唯一)"` + SupplierID int64 `json:"supplier_id" gorm:"not null;default:0;index;comment:供应商ID"` + WarehouseID int64 `json:"warehouse_id" gorm:"not null;default:0;comment:预计入库仓库ID"` + OrderDate int64 `json:"order_date" gorm:"not null;default:0;comment:订单日期时间戳(秒)"` + ExpectedArrivalDate int64 `json:"expected_arrival_date" gorm:"not null;default:0;comment:预计到货日期时间戳(秒)"` + TotalAmount int64 `json:"total_amount" gorm:"not null;default:0;comment:采购总金额(单位:分)"` + Status int8 `json:"status" gorm:"not null;default:1;index;comment:状态(1:草稿/draft, 2:已提交/submitted, 3:已审核/approved, 4:部分收货/partial_received, 5:已收货/received, 6:已取消/cancelled)"` + Creator string `json:"creator" gorm:"size:100;not null;default:'';comment:创建人"` + CreatorID int64 `json:"creator_id" gorm:"not null;default:0;comment:创建人ID"` + Remark string `json:"remark" gorm:"size:255;not null;default:'';comment:备注"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (PurchaseOrder) TableName() string { + return "purchase_order" +} + +func (PurchaseOrder) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购订单主表'" +} diff --git a/models/purchase_order_item.go b/models/purchase_order_item.go new file mode 100644 index 0000000..de51c72 --- /dev/null +++ b/models/purchase_order_item.go @@ -0,0 +1,23 @@ +package models + +// PurchaseOrderItem 采购订单明细表 +type PurchaseOrderItem struct { + ID int64 `json:"id" gorm:"primarykey;comment:明细ID"` + PurchaseOrderID int64 `json:"purchase_order_id" gorm:"not null;default:0;index;comment:采购单ID"` + ProductID int64 `json:"product_id" gorm:"not null;default:0;index;comment:商品ID"` + Quantity int64 `json:"quantity" gorm:"not null;default:0;comment:采购数量(最小单位)"` + ReceivedQuantity int64 `json:"received_quantity" gorm:"not null;default:0;comment:已入库数量"` + UnitPrice int64 `json:"unit_price" gorm:"not null;default:0;comment:单价(单位:分/基本单位)"` + Amount int64 `json:"amount" gorm:"comment:金额(分)"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (PurchaseOrderItem) TableName() string { + return "purchase_order_item" +} + +func (PurchaseOrderItem) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购订单明细表'" +} diff --git a/models/receiving_order.go b/models/receiving_order.go new file mode 100644 index 0000000..238b999 --- /dev/null +++ b/models/receiving_order.go @@ -0,0 +1,27 @@ +package models + +// ReceivingOrder 入库单主表 +type ReceivingOrder struct { + ID int64 `json:"id" gorm:"primarykey;comment:入库单ID"` + ReceivingNo string `json:"receiving_no" gorm:"size:100;not null;default:'';uniqueIndex;comment:入库单号"` + PurchaseOrderID int64 `json:"purchase_order_id" gorm:"not null;default:0;index;comment:关联采购单ID(可为空,支持无来源入库)"` + WaveTaskID int64 `json:"wave_task_id" gorm:"not null;default:0;index;comment:关联波次任务ID"` + WarehouseID int64 `json:"warehouse_id" gorm:"not null;default:0;index;comment:入库仓库ID"` + SupplierID int64 `json:"supplier_id" gorm:"not null;default:0;comment:供应商ID"` + ReceivingDate int64 `json:"receiving_date" gorm:"not null;default:0;comment:入库日期时间戳(秒)"` + Status int8 `json:"status" gorm:"not null;default:1;index;comment:状态(1:待收货/pending, 2:验收中/checking, 3:已完成/completed, 4:已取消/cancelled)"` + Operator string `json:"operator" gorm:"size:100;not null;default:'';comment:操作人"` + OperatorID int64 `json:"operator_id" gorm:"not null;default:0;comment:操作人ID"` + Remark string `json:"remark" gorm:"size:255;not null;default:'';comment:备注"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (ReceivingOrder) TableName() string { + return "receiving_order" +} + +func (ReceivingOrder) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='入库单主表'" +} diff --git a/models/receiving_order_item.go b/models/receiving_order_item.go new file mode 100644 index 0000000..9b43a78 --- /dev/null +++ b/models/receiving_order_item.go @@ -0,0 +1,24 @@ +package models + +// ReceivingOrderItem 入库单明细表 +type ReceivingOrderItem struct { + ID int64 `json:"id" gorm:"primarykey;comment:明细ID"` + ReceivingOrderID int64 `json:"receiving_order_id" gorm:"not null;default:0;index;comment:入库单ID"` + ProductID int64 `json:"product_id" gorm:"not null;default:0;index;comment:商品ID"` + LocationID int64 `json:"location_id" gorm:"not null;default:0;index;comment:入库库位ID"` + BatchNo string `json:"batch_no" gorm:"size:100;not null;default:'';comment:批次号"` + ProductionDate int64 `json:"production_date" gorm:"not null;default:0;comment:生产日期时间戳(秒)"` + ExpiryDate int64 `json:"expiry_date" gorm:"not null;default:0;comment:失效日期时间戳(秒)"` + Quantity int64 `json:"quantity" gorm:"not null;comment:入库数量(最小单位)"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (ReceivingOrderItem) TableName() string { + return "receiving_order_item" +} + +func (ReceivingOrderItem) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='入库单明细表'" +} diff --git a/models/request/Employee.go b/models/request/Employee.go new file mode 100644 index 0000000..629116c --- /dev/null +++ b/models/request/Employee.go @@ -0,0 +1,64 @@ +package request + +// LoginRequest 登录请求 +type LoginRequest struct { + Username string `form:"username" binding:"required"` + Password string `form:"password" binding:"required"` + AboutID int64 `form:"about_id"` // 租户ID(从ERP关联) + Type int64 `form:"type"` // 类型 1web 2pda + Code string `form:"code"` // 机械码 +} + +// GetEmployeeListRequest 获取员工列表请求 +type GetEmployeeListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + Fid int64 `form:"fid"` + Status string `form:"status"` + Keyword string `form:"keyword"` +} + +// AddEmployeeRequest 添加员工请求 +type AddEmployeeRequest struct { + Name string `form:"name" binding:"required"` + UserName string `form:"username"` + AboutId int64 `form:"about_id"` + Fid int64 `form:"fid"` + Phone string `form:"phone"` + Password string `form:"password" binding:"required,min=6"` + From string `form:"from"` + ExpireTime int64 `form:"expire_time"` +} + +// UpdatePasswordEmployeeRequest 修改员工密码请求 +type UpdatePasswordEmployeeRequest struct { + Id int64 `form:"id" binding:"required"` + AboutId int64 `form:"about_id"` + Password string `form:"password" binding:"required,min=6"` +} + +// UpdateExpireTimeEmployeeRequest 修改员工过期时间请求 +type UpdateExpireTimeEmployeeRequest struct { + Id int64 `form:"id" binding:"required"` + AboutId int64 `form:"about_id"` + ExpireTime int64 `form:"expire_time" binding:"required"` +} + +// CheckCodeEmployeeRequest 校验员工机械码 +type CheckCodeEmployeeRequest struct { + UserName string `form:"username" binding:"required"` +} + +// ClearCodeEmployeeRequest 清除员工机械码请求 +type ClearCodeEmployeeRequest struct { + UserName string `form:"username" binding:"required"` +} + +// SetEmployeeLevelRequest 设置员工等级 +type SetEmployeeLevelRequest struct { + EmpId int64 `form:"emp_id" binding:"required"` + Level int8 `form:"level" binding:"required,min=1,max=5"` // 等级(1-5) + PayTime int64 `form:"pay_time" binding:"required"` + OperationType int8 `form:"operation_type" binding:"required,oneof=1 2 3"` // 操作类型(1:开通,2:升级,3:续费) + Duration int64 `form:"duration" binding:"required,min=1"` // 时长(月数),按30天/月计算 +} diff --git a/models/request/barcode.go b/models/request/barcode.go new file mode 100644 index 0000000..95d1254 --- /dev/null +++ b/models/request/barcode.go @@ -0,0 +1,5 @@ +package request + +type BarcodeRequest struct { + Content string `form:"content" binding:"required"` +} diff --git a/models/request/book.go b/models/request/book.go new file mode 100644 index 0000000..77eb7c2 --- /dev/null +++ b/models/request/book.go @@ -0,0 +1,35 @@ +package request + +type BookRequest struct { + Isbn string `form:"isbn" binding:"required"` +} + +type GetCodeRequest struct { + BookName string `form:"book_name" binding:"required"` + Author string `form:"author" binding:"required"` + Publisher string `form:"publisher" binding:"required"` +} + +type AddBookRequest struct { + Fid int64 `form:"fid"` // 父ID + Type int8 `form:"type" binding:"required"` // 类型 1:普通图书 2:套装图书 3:一号多书 4:无书号 + Isbn string `form:"isbn" binding:"required"` // ISBN + FIsbn string `form:"f_isbn" binding:"required"` // 副ISBN + BookName string `form:"book_name" binding:"required"` // 书名 + FBookName string `form:"f_book_name"` // 副书名 + Author string `form:"author"` // 作者 + Publisher string `form:"publisher"` // 出版社 + PublicationTime int64 `form:"publication_time"` // 出版时间 + BindingLayout string `form:"binding_layout"` // 装帧 + FixPrice int64 `form:"fix_price"` // 定价 + PageCount int64 `form:"page_count"` // 页数 + WordCount int64 `form:"word_count"` // 字数 + BookFormat int64 `form:"book_format"` // 图书格式 + LiveImage []string `form:"live_image"` // 图片 +} + +type GetNoIsbnBookRequest struct { + BookName string `form:"book_name" binding:"required"` // 书名 + Author string `form:"author"` // 作者 + Publisher string `form:"publisher"` // 出版社 +} diff --git a/models/request/cancel_logistics.go b/models/request/cancel_logistics.go new file mode 100644 index 0000000..3e9e9fa --- /dev/null +++ b/models/request/cancel_logistics.go @@ -0,0 +1,7 @@ +package request + +// CancelLogisticsRequest 取消物流单号请求 +type CancelLogisticsRequest struct { + UserID int64 `form:"user_id" binding:"required"` + LogisticsNo string `form:"logistics_no" binding:"required"` +} diff --git a/models/request/car.go b/models/request/car.go new file mode 100644 index 0000000..3742ba5 --- /dev/null +++ b/models/request/car.go @@ -0,0 +1,32 @@ +package request + +type QueryCarRequest struct { + Keyword string `form:"keyword"` + Page int `form:"page,default=1"` + PageSize int `form:"page_size,default=10"` +} + +type CreateCarRequest struct { + WarehouseID int64 `form:"warehouse_id" binding:"required"` + PushType int8 `form:"push_type" binding:"required"` + ReleaseType int8 `form:"release_type" binding:"required"` + Code int64 `form:"code" binding:"required"` + Name string `form:"name" binding:"required,max=50"` + Capacity int64 `form:"capacity" binding:"required"` + Appearance int64 `form:"appearance" binding:"required"` + ShopInfo []map[string]interface{} `form:"shop_info[]"` +} + +type UpdateCarRequest struct { + PushType *int8 `form:"push_type" binding:"required"` + ReleaseType *int8 `form:"release_type" binding:"required"` + ID int64 `form:"id" binding:"required"` + Name string `form:"name" binding:"omitempty,max=50"` + Capacity *int64 `form:"capacity" binding:"required"` + Appearance *int64 `form:"appearance" binding:"required"` + ShopInfo []map[string]interface{} `form:"shop_info[]"` +} + +type DeleteCarRequest struct { + ID int64 `form:"id" binding:"required"` +} diff --git a/models/request/config.go b/models/request/config.go new file mode 100644 index 0000000..5ad9c38 --- /dev/null +++ b/models/request/config.go @@ -0,0 +1,26 @@ +package request + +// GetConfigListRequest 获取配置列表请求 +type GetConfigListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + Keyword string `form:"keyword"` +} + +// AddConfigRequest 添加配置请求 +type AddConfigRequest struct { + Key string `form:"key" binding:"required"` + Value string `form:"value" binding:"required"` +} + +// UpdateConfigRequest 更新配置请求 +type UpdateConfigRequest struct { + ID int64 `form:"id" binding:"required"` + Key string `form:"key"` + Value string `form:"value"` +} + +// DeleteConfigRequest 删除配置请求 +type DeleteConfigRequest struct { + ID int64 `form:"id" binding:"required"` +} diff --git a/models/request/employee_settings.go b/models/request/employee_settings.go new file mode 100644 index 0000000..7bcc664 --- /dev/null +++ b/models/request/employee_settings.go @@ -0,0 +1,14 @@ +package request + +import "psi/models" + +// GetEmployeeSettingsRequest 获取员工设置请求 +type GetEmployeeSettingsRequest struct { + EmpId int64 `form:"emp_id"` +} + +// SaveEmployeeSettingsRequest 保存员工设置请求 +type SaveEmployeeSettingsRequest struct { + EmpId int64 `form:"emp_id"` + models.EmployeeSettingsConfig +} diff --git a/models/request/goods_import.go b/models/request/goods_import.go new file mode 100644 index 0000000..7b5bb8f --- /dev/null +++ b/models/request/goods_import.go @@ -0,0 +1,34 @@ +package request + +// GoodsImportRow Excel 表格中每一行的数据结构(对应货号批量修改工具导出格式) +type GoodsImportRow struct { + GoodsNo string // 商品编号 + GoodsName string // 商品名称 + Huohao string // 货号(原) + HuohaoNew string // 货号[新](新货号,用作库位编码) + ISBN string // ISBN + Author string // 作者 + Publisher string // 出版社 + PriceListing string // 商品定价 + PriceSale string // 商品售价 + Category string // 商品分类 + ShopCategory string // 本店分类 + Appearance string // 品相 + Inventory string // 库存 + ProductID string // 商品ID + ShopID string // 店铺ID + LiveImage string // 商品图片(工具导出时已处理为URL) +} + +// GoodsImportResult 导入结果 +type GoodsImportResult struct { + SuccessCount int + FailCount int + FailDetails []string + Message string +} + +func (r *GoodsImportResult) AddFail(detail string) { + r.FailCount++ + r.FailDetails = append(r.FailDetails, detail) +} diff --git a/models/request/inventory.go b/models/request/inventory.go new file mode 100644 index 0000000..16e6e4c --- /dev/null +++ b/models/request/inventory.go @@ -0,0 +1,61 @@ +package request + +// GetInventoryListRequest 获取库存汇总列表请求 +type GetInventoryListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + ProductId int64 `form:"product_id"` + WarehouseID int64 `form:"warehouse_id"` + ISBN string `form:"isbn"` + Name string `form:"name"` +} + +// GetInventoryGroupedListRequest 获取按仓库库位分组的库存列表请求 +type GetInventoryGroupedListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + ProductId int64 `form:"product_id"` + WarehouseID int64 `form:"warehouse_id"` +} + +// GetInventoryDetailRequest 获取库存明细请求 +type GetInventoryDetailRequest struct { + ProductID int64 `form:"product_id" binding:"required"` +} + +// GetInventoryLogListRequest 获取库存流水列表请求 +type GetInventoryLogListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + ISBN string `form:"isbn"` + BookName string `form:"book_name"` + WarehouseID int64 `form:"warehouse_id"` + ChangeType int8 `form:"change_type"` + RelatedOrderNo string `form:"related_order_no"` + StartDate int64 `form:"start_date"` + EndDate int64 `form:"end_date"` +} + +// InventoryStatistRequest 获取条码/品相库存总数请求 +type InventoryStatistRequest struct { + Barcode string `form:"barcode"` + Appearance int64 `form:"appearance"` +} + +// GetStockCheckListRequest 获取盘库列表请求 +type GetStockCheckListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + WarehouseID int64 `form:"warehouse_id"` + Status int8 `form:"status"` + CheckNo string `form:"check_no"` + StartDate int64 `form:"start_date"` + EndDate int64 `form:"end_date"` +} + +// GetStockCheckDetailRequest 获取盘库明细列表请求 +type GetStockCheckDetailRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + StockCheckID int64 `form:"stock_check_id" binding:"required"` +} diff --git a/models/request/location.go b/models/request/location.go new file mode 100644 index 0000000..a046b80 --- /dev/null +++ b/models/request/location.go @@ -0,0 +1,125 @@ +package request + +// QueryAllLocationRequest 查询所有库位请求(仓库ID可选) +type QueryAllLocationRequest struct { + WarehouseID *int64 `json:"warehouse_id" form:"warehouse_id"` + Code string `json:"code" form:"code"` + Type *int8 `json:"type" form:"type"` + Status *int8 `json:"status" form:"status"` + Page int `json:"page" form:"page,default=1"` + PageSize int `json:"page_size" form:"page_size,default=10"` +} + +type QueryLocationRequest struct { + WarehouseID int64 `json:"warehouse_id" form:"warehouse_id" binding:"required"` + Code string `json:"code" form:"code"` + Type *int8 `json:"type" form:"type"` + Status *int8 `json:"status" form:"status"` + Page int `json:"page" form:"page,default=1"` + PageSize int `json:"page_size" form:"page_size,default=10"` +} + +type CreateLocationRequest struct { + WarehouseID int64 `form:"warehouse_id" binding:"required"` + Code string `form:"code" binding:"required,max=50"` + Type int8 `form:"type" binding:"required"` + Capacity int64 `form:"capacity" binding:"required"` + Status int8 `form:"status" binding:"required"` +} + +type BatchGenerateLocationRequest struct { + WarehouseID int64 `form:"warehouse_id" binding:"required"` + Groups []GroupConfig `form:"groups[]"` + Type int8 `form:"type"` + Capacity int64 `form:"capacity"` + Status int8 `form:"status"` +} + +type GroupConfig struct { + FormatType int `form:"format_type" binding:"required,oneof=1 2 3 4"` + StartValue string `form:"start_value" binding:"required"` + EndValue string `form:"end_value" binding:"required"` + PaddingLen int `form:"padding_len"` + Separator string `form:"separator" binding:"max=5"` +} + +type UpdateLocationRequest struct { + WarehouseID int64 `form:"warehouse_id" binding:"required"` + IDs []int64 `form:"ids[]"` + Code string `form:"code"` + Type *int8 `form:"type"` + Capacity *int64 `form:"capacity"` + Sort *int `form:"sort"` + Status *int8 `form:"status"` +} + +type DeleteLocationRequest struct { + IDs []int64 `form:"ids[]"` +} +type GetLocationIdRequest struct { + Code string `form:"code"` + WarehouseCode string `form:"warehouse_code"` +} + +type SyncLocationRequest struct { + UserID int64 `json:"user_id" binding:"required"` + Data []SyncLocationAreaRequest `json:"data" binding:"required"` +} + +type SyncLocationAreaRequest struct { + Code string `json:"code" binding:"required"` + Name string `json:"name" binding:"required"` + TemplateId int64 `json:"templateId" binding:"required"` + Status string `json:"status" binding:"required"` + Logistics SyncLogisticsRequest `json:"logistics" binding:"required"` + Data []SyncLocationItemRequest `json:"data" binding:"required"` +} + +type SyncLogisticsRequest struct { + Id int64 `json:"id"` + TemplateName string `json:"templateName" binding:"required"` + DeliveryProvince string `json:"deliveryProvince" binding:"required"` + DeliveryCity string `json:"deliveryCity" binding:"required"` + DeliveryArea string `json:"deliveryArea" binding:"required"` + DeliveryAddress string `json:"deliveryAddress" binding:"required"` + PricingMethod string `json:"pricingMethod" binding:"required"` + Shipping string `json:"shipping" binding:"required"` + FirWbv float64 `json:"firWbv"` + FirPrice float64 `json:"firPrice"` + ContinueWbv float64 `json:"continueWbv"` + ContinuePrice float64 `json:"continuePrice"` + CreateBy int64 `json:"createBy"` + CreateTime string `json:"createTime"` + UpdateBy int64 `json:"updateBy"` + UpdateTime string `json:"updateTime"` + Status string `json:"status"` + DelFlag string `json:"delFlag"` + TenantId string `json:"tenantId"` + CreateDept int64 `json:"createDept"` + ShippingRange string `json:"shippingRange"` + WarehouseId int64 `json:"warehouseId"` + Remark string `json:"remark"` + PhoneNumber int64 `json:"phoneNumber"` + Contact string `json:"contact"` + FullAddress string `json:"fullAddress"` +} + +type SyncLocationItemRequest struct { + Code string `json:"code" binding:"required"` + SheQuantityMax int64 `json:"sheQuantityMax" binding:"required"` +} + +type SyncGoodsRequest struct { + UserID int64 `json:"user_id" binding:"required"` + Data []SyncGoodsItem `json:"data" binding:"required"` +} + +type SyncGoodsItem struct { + GoodsName string `json:"goods_name" binding:"required"` + ISBN string `json:"isbn" binding:"required"` + Price int64 `json:"price" binding:"required"` + Appearance string `json:"appearance" binding:"required"` + LiveImage []string `json:"live_image" binding:"required"` + LocationCode string `json:"location_code" binding:"required"` + Inventory int64 `json:"inventory" binding:"required"` +} diff --git a/models/request/location_import.go b/models/request/location_import.go new file mode 100644 index 0000000..522d2be --- /dev/null +++ b/models/request/location_import.go @@ -0,0 +1,6 @@ +package request + +// LocationImportRow Excel中单行库位数据 +type LocationImportRow struct { + Code string // 库位编码 +} diff --git a/models/request/logistics.go b/models/request/logistics.go new file mode 100644 index 0000000..ebcddea --- /dev/null +++ b/models/request/logistics.go @@ -0,0 +1,55 @@ +package request + +type QueryLogisticsRequest struct { + Keyword string `form:"keyword"` + Status *int `form:"status"` + Page int `form:"page,default=1"` + PageSize int `form:"page_size,default=10"` +} + +type CreateLogisticsRequest struct { + TemplateName string `form:"template_name" binding:"required,max=255"` + DeliveryProvince string `form:"delivery_province" binding:"required,max=255"` + DeliveryCity string `form:"delivery_city" binding:"required,max=255"` + DeliveryArea string `form:"delivery_area" binding:"required,max=255"` + DeliveryAddress string `form:"delivery_address" binding:"required,max=255"` + PricingMethod string `form:"pricing_method" binding:"required,oneof=0 1 2 3"` + Shipping string `form:"shipping" binding:"required,oneof=0 1 2"` + FirWbv float64 `form:"fir_wbv"` + FirPrice float64 `form:"fir_price"` + ContinueWbv float64 `form:"continue_wbv"` + ContinuePrice float64 `form:"continue_price"` + Contact string `form:"contact" binding:"required,max=14"` + PhoneNumber uint64 `form:"phone_number" binding:"required"` + FullAddress string `form:"full_address" binding:"required,max=255"` + ShippingRange string `form:"shipping_range" binding:"required"` + WarehouseId uint64 `form:"warehouse_id"` + Remark string `form:"remark" binding:"max=255"` + Status string `form:"status" binding:"oneof=0 1"` +} + +type UpdateLogisticsRequest struct { + Id uint64 `form:"id" binding:"required"` + TemplateName string `form:"template_name" binding:"required,max=255"` + DeliveryProvince string `form:"delivery_province" binding:"required,max=255"` + DeliveryCity string `form:"delivery_city" binding:"required,max=255"` + DeliveryArea string `form:"delivery_area" binding:"required,max=255"` + DeliveryAddress string `form:"delivery_address" binding:"required,max=255"` + PricingMethod string `form:"pricing_method" binding:"required,oneof=0 1 2 3"` + Shipping string `form:"shipping" binding:"required,oneof=0 1 2"` + FirWbv float64 `form:"fir_wbv"` + FirPrice float64 `form:"fir_price"` + ContinueWbv float64 `form:"continue_wbv"` + ContinuePrice float64 `form:"continue_price"` + Contact string `form:"contact" binding:"required,max=14"` + PhoneNumber uint64 `form:"phone_number" binding:"required"` + FullAddress string `form:"full_address" binding:"required,max=255"` + ShippingRange string `form:"shipping_range" binding:"required"` + WarehouseId uint64 `form:"warehouse_id"` + Remark string `form:"remark" binding:"max=255"` + Status string `form:"status" binding:"oneof=0 1"` +} + +type DeleteLogisticsRequest struct { + Id uint64 `form:"id" binding:"required"` +} diff --git a/models/request/out_task.go b/models/request/out_task.go new file mode 100644 index 0000000..855032d --- /dev/null +++ b/models/request/out_task.go @@ -0,0 +1,44 @@ +package request + +// GetOutTaskListRequest 获取外部任务列表请求 +type GetOutTaskListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + ShopID int64 `form:"shop_id"` + WaveTaskID int64 `form:"wave_task_id"` + ShopType int8 `form:"shop_type"` + TaskType int8 `form:"task_type"` + Status int8 `form:"status"` + StartDate int64 `form:"start_date"` + EndDate int64 `form:"end_date"` +} + +// GetOutTaskLogListRequest 获取外部任务日志列表请求 +type GetOutTaskLogListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + ShopID int64 `form:"shop_id"` + WaveTaskID int64 `form:"wave_task_id"` + OutTaskID int64 `form:"out_task_id" binding:"required"` + ProductID int64 `form:"product_id"` + Status int8 `form:"status"` // 1正常 0异常 + StartDate int64 `form:"start_date"` + EndDate int64 `form:"end_date"` +} + +// UpdateOutTaskLogRequest 修改外部任务日志 +type UpdateOutTaskLogRequest struct { + UserID int64 `form:"user_id" binding:"required"` + OutTaskID int64 `form:"out_task_id" binding:"required"` + ProductID int64 `form:"product_id" binding:"required"` +} + +// GetOutTaskByShopRequest 按店铺获取外部任务列表请求 +type GetOutTaskByShopRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + ShopID int64 `form:"shop_id"` + ShopType int8 `form:"shop_type"` + StartDate int64 `form:"start_date"` + EndDate int64 `form:"end_date"` +} diff --git a/models/request/outbound.go b/models/request/outbound.go new file mode 100644 index 0000000..d87fff6 --- /dev/null +++ b/models/request/outbound.go @@ -0,0 +1,24 @@ +package request + +// GetOutboundOrderListRequest 获取出库单列表请求 +type GetOutboundOrderListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + OutNo string `form:"out_no"` + Status int8 `form:"status"` + CustomerID int64 `form:"customer_id"` + WarehouseID int64 `form:"warehouse_id"` + StartDate int64 `form:"start_date"` + EndDate int64 `form:"end_date"` +} + +// GetOutboundOrderDetailRequest 获取出库单详情请求 +type GetOutboundOrderDetailRequest struct { + ID int64 `form:"id" binding:"required"` +} + +// ChangeLocationRequest 出库单切换库位请求 +type ChangeLocationRequest struct { + OutOrderItemID int64 `form:"out_order_item_id" binding:"required"` + Remark string `form:"remark"` +} diff --git a/models/request/process.go b/models/request/process.go new file mode 100644 index 0000000..98c67e3 --- /dev/null +++ b/models/request/process.go @@ -0,0 +1,156 @@ +package request + +type PurchaseOrderCreateRequest struct { + CarID int64 `form:"car_id" binding:"required"` // 采购订单ID + CarCode int64 `form:"car_code" binding:"required"` // 采购订单编号 + WarehouseID int64 `form:"warehouse_id" binding:"required"` // 仓库ID + SupplierID int64 `form:"supplier_id"` // 供应商ID + Direction int8 `form:"direction"` // 采购订单方向 + ExpectedArrivalDate int64 `form:"expected_arrival_date"` // 预计到达时间 + Remark string `form:"remark"` // 备注 + Items []PurchaseOrderItemRequest `form:"items[]"` // 采购订单项 +} + +type PurchaseOrderItemRequest struct { + ProductID int64 `form:"product_id" binding:"required"` // 商品ID + Quantity int64 `form:"quantity" binding:"required,gt=0"` // 数量 + UnitPrice int64 `form:"unit_price" binding:"required,gt=0"` // 单价 +} + +type WaveRequest struct { + WaveID int64 `form:"wave_id" binding:"required"` + CarID int64 `form:"car_id"` + CarCode int64 `form:"car_code"` + RelatedOrderID int64 `form:"related_order_id" binding:"required"` + Assignee string `form:"assignee"` + AssigneeId int64 `form:"assignee_id"` + Items []WaveItemRequest `form:"items[]"` +} + +type WaveItemRequest struct { + ProductID int64 `form:"product_id" binding:"required"` + Quantity int64 `form:"quantity" binding:"required,gt=0"` + UnitPrice int64 `form:"unit_price" binding:"required,gt=0"` +} + +type BindWaveRequest struct { + WaveNo string `form:"wave_no" binding:"required"` + Operator string `form:"operator" binding:"required"` + OperatorID int64 `form:"operator_id" binding:"required"` + Remark string `form:"remark"` +} + +type GetIdRequest struct { + ID int64 `form:"id" binding:"required"` +} + +type ReceivingSubmitRequest struct { + ReceivingOrderID int64 `form:"receiving_order_id" binding:"required"` + WaveTaskID int64 `form:"wave_task_id" binding:"required"` + Force int8 `form:"force"` + Items []ReceivingItemRequest `form:"items[]"` +} + +type ReceivingItemRequest struct { + ProductID int64 `form:"product_id" binding:"required"` + LocationID int64 `form:"location_id" binding:"required"` + BatchNo string `form:"batch_no" binding:"required"` + ProductionDate int64 `form:"production_date"` + ExpiryDate int64 `form:"expiry_date"` + Quantity int64 `form:"quantity" binding:"required,gt=0"` + //SerialNumbers []string `form:"serial_numbers"` +} + +type SalesOrderCreateRequest struct { + AboutId int64 `form:"about_id"` + AssociationOrderID int64 `form:"association_order_id" binding:"required"` + AssociationOrderNo string `form:"association_order_no" binding:"required"` + FromType int8 `form:"from_type"` + ShopType int8 `form:"shop_type"` + CustomerID int64 `form:"customer_id"` + RequiredDeliveryDate int64 `form:"required_delivery_date"` + Remark string `form:"remark"` + SalesPerson string `form:"sales_person"` + SalesPersonID int64 `form:"sales_person_id"` + ReceiverName string `form:"receiver_name"` + ReceiverPhone string `form:"receiver_phone"` + ReceiverAddress string `form:"receiver_address"` + IsDistribution int8 `form:"is_distribution"` + Items []SalesOrderItemRequest `form:"items[]"` +} + +// CreateOutboundOrderRequest 基于销售订单创建出库单请求 +type CreateOutboundOrderRequest struct { + SalesOrderIDs []int64 `form:"order_ids[]"` + Total int `form:"total"` + Remark string `form:"remark"` +} + +type CreateOutboundWaveRequest struct { + OutboundOrderID int64 `form:"outbound_order_id" binding:"required"` +} + +type SalesOrderItemRequest struct { + ProductID int64 `form:"product_id" binding:"required"` + Quantity int64 `form:"quantity" binding:"required,gt=0"` + UnitPrice int64 `form:"unit_price" binding:"required,gt=0"` +} + +type OutboundSubmitRequest struct { + OutboundOrderID int64 `form:"outbound_order_id" binding:"required"` + WaveTaskID int64 `form:"wave_task_id" binding:"required"` + Force int8 `form:"force"` + Items []OutboundItemRequest `form:"items[]"` +} + +type OutboundItemRequest struct { + ProductID int64 `form:"product_id" binding:"required"` + LocationID int64 `form:"location_id" binding:"required"` + BatchNo string `form:"batch_no"` + ProductionDate int64 `form:"production_date"` + ExpiryDate int64 `form:"expiry_date"` + Quantity int64 `form:"quantity" binding:"required,gt=0"` +} + +// CreateShippingOrderRequest 基于出库单创建发货单请求 +type CreateShippingOrderRequest struct { + OutboundOrderIDs []int64 `form:"order_ids[]"` + Total int `form:"total"` + ExpectedArriveTime *int64 `form:"expected_arrive_time"` + Remark string `form:"remark"` +} + +// UpdateShippingLogisticsRequest 更新发货单物流信息请求 +type UpdateShippingLogisticsRequest struct { + ShippingOrderID int64 `form:"shipping_order_id" binding:"required"` // 发货单ID + Total int `form:"total"` // 发货单总数 + SalesOrderItemID int64 `form:"sales_order_item_id" binding:"required"` // 销售订单项ID + LogisticsCompany string `form:"logistics_company" binding:"required"` // 物流公司名称 + LogisticsNo string `form:"logistics_no" binding:"required"` // 物流单号 +} + +type CancelSalesOrderRequest struct { + OrderID int64 `form:"order_id" binding:"required"` +} + +type CancelOutboundWaveRequest struct { + WaveID int64 `form:"wave_id" binding:"required"` +} + +// StockCheckAdjustRequest 盘库调整请求(加库存/减库存) +type StockCheckAdjustRequest struct { + WarehouseID int64 `form:"warehouse_id" binding:"required"` // 仓库ID + ProductID int64 `form:"product_id" binding:"required"` // 商品ID + LocationID int64 `form:"location_id" binding:"required"` // 库位ID + BatchNo string `form:"batch_no"` // 批次号(可选) + Quantity int64 `form:"quantity" binding:"required,min=1"` // 调整数量(正数) + AdjustType int8 `form:"adjust_type" binding:"required,oneof=1 2"` // 调整类型:1=加库存,2=减库存 + Remark string `form:"remark"` // 备注 +} + +// StockCheckReturnRequest 盘库退货请求 +type StockCheckReturnRequest struct { + SalesOrderID int64 `form:"sales_order_id" binding:"required"` // 销售订单ID + SalesOrderItemID int64 `form:"sales_order_item_id" binding:"required"` // 销售订单明细ID + Remark string `form:"remark"` // 备注 +} diff --git a/models/request/product.go b/models/request/product.go new file mode 100644 index 0000000..71959bf --- /dev/null +++ b/models/request/product.go @@ -0,0 +1,181 @@ +package request + +// ProductRequest 创建商品请求 +type ProductRequest struct { + ID int64 `form:"id"` // 商品ID + CategoryID int64 `form:"category_id"` // 分类ID + StandardProductID int64 `form:"standard_product_id"` // 标准商品ID + Name string `form:"name" binding:"required"` // 商品名称 + Appearance int64 `form:"appearance" binding:"required"` // 商品外观 + Barcode string `form:"barcode" binding:"required"` // 商品条码 + Price int64 `form:"price"` // 商品价格 + LiveImage []string `form:"live_image[]"` // 商品图片 + IsBatchManaged int8 `form:"is_batch_managed"` // 批次管理 + IsShelfLifeManaged int8 `form:"is_shelf_life_managed"` // 保质期管理 + Status int8 `form:"status"` // 商品状态 +} + +// GetProductListRequest 获取商品列表请求 +type GetProductListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + Keyword string `form:"keyword"` + Name string `form:"name"` + Barcode string `form:"barcode"` + Status string `form:"status"` + IDs []int64 `form:"ids[]"` + StartCreatedAt int64 `form:"start_created_at"` + EndCreatedAt int64 `form:"end_created_at"` + MinSalePrice int64 `form:"min_sale_price"` + MaxSalePrice int64 `form:"max_sale_price"` + MinStock int64 `form:"min_stock"` + MaxStock int64 `form:"max_stock"` + WarehouseID int64 `form:"warehouse_id"` + LocationID int64 `form:"location_id"` +} + +// GetDistributionProductListRequest 获取分销商品列表请求 +type GetDistributionProductListRequest struct { + UserID int64 `form:"user_id" binding:"required"` + Page int `form:"page"` + PageSize int `form:"page_size"` + Keyword string `form:"keyword"` + Name string `form:"name"` + Barcode string `form:"barcode"` + StartCreatedAt int64 `form:"start_created_at"` + EndCreatedAt int64 `form:"end_created_at"` + MinSalePrice int64 `form:"min_sale_price"` + MaxSalePrice int64 `form:"max_sale_price"` + MinStock int64 `form:"min_stock"` + MaxStock int64 `form:"max_stock"` + StockOperator string `form:"stock_operator"` // 库存运算符: ">", "<", "=", ">=", "<=" + StockValue int64 `form:"stock_value"` // 库存数值 + SalePriceOperator string `form:"saleprice_operator"` // 售价运算符: ">", "<", "=", ">=", "<=" + SalePriceValue int64 `form:"saleprice_value"` // 售价数值 + WarehouseID int64 `form:"warehouse_id"` + LocationID int64 `form:"location_id"` + Appearance int64 `form:"appearance"` + StartStockAt int64 `form:"start_stock_at"` + EndStockAt int64 `form:"end_stock_at"` +} + +// UpdatePriceRequest 修改售价请求 +type UpdatePriceRequest struct { + ProductID int64 `form:"product_id" binding:"required"` // 商品ID + UserID int64 `form:"user_id" binding:"required"` // 关联ID + SalePrice int64 `form:"sale_price" binding:"required"` // 售价 + Cost int64 `form:"cost"` // 运费 +} + +// RetryOutTaskRequest 重试外部任务请求 +type RetryOutTaskRequest struct { + ShopID int64 `form:"shop_id" binding:"required"` // 店铺ID + ShopType int8 `form:"shop_type" binding:"required"` // 店铺类型 + ProductID int64 `form:"product_id" binding:"required"` // 商品ID +} + +// BatchPushProductRequest 批量推送商品到店铺请求 +type BatchPushProductRequest struct { + UserID int64 `form:"user_id" json:"user_id" binding:"required"` // 用户ID(租户) + ShopIDs []int64 `form:"shop_ids" json:"shop_ids" binding:"required"` // 商家ID数组 + ShopTypes []int8 `form:"shop_types" json:"shop_types" binding:"required"` // 商家类型数组(与shop_ids一一对应) + ProductIDs []int64 `form:"product_ids" json:"product_ids" binding:"required"` // 商品ID数组 +} + +// ExportProductRequest 导出商品请求 +type ExportProductRequest struct { + StartCreatedAt int64 `form:"start_created_at"` // 创建时间开始 + EndCreatedAt int64 `form:"end_created_at"` // 创建时间结束 + MinSalePrice int64 `form:"min_sale_price"` // 售价最小值 + MaxSalePrice int64 `form:"max_sale_price"` // 售价最大值 + MinStock int64 `form:"min_stock"` // 库存最小值 + MaxStock int64 `form:"max_stock"` // 库存最大值 + WarehouseID int64 `form:"warehouse_id"` // 仓库ID + Type int8 `form:"type" binding:"oneof=0 1"` // 0: 仓库商品, 1: 标准商品 +} + +// DeleteProductRequest 删除商品请求 +type DeleteProductRequest struct { + ID int64 `form:"id" binding:"required"` // 商品ID +} + +type ProductLogRequest struct { + ID int64 `form:"id"` + Barcode string `form:"barcode"` + OldName string `form:"old_name"` + NewName string `form:"new_name"` + OldPublisher string `form:"old_publisher"` + NewPublisher string `form:"new_publisher"` + OldAuthor string `form:"old_author"` + NewAuthor string `form:"new_author"` + OldPublicationTime int64 `form:"old_publication_time"` + NewPublicationTime int64 `form:"new_publication_time"` + OldPrice int64 `form:"old_price"` + NewPrice int64 `form:"new_price"` + OldBindingLayout string `form:"old_binding_layout"` + NewBindingLayout string `form:"new_binding_layout"` + OldPageCount int64 `form:"old_page_count"` + NewPageCount int64 `form:"new_page_count"` + OldWordCount int64 `form:"old_word_count"` + NewWordCount int64 `form:"new_word_count"` + OldLiveImage []string `form:"old_live_image[]"` + NewLiveImage []string `form:"new_live_image[]"` + OldIsSuit int8 `form:"old_is_suit"` + NewIsSuit int8 `form:"new_is_suit"` +} + +type GetProductLogListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + Barcode string `form:"barcode"` + Status *int8 `form:"status"` +} + +type AuditProductLogRequest struct { + ID int64 `form:"id" binding:"required"` + Status int8 `form:"status" binding:"required,oneof=1 2"` + NewName string `form:"new_name"` + NewPublisher string `form:"new_publisher"` + NewAuthor string `form:"new_author"` + NewPublicationTime int64 `form:"new_publication_time"` + NewPrice int64 `form:"new_price"` + NewBindingLayout string `form:"new_binding_layout"` + NewPageCount int64 `form:"new_page_count"` + NewWordCount int64 `form:"new_word_count"` + NewLiveImage []string `form:"new_live_image[]"` + NewIsSuit int8 `form:"new_is_suit"` +} + +type DeleteProductLogRequest struct { + ID int64 `form:"id" binding:"required"` +} + +// GetProductInventoryRequest 获取商品库存请求 +type GetProductInventoryRequest struct { + UserID int64 `form:"user_id" binding:"required"` // 用户ID + ProductID int64 `form:"product_id" binding:"required"` // 商品ID +} + +type GetShopProductDetailRequest struct { + ShopID int64 `form:"shop_id" binding:"required"` + Status int8 `form:"status"` + Page int `form:"page"` + PageSize int `form:"page_size"` +} + +type GetProductDetailRequest struct { + ID int64 `form:"id" binding:"required"` +} + +// PushProductToShopRequest 上架到商铺请求 +type PushProductToShopRequest struct { + UserID int64 `form:"user_id" json:"user_id" binding:"required"` // 用户ID(租户) + WarehouseID int64 `form:"warehouse_id" json:"warehouse_id" binding:"required"` // 仓库ID + LocationID int64 `form:"location_id" json:"location_id" binding:"required"` // 货位ID + ISBN string `form:"isbn" json:"isbn" binding:"required"` // ISBN + ProductName string `form:"product_name" json:"product_name"` // 图书名称 + Price int64 `form:"price" json:"price" binding:"required"` // 价格(分) + Stock int64 `form:"stock" json:"stock" binding:"required"` // 存量 + Photos []string `form:"photos" json:"photos"` // 照片数组 + Appearance int64 `form:"appearance" json:"appearance" binding:"required"` // 品相 +} diff --git a/models/request/purchase.go b/models/request/purchase.go new file mode 100644 index 0000000..05f4fe8 --- /dev/null +++ b/models/request/purchase.go @@ -0,0 +1,18 @@ +package request + +// GetPurchaseOrderListRequest 获取采购订单列表请求 +type GetPurchaseOrderListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + PoNo string `form:"po_no"` + Status int8 `form:"status"` + SupplierID int64 `form:"supplier_id"` + WarehouseID int64 `form:"warehouse_id"` + StartDate int64 `form:"start_date"` + EndDate int64 `form:"end_date"` +} + +// GetPurchaseOrderDetailRequest 获取采购订单详情请求 +type GetPurchaseOrderDetailRequest struct { + ID int64 `form:"id" binding:"required"` +} diff --git a/models/request/receiving.go b/models/request/receiving.go new file mode 100644 index 0000000..0335185 --- /dev/null +++ b/models/request/receiving.go @@ -0,0 +1,45 @@ +package request + +// GetReceivingOrderListRequest 获取入库单列表请求 +type GetReceivingOrderListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + ReceivingNo string `form:"receiving_no"` + Status int8 `form:"status"` + SupplierID int64 `form:"supplier_id"` + WarehouseID int64 `form:"warehouse_id"` + PurchaseOrderID int64 `form:"purchase_order_id"` + WaveTaskID int64 `form:"wave_task_id"` + StartDate int64 `form:"start_date"` + EndDate int64 `form:"end_date"` +} + +// GetReceivingOrderDetailRequest 获取入库单详情请求 +type GetReceivingOrderDetailRequest struct { + ID int64 `form:"id" binding:"required"` +} + +// ExternalProductSyncRequest 外部商品同步请求 +type ExternalProductSyncRequest struct { + ShopIDs string `json:"shopIds"` // 店铺id,多个用逗号分隔 + Data []ExternalProductSyncData `json:"data"` // 商品数据数组 +} + +// ExternalProductSyncData 外部商品同步数据项 +type ExternalProductSyncData struct { + ProductID int64 `json:"productId"` // 商品id + WarehouseID int64 `json:"warehouseId"` // 仓库id + TrilateralID int64 `json:"trilateralId"` // 平台商品id + Img string `json:"img"` // 图片地址 + FinishTime int64 `json:"finishTime"` // 创建时间 + TotalPrice int64 `json:"totalPrice"` // 价格 单位分 + ISBN string `json:"isbn"` // ISBN + Title string `json:"title"` // 标题 + Quality int64 `json:"quality"` // 品相 八五品就是85 全新就是100 + GoodsCode string `json:"goodsCode"` // 商品编码 + ShopType int8 `json:"shopType"` // 店铺类型 1拼多多 2孔夫子 5闲鱼 + Stock int64 `json:"stock"` // 库存 + IsOnSale int8 `json:"isOnSale"` // 上下架状态 1上架 0下架 + SkuCode string `json:"skuCode"` // sku编号 + SkuID int64 `json:"skuId"` // skuId +} diff --git a/models/request/sales.go b/models/request/sales.go new file mode 100644 index 0000000..bb6b7b6 --- /dev/null +++ b/models/request/sales.go @@ -0,0 +1,30 @@ +package request + +// GetSalesOrderListRequest 获取销售订单列表请求 +type GetSalesOrderListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + SoNo string `form:"so_no"` + Status int8 `form:"status"` + CustomerID int64 `form:"customer_id"` + WarehouseID int64 `form:"warehouse_id"` + StartDate int64 `form:"start_date"` + EndDate int64 `form:"end_date"` +} + +// GetSalesOrderDetailRequest 获取销售订单详情请求 +type GetSalesOrderDetailRequest struct { + ID int64 `form:"id" binding:"required"` +} + +// GetSalesOrderDetailListRequest 获取销售订单详情列表请求 +type GetSalesOrderDetailListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + //SoNo string `form:"so_no"` + //Status int8 `form:"status"` + //CustomerID int64 `form:"customer_id"` + //WarehouseID int64 `form:"warehouse_id"` + //StartDate int64 `form:"start_date"` + //EndDate int64 `form:"end_date"` +} diff --git a/models/request/shipping.go b/models/request/shipping.go new file mode 100644 index 0000000..020e4d7 --- /dev/null +++ b/models/request/shipping.go @@ -0,0 +1,28 @@ +package request + +// GetShippingOrderListRequest 获取发货单列表请求 +type GetShippingOrderListRequest struct { + Page int `form:"page" json:"page" binding:"omitempty,min=1"` + PageSize int `form:"page_size" json:"page_size" binding:"omitempty,min=1,max=100"` + Status int8 `form:"status" json:"status"` + CustomerID int64 `form:"customer_id" json:"customer_id"` + ShippingNo string `form:"shipping_no" json:"shipping_no"` + StartDate int64 `form:"start_date" json:"start_date"` + EndDate int64 `form:"end_date" json:"end_date"` +} + +// GetShippingOrderDetailRequest 获取发货单详情请求 +type GetShippingOrderDetailRequest struct { + ID int64 `form:"id" json:"id" binding:"required,min=1"` +} + +// GetShippingOrderDetailListRequest 获取发货单详情列表请求 +type GetShippingOrderDetailListRequest struct { + Page int `form:"page" json:"page" binding:"omitempty,min=1"` + PageSize int `form:"page_size" json:"page_size" binding:"omitempty,min=1,max=100"` + Status int8 `form:"status" json:"status"` + CustomerID int64 `form:"customer_id" json:"customer_id"` + ShippingNo string `form:"shipping_no" json:"shipping_no"` + StartDate int64 `form:"start_date" json:"start_date"` + EndDate int64 `form:"end_date" json:"end_date"` +} diff --git a/models/request/shop.go b/models/request/shop.go new file mode 100644 index 0000000..953d90c --- /dev/null +++ b/models/request/shop.go @@ -0,0 +1,64 @@ +package request + +type QueryShopRequest struct { + Keyword string `form:"keyword"` + ShopType *int8 `form:"shop_type"` + Status *int8 `form:"status"` + TenantID string `form:"tenant_id"` + Page int `form:"page,default=1"` + PageSize int `form:"page_size,default=10"` +} + +type CreateShopRequest struct { + MallID int64 `form:"mall_id"` + ShopNike string `form:"shop_nike" binding:"max=255"` + ShopType int8 `form:"shop_type" binding:"omitempty,oneof=1 2 5"` + ShopGroup string `form:"shop_group" binding:"max=255"` + ShopName string `form:"shop_name" binding:"required,max=255"` + ShopAliasName string `form:"shop_alias_name" binding:"max=255"` + ShopAuthorize string `form:"shop_authorize" binding:"max=255"` + ExpirationTime int64 `form:"expiration_time"` + ShopKey string `form:"shop_key" binding:"max=255"` + Token string `form:"token" binding:"max=255"` + RefreshToken string `form:"refresh_token" binding:"max=255"` + TenantID string `form:"tenant_id" binding:"max=20"` + UserID int64 `form:"user_id"` + Account string `form:"account" binding:"max=255"` + Password string `form:"password" binding:"max=255"` + IsSynOrder *int8 `form:"is_syn_order" binding:"omitempty,oneof=0 1"` + SkuSpec string `form:"sku_spec" binding:"max=255"` + ShopExpirationTime int64 `form:"shop_expiration_time"` + IsExpiration *int8 `form:"is_expiration" binding:"omitempty,oneof=0 1 2"` + PublishType *int8 `form:"publish_type" binding:"omitempty,oneof=0 1"` + Deregulation *int8 `form:"deregulation" binding:"omitempty,oneof=1 2"` +} + +type UpdateShopRequest struct { + ID int64 `form:"id" binding:"required"` + MallID *int64 `form:"mall_id"` + ShopNike string `form:"shop_nike" binding:"omitempty,max=255"` + ShopType *int8 `form:"shop_type" binding:"omitempty,oneof=1 2 5"` + ShopGroup string `form:"shop_group" binding:"omitempty,max=255"` + ShopName string `form:"shop_name" binding:"omitempty,max=255"` + ShopAliasName string `form:"shop_alias_name" binding:"omitempty,max=255"` + ShopAuthorize string `form:"shop_authorize" binding:"omitempty,max=255"` + ExpirationTime *int64 `form:"expiration_time"` + ShopKey string `form:"shop_key" binding:"omitempty,max=255"` + Token string `form:"token" binding:"omitempty,max=255"` + RefreshToken string `form:"refresh_token" binding:"omitempty,max=255"` + Status *int8 `form:"status" binding:"omitempty,oneof=0 1"` + TenantID string `form:"tenant_id" binding:"omitempty,max=20"` + UserID *int64 `form:"user_id"` + Account string `form:"account" binding:"omitempty,max=255"` + Password string `form:"password" binding:"omitempty,max=255"` + IsSynOrder *int8 `form:"is_syn_order" binding:"omitempty,oneof=0 1"` + SkuSpec string `form:"sku_spec" binding:"omitempty,max=255"` + ShopExpirationTime *int64 `form:"shop_expiration_time"` + IsExpiration *int8 `form:"is_expiration" binding:"omitempty,oneof=0 1 2"` + PublishType *int8 `form:"publish_type" binding:"omitempty,oneof=0 1"` + Deregulation *int8 `form:"deregulation" binding:"omitempty,oneof=1 2"` +} + +type DeleteShopRequest struct { + ID int64 `form:"id" binding:"required"` +} diff --git a/models/request/sorting_settings.go b/models/request/sorting_settings.go new file mode 100644 index 0000000..8fa923a --- /dev/null +++ b/models/request/sorting_settings.go @@ -0,0 +1,18 @@ +package request + +// SaveSortingSettingsRequest 保存分拣设置请求 +type SaveSortingSettingsRequest struct { + SupplierNumber string `form:"supplier_number"` + PurchaseOrderRemark string `form:"purchase_order_remark"` + ClassifyByCondition *int8 `form:"classify_by_condition"` + WangdiantongEffect string `form:"wangdiantong_effect"` + WarehouseNumber string `form:"warehouse_number"` + ShelfStore string `form:"shelf_store"` + Container string `form:"container"` + CapacityWeight *int64 `form:"capacity_weight"` + QuickPicking *int8 `form:"quick_picking"` + BlockHkMacauTaiwan *int8 `form:"block_hk_macau_taiwan"` + BlockMagazine *int8 `form:"block_magazine"` + BlockSpeedInstall *int8 `form:"block_speed_install"` + TakePhoto *int8 `form:"take_photo"` +} diff --git a/models/request/split_account_config.go b/models/request/split_account_config.go new file mode 100644 index 0000000..5ab7720 --- /dev/null +++ b/models/request/split_account_config.go @@ -0,0 +1,31 @@ +package request + +// GetSplitAccountConfigListRequest 获取分账配置列表请求 +type GetSplitAccountConfigListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + Keyword string `form:"keyword"` + Status string `form:"status"` +} + +// AddSplitAccountConfigRequest 添加分账配置请求 +type AddSplitAccountConfigRequest struct { + RuleName string `form:"rule_name" binding:"required"` + RuleValue string `form:"rule_value" binding:"required"` + Status int8 `form:"status"` + Description string `form:"description"` +} + +// UpdateSplitAccountConfigRequest 更新分账配置请求 +type UpdateSplitAccountConfigRequest struct { + ID int64 `form:"id" binding:"required"` + RuleName string `form:"rule_name"` + RuleValue string `form:"rule_value"` + Status int8 `form:"status"` + Description string `form:"description"` +} + +// DeleteSplitAccountConfigRequest 删除分账配置请求 +type DeleteSplitAccountConfigRequest struct { + ID int64 `form:"id" binding:"required"` +} diff --git a/models/request/split_account_deduction_log.go b/models/request/split_account_deduction_log.go new file mode 100644 index 0000000..2e695a3 --- /dev/null +++ b/models/request/split_account_deduction_log.go @@ -0,0 +1,39 @@ +package request + +// GetSplitAccountDeductionLogListRequest 获取分账扣钱日志列表请求 +type GetSplitAccountDeductionLogListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + BusinessNo string `form:"business_no"` + ConfigID string `form:"config_id"` + StartCreatedAt string `form:"start_created_at"` + EndCreatedAt string `form:"end_created_at"` +} + +// AddSplitAccountDeductionLogRequest 添加分账扣钱日志请求 +type AddSplitAccountDeductionLogRequest struct { + BusinessNo string `form:"business_no" binding:"required"` + ConfigID int64 `form:"config_id" binding:"required"` + ConfigName string `form:"config_name" binding:"required"` + DeductionDetails string `form:"deduction_details" binding:"required"` + TotalAmount float64 `form:"total_amount" binding:"required"` + DeductionAmount float64 `form:"deduction_amount" binding:"required"` + RemainingAmount float64 `form:"remaining_amount" binding:"required"` +} + +// UpdateSplitAccountDeductionLogRequest 更新分账扣钱日志请求 +type UpdateSplitAccountDeductionLogRequest struct { + ID int64 `form:"id" binding:"required"` + BusinessNo string `form:"business_no"` + ConfigID int64 `form:"config_id"` + ConfigName string `form:"config_name"` + DeductionDetails string `form:"deduction_details"` + TotalAmount float64 `form:"total_amount"` + DeductionAmount float64 `form:"deduction_amount"` + RemainingAmount float64 `form:"remaining_amount"` +} + +// DeleteSplitAccountDeductionLogRequest 删除分账扣钱日志请求 +type DeleteSplitAccountDeductionLogRequest struct { + ID int64 `form:"id" binding:"required"` +} diff --git a/models/request/statist.go b/models/request/statist.go new file mode 100644 index 0000000..d54cf3a --- /dev/null +++ b/models/request/statist.go @@ -0,0 +1,19 @@ +package request + +// DashboardStatistRequest 仪表盘统计请求 +type DashboardStatistRequest struct { + StartDate int64 `form:"start_date" json:"start_date"` // 开始时间戳(秒) + EndDate int64 `form:"end_date" json:"end_date"` // 结束时间戳(秒) +} + +// WarehouseStatistRequest 仓库统计请求 +type WarehouseStatistRequest struct { + StartDate int64 `form:"start_date" json:"start_date"` // 开始时间戳(秒),可选,默认今日 + EndDate int64 `form:"end_date" json:"end_date"` // 结束时间戳(秒),可选,默认今日 +} + +// OrderStatistRequest 订单统计请求 +type OrderStatistRequest struct { + StartDate int64 `form:"start_date" json:"start_date"` // 开始时间戳(秒),可选,默认今日 + EndDate int64 `form:"end_date" json:"end_date"` // 结束时间戳(秒),可选,默认今日 +} diff --git a/models/request/supplier.go b/models/request/supplier.go new file mode 100644 index 0000000..219941d --- /dev/null +++ b/models/request/supplier.go @@ -0,0 +1,35 @@ +package request + +// GetSupplierListRequest 获取供应商列表请求 +type GetSupplierListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + Keyword string `form:"keyword"` + Status string `form:"status"` +} + +// AddSupplierRequest 添加供应商请求 +type AddSupplierRequest struct { + Code string `form:"code" binding:"required"` + Name string `form:"name" binding:"required"` + ContactPerson string `form:"contact_person"` + ContactPhone string `form:"contact_phone"` + Address string `form:"address"` + Status int8 `form:"status"` +} + +// UpdateSupplierRequest 更新供应商请求 +type UpdateSupplierRequest struct { + ID int64 `form:"id" binding:"required"` + Code string `form:"code"` + Name string `form:"name"` + ContactPerson string `form:"contact_person"` + ContactPhone string `form:"contact_phone"` + Address string `form:"address"` + Status int8 `form:"status"` +} + +// DeleteSupplierRequest 删除供应商请求 +type DeleteSupplierRequest struct { + ID int64 `form:"id" binding:"required"` +} diff --git a/models/request/user_type.go b/models/request/user_type.go new file mode 100644 index 0000000..d9e7d8d --- /dev/null +++ b/models/request/user_type.go @@ -0,0 +1,34 @@ +package request + +// GetUserTypeListRequest 获取用户类型列表请求 +type GetUserTypeListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + Name string `form:"name"` +} + +// AddUserTypeRequest 添加用户类型请求 +type AddUserTypeRequest struct { + CheckStatus int8 `form:"check_status" binding:"required"` + CheckCode int8 `form:"check_code" binding:"required"` + CheckNum int64 `form:"check_num" binding:"required"` + Name string `form:"name" binding:"required"` + Icon string `form:"icon"` + Remark string `form:"remark"` +} + +// UpdateUserTypeRequest 更新用户类型请求 +type UpdateUserTypeRequest struct { + ID int64 `form:"id" binding:"required"` + CheckStatus *int8 `form:"check_status"` + CheckCode *int8 `form:"check_code"` + CheckNum *int64 `form:"check_num"` + Name string `form:"name"` + Icon string `form:"icon"` + Remark string `form:"remark"` +} + +// DeleteUserTypeRequest 删除用户类型请求 +type DeleteUserTypeRequest struct { + ID int64 `form:"id" binding:"required"` +} diff --git a/models/request/warehouse.go b/models/request/warehouse.go new file mode 100644 index 0000000..4654f63 --- /dev/null +++ b/models/request/warehouse.go @@ -0,0 +1,57 @@ +package request + +// QueryWarehouseRequest 查询仓库请求参数 +type QueryWarehouseRequest struct { + IDs []int64 `form:"ids[]"` // 仓库ID列表,支持批量查询 + Keyword string `form:"keyword"` // 关键字,用于模糊匹配仓库编码或名称 + Type *int8 `form:"type"` // 仓库类型:1:主仓库,2:备用仓库,3:中转仓库(使用指针区分未传值) + Status *int8 `form:"status"` // 仓库状态:0-禁用,1-启用(使用指针区分未传值) + Page int `form:"page,default=1"` // 页码,默认1 + PageSize int `form:"page_size,default=10"` // 每页数量,默认10 +} + +// CreateWarehouseRequest 创建仓库请求参数 +type CreateWarehouseRequest struct { + Code string `form:"code" binding:"required,max=50"` // 仓库ID,必填 + Name string `form:"name" binding:"required,max=100"` // 仓库名称,可选,最大 100 字符 + Type int8 `form:"type" binding:"omitempty,oneof=1 2 3"` // 仓库类型:1:主仓库,2:备用仓库,3:中转仓库 + ContactPerson string `form:"contact_person" binding:"required"` // 联系人,必填 + ContactPhone string `form:"contact_phone" binding:"required"` // 联系电话,必填 + Province string `form:"province" binding:"required"` // 省份,必填 + City string `form:"city" binding:"required"` // 城市,必填 + District string `form:"district" binding:"required"` // 区/县,必填 + Address string `form:"address" binding:"required,max=255"` // 详细地址,必填,最大 255 字符 + Status int8 `form:"status" binding:"omitempty,oneof=0 1"` // 仓库状态:0-禁用,1-启用,可选 + LogisticsID int64 `form:"logistics_id"` // 关联物流商ID,可选 +} + +// UpdateWarehouseRequest 更新仓库请求参数 +type UpdateWarehouseRequest struct { + ID int64 `form:"id" binding:"required"` // 仓库ID,必填 + Name string `form:"name" binding:"omitempty,max=100"` // 仓库名称,可选,最大 100 字符 + Type int8 `form:"type" binding:"omitempty,oneof=1 2 3"` // 仓库类型:1:主仓库,2:备用仓库,3:中转仓库 + ContactPerson string `form:"contact_person" binding:"required"` // 联系人,必填 + ContactPhone string `form:"contact_phone" binding:"required"` // 联系电话,必填 + Province string `form:"province" binding:"required"` // 省份,必填 + City string `form:"city" binding:"required"` // 城市,必填 + District string `form:"district" binding:"required"` // 区/县,必填 + Address string `form:"address" binding:"required,max=255"` // 详细地址,必填,最大 255 字符 + Status int8 `form:"status" binding:"omitempty,oneof=0 1"` // 仓库状态:0-禁用,1-启用,可选 + LogisticsID int64 `form:"logistics_id"` // 关联物流商ID,可选 +} + +// DeleteWarehouseRequest 删除仓库请求参数 +type DeleteWarehouseRequest struct { + ID int64 `form:"id" binding:"required"` // 货位ID,必填 +} + +// ExportLocationRequest 导出库位数据请求参数 +type ExportLocationRequest struct { + WarehouseID int64 `json:"warehouse_id" form:"warehouse_id" binding:"required"` // 仓库ID,必填 + Type int `json:"type" form:"type"` // 导出类型:0 +} + +// ImportLocationRequest 导入库位数据请求参数 +type ImportLocationRequest struct { + WarehouseID int64 `form:"warehouse_id" binding:"required"` // 目标仓库ID,必填 +} diff --git a/models/request/wave.go b/models/request/wave.go new file mode 100644 index 0000000..4bd1f95 --- /dev/null +++ b/models/request/wave.go @@ -0,0 +1,17 @@ +package request + +// GetWaveTaskListRequest 获取波次任务列表请求 +type GetWaveTaskListRequest struct { + Page int `form:"page"` + PageSize int `form:"page_size"` + TaskNo string `form:"task_no"` + TaskType int8 `form:"task_type"` + Status int8 `form:"status"` + AssigneeID int64 `form:"assignee_id"` + WaveNo string `form:"wave_no"` +} + +// GetWaveTaskDetailRequest 获取波次任务详情请求 +type GetWaveTaskDetailRequest struct { + ID int64 `form:"id" binding:"required"` +} diff --git a/models/response/Employee.go b/models/response/Employee.go new file mode 100644 index 0000000..899290a --- /dev/null +++ b/models/response/Employee.go @@ -0,0 +1,101 @@ +package response + +import ( + "psi/models" +) + +// LoginResponse 登录响应 +type LoginResponse struct { + ID int64 `json:"id"` // 员工ID + EmployeeID string `json:"employee_id"` // 工号 + Fid int64 `json:"fid"` // 父级ID + AboutId string `json:"about_id"` // 租户ID + Username string `json:"username"` // 用户名 + Name string `json:"name"` // 姓名 + Role int64 `json:"role"` // 角色 + Score int64 `json:"score"` // 积分 + From string `json:"from"` + Token string `json:"token"` // 令牌 + ExpireIn int `json:"expire_in"` // 过期时间(小时) + LevelInfo *EmployeeLevelInfo `json:"level_info"` // 等级信息 +} + +// EmployeeLevelInfo 员工等级信息 +type EmployeeLevelInfo struct { + Level int8 `json:"level"` // 等级 + MaxNum int64 `json:"max_num"` // 最大数量 + ExpireTime int64 `json:"expire_time"` // 到期时间 + PayTime int64 `json:"pay_time"` // 支付时间 +} + +// EmployeeListResponse 员工列表响应 +type EmployeeListResponse struct { + List []EmployeeItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// AddEmployeeResponse 添加员工响应 +type AddEmployeeResponse struct { + EmployeeID string `json:"employee_id"` + Username string `json:"username"` + Name string `json:"name"` +} + +// EmployeeItem 员工列表项 +type EmployeeItem struct { + ID int64 `json:"id"` + EmployeeIDStr string `json:"employee_id"` + Fid int64 `json:"fid"` // 父级ID + AboutId int64 `json:"about_id"` // 租户ID + Code string `json:"code"` // 机械码 + Username string `json:"username"` + Name string `json:"name"` + Phone string `json:"phone"` + Role int64 `json:"role"` + Score int64 `json:"score"` + Status int8 `json:"status"` + From string `json:"from"` + LastLoginAt int64 `json:"last_login_at"` + CreatedAt int64 `json:"created_at"` + ExpireTime int64 `json:"expire_time"` + LevelInfo *EmployeeLevelInfo `json:"level_info"` // 等级信息 + Settings models.EmployeeSettingsConfig `json:"settings"` + UserType *UserTypeInfo `json:"user_type"` +} + +type UserTypeInfo struct { + ID int64 `json:"id"` + Name string `json:"name"` + Icon string `json:"icon"` +} + +// ConvertEmployeeToItem 将员工模型转换为响应项 +func ConvertEmployeeToItem(emp models.Employee) EmployeeItem { + return EmployeeItem{ + ID: emp.ID, + EmployeeIDStr: emp.EmployeeIDStr, + Fid: emp.Fid, + AboutId: emp.AboutId, + Code: emp.Code, + Username: emp.Username, + Name: emp.Name, + Phone: emp.Phone, + Role: emp.Role, + Score: emp.Score, + From: emp.From, + Status: emp.Status, + LastLoginAt: emp.LastLoginAt, + CreatedAt: emp.CreatedAt, + ExpireTime: emp.ExpireTime, + } +} + +// EmployeeLevelConfigResponse 员工等级配置响应 +type EmployeeLevelConfigResponse struct { + Level int8 `json:"level"` // 等级 + MaxNum int64 `json:"max_num"` // 最大子账号数量 + Price int64 `json:"price"` // 价格(单位:分) + LevelName string `json:"level_name"` // 等级名称 +} diff --git a/models/response/barcode.go b/models/response/barcode.go new file mode 100644 index 0000000..46167db --- /dev/null +++ b/models/response/barcode.go @@ -0,0 +1,6 @@ +package response + +type BarcodeResponse struct { + ImageBase64 string `json:"image_base64"` + Content string `json:"content"` +} diff --git a/models/response/book.go b/models/response/book.go new file mode 100644 index 0000000..937774a --- /dev/null +++ b/models/response/book.go @@ -0,0 +1,57 @@ +package response + +import ( + "psi/es" + "psi/models" +) + +// GetEsBookResponse 获取图书基础信息响应 +type GetEsBookResponse struct { + Data ESBook `json:"data"` +} + +// GetEsBookListResponse 获取套装书列表响应(返回多条数据) +type GetEsBookListResponse struct { + Data []ESBook `json:"data"` +} + +type ESBook struct { + ID int64 `json:"id,omitempty"` + Fid int64 `json:"fid"` + BookName es.FlexibleString `json:"book_name,omitempty"` + FBookName es.FlexibleString `json:"f_book_name"` + BookPic es.BookPicObj `json:"book_pic,omitempty"` + BookPicS es.BookPicSObj `json:"book_pic_s,omitempty"` + BookPicB string `json:"book_pic_b,omitempty"` + BookDefPic es.BookDefPicObj `json:"book_def_pic,omitempty"` + ISBN string `json:"isbn,omitempty"` + FISBN string `json:"f_isbn"` + Author string `json:"author,omitempty"` + Category string `json:"category,omitempty"` + Publisher string `json:"publisher,omitempty"` + PublicationTime string `json:"publication_time,omitempty"` + BindingLayout string `json:"binding_layout,omitempty"` + FixPrice es.Float64OrString `json:"fix_price,omitempty"` + IsSuit int `json:"is_suit"` + PageCount es.NumberOrString `json:"page_count"` // 页数 + WordCount es.NumberOrString `json:"word_count"` // 字数 + BookFormat es.NumberOrString `json:"book_format"` // 多少开 + CatId es.CatIdObject `json:"cat_id"` // 类目 +} + +// GuessBookInfo 存储提取结果 +type GuessBookInfo struct { + BookName string + Author string + Publisher string +} + +type SuitBookResponse struct { + WithFid []models.BookInfo `json:"with_fid"` + WithoutFid []models.BookInfo `json:"without_fid"` +} + +type NoIsbnBookResponse struct { + Total int64 `json:"total"` // 总数 + List []models.BookInfo `json:"list"` // 列表 +} diff --git a/models/response/car.go b/models/response/car.go new file mode 100644 index 0000000..2c21dc1 --- /dev/null +++ b/models/response/car.go @@ -0,0 +1,37 @@ +package response + +import "psi/models" + +type CarShopInfo struct { + ShopID string `json:"id"` + ShopName string `json:"shop_name"` + ShopType int8 `json:"shop_type"` + ShopTypeText string `json:"shop_type_text"` +} +type CarResponse struct { + ID int64 `json:"id"` + WarehouseID int64 `json:"warehouse_id"` + PushType int8 `json:"push_type"` + Code int64 `json:"code"` + Name string `json:"name"` + Capacity int64 `json:"capacity"` + Appearance int64 `json:"appearance"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` + Shops []CarShopInfo `json:"shops"` +} + +func ConvertCarToResponse(car models.Car) CarResponse { + return CarResponse{ + ID: car.ID, + WarehouseID: car.WarehouseID, + PushType: car.PushType, + Code: car.Code, + Name: car.Name, + Capacity: car.Capacity, + Appearance: car.Appearance, + CreatedAt: car.CreatedAt, + UpdatedAt: car.UpdatedAt, + Shops: []CarShopInfo{}, + } +} diff --git a/models/response/config.go b/models/response/config.go new file mode 100644 index 0000000..ab8526e --- /dev/null +++ b/models/response/config.go @@ -0,0 +1,31 @@ +package response + +import "psi/models" + +// ConfigListResponse 配置列表响应 +type ConfigListResponse struct { + List []ConfigItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// ConfigItem 配置列表项 +type ConfigItem struct { + ID int64 `json:"id"` + Key string `json:"key"` + Value string `json:"value"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// ConvertConfigToItem 将配置模型转换为响应项 +func ConvertConfigToItem(config models.Config) ConfigItem { + return ConfigItem{ + ID: config.ID, + Key: config.Key, + Value: config.Value, + CreatedAt: config.CreatedAt, + UpdatedAt: config.UpdatedAt, + } +} diff --git a/models/response/employee_settings.go b/models/response/employee_settings.go new file mode 100644 index 0000000..1298077 --- /dev/null +++ b/models/response/employee_settings.go @@ -0,0 +1,23 @@ +package response + +import "psi/models" + +// EmployeeSettingsResponse 员工设置响应 +type EmployeeSettingsResponse struct { + ID int64 `json:"id"` + EmpID int64 `json:"emp_id"` + Settings models.EmployeeSettingsConfig `json:"settings"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// ConvertEmployeeSettingsToResponse 转换员工设置为响应对象 +func ConvertEmployeeSettingsToResponse(settings models.EmployeeSettings, config models.EmployeeSettingsConfig) EmployeeSettingsResponse { + return EmployeeSettingsResponse{ + ID: settings.ID, + EmpID: settings.EmpID, + Settings: config, + CreatedAt: settings.CreatedAt, + UpdatedAt: settings.UpdatedAt, + } +} diff --git a/models/response/inventory.go b/models/response/inventory.go new file mode 100644 index 0000000..972aa5c --- /dev/null +++ b/models/response/inventory.go @@ -0,0 +1,347 @@ +package response + +import ( + "psi/models" +) + +// InventoryListResponse 库存汇总列表响应 +type InventoryListResponse struct { + List []InventoryItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// InventoryItem 库存汇总项 +type InventoryItem struct { + ProductID int64 `json:"product_id"` + ProductName string `json:"product_name"` + Appearance int64 `json:"appearance"` + Barcode string `json:"barcode"` + Price int64 `json:"price"` + WarehouseID int64 `json:"warehouse_id"` + WarehouseName string `json:"warehouse_name"` + WarehouseCode string `json:"warehouse_code"` + LocationCode string `json:"location_code"` + TotalQuantity int64 `json:"total_quantity"` + LockedQuantity int64 `json:"locked_quantity"` +} + +// InventoryGroupedListResponse 按仓库库位分组的库存列表响应 +type InventoryGroupedListResponse struct { + List []InventoryGroupItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// InventoryGroupItem 仓库库位分组项(父级) +type InventoryGroupItem struct { + WarehouseID int64 `json:"warehouse_id"` + WarehouseName string `json:"warehouse_name"` + WarehouseCode string `json:"warehouse_code"` + LocationID int64 `json:"location_id"` + LocationCode string `json:"location_code"` + TotalQuantity int64 `json:"total_quantity"` + LockedQuantity int64 `json:"locked_quantity"` + ItemCount int `json:"item_count"` + Details []InventoryDetailItem `json:"details"` +} + +// InventoryDetailResponse 库存明细响应 +type InventoryDetailResponse struct { + ProductID int64 `json:"product_id"` + ProductName string `json:"product_name"` + List []InventoryDetailItem `json:"list"` + Total int64 `json:"total"` +} + +// InventoryDetailItem 库存明细项 +type InventoryDetailItem struct { + ID int64 `json:"id"` + WarehouseID int64 `json:"warehouse_id"` + WarehouseName string `json:"warehouse_name"` + LocationID int64 `json:"location_id"` + LocationCode string `json:"location_code"` + BatchNo string `json:"batch_no"` + ProductionDate int64 `json:"production_date"` + ExpiryDate int64 `json:"expiry_date"` + Quantity int64 `json:"quantity"` + LockedQuantity int64 `json:"locked_quantity"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` + ProductID int64 `json:"product_id"` + ProductName string `json:"product_name"` + Barcode string `json:"barcode"` + Appearance int64 `json:"appearance"` + SalePrice int64 `json:"sale_price"` + WaveNo string `json:"wave_no"` // 波次编号 + WaveTaskNo string `json:"wave_task_no"` // 波次任务编号 + OutTaskNo int64 `json:"out_task_no"` // 出库任务编号 + SalesOrderNo string `json:"sales_order_no"` // 销售单编号 + ShippingNo string `json:"shipping_no"` // 发货单编号 +} + +// InventoryLogListResponse 库存流水列表响应 +type InventoryLogListResponse struct { + List []InventoryLogItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// InventoryLogItem 库存流水项 +type InventoryLogItem struct { + ID int64 `json:"id"` + WarehouseID int64 `json:"warehouse_id"` + WarehouseName string `json:"warehouse_name"` + LocationID int64 `json:"location_id"` + LocationCode string `json:"location_code"` + ProductID int64 `json:"product_id"` + ProductName string `json:"product_name"` + Barcode string `json:"barcode"` + BatchNo string `json:"batch_no"` + ChangeType int8 `json:"change_type"` + ChangeTypeText string `json:"change_type_text"` + ChangeQuantity int64 `json:"change_quantity"` + BeforeQuantity int64 `json:"before_quantity"` + AfterQuantity int64 `json:"after_quantity"` + RelatedOrderType string `json:"related_order_type"` + RelatedOrderNo string `json:"related_order_no"` + Operator string `json:"operator"` + OperatorID int64 `json:"operator_id"` + Remark string `json:"remark"` + CreatedAt int64 `json:"created_at"` +} + +// InventoryStatistResponse ISBN/书名库存总数响应 +type InventoryStatistResponse struct { + Barcode string `json:"barcode"` + Appearance int64 `json:"appearance"` + TotalQuantity int64 `json:"total_quantity"` + ProductCount int `json:"product_count"` +} + +// StockCheckListResponse 盘库列表响应 +type StockCheckListResponse struct { + List []StockCheckItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// StockCheckItem 盘库项 +type StockCheckItem struct { + ID int64 `json:"id"` + CheckNo string `json:"check_no"` + WarehouseID int64 `json:"warehouse_id"` + WarehouseName string `json:"warehouse_name"` + CheckType int8 `json:"check_type"` + CheckTypeText string `json:"check_type_text"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + TotalItems int `json:"total_items"` + CheckedItems int `json:"checked_items"` + TotalQuantity int64 `json:"total_quantity"` + ActualQuantity int64 `json:"actual_quantity"` + Operator string `json:"operator"` + OperatorID int64 `json:"operator_id"` + Remark string `json:"remark"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// StockCheckDetailResponse 盘库明细列表响应 +type StockCheckDetailResponse struct { + List []StockCheckDetailItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// StockCheckDetailItem 盘库明细项 +type StockCheckDetailItem struct { + ID int64 `json:"id"` + ProductID int64 `json:"product_id"` + ProductName string `json:"product_name"` + Barcode string `json:"barcode"` + LocationID int64 `json:"location_id"` + LocationCode string `json:"location_code"` + BatchNo string `json:"batch_no"` + ProductionDate int64 `json:"production_date"` + ExpiryDate int64 `json:"expiry_date"` + SystemQuantity int64 `json:"system_quantity"` + ActualQuantity int64 `json:"actual_quantity"` + DifferenceQuantity int64 `json:"difference_quantity"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + CheckOperator string `json:"check_operator"` + CheckOperatorID int64 `json:"check_operator_id"` + CheckTime int64 `json:"check_time"` + Remark string `json:"remark"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// InventorySummaryResponse 库存统计响应 +type InventorySummaryResponse struct { + ProductTypeCount int64 `json:"product_type_count"` // 商品总种类数(同一个barcode算一个) + ProductCount int64 `json:"product_count"` // 商品总数(不去重,按库存明细记录数) + TotalQuantity int64 `json:"total_quantity"` // 库存总量 + AvailableProductCount int64 `json:"available_product_count"` // 有货商品数量(库存大于0的) + LocationCount int64 `json:"location_count"` // 库位数 +} + +// ConvertInventoryToItem 将库存汇总转换为响应项 +func ConvertInventoryToItem( + productID int64, productName string, appearance int64, barcode string, price int64, + warehouseID int64, warehouseName, warehouseCode, locationCode string, + totalQty, lockedQty int64, +) InventoryItem { + return InventoryItem{ + ProductID: productID, + ProductName: productName, + Appearance: appearance, + Barcode: barcode, + Price: price, + WarehouseID: warehouseID, + WarehouseName: warehouseName, + WarehouseCode: warehouseCode, + LocationCode: locationCode, + TotalQuantity: totalQty, + LockedQuantity: lockedQty, + } +} + +// ConvertInventoryDetailToItem 将库存明细转换为响应项 +func ConvertInventoryDetailToItem( + detail models.InventoryDetail, warehouseName, locationCode string, + waveNo, waveTaskNo string, outTaskNo int64, salesOrderNo, shippingNo string, +) InventoryDetailItem { + return InventoryDetailItem{ + ID: detail.ID, + WarehouseID: detail.WarehouseID, + WarehouseName: warehouseName, + LocationID: detail.LocationID, + LocationCode: locationCode, + BatchNo: detail.BatchNo, + ProductionDate: detail.ProductionDate, + ExpiryDate: detail.ExpiryDate, + Quantity: detail.Quantity, + LockedQuantity: detail.LockedQuantity, + CreatedAt: detail.CreatedAt, + UpdatedAt: detail.UpdatedAt, + WaveNo: waveNo, + WaveTaskNo: waveTaskNo, + OutTaskNo: outTaskNo, + SalesOrderNo: salesOrderNo, + ShippingNo: shippingNo, + } +} + +// ConvertInventoryLogToItem 将库存流水转换为响应项 +func ConvertInventoryLogToItem( + log models.InventoryLog, warehouseName, locationCode, productName, barcode string, +) InventoryLogItem { + return InventoryLogItem{ + ID: log.ID, + WarehouseID: log.WarehouseID, + WarehouseName: warehouseName, + LocationID: log.LocationID, + LocationCode: locationCode, + ProductID: log.ProductID, + ProductName: productName, + Barcode: barcode, + BatchNo: log.BatchNo, + ChangeType: log.ChangeType, + ChangeTypeText: GetInventoryChangeTypeText(log.ChangeType), + ChangeQuantity: log.ChangeQuantity, + BeforeQuantity: log.BeforeQuantity, + AfterQuantity: log.AfterQuantity, + RelatedOrderType: log.RelatedOrderType, + RelatedOrderNo: log.RelatedOrderNo, + Operator: log.Operator, + OperatorID: log.OperatorID, + Remark: log.Remark, + CreatedAt: log.CreatedAt, + } +} + +// ConvertStockCheckToItem 将盘库单转换为响应项 +func ConvertStockCheckToItem( + check models.StockCheck, warehouseName string, +) StockCheckItem { + return StockCheckItem{ + ID: check.ID, + CheckNo: check.CheckNo, + WarehouseID: check.WarehouseID, + WarehouseName: warehouseName, + CheckType: check.CheckType, + CheckTypeText: GetStockCheckTypeText(check.CheckType), + Status: check.Status, + StatusText: GetStockCheckStatusText(check.Status), + TotalItems: check.TotalItems, + CheckedItems: check.CheckedItems, + TotalQuantity: check.TotalQuantity, + ActualQuantity: check.ActualQuantity, + Operator: check.Operator, + OperatorID: check.OperatorID, + Remark: check.Remark, + CreatedAt: check.CreatedAt, + UpdatedAt: check.UpdatedAt, + } +} + +// GetInventoryChangeTypeText 获取库存变动类型文本 +func GetInventoryChangeTypeText(changeType int8) string { + typeMap := map[int8]string{ + 1: "入库", + 2: "出库", + 3: "移库", + 4: "盘点调整", + 5: "锁定库存", + 6: "解锁库存", + } + if text, ok := typeMap[changeType]; ok { + return text + } + return "未知" +} + +// GetStockCheckTypeText 获取盘点类型文本 +func GetStockCheckTypeText(checkType int8) string { + typeMap := map[int8]string{ + 1: "全盘", + 2: "抽盘", + } + if text, ok := typeMap[checkType]; ok { + return text + } + return "未知" +} + +// GetStockCheckStatusText 获取盘点状态文本 +func GetStockCheckStatusText(status int8) string { + statusMap := map[int8]string{ + 1: "待盘点", + 2: "盘点中", + 3: "已完成", + 4: "已取消", + } + if text, ok := statusMap[status]; ok { + return text + } + return "未知" +} + +// GetStockCheckItemStatusText 获取盘点明细状态文本 +func GetStockCheckItemStatusText(status int8) string { + statusMap := map[int8]string{ + 1: "待盘点", + 2: "已盘点", + } + if text, ok := statusMap[status]; ok { + return text + } + return "未知" +} diff --git a/models/response/location.go b/models/response/location.go new file mode 100644 index 0000000..180acbd --- /dev/null +++ b/models/response/location.go @@ -0,0 +1,55 @@ +package response + +import ( + "psi/models" +) + +type LocationResponse struct { + ID int64 `json:"id"` + WarehouseID int64 `json:"warehouse_id"` + Code string `json:"code"` + Type int8 `json:"type"` + Capacity int64 `json:"capacity"` + Status int8 `json:"status"` + Sort int `json:"sort"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +func ConvertLocationToResponse(location models.Location) LocationResponse { + return LocationResponse{ + ID: location.ID, + WarehouseID: location.WarehouseID, + Code: location.Code, + Type: location.Type, + Capacity: location.Capacity, + Status: location.Status, + Sort: location.Sort, + CreatedAt: location.CreatedAt, + UpdatedAt: location.UpdatedAt, + } +} + +type BatchGenerateResult struct { + TotalCount int `json:"total_count"` + SuccessCount int `json:"success_count"` + FailCount int `json:"fail_count"` + SuccessIDs []int64 `json:"success_ids"` + FailCodes []string `json:"fail_codes"` + Message string `json:"message"` + GeneratedCode []string `json:"generated_codes,omitempty"` +} + +type SyncLocationResponse struct { + SuccessCount int `json:"success_count"` + FailCount int `json:"fail_count"` + SuccessCodes []string `json:"success_codes"` + FailCodes []string `json:"fail_codes"` + Message string `json:"message"` +} + +type SyncGoodsResponse struct { + SuccessCount int `json:"success_count"` + FailCount int `json:"fail_count"` + Message string `json:"message"` +} diff --git a/models/response/logistics.go b/models/response/logistics.go new file mode 100644 index 0000000..3d1c332 --- /dev/null +++ b/models/response/logistics.go @@ -0,0 +1,56 @@ +package response + +import ( + "psi/models" + "time" +) + +type LogisticsResponse struct { + Id uint64 `json:"id"` + TemplateName string `json:"templateName"` + DeliveryProvince string `json:"deliveryProvince"` + DeliveryCity string `json:"deliveryCity"` + DeliveryArea string `json:"deliveryArea"` + DeliveryAddress string `json:"deliveryAddress"` + PricingMethod string `json:"pricingMethod"` + Shipping string `json:"shipping"` + FirWbv float64 `json:"firWbv"` + FirPrice float64 `json:"firPrice"` + ContinueWbv float64 `json:"continueWbv"` + ContinuePrice float64 `json:"continuePrice"` + Contact string `json:"contact"` + PhoneNumber uint64 `json:"phoneNumber"` + FullAddress string `json:"fullAddress"` + ShippingRange string `json:"shippingRange"` + WarehouseId uint64 `json:"warehouseId"` + Remark string `json:"remark"` + Status string `json:"status"` + CreateTime *time.Time `json:"createTime"` + UpdateTime *time.Time `json:"updateTime"` +} + +func ConvertLogisticsToResponse(logistics models.Logistics) LogisticsResponse { + return LogisticsResponse{ + Id: logistics.Id, + TemplateName: logistics.TemplateName, + DeliveryProvince: logistics.DeliveryProvince, + DeliveryCity: logistics.DeliveryCity, + DeliveryArea: logistics.DeliveryArea, + DeliveryAddress: logistics.DeliveryAddress, + PricingMethod: logistics.PricingMethod, + Shipping: logistics.Shipping, + FirWbv: logistics.FirWbv, + FirPrice: logistics.FirPrice, + ContinueWbv: logistics.ContinueWbv, + ContinuePrice: logistics.ContinuePrice, + Contact: logistics.Contact, + PhoneNumber: logistics.PhoneNumber, + FullAddress: logistics.FullAddress, + ShippingRange: logistics.ShippingRange, + WarehouseId: logistics.WarehouseId, + Remark: logistics.Remark, + Status: logistics.Status, + CreateTime: logistics.CreateTime, + UpdateTime: logistics.UpdateTime, + } +} diff --git a/models/response/ocr.go b/models/response/ocr.go new file mode 100644 index 0000000..8071674 --- /dev/null +++ b/models/response/ocr.go @@ -0,0 +1,7 @@ +package response + +type OcrResponse struct { + Success bool `json:"success"` + Texts []string `json:"texts"` + GuessBookInfo +} diff --git a/models/response/out_task.go b/models/response/out_task.go new file mode 100644 index 0000000..de2802b --- /dev/null +++ b/models/response/out_task.go @@ -0,0 +1,190 @@ +package response + +import ( + "psi/models" +) + +// OutTaskListResponse 外部任务列表响应 +type OutTaskListResponse struct { + List []OutTaskItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// OutTaskItem 外部任务项 +type OutTaskItem struct { + ID int64 `json:"id"` + ShopID int64 `json:"shop_id"` + WaveTaskID int64 `json:"wave_task_id"` + OutTaskID int64 `json:"out_task_id"` + ShopType int8 `json:"shop_type"` + ShopTypeText string `json:"shop_type_text"` + TaskType int8 `json:"task_type"` + TaskTypeText string `json:"task_type_text"` + ImgType int8 `json:"img_type"` + ImgTypeText string `json:"img_type_text"` + TaskCount int64 `json:"task_count"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// OutTaskLogListResponse 外部任务日志列表响应 +type OutTaskLogListResponse struct { + List []OutTaskLogItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// OutTaskLogItem 外部任务日志项 +type OutTaskLogItem struct { + ID int64 `json:"id"` + ShopID int64 `json:"shop_id"` + WaveTaskID int64 `json:"wave_task_id"` + OutTaskID int64 `json:"out_task_id"` + ProductID int64 `json:"product_id"` + ISBN string `json:"isbn"` + LiveImage interface{} `json:"live_image"` + Stock int64 `json:"stock"` + SalePrice int64 `json:"sale_price"` + Cost int64 `json:"cost"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + Msg string `json:"msg"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// OutTaskByShopResponse 按店铺分组的任务列表响应 +type OutTaskByShopResponse struct { + List []OutTaskShopGroup `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// OutTaskShopGroup 店铺任务分组 +type OutTaskShopGroup struct { + ShopID int64 `json:"shop_id"` + ShopName string `json:"shop_name"` + ShopType int8 `json:"shop_type"` + ShopTypeText string `json:"shop_type_text"` + Tasks []OutTaskDetail `json:"tasks"` +} + +// OutTaskDetail 任务详情(包含日志明细) +type OutTaskDetail struct { + ID int64 `json:"id"` + WaveTaskID int64 `json:"wave_task_id"` + OutTaskID int64 `json:"out_task_id"` + TaskType int8 `json:"task_type"` + ImgType int8 `json:"img_type"` + ImgTypeText string `json:"img_type_text"` + TaskCount int64 `json:"task_count"` + SendStatus string `json:"send_status"` + Logs []OutTaskLogItem `json:"logs"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// ConvertOutTaskToDetail 将任务模型转换为详情项 +func ConvertOutTaskToDetail(task models.OutTask) OutTaskDetail { + sendStatus := "未发送" + if task.OutTaskID != 0 { + sendStatus = "已发送" + } + + return OutTaskDetail{ + ID: task.ID, + WaveTaskID: task.WaveTaskID, + OutTaskID: task.OutTaskID, + TaskType: task.TaskType, + ImgType: task.ImgType, + ImgTypeText: GetImgTypeText(task.ImgType), + TaskCount: task.TaskCount, + SendStatus: sendStatus, + Logs: []OutTaskLogItem{}, + CreatedAt: task.CreatedAt, + UpdatedAt: task.UpdatedAt, + } +} + +// ConvertOutTaskToItem 将外部任务模型转换为响应项 +func ConvertOutTaskToItem(task models.OutTask) OutTaskItem { + return OutTaskItem{ + ID: task.ID, + ShopID: task.ShopID, + WaveTaskID: task.WaveTaskID, + OutTaskID: task.OutTaskID, + ShopType: task.ShopType, + ShopTypeText: GetShopTypeText(task.ShopType), + TaskType: task.TaskType, + ImgType: task.ImgType, + ImgTypeText: GetImgTypeText(task.ImgType), + TaskCount: task.TaskCount, + CreatedAt: task.CreatedAt, + UpdatedAt: task.UpdatedAt, + } +} + +// ConvertOutTaskLogToItem 将外部任务日志模型转换为响应项 +func ConvertOutTaskLogToItem(log models.OutTaskLog) OutTaskLogItem { + return OutTaskLogItem{ + ID: log.ID, + ShopID: log.ShopID, + WaveTaskID: log.WaveTaskID, + OutTaskID: log.OutTaskID, + ProductID: log.ProductID, + ISBN: log.ISBN, + LiveImage: log.LiveImage, + Stock: log.Stock, + SalePrice: log.SalePrice, + Cost: log.Cost, + Status: log.Status, + StatusText: GetTaskLogStatusText(log.Status), + Msg: log.Msg, + CreatedAt: log.CreatedAt, + UpdatedAt: log.UpdatedAt, + } +} + +// GetShopTypeText 获取店铺类型文本 +func GetShopTypeText(shopType int8) string { + shopTypeMap := map[int8]string{ + 1: "拼多多", + 2: "孔夫子", + 5: "闲鱼", + } + if text, ok := shopTypeMap[shopType]; ok { + return text + } + return "未知" +} + +// GetImgTypeText 获取图片类型文本 +func GetImgTypeText(imgType int8) string { + imgTypeMap := map[int8]string{ + 1: "仅官图", + 2: "仅实拍图", + 3: "优先官图", + 4: "优先实拍图", + } + if text, ok := imgTypeMap[imgType]; ok { + return text + } + return "未知" +} + +// GetTaskLogStatusText 获取任务日志状态文本 +func GetTaskLogStatusText(status int8) string { + statusMap := map[int8]string{ + 0: "异常", + 1: "推送成功", + 2: "发布成功", + } + if text, ok := statusMap[status]; ok { + return text + } + return "未知" +} diff --git a/models/response/outbound.go b/models/response/outbound.go new file mode 100644 index 0000000..a59ec78 --- /dev/null +++ b/models/response/outbound.go @@ -0,0 +1,157 @@ +package response + +import ( + "psi/models" +) + +type OutboundOrderWithInfo struct { + models.OutboundOrder + CustomerName string `gorm:"column:customer_name"` + WarehouseName string `gorm:"column:warehouse_name"` +} + +type OutboundOrderItemWithProduct struct { + models.OutboundOrderItem + ProductName string `gorm:"column:product_name"` + ProductCode string `gorm:"column:product_code"` + CategoryID int64 `gorm:"column:category_id"` + CategoryName string `gorm:"column:category_name"` + LocationName string `gorm:"column:location_name"` + WarehouseName string `gorm:"column:warehouse_name"` + WarehouseCode string `gorm:"column:warehouse_code"` + SalesOrderNo string `gorm:"column:sales_order_no"` +} + +// OutboundOrderListResponse 发货单列表响应 +type OutboundOrderListResponse struct { + List []OutboundOrderItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +type OutboundShopInfo struct { + ShopName string `json:"shop_name"` + ShopType int8 `json:"shop_type"` + ShopTypeText string `json:"shop_type_text"` +} + +// OutboundOrderItem 发货单项 +type OutboundOrderItem struct { + ID int64 `json:"id"` + OutboundNo string `json:"outbound_no"` + WaveTaskID int64 `json:"wave_task_id"` + CustomerID int64 `json:"customer_id"` + CustomerName string `json:"customer_name"` + WarehouseID int64 `json:"warehouse_id"` + WarehouseName string `json:"warehouse_name"` + ShopList []OutboundShopInfo `json:"shop_list"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + Operator string `json:"operator"` + OperatorID int64 `json:"operator_id"` + Remark string `json:"remark"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// OutboundOrderDetailResponse 发货单详情响应 +type OutboundOrderDetailResponse struct { + ID int64 `json:"id"` + OutboundNo string `json:"outbound_no"` + SalesOrderID int64 `json:"sales_order_id"` + SalesOrderNo string `json:"sales_order_no"` + WaveTaskID int64 `json:"wave_task_id"` + CustomerID int64 `json:"customer_id"` + CustomerName string `json:"customer_name"` + WarehouseID int64 `json:"warehouse_id"` + WarehouseName string `json:"warehouse_name"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + Operator string `json:"operator"` + OperatorID int64 `json:"operator_id"` + Remark string `json:"remark"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` + Items []OutboundOrderDetailItem `json:"items"` +} + +// OutboundOrderDetailItem 发货单明细项 +type OutboundOrderDetailItem struct { + ID int64 `json:"id"` + OutboundOrderID int64 `json:"out_order_id"` + SalesOrderNo string `json:"sales_order_no"` + ProductID int64 `json:"product_id"` + ProductName string `json:"product_name"` + ProductCode string `json:"product_code"` + CategoryID int64 `json:"category_id"` + CategoryName string `json:"category_name"` + LocationID int64 `json:"location_id"` + LocationName string `json:"location_name"` + WarehouseName string `json:"warehouse_name"` + WarehouseCode string `json:"warehouse_code"` + BatchNo string `json:"batch_no"` + ProductionDate int64 `json:"production_date"` + ExpiryDate int64 `json:"expiry_date"` + Quantity int64 `json:"quantity"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// ConvertOutboundOrderToItem 将发货单模型转换为响应项 +func ConvertOutboundOrderToItem(order models.OutboundOrder, customerName string, warehouseName string, shopList []OutboundShopInfo) OutboundOrderItem { + return OutboundOrderItem{ + ID: order.ID, + OutboundNo: order.OutNo, + WaveTaskID: order.WaveTaskID, + CustomerID: order.CustomerID, + CustomerName: customerName, + WarehouseID: order.WarehouseID, + WarehouseName: warehouseName, + ShopList: shopList, + Status: order.Status, + StatusText: GetOutboundOrderStatusText(order.Status), + Operator: order.Operator, + OperatorID: order.OperatorID, + Remark: order.Remark, + CreatedAt: order.CreatedAt, + UpdatedAt: order.UpdatedAt, + } +} + +// ConvertOutboundOrderToDetail 将发货单模型转换为详情响应 +func ConvertOutboundOrderToDetail(order models.OutboundOrder, customerName string, warehouseName string, items []OutboundOrderDetailItem) OutboundOrderDetailResponse { + return OutboundOrderDetailResponse{ + ID: order.ID, + OutboundNo: order.OutNo, + WaveTaskID: order.WaveTaskID, + CustomerID: order.CustomerID, + CustomerName: customerName, + WarehouseID: order.WarehouseID, + WarehouseName: warehouseName, + Status: order.Status, + StatusText: GetOutboundOrderStatusText(order.Status), + Operator: order.Operator, + OperatorID: order.OperatorID, + Remark: order.Remark, + CreatedAt: order.CreatedAt, + UpdatedAt: order.UpdatedAt, + Items: items, + } +} + +// GetOutboundOrderStatusText 获取发货单状态文本 +func GetOutboundOrderStatusText(status int8) string { + statusMap := map[int8]string{ + 1: "已创建", + 2: "拣货中", + 3: "已完成", + 4: "已取消", + 5: "发货中", + 6: "已发货", + } + if text, ok := statusMap[status]; ok { + return text + } + return "未知" +} diff --git a/models/response/process.go b/models/response/process.go new file mode 100644 index 0000000..86ca28c --- /dev/null +++ b/models/response/process.go @@ -0,0 +1,51 @@ +package response + +type WaveReleaseResponse struct { + WaveID int64 `json:"wave_id"` + WaveNo string `json:"wave_no"` +} +type WaveTaskInfoResponse struct { + WaveTaskID int64 `json:"wave_task_id"` + TaskNo string `json:"task_no"` + Type int8 `json:"type"` + Status int8 `json:"status"` + Assignee string `json:"assignee"` + PurchaseOrderID int64 `json:"purchase_order_id"` + WarehouseID int64 `json:"warehouse_id"` + SupplierID int64 `json:"supplier_id"` + Items []WaveTaskItemResponse `json:"items"` +} + +type WaveTaskItemResponse struct { + ProductID int64 `json:"product_id"` + ProductName string `json:"product_name"` + ProductCode string `json:"product_code"` + PlannedQuantity int64 `json:"planned_quantity"` + ActualQuantity int64 `json:"actual_quantity"` + UnitName string `json:"unit_name"` +} + +type ReceivingDetailResponse struct { + ReceivingOrderID int64 `json:"receiving_order_id"` + ReceivingNo string `json:"receiving_no"` + Status int8 `json:"status"` + WarehouseID int64 `json:"warehouse_id"` + SupplierID int64 `json:"supplier_id"` + Operator string `json:"operator"` + Remark string `json:"remark"` + Items []ReceivingItemResponse `json:"items"` +} + +type ReceivingItemResponse struct { + ID int64 `json:"id"` + ProductID int64 `json:"product_id"` + ProductName string `json:"product_name"` + ProductCode string `json:"product_code"` + LocationID int64 `json:"location_id"` + LocationCode string `json:"location_code"` + BatchNo string `json:"batch_no"` + ProductionDate int64 `json:"production_date"` + ExpiryDate int64 `json:"expiry_date"` + Quantity int64 `json:"quantity"` + UnitName string `json:"unit_name"` +} diff --git a/models/response/product.go b/models/response/product.go new file mode 100644 index 0000000..f9e74ed --- /dev/null +++ b/models/response/product.go @@ -0,0 +1,201 @@ +package response + +import ( + "encoding/json" + "psi/models" +) + +type ProductListResponse struct { + List []ProductItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +type ProductItem struct { + ID int64 `json:"id"` + CategoryID int64 `json:"category_id"` + CategoryName string `json:"category_name"` + StandardProductID int64 `json:"standard_product_id"` + Name string `json:"name"` + Appearance int64 `json:"appearance"` + Barcode string `json:"barcode"` + Price int64 `json:"price"` + SalePrice int64 `json:"sale_price"` + LiveImage []string `json:"live_image"` + IsBatchManaged int8 `json:"is_batch_managed"` + IsShelfLifeManaged int8 `json:"is_shelf_life_managed"` + Status int8 `json:"status"` + WarehouseID int64 `json:"warehouse_id"` + WarehouseCode string `json:"warehouse_code"` + WarehouseName string `json:"warehouse_name"` + LocationID int64 `json:"location_id"` + LocationCode string `json:"location_code"` + Quantity int64 `json:"quantity"` + InboundTime string `json:"inbound_time"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` + ShopList []ShopInfo `json:"shop_list"` + FirPrice float64 `json:"fir_price"` +} + +type ShopInfo struct { + ShopID string `json:"shop_id"` + ShopAliasName string `json:"shop_alias_name"` + ShopType int8 `json:"shop_type"` + ShopTypeName string `json:"shop_type_name"` + IsSent bool `json:"is_sent"` + OutTaskLogID int64 `json:"out_task_log_id"` + OutTaskID int64 `json:"out_task_id"` + LogStatus int8 `json:"status"` + LogMsg string `json:"msg"` + LogCreatedAt int64 `json:"created_at"` +} + +type ProductWithInfo struct { + models.Product + CategoryName string `gorm:"column:category_name"` + WarehouseID int64 `gorm:"column:warehouse_id"` + WarehouseCode string `gorm:"column:warehouse_code"` + WarehouseName string `gorm:"column:warehouse_name"` + LocationID int64 `gorm:"column:location_id"` + LocationCode string `gorm:"column:location_code"` + Quantity int64 `gorm:"column:quantity"` + FirPrice float64 `json:"fir_price"` + InboundTime string `json:"inbound_time"` +} + +// ExportProductResponse 导出商品响应 +type ExportProductResponse struct { + Total int64 `json:"total"` + FileName string `json:"file_name,omitempty"` + FilePath string `json:"file_path,omitempty"` +} + +func ConvertProductWithInfoToItem(product ProductWithInfo) ProductItem { + var liveImage []string + if len(product.LiveImage) > 0 { + json.Unmarshal(product.LiveImage, &liveImage) + } + + return ProductItem{ + ID: product.ID, + CategoryID: product.CategoryID, + CategoryName: product.CategoryName, + StandardProductID: product.StandardProductID, + Name: product.Name, + Appearance: product.Appearance, + Barcode: product.Barcode, + Price: product.Price, + SalePrice: product.SalePrice, + LiveImage: liveImage, + IsBatchManaged: product.IsBatchManaged, + IsShelfLifeManaged: product.IsShelfLifeManaged, + Status: product.Status, + WarehouseID: product.WarehouseID, + WarehouseCode: product.WarehouseCode, + WarehouseName: product.WarehouseName, + LocationID: product.LocationID, + LocationCode: product.LocationCode, + Quantity: product.Quantity, + CreatedAt: product.CreatedAt, + UpdatedAt: product.UpdatedAt, + InboundTime: product.InboundTime, + ShopList: []ShopInfo{}, + FirPrice: product.FirPrice, + } +} + +type ProductLogItem struct { + ID int64 `json:"id"` + Barcode string `json:"barcode"` + Md5Data string `json:"md5_data"` + OldName string `json:"old_name"` + NewName string `json:"new_name"` + OldPublisher string `json:"old_publisher"` + NewPublisher string `json:"new_publisher"` + OldAuthor string `json:"old_author"` + NewAuthor string `json:"new_author"` + OldPublicationTime int64 `json:"old_publication_time"` + NewPublicationTime int64 `json:"new_publication_time"` + OldPrice int64 `json:"old_price"` + NewPrice int64 `json:"new_price"` + OldBindingLayout string `json:"old_binding_layout"` + NewBindingLayout string `json:"new_binding_layout"` + OldPageCount int64 `json:"old_page_count"` + NewPageCount int64 `json:"new_page_count"` + OldWordCount int64 `json:"old_word_count"` + NewWordCount int64 `json:"new_word_count"` + OldLiveImage []string `json:"old_live_image"` + NewLiveImage []string `json:"new_live_image"` + OldIsSuit int8 `json:"old_is_suit"` + NewIsSuit int8 `json:"new_is_suit"` + Status int8 `json:"status"` + CreateBy int64 `json:"create_by"` + AuditBy int64 `json:"audit_by"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +type ProductLogListResponse struct { + List []ProductLogItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// ProductInventoryResponse 商品库存响应 +type ProductInventoryResponse struct { + Quantity int64 `json:"quantity"` +} + +// ShopProductDetailResponse 店铺商品详情响应 +type ShopProductDetailResponse struct { + ID int64 `json:"id"` // 店铺ID + ShopName string `json:"shop_name"` // 店铺名称 + ShopAliasName string `json:"shop_alias_name"` // 店铺别名 + ShopType int8 `json:"shop_type"` // 店铺类型 + ShopTypeName string `json:"shop_type_name"` // 店铺类型名称 + CreatedAt int64 `json:"created_at"` // 创建时间 + UpdatedAt int64 `json:"updated_at"` // 更新时间 + Products []ProductInShop `json:"products"` // 商品列表 + Total int64 `json:"total"` // 总数 + Page int `json:"page"` // 当前页 + PageSize int `json:"page_size"` // 每页条数 + SuccessCount int64 `json:"success_count"` // 成功数量 + NotSentCount int64 `json:"not_sent_count"` // 任务已创建未发送到店铺数量 + FailedCount int64 `json:"failed_count"` // 发送到店铺失败数量 +} + +// PushProductToShopResponse 上架到商铺响应 +type PushProductToShopResponse struct { + UserID int64 `json:"user_id,string"` // 用户ID + WarehouseID int64 `json:"warehouse_id"` // 仓库ID + ProductID int64 `json:"product_id"` // 商品ID + ISBN string `json:"isbn"` // ISBN +} + +// ProductInShop 店铺中的商品信息 +type ProductInShop struct { + ID int64 `json:"id"` // 商品ID + Name string `json:"name"` // 商品名称 + Barcode string `json:"barcode"` // 条码 + LiveImage []string `json:"live_image"` // 实拍图 + Price int64 `json:"price"` // 价格 + SalePrice int64 `json:"sale_price"` // 售价 + Quantity int64 `json:"quantity"` // 库存数量 + WarehouseName string `json:"warehouse_name"` // 仓库名称 + LocationCode string `json:"location_code"` // 库位编码 + IsBatchManaged int8 `json:"is_batch_managed"` // 是否批次管理 + IsShelfLifeManaged int8 `json:"is_shelf_life_managed"` // 是否效期管理 + OutTaskLogID int64 `json:"out_task_log_id"` // 出库任务日志ID + StatusInShop int8 `json:"status_in_shop"` // 在店铺中的状态 0未发布 1已发布 + Msg string `json:"msg"` // 消息 + WaveNo string `json:"wave_no"` // 波次编号 + WaveTaskNo string `json:"wave_task_no"` // 波次任务编号 + OutTaskNo int64 `json:"out_task_no"` // 出库任务编号 + SalesOrderNo string `json:"sales_order_no"` // 销售单编号 + ShippingNo string `json:"shipping_no"` // 发货单编号 + CreatedAt int64 `json:"created_at"` // 创建时间 + UpdatedAt int64 `json:"updated_at"` // 更新时间 +} diff --git a/models/response/purchase.go b/models/response/purchase.go new file mode 100644 index 0000000..156a4ed --- /dev/null +++ b/models/response/purchase.go @@ -0,0 +1,156 @@ +package response + +import ( + "gorm.io/datatypes" + "psi/models" +) + +type OrderWithInfo struct { + models.PurchaseOrder + SupplierName string `gorm:"column:supplier_name"` + WarehouseName string `gorm:"column:warehouse_name"` +} + +type ItemWithProduct struct { + models.PurchaseOrderItem + ProductName string `gorm:"column:product_name"` + ProductCode string `gorm:"column:product_code"` + SalePrice int64 `gorm:"column:sale_price"` + CategoryID int64 `gorm:"column:category_id"` + CategoryName string `gorm:"column:category_name"` + LiveImage datatypes.JSON `gorm:"column:live_image"` + LocationID int64 `gorm:"column:location_id"` + LocationCode string `gorm:"column:location_code"` +} + +// PurchaseOrderListResponse 采购订单列表响应 +type PurchaseOrderListResponse struct { + List []PurchaseOrderItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// PurchaseOrderItem 采购订单项 +type PurchaseOrderItem struct { + ID int64 `json:"id"` + PoNo string `json:"po_no"` + SupplierID int64 `json:"supplier_id"` + SupplierName string `json:"supplier_name"` + WarehouseID int64 `json:"warehouse_id"` + WarehouseName string `json:"warehouse_name"` + OrderDate int64 `json:"order_date"` + ExpectedArrivalDate int64 `json:"expected_arrival_date"` + TotalAmount int64 `json:"total_amount"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + Creator string `json:"creator"` + CreatorID int64 `json:"creator_id"` + Remark string `json:"remark"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// PurchaseOrderDetailResponse 采购订单详情响应 +type PurchaseOrderDetailResponse struct { + ID int64 `json:"id"` + PoNo string `json:"po_no"` + SupplierID int64 `json:"supplier_id"` + SupplierName string `json:"supplier_name"` + WarehouseID int64 `json:"warehouse_id"` + WarehouseName string `json:"warehouse_name"` + OrderDate int64 `json:"order_date"` + ExpectedArrivalDate int64 `json:"expected_arrival_date"` + TotalAmount int64 `json:"total_amount"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + Creator string `json:"creator"` + CreatorID int64 `json:"creator_id"` + Remark string `json:"remark"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` + Items []PurchaseOrderDetailItem `json:"items"` +} + +// PurchaseOrderDetailItem 采购订单明细项 +type PurchaseOrderDetailItem struct { + ID int64 `json:"id"` + PurchaseOrderID int64 `json:"purchase_order_id"` + ProductID int64 `json:"product_id"` + ProductName string `json:"product_name"` + ProductCode string `json:"product_code"` + SalePrice int64 `json:"sale_price"` + CategoryID int64 `json:"category_id"` + CategoryName string `json:"category_name"` + LiveImage []string `json:"live_image"` + Quantity int64 `json:"quantity"` + ReceivedQuantity int64 `json:"received_quantity"` + UnitPrice int64 `json:"unit_price"` + Amount int64 `json:"amount"` + LocationID int64 `json:"location_id"` + LocationCode string `json:"location_code"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// ConvertPurchaseOrderToItem 将采购订单模型转换为响应项 + +func ConvertPurchaseOrderToItem(order models.PurchaseOrder, supplierName string, warehouseName string) PurchaseOrderItem { + return PurchaseOrderItem{ + ID: order.ID, + PoNo: order.PoNo, + SupplierID: order.SupplierID, + SupplierName: supplierName, + WarehouseID: order.WarehouseID, + WarehouseName: warehouseName, + OrderDate: order.OrderDate, + ExpectedArrivalDate: order.ExpectedArrivalDate, + TotalAmount: order.TotalAmount, + Status: order.Status, + StatusText: GetPurchaseOrderStatusText(order.Status), + Creator: order.Creator, + CreatorID: order.CreatorID, + Remark: order.Remark, + CreatedAt: order.CreatedAt, + UpdatedAt: order.UpdatedAt, + } +} + +// ConvertPurchaseOrderToDetail 将采购订单模型转换为详情响应 +func ConvertPurchaseOrderToDetail(order models.PurchaseOrder, supplierName string, warehouseName string, items []PurchaseOrderDetailItem) PurchaseOrderDetailResponse { + return PurchaseOrderDetailResponse{ + ID: order.ID, + PoNo: order.PoNo, + SupplierID: order.SupplierID, + SupplierName: supplierName, + WarehouseID: order.WarehouseID, + WarehouseName: warehouseName, + OrderDate: order.OrderDate, + ExpectedArrivalDate: order.ExpectedArrivalDate, + TotalAmount: order.TotalAmount, + Status: order.Status, + StatusText: GetPurchaseOrderStatusText(order.Status), + Creator: order.Creator, + CreatorID: order.CreatorID, + Remark: order.Remark, + CreatedAt: order.CreatedAt, + UpdatedAt: order.UpdatedAt, + Items: items, + } +} + +// GetPurchaseOrderStatusText 获取采购订单状态文本 +func GetPurchaseOrderStatusText(status int8) string { + statusMap := map[int8]string{ + 1: "草稿", + 2: "已提交", + 3: "已审核", + 4: "部分收货", + 5: "已收货", + 6: "已取消", + } + if text, ok := statusMap[status]; ok { + return text + } + return "未知" +} diff --git a/models/response/receiving.go b/models/response/receiving.go new file mode 100644 index 0000000..ec3c568 --- /dev/null +++ b/models/response/receiving.go @@ -0,0 +1,158 @@ +package response + +import ( + "gorm.io/datatypes" + "psi/models" +) + +type ReceivingOrderWithInfo struct { + models.ReceivingOrder + SupplierName string `gorm:"column:supplier_name"` + WarehouseName string `gorm:"column:warehouse_name"` + PoNo string `gorm:"column:po_no"` + TaskNo string `gorm:"column:task_no"` +} + +type ReceivingOrderItemWithProduct struct { + models.ReceivingOrderItem + ProductName string `gorm:"column:product_name"` + ProductCode string `gorm:"column:product_code"` + CategoryID int64 `gorm:"column:category_id"` + CategoryName string `gorm:"column:category_name"` + LiveImage datatypes.JSON `gorm:"column:live_image"` + LocationCode string `gorm:"column:location_code"` +} + +// ReceivingOrderListResponse 入库单列表响应 +type ReceivingOrderListResponse struct { + List []ReceivingOrderItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// ReceivingOrderItem 入库单项 +type ReceivingOrderItem struct { + ID int64 `json:"id"` + ReceivingNo string `json:"receiving_no"` + PurchaseOrderID int64 `json:"purchase_order_id"` + PoNo string `json:"po_no"` + TaskNo string `json:"task_no"` + WaveTaskID int64 `json:"wave_task_id"` + WarehouseID int64 `json:"warehouse_id"` + WarehouseName string `json:"warehouse_name"` + SupplierID int64 `json:"supplier_id"` + SupplierName string `json:"supplier_name"` + ReceivingDate int64 `json:"receiving_date"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + Operator string `json:"operator"` + OperatorID int64 `json:"operator_id"` + Remark string `json:"remark"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// ReceivingOrderDetailResponse 入库单详情响应 +type ReceivingOrderDetailResponse struct { + ID int64 `json:"id"` + ReceivingNo string `json:"receiving_no"` + PurchaseOrderID int64 `json:"purchase_order_id"` + PoNo string `json:"po_no"` + WaveTaskID int64 `json:"wave_task_id"` + WarehouseID int64 `json:"warehouse_id"` + WarehouseName string `json:"warehouse_name"` + SupplierID int64 `json:"supplier_id"` + SupplierName string `json:"supplier_name"` + ReceivingDate int64 `json:"receiving_date"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + Operator string `json:"operator"` + OperatorID int64 `json:"operator_id"` + Remark string `json:"remark"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` + Items []ReceivingOrderDetailItem `json:"items"` +} + +// ReceivingOrderDetailItem 入库单明细项 +type ReceivingOrderDetailItem struct { + ID int64 `json:"id"` + ReceivingOrderID int64 `json:"receiving_order_id"` + ProductID int64 `json:"product_id"` + ProductName string `json:"product_name"` + ProductCode string `json:"product_code"` + CategoryID int64 `json:"category_id"` + CategoryName string `json:"category_name"` + LiveImage []string `json:"live_image"` + LocationID int64 `json:"location_id"` + LocationCode string `json:"location_code"` + BatchNo string `json:"batch_no"` + ProductionDate int64 `json:"production_date"` + ExpiryDate int64 `json:"expiry_date"` + Quantity int64 `json:"quantity"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// ConvertReceivingOrderToItem 将入库单模型转换为响应项 +func ConvertReceivingOrderToItem(order models.ReceivingOrder, supplierName, warehouseName, poNo, taskNo string) ReceivingOrderItem { + return ReceivingOrderItem{ + ID: order.ID, + ReceivingNo: order.ReceivingNo, + PurchaseOrderID: order.PurchaseOrderID, + PoNo: poNo, + TaskNo: taskNo, + WaveTaskID: order.WaveTaskID, + WarehouseID: order.WarehouseID, + WarehouseName: warehouseName, + SupplierID: order.SupplierID, + SupplierName: supplierName, + ReceivingDate: order.ReceivingDate, + Status: order.Status, + StatusText: GetReceivingOrderStatusText(order.Status), + Operator: order.Operator, + OperatorID: order.OperatorID, + Remark: order.Remark, + CreatedAt: order.CreatedAt, + UpdatedAt: order.UpdatedAt, + } +} + +// ConvertReceivingOrderToDetail 将入库单模型转换为详情响应 +func ConvertReceivingOrderToDetail(order models.ReceivingOrder, supplierName string, warehouseName string, poNo string, items []ReceivingOrderDetailItem) ReceivingOrderDetailResponse { + return ReceivingOrderDetailResponse{ + ID: order.ID, + ReceivingNo: order.ReceivingNo, + PurchaseOrderID: order.PurchaseOrderID, + PoNo: poNo, + WaveTaskID: order.WaveTaskID, + WarehouseID: order.WarehouseID, + WarehouseName: warehouseName, + SupplierID: order.SupplierID, + SupplierName: supplierName, + ReceivingDate: order.ReceivingDate, + Status: order.Status, + StatusText: GetReceivingOrderStatusText(order.Status), + Operator: order.Operator, + OperatorID: order.OperatorID, + Remark: order.Remark, + CreatedAt: order.CreatedAt, + UpdatedAt: order.UpdatedAt, + Items: items, + } +} + +// GetReceivingOrderStatusText 获取入库单状态文本 +func GetReceivingOrderStatusText(status int8) string { + statusMap := map[int8]string{ + 1: "待收货", + 2: "验收中", + 3: "已完成", + 4: "已取消", + } + if text, ok := statusMap[status]; ok { + return text + } + return "未知" +} diff --git a/models/response/response.go b/models/response/response.go new file mode 100644 index 0000000..5e282db --- /dev/null +++ b/models/response/response.go @@ -0,0 +1,53 @@ +package response + +import ( + "net/http" + + "github.com/gin-gonic/gin" + "psi/constant" +) + +type Response struct { + Code int `json:"code"` + Data interface{} `json:"data"` + Msg string `json:"msg"` +} + +// ExternalAPIResponse 外部接口通用响应结构 +type ExternalAPIResponse struct { + Code string `json:"code"` + Msg string `json:"msg"` + Data interface{} `json:"data"` +} + +func Result(code int, data interface{}, msg string, c *gin.Context) { + c.JSON(http.StatusOK, Response{ + code, + data, + msg, + }) +} + +func OkWithMessage(message string, c *gin.Context) { + Result(constant.SUCCESS, map[string]interface{}{}, message, c) +} + +func OkWithDetailed(data interface{}, message string, c *gin.Context) { + Result(constant.SUCCESS, data, message, c) +} + +func FailWithMessage(message string, c *gin.Context) { + Result(constant.ERROR, map[string]interface{}{}, message, c) +} + +func FailWithValidateMessage(message string, c *gin.Context) { + Result(constant.VALIDATE, map[string]interface{}{}, message, c) +} + +func NoAuth(message string, c *gin.Context) { + c.JSON(http.StatusUnauthorized, Response{ + constant.OAUTH, + nil, + message, + }) +} diff --git a/models/response/sales.go b/models/response/sales.go new file mode 100644 index 0000000..9acddd5 --- /dev/null +++ b/models/response/sales.go @@ -0,0 +1,188 @@ +package response + +import ( + "gorm.io/datatypes" + "psi/models" +) + +type SalesOrderWithInfo struct { + models.SalesOrder + CustomerName string `gorm:"column:customer_name"` + WarehouseName string `gorm:"column:warehouse_name"` +} + +type SalesOrderItemWithProduct struct { + models.SalesOrderItem + ProductName string `gorm:"column:product_name"` + ProductCode string `gorm:"column:product_code"` + ProductSalePrice int64 `gorm:"column:product_sale_price"` + CategoryID int64 `gorm:"column:category_id"` + CategoryName string `gorm:"column:category_name"` + LiveImage datatypes.JSON `gorm:"column:live_image"` + LocationCode string `gorm:"column:location_code"` +} + +// SalesOrderListResponse 销售订单列表响应 +type SalesOrderListResponse struct { + List []SalesOrderItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// SalesOrderItem 销售订单项 +type SalesOrderItem struct { + ID int64 `json:"id"` + SoNo string `json:"so_no"` + AssociationOrderId int64 `json:"association_order_id"` + AssociationOrderNo string `json:"association_order_no"` + FromType int8 `json:"from_type"` + ShopType int8 `json:"shop_type"` + ShopTypeText string `json:"shop_type_text"` + CustomerID int64 `json:"customer_id"` + CustomerName string `json:"customer_name"` + WarehouseID int64 `json:"warehouse_id"` + WarehouseName string `json:"warehouse_name"` + OrderDate int64 `json:"order_date"` + RequiredDeliveryDate int64 `json:"required_delivery_date"` + TotalAmount int64 `json:"total_amount"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + SalesPerson string `json:"sales_person"` + SalesPersonID int64 `json:"sales_person_id"` + Remark string `json:"remark"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// SalesOrderDetailResponse 销售订单详情响应 +type SalesOrderDetailResponse struct { + ID int64 `json:"id"` + SoNo string `json:"so_no"` + CustomerID int64 `json:"customer_id"` + CustomerName string `json:"customer_name"` + WarehouseID int64 `json:"warehouse_id"` + WarehouseName string `json:"warehouse_name"` + OrderDate int64 `json:"order_date"` + RequiredDeliveryDate int64 `json:"required_delivery_date"` + TotalAmount int64 `json:"total_amount"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + SalesPerson string `json:"sales_person"` + SalesPersonID int64 `json:"sales_person_id"` + Remark string `json:"remark"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` + Items []SalesOrderDetailItem `json:"items"` +} + +// SalesOrderDetailItem 销售订单明细项 +type SalesOrderDetailItem struct { + ID int64 `json:"id"` + SalesOrderID int64 `json:"sales_order_id"` + ProductID int64 `json:"product_id"` + ProductName string `json:"product_name"` + ProductCode string `json:"product_code"` + ProductSalePrice int64 `json:"product_sale_price"` + CategoryID int64 `json:"category_id"` + CategoryName string `json:"category_name"` + LiveImage []string `json:"live_image"` + Quantity int64 `json:"quantity"` + AllocatedQuantity int64 `json:"allocated_quantity"` + ShippedQuantity int64 `json:"shipped_quantity"` + UnitPrice int64 `json:"unit_price"` + Amount int64 `json:"amount"` + ReceiverName string `json:"receiver_name"` + ReceiverPhone string `json:"receiver_phone"` + ReceiverAddress string `json:"receiver_address"` + LocationCode string `json:"location_code"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// ConvertSalesOrderToItem 将销售订单模型转换为响应项 +func ConvertSalesOrderToItem(order models.SalesOrder, customerName string, warehouseName string) SalesOrderItem { + return SalesOrderItem{ + ID: order.ID, + SoNo: order.SoNo, + AssociationOrderId: order.AssociationOrderId, + AssociationOrderNo: order.AssociationOrderNo, + FromType: order.FromType, + ShopType: order.ShopType, + ShopTypeText: GetShopTypeStatusText(order.ShopType), + CustomerID: order.CustomerID, + CustomerName: customerName, + WarehouseID: order.WarehouseID, + WarehouseName: warehouseName, + OrderDate: order.OrderDate, + RequiredDeliveryDate: order.RequiredDeliveryDate, + TotalAmount: order.TotalAmount, + Status: order.Status, + StatusText: GetSalesOrderStatusText(order.Status), + SalesPerson: order.SalesPerson, + SalesPersonID: order.SalesPersonID, + Remark: order.Remark, + CreatedAt: order.CreatedAt, + UpdatedAt: order.UpdatedAt, + } +} + +// ConvertSalesOrderToDetail 将销售订单模型转换为详情响应 +func ConvertSalesOrderToDetail(order models.SalesOrder, customerName string, warehouseName string, items []SalesOrderDetailItem) SalesOrderDetailResponse { + return SalesOrderDetailResponse{ + ID: order.ID, + SoNo: order.SoNo, + CustomerID: order.CustomerID, + CustomerName: customerName, + WarehouseID: order.WarehouseID, + WarehouseName: warehouseName, + OrderDate: order.OrderDate, + RequiredDeliveryDate: order.RequiredDeliveryDate, + TotalAmount: order.TotalAmount, + Status: order.Status, + StatusText: GetSalesOrderStatusText(order.Status), + SalesPerson: order.SalesPerson, + SalesPersonID: order.SalesPersonID, + Remark: order.Remark, + CreatedAt: order.CreatedAt, + UpdatedAt: order.UpdatedAt, + Items: items, + } +} + +// SalesOrderDetailListResponse 销售订单详情列表响应 +type SalesOrderDetailListResponse struct { + List []SalesOrderDetailResponse `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// GetSalesOrderStatusText 获取销售订单状态文本 +func GetSalesOrderStatusText(status int8) string { + statusMap := map[int8]string{ + 1: "草稿", + 2: "已确认", + 3: "已分配库存", + 4: "拣货完成", + 5: "已发货", + 6: "已取消", + } + if text, ok := statusMap[status]; ok { + return text + } + return "未知" +} + +// GetShopTypeStatusText 获取店铺类型文本 +func GetShopTypeStatusText(status int8) string { + statusMap := map[int8]string{ + 1: "拼多多", + 2: "孔夫子", + 5: "咸鱼", + } + if text, ok := statusMap[status]; ok { + return text + } + return "未知" +} diff --git a/models/response/shipping.go b/models/response/shipping.go new file mode 100644 index 0000000..3331025 --- /dev/null +++ b/models/response/shipping.go @@ -0,0 +1,226 @@ +package response + +import ( + "psi/models" +) + +type ShippingOrderWithInfo struct { + models.ShippingOrder + CustomerName string `gorm:"column:customer_name"` +} + +type ShippingOrderItemWithProduct struct { + models.ShippingOrderItem + SalesOrderItemID int64 `gorm:"column:sales_order_item_id"` + ProductID int64 `gorm:"column:product_id"` + ProductName string `gorm:"column:product_name"` + ProductCode string `gorm:"column:product_code"` + CategoryID int64 `gorm:"column:category_id"` + CategoryName string `gorm:"column:category_name"` + LocationID int64 `gorm:"column:location_id"` + LocationName string `gorm:"column:location_name"` + WarehouseName string `gorm:"column:warehouse_name"` + WarehouseCode string `gorm:"column:warehouse_code"` + WarehouseContactPerson string `json:"warehouse_contact_person"` + WarehouseContactPhone string `json:"warehouse_contact_phone"` + WarehouseProvince string `json:"warehouse_province"` + WarehouseCity string `json:"warehouse_city"` + WarehouseDistrict string `json:"warehouse_district"` + WarehouseAddress string `json:"warehouse_address"` + SalesOrderNo string `gorm:"column:sales_order_no"` + OutboundOrderNo string `gorm:"column:outbound_order_no"` + UnitPrice int64 `gorm:"column:unit_price"` + SalesOrderCreatedAt int64 `gorm:"column:sales_order_created_at"` + SalesPersonID string `gorm:"column:sales_person_id"` + AssociationOrderID int64 `gorm:"column:association_order_id"` + AssociationOrderNo string `gorm:"column:association_order_no"` + SoItemCreatedAt int64 `gorm:"column:so_item_created_at"` + ReceiverName string `gorm:"column:receiver_name"` + ReceiverPhone string `gorm:"column:receiver_phone"` + ReceiverAddress string `gorm:"column:receiver_address"` + LogisticsCompany string `gorm:"column:logistics_company"` + LogisticsNo string `gorm:"column:logistics_no"` +} + +// ShippingOrderListResponse 发货单列表响应 +type ShippingOrderListResponse struct { + List []ShippingOrderItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// ShippingOrderItem 发货单项 +type ShippingOrderItem struct { + ID int64 `json:"id"` + ShippingNo string `json:"shipping_no"` + CustomerID int64 `json:"customer_id"` + CustomerName string `json:"customer_name"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + ShippingTime *int64 `json:"shipping_time"` + ExpectedArriveTime *int64 `json:"expected_arrive_time"` + ActualArriveTime *int64 `json:"actual_arrive_time"` + Operator string `json:"operator"` + CreatedAt int64 `json:"created_at"` + UpdatedAt *int64 `json:"updated_at"` + Remark string `json:"remark"` + ShopList []OutboundShopInfo `json:"shop_list"` +} + +// ShippingOrderDetailResponse 发货单详情响应 +type ShippingOrderDetailResponse struct { + ID int64 `json:"id"` + ShippingNo string `json:"shipping_no"` + CustomerID int64 `json:"customer_id"` + CustomerName string `json:"customer_name"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + ShippingTime *int64 `json:"shipping_time"` + ExpectedArriveTime *int64 `json:"expected_arrive_time"` + ActualArriveTime *int64 `json:"actual_arrive_time"` + Operator string `json:"operator"` + CreatedAt int64 `json:"created_at"` + UpdatedAt *int64 `json:"updated_at"` + Remark string `json:"remark"` + Items []ShippingOrderDetailItem `json:"items"` +} + +// ShippingOrderDetailItem 发货单明细项 +type ShippingOrderDetailItem struct { + ID int64 `json:"id"` + ShippingOrderID int64 `json:"shipping_order_id"` + OutboundOrderItemID *int64 `json:"outbound_order_item_id"` + SalesOrderItemID int64 `json:"sales_order_item_id"` + SalesOrderNo string `json:"sales_order_no"` + OutboundOrderNo string `json:"outbound_order_no"` + ProductID int64 `json:"product_id"` + ProductName string `json:"product_name"` + ProductCode string `json:"product_code"` + CategoryID int64 `json:"category_id"` + CategoryName string `json:"category_name"` + LocationID int64 `json:"location_id"` + LocationName string `json:"location_name"` + WarehouseName string `json:"warehouse_name"` + WarehouseCode string `json:"warehouse_code"` + WarehouseContactPerson string `json:"warehouse_contact_person"` + WarehouseContactPhone string `json:"warehouse_contact_phone"` + WarehouseProvince string `json:"warehouse_province"` + WarehouseCity string `json:"warehouse_city"` + WarehouseDistrict string `json:"warehouse_district"` + WarehouseAddress string `json:"warehouse_address"` + Quantity int64 `json:"quantity"` + UnitPrice int64 `json:"unit_price"` + SalesOrderCreatedAt int64 `json:"sales_order_created_at"` + SalesPersonID string `json:"sales_person_id"` + AssociationOrderID int64 `json:"association_order_id"` + AssociationOrderNo string `json:"association_order_no"` + SoItemCreatedAt int64 `json:"so_item_created_at"` + ReceiverName string `json:"receiver_name"` + ReceiverPhone string `json:"receiver_phone"` + ReceiverAddress string `json:"receiver_address"` + LogisticsCompany string `json:"logistics_company"` + LogisticsNo string `json:"logistics_no"` +} + +// ConvertShippingOrderToItem 将发货单模型转换为响应项 +func ConvertShippingOrderToItem(order models.ShippingOrder, customerName string, shopList []OutboundShopInfo) ShippingOrderItem { + return ShippingOrderItem{ + ID: order.ID, + ShippingNo: order.ShippingNo, + CustomerID: order.CustomerID, + CustomerName: customerName, + ShopList: shopList, + Status: order.Status, + StatusText: GetShippingOrderStatusText(order.Status), + ShippingTime: order.ShippingTime, + ExpectedArriveTime: order.ExpectedArriveTime, + ActualArriveTime: order.ActualArriveTime, + Operator: order.Operator, + CreatedAt: order.CreatedAt, + UpdatedAt: order.UpdatedAt, + Remark: order.Remark, + } +} + +// ConvertShippingOrderToDetail 将发货单模型转换为详情响应 +func ConvertShippingOrderToDetail(order models.ShippingOrder, customerName string, items []ShippingOrderDetailItem) ShippingOrderDetailResponse { + return ShippingOrderDetailResponse{ + ID: order.ID, + ShippingNo: order.ShippingNo, + CustomerID: order.CustomerID, + CustomerName: customerName, + Status: order.Status, + StatusText: GetShippingOrderStatusText(order.Status), + ShippingTime: order.ShippingTime, + ExpectedArriveTime: order.ExpectedArriveTime, + ActualArriveTime: order.ActualArriveTime, + Operator: order.Operator, + CreatedAt: order.CreatedAt, + UpdatedAt: order.UpdatedAt, + Remark: order.Remark, + Items: items, + } +} + +// ShippingOrderDetailListItem 发货单详情列表项(综合list和detail的所有字段) +type ShippingOrderDetailListItem struct { + ID int64 `json:"id"` + ShippingNo string `json:"shipping_no"` + CustomerID int64 `json:"customer_id"` + CustomerName string `json:"customer_name"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + ShippingTime *int64 `json:"shipping_time"` + ExpectedArriveTime *int64 `json:"expected_arrive_time"` + ActualArriveTime *int64 `json:"actual_arrive_time"` + Operator string `json:"operator"` + CreatedAt int64 `json:"created_at"` + UpdatedAt *int64 `json:"updated_at"` + Remark string `json:"remark"` + ShopList []OutboundShopInfo `json:"shop_list"` + Items []ShippingOrderDetailItem `json:"items"` +} + +// ShippingOrderDetailListResponse 发货单详情列表响应 +type ShippingOrderDetailListResponse struct { + List []ShippingOrderDetailListItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// ConvertShippingOrderToDetailListItem 将发货单模型转换为详情列表项 +func ConvertShippingOrderToDetailListItem(order models.ShippingOrder, customerName string, shopList []OutboundShopInfo, items []ShippingOrderDetailItem) ShippingOrderDetailListItem { + return ShippingOrderDetailListItem{ + ID: order.ID, + ShippingNo: order.ShippingNo, + CustomerID: order.CustomerID, + CustomerName: customerName, + Status: order.Status, + StatusText: GetShippingOrderStatusText(order.Status), + ShippingTime: order.ShippingTime, + ExpectedArriveTime: order.ExpectedArriveTime, + ActualArriveTime: order.ActualArriveTime, + Operator: order.Operator, + CreatedAt: order.CreatedAt, + UpdatedAt: order.UpdatedAt, + Remark: order.Remark, + ShopList: shopList, + Items: items, + } +} + +// GetShippingOrderStatusText 获取发货单状态文本 +func GetShippingOrderStatusText(status int8) string { + statusMap := map[int8]string{ + 1: "待发货", + 2: "已发货", + 3: "已签收", + 4: "已取消", + } + if text, ok := statusMap[status]; ok { + return text + } + return "未知" +} diff --git a/models/response/shop.go b/models/response/shop.go new file mode 100644 index 0000000..1350b7b --- /dev/null +++ b/models/response/shop.go @@ -0,0 +1,30 @@ +package response + +import "psi/models" + +type ShopResponse struct { + ID int64 `json:"id"` + MallID int64 `json:"mall_id"` + ShopType int8 `json:"shop_type"` + ShopName string `json:"shop_name"` + ShopAliasName string `json:"shop_alias_name"` + CreateBy int64 `json:"create_by"` + CreateTime int64 `json:"create_time"` + UpdateBy int64 `json:"update_by"` + UpdateTime int64 `json:"update_time"` + Status int8 `json:"status"` +} + +func ConvertShopToResponse(shop models.Shop) ShopResponse { + return ShopResponse{ + ID: shop.ID, + MallID: shop.MallID, + ShopType: shop.ShopType, + ShopAliasName: shop.ShopAliasName, + CreateBy: shop.CreateBy, + CreateTime: shop.CreateTime, + UpdateBy: shop.UpdateBy, + UpdateTime: shop.UpdateTime, + Status: shop.Status, + } +} diff --git a/models/response/sorting_settings.go b/models/response/sorting_settings.go new file mode 100644 index 0000000..8a89f49 --- /dev/null +++ b/models/response/sorting_settings.go @@ -0,0 +1,45 @@ +package response + +import "psi/models" + +// SortingSettingsResponse 分拣设置响应 +type SortingSettingsResponse struct { + ID int64 `json:"id"` + SupplierNumber string `json:"supplier_number"` + PurchaseOrderRemark string `json:"purchase_order_remark"` + ClassifyByCondition int8 `json:"classify_by_condition"` + WangdiantongEffect string `json:"wangdiantong_effect"` + WarehouseNumber string `json:"warehouse_number"` + ShelfStore string `json:"shelf_store"` + Container string `json:"container"` + CapacityWeight int64 `json:"capacity_weight"` + QuickPicking int8 `json:"quick_picking"` + BlockHkMacauTaiwan int8 `json:"block_hk_macau_taiwan"` + BlockMagazine int8 `json:"block_magazine"` + BlockSpeedInstall int8 `json:"block_speed_install"` + TakePhoto int8 `json:"take_photo"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// ConvertSortingSettingsToResponse 将分拣设置模型转换为响应 +func ConvertSortingSettingsToResponse(settings models.SortingSettings) SortingSettingsResponse { + return SortingSettingsResponse{ + ID: settings.ID, + SupplierNumber: settings.SupplierNumber, + PurchaseOrderRemark: settings.PurchaseOrderRemark, + ClassifyByCondition: settings.ClassifyByCondition, + WangdiantongEffect: settings.WangdiantongEffect, + WarehouseNumber: settings.WarehouseNumber, + ShelfStore: settings.ShelfStore, + Container: settings.Container, + CapacityWeight: settings.CapacityWeight, + QuickPicking: settings.QuickPicking, + BlockHkMacauTaiwan: settings.BlockHkMacauTaiwan, + BlockMagazine: settings.BlockMagazine, + BlockSpeedInstall: settings.BlockSpeedInstall, + TakePhoto: settings.TakePhoto, + CreatedAt: settings.CreatedAt, + UpdatedAt: settings.UpdatedAt, + } +} diff --git a/models/response/split_account_config.go b/models/response/split_account_config.go new file mode 100644 index 0000000..45c7a1f --- /dev/null +++ b/models/response/split_account_config.go @@ -0,0 +1,47 @@ +package response + +import ( + "encoding/json" + "psi/models" +) + +// SplitAccountConfigListResponse 分账配置列表响应 +type SplitAccountConfigListResponse struct { + List []SplitAccountConfigItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// SplitAccountConfigItem 分账配置列表项 +type SplitAccountConfigItem struct { + ID int64 `json:"id"` + RuleName string `json:"rule_name"` + RuleValue interface{} `json:"rule_value"` + Status int8 `json:"status"` + Description string `json:"description"` + CreatedBy string `json:"created_by"` + UpdatedBy string `json:"updated_by"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// ConvertSplitAccountConfigToItem 将分账配置模型转换为响应项 +func ConvertSplitAccountConfigToItem(config models.SplitAccountConfig) SplitAccountConfigItem { + var ruleValue interface{} + if config.RuleValue != nil { + json.Unmarshal(config.RuleValue, &ruleValue) + } + + return SplitAccountConfigItem{ + ID: config.ID, + RuleName: config.RuleName, + RuleValue: ruleValue, + Status: config.Status, + Description: config.Description, + CreatedBy: config.CreatedBy, + UpdatedBy: config.UpdatedBy, + CreatedAt: config.CreatedAt, + UpdatedAt: config.UpdatedAt, + } +} diff --git a/models/response/split_account_deduction_log.go b/models/response/split_account_deduction_log.go new file mode 100644 index 0000000..4ac7d1f --- /dev/null +++ b/models/response/split_account_deduction_log.go @@ -0,0 +1,53 @@ +package response + +import ( + "encoding/json" + "psi/models" +) + +// SplitAccountDeductionLogListResponse 分账扣钱日志列表响应 +type SplitAccountDeductionLogListResponse struct { + List []SplitAccountDeductionLogItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// SplitAccountDeductionLogItem 分账扣钱日志列表项 +type SplitAccountDeductionLogItem struct { + ID int64 `json:"id"` + BusinessNo string `json:"business_no"` + ConfigID int64 `json:"config_id"` + ConfigName string `json:"config_name"` + DeductionDetails interface{} `json:"deduction_details"` + TotalAmount float64 `json:"total_amount"` + DeductionAmount float64 `json:"deduction_amount"` + RemainingAmount float64 `json:"remaining_amount"` + CreatedBy string `json:"created_by"` + UpdatedBy string `json:"updated_by"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// ConvertSplitAccountDeductionLogToItem 将模型转换为响应项 +func ConvertSplitAccountDeductionLogToItem(log models.SplitAccountDeductionLog) SplitAccountDeductionLogItem { + var deductionDetails interface{} + if log.DeductionDetails != nil { + json.Unmarshal(log.DeductionDetails, &deductionDetails) + } + + return SplitAccountDeductionLogItem{ + ID: log.ID, + BusinessNo: log.BusinessNo, + ConfigID: log.ConfigID, + ConfigName: log.ConfigName, + DeductionDetails: deductionDetails, + TotalAmount: log.TotalAmount, + DeductionAmount: log.DeductionAmount, + RemainingAmount: log.RemainingAmount, + CreatedBy: log.CreatedBy, + UpdatedBy: log.UpdatedBy, + CreatedAt: log.CreatedAt, + UpdatedAt: log.UpdatedAt, + } +} diff --git a/models/response/statist.go b/models/response/statist.go new file mode 100644 index 0000000..6f14711 --- /dev/null +++ b/models/response/statist.go @@ -0,0 +1,42 @@ +package response + +// DashboardStatistResponse 仪表盘统计响应 +type DashboardStatistResponse struct { + TotalReceivingCount int64 `json:"total_receiving_count"` // 总入库次数 + TotalOutboundCount int64 `json:"total_outbound_count"` // 总出库次数 + TotalSaleCount int64 `json:"total_sale_count"` // 今日商品总数 + UserStats []UserStatItem `json:"user_stats"` // 个人统计数据 +} + +// UserStatItem 个人统计项 +type UserStatItem struct { + UserID int64 `json:"user_id"` // 用户ID + UserName string `json:"user_name"` // 用户姓名 + ReceivingCount int64 `json:"receiving_count"` // 入库次数 + OutboundCount int64 `json:"outbound_count"` // 出库次数 +} + +// WarehouseStatistResponse 仓库统计响应 +type WarehouseStatistResponse struct { + ProductTotal int64 `json:"product_total"` // 商品总量 + InventoryTotal int64 `json:"inventory_total"` // 库存量 + TodayInbound int64 `json:"today_inbound"` // 今日入库 + TodayOutbound int64 `json:"today_outbound"` // 今日出库 + YesterdayInbound int64 `json:"yesterday_inbound"` // 昨日入库 + YesterdayOutbound int64 `json:"yesterday_outbound"` // 昨日出库 +} + +// OrderStatistResponse 订单统计响应 +type OrderStatistResponse struct { + Today OrderStatItem `json:"today"` // 今日统计数据 + Yesterday OrderStatItem `json:"yesterday"` // 昨日统计数据 +} + +// OrderStatItem 订单统计项 +type OrderStatItem struct { + Quantity int64 `json:"quantity"` // 数量 + Amount int64 `json:"amount"` // 金额(分) + Shipped int64 `json:"shipped"` // 已发货 + Unshipped int64 `json:"unshipped"` // 未发货 + Pending int64 `json:"pending"` // 待处理 +} diff --git a/models/response/supplier.go b/models/response/supplier.go new file mode 100644 index 0000000..89145df --- /dev/null +++ b/models/response/supplier.go @@ -0,0 +1,39 @@ +package response + +import "psi/models" + +// SupplierListResponse 供应商列表响应 +type SupplierListResponse struct { + List []SupplierItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// SupplierItem 供应商列表项 +type SupplierItem struct { + ID int64 `json:"id"` + Code string `json:"code"` + Name string `json:"name"` + ContactPerson string `json:"contact_person"` + ContactPhone string `json:"contact_phone"` + Address string `json:"address"` + Status int8 `json:"status"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// ConvertSupplierToItem 将供应商模型转换为响应项 +func ConvertSupplierToItem(supplier models.Supplier) SupplierItem { + return SupplierItem{ + ID: supplier.ID, + Code: supplier.Code, + Name: supplier.Name, + ContactPerson: supplier.ContactPerson, + ContactPhone: supplier.ContactPhone, + Address: supplier.Address, + Status: supplier.Status, + CreatedAt: supplier.CreatedAt, + UpdatedAt: supplier.UpdatedAt, + } +} diff --git a/models/response/user_type.go b/models/response/user_type.go new file mode 100644 index 0000000..d310752 --- /dev/null +++ b/models/response/user_type.go @@ -0,0 +1,39 @@ +package response + +import "psi/models" + +// UserTypeListResponse 用户类型列表响应 +type UserTypeListResponse struct { + List []UserTypeItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// UserTypeItem 用户类型列表项 +type UserTypeItem struct { + ID int64 `json:"id"` + CheckStatus int8 `json:"check_status"` + CheckCode int8 `json:"check_code"` + CheckNum int64 `json:"check_num"` + Name string `json:"name"` + Icon string `json:"icon"` + Remark string `json:"remark"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// ConvertUserTypeToItem 将用户类型模型转换为响应项 +func ConvertUserTypeToItem(userType models.UserType) UserTypeItem { + return UserTypeItem{ + ID: userType.ID, + CheckStatus: userType.CheckStatus, + CheckCode: userType.CheckCode, + CheckNum: userType.CheckNum, + Name: userType.Name, + Icon: userType.Icon, + Remark: userType.Remark, + CreatedAt: userType.CreatedAt, + UpdatedAt: userType.UpdatedAt, + } +} diff --git a/models/response/warehouse.go b/models/response/warehouse.go new file mode 100644 index 0000000..8ae6d05 --- /dev/null +++ b/models/response/warehouse.go @@ -0,0 +1,57 @@ +package response + +import "psi/models" + +// WarehouseResponse 仓库信息 +type WarehouseResponse struct { + ID int64 `json:"id"` // 仓库ID + LogisticsID int64 `json:"logistics_id"` // 所属物流模板ID + Code string `json:"code"` // 仓库编码 + Name string `json:"name"` // 仓库名称 + Type int8 `json:"type"` // 仓库类型 + ContactPerson string `json:"contact_person"` // 联系人 + ContactPhone string `json:"contact_phone"` // 联系电话 + Province string `json:"province"` // 省份 + City string `json:"city"` // 城市 + District string `json:"district"` // 区/县 + Address string `json:"address"` // 详细地址 + Status int8 `json:"status"` // 仓库状态 + CreatedAt int64 `json:"created_at"` // 创建时间 + UpdatedAt int64 `json:"updated_at"` // 更新时间 +} + +// ExportLocationResponse 导出库位数据响应参数 +type ExportLocationResponse struct { + Total int64 `json:"total"` // 总数 + FileName string `json:"file_name"` // 文件名 + FilePath string `json:"file_path"` // 文件路径 +} + +// ImportLocationResult 导入库位数据响应参数 +type ImportLocationResult struct { + SuccessCount int `json:"success_count"` // 成功数量 + FailCount int `json:"fail_count"` // 失败数量 + SuccessCodes []string `json:"success_codes"` // 成功编码 + FailCodes []string `json:"fail_codes"` // 失败编码 + Message string `json:"message"` // 错误信息 +} + +// ConvertWarehouseToResponse 仓库信息转换成响应参数 +func ConvertWarehouseToResponse(warehouse models.Warehouse) WarehouseResponse { + return WarehouseResponse{ + ID: warehouse.ID, // 仓库ID + LogisticsID: warehouse.LogisticsID, // 所属物流模板ID + Code: warehouse.Code, // 仓库编码 + Name: warehouse.Name, // 仓库名称 + Type: warehouse.Type, // 仓库类型 + ContactPerson: warehouse.ContactPerson, // 联系人 + ContactPhone: warehouse.ContactPhone, // 联系电话 + Province: warehouse.Province, // 省份 + City: warehouse.City, // 城市 + District: warehouse.District, // 区/县 + Address: warehouse.Address, // 详细地址 + Status: warehouse.Status, // 仓库状态 + CreatedAt: warehouse.CreatedAt, // 创建时间 + UpdatedAt: warehouse.UpdatedAt, // 更新时间 + } +} diff --git a/models/response/wave.go b/models/response/wave.go new file mode 100644 index 0000000..fb68e7b --- /dev/null +++ b/models/response/wave.go @@ -0,0 +1,179 @@ +package response + +import ( + "gorm.io/datatypes" + "psi/models" +) + +type TaskWithWave struct { + models.WaveTask + WaveNo string `gorm:"column:wave_no"` + OutOrderId int64 `gorm:"column:out_order_id"` + ReceivingOrderId int64 `gorm:"column:receiving_order_id"` + BatchNo string `gorm:"column:wave_task_batch_no"` +} + +type DetailWithInfo struct { + models.WaveTaskDetail + ProductName string `gorm:"column:product_name"` + ProductCode string `gorm:"column:product_code"` + LocationCode string `gorm:"column:location_code"` + SalePrice int64 `gorm:"column:sale_price"` + LiveImage datatypes.JSON `gorm:"column:live_image"` +} + +// WaveTaskListResponse 波次任务列表响应 +type WaveTaskListResponse struct { + List []WaveTaskItem `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} + +// WaveTaskItem 波次任务列表项 +type WaveTaskItem struct { + ID int64 `json:"id"` + CarID int64 `json:"car_id"` + CarCode int64 `json:"car_code"` + OutOrderId int64 `json:"out_order_id"` + ReceivingOrderId int64 `json:"receiving_order_id"` + WaveTaskBatchNo string `json:"wave_task_batch_no"` + WaveID int64 `json:"wave_id"` + WaveNo string `json:"wave_no"` + TaskNo string `json:"task_no"` + Type int8 `json:"type"` + TypeText string `json:"type_text"` + Assignee string `json:"assignee"` + AssigneeID int64 `json:"assignee_id"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + StartedAt int64 `json:"started_at"` + CompletedAt int64 `json:"completed_at"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// WaveTaskDetailResponse 波次任务详情响应 +type WaveTaskDetailResponse struct { + ID int64 `json:"id"` + WaveID int64 `json:"wave_id"` + WaveNo string `json:"wave_no"` + TaskNo string `json:"task_no"` + Type int8 `json:"type"` + TypeText string `json:"type_text"` + Assignee string `json:"assignee"` + AssigneeID int64 `json:"assignee_id"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + StartedAt int64 `json:"started_at"` + CompletedAt int64 `json:"completed_at"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` + Details []WaveTaskDetailItem `json:"details"` +} + +// WaveTaskDetailItem 波次任务明细项 +type WaveTaskDetailItem struct { + ID int64 `json:"id"` + WaveTaskID int64 `json:"wave_task_id"` + ProductID int64 `json:"product_id"` + ProductName string `json:"product_name"` + ProductCode string `json:"product_code"` + SalePrice int64 `json:"sale_price"` + LiveImage []string `json:"live_image"` + LocationID int64 `json:"location_id"` + LocationCode string `json:"location_code"` + BatchNo string `json:"batch_no"` + PlannedQuantity int64 `json:"planned_quantity"` + ActualQuantity int64 `json:"actual_quantity"` + Status int8 `json:"status"` + StatusText string `json:"status_text"` + CreatedAt int64 `json:"created_at"` + UpdatedAt int64 `json:"updated_at"` +} + +// ConvertWaveTaskToItem 将波次任务模型转换为响应项 +func ConvertWaveTaskToItem(task models.WaveTask, waveNo string, outOrderId, receivingOrderId int64, batchNo string) WaveTaskItem { + return WaveTaskItem{ + ID: task.ID, + OutOrderId: outOrderId, + ReceivingOrderId: receivingOrderId, + WaveTaskBatchNo: batchNo, + WaveID: task.WaveID, + WaveNo: waveNo, + TaskNo: task.TaskNo, + Type: task.Type, + TypeText: GetWaveTaskTypeText(task.Type), + Assignee: task.Assignee, + AssigneeID: task.AssigneeID, + Status: task.Status, + StatusText: GetWaveTaskStatusText(task.Status), + StartedAt: task.StartedAt, + CompletedAt: task.CompletedAt, + CreatedAt: task.CreatedAt, + UpdatedAt: task.UpdatedAt, + } +} + +// ConvertWaveTaskToDetail 将波次任务模型转换为详情响应 +func ConvertWaveTaskToDetail(task models.WaveTask, waveNo string, details []WaveTaskDetailItem) WaveTaskDetailResponse { + return WaveTaskDetailResponse{ + ID: task.ID, + WaveID: task.WaveID, + WaveNo: waveNo, + TaskNo: task.TaskNo, + Type: task.Type, + TypeText: GetWaveTaskTypeText(task.Type), + Assignee: task.Assignee, + AssigneeID: task.AssigneeID, + Status: task.Status, + StatusText: GetWaveTaskStatusText(task.Status), + StartedAt: task.StartedAt, + CompletedAt: task.CompletedAt, + CreatedAt: task.CreatedAt, + UpdatedAt: task.UpdatedAt, + Details: details, + } +} + +// GetWaveTaskTypeText 获取波次任务类型文本 +func GetWaveTaskTypeText(taskType int8) string { + typeMap := map[int8]string{ + 1: "出库", + 2: "补货", + 3: "移库", + 4: "入库", + } + if text, ok := typeMap[taskType]; ok { + return text + } + return "未知" +} + +// GetWaveTaskStatusText 获取波次任务状态文本 +func GetWaveTaskStatusText(status int8) string { + statusMap := map[int8]string{ + 1: "待指派", + 2: "已指派", + 3: "拣货中", + 4: "已完成", + 5: "已取消", + } + if text, ok := statusMap[status]; ok { + return text + } + return "未知" +} + +// GetWaveTaskDetailStatusText 获取波次任务明细状态文本 +func GetWaveTaskDetailStatusText(status int8) string { + statusMap := map[int8]string{ + 1: "待处理", + 2: "已完成", + 3: "缺货", + } + if text, ok := statusMap[status]; ok { + return text + } + return "未知" +} diff --git a/models/sales_order.go b/models/sales_order.go new file mode 100644 index 0000000..9bae267 --- /dev/null +++ b/models/sales_order.go @@ -0,0 +1,32 @@ +package models + +// SalesOrder 销售订单主表 +type SalesOrder struct { + ID int64 `json:"id" gorm:"primarykey;comment:销售单ID"` + SoNo string `json:"so_no" gorm:"size:100;not null;default:'';uniqueIndex;comment:销售订单号"` + AssociationOrderId int64 `json:"association_order_id" gorm:"not null;default:0;index;comment:关联订单ID"` + AssociationOrderNo string `json:"association_order_no" gorm:"not null;default:'';index;comment:关联订单号"` + FromType int8 `json:"from_type" gorm:"not null;default:1;comment:来源类型 0-预留 1-erp订单"` + ShopType int8 `json:"shop_type" gorm:"not null;default:1;comment:店铺类型 1-拼多多 2-孔夫子 5-闲鱼"` + CustomerID int64 `json:"customer_id" gorm:"not null;default:0;index;comment:客户ID"` + WarehouseID int64 `json:"warehouse_id" gorm:"not null;default:0;comment:发货仓库ID"` + OrderDate int64 `json:"order_date" gorm:"not null;default:0;comment:订单日期时间戳(秒)"` + RequiredDeliveryDate int64 `json:"required_delivery_date" gorm:"not null;default:0;comment:要求送达日期时间戳(秒)"` + TotalAmount int64 `json:"total_amount" gorm:"not null;default:0;comment:订单总金额(分)"` + Status int8 `json:"status" gorm:"not null;default:1;index;comment:状态(1:草稿/draft,2:已确认/confirmed,3:已分配库存/allocated,4:拣货完成/picking,5:已发货/shipped,6:已取消/cancelled)"` + SalesPerson string `json:"sales_person" gorm:"size:100;not null;default:'';comment:店铺名称"` + SalesPersonID int64 `json:"sales_person_id" gorm:"not null;default:0;comment:店铺ID"` + Remark string `json:"remark" gorm:"size:255;not null;default:'';comment:备注"` + IsDistribution int8 `json:"is_distribution" gorm:"not null;default:0;comment:是否分销 0-正常 1-分销"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (SalesOrder) TableName() string { + return "sales_order" +} + +func (SalesOrder) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售订单主表'" +} diff --git a/models/sales_order_item.go b/models/sales_order_item.go new file mode 100644 index 0000000..b1b1ec9 --- /dev/null +++ b/models/sales_order_item.go @@ -0,0 +1,29 @@ +package models + +// SalesOrderItem 销售订单明细表 +type SalesOrderItem struct { + ID int64 `json:"id" gorm:"primarykey;comment:明细ID"` + SalesOrderID int64 `json:"sales_order_id" gorm:"not null;default:0;index;comment:销售单ID"` + ProductID int64 `json:"product_id" gorm:"not null;default:0;index;comment:商品ID"` + Quantity int64 `json:"quantity" gorm:"not null;default:0;comment:订购数量(最小单位)"` + AllocatedQuantity int64 `json:"allocated_quantity" gorm:"not null;default:0;comment:已分配数量"` + ShippedQuantity int64 `json:"shipped_quantity" gorm:"not null;default:0;comment:已发货数量"` + UnitPrice int64 `json:"unit_price" gorm:"not null;default:0;comment:单价(分/基本单位)"` + Amount int64 `json:"amount" gorm:"->;comment:金额(分)"` + ReceiverName string `json:"receiver_name" gorm:"size:100;not null;default:'';comment:收货人姓名"` + ReceiverPhone string `json:"receiver_phone" gorm:"size:20;not null;default:'';comment:收货人电话"` + ReceiverAddress string `json:"receiver_address" gorm:"size:200;not null;default:'';comment:收货地址"` + LogisticsCompany string `json:"logistics_company" gorm:"size:100;not null;default:'';comment:物流公司"` + LogisticsNo string `json:"logistics_no" gorm:"size:100;not null;default:'';comment:物流运单号"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (SalesOrderItem) TableName() string { + return "sales_order_item" +} + +func (SalesOrderItem) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售订单明细表'" +} diff --git a/models/shipping_order.go b/models/shipping_order.go new file mode 100644 index 0000000..720e1e7 --- /dev/null +++ b/models/shipping_order.go @@ -0,0 +1,25 @@ +package models + +// ShippingOrder 发货单主表 +type ShippingOrder struct { + ID int64 `json:"id" gorm:"primarykey;comment:主键ID"` + ShippingNo string `json:"shipping_no" gorm:"size:64;not null;default:'';uniqueIndex;comment:发货单号"` + CustomerID int64 `json:"customer_id" gorm:"not null;default:0;index;comment:客户ID"` + Status int8 `json:"status" gorm:"not null;default:1;index;comment:状态:1=待发货 2=已发货 3=已签收 4=已取消"` + ShippingTime *int64 `json:"shipping_time" gorm:"type:bigint;comment:发货时间(时间戳秒)"` + ExpectedArriveTime *int64 `json:"expected_arrive_time" gorm:"type:bigint;comment:预计到达时间(时间戳秒)"` + ActualArriveTime *int64 `json:"actual_arrive_time" gorm:"type:bigint;comment:实际签收时间(时间戳秒)"` + Operator string `json:"operator" gorm:"size:50;comment:操作人"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间(时间戳秒)"` + UpdatedAt *int64 `json:"updated_at" gorm:"type:bigint;comment:更新时间(时间戳秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` + Remark string `json:"remark" gorm:"size:500;comment:备注"` +} + +func (ShippingOrder) TableName() string { + return "shipping_order" +} + +func (ShippingOrder) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发货单主表'" +} diff --git a/models/shipping_order_item.go b/models/shipping_order_item.go new file mode 100644 index 0000000..e4759a1 --- /dev/null +++ b/models/shipping_order_item.go @@ -0,0 +1,20 @@ +package models + +// ShippingOrderItem 发货单明细表 +type ShippingOrderItem struct { + ID int64 `json:"id" gorm:"primarykey;comment:主键ID"` + ShippingOrderID int64 `json:"shipping_order_id" gorm:"not null;default:0;index;comment:关联发货单ID"` + OutboundOrderItemID *int64 `json:"outbound_order_item_id" gorm:"comment:关联出库单明细ID"` + Quantity int64 `json:"quantity" gorm:"not null;default:1;comment:发货数量"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (ShippingOrderItem) TableName() string { + return "shipping_order_item" +} + +func (ShippingOrderItem) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发货单明细表'" +} diff --git a/models/shop.go b/models/shop.go new file mode 100644 index 0000000..cef6a76 --- /dev/null +++ b/models/shop.go @@ -0,0 +1,23 @@ +package models + +// Shop 店铺主表 +type Shop struct { + ID int64 `json:"id" gorm:"primarykey;comment:店铺ID"` + MallID int64 `json:"mall_id" gorm:"not null;default:0;comment:三方店铺id"` + ShopType int8 `json:"shop_type" gorm:"type:tinyint(1);not null;default:1;comment:店铺类型 1 拼多多 2 孔夫子 5 闲鱼"` + ShopAliasName string `json:"shop_alias_name" gorm:"size:255;not null;default:'';comment:店铺名称(对应平台的店铺名称)"` + CreateBy int64 `json:"create_by" gorm:"not null;default:0;comment:创建者"` + CreateTime int64 `json:"create_time" gorm:"type:bigint;not null;default:0;comment:创建时间"` + UpdateBy int64 `json:"update_by" gorm:"not null;default:0;comment:更新者"` + UpdateTime int64 `json:"update_time" gorm:"type:bigint;not null;default:0;comment:更新时间"` + Status int8 `json:"status" gorm:"type:tinyint(1);not null;default:0;comment:店铺状态(0正常 1停用)"` + DelFlag int8 `json:"del_flag" gorm:"type:tinyint(1);not null;default:0;comment:删除标志(0代表存在 1代表删除)"` +} + +func (Shop) TableName() string { + return "shop" +} + +func (Shop) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='店铺主表'" +} diff --git a/models/sorting_settings.go b/models/sorting_settings.go new file mode 100644 index 0000000..3cef48c --- /dev/null +++ b/models/sorting_settings.go @@ -0,0 +1,26 @@ +package models + +// SortingSettings 店铺分拣设置表 +type SortingSettings struct { + ID int64 `gorm:"column:id;primaryKey;autoIncrement;comment:主键ID" json:"id"` + SupplierNumber string `gorm:"column:supplier_number;type:varchar(100);not null;default:'';comment:供应商编号(填写编号)" json:"supplier_number"` + PurchaseOrderRemark string `gorm:"column:purchase_order_remark;type:varchar(500);not null;default:'';comment:采购单备注" json:"purchase_order_remark"` + ClassifyByCondition int8 `gorm:"column:classify_by_condition;type:tinyint(1);not null;default:1;comment:按品相分类(0-否,1-是)" json:"classify_by_condition"` + WangdiantongEffect string `gorm:"column:wangdiantong_effect;type:text;not null;comment:设置旺店通后生效的详细规则(如:不分仓,九品非多版本不打条码等)" json:"wangdiantong_effect"` + WarehouseNumber string `gorm:"column:warehouse_number;type:varchar(100);not null;default:'';comment:仓库编号(未对接旺店通时留空)" json:"warehouse_number"` + ShelfStore string `gorm:"column:shelf_store;type:varchar(200);not null;default:'';comment:上架店铺(留空使用默认值)" json:"shelf_store"` + Container string `gorm:"column:container;type:varchar(100);not null;default:'';comment:选择容器" json:"container"` + CapacityWeight int64 `gorm:"column:capacity_weight;not null;default:0;comment:容量容重" json:"capacity_weight"` + QuickPicking int8 `gorm:"column:quick_picking;type:tinyint(1);not null;default:1;comment:快速拣货(0-关闭,1-开启;开启后不再调用分拣助手)" json:"quick_picking"` + BlockHkMacauTaiwan int8 `gorm:"column:block_hk_macau_taiwan;type:tinyint(1);not null;default:1;comment:拦截港澳台(0-关闭,1-开启;拦截ISBN 9789开头书籍)" json:"block_hk_macau_taiwan"` + BlockMagazine int8 `gorm:"column:block_magazine;type:tinyint(1);not null;default:1;comment:拦截杂志(0-关闭,1-开启;拦截ISBN 977开头书籍)" json:"block_magazine"` + BlockSpeedInstall int8 `gorm:"column:block_speed_install;type:tinyint(1);not null;default:1;comment:拦截速装(0-关闭,1-开启;拦截速装ISBN)" json:"block_speed_install"` + TakePhoto int8 `gorm:"column:take_photo;type:tinyint(1);not null;default:1;comment:拍照(0-关闭,1-开启)" json:"take_photo"` + CreatedAt int64 `gorm:"column:created_at;not null;comment:创建时间" json:"created_at"` + UpdatedAt int64 `gorm:"column:updated_at;not null;comment:更新时间" json:"updated_at"` +} + +// TableName 指定表名 +func (SortingSettings) TableName() string { + return "sorting_settings" +} diff --git a/models/split_account_config.go b/models/split_account_config.go new file mode 100644 index 0000000..6b3aa55 --- /dev/null +++ b/models/split_account_config.go @@ -0,0 +1,25 @@ +package models + +import "gorm.io/datatypes" + +// SplitAccountConfig 分账配置表 +type SplitAccountConfig struct { + ID int64 `json:"id" gorm:"primarykey;comment:主键ID"` + RuleName string `json:"rule_name" gorm:"size:200;not null;default:'';comment:分账规则配置名称"` + RuleValue datatypes.JSON `json:"rule_value" gorm:"type:json;not null;comment:分账规则配置(JSON格式)"` + Status int8 `json:"status" gorm:"type:tinyint(1);default:1;comment:状态:0-禁用,1-启用"` + Description string `json:"description" gorm:"size:500;comment:配置描述"` + CreatedBy string `json:"created_by" gorm:"size:100;comment:创建人"` + UpdatedBy string `json:"updated_by" gorm:"size:100;comment:更新人"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;default:0;comment:更新时间戳(秒)"` + DeletedAt int64 `json:"deleted_at" gorm:"type:bigint;default:0;comment:删除时间戳(秒)"` +} + +func (SplitAccountConfig) TableName() string { + return "split_account_config" +} + +func (SplitAccountConfig) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分账配置表'" +} diff --git a/models/split_account_deduction_log.go b/models/split_account_deduction_log.go new file mode 100644 index 0000000..081bba9 --- /dev/null +++ b/models/split_account_deduction_log.go @@ -0,0 +1,23 @@ +package models + +import "gorm.io/datatypes" + +// SplitAccountDeductionLog 分账扣钱日志表 +type SplitAccountDeductionLog struct { + ID int64 `json:"id" gorm:"primarykey;comment:日志ID"` + BusinessNo string `json:"business_no" gorm:"size:64;not null;default:'';comment:订单号"` + ConfigID int64 `json:"config_id" gorm:"not null;default:0;comment:分账配置ID"` + ConfigName string `json:"config_name" gorm:"size:200;not null;default:'';comment:分账配置名称"` + DeductionDetails datatypes.JSON `json:"deduction_details" gorm:"type:json;not null;comment:扣款规则(JSON数组)"` + TotalAmount float64 `json:"total_amount" gorm:"type:decimal(15,2);not null;default:0.00;comment:总金额(分账前)"` + DeductionAmount float64 `json:"deduction_amount" gorm:"type:decimal(15,2);not null;default:0.00;comment:扣款总金额"` + RemainingAmount float64 `json:"remaining_amount" gorm:"type:decimal(15,2);not null;default:0.00;comment:剩余金额(分账后)"` + CreatedBy string `json:"created_by" gorm:"size:100;not null;default:'';comment:创建人/系统"` + UpdatedBy string `json:"updated_by" gorm:"size:100;comment:更新人"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;default:0;comment:更新时间戳(秒)"` +} + +func (SplitAccountDeductionLog) TableName() string { + return "split_account_deduction_log" +} diff --git a/models/statist.go b/models/statist.go new file mode 100644 index 0000000..e7bd9bd --- /dev/null +++ b/models/statist.go @@ -0,0 +1,21 @@ +package models + +// Statist 销售订单主表 +type Statist struct { + ID int64 `json:"id" gorm:"primarykey;comment:ID"` + ReceivingNum int64 `json:"receiving_num" gorm:"not null;default:0;comment:入库次数"` + OutboundNum int64 `json:"outbound_num" gorm:"not null;default:0;comment:出库次数"` + CreateBy int64 `json:"create_by" gorm:"not null;default:0;comment:创建人"` + StatDate int64 `json:"stat_date" gorm:"type:bigint;not null;default:0;comment:统计时间"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (Statist) TableName() string { + return "statist" +} + +func (Statist) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='统计表'" +} diff --git a/models/stock_check.go b/models/stock_check.go new file mode 100644 index 0000000..69c4dd0 --- /dev/null +++ b/models/stock_check.go @@ -0,0 +1,28 @@ +package models + +// StockCheck 盘库单主表 +type StockCheck struct { + ID int64 `json:"id" gorm:"primarykey;comment:盘库单ID"` + CheckNo string `json:"check_no" gorm:"size:50;not null;uniqueIndex;comment:盘库单号"` + WarehouseID int64 `json:"warehouse_id" gorm:"not null;default:0;index;comment:仓库ID"` + CheckType int8 `json:"check_type" gorm:"type:tinyint(3);not null;default:1;comment:盘点类型:1=全盘,2=抽盘"` + Status int8 `json:"status" gorm:"type:tinyint(3);not null;default:1;index;comment:状态:1=待盘点,2=盘点中,3=已完成,4=已取消"` + TotalItems int `json:"total_items" gorm:"not null;default:0;comment:总商品数"` + CheckedItems int `json:"checked_items" gorm:"not null;default:0;comment:已盘商品数"` + TotalQuantity int64 `json:"total_quantity" gorm:"not null;default:0;comment:系统总数量"` + ActualQuantity int64 `json:"actual_quantity" gorm:"not null;default:0;comment:实盘总数量"` + Operator string `json:"operator" gorm:"size:100;comment:创建人"` + OperatorID int64 `json:"operator_id" gorm:"not null;default:0;comment:创建人ID"` + Remark string `json:"remark" gorm:"size:500;comment:备注"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;index;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(3);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (StockCheck) TableName() string { + return "stock_check" +} + +func (StockCheck) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='盘库单主表'" +} diff --git a/models/stock_check_item.go b/models/stock_check_item.go new file mode 100644 index 0000000..345f7b1 --- /dev/null +++ b/models/stock_check_item.go @@ -0,0 +1,31 @@ +package models + +// StockCheckItem 盘库单明细表 +type StockCheckItem struct { + ID int64 `json:"id" gorm:"primarykey;comment:明细ID"` + StockCheckID int64 `json:"stock_check_id" gorm:"not null;default:0;index;comment:盘库单ID"` + ProductID int64 `json:"product_id" gorm:"not null;default:0;index;comment:商品ID"` + LocationID int64 `json:"location_id" gorm:"not null;default:0;comment:库位ID"` + BatchNo string `json:"batch_no" gorm:"size:100;not null;default:'';comment:批次号"` + ProductionDate int64 `json:"production_date" gorm:"not null;default:0;comment:生产日期时间戳(秒)"` + ExpiryDate int64 `json:"expiry_date" gorm:"not null;default:0;comment:有效期时间戳(秒)"` + SystemQuantity int64 `json:"system_quantity" gorm:"not null;default:0;comment:系统数量"` + ActualQuantity int64 `json:"actual_quantity" gorm:"comment:实盘数量"` + DifferenceQuantity int64 `json:"difference_quantity" gorm:"comment:差异数量"` + Status int8 `json:"status" gorm:"type:tinyint(3);not null;default:1;index;comment:状态:1=待盘点,2=已盘点"` + CheckOperator string `json:"check_operator" gorm:"size:100;comment:盘点人"` + CheckOperatorID int64 `json:"check_operator_id" gorm:"not null;default:0;comment:盘点人ID"` + CheckTime int64 `json:"check_time" gorm:"not null;default:0;comment:盘点时间戳(秒)"` + Remark string `json:"remark" gorm:"size:255;comment:备注"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;index;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(3);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (StockCheckItem) TableName() string { + return "stock_check_item" +} + +func (StockCheckItem) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='盘库单明细表'" +} diff --git a/models/supplier.go b/models/supplier.go new file mode 100644 index 0000000..fe721d3 --- /dev/null +++ b/models/supplier.go @@ -0,0 +1,23 @@ +package models + +// Supplier 供应商表 +type Supplier struct { + ID int64 `json:"id" gorm:"primarykey;comment:供应商ID"` + Code string `json:"code" gorm:"size:50;not null;default:'';uniqueIndex:uk_code;comment:供应商编码"` + Name string `json:"name" gorm:"size:200;not null;default:'';comment:供应商名称"` + ContactPerson string `json:"contact_person" gorm:"size:50;default:'';comment:联系人"` + ContactPhone string `json:"contact_phone" gorm:"size:20;default:'';comment:联系电话"` + Address string `json:"address" gorm:"size:255;default:'';comment:地址"` + Status int8 `json:"status" gorm:"type:tinyint(1);default:1;comment:状态(0:禁用,1:启用)"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (Supplier) TableName() string { + return "supplier" +} + +func (Supplier) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商表'" +} diff --git a/models/user_mapping.go b/models/user_mapping.go new file mode 100644 index 0000000..0b01218 --- /dev/null +++ b/models/user_mapping.go @@ -0,0 +1,22 @@ +package models + +// UserMapping UserMapping +type UserMapping struct { + ID int64 `json:"id" gorm:"primarykey;comment:映射ID"` + AboutID int64 `json:"about_id" gorm:"not null;default:0;index;comment:关联ID"` + Username string `json:"username" gorm:"size:50;not null;default:'';comment:登录账号"` + WarehouseId int64 `json:"warehouse_id" gorm:"not null;default:0;comment:仓库ID"` + WarehouseCode string `json:"warehouse_code" gorm:"size:50;not null;default:'';comment:仓库编码"` + WarehouseName string `json:"warehouse_name" gorm:"size:100;not null;default:'';comment:仓库名称"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (UserMapping) TableName() string { + return "user_mapping" +} + +func (UserMapping) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户映射表'" +} diff --git a/models/user_type.go b/models/user_type.go new file mode 100644 index 0000000..1fcbbfe --- /dev/null +++ b/models/user_type.go @@ -0,0 +1,23 @@ +package models + +// UserType 用户类型 +type UserType struct { + ID int64 `json:"id" gorm:"primarykey;comment:自增ID"` + CheckStatus int8 `json:"check_status" gorm:"not null;default:1;comment:校验状态 1开启过期时间 0关闭过期时间"` + CheckCode int8 `json:"check_code" gorm:"not null;default:0;comment:校验机械码 0不限制 1单设备 2锁定设备"` + CheckNum int64 `json:"check_num" gorm:"not null;default:0;comment:校验数量 1启动 0不启动"` + Name string `json:"name" gorm:"size:50;not null;default:'';comment:名称"` + Icon string `json:"icon" gorm:"size:50;not null;default:'';comment:图标"` + Remark string `json:"remark" gorm:"size:255;not null;default:'';comment:备注"` + CreatedAt int64 `json:"created_at" gorm:"not null;default:0;comment:创建时间"` + UpdatedAt int64 `json:"updated_at" gorm:"not null;default:0;comment:更新时间"` + DeletedAt int64 `json:"deleted_at" gorm:"not null;default:0;comment:删除时间"` +} + +func (UserType) TableName() string { + return "user_type" +} + +func (UserType) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户类型表'" +} diff --git a/models/warehouse.go b/models/warehouse.go new file mode 100644 index 0000000..20c4d98 --- /dev/null +++ b/models/warehouse.go @@ -0,0 +1,28 @@ +package models + +// Warehouse 仓库表 +type Warehouse struct { + ID int64 `json:"id" gorm:"primarykey;comment:仓库ID"` + LogisticsID int64 `json:"logistics_id" gorm:"not null;default:0;index;comment:所属物流模板ID"` + Code string `json:"code" gorm:"size:50;not null;default:'';uniqueIndex:uk_code;comment:仓库编码"` + Name string `json:"name" gorm:"size:100;not null;default:'';comment:仓库名称"` + Type int8 `json:"type" gorm:"not null;default:1;comment:仓库类型(1:主仓库,2:备用仓库,3:中转仓库)"` + ContactPerson string `json:"contact_person" gorm:"size:50;default:'';comment:联系人"` + ContactPhone string `json:"contact_phone" gorm:"size:20;default:'';comment:联系电话"` + Province string `json:"province" gorm:"size:50;default:'';comment:省份"` + City string `json:"city" gorm:"size:50;default:'';comment:城市"` + District string `json:"district" gorm:"size:50;default:'';comment:区县"` + Address string `json:"address" gorm:"size:255;not null;default:'';comment:仓库地址"` + Status int8 `json:"status" gorm:"type:tinyint(1);not null;default:1;comment:状态(0:禁用,1:启用)"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (Warehouse) TableName() string { + return "warehouse" +} + +func (Warehouse) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='仓库表'" +} diff --git a/models/wave_header.go b/models/wave_header.go new file mode 100644 index 0000000..a1fa4aa --- /dev/null +++ b/models/wave_header.go @@ -0,0 +1,25 @@ +package models + +// WaveHeader 波次主表 +type WaveHeader struct { + ID int64 `json:"id" gorm:"primarykey;comment:波次ID"` + WaveNo string `json:"wave_no" gorm:"size:100;not null;default:'';uniqueIndex;comment:波次号"` + Direction int8 `json:"direction" gorm:"not null;default:0;index;comment:波次方向(1:入库/inbound,2:出库/outbound)"` + Type int8 `json:"type" gorm:"not null;default:1;comment:波次类型(1:普通/normal,2:紧急/urgent,3:批量/batch)"` + WarehouseID int64 `json:"warehouse_id" gorm:"not null;default:0;index;comment:所属仓库ID"` + RelatedOrderID int64 `json:"related_order_id" gorm:"not null;default:0;index;comment:关联订单ID"` + Status int8 `json:"status" gorm:"not null;default:1;index;comment:状态(1:已创建/created,2:已下发/released,3:拣货中/picking,4:已完成/completed,5:已取消/cancelled)"` + Creator string `json:"creator" gorm:"size:100;not null;default:'';comment:创建人"` + CreatorID int64 `json:"creator_id" gorm:"not null;default:0;comment:创建人ID"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (WaveHeader) TableName() string { + return "wave_header" +} + +func (WaveHeader) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='波次主表'" +} diff --git a/models/wave_task.go b/models/wave_task.go new file mode 100644 index 0000000..01b8c39 --- /dev/null +++ b/models/wave_task.go @@ -0,0 +1,29 @@ +package models + +// WaveTask 波次任务表 +type WaveTask struct { + ID int64 `json:"id" gorm:"primarykey;comment:任务ID"` + WaveID int64 `json:"wave_id" gorm:"not null;default:0;index;comment:所属波次ID(关联wave_header,可获知方向)"` + CarId int64 `json:"car_id" gorm:"not null;default:0;comment:小车ID"` + CarCode int64 `json:"car_code" gorm:"not null;default:0;comment:小车编号"` + CarCapacity int64 `json:"car_capacity" gorm:"not null;default:0;comment:小车容量"` + TaskNo string `json:"task_no" gorm:"size:100;not null;default:'';uniqueIndex;comment:任务编号"` + Type int8 `json:"type" gorm:"not null;default:1;comment:任务类型(1:拣货/pick-出库,2:补货/replenish,3:移库/move,4:上架/putaway-入库)"` + Assignee string `json:"assignee" gorm:"size:100;not null;default:'';index;comment:指派人"` + AssigneeID int64 `json:"assignee_id" gorm:"not null;default:0;comment:指派人ID"` + Status int8 `json:"status" gorm:"not null;default:1;index;comment:任务状态(1:待指派/pending,2:已指派/assigned,3:拣货中/picking,4:已完成/completed,5:已取消/cancelled)"` + StartedAt int64 `json:"started_at" gorm:"not null;default:0;comment:开始时间戳(秒)"` + CompletedAt int64 `json:"completed_at" gorm:"not null;default:0;comment:完成时间戳(秒)"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` + IsForce int8 `json:"is_force" gorm:"type:tinyint(1);not null;default:0;comment:是否强制完成 0 否 1是"` +} + +func (WaveTask) TableName() string { + return "wave_task" +} + +func (WaveTask) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='波次任务表'" +} diff --git a/models/wave_task_detail.go b/models/wave_task_detail.go new file mode 100644 index 0000000..718b1d7 --- /dev/null +++ b/models/wave_task_detail.go @@ -0,0 +1,24 @@ +package models + +// WaveTaskDetail 波次任务明细表 +type WaveTaskDetail struct { + ID int64 `json:"id" gorm:"primarykey;comment:明细ID"` + WaveTaskID int64 `json:"wave_task_id" gorm:"not null;default:0;index;comment:任务ID"` + ProductID int64 `json:"product_id" gorm:"not null;default:0;index;comment:商品ID"` + LocationID int64 `json:"location_id" gorm:"not null;default:0;index;comment:库位ID(入库时为上架库位,出库时为拣货库位)"` + BatchNo string `json:"batch_no" gorm:"size:100;not null;default:'';comment:批次号"` + PlannedQuantity int64 `json:"planned_quantity" gorm:"not null;default:0;comment:计划操作数量(最小单位)"` + ActualQuantity int64 `json:"actual_quantity" gorm:"not null;default:0;comment:实际操作数量"` + Status int8 `json:"status" gorm:"not null;default:1;comment:明细状态(1:待处理/pending,2:已完成/done,3:缺货/short)"` + CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳(秒)"` + UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳(秒)"` + IsDel int8 `json:"is_del" gorm:"type:tinyint(1);not null;default:0;comment:逻辑删除标记(0:未删除,1:已删除)"` +} + +func (WaveTaskDetail) TableName() string { + return "wave_task_detail" +} + +func (WaveTaskDetail) TableOptions() string { + return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='波次任务明细表'" +} diff --git a/ocr/OCRService b/ocr/OCRService new file mode 100644 index 0000000..45ad45e Binary files /dev/null and b/ocr/OCRService differ diff --git a/ocr/OCRService.exe b/ocr/OCRService.exe new file mode 100644 index 0000000..89dbf91 Binary files /dev/null and b/ocr/OCRService.exe differ diff --git a/ocr/ocr.go b/ocr/ocr.go new file mode 100644 index 0000000..9eeafed --- /dev/null +++ b/ocr/ocr.go @@ -0,0 +1,55 @@ +package ocr + +import ( + "fmt" + "os" + "os/exec" + "path/filepath" + "psi/config" + "runtime" +) + +var ( + ocrServiceCmd *exec.Cmd +) + +func StartService() { + if err := startOCRService(); err != nil { + fmt.Fprintf(os.Stderr, "启动 OCR 服务失败: %v\n", err) + os.Exit(1) + } + + fmt.Println("OCR 服务已就绪") +} + +func startOCRService() error { + exePath := getOCRServiceExePath() + if _, err := os.Stat(exePath); os.IsNotExist(err) { + return fmt.Errorf("找不到 OCRService 可执行文件: %s", exePath) + } + ocrServiceCmd = exec.Command(exePath) + ocrServiceCmd.Stdout = os.Stdout + ocrServiceCmd.Stderr = os.Stderr + err := ocrServiceCmd.Start() + if err != nil { + return err + } + fmt.Println("OCR 服务进程已启动,PID:", ocrServiceCmd.Process.Pid) + return nil +} + +func getOCRServiceExePath() string { + basePath := config.AppConfig.OCR.ExeUrl + + if runtime.GOOS == "windows" { + if filepath.Ext(basePath) != ".exe" { + return basePath + ".exe" + } + return basePath + } + + if filepath.Ext(basePath) == ".exe" { + return basePath[:len(basePath)-4] + } + return basePath +} diff --git a/psi.exe b/psi.exe new file mode 100644 index 0000000..7d6fe01 Binary files /dev/null and b/psi.exe differ diff --git a/routes/routes.go b/routes/routes.go new file mode 100644 index 0000000..78f29b6 --- /dev/null +++ b/routes/routes.go @@ -0,0 +1,273 @@ +package router + +import ( + "fmt" + "github.com/gin-gonic/gin" + "github.com/pkg/errors" + "psi/config" + "psi/controllers" + "psi/middleware" +) + +var employeeApi = &controllers.EmployeeApi{} +var bookApi = &controllers.BookApi{} +var locationApi = &controllers.LocationApi{} +var warehouseApi = &controllers.WarehouseApi{} +var ocrApi = &controllers.OcrApi{} +var supplierApi = &controllers.SupplierApi{} +var productApi = &controllers.ProductApi{} +var processApi = &controllers.ProcessApi{} +var barcodeApi = &controllers.BarcodeApi{} +var purchaseApi = &controllers.PurchaseApi{} +var waveApi = &controllers.WaveApi{} +var sortingSettingsApi = &controllers.SortingSettingsApi{} +var salesApi = &controllers.SalesApi{} +var receivingApi = &controllers.ReceivingApi{} +var inventoryApi = &controllers.InventoryApi{} +var carApi = &controllers.CarApi{} +var shopApi = &controllers.ShopApi{} +var outboundApi = &controllers.OutboundApi{} +var shippingApi = &controllers.ShippingApi{} +var goodsImportApi = &controllers.GoodsImportApi{} +var locationImportApi = &controllers.LocationImportApi{} +var outTaskApi = &controllers.OutTaskApi{} +var logisticsApi = &controllers.LogisticsApi{} +var statistApi = &controllers.StatistApi{} +var userTypeApi = &controllers.UserTypeApi{} +var splitAccountConfigApi = &controllers.SplitAccountConfigApi{} +var splitAccountDeductionLogApi = &controllers.SplitAccountDeductionLogApi{} +var configApi = &controllers.ConfigApi{} +var cancelLogisticsApi = &controllers.CancelLogisticsApi{} + +func Run() { + defer func() { + if err := recover(); err != nil { + fmt.Println(err) + } + }() + + router := initRouter() + + if err := router.Run(":" + config.AppConfig.Server.Port); err != nil { + panic(errors.Wrapf(err, "router start fail")) + } +} + +func initRouter() (r *gin.Engine) { + r = gin.Default() + // 中间件 + r.Use(middleware.Cors()) + + r.Static("/excel", "./excel") + api := r.Group("/api") + { + // 公开接口 + public := api.Group("") + { + public.POST("/login/:type", employeeApi.Login) // 登录 + public.POST("/employee/reg", employeeApi.AddEmployee) // 注册 + // OCR + public.POST("/ocr", ocrApi.RecognizeText) // OCR识别 + public.POST("/sales-order/create", processApi.CreateSalesOrderWithDetail) // 创建销售订单 + public.POST("/product/updatePrice", productApi.UpdatePrice) // 更新商品价格 + public.GET("/product/getProductInventory", productApi.GetProductInventory) // 获取商品库存 + public.GET("/employee/check_code", employeeApi.CheckCodeEmployee) // 验证码 + public.POST("/employee/clear_code", employeeApi.ClearCodeEmployee) // 验证码 + public.POST("/out-task-log/update", outTaskApi.UpdateOutTaskLog) // 更新出库任务日志 + public.GET("/warehouse/mapping_list", warehouseApi.GetUserWarehouseMappings) // 获取仓库映射 + // 获取仓库商品列表 + public.GET("/product/distribution_list", productApi.GetDistributionProductList) // 获取分销商品列表 + public.POST("/product/batchPush", productApi.BatchPushProducts) // 批量推送商品 + public.POST("/product/pushToShop", productApi.PushProductToShop) // 推送商品到店铺 + } + + sign := api.Group("") + { + sign.POST("/location/sync-locations", locationApi.SyncLocations) // 同步库位 + sign.POST("/goods/sync-batch", locationApi.SyncGoods) // 同步商品 + sign.POST("/goods/import-from-excel", goodsImportApi.ImportFromExcel) // 从Excel导入商品 + sign.POST("/location/import-from-excel", locationImportApi.ImportFromExcel) // 从Excel批量创建库位 + sign.POST("/logistics/cancel", cancelLogisticsApi.CancelLogistics) // 取消物流单号 + } + + // 需要认证的接口 + auth := api.Group("") + auth.Use(middleware.APISign()) + auth.Use(middleware.JWTAuth()) + { + // 管理员 + auth.GET("/user/current", employeeApi.GetCurrentUser) // 获取当前用户信息 + auth.POST("/logout", employeeApi.Logout) // 登出 + // 配置管理 + auth.GET("/config/list", configApi.GetConfigList) // 获取配置列表 + auth.GET("/config/detail/:id", configApi.GetConfigDetail) // 获取配置详情 + auth.POST("/config/create", configApi.CreateConfig) // 创建配置 + auth.PUT("/config/update", configApi.UpdateConfig) // 更新配置 + auth.DELETE("/config/delete", configApi.DeleteConfig) // 删除配置 + // 供应商管理 + auth.GET("/supplier/list", supplierApi.GetSupplierList) // 获取供应商列表 + auth.GET("/supplier/detail/:id", supplierApi.GetSupplierDetail) // 获取供应商详情 + auth.POST("/supplier/create", supplierApi.CreateSupplier) // 创建供应商 + auth.PUT("/supplier/update", supplierApi.UpdateSupplier) // 更新供应商 + auth.DELETE("/supplier/delete", supplierApi.DeleteSupplier) // 删除供应商 + // 仓库管理 + auth.GET("/warehouse/list", warehouseApi.GetWarehouseList) // 获取仓库列表 + auth.GET("/warehouse/detail/:id", warehouseApi.GetWarehouseDetail) // 获取仓库详情 + auth.POST("/warehouse/create", warehouseApi.CreateWarehouse) // 创建仓库 + auth.PUT("/warehouse/update", warehouseApi.UpdateWarehouse) // 更新仓库 + auth.POST("/warehouse/delete", warehouseApi.DeleteWarehouse) // 删除仓库 + // 库位管理 + auth.GET("/location/list", locationApi.GetLocationList) // 获取库位列表 + auth.GET("/location/all-list", locationApi.GetAllLocationList) // 获取所有库位列表(仓库ID可选) + auth.GET("/location/detail/:id", locationApi.GetLocationDetail) // 获取库位详情 + auth.POST("/location/create", locationApi.CreateLocation) // 创建库位 + auth.POST("/location/batch-generate", locationApi.BatchGenerateLocations) // 批量生成库位 + auth.PUT("/location/update", locationApi.UpdateLocation) // 更新库位 + auth.POST("/location/delete", locationApi.DeleteLocation) // 删除库位 + auth.POST("/location/to-csv", locationApi.LocationToCsv) // 导出库位 + auth.POST("/location/csv-to", locationApi.CsvToLocation) // 导入库位 + // 图书相关 + auth.GET("/getBookInfo", bookApi.GetBookInfo) // 获取图书信息 + auth.GET("/getSuitBook", bookApi.GetSuitBook) // 获取套装书 + auth.GET("/getNoIsbnBook", bookApi.GetNoIsbnBook) // 获取无书号书 + auth.GET("/getProCode", bookApi.GetProCode) // 获取商品条码 + auth.POST("/syncBook", bookApi.SyncBook) // 同步图书 + // 商品管理 + auth.GET("/product/list", productApi.GetProductList) // 商品列表 + auth.GET("/product/detail", productApi.GetProductDetail) // 商品详情 + auth.POST("/product/save", productApi.SaveProduct) // 保存商品 + auth.POST("/product/delete", productApi.DeleteProduct) // 删除商品 + auth.POST("/product/retry-out-task", productApi.RetryOutTask) // 重新出库 + auth.GET("/product/export", productApi.ExportProducts) // 导出商品 + auth.GET("/product/shop-detail", productApi.GetShopProductDetail) // 获取商品在店铺的详情 + // 条形码 + auth.POST("/barcode/generate", barcodeApi.GenerateBarcode) // 生成条形码 + // 采购波次流程 + auth.POST("/purchase-order/create-with-wave", processApi.CreatePurchaseOrderWithWave) // 创建采购单并生成入库波次 + auth.POST("/wave/release", processApi.ReleaseWave) // 发布入库波次 + // 采购订单与入库管理 + auth.GET("/getLocationInfo", locationApi.GetLocationInfo) // 获取库位信息 + auth.POST("/receiving/bind-wave", processApi.BindWave) // 绑定入库波次 + auth.GET("/receiving/wave-task/:id", processApi.GetWaveTaskInfo) // 获取入库波次任务信息 + auth.POST("/receiving/submit", processApi.SubmitReceiving) // 提交入库 + auth.GET("/receiving/detail/:id", processApi.GetReceivingDetail) // 获取入库单详情 + // 销售订单与出库管理 + auth.POST("/outbound-order/create", processApi.CreateOutboundOrder) // 创建销售订单 + auth.POST("/outbound-order/change-location", processApi.ChangeLocation) // 修改出库单地出库库位 + auth.POST("/wave/outbound/create", processApi.CreateOutboundWave) // 创建出库波次 + auth.POST("/wave/outbound/release", processApi.ReleaseOutboundWave) // 发布出库波次 + auth.POST("/outbound/bind-wave", processApi.BindOutboundWave) // 绑定出库波次 + auth.GET("/outbound/wave-task/:id", processApi.GetWaveTaskInfo) // 获取出库波次任务信息 + auth.POST("/outbound/submit", processApi.SubmitOutbound) // 提交出库 + auth.GET("/outbound/detail/:id", processApi.GetOutboundDetail) // 获取出库单详情 + auth.POST("/shipping-order/create", processApi.CreateShippingOrder) // 创建发货单 + auth.POST("/shipping-order/update", processApi.UpdateShippingLogistics) // 更新发货单物流信息 + auth.POST("/sales-order/cancel", processApi.CancelSalesOrder) // 取消销售订单 + auth.POST("/wave/outbound/cancel", processApi.CancelOutboundWave) // 取消出库波次 + // 盘库 + auth.POST("/stock_check/adjust", processApi.AdjustInventory) // 盘库 + auth.POST("/stock_check/return", processApi.ReturnInventory) // 盘库退货 + // 采购订单管理 + auth.GET("/purchase-order/list", purchaseApi.GetPurchaseOrderList) // 获取采购订单列表 + auth.GET("/purchase-order/detail", purchaseApi.GetPurchaseOrderDetail) // 获取采购订单详情 + // 入库订单管理 + auth.GET("/receiving-order/list", receivingApi.GetReceivingOrderList) // 获取入库订单列表 + auth.GET("/receiving-order/detail", receivingApi.GetReceivingOrderDetail) // 获取入库订单详情 + // 销售订单管理 + auth.GET("/sales-order/list", salesApi.GetSalesOrderList) // 获取销售订单列表 + auth.GET("/sales-order/detail", salesApi.GetSalesOrderDetail) // 获取销售订单详情 + auth.GET("/sales-order/detaillist", salesApi.GetSalesOrderDetailList) // 获取销售订单详情列表 + // 出库单管理 + auth.GET("/outbound-order/list", outboundApi.GetOutboundOrderList) // 获取出库订单列表 + auth.GET("/outbound-order/detail", outboundApi.GetOutboundOrderDetail) // 获取出库订单详情 + // 发货管理 + auth.GET("/shipping-order/list", shippingApi.GetShippingOrderList) // 获取发货单列表 + auth.GET("/shipping-order/detail", shippingApi.GetShippingOrderDetail) // 获取发货单详情 + auth.GET("/shipping-order/detaillist", shippingApi.GetShippingOrderDetailList) // 获取发货单详情列表(按状态) + // 波次任务管理 + auth.GET("/wave/task/list", waveApi.GetWaveTaskList) // 获取波次任务列表 + auth.GET("/wave/task/detail", waveApi.GetWaveTaskDetail) // 获取波次任务详情 + auth.GET("/wave/getWaveStatusById", waveApi.GetWaveStatusById) //用波次id获取波次的状态 + // 分拣设置管理 + auth.GET("/sorting-settings/get", sortingSettingsApi.GetSortingSettings) // 获取分拣设置 + auth.POST("/sorting-settings/save", sortingSettingsApi.SaveSortingSettings) // 保存分拣设置 + // 库存管理 + auth.GET("/inventory/list", inventoryApi.GetInventoryList) // 获取库存列表 + auth.GET("/inventory/grouped-list", inventoryApi.GetInventoryGroupedList) // 获取按仓库库位分分组的库存列表 + auth.GET("/inventory/detail", inventoryApi.GetInventoryDetail) // 获取库存详情 + auth.GET("/inventory/log/list", inventoryApi.GetInventoryLogList) // 获取库存日志列表 + auth.GET("/inventory/statist", inventoryApi.InventoryStatist) // 库存统计 + auth.GET("/inventory/summary", inventoryApi.GetInventorySummary) // 获取库存统计信息 + auth.GET("/inventory/stock-check/list", inventoryApi.GetStockCheckList) // 获取库存盘点列表 + auth.GET("/inventory/stock-check/detail", inventoryApi.GetStockCheckDetail) // 获取库存盘点详情 + // 小车管理 + auth.GET("/car/list", carApi.GetCarList) // 获取小车列表 + auth.GET("/car/detail/:id", carApi.GetCarDetail) // 获取小车详情 + auth.POST("/car/create", carApi.CreateCar) // 创建小车 + auth.PUT("/car/update", carApi.UpdateCar) // 更新小车 + auth.DELETE("/car/delete", carApi.DeleteCar) // 删除小车 + // 店铺管理 + auth.GET("/shop/list", shopApi.GetShopList) // 获取店铺列表 + auth.GET("/shop/detail/:id", shopApi.GetShopDetail) // 获取店铺详情 + auth.POST("/shop/create", shopApi.CreateShop) // 创建店铺 + auth.PUT("/shop/update", shopApi.UpdateShop) // 更新店铺 + auth.DELETE("/shop/delete", shopApi.DeleteShop) // 删除店铺 + //PDA配置 + auth.GET("/employee/get_pda_config", employeeApi.GetEmployeeSettings) // 获取PDA配置 + auth.POST("/employee/set_pda_config", employeeApi.SaveEmployeeSettings) // 保存PDA配置 + // 外部任务管理 + auth.GET("/out-task/list", outTaskApi.GetOutTaskList) // 获取外部任务列表 + auth.GET("/out-task-log/list", outTaskApi.GetOutTaskLogList) // 获取外部任务日志列表 + auth.GET("/out-task/by-shop", outTaskApi.GetOutTaskByShop) // 获取店铺外部任务列表 + // 物流模板管理 + auth.GET("/logistics/list", logisticsApi.GetLogisticsList) // 获取物流模板列表 + auth.GET("/logistics/detail/:id", logisticsApi.GetLogisticsDetail) // 获取物流模板详情 + auth.POST("/logistics/create", logisticsApi.CreateLogistics) // 创建物流模板 + auth.PUT("/logistics/update", logisticsApi.UpdateLogistics) // 更新物流模板 + auth.DELETE("/logistics/delete", logisticsApi.DeleteLogistics) // 删除物流模板 + // 分账配置管理 + auth.GET("/split-account-config/list", splitAccountConfigApi.GetSplitAccountConfigList) // 获取分账配置列表 + auth.GET("/split-account-config/detail/:id", splitAccountConfigApi.GetSplitAccountConfigDetail) // 获取分账配置详情 + auth.POST("/split-account-config/create", splitAccountConfigApi.CreateSplitAccountConfig) // 创建分账配置 + auth.PUT("/split-account-config/update", splitAccountConfigApi.UpdateSplitAccountConfig) // 更新分账配置 + auth.DELETE("/split-account-config/delete", splitAccountConfigApi.DeleteSplitAccountConfig) // 删除分账配置 + // 分账扣钱日志管理 + auth.GET("/split-account-deduction-log/list", splitAccountDeductionLogApi.GetSplitAccountDeductionLogList) // 获取分账扣钱日志列表 + auth.GET("/split-account-deduction-log/detail/:id", splitAccountDeductionLogApi.GetSplitAccountDeductionLogDetail) // 获取分账扣钱日志详情 + auth.POST("/split-account-deduction-log/create", splitAccountDeductionLogApi.CreateSplitAccountDeductionLog) // 创建分账 + auth.PUT("/split-account-deduction-log/update", splitAccountDeductionLogApi.UpdateSplitAccountDeductionLog) // 更新分账 + auth.DELETE("/split-account-deduction-log/delete", splitAccountDeductionLogApi.DeleteSplitAccountDeductionLog) // 删除分账 + // 产品日志管理 + auth.GET("/product_log/list", productApi.GetProductLogList) // 获取产品日志列表 + auth.POST("/product_log/save", productApi.SaveProductLog) // 保存产品日志 + auth.POST("/product_log/audit", productApi.AuditProductLog) // 审核产品日志 + auth.POST("/product_log/delete", productApi.DeleteProductLog) // 删除产品日志 + // 仪表盘统计 + auth.GET("/dashboard/statist", statistApi.DashboardStatist) // 仪表盘统计 + auth.GET("/dashboard/warehouse", statistApi.GetWarehouseStatist) // 获取仓库统计 + auth.GET("/dashboard/order", statistApi.GetOrderStatist) // 获取订单统计 + + // 管理员接口 + admin := auth.Group("/admin") + admin.Use(middleware.APISign()) + admin.Use(middleware.AdminRequired()) + { + // 员工管理 + admin.GET("/employee/list", employeeApi.GetEmployeeList) // 获取员工列表 + admin.POST("/employee/add", employeeApi.AddEmployee) // 添加员工 + admin.POST("/employee/update", employeeApi.UpdatePasswordEmployee) // 更新员工密码 + admin.POST("/employee/update_expire_time", employeeApi.UpdateExpireTimeEmployee) // 更新员工到期时间 + admin.GET("/employee/check_expire_time", employeeApi.CheckExpireTimeEmployee) // 检查员工到期时间 + admin.POST("/employee/set_level", employeeApi.SetEmployeeLevel) // 设置员工等级 + admin.GET("/employee/level_config", employeeApi.GetLevelConfigList) // 获取员工等级配置列表 + // 用户类型管理 + admin.GET("/user-type/list", userTypeApi.GetUserTypeList) // 获取用户类型列表 + admin.GET("/user-type/detail/:id", userTypeApi.GetUserTypeDetail) // 获取用户类型详情 + admin.POST("/user-type/create", userTypeApi.CreateUserType) // 创建用户类型 + admin.PUT("/user-type/update", userTypeApi.UpdateUserType) // 更新用户类型 + admin.DELETE("/user-type/delete", userTypeApi.DeleteUserType) // 删除用户类型 + } + } + } + return +} diff --git a/routes/routes.go.bak2 b/routes/routes.go.bak2 new file mode 100644 index 0000000..08e2f3c --- /dev/null +++ b/routes/routes.go.bak2 @@ -0,0 +1,272 @@ +package router + +import ( + "fmt" + "github.com/gin-gonic/gin" + "github.com/pkg/errors" + "psi/config" + "psi/controllers" + "psi/middleware" +) + +var employeeApi = &controllers.EmployeeApi{} +var bookApi = &controllers.BookApi{} +var locationApi = &controllers.LocationApi{} +var warehouseApi = &controllers.WarehouseApi{} +var ocrApi = &controllers.OcrApi{} +var supplierApi = &controllers.SupplierApi{} +var productApi = &controllers.ProductApi{} +var processApi = &controllers.ProcessApi{} +var barcodeApi = &controllers.BarcodeApi{} +var purchaseApi = &controllers.PurchaseApi{} +var waveApi = &controllers.WaveApi{} +var sortingSettingsApi = &controllers.SortingSettingsApi{} +var salesApi = &controllers.SalesApi{} +var receivingApi = &controllers.ReceivingApi{} +var inventoryApi = &controllers.InventoryApi{} +var carApi = &controllers.CarApi{} +var shopApi = &controllers.ShopApi{} +var outboundApi = &controllers.OutboundApi{} +var shippingApi = &controllers.ShippingApi{} +var goodsImportApi = &controllers.GoodsImportApi{} +var locationImportApi = &controllers.LocationImportApi{} +var outTaskApi = &controllers.OutTaskApi{} +var logisticsApi = &controllers.LogisticsApi{} +var statistApi = &controllers.StatistApi{} +var userTypeApi = &controllers.UserTypeApi{} +var splitAccountConfigApi = &controllers.SplitAccountConfigApi{} +var splitAccountDeductionLogApi = &controllers.SplitAccountDeductionLogApi{} +var configApi = &controllers.ConfigApi{} +var cancelLogisticsApi = &controllers.CancelLogisticsApi{} + +func Run() { + defer func() { + if err := recover(); err != nil { + fmt.Println(err) + } + }() + + router := initRouter() + + if err := router.Run(":" + config.AppConfig.Server.Port); err != nil { + panic(errors.Wrapf(err, "router start fail")) + } +} + +func initRouter() (r *gin.Engine) { + r = gin.Default() + // 中间件 + r.Use(middleware.Cors()) + + r.Static("/excel", "./excel") + api := r.Group("/api") + { + // 公开接口 + public := api.Group("") + { + public.POST("/login/:type", employeeApi.Login) // 登录 + public.POST("/employee/reg", employeeApi.AddEmployee) // 注册 + // OCR + public.POST("/ocr", ocrApi.RecognizeText) // OCR识别 + public.POST("/sales-order/create", processApi.CreateSalesOrderWithDetail) // 创建销售订单 + public.POST("/product/updatePrice", productApi.UpdatePrice) // 更新商品价格 + public.GET("/product/getProductInventory", productApi.GetProductInventory) // 获取商品库存 + public.GET("/employee/check_code", employeeApi.CheckCodeEmployee) // 验证码 + public.POST("/employee/clear_code", employeeApi.ClearCodeEmployee) // 验证码 + public.POST("/out-task-log/update", outTaskApi.UpdateOutTaskLog) // 更新出库任务日志 + public.GET("/warehouse/mapping_list", warehouseApi.GetUserWarehouseMappings) // 获取仓库映射 + // 获取仓库商品列表 + public.GET("/product/distribution_list", productApi.GetDistributionProductList) // 获取分销商品列表 + public.POST("/product/batchPush", productApi.BatchPushProducts) // 批量推送商品 + public.POST("/product/pushToShop", productApi.PushProductToShop) // 推送商品到店铺 + } + + sign := api.Group("") + { + sign.POST("/location/sync-locations", locationApi.SyncLocations) // 同步库位 + sign.POST("/goods/sync-batch", locationApi.SyncGoods) // 同步商品 + sign.POST("/goods/import-from-excel", goodsImportApi.ImportFromExcel) // 从Excel导入商品 + sign.POST("/location/import-from-excel", locationImportApi.ImportFromExcel) // 从Excel批量创建库位 + sign.POST("/logistics/cancel", cancelLogisticsApi.CancelLogistics) // 取消物流单号 + } + + // 需要认证的接口 + auth := api.Group("") + auth.Use(middleware.APISign()) + auth.Use(middleware.JWTAuth()) + { + // 管理员 + auth.GET("/user/current", employeeApi.GetCurrentUser) // 获取当前用户信息 + auth.POST("/logout", employeeApi.Logout) // 登出 + // 配置管理 + auth.GET("/config/list", configApi.GetConfigList) // 获取配置列表 + auth.GET("/config/detail/:id", configApi.GetConfigDetail) // 获取配置详情 + auth.POST("/config/create", configApi.CreateConfig) // 创建配置 + auth.PUT("/config/update", configApi.UpdateConfig) // 更新配置 + auth.DELETE("/config/delete", configApi.DeleteConfig) // 删除配置 + // 供应商管理 + auth.GET("/supplier/list", supplierApi.GetSupplierList) // 获取供应商列表 + auth.GET("/supplier/detail/:id", supplierApi.GetSupplierDetail) // 获取供应商详情 + auth.POST("/supplier/create", supplierApi.CreateSupplier) // 创建供应商 + auth.PUT("/supplier/update", supplierApi.UpdateSupplier) // 更新供应商 + auth.DELETE("/supplier/delete", supplierApi.DeleteSupplier) // 删除供应商 + // 仓库管理 + auth.GET("/warehouse/list", warehouseApi.GetWarehouseList) // 获取仓库列表 + auth.GET("/warehouse/detail/:id", warehouseApi.GetWarehouseDetail) // 获取仓库详情 + auth.POST("/warehouse/create", warehouseApi.CreateWarehouse) // 创建仓库 + auth.PUT("/warehouse/update", warehouseApi.UpdateWarehouse) // 更新仓库 + auth.POST("/warehouse/delete", warehouseApi.DeleteWarehouse) // 删除仓库 + // 库位管理 + auth.GET("/location/list", locationApi.GetLocationList) // 获取库位列表 + auth.GET("/location/all-list", locationApi.GetAllLocationList) // 获取所有库位列表(仓库ID可选) + auth.GET("/location/detail/:id", locationApi.GetLocationDetail) // 获取库位详情 + auth.POST("/location/create", locationApi.CreateLocation) // 创建库位 + auth.POST("/location/batch-generate", locationApi.BatchGenerateLocations) // 批量生成库位 + auth.PUT("/location/update", locationApi.UpdateLocation) // 更新库位 + auth.POST("/location/delete", locationApi.DeleteLocation) // 删除库位 + auth.POST("/location/to-csv", locationApi.LocationToCsv) // 导出库位 + auth.POST("/location/csv-to", locationApi.CsvToLocation) // 导入库位 + // 图书相关 + auth.GET("/getBookInfo", bookApi.GetBookInfo) // 获取图书信息 + auth.GET("/getSuitBook", bookApi.GetSuitBook) // 获取套装书 + auth.GET("/getNoIsbnBook", bookApi.GetNoIsbnBook) // 获取无书号书 + auth.GET("/getProCode", bookApi.GetProCode) // 获取商品条码 + auth.POST("/syncBook", bookApi.SyncBook) // 同步图书 + // 商品管理 + auth.GET("/product/list", productApi.GetProductList) // 商品列表 + auth.GET("/product/detail", productApi.GetProductDetail) // 商品详情 + auth.POST("/product/save", productApi.SaveProduct) // 保存商品 + auth.POST("/product/delete", productApi.DeleteProduct) // 删除商品 + auth.POST("/product/retry-out-task", productApi.RetryOutTask) // 重新出库 + auth.GET("/product/export", productApi.ExportProducts) // 导出商品 + auth.GET("/product/shop-detail", productApi.GetShopProductDetail) // 获取商品在店铺的详情 + // 条形码 + auth.POST("/barcode/generate", barcodeApi.GenerateBarcode) // 生成条形码 + // 采购波次流程 + auth.POST("/purchase-order/create-with-wave", processApi.CreatePurchaseOrderWithWave) // 创建采购单并生成入库波次 + auth.POST("/wave/release", processApi.ReleaseWave) // 发布入库波次 + // 采购订单与入库管理 + auth.GET("/getLocationInfo", locationApi.GetLocationInfo) // 获取库位信息 + auth.POST("/receiving/bind-wave", processApi.BindWave) // 绑定入库波次 + auth.GET("/receiving/wave-task/:id", processApi.GetWaveTaskInfo) // 获取入库波次任务信息 + auth.POST("/receiving/submit", processApi.SubmitReceiving) // 提交入库 + auth.GET("/receiving/detail/:id", processApi.GetReceivingDetail) // 获取入库单详情 + // 销售订单与出库管理 + auth.POST("/outbound-order/create", processApi.CreateOutboundOrder) // 创建销售订单 + auth.POST("/outbound-order/change-location", processApi.ChangeLocation) // 修改出库单地出库库位 + auth.POST("/wave/outbound/create", processApi.CreateOutboundWave) // 创建出库波次 + auth.POST("/wave/outbound/release", processApi.ReleaseOutboundWave) // 发布出库波次 + auth.POST("/outbound/bind-wave", processApi.BindOutboundWave) // 绑定出库波次 + auth.GET("/outbound/wave-task/:id", processApi.GetWaveTaskInfo) // 获取出库波次任务信息 + auth.POST("/outbound/submit", processApi.SubmitOutbound) // 提交出库 + auth.GET("/outbound/detail/:id", processApi.GetOutboundDetail) // 获取出库单详情 + auth.POST("/shipping-order/create", processApi.CreateShippingOrder) // 创建发货单 + auth.POST("/shipping-order/update", processApi.UpdateShippingLogistics) // 更新发货单物流信息 + auth.POST("/sales-order/cancel", processApi.CancelSalesOrder) // 取消销售订单 + auth.POST("/wave/outbound/cancel", processApi.CancelOutboundWave) // 取消出库波次 + // 盘库 + auth.POST("/stock_check/adjust", processApi.AdjustInventory) // 盘库 + auth.POST("/stock_check/return", processApi.ReturnInventory) // 盘库退货 + // 采购订单管理 + auth.GET("/purchase-order/list", purchaseApi.GetPurchaseOrderList) // 获取采购订单列表 + auth.GET("/purchase-order/detail", purchaseApi.GetPurchaseOrderDetail) // 获取采购订单详情 + // 入库订单管理 + auth.GET("/receiving-order/list", receivingApi.GetReceivingOrderList) // 获取入库订单列表 + auth.GET("/receiving-order/detail", receivingApi.GetReceivingOrderDetail) // 获取入库订单详情 + // 销售订单管理 + auth.GET("/sales-order/list", salesApi.GetSalesOrderList) // 获取销售订单列表 + auth.GET("/sales-order/detail", salesApi.GetSalesOrderDetail) // 获取销售订单详情 + auth.GET("/sales-order/detaillist", salesApi.GetSalesOrderDetailList) // 获取销售订单详情列表 + // 出库单管理 + auth.GET("/outbound-order/list", outboundApi.GetOutboundOrderList) // 获取出库订单列表 + auth.GET("/outbound-order/detail", outboundApi.GetOutboundOrderDetail) // 获取出库订单详情 + // 发货管理 + auth.GET("/shipping-order/list", shippingApi.GetShippingOrderList) // 获取发货单列表 + auth.GET("/shipping-order/detail", shippingApi.GetShippingOrderDetail) // 获取发货单详情 + // 波次任务管理 + auth.GET("/wave/task/list", waveApi.GetWaveTaskList) // 获取波次任务列表 + auth.GET("/wave/task/detail", waveApi.GetWaveTaskDetail) // 获取波次任务详情 + auth.GET("/wave/getWaveStatusById", waveApi.GetWaveStatusById) //用波次id获取波次的状态 + // 分拣设置管理 + auth.GET("/sorting-settings/get", sortingSettingsApi.GetSortingSettings) // 获取分拣设置 + auth.POST("/sorting-settings/save", sortingSettingsApi.SaveSortingSettings) // 保存分拣设置 + // 库存管理 + auth.GET("/inventory/list", inventoryApi.GetInventoryList) // 获取库存列表 + auth.GET("/inventory/grouped-list", inventoryApi.GetInventoryGroupedList) // 获取按仓库库位分分组的库存列表 + auth.GET("/inventory/detail", inventoryApi.GetInventoryDetail) // 获取库存详情 + auth.GET("/inventory/log/list", inventoryApi.GetInventoryLogList) // 获取库存日志列表 + auth.GET("/inventory/statist", inventoryApi.InventoryStatist) // 库存统计 + auth.GET("/inventory/summary", inventoryApi.GetInventorySummary) // 获取库存统计信息 + auth.GET("/inventory/stock-check/list", inventoryApi.GetStockCheckList) // 获取库存盘点列表 + auth.GET("/inventory/stock-check/detail", inventoryApi.GetStockCheckDetail) // 获取库存盘点详情 + // 小车管理 + auth.GET("/car/list", carApi.GetCarList) // 获取小车列表 + auth.GET("/car/detail/:id", carApi.GetCarDetail) // 获取小车详情 + auth.POST("/car/create", carApi.CreateCar) // 创建小车 + auth.PUT("/car/update", carApi.UpdateCar) // 更新小车 + auth.DELETE("/car/delete", carApi.DeleteCar) // 删除小车 + // 店铺管理 + auth.GET("/shop/list", shopApi.GetShopList) // 获取店铺列表 + auth.GET("/shop/detail/:id", shopApi.GetShopDetail) // 获取店铺详情 + auth.POST("/shop/create", shopApi.CreateShop) // 创建店铺 + auth.PUT("/shop/update", shopApi.UpdateShop) // 更新店铺 + auth.DELETE("/shop/delete", shopApi.DeleteShop) // 删除店铺 + //PDA配置 + auth.GET("/employee/get_pda_config", employeeApi.GetEmployeeSettings) // 获取PDA配置 + auth.POST("/employee/set_pda_config", employeeApi.SaveEmployeeSettings) // 保存PDA配置 + // 外部任务管理 + auth.GET("/out-task/list", outTaskApi.GetOutTaskList) // 获取外部任务列表 + auth.GET("/out-task-log/list", outTaskApi.GetOutTaskLogList) // 获取外部任务日志列表 + auth.GET("/out-task/by-shop", outTaskApi.GetOutTaskByShop) // 获取店铺外部任务列表 + // 物流模板管理 + auth.GET("/logistics/list", logisticsApi.GetLogisticsList) // 获取物流模板列表 + auth.GET("/logistics/detail/:id", logisticsApi.GetLogisticsDetail) // 获取物流模板详情 + auth.POST("/logistics/create", logisticsApi.CreateLogistics) // 创建物流模板 + auth.PUT("/logistics/update", logisticsApi.UpdateLogistics) // 更新物流模板 + auth.DELETE("/logistics/delete", logisticsApi.DeleteLogistics) // 删除物流模板 + // 分账配置管理 + auth.GET("/split-account-config/list", splitAccountConfigApi.GetSplitAccountConfigList) // 获取分账配置列表 + auth.GET("/split-account-config/detail/:id", splitAccountConfigApi.GetSplitAccountConfigDetail) // 获取分账配置详情 + auth.POST("/split-account-config/create", splitAccountConfigApi.CreateSplitAccountConfig) // 创建分账配置 + auth.PUT("/split-account-config/update", splitAccountConfigApi.UpdateSplitAccountConfig) // 更新分账配置 + auth.DELETE("/split-account-config/delete", splitAccountConfigApi.DeleteSplitAccountConfig) // 删除分账配置 + // 分账扣钱日志管理 + auth.GET("/split-account-deduction-log/list", splitAccountDeductionLogApi.GetSplitAccountDeductionLogList) // 获取分账扣钱日志列表 + auth.GET("/split-account-deduction-log/detail/:id", splitAccountDeductionLogApi.GetSplitAccountDeductionLogDetail) // 获取分账扣钱日志详情 + auth.POST("/split-account-deduction-log/create", splitAccountDeductionLogApi.CreateSplitAccountDeductionLog) // 创建分账 + auth.PUT("/split-account-deduction-log/update", splitAccountDeductionLogApi.UpdateSplitAccountDeductionLog) // 更新分账 + auth.DELETE("/split-account-deduction-log/delete", splitAccountDeductionLogApi.DeleteSplitAccountDeductionLog) // 删除分账 + // 产品日志管理 + auth.GET("/product_log/list", productApi.GetProductLogList) // 获取产品日志列表 + auth.POST("/product_log/save", productApi.SaveProductLog) // 保存产品日志 + auth.POST("/product_log/audit", productApi.AuditProductLog) // 审核产品日志 + auth.POST("/product_log/delete", productApi.DeleteProductLog) // 删除产品日志 + // 仪表盘统计 + auth.GET("/dashboard/statist", statistApi.DashboardStatist) // 仪表盘统计 + auth.GET("/dashboard/warehouse", statistApi.GetWarehouseStatist) // 获取仓库统计 + auth.GET("/dashboard/order", statistApi.GetOrderStatist) // 获取订单统计 + + // 管理员接口 + admin := auth.Group("/admin") + admin.Use(middleware.APISign()) + admin.Use(middleware.AdminRequired()) + { + // 员工管理 + admin.GET("/employee/list", employeeApi.GetEmployeeList) // 获取员工列表 + admin.POST("/employee/add", employeeApi.AddEmployee) // 添加员工 + admin.POST("/employee/update", employeeApi.UpdatePasswordEmployee) // 更新员工密码 + admin.POST("/employee/update_expire_time", employeeApi.UpdateExpireTimeEmployee) // 更新员工到期时间 + admin.GET("/employee/check_expire_time", employeeApi.CheckExpireTimeEmployee) // 检查员工到期时间 + admin.POST("/employee/set_level", employeeApi.SetEmployeeLevel) // 设置员工等级 + admin.GET("/employee/level_config", employeeApi.GetLevelConfigList) // 获取员工等级配置列表 + // 用户类型管理 + admin.GET("/user-type/list", userTypeApi.GetUserTypeList) // 获取用户类型列表 + admin.GET("/user-type/detail/:id", userTypeApi.GetUserTypeDetail) // 获取用户类型详情 + admin.POST("/user-type/create", userTypeApi.CreateUserType) // 创建用户类型 + admin.PUT("/user-type/update", userTypeApi.UpdateUserType) // 更新用户类型 + admin.DELETE("/user-type/delete", userTypeApi.DeleteUserType) // 删除用户类型 + } + } + } + return +} diff --git a/runtime/logs/request/err.log202605150000 b/runtime/logs/request/err.log202605150000 new file mode 100644 index 0000000..1525382 --- /dev/null +++ b/runtime/logs/request/err.log202605150000 @@ -0,0 +1,62 @@ +{"err_msg":"参数错误: Key: 'UpdatePriceRequest.Cost' Error:Field validation for 'Cost' failed on the 'required' tag","level":"error","msg":"","source":"修改售价请求参数异常","time":"2026-05-15T14:54:37+08:00"} +{"err_msg":"参数错误: Key: 'UpdatePriceRequest.Cost' Error:Field validation for 'Cost' failed on the 'required' tag","level":"error","msg":"","source":"修改售价请求参数异常","time":"2026-05-15T14:59:57+08:00"} +{"err_msg":"参数错误: Key: 'UpdatePriceRequest.Cost' Error:Field validation for 'Cost' failed on the 'required' tag","level":"error","msg":"","source":"修改售价请求参数异常","time":"2026-05-15T15:02:57+08:00"} +{"err_msg":"参数错误: Key: 'UpdatePriceRequest.Cost' Error:Field validation for 'Cost' failed on the 'required' tag","level":"error","msg":"","source":"修改售价请求参数异常","time":"2026-05-15T15:04:07+08:00"} +{"err_msg":"Key: 'GetCodeRequest.Publisher' Error:Field validation for 'Publisher' failed on the 'required' tag","level":"error","msg":"","source":"获取商品编码请求异常","time":"2026-05-16T13:47:35+08:00"} +{"err_msg":"参数错误: strconv.ParseInt: parsing \"yxy-100\": invalid syntax","level":"error","msg":"","source":"创建销售订单请求参数异常","time":"2026-05-16T17:44:04+08:00"} +{"err_msg":"参数错误: Key: 'UpdateShippingLogisticsRequest.LogisticsNo' Error:Field validation for 'LogisticsNo' failed on the 'required' tag","level":"error","msg":"","source":"更新发货单物流信息请求参数异常","time":"2026-05-18T15:56:52+08:00"} +{"err_msg":"参数错误: Key: 'UpdateShippingLogisticsRequest.LogisticsNo' Error:Field validation for 'LogisticsNo' failed on the 'required' tag","level":"error","msg":"","source":"更新发货单物流信息请求参数异常","time":"2026-05-18T16:20:52+08:00"} +{"err_msg":"Key: 'CreateLocationRequest.Capacity' Error:Field validation for 'Capacity' failed on the 'required' tag","level":"error","msg":"","source":"创建库位请求参数错误","time":"2026-05-19T13:43:38+08:00"} +{"err_msg":"Key: 'CreateLocationRequest.Capacity' Error:Field validation for 'Capacity' failed on the 'required' tag","level":"error","msg":"","source":"创建库位请求参数错误","time":"2026-05-19T13:49:55+08:00"} +{"err_msg":"Key: 'CreateLocationRequest.Capacity' Error:Field validation for 'Capacity' failed on the 'required' tag","level":"error","msg":"","source":"创建库位请求参数错误","time":"2026-05-19T13:50:00+08:00"} +{"err_msg":"Key: 'CreateLocationRequest.Capacity' Error:Field validation for 'Capacity' failed on the 'required' tag","level":"error","msg":"","source":"创建库位请求参数错误","time":"2026-05-19T13:51:00+08:00"} +{"err_msg":"Key: 'CreateLocationRequest.Capacity' Error:Field validation for 'Capacity' failed on the 'required' tag","level":"error","msg":"","source":"创建库位请求参数错误","time":"2026-05-19T13:52:39+08:00"} +{"err_msg":"Key: 'CreateLocationRequest.Capacity' Error:Field validation for 'Capacity' failed on the 'required' tag","level":"error","msg":"","source":"创建库位请求参数错误","time":"2026-05-19T13:56:07+08:00"} +{"err_msg":"参数错误: Key: 'CreateLocationRequest.Capacity' Error:Field validation for 'Capacity' failed on the 'required' tag","level":"error","msg":"","source":"创建库位请求参数异常","time":"2026-05-20T11:38:07+08:00"} +{"err_msg":"参数错误: Key: 'CreateLocationRequest.Capacity' Error:Field validation for 'Capacity' failed on the 'required' tag","level":"error","msg":"","source":"创建库位请求参数异常","time":"2026-05-20T14:31:48+08:00"} +{"err_msg":"参数错误: Key: 'ProductRequest.Name' Error:Field validation for 'Name' failed on the 'required' tag\nKey: 'ProductRequest.Price' Error:Field validation for 'Price' failed on the 'required' tag","level":"error","msg":"","source":"保存商品请求参数异常","time":"2026-05-22T15:50:41+08:00"} +{"err_msg":"参数错误: Key: 'ExportProductRequest.Type' Error:Field validation for 'Type' failed on the 'required' tag","level":"error","msg":"","source":"导出商品请求参数异常","time":"2026-05-23T16:28:45+08:00"} +{"err_msg":"参数错误: strconv.ParseInt: parsing \"21-11\": invalid syntax","level":"error","msg":"","source":"创建小车请求参数异常","time":"2026-05-25T16:39:14+08:00"} +{"err_msg":"ID格式错误: undefined","level":"error","msg":"","source":"获取仓库详情请求参数异常","time":"2026-05-25T16:54:38+08:00"} +{"err_msg":"ID格式错误: undefined","level":"error","msg":"","source":"获取仓库详情请求参数异常","time":"2026-05-25T16:54:57+08:00"} +{"err_msg":"ID格式错误: undefined","level":"error","msg":"","source":"获取仓库详情请求参数异常","time":"2026-05-25T16:55:02+08:00"} +{"err_msg":"参数错误: Key: 'GetProductInventoryRequest.UserID' Error:Field validation for 'UserID' failed on the 'required' tag","level":"error","msg":"","source":"获取商品库存请求参数异常","time":"2026-05-28T16:13:51+08:00"} +{"err_msg":"参数错误: strconv.ParseInt: parsing \"2010-04\": invalid syntax","level":"error","msg":"","source":"保存商品日志请求参数异常","time":"2026-05-29T15:10:14+08:00"} +{"err_msg":"参数错误: Key: 'GetProductLogListRequest.Barcode' Error:Field validation for 'Barcode' failed on the 'required' tag","level":"error","msg":"","source":"商品日志列表请求参数异常","time":"2026-05-29T15:18:31+08:00"} +{"err_msg":"参数错误: Key: 'GetProductLogListRequest.Barcode' Error:Field validation for 'Barcode' failed on the 'required' tag","level":"error","msg":"","source":"商品日志列表请求参数异常","time":"2026-05-29T15:18:59+08:00"} +{"err_msg":"参数错误: Key: 'GetProductLogListRequest.Barcode' Error:Field validation for 'Barcode' failed on the 'required' tag","level":"error","msg":"","source":"商品日志列表请求参数异常","time":"2026-05-29T15:19:06+08:00"} +{"err_msg":"参数错误: Key: 'UpdateCarRequest.ReleaseType' Error:Field validation for 'ReleaseType' failed on the 'required' tag","level":"error","msg":"","source":"更新小车请求参数异常","time":"2026-05-30T16:53:28+08:00"} +{"err_msg":"参数错误: strconv.ParseInt: parsing \"2023-03\": invalid syntax","level":"error","msg":"","source":"同步书籍信息请求参数异常","time":"2026-06-01T11:15:11+08:00"} +{"err_msg":"参数错误: Key: 'AddBookRequest.Type' Error:Field validation for 'Type' failed on the 'required' tag\nKey: 'AddBookRequest.FBookName' Error:Field validation for 'FBookName' failed on the 'required' tag","level":"error","msg":"","source":"同步书籍信息请求参数异常","time":"2026-06-01T11:18:36+08:00"} +{"err_msg":"参数错误: Key: 'AddBookRequest.Type' Error:Field validation for 'Type' failed on the 'required' tag","level":"error","msg":"","source":"同步书籍信息请求参数异常","time":"2026-06-01T11:19:29+08:00"} +{"err_msg":"参数错误: Key: 'AddBookRequest.Type' Error:Field validation for 'Type' failed on the 'required' tag","level":"error","msg":"","source":"同步书籍信息请求参数异常","time":"2026-06-01T11:21:46+08:00"} +{"err_msg":"参数错误: Key: 'AddBookRequest.Type' Error:Field validation for 'Type' failed on the 'required' tag","level":"error","msg":"","source":"同步书籍信息请求参数异常","time":"2026-06-01T11:22:09+08:00"} +{"err_msg":"参数错误: Key: 'AddBookRequest.Type' Error:Field validation for 'Type' failed on the 'required' tag","level":"error","msg":"","source":"同步书籍信息请求参数异常","time":"2026-06-01T11:22:54+08:00"} +{"err_msg":"参数错误: Key: 'AddBookRequest.FIsbn' Error:Field validation for 'FIsbn' failed on the 'required' tag\nKey: 'AddBookRequest.FBookName' Error:Field validation for 'FBookName' failed on the 'required' tag","level":"error","msg":"","source":"同步书籍信息请求参数异常","time":"2026-06-01T11:48:41+08:00"} +{"err_msg":"参数错误: Key: 'AddBookRequest.FIsbn' Error:Field validation for 'FIsbn' failed on the 'required' tag","level":"error","msg":"","source":"同步书籍信息请求参数异常","time":"2026-06-01T13:43:55+08:00"} +{"err_msg":"参数错误: Key: 'AddBookRequest.FIsbn' Error:Field validation for 'FIsbn' failed on the 'required' tag","level":"error","msg":"","source":"同步书籍信息请求参数异常","time":"2026-06-01T13:45:30+08:00"} +{"err_msg":"参数错误: Key: 'AddBookRequest.FIsbn' Error:Field validation for 'FIsbn' failed on the 'required' tag","level":"error","msg":"","source":"同步书籍信息请求参数异常","time":"2026-06-01T13:51:03+08:00"} +{"err_msg":"参数错误: Key: 'AddBookRequest.FIsbn' Error:Field validation for 'FIsbn' failed on the 'required' tag","level":"error","msg":"","source":"同步书籍信息请求参数异常","time":"2026-06-01T16:32:51+08:00"} +{"err_msg":"参数错误: Key: 'GetDistributionProductListRequest.UserID' Error:Field validation for 'UserID' failed on the 'required' tag","level":"error","msg":"","source":"分销商品列表请求参数异常","time":"2026-06-02T10:32:06+08:00"} +{"err_msg":"参数错误: Key: 'GetDistributionProductListRequest.UserID' Error:Field validation for 'UserID' failed on the 'required' tag","level":"error","msg":"","source":"分销商品列表请求参数异常","time":"2026-06-02T10:32:14+08:00"} +{"err_msg":"参数错误: Key: 'GetDistributionProductListRequest.UserID' Error:Field validation for 'UserID' failed on the 'required' tag","level":"error","msg":"","source":"分销商品列表请求参数异常","time":"2026-06-02T13:52:02+08:00"} +{"err_msg":"参数错误: Key: 'GetDistributionProductListRequest.UserID' Error:Field validation for 'UserID' failed on the 'required' tag","level":"error","msg":"","source":"分销商品列表请求参数异常","time":"2026-06-02T17:42:53+08:00"} +{"err_msg":"参数错误: Key: 'GetDistributionProductListRequest.UserID' Error:Field validation for 'UserID' failed on the 'required' tag","level":"error","msg":"","source":"分销商品列表请求参数异常","time":"2026-06-02T17:48:44+08:00"} +{"err_msg":"参数错误: invalid character '.' after object key:value pair","level":"error","msg":"","source":"批量推送请求参数异常","time":"2026-06-03T09:40:58+08:00"} +{"err_msg":"参数错误: Key: 'BatchPushProductRequest.UserID' Error:Field validation for 'UserID' failed on the 'required' tag\nKey: 'BatchPushProductRequest.ShopIDs' Error:Field validation for 'ShopIDs' failed on the 'required' tag\nKey: 'BatchPushProductRequest.ShopTypes' Error:Field validation for 'ShopTypes' failed on the 'required' tag\nKey: 'BatchPushProductRequest.ProductIDs' Error:Field validation for 'ProductIDs' failed on the 'required' tag","level":"error","msg":"","source":"批量推送请求参数异常","time":"2026-06-03T09:41:09+08:00"} +{"err_msg":"参数错误: json: cannot unmarshal string into Go struct field BatchPushProductRequest.product_ids of type int64","level":"error","msg":"","source":"批量推送请求参数异常","time":"2026-06-03T10:29:51+08:00"} +{"err_msg":"参数错误: Key: 'GetShopProductDetailRequest.ShopID' Error:Field validation for 'ShopID' failed on the 'required' tag","level":"error","msg":"","source":"获取店铺商品详情请求参数异常","time":"2026-06-04T15:41:48+08:00"} +{"err_msg":"参数错误: Key: 'GetShopProductDetailRequest.ShopID' Error:Field validation for 'ShopID' failed on the 'required' tag","level":"error","msg":"","source":"获取店铺商品详情请求参数异常","time":"2026-06-04T15:41:57+08:00"} +{"err_msg":"参数错误: Key: 'GetShopProductDetailRequest.ShopID' Error:Field validation for 'ShopID' failed on the 'required' tag","level":"error","msg":"","source":"获取店铺商品详情请求参数异常","time":"2026-06-04T15:42:25+08:00"} +{"err_msg":"参数错误: Key: 'GetShopProductDetailRequest.ShopID' Error:Field validation for 'ShopID' failed on the 'required' tag","level":"error","msg":"","source":"获取店铺商品详情请求参数异常","time":"2026-06-04T15:44:11+08:00"} +{"err_msg":"参数错误: Key: 'GetShopProductDetailRequest.ShopID' Error:Field validation for 'ShopID' failed on the 'required' tag","level":"error","msg":"","source":"获取店铺商品详情请求参数异常","time":"2026-06-04T15:46:39+08:00"} +{"err_msg":"参数错误: Key: 'GetShopProductDetailRequest.ShopID' Error:Field validation for 'ShopID' failed on the 'required' tag","level":"error","msg":"","source":"获取店铺商品详情请求参数异常","time":"2026-06-04T15:46:48+08:00"} +{"err_msg":"参数错误: Key: 'GetShopProductDetailRequest.ShopID' Error:Field validation for 'ShopID' failed on the 'required' tag","level":"error","msg":"","source":"获取店铺商品详情请求参数异常","time":"2026-06-04T15:47:22+08:00"} +{"err_msg":"参数错误: strconv.ParseInt: parsing \"TK202606041150520397\": invalid syntax","level":"error","msg":"","source":"波次任务列表请求参数异常","time":"2026-06-04T15:50:22+08:00"} +{"err_msg":"参数错误: strconv.ParseInt: parsing \"TK202606041150520397\": invalid syntax","level":"error","msg":"","source":"波次任务列表请求参数异常","time":"2026-06-04T15:50:36+08:00"} +{"err_msg":"参数错误: strconv.ParseInt: parsing \"TK202606041316138241\": invalid syntax","level":"error","msg":"","source":"波次任务列表请求参数异常","time":"2026-06-04T15:54:47+08:00"} +{"err_msg":"参数错误: strconv.ParseInt: parsing \"OB202605261715168833\": invalid syntax","level":"error","msg":"","source":"出库单切换库位请求参数异常","time":"2026-06-04T17:36:14+08:00"} +{"err_msg":"参数错误: Key: 'PushProductToShopRequest.WarehouseID' Error:Field validation for 'WarehouseID' failed on the 'required' tag\nKey: 'PushProductToShopRequest.LocationID' Error:Field validation for 'LocationID' failed on the 'required' tag\nKey: 'PushProductToShopRequest.ISBN' Error:Field validation for 'ISBN' failed on the 'required' tag\nKey: 'PushProductToShopRequest.Price' Error:Field validation for 'Price' failed on the 'required' tag\nKey: 'PushProductToShopRequest.Stock' Error:Field validation for 'Stock' failed on the 'required' tag\nKey: 'PushProductToShopRequest.Appearance' Error:Field validation for 'Appearance' failed on the 'required' tag","level":"error","msg":"","source":"上架到商铺请求参数异常","time":"2026-06-05T13:03:51+08:00"} +{"err_msg":"参数错误: strconv.ParseInt: parsing \"NS\": invalid syntax","level":"error","msg":"","source":"上架到商铺请求参数异常","time":"2026-06-05T13:04:10+08:00"} +{"err_msg":"参数错误: Key: 'PushProductToShopRequest.ISBN' Error:Field validation for 'ISBN' failed on the 'required' tag\nKey: 'PushProductToShopRequest.Price' Error:Field validation for 'Price' failed on the 'required' tag\nKey: 'PushProductToShopRequest.Stock' Error:Field validation for 'Stock' failed on the 'required' tag\nKey: 'PushProductToShopRequest.Appearance' Error:Field validation for 'Appearance' failed on the 'required' tag","level":"error","msg":"","source":"上架到商铺请求参数异常","time":"2026-06-05T13:19:53+08:00"} +{"err_msg":"参数错误: Key: 'QueryLocationRequest.WarehouseID' Error:Field validation for 'WarehouseID' failed on the 'required' tag","level":"error","msg":"","source":"查询库位列表请求参数异常","time":"2026-06-05T14:44:23+08:00"} diff --git a/runtime/logs/request/err.log202606090000 b/runtime/logs/request/err.log202606090000 new file mode 100644 index 0000000..72dc831 --- /dev/null +++ b/runtime/logs/request/err.log202606090000 @@ -0,0 +1,2 @@ +{"err_msg":"参数错误: Key: 'CreateLogisticsRequest.ShippingRange' Error:Field validation for 'ShippingRange' failed on the 'required' tag","level":"error","msg":"","source":"创建物流模板请求参数异常","time":"2026-06-10T14:20:28+08:00"} +{"err_msg":"参数错误: Key: 'GetSalesOrderDetailRequest.ID' Error:Field validation for 'ID' failed on the 'required' tag","level":"error","msg":"","source":"销售订单详情请求参数异常","time":"2026-06-13T17:08:35+08:00"} diff --git a/runtime/logs/work/err.log202605150000 b/runtime/logs/work/err.log202605150000 new file mode 100644 index 0000000..4506cc5 --- /dev/null +++ b/runtime/logs/work/err.log202605150000 @@ -0,0 +1,482 @@ +{"code":"500","fields.msg":"未选择价格模版","level":"error","msg":"","response":"{\"code\":\"500\",\"msg\":\"未选择价格模版\"}\n","shop_id":2054805126617468929,"source":"外部接口返回错误","time":"2026-05-15T14:27:02+08:00"} +{"error":"同步失败: 未找到关联的外部任务","level":"error","msg":"","product_id":146,"sale_price":418,"source":"同步售价到外部接口","time":"2026-05-15T14:27:07+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"page\":1,\"page_size\":10,\"status\":0,\"customer_id\":0,\"shipping_no\":\"\",\"start_date\":0,\"end_date\":0}","source":"发货单列表异常","time":"2026-05-15T17:09:39+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"page\":1,\"page_size\":10,\"status\":0,\"customer_id\":0,\"shipping_no\":\"\",\"start_date\":0,\"end_date\":0}","source":"发货单列表异常","time":"2026-05-15T17:09:45+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"page\":1,\"page_size\":10,\"status\":0,\"customer_id\":0,\"shipping_no\":\"\",\"start_date\":0,\"end_date\":0}","source":"发货单列表异常","time":"2026-05-15T17:09:50+08:00"} +{"error":"同步失败: 未找到关联的外部任务","level":"error","msg":"","product_id":161,"sale_price":299,"source":"同步售价到外部接口","time":"2026-05-15T19:09:51+08:00"} +{"err_msg":"库位不存在","level":"error","msg":"","request_params":"{\"code\":\"A0\"}","source":"获取库位ID异常","time":"2026-05-16T10:59:04+08:00"} +{"err_msg":"库位不存在","level":"error","msg":"","request_params":"{\"code\":\"9787538593730\"}","source":"获取库位ID异常","time":"2026-05-16T11:10:30+08:00"} +{"err_msg":"调用OCR服务失败: Post \"http://127.0.0.1:35569/ocr\": dial tcp 127.0.0.1:35569: connectex: No connection could be made because the target machine actively refused it.","level":"error","msg":"","source":"OCR识别异常","time":"2026-05-16T13:39:04+08:00"} +{"error":"同步失败: 未找到关联的外部任务","level":"error","msg":"","product_id":171,"sale_price":391,"source":"同步售价到外部接口","time":"2026-05-16T17:41:07+08:00"} +{"err_msg":"库位不存在","level":"error","msg":"","request_params":"{\"code\":\"9787538596434\"}","source":"获取库位ID异常","time":"2026-05-16T17:44:46+08:00"} +{"err_msg":"库位不存在","level":"error","msg":"","request_params":"{\"code\":\"WH20260516-07\"}","source":"获取库位ID异常","time":"2026-05-16T17:44:48+08:00"} +{"err_msg":"商品[171]无可用库存: record not found","level":"error","msg":"","request_params":"{\"AboutId\":1965254774327533570,\"AssociationOrderID\":8560931,\"AssociationOrderNo\":\"260516-425197617561183\",\"FromType\":1,\"ShopType\":1,\"CustomerID\":0,\"RequiredDeliveryDate\":0,\"Remark\":\"\",\"SalesPerson\":\"亦欧家居店\",\"SalesPersonID\":2054805126617468929,\"ReceiverName\":\"yxy\",\"ReceiverPhone\":\"13484515151\",\"ReceiverAddress\":\"辽宁省-沈阳市-和平区-南四经街1111\",\"Items\":[{\"ProductID\":171,\"Quantity\":1,\"UnitPrice\":500}]}","source":"创建销售订单及波次异常","time":"2026-05-16T17:48:29+08:00"} +{"err_msg":"库位A3不属于该仓库","level":"error","msg":"","request_params":"{\"ReceivingOrderID\":23,\"WaveTaskID\":104,\"Force\":0,\"Items\":[{\"ProductID\":172,\"LocationID\":303,\"BatchNo\":\"TD202605161748570735\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交入库异常","time":"2026-05-16T17:49:15+08:00"} +{"err_msg":"库位A3不属于该仓库","level":"error","msg":"","request_params":"{\"ReceivingOrderID\":23,\"WaveTaskID\":104,\"Force\":0,\"Items\":[{\"ProductID\":172,\"LocationID\":303,\"BatchNo\":\"TD202605161748570735\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交入库异常","time":"2026-05-16T17:49:22+08:00"} +{"err_msg":"账号类型不匹配","level":"error","msg":"","source":"登录异常","time":"2026-05-18T11:25:53+08:00"} +{"err_msg":"库位A1-01不属于该仓库","level":"error","msg":"","request_params":"{\"ReceivingOrderID\":24,\"WaveTaskID\":108,\"Force\":0,\"Items\":[{\"ProductID\":183,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":184,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":185,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":186,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交入库异常","time":"2026-05-18T13:47:24+08:00"} +{"err_msg":"库位A1-01不属于该仓库","level":"error","msg":"","request_params":"{\"ReceivingOrderID\":24,\"WaveTaskID\":108,\"Force\":0,\"Items\":[{\"ProductID\":183,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":184,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":185,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":186,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交入库异常","time":"2026-05-18T13:47:29+08:00"} +{"err_msg":"库位A1-01不属于该仓库","level":"error","msg":"","request_params":"{\"ReceivingOrderID\":24,\"WaveTaskID\":108,\"Force\":0,\"Items\":[{\"ProductID\":183,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":184,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":185,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":186,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交入库异常","time":"2026-05-18T13:47:32+08:00"} +{"err_msg":"库位A1-01不属于该仓库","level":"error","msg":"","request_params":"{\"ReceivingOrderID\":24,\"WaveTaskID\":108,\"Force\":0,\"Items\":[{\"ProductID\":183,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":184,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":185,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":186,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交入库异常","time":"2026-05-18T13:47:34+08:00"} +{"err_msg":"库位A1-01不属于该仓库","level":"error","msg":"","request_params":"{\"ReceivingOrderID\":24,\"WaveTaskID\":108,\"Force\":0,\"Items\":[{\"ProductID\":183,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":184,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":185,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":186,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交入库异常","time":"2026-05-18T13:48:22+08:00"} +{"err_msg":"库位A1-01不属于该仓库","level":"error","msg":"","request_params":"{\"ReceivingOrderID\":24,\"WaveTaskID\":108,\"Force\":0,\"Items\":[{\"ProductID\":183,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":184,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":185,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":186,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交入库异常","time":"2026-05-18T13:48:32+08:00"} +{"err_msg":"库位A1-01不属于该仓库","level":"error","msg":"","request_params":"{\"ReceivingOrderID\":24,\"WaveTaskID\":108,\"Force\":0,\"Items\":[{\"ProductID\":183,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":184,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":185,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":186,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交入库异常","time":"2026-05-18T13:48:34+08:00"} +{"err_msg":"库位A1-01不属于该仓库","level":"error","msg":"","request_params":"{\"ReceivingOrderID\":24,\"WaveTaskID\":108,\"Force\":0,\"Items\":[{\"ProductID\":183,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":184,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":185,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":186,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交入库异常","time":"2026-05-18T13:48:35+08:00"} +{"err_msg":"库位A1-01不属于该仓库","level":"error","msg":"","request_params":"{\"ReceivingOrderID\":24,\"WaveTaskID\":108,\"Force\":0,\"Items\":[{\"ProductID\":183,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":184,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":185,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":186,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交入库异常","time":"2026-05-18T13:48:42+08:00"} +{"err_msg":"库位A1-01不属于该仓库","level":"error","msg":"","request_params":"{\"ReceivingOrderID\":24,\"WaveTaskID\":108,\"Force\":0,\"Items\":[{\"ProductID\":183,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":184,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":185,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1},{\"ProductID\":186,\"LocationID\":307,\"BatchNo\":\"TD202605181339512825\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交入库异常","time":"2026-05-18T13:48:44+08:00"} +{"error":"保存日志失败: Error 1048 (23000): Column 'live_image' cannot be null","level":"error","msg":"","shop_id":2026828096496140289,"source":"保存外部任务日志","time":"2026-05-18T14:21:06+08:00"} +{"code":"500","fields.msg":"店铺类型不匹配 错误店铺类型:2","level":"error","msg":"","response":"{\"code\":\"500\",\"msg\":\"店铺类型不匹配 错误店铺类型:2\"}\n","shop_id":2026828096496140289,"source":"外部接口返回错误","time":"2026-05-18T14:21:06+08:00"} +{"error":"保存日志失败: Error 1048 (23000): Column 'live_image' cannot be null","level":"error","msg":"","shop_id":2026828096496140289,"source":"保存外部任务日志","time":"2026-05-18T14:26:06+08:00"} +{"code":"500","fields.msg":"店铺类型不匹配 错误店铺类型:2","level":"error","msg":"","response":"{\"code\":\"500\",\"msg\":\"店铺类型不匹配 错误店铺类型:2\"}\n","shop_id":2026828096496140289,"source":"外部接口返回错误","time":"2026-05-18T14:26:06+08:00"} +{"error":"保存日志失败: Error 1048 (23000): Column 'live_image' cannot be null","level":"error","msg":"","shop_id":2026828096496140289,"source":"保存外部任务日志","time":"2026-05-18T14:26:54+08:00"} +{"code":"500","fields.msg":"店铺类型不匹配 错误店铺类型:2","level":"error","msg":"","response":"{\"code\":\"500\",\"msg\":\"店铺类型不匹配 错误店铺类型:2\"}\n","shop_id":2026828096496140289,"source":"外部接口返回错误","time":"2026-05-18T14:26:54+08:00"} +{"err_msg":"仓库不存在","level":"error","msg":"","request_params":"{\"code\":\"AA\"}","source":"获取库位ID异常","time":"2026-05-18T15:06:23+08:00"} +{"err_msg":"仓库不存在","level":"error","msg":"","request_params":"{\"code\":\"AA\"}","source":"获取库位ID异常","time":"2026-05-18T15:07:28+08:00"} +{"err_msg":"销售订单[SO202605181550426546]状态不正确,当前状态: 拣货中,只有已分配状态的订单才能创建出库单","level":"error","msg":"","request_params":"{\"SalesOrderIDs\":[41],\"Total\":1,\"Remark\":\"\"}","source":"创建出库单异常","time":"2026-05-18T15:53:24+08:00"} +{"err_msg":"出库单[OB202605181551470565]已存在未取消的发货单[SH202605181554093849]","level":"error","msg":"","request_params":"{\"OutboundOrderIDs\":[35],\"Total\":1,\"ExpectedArriveTime\":null,\"Remark\":\"\"}","source":"创建发货单异常","time":"2026-05-18T16:03:27+08:00"} +{"err_msg":"仓库不存在","level":"error","msg":"","request_params":"{\"code\":\"9787538594645\"}","source":"获取库位ID异常","time":"2026-05-18T16:19:53+08:00"} +{"err_msg":"商品[205]无可用库存: record not found","level":"error","msg":"","request_params":"{\"AboutId\":1965254774327533570,\"AssociationOrderID\":877856,\"AssociationOrderNo\":\"291517282\",\"FromType\":1,\"ShopType\":2,\"CustomerID\":0,\"RequiredDeliveryDate\":0,\"Remark\":\"\",\"SalesPerson\":\"简创甄选\",\"SalesPersonID\":2026828096496140289,\"ReceiverName\":\"高德军\",\"ReceiverPhone\":\"15140270173\",\"ReceiverAddress\":\"辽宁省-沈阳市-皇姑区-塔湾街82-23-453\",\"Items\":[{\"ProductID\":205,\"Quantity\":1,\"UnitPrice\":10702}]}","source":"创建销售订单及波次异常","time":"2026-05-18T17:15:33+08:00"} +{"err_msg":"删除仓库失败","level":"error","msg":"","request_params":"{\"ID\":14}","source":"删除仓库异常","time":"2026-05-19T13:20:47+08:00"} +{"err_msg":"商品不存在: record not found","level":"error","msg":"","request_params":"{\"ProductID\":6,\"UserID\":2018559630785863681,\"SalePrice\":120,\"Cost\":220}","source":"修改售价异常","time":"2026-05-19T16:47:53+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-19T17:09:15+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: No connection could be made because the target machine actively refused it.","level":"error","msg":"","shop_id":2054805126617468929,"source":"创建外部任务失败","time":"2026-05-20T16:48:32+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: No connection could be made because the target machine actively refused it.","level":"error","msg":"","shop_id":2054805126617468929,"source":"创建外部任务失败","time":"2026-05-20T17:11:29+08:00"} +{"error":"保存日志失败: Error 1048 (23000): Column 'live_image' cannot be null","level":"error","msg":"","shop_id":2042843272765263874,"source":"保存外部任务日志","time":"2026-05-21T13:07:16+08:00"} +{"code":"500","fields.msg":"店铺已到期,到期时间:2026-05-14 13:53:21","level":"error","msg":"","response":"{\"code\":\"500\",\"msg\":\"店铺已到期,到期时间:2026-05-14 13:53:21\"}\n","shop_id":2042843272765263874,"source":"外部接口返回错误","time":"2026-05-21T13:07:16+08:00"} +{"error":"保存日志失败: Error 1048 (23000): Column 'live_image' cannot be null","level":"error","msg":"","shop_id":2042843272765263874,"source":"保存外部任务日志","time":"2026-05-21T14:08:15+08:00"} +{"code":"500","fields.msg":"店铺已到期,到期时间:2026-05-14 13:53:21","level":"error","msg":"","response":"{\"code\":\"500\",\"msg\":\"店铺已到期,到期时间:2026-05-14 13:53:21\"}\n","shop_id":2042843272765263874,"source":"外部接口返回错误","time":"2026-05-21T14:08:15+08:00"} +{"cost":400,"error":"同步失败: 未找到关联的外部任务","level":"error","msg":"","product_id":218,"sale_price":110,"source":"同步售价到外部接口","time":"2026-05-21T14:08:19+08:00"} +{"err_msg":"商品不存在: record not found","level":"error","msg":"","request_params":"{\"ProductID\":110,\"UserID\":1922120835237036033,\"SalePrice\":100,\"Cost\":500}","source":"修改售价异常","time":"2026-05-21T14:30:17+08:00"} +{"err_msg":"商品不存在: record not found","level":"error","msg":"","request_params":"{\"ProductID\":110,\"UserID\":1922120835237036033,\"SalePrice\":100,\"Cost\":500}","source":"修改售价异常","time":"2026-05-21T14:33:38+08:00"} +{"err_msg":"商品不存在: record not found","level":"error","msg":"","request_params":"{\"ProductID\":110,\"UserID\":1922120835237036033,\"SalePrice\":50000,\"Cost\":0}","source":"修改售价异常","time":"2026-05-21T14:34:23+08:00"} +{"err_msg":"商品不存在: record not found","level":"error","msg":"","request_params":"{\"ProductID\":110,\"UserID\":1922120835237036033,\"SalePrice\":50000,\"Cost\":0}","source":"修改售价异常","time":"2026-05-21T14:34:48+08:00"} +{"err_msg":"更新库存汇总失败: Error 1062 (23000): Duplicate entry '17-1294-' for key 'uk_warehouse_product_batch'","level":"error","msg":"","request_params":"{\"user_id\":1965254774327533570,\"data\":[{\"goods_name\":\"春秀\",\"isbn\":\"9787108048011\",\"price\":815,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/bd92b6e10cd4e9668fc911568205d3cd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/5b724a1bd5e93600d0ecdb7245c13d3e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/08d5c36bd1b353436eb329769f82afb8.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"社会主义核心价值观绘本:我们的中国梦\",\"isbn\":\"9787532292455\",\"price\":495,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/503123f5fe5f1d35ee784a648f6f1e97.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/a6733e2e9b3e2128ea5d954aaaed677b.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"世界文学名著典藏:毁灭\",\"isbn\":\"9787535439666\",\"price\":1678,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/8b989cf00315df4aaa21ec5cdc7d8725.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/fe759bc014f69c8788f66db45f8349bb.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"读库1305\",\"isbn\":\"9787513304245\",\"price\":350,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/e04c3b73d6e4da5de3f7c65bff8f593b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/690f9bd98d8f64904564b64b8590fbfc.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"读库1401\",\"isbn\":\"9787513313827\",\"price\":878,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/22b97eafe4438bd99442ce9ca82a76ff.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/1e157e3fe4af55a9e761c18d1fa05b78.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":0},{\"goods_name\":\"到黑夜想你没办法:温家窑风景\",\"isbn\":\"9787535434500\",\"price\":8599,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/2f45bd6e446be6274bf7e90770eaa2a4.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/1ed5e0dd23fb444041592ca1e3d61fec.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"针灸新疗法:靶向针灸治疗\",\"isbn\":\"9787117199469\",\"price\":6099,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/4f6a6d7ae5e460bfc980dad6c8fbe344.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/530c98b330e24a5706de1ece6ed6039a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/790b90a397b5240ee8e42a2c1377336a.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"图表解中医备考丛书:针灸治疗学\",\"isbn\":\"9787506761772\",\"price\":1987,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/1842dbcf431c3d98ea77ee552c1d61a1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/02b7e82c11c0b22a315df9febc6bbae8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/b1b8f0dcd2ac57e39253bf9e12c63291.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"针灸名家医案解读\",\"isbn\":\"9787509179819\",\"price\":4068,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/d5b3803dbd82224b4acaeb2e8c14ab8a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/3934f4487dd978e79d8ab86c95bf30f8.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"重温胜利时光:寻访浙江嵊州幸存抗战老兵\",\"isbn\":\"9787205082161\",\"price\":1299,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/12bf2a92a5f9f1743c402ef7aaf8d35f.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"2007中国出版者名录.图书分册\",\"isbn\":\"9787507603422\",\"price\":2416,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/3c9f3381078130f171940d2d52957624.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"海外新闻出版实录2015/海外新闻出版实录丛书\",\"isbn\":\"9787506861168\",\"price\":299,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/aa46630b70b456f9f374d190910a518a.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"红闺春梦(上下)\",\"isbn\":\"9787530625576\",\"price\":1880,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/2c2b4d1206e82bfdf4a8d74c7c46a24e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/2ace7e7774a3d0f52a65da4759911053.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/2dd8fa73d0264f5d41ea2034c46362f2.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"金星教育·中学教材全解:八年级英语下\",\"isbn\":\"9787545021301\",\"price\":1857,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/027324fb8365382fbae65f823616b84d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/d3b6b0bfbd740fa3cce443c4eb0e26ff.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"皇太极全传\",\"isbn\":\"9787806017845\",\"price\":2355,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/b5c42bb8543f94b872b5cd21b8e39269.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/95ca510710b2007d862dfea4daef2e2a.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"新潮:民初时论选\",\"isbn\":\"9787205028572\",\"price\":3399,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/7c070bf9a45350bd33fe4a61cb34c27b.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"循吏千年:百名清官启示录\",\"isbn\":\"9787205097646\",\"price\":2999,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/a06cd28d0057d5948f8ce3035ad6aed3.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"写生课\",\"isbn\":\"9787807119876\",\"price\":1098,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/39997c0729c2c58286dd308ff834315b.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"生死拉据\",\"isbn\":\"9787512619906\",\"price\":310,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/8132d9ead0123d0538b0850bd87fe295.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"2008中国音像电子出版者名录\",\"isbn\":\"9787507603453\",\"price\":3299,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/d4a089951e2912e0696e69763c7f1b49.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/52b454fcec720107ed2aae322cf08e49.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":2},{\"goods_name\":\"和唐朝诗人握个手\",\"isbn\":\"9787550180246\",\"price\":270,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/1196b0d6fdfe39df78b9d4bcb6ee1e0a.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"犯罪心理学\",\"isbn\":\"9787568292429\",\"price\":899,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/095620979cd81e045a19a226718eef19.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"疯狂科学\",\"isbn\":\"9787115244949\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/9e2a605a98ed929ae412bc391b93bd4e.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"信仰力\",\"isbn\":\"9787205112462\",\"price\":1898,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/a6b4bd433947311f508f3d6b449c0d68.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/2a21628a73b4182f4505ab45dd909f39.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":2},{\"goods_name\":\"辽阔\",\"isbn\":\"9787205112295\",\"price\":2929,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/11ee7ce2bb504b2252f93ebe1638ffe5.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":2},{\"goods_name\":\"人生世事格言选句\",\"isbn\":\"9787205083878\",\"price\":1292,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/cddfcae7a3fad48a07f7226cacea0046.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"街与道的宗教\",\"isbn\":\"9787531339984\",\"price\":449,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/86c398005806b62e9ab9b2432a8790fa.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"挑战你的大脑:200个破案趣味故事\",\"isbn\":\"9787806662885\",\"price\":749,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/4dbef0686042fb641c06bd4c967792ed.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"创业学\",\"isbn\":\"9787205051266\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/ea659d62daa65569ef9e8498137701b1.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"销售秘密\",\"isbn\":\"9787545415117\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/43b898cfe763fcf49cdca906a2061fe7.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"通城学典·课时新体验:数学\",\"isbn\":\"9787563411573\",\"price\":1430,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/dbfd5e3cc68fb594e09b550f0cae4217.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"奥林匹斯星传\",\"isbn\":\"9787115136152\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/df86fd37cbf811ab7bc5dfc8013e71c9.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"蓝猫的航天梦想/杨利伟航天科普系列\",\"isbn\":\"9787534236204\",\"price\":525,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/c2ac728905eeb9d1223cf7d2fe625838.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"走出噩梦:苏南特大抢劫杀人系列案侦破纪实\",\"isbn\":\"9787501416745\",\"price\":949,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/3f7b7524700020092c6cfb04f9013f5d.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"文学名家名著:爱的教育\",\"isbn\":\"9787540485061\",\"price\":665,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/36a39981b543b6f843df1373ca272c96.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"汉语成语词典\",\"isbn\":\"9787806822890\",\"price\":302,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/d9b5c932eaaf7c2d78b43a3ad433211f.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"东欧苏联战场卷(1-6)卷\",\"isbn\":\"9787506106375\",\"price\":7807,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/81d612105973f698672d8b7c1f31d464.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/de5511ea45889cef16344d0c5690a276.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/97857064cbea5200847ee8b0b2919b86.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"盛京皇宫探幽\",\"isbn\":\"9787561054833\",\"price\":1076,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/682d2753eb1ff9d611dc44d877d94251.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"将船买酒白云边\",\"isbn\":\"9787547016046\",\"price\":4899,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/60875ab7e902cb8d0a016d574256aa59.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/234bb2c5a77a72c9fe17e16c33437420.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"辽宁风物 1-2\",\"isbn\":\"9787205074630\",\"price\":2299,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/e6151908ce2470b10aee9d41e903974a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/779b1c2bfe6b993724c29f1d34c41b0b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/c42cc3270c0f70bbb637572793183ef3.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"晚清民国瓷茗壶\",\"isbn\":\"9787806018484\",\"price\":1099,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/386ffcc514d58f186a8871a8b018d5bb.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"沧桑拾贝\",\"isbn\":\"9787531318514\",\"price\":1099,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/cbe7f3add1330b02ee7faa856ae83565.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"辽宁历史与文化\",\"isbn\":\"9787205063139\",\"price\":1099,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/965f6202a315f3e294127e1abb9b1e02.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"中国文化地图\",\"isbn\":\"6780706216899\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/42a1bdfdf7ddba464cd67957154781ec.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/57f1e951911ee49062bd8ffc1f851b8f.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"中国高等美术院校藏画精选\",\"isbn\":\"9787531428664\",\"price\":4199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/76d19a1c8c5fc6cd7477710b5f0d200f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/c6d2c60807647014de0995517f74f574.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/0a4b2c4c539285e241f9d388ae137e44.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/107e6e7ac7407b8e91c77f6c8a95cb70.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/3a7f728cba2615f1fe9996d03063548b.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"手绘魅力\",\"isbn\":\"9787561181676\",\"price\":2389,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/d71be146c36a60536901afd33dd4b5ba.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/3e36f6314c1651a70123c47bae6a9430.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/c1a71ee66a8744b6e3a3d4936472b489.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"辽宁老期刊图录\",\"isbn\":\"9787205063245\",\"price\":3099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/2fabaf89cfb636daa03b76714683df28.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/eb48538c988decd2a4f813864a2aa1c1.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"20世纪中国文艺图文志:话剧卷\",\"isbn\":\"9787544115308\",\"price\":6299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/1bb54b47c6a8c1494d8dc21c17db4a7d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/4a530cf9bed3baa3c7ebaf26413243dc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/6dcc5b6a50187ab1a6126bbbee33ad62.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/c795a993b4022513fb1e65a48006bc8f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/2bcbe484bb4b0ef359b9b6347b12e1d5.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"铁岭工笔画\",\"isbn\":\"9787531450788\",\"price\":1985,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/cda210a731f18d90d63fd49e969d63a4.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/3a009c251b91539f93a1a163865df16c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/b7a63903aa7c004650bb2b7939a6b57a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/221e7106863942ed67c88104d30447e2.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/d78f220fe402425a9cd425b7405e11ee.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"希施金风景画\",\"isbn\":\"9787561182123\",\"price\":3720,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/faff8fb696d111646496930e7d72dd9e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/ac619e3f2afebbf23553bba4815c8df8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/b64a7b2d8d7cd16c67f6e2858be517d1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/0474a952877c8f8de1e50b30a68e0102.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"江山高隐 中国绘画史渔隐舟渔垂钓图像考释\",\"isbn\":\"9787551710053\",\"price\":6238,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/83b08fd1ac893792902bf857727c8763.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/e50066b7c9d17793ba7dd2a5301d5dd5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/90d6dc3a8cc818f591fa02e7a4641c73.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"中国古锁图谱\",\"isbn\":\"9787561077856\",\"price\":17599,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/e22eb507a1c7f548c6738245f1777a35.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/f9dd8dfd6e7604bab61a1e23d4c60058.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/a1300eb89eb77dbb97d5265bb86c2d37.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/def4ee9b93f1caf40bcfcf5781fdda87.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/6c1290f7c85dd63cfd0e030784860f4d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/7b6d3c6fa48443a351cccae912bf00ae.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"恒此今生伴美玉 :\",\"isbn\":\"9787544148405\",\"price\":1399,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/1ee786de424af6873263e01e45a99706.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/d58fdf4b2cd544f7bebc8ce623d62ff0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/437f453c51e82f05a128da341dda994f.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"中国历代人物造型艺术\",\"isbn\":\"9787531431084\",\"price\":1772,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/aac773565fd54d3f8f67d7ecfa624988.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/bc6661be16388584b54de9999e43780f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/914b7d650cb850eb654f1917a247fe3d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/fff800c3bd4b2f6be43ed1a8c0014c14.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"脊梁:辽宁省直属机关劳模风采录\",\"isbn\":\"9787205058142\",\"price\":2799,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/40a2007f3dc8d62aa1029e8320fe077b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/3a5471dbe5e4c79112264a858fd433a8.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"中华保健中草药原色图谱\",\"isbn\":\"9787538128062\",\"price\":2110,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/eeb2d1816f0bafc839f831091488bc1b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/53818a1b501f5462f474902fef6abeee.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/6c1cfb10ffb0edc9e04d0cbfa83d5fd9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/bd9166ba265bf2664081001d9a756d87.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/acd4a94eb2a6a5cd41b0a0d868605a60.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"世界文学经典名著:茶花女\",\"isbn\":\"9787540412357\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/97f981c99a858f4d4ce7515e037e104a.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"红与黑 世界文学经典名著\",\"isbn\":\"9787540412296\",\"price\":329,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/bfd4452409450e88e1468050be0adcf9.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"少年 维特之烦恼\",\"isbn\":\"9787540412371\",\"price\":300,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/08bf1d8b2a16fd47322054fc0a1b7def.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"雁王\",\"isbn\":\"9787532437542\",\"price\":549,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/3cf1a249a71a03b525cd81583410f9e1.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"独耳大鹿:椋鸠十动物故事\",\"isbn\":\"9787532437528\",\"price\":2849,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/09d7a4baf600149be377a49eeb7ea637.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/a7d138a0751237299d9fe4220ec7c1a9.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"消失的野犬:椋鸠十动物故事\",\"isbn\":\"9787532437535\",\"price\":1898,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/5c5156bc8ff9ba9d153d63d81ca90755.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"世人二三事\",\"isbn\":\"9787572617119\",\"price\":971,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/82b90652609b93d9670f8ebba90c6510.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"魔鬼统计学\",\"isbn\":\"9787510893698\",\"price\":488,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/395cca3e4bcb539c30de140f546ed449.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"裙摆\",\"isbn\":\"9787573600073\",\"price\":531,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/8220657089c5d919d777ab49abd21356.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"我谨以此对抗孤独:史铁生、汪曾祺、季羡林、梁实秋、丰子恺等华语文坛14位名家写给人生的顿悟之书\",\"isbn\":\"9787519478049\",\"price\":691,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/a892d51b35844fe358e05800a1869a74.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"看人的本事\",\"isbn\":\"9787505748934\",\"price\":263,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/16211b84c30a77fce55604e86a5be0b3.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"酒鬼一家:一起实现的事\",\"isbn\":\"9787550031708\",\"price\":448,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/1c87e5d54187b5db488be76f7d918e5b.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"我的前半生:末代皇帝爱新觉罗·溥仪自传,随书附赠《清朝皇帝世系图》\",\"isbn\":\"9787557033187\",\"price\":1698,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/c1a1033381d4b4dbb48449f7df3480df.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"蟋蟀的江湖 儿童文学\",\"isbn\":\"9787531592730\",\"price\":1589,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/88793031bf30f41e29d4a4dfbae2958c.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"李皖的耳朵:触摸流行音乐的隐秘肪络\",\"isbn\":\"9787119025414\",\"price\":1099,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/5eaffb0cdd29987ea36501a506ad002a.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"希特勒全传\",\"isbn\":\"9787801202451\",\"price\":1149,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/2d052e830f39ec3750ae4a946c438572.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"漫客·火星少女. 第5辑\",\"isbn\":\"9787549209941\",\"price\":1349,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/f34e7e15a5e3f5765cfb1e61155a4c38.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/371daf9553810bbf4260864377032d34.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"漫客·火星少女\",\"isbn\":\"9787549207299\",\"price\":546,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/b1a3ec02a654f84b03749939b46939e9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/d65eee697d8ec4d6d3162a1107f7d705.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"漫客·火星少女. 第2辑\",\"isbn\":\"9787549208159\",\"price\":1349,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/4a63cae3b8a2cb76884353d63d32122e.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"国家宝藏 发现故宫\",\"isbn\":\"9787220127274\",\"price\":2019,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/445980b9d38837ebf1500495d1098a98.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"社交这门课,只能父母教著名教育专家唐雯新作\",\"isbn\":\"9787547064245\",\"price\":1178,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/a406421642a9f0a2be95ed19411cf8db.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"三味书屋/童年海\",\"isbn\":\"9787531570738\",\"price\":949,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/afeaef46abba151cc4119f52bca6e224.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"平妖传:绣像珍藏版\",\"isbn\":\"9787572609701\",\"price\":1759,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/b2c2790bb79f983362bdfad729927aab.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"蒙古贞历史\",\"isbn\":\"9787807226543\",\"price\":2699,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/59f64f46b1dd59ebdbd1014df139dbf5.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"国难见人心 寻访浙江诸暨幸存抗战老兵\",\"isbn\":\"9787205083670\",\"price\":1798,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/9eedca5c4f10760110bdc1b1b51b3b34.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"与历史人物对话\",\"isbn\":\"9787205074203\",\"price\":1477,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/f45ae5c457f67991060a39a7a39d8cff.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"泽源:大连海事大学校友口述实录\",\"isbn\":\"9787563238002\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/4a8d78b4c884750396da195486b42fb9.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"毛泽东思想基本问题\",\"isbn\":\"9787503524509\",\"price\":478,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/b5d3f81930eeb20e7690efc5314d286e.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"黄欧东画传:1905-1993\",\"isbn\":\"9787205060206\",\"price\":3199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/8b837543bab28537b78b6540dd799891.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"老安东\",\"isbn\":\"9787538295344\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/538573dcc10b8a2c13f0f10dab48d5bc.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"马克思列宁主义基本问题\",\"isbn\":\"9787503524493\",\"price\":298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/0cf5bd9aac2550aad50c28c8f8f1d384.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"望中犹记\",\"isbn\":\"9787806266243\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/acf46f3ca493f179fd04767002743af9.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"嫁妆瓶\",\"isbn\":\"9787806018255\",\"price\":1072,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/0c6b4613a5c471812c3da3b4a61f46d0.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"唐人书《金光明最胜王经》三种\",\"isbn\":\"9787806635568\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/86a9fb503e8f8b5dd2a70e618b9e23f3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/a2967bb316b5c65162a657301c0ba343.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"唐人书〈大般若波罗蜜多经卷三百九十〉\",\"isbn\":\"9787806635537\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/4b0ebe15b71bbef315704d2af67917e9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/73c458d809fc4594f3b235b1c6626d41.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"生活情趣集成\",\"isbn\":\"9787805181585\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/469e1e7eeda3f6ff46942c8d05773661.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/0add86e158151c1f3d60cc3add4cf134.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"长安好诗三万里:带你领略群星闪耀的大唐,感悟唐诗的魅力\",\"isbn\":\"9787554623398\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/376f676ff758b222f7d7ee1749d991fb.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"清史述得\",\"isbn\":\"9787806448939\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/5fbbf180e2c04ae966ef817b6d54ccd6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/95271b93c1b290ff829e7d96d32032ed.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"鉴宝\",\"isbn\":\"9787806019528\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/2fccdfa114d61b657836d986367be982.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/450695509d3d6002810cf2ae75a62495.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/a3e921d4f145fdf372364cec305a21d8.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"朝阳通史\",\"isbn\":\"9787549707355\",\"price\":6598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/080e1eb8fcecc4b2aa60b2111054af36.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"风雨长三角:长三角出版物市场成立15周年\",\"isbn\":\"9787807182627\",\"price\":361,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/8a6f75c2c1e2e937cb8ffab197e4272f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/f534e2d1b826f283ab9acfaecf165a6d.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"好姓名好孩子\",\"isbn\":\"9787504457202\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/b2009f0d8166c2be1d17c2906ba0a86f.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"B-29轰炸机群从中国起飞:美国援华空军远炸日本本土始末\",\"isbn\":\"9787506567572\",\"price\":1339,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/251ae488466fdedd7abc07d5ee2a1cbb.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"流年纪 :\",\"isbn\":\"9787205075071\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/2d17adbefcd17ee8a8199477ab0e744f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/4962af69c3829ba509b72cbd283fbfd3.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":2},{\"goods_name\":\"北京土话\",\"isbn\":\"9787538280449\",\"price\":2399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/5bee83e6cf194874b250820f35ed774c.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"人生世事格言选句\",\"isbn\":\"9787205083878\",\"price\":1292,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/0293b7df41ba34275a6b50c7918ae016.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/68bd13ff509de2e4813a9c8f8496103d.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"街与道的宗教\",\"isbn\":\"9787531339984\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/c887db57716874a6411ce88807291dc8.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"春秀\",\"isbn\":\"9787108048011\",\"price\":815,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/e49f24c7302481769b2eeff520d4ec87.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"道德经译释\",\"isbn\":\"9787543848580\",\"price\":1810,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/a99dc3409729c0beee5b7f9a97060cdd.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"旺家花草种养大全\",\"isbn\":\"9787533547790\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/3d1b546b6cf3656b853e3d097769059b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/4bb2cbf4f9e5830ac3399fa73e7bcf93.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"沧海一粟:尹沧海文集\",\"isbn\":\"9787807119869\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/9d9643b4767c3c12f04ffc01d4251c89.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/5b0adf766169312d568e9066f2329860.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"罪行与宽待:原日本战犯反省绘画集\",\"isbn\":\"9787554907474\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/83e993a9bb1b2df565b9b7dd547f2f25.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/6541fad474df2f12c93ddfc14e96d206.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/9590ed480a70d61794201b6d429e47b5.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"别具魅力的软雕塑:[中英文本]\",\"isbn\":\"9787531427292\",\"price\":1078,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/f959e9b2d1a1275f6e1a0bbffc690fdf.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/98d98bdf57f10fb52a685439581064cb.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"哈弗商学院MBA教程系列全套\",\"isbn\":\"9787505101753\",\"price\":3000,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/cb8163295d1aec817571db8a7bcedd45.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/96e6852169b4eb7f317f45ed810ce341.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"东线\",\"isbn\":\"9787307065697\",\"price\":719,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/c00b0c017dd373bbff28d340ff717945.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/8882a7f346b3c82fa5bb1e3f63bc9916.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"房地产法律服务指南\",\"isbn\":\"9787806775158\",\"price\":1859,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/7f9922e2b9684162a01ebbf95b2974ce.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/81e724e87121f2af469d9d14469577a6.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"唐诗鉴赏辞典\",\"isbn\":\"9787540339753\",\"price\":1226,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/631034a7b299e7d8cbf88096ee24a368.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/42041f72307229b32d7b5dced9cab40c.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"五脏排毒养生法(汉竹)\",\"isbn\":\"9787553781426\",\"price\":463,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/94a3028335ea1dec3de44525d23c6c16.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/c0e9be06805919e26a084984c27f14a1.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"单片机C语言程序设计实训100例:基于PIC+Proteus仿真\",\"isbn\":\"9787121148330\",\"price\":2699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/e29b78ad18e57d1f35f853ade59f20cc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/eb84b01f66048f6f510d415fb51ec8ce.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"趣味哲学\",\"isbn\":\"9787532544790\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/b63e33481f02b8bbef1bc279a180e1f2.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/1070d0ee5489b923e1f0a18c1fee2200.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"鲍德里亚与千禧年\",\"isbn\":\"9787301084762\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/e9ab591f14d4f83dc3f8458b4fa776e7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/76ad9cb90a29b718694986bbfdf3cc08.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"东野圭吾:麒麟之翼\",\"isbn\":\"9787544286312\",\"price\":850,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/46e9201a350cd347111c251e170f3bd5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/c7214921bf6dab0aa4b33889eda5ac44.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"这才是清朝1:帝国崛起\",\"isbn\":\"9787509398746\",\"price\":798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/421da66c7bac553dc457a782dda773d3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/93118c3ccbad6c50d1d76fbf4e0e6e9b.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"这才是清朝2:定鼎中原\",\"isbn\":\"9787509399088\",\"price\":1005,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/afe64289df521b14b68c95e42bc4e57b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/632aaf657a90eac8096c84b89e622c42.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"赵扬百年\",\"isbn\":\"9787565510335\",\"price\":8399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/bed2052ed535375ca1b1e7f5dd792b07.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/bfccb57921b61c72efc06c2f6ba085b9.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"李鹏回忆录 全\",\"isbn\":\"9787512358973\",\"price\":3299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/938d4ac8afbcfbeab308664a40cac185.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/65f4db3a061b6e7c74fee2929bc0a9c9.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\":中国古代教育史\",\"isbn\":\"9787107070525\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/770ab012d4ea4d0552c7fff58e6700cb.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/0109ba3a31d094d64578de7b9fe8e9fb.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"家庭推拿按摩\",\"isbn\":\"9787508210315\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/25b13980e48768c8c6b27b0ac2db9e6d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/271744ea2fdecda9adc966dd9234301c.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"44招帝王养生功法\",\"isbn\":\"9787801303547\",\"price\":1868,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/c6922dcb2177574437736e8e4d3ae988.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/8bcc272ad73a6bdbfc6cc12979333713.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"家庭摄录机的使用技巧\",\"isbn\":\"9787563706365\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/1c6a720c961f31a4552012785280dffe.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"中国灵璧奇石\",\"isbn\":\"9787801501073\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/d45f7e50a5ad1468b8f906211974a6b9.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"港澳台游——旅游随身小百科\",\"isbn\":\"9787538134285\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/5c7e45231dcec6647b676c02e579046c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/e63017c76551e8ca3c53315a1b61101b.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"乱世佳人:(全译本)\",\"isbn\":\"9787532709243\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/9c59635f9b9c9710c0fa1701156c4cd1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/ec5612e7a0cdeae4da6526beee50fbac.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/e472cdba87c39e2ab1baaf4a75965546.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"再也不见,拖延症\",\"isbn\":\"9787122372475\",\"price\":598,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/5551f74813cc10803550c35701e4edfd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/377f929c5cd9af2161adbe058e48f04e.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"新型纺织纱线\",\"isbn\":\"9787811110838\",\"price\":4659,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/484769d78372c9790ea9c8cb6baf0c9f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/b3b063a5390534401911cd2324f5b930.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"国学经典文库 千金方\",\"isbn\":\"9787533554194\",\"price\":549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/6a3a2e50d8361678221ea208ad35260a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/119999aa0945445f823c7f9a4f457247.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/4a88d4a4bbc162cd4fc24f9e47d1cbec.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"活页英语时文阅读理解高一年级 17\",\"isbn\":\"9787519824389\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/d431e19cc8c9b1cb456a795716b76229.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"绝处逢生(上下)\",\"isbn\":\"9787550023727\",\"price\":3990,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/18f8e01a7020cba8fd34b0e3fa236f30.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/61e4ef3dcc372c142e604744ccac8b9f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/59a9f6a2374f48fb7b8fba1b927a65d5.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"围棋基础教程 初级篇\",\"isbn\":\"6785955971997\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/f0bd5da87f8ffd01bc39158115600352.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/6c86a25ce51fadf9d79a9b24723d8dd8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/cb1ed0e486b9dc12c4f631683cdb6cb4.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/3e40b044fa6dab6938500e054c673449.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/be5102c814bdd83b8eb49e01fc1eae1f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/235fd9e32a524d0980e4dca634255266.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"人一初始印象与预测\",\"isbn\":\"6783916013459\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/ffdd75ac08de00e781310c9654ccd044.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/80d3dcf6ca088cd3147785603ed069c6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/343fd3b5ad26d8187bd51188f6ac191a.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"面相与医疗美容\",\"isbn\":\"6784965391814\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/ebbb3fa268d7a22a51a692f6e3953ce3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/eb33bc1ea146ea592a4175a4d652ecb0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/11dec7b5a0a19d7dbe9ce0ffeb6bc172.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"骨相、面相、手相、家相\",\"isbn\":\"6780297765061\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/a696868e9c8b81bd35f0d641ff3d0089.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/54756640918cc62f95cec12a9737abd7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/7102b01b247165aeac777ce433c93d1d.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":0},{\"goods_name\":\"自看手相\",\"isbn\":\"6784790162700\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/f75407eca0cbb9eb2c2d4d2a04734c30.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/1b83aac19932cfca86847a7543611387.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/55b74d9b3e131587dd977883f12d3b24.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/4fcc64571fe8c6294967d4fcfa4c0e45.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"白杨树下\",\"isbn\":\"9787506362641\",\"price\":1372,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/8385484e15c5f3d73f925c58afb640da.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"现代机械工程图学题典\",\"isbn\":\"9787030497574\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/dd9f6b8d3b83884dcaada73675b6da57.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/9ee3a8bc57aeb09a537d0a110096a47d.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"高中数学加分宝 112个考点清单+疑难全解\",\"isbn\":\"9787555239031\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/6030345a601fb835fc58e222a2c6e1b5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/808fd6457ecf6da8a7abf50ff59f3d80.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"2020日历每日人文地图\",\"isbn\":\"9787520412896\",\"price\":1031,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/04faae46c658e3de411aa28e1c07dc64.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/03574f42025c239594d8595cd8052164.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"2015小学数学MO竞赛通鉴\",\"isbn\":\"9787556409679\",\"price\":649,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/a2d460d4ed20cfa0d596922ca51d582b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/73aa52382dc54fce5d566a4e760e601c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/88e9159514f53f60b9f491ecc8068d69.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"艾青诗选\",\"isbn\":\"9787020137862\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/dc3a33aaed27f71c60e08153bfc9d077.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"章红“亲爱的小孩”系列-唐栗子和他的同学们\",\"isbn\":\"9787558401923\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/629cfcaaa6bb359d5de38b3f7496e423.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"饮食细节决定健康\",\"isbn\":\"9787502823955\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/aee80c0fc2e0861cc17000cd2557f13b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/192a4530a63a177e2fcda8a4f50ac102.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"启迪孩子智慧的动物对话\",\"isbn\":\"9787504473912\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/ee43c997d25b6fdce959f7a092d92d58.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/f5cdb567add0cb71c639334fa43c36e5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/05a385dcf75d06482193e431bfc0ad5e.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"丁立梅的阅读课I:相见欢\",\"isbn\":\"9787520709453\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/93f4255d26ca6c5178b71dcb23c76203.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/0c8532eb2b4195b92cd058d083d482bf.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/fbf3e44c21be558444d9873f461f17d0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/e81328fc0342015bbc49c9c0f226bf3f.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"彷徨 无障碍阅读+中考真题\",\"isbn\":\"9787570409914\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/40ecc7249e99a4fe0921d9ccbf1bd26b.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"中华传统美德故事:仁义礼智信\",\"isbn\":\"9787534256813\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/710fd1484cea919a78e58440ce48f46f.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"中国经济思想史简\",\"isbn\":\"6788440913864\",\"price\":347,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/f0dc8183d7cf02a445e39700ab94aca0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/8af33f46d8ad9450a4f263f7ae53a04c.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"成语典故 (增订本)\",\"isbn\":\"6785656435454\",\"price\":789,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/3a059702ca50a1d2e990a569ec8227f4.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/036f9743b08dab8b1f815fc065cb9c7c.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"2014国家执业药师资格考试考点评析与习题集:中药学专业知识一\",\"isbn\":\"9787506765312\",\"price\":393,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/4b5da146b5bb5c814fe659e96696ea7f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/c1e6153537492431bcce46d5a4d620ac.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/101b70aeacc7b5e1692aeadd1fd47c75.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"小猪佩器:森林小路\",\"isbn\":\"9787539763132\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/17b872467f859792a3ac7950e974192b.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"世界文学经典名著:罗亭贵族之家\",\"isbn\":\"9787540415358\",\"price\":549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/2089a8ba6ea2390baae04a64f76fc91a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/675a6cfddf484bd72d2e286fd06b87fc.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"名利场\",\"isbn\":\"9787540416171\",\"price\":1157,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5ec4249862eff90bbd6c697dd47fd176.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/d7614a4faa492d34ee85611f9a79306f.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"上尉的女儿\",\"isbn\":\"9787540413651\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/effc5eb3c3eccadf9c236628c91926dc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a04ac69e2fab3f00786af8a77dda8354.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"小猪佩器:乔治第一天上幼儿园\",\"isbn\":\"9787539760476\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/84cd9624e9e766886a250436bb80b1ff.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"高利尤老头欧热妮·格朗代\",\"isbn\":\"9787540415365\",\"price\":198,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5267a7dc0a19ebfbdcaf0b05277c35fc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a04b10ceb37d4907df912b45f562fe42.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"俊友\",\"isbn\":\"9787540414337\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/901222813ad08c3c985031125eccb438.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"小猪佩奇:校车旅行\",\"isbn\":\"9787539763101\",\"price\":689,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/13091e83a11bfad21976a64e8fdca648.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"小猪佩奇:游乐场\",\"isbn\":\"9787539763064\",\"price\":429,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/32acf9ea2ca5001cd0528457a5b510cd.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":0},{\"goods_name\":\"小猪佩器:去游泳\",\"isbn\":\"9787539763088\",\"price\":296,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/390823f55be1882fb53987f076808e87.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"地质矿产勘查规范与地质环境调查、灾害监测评估实用手册 上\",\"isbn\":\"9787884132812\",\"price\":3889,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/c77591fb4a94e286302046523d91161d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/7941e69d4af5d0fcede08e0f2786397d.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"中国财税管理与实施\",\"isbn\":\"9787900305794\",\"price\":3949,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5fce6fd060e5ae334f524f177d0d018c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/ff7ffe9909ae2462880b768ec423e896.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"名利场\",\"isbn\":\"9787540416171\",\"price\":1047,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6cea881dbb2288cd64bceb99b1b9186a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/4a3c9a9a825d0aaa59831c81baa8d3ed.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"哈克贝里·芬历险记\",\"isbn\":\"9787540416355\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b4ce4e93b85eb7430392dc312e4b02e8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/2d8d132fce3b0b416df91c6f8ff4d9af.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"中国合同示范文本\",\"isbn\":\"9787801433121\",\"price\":429,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/19c7c93aa30ea42326026bd04a9989da.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/9688465272c2e4ac743857bb85ce0485.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"莎莎的栅栏 Shasha de Zhalan\",\"isbn\":\"6785998228278\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/958cfd5d027ab37ca68adbb90784016e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/6681760740cdd0f1fa4fbb86c2291b58.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"啊哈,原来是这样啊 Aha, Yuanlai Shi Zheyang a\",\"isbn\":\"6787042823355\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/411627a550da0820a3d991c01467d7ab.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a567d6ab2af948d1187186c7f8db1460.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"哈佛管理全集\",\"isbn\":\"9787800019401\",\"price\":990,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9ff94b466652c41f791592895f5964ff.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/0d8a833a9bca0b02c47628690e38d050.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"为什么只有我在打扫\",\"isbn\":\"6782554615447\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/e23ce8cd27f0c1cfadf2d695defb152d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/116595890c119f3a3e1567ade367030c.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"游遍中国1-4\",\"isbn\":\"9787806063125\",\"price\":2499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/be85ac787cedf7d50f1041e62a31360f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/bef97469d31f512e16ad4d5661667dae.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"阿里的旅行 Ali de Lüxing\",\"isbn\":\"6786915135561\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6a23790784f484755b47ca0fc2f071fe.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/7c850150f508e762f4c8683aabaeec4a.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"刺猬,我们又见面了 Ciwei, Women You Jianmian Le\",\"isbn\":\"6782258087239\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5151de134acbdae043624236d8bee7f9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/7dbd9a71ef5a43bee2490eae2ad3e92d.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"你会吗 Ni Hui Ma\",\"isbn\":\"6780954208165\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d9aba38224e56572f3c875ec07a81145.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/24f49fb2e77a13af63a84eac18c3254a.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"谁来给长颈鹿戴上帽子 Shei Lai Gei Changjinglu Daishang Maozi\",\"isbn\":\"6783899814432\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/19286d7be86215a935766906252089c2.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/75ae1466736767882e723c6056a55b48.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"姚姚的大尾巴 Yaoyao de Daweiba\",\"isbn\":\"6787918663870\",\"price\":970,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a196c00119cb3d745613b273257687bf.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/ee18e6c0422d635dcebca092902e988c.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"文心雕龙\",\"isbn\":\"9787534828751\",\"price\":980,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/e0ed933e84ef16a3011e1a03a62a3a6d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/e0a903ea2cb047d422fa2933ae8cd90b.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"2001年上市公司速查手册\",\"isbn\":\"9787501152247\",\"price\":1098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/aba0eebcd469bc115148f382cbb58ea0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/8e59a777d5fe1947c5eb875a020f81d7.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"那一定是心理问题 :\",\"isbn\":\"9787559658210\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/72648926403583d7ad2cfd0a1a0af1d7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a1567ea2c8b37f189b8d25effc461b04.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"情系田园:田园诗稿、日记\",\"isbn\":\"9787531325574\",\"price\":2197,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/183b1072a4ad7f0d3863a7e6f8823883.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/8a25c18d220758576dc04f1fc4b33c26.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"多代社会\",\"isbn\":\"9787521764871\",\"price\":2379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1b4203ee004173179d4a87b0f8ef0f5d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/fa020e9da830cc5a436ba244d46fac63.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"盘发造型\",\"isbn\":\"9787030371355\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/437b07dea6d951b6e934f60bab78f88d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/c285278822b3379b14dc5508fa6df1bd.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"书 名:做最富足的自己——歪歪免财商教育童话\",\"isbn\":\"6784823390147\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/07b643e0d2f283b6b86f6c55072ad358.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/3ee3b352c2104528f5988470c0d47d7b.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"商业银行经营管理\",\"isbn\":\"9787543225220\",\"price\":331,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/700545ed3627dd2dbce999f02af9cfd3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/2bd94908cb488cdec8fbb451f0f6a2c0.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"书名:做最富足的自己——歪歪免财商教育童话 印\",\"isbn\":\"6788132296441\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/793bbc68fc4c0bfe7f4e53d4c9335fb5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/57333b6aa34215ec4b2fbd984ee902d3.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"书 名:做最富足的自己——歪歪免财商教育童话\",\"isbn\":\"6780996264742\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/79f7bc1ecfc8461facbea99dc75e8e88.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5f6e2110abee1531aa531bc960a08e72.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"书 名:做最富足的自己——歪歪免财商教育童话\",\"isbn\":\"6781802643794\",\"price\":194,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/c0a785a02d0d1e545308e2b87ec8b72d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/41c1584f8eb9d81dc4bbe3067bef97d3.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"书 名:做最富足的自己——歪歪免财商教育童话\",\"isbn\":\"6781202139156\",\"price\":205,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0f7af227c47074ece541be9d8816388b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/1193e125b43317fc31690aa61e913a2b.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"书 名:做最富足的自己——歪歪免财商教育童话\",\"isbn\":\"6784965822053\",\"price\":207,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/2bbb37d8699ca7b2c767cdb4554003e3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f7698bd8e9f2918364b9ba79764d41da.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"名:做最富足的自己——歪歪免财商教育童话 印\",\"isbn\":\"6789829389016\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9fbf96615428fcc5e11c10e48e47de60.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a8a580da4fc8c81507ce82b773dae713.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"辽宁省建筑安全培训教程. 管理人员培训教材\",\"isbn\":\"9787552910612\",\"price\":1186,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d71eb70dd2268ea547e1a18a49638abc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/16b4451745bc2fcb31790c9088b0f48e.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"税务稽查案件查办实务及典型案例(比武)\",\"isbn\":\"9787542965325\",\"price\":1757,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b90f1fc017eeca31b83b1224795be198.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a1550e1bf7eccd2f6098403787889d43.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"化蛹成蝶的追求:档案文化建设的理论与实践\",\"isbn\":\"9787205071837\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0a6af3f37191f2bd0fe2830efbcdcb28.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/b27995523ac8f4a21c3cb1650b61416f.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"尊隐:龚自珍集\",\"isbn\":\"9787205028633\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/03204fc6c39e099ad4e20cf176a34bd1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/794943e5d06878c87d2f6cf0d5c3c4df.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"二战纪实 中国远征军\",\"isbn\":\"9787553104300\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/fc9c6fa2edb067714e1abc3e2b6967ed.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/729dd7facbc7829540e39c53694f3383.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"来燕榭读书记\",\"isbn\":\"9787538259704\",\"price\":5499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/c948863af4ae952e50311d3c1e65832f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/fa26f0dc5d8c539e6f66c39de16b528f.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"与时随笔\",\"isbn\":\"9787205068165\",\"price\":294,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/ab1d050eb4349c968bed02f7a52fc982.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"论创新与求实\",\"isbn\":\"9787531329374\",\"price\":3929,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f8257c03e81602bdb73515856a41eebb.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"远方的路标\",\"isbn\":\"9787531327349\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/675b267d12e2799e089e5b1b1c5c4a2f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/4b7b1b34265824604d5ed83500960f61.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"书道今诠\",\"isbn\":\"9787545109665\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/245d5aa151cb6549e4f7ba3d0f40b20e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/d068a28dc487f40a6ac7a3a317b6ad6f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/67caf16eedfe6c90677a26716c769c7f.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"苏轼散文精品选:原文·注释·译文·赏析\",\"isbn\":\"9787224038873\",\"price\":1043,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/4368be6da70c8cba500240a538ac6da9.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"风雨哈佛路\",\"isbn\":\"9787508654621\",\"price\":1428,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/97d4d46d79f2e52c39b0fe94231fc411.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/ef14bf04dc9f87a563a13e8f9ea8739f.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":0},{\"goods_name\":\"红色的凤仙花\",\"isbn\":\"6783512003616\",\"price\":202,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/881cd281485fe60942335f0803449a20.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/119aa8209d9ad4253c894813c591348c.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"万祥寺志\",\"isbn\":\"9787205075736\",\"price\":4508,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/ccac4b087bfc66325577904fd1722478.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"中医文化学——十三五规划\",\"isbn\":\"9787513242608\",\"price\":986,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/62565574e4628f5976441843c6ad1da7.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"中医文化学——十三五规划\",\"isbn\":\"9787513242608\",\"price\":398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a3fd878b0883be01a34df7f33fd65eac.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"名师同步教学设计:小学数学四年级下册 人教版\",\"isbn\":\"9787544033077\",\"price\":889,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/7dd9fbb6b40fd0c0f124728ea406f0a9.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"媒介·社会:产业、形象与受众\",\"isbn\":\"9787301149843\",\"price\":411,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/cfc41c4430e1c381493b62e9346d7809.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/198fb0a49bdc9aafe14ab16473819a97.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"外科疾病中医特色外治226法\",\"isbn\":\"9787521423334\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f62bc48095083b52f211de77faa9f4ba.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"企业会计实务操作\",\"isbn\":\"9787561045572\",\"price\":5599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/295fb697d888f3503d2e8bbd7b1f229d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a8368dea4582f2baf2f4f4f5a0c6c67d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f78203a19a953f3c6ef21218dd7afc07.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"大学生创业教育教程\",\"isbn\":\"9787561185315\",\"price\":868,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f58b8ddacc3d3f649fa6c3501693824d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f6cd842040d583934a17f950fd7dc460.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/bbec0ccc142bbc87ee05c7bbb0dd9d07.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"书法艺术导论\",\"isbn\":\"9787561068533\",\"price\":394,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/12e7769912581e49d05e3678476d87ba.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/b1d022121b1fd3b78d213999a16e169e.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":2},{\"goods_name\":\"中公教育·事业单位公开招聘工作人员考试专用教材:全真面试教程\",\"isbn\":\"9787802088641\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d5c253e3776f1a26c277471bdd707936.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"光纤通信技术与设备\",\"isbn\":\"9787118126754\",\"price\":387,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0bf4b01f1dad3aae1950ca5dc859c0ab.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"学前教育学\",\"isbn\":\"9787107302763\",\"price\":497,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a6141f86f29b07427be8544ff3384549.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/eb491ff41018ea783f07496ce50f69f6.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"政府与事业单位会计\",\"isbn\":\"9787509548059\",\"price\":488,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/be722fdc7ed1847a9ac0fbe23300eb53.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"临床流行病学与循证医学\",\"isbn\":\"9787117266789\",\"price\":589,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/38146e919da45278dd3a33b1042bd5ff.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"只想和你好好的\",\"isbn\":\"9787559468338\",\"price\":397,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/84b1dfe9fbe591b0d1b6a11947e48333.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/34fc0ac1cb82675c15f2cd4c4a7053de.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"我们都一样,年轻又彷徨\",\"isbn\":\"9787540470883\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/34cd17fd24ef1ea71dea0117e9fa1f57.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f30668dc8862a8e82fbfda7f91e424a1.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"耀眼 1\",\"isbn\":\"9787551159098\",\"price\":357,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1714bc235530f66f8dccbb5c533380dd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/6d2737a97d3f884d65cef7b303c4189e.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":0},{\"goods_name\":\"心智成长 开启高效学习成长模式\",\"isbn\":\"9787115556509\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9ac5fa38efccfd83fe0925582e67167e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/687ff6eb6c0959956c3197f8cc9976d4.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"聪明女人必备的九张牌\",\"isbn\":\"9787563920624\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/124bb65bab6feab1f35e6b02e2c89c25.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/3b5d7d0f837c39bf7d4a92c68aec89f7.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"生气不如争气全集\",\"isbn\":\"9787802133907\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/96bfa79223aa2cee72cac31699a433d4.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/812ea7a182a361f4391d552a33931b89.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"别做那只迷途的候鸟\",\"isbn\":\"9787559626530\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/acc438ee325166bdb06a928e0740accf.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/123a86d70d5e6a761ebee5b8803cec2c.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"鸵鸟心理:为何我们总是害怕与逃避\",\"isbn\":\"9787122364210\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/946e4f0388b22b65ce4209bd79aefb68.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f072a6de45f5ba94e7ebda5153b3ece8.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"谁动了我的奶酪?\",\"isbn\":\"9787508650890\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/caedf188dd154d18d744e8e0a1bbc901.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/8f498c920eca92f058d85bbda61aa68f.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"六度人脉\",\"isbn\":\"9787540455125\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/62bd99c39b8418ccc27c1c6957ea12a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5069df8753564cccadb6dfdef9531a35.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"Why青春期\",\"isbn\":\"9787501224821\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5ccee5350c7d77b6f0f7e5ee2db5868c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f619a0183880cc237a542c6c1c2fc1be.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"细节决定成败\",\"isbn\":\"9787564074050\",\"price\":1231,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/890bc762bf630bfa1c0b30bfb77061de.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5c0cbf1a0f16b7f878041d76ea861ca1.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"记一忘三二\",\"isbn\":\"9787536091078\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5e326b21ec5cbb76417c2b627c9cb482.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/4c68bf327357fbdfabbf9f0fb431c1d2.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":0},{\"goods_name\":\"小学生分类作文新一本通:4年级\",\"isbn\":\"9787514602272\",\"price\":1909,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/23f829c5e1c9aa6019fdd986c51a5bde.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/2f4d0dfc2df15e9e062b2fd40c0106f0.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"开发商\",\"isbn\":\"9787539927053\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1b6d0cbdb3b0002a067727a9183e666f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/54f396af157f8d956fde4787d595b239.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"学习OpenCV\",\"isbn\":\"9787302209935\",\"price\":769,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d903fa53243554f10da605bd00b926f2.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/fce33657cc39b7dc17b10720ccb6828e.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"新编学生字典\",\"isbn\":\"9787539276533\",\"price\":509,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9f5b0cfa0a873bc5e6e703dc9e485ba0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/36184d9da209387503af48b9d4aa2680.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"实用广告学基础\",\"isbn\":\"9787561409213\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/cecf8a63d7de8efd4ab147048d9ac900.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/c4b9a81b177b04eb1407033f82939fe5.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"镜苏摩\",\"isbn\":\"9787104022541\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b580273515e7221b2da4fb6759d0c3a3.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"前沿故事\",\"isbn\":\"9787544212113\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d2888a5a0504951d9186fbbfd6dfd1a3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/659f00a32ccdf2ef418e9cc0306a3ed2.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"升级版动物小说大王沈石溪品藏书系:野马归野\",\"isbn\":\"9787559708908\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0fa366285b4bd8dc9d8bf662f719e4dd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/682b883eaa74ab5f0a41d7a3ab80353d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"艺术馆·艺术中的庭园与迷宫\",\"isbn\":\"9787568058230\",\"price\":2365,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d8f440c71d35ce525ce5220d2560ef81.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"实用商业俄语\",\"isbn\":\"9787561810712\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5fb3d36dda4f31a9dcad36dcc2571cb4.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/ddb4a689f967b8b077a0176ccef4cd04.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"三联精选·凛冬将至:电视剧笔记\",\"isbn\":\"9787108068347\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0532df0e1ce4241d00b61216b34585fe.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/4f0cd8c1918dcb97ffebf0f0f1d3ae16.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"文化的演化:民众动机正在重塑世界\",\"isbn\":\"9787208188822\",\"price\":2689,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/73792e1ae4940feea446b09cc05da95f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/03b89e78aa08abce850739a7e3939e06.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"光荣日 第一季\",\"isbn\":\"9787807596226\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a8f49c5e9d7a91050cbb2e9829da54ee.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/25764ad7e12503ff286e43b68893aa83.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"社会保险政策解读\",\"isbn\":\"9787538279887\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/81d2bba3ae483b7a1471b9a23c71d83c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/cf97907d107723e8b29954a0c1d25fd2.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"劳动保障政策问答\",\"isbn\":\"9787806699300\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/fc97f7cd399e884fcedd6b8e094397b8.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"外国公务员养老保险制度\",\"isbn\":\"9787801390851\",\"price\":2399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b86f26464c3f9711e59d64ec34abf719.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"3ds Max\",\"isbn\":\"9787115213358\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/332d2d4e5a433c3a05b6cef87a7ab3e3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f5d71137ad0346fe874c034ffd67a626.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"完善企业养老保险制度工作手册\",\"isbn\":\"9787801754233\",\"price\":1179,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/718069b5534bd1b052a0f9089d0395d7.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"劳动保障法规精选与实用维权700 问\",\"isbn\":\"9787801781628\",\"price\":329,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/97ae14e80228e018123a6c262f7c54d3.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"只有医生知道!2\",\"isbn\":\"9787539965956\",\"price\":769,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/829774ac47c3dd2e33dd99dc68e4b0b0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/c7f30dd71dc9bf1c0b358c62fb085697.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"住宅建筑设计经典:[图集]\",\"isbn\":\"9787538119633\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/154b5e8f9615cc110085b24124d871a0.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"改革先锋风采录\",\"isbn\":\"9787509910917\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9752be40988520018d16b332a893a5e1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/bbd7079a0ed573784c6229075067ca9d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"信息物理系统典型应用案例集\",\"isbn\":\"9787121362668\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b91fd7b00d6faa66f1a218a797da73eb.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"从课本到奥数难题点拨\",\"isbn\":\"9787544542494\",\"price\":316,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/c01d2dd8fd789941fa5e252bc2e96661.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"19学霸笔记--13.初中文言文\",\"isbn\":\"9787564831530\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/8a2ad518fc9068a0b1cb3ae5342179ab.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"电子琴实用教程\",\"isbn\":\"9787103005897\",\"price\":1317,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6f844d6716e6b7fccddd5998a3e5aa18.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"罗尔斯 正义与自由的求索\",\"isbn\":\"9787806389706\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6753c299060bea4ba38930634772906b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中国典当史\",\"isbn\":\"9787544133258\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1ec0cefd44cbe3ae1248e73ae318dea6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/9837c62d7b3b311461f82e857c57e120.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a834d42381db90fd48387a81a6e5751b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"稻草人\",\"isbn\":\"9787307127678\",\"price\":231,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/85b98c8496ddae3340fafbb2a0c96b6a.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"绘画气韵评典\",\"isbn\":\"9787531428299\",\"price\":586,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/548875bd7b841725f759f5297ff9a974.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"曹雪芹祖籍在辽阳.续集\",\"isbn\":\"9787205057473\",\"price\":2489,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1646e35d713f52a6d889aaa223f2a6b3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/0c2866c293560ad1c45024a2f9f37265.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"网络信息资源与电子政府\",\"isbn\":\"9787801148742\",\"price\":1647,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/69b9b7acf7d96aeaa8b0a881a63b17ae.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"一个真实的玛丽莲·梦露\",\"isbn\":\"9787506019262\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9990c78e7e995fd9f4ca0dcf8cdbf1e0.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"红色记忆:梦想的力量\",\"isbn\":\"9787550510975\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/23780b30581140f8c446d09cd7dc9b48.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/9ea33be146ce383a14804c13232924b0.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"大师也有错:余秋雨散文知识性疏误点击\",\"isbn\":\"9787801538574\",\"price\":821,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/3d130412ab436791d604230286070283.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/d572257ece1b2f220426a9e8561d4b43.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":2},{\"goods_name\":\"列车长·列车员·列车行李员·客运值班员·客运员·售票员·车站行李员\",\"isbn\":\"9787113043889\",\"price\":4199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b6061f51d06652d4791a791af0c272cf.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"倍速学习法七年级语文—人教版(上)2020秋\",\"isbn\":\"9787570401154\",\"price\":2352,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/c31991cf171c9e6604974597e5a70cae.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"旧梦:古风人气插画师 离城\",\"isbn\":\"9787569920260\",\"price\":1191,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/67de5913cb80553ceadbedf8155c1533.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/746695ec2d6be7e3e93531703cd38af4.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5a1b2777fea1ec7a262d89a25d16648e.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"西方绘画技法经典教程:人物草图表现技法通过火柴人学画画\",\"isbn\":\"9787547921470\",\"price\":4699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a36fe980575130f3c6ec6a8fce4e0569.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"学而思 培优辅导:初三化学跟踪练习 上\",\"isbn\":\"9787121235832\",\"price\":1273,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a27cb8468269f402cd1101306bbcb5e6.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"钢琴.二\",\"isbn\":\"9787532066896\",\"price\":1460,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/afb3c44b4525dc628231131a1900b3d3.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"《实践论》《矛盾论》导读\",\"isbn\":\"9787503562471\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f302191b6d3c950fee46b896ba9e73ae.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"中国文化现场\",\"isbn\":\"9787563925902\",\"price\":1096,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/ca983d4ee9ff7072f5cc8ff79b5f81a4.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"新东方 考研英语\",\"isbn\":\"9787802565401\",\"price\":277,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6c71b4a6842a31e47f6fa799be54002b.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"全国英语等级考试三级口试真题题库3\",\"isbn\":\"9787115304575\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/2898a048ead60ffa84960b32233db5a3.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"绝对成交之一个房地产销售教父的自白:为什么不管多难卖,他都卖得掉,还能卖出好价钱?\",\"isbn\":\"9787218106229\",\"price\":204,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/04ff49da674034c5465bfbc8c56cb79b.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"管理就是带好你身边的人\",\"isbn\":\"9787546419114\",\"price\":559,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/3784ed0c328badb786c785fb0f06082d.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"原始之美与自然之奇——奇特部落\",\"isbn\":\"9787119041643\",\"price\":342,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/82d03e35c4d6cd6f5364333303ae8bfa.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/ada266bb29c813e3f339b1141638c8e6.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"全国干部学习培训教材:社会保障制度建设\",\"isbn\":\"9787800988578\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/edef882804e322058b08702ccf5c411e.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"职工社会保险读本:你我最关心的社会保险问题\",\"isbn\":\"9787538275346\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/2f2db1fc317f788cdaa851dbbfbedd03.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"社会保险法知识问答\",\"isbn\":\"9787504591043\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/025c9c3f700f96a43a3f8eb654152f32.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/db2b8848ee52321b5cf40e5baa670724.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"全面加强党的执政能力建设沈阳方略\",\"isbn\":\"9787544127851\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/daa299e841443f9ed0d0b47012016aa3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/b0662b9f5fcf98dce7a2e1bec1a4d6c1.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"社会保险费征缴暂行条例及相关政策问题解答\",\"isbn\":\"9787507508499\",\"price\":2299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a435c762f9fcfcde504e50d1f629027d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/8c6d11760324f0f80258e69a28f25f73.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"新编党支部工作实用手册\",\"isbn\":\"9787505103559\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/8876b99964fec0be1a71da8efc1ee445.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/67e2a54a7059a553da70de90f50bf801.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"做人崇尚“孝善仁” 做事摆正“责权利”\",\"isbn\":\"9787516615133\",\"price\":794,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/927357b57394bcb3a158fe08a47df904.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"工伤保险条例实用指南\",\"isbn\":\"9787801890108\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/afb51f6d80886678054ed16a93b2ece8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/ec4ef8820dd4997b97fb60fc697bcebc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/767a83ce9f8c706abd2805ce928edaa8.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"公务员能力建设读本\",\"isbn\":\"9787544136150\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5f5b7ede50208c324beb0585d44f775e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/63f0b7a764fe85dc9f77d40b322ae085.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"最新基本养老保险政策问答\",\"isbn\":\"9787504584328\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"wxfile://tmp_0a989e56131a36b448038e604e37b3de.jpg\",\"https://img.pddpic.com/open-gw/2025-09-14/dedb6e95af535158eb07c5a7244d8237.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/d55dc90ab7d1dcee39cf80519a9ddad2.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"党的十七届五中全会《建议》学习辅导百问\",\"isbn\":\"9787509901564\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/920643723c023e6c860a152d2d95bad6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/4fb36e176640248881329cca807e2230.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中华人民共和国公务员法释义\",\"isbn\":\"9787801825124\",\"price\":479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/59c74bb29bf59a618ea3b3a3f8bf025d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/dcca7286bd758a84709a0787c82687ab.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/99bbdc60c120dbfed9e080f89eba1ee2.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"劳动合同法重点解读及实务应对技巧\",\"isbn\":\"9787509308332\",\"price\":1755,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0ae887a27582cf45312c839e1a23d0c3.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"工商法律文书大全与制作详解\",\"isbn\":\"9787509345122\",\"price\":634,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/7887b8db79bd2770349fcd15c0155d06.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/084ccad452fddc0408193ec49814561a.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"养老保险案例\",\"isbn\":\"9787504578532\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/ff94f474833df3a98364cf5541b0208f.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"《一看就懂!图解经皮毒》\",\"isbn\":\"9787500147084\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1bcb8a5d81222b7fa69a74b640d4807d.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":0},{\"goods_name\":\"语文教学参考. 三年级. 下册\",\"isbn\":\"9787801843944\",\"price\":978,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/db37e6028b65384745d39584a8cca9cc.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"张抗抗作品评论集\",\"isbn\":\"9787531320616\",\"price\":2949,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/885ff8830812369decb8b1a4b19eaf89.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/e6b0e4668bdfa42fd7f721c2b4adbb53.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"梁家河\",\"isbn\":\"9787224127232\",\"price\":1250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d74a8dd62b4850ed6b89e68eea6c4f4c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/e12e053906a011bf00212dbd33123e35.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"维克多英语听力进阶. 七年级. 上册\",\"isbn\":\"9787107247125\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d5f22b04ac89605d8e5e8113cc7f484c.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"我写我心\",\"isbn\":\"9787562156734\",\"price\":234,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f0aba96114369e73b872b3a43c810171.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"探险家沃斯(精装)\",\"isbn\":\"9787533961985\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"wxfile://tmp_1c19cbd8b8d4483bce03103efcca8580.jpg\",\"https://img.pddpic.com/open-gw/2025-09-14/44dbbd449e77cbe7586dad73fd76af59.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"我与思政课教师的交流\",\"isbn\":\"9787563239733\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9bf626596a7ba7dc65770817a15f6973.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/d0f1a1c1357ee2339aa838938cc1dbe0.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"华罗庚金杯赛培训教程.初中篇\",\"isbn\":\"9787308042789\",\"price\":3599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1a921b8b670c1ec53d95c74941ee6e8b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中医经典名著解读系列:《黄帝内经》和《本草纲目》中的女性养颜秘方\",\"isbn\":\"9787533762087\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/cf14f06ad6815fb7c38e1a9463da9f6e.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"农作物秸秆养牛手册\",\"isbn\":\"9787122180551\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9631a55be7c4ebe5ea41baba9887b495.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/0414386478a4bc52e5d2dde477c061a7.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"只想和你好好的\",\"isbn\":\"9787559468338\",\"price\":398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/592210591dcfc0b1a951e8a29d25b0f9.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"改变一生的座右铭\",\"isbn\":\"9787802113152\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1e5b76ca3dd1a473719ebe24fde942a4.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"辽海讲坛.第二辑\",\"isbn\":\"9787538281385\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/348b35cda50561e2203d290082aaa26b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"金星教育系列丛书·中学教材全解:8年级英语\",\"isbn\":\"9787541993220\",\"price\":405,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a8db14ea85c7adf34c7b1e665d8a3d4b.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"会说才能赢:论辩\",\"isbn\":\"9787205078478\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b331a24cc5a8a7cc21d0ca372dc3c6c9.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"内科护理学副主任护师 主任护师职称考试习题集\",\"isbn\":\"9787530479339\",\"price\":3019,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/677d2b9e38e8379ffdf0d8cc579b3fe6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/26834ef2f2295d2c66d1400648ad8135.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/bd99033cdd64d95d573d9cecfb9ea50a.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"护理概论学习指导\",\"isbn\":\"9787117064361\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0f5be41d54d99f69515b1a467b0ff6e0.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"护理技术学习指导\",\"isbn\":\"9787117057776\",\"price\":3599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/486d5d44e6d03690bba7eeb3efb5f1aa.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"病原生物与免疫学基础学习指导\",\"isbn\":\"9787117056625\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/57ee81f8e8b3cf01d5d52cfe26e7d10c.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"全国中等卫生学校教材:五官科护理学\",\"isbn\":\"9787117033107\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5f1e120edb9cfbff7823b284365af024.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"精神科护理学\",\"isbn\":\"9787117033619\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/afa6a30820bffb30f7127b67c40aaf17.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"药物学基础学习指导\",\"isbn\":\"9787117055512\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f2d2c9b33238f54e70a2c68f71c16f0e.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"辽海讲坛:第四辑\",\"isbn\":\"9787538284447\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/4b343e391f74890a1ce82be4c10c79e0.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"病理学基础学习指导\",\"isbn\":\"9787117056960\",\"price\":997,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6ef300a2f1b0253a42b0888c0056de00.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"绝顶\",\"isbn\":\"9787020037797\",\"price\":285,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/95a21bff1de34a64534c37a68c1ca7f5.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"新编公务员公文写作与处理实务\",\"isbn\":\"9787801589859\",\"price\":1348,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/8718b9586c492c787bf31ae1b4b5e19d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中医学基础\",\"isbn\":\"9787117049054\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/42716530f7732a6804a47a97745f4a1b.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"正常人体学基础\",\"isbn\":\"9787117043939\",\"price\":289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b7aadcc73e8d042197f528b3d7922035.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"计算机辅助翻译实践\",\"isbn\":\"9787118103557\",\"price\":1977,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6e3beec0c55bcb45061158a28c6b5b6a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/c09ee3de39efa3688449f8060778ea89.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/2d11772ff800b0d913223de8a1c4c514.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"建筑设备工程图识读与绘制\",\"isbn\":\"9787111148524\",\"price\":1442,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1372cd3da9c30b513bf40780a1851dd7.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"木本花卉栽培与养护\",\"isbn\":\"9787508208817\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/38a26215c079e67b95300c8946ae1d41.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"园林植物保护\",\"isbn\":\"9787111369219\",\"price\":1493,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/43c061f94277bad839d31f4c097b8676.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"建设工程资料填写与组卷系列丛书:园林绿化工程资料填写与组卷范例\",\"isbn\":\"9787802273740\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/bc39f525a627aa1b56b13c82cca00b9b.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"AutoCAD建筑设计与范例应用\",\"isbn\":\"9787302159445\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f45a249baaf06e0881a81524be711456.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"明月共潮生\",\"isbn\":\"9787530623329\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0e53491b67bfab72f212a5b7f7ea2eb0.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"西方商业银行管理\",\"isbn\":\"9787561714812\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f916e5d5b2aa457941fa826f9f784252.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"国家医师资格考试实践技能应试指南:临床执业医师\",\"isbn\":\"9787117124058\",\"price\":881,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6752f4efc0d9fedf956af52921ce05a0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/6ab8bd169179259e5a14d4c5a4b9cc02.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/891a1a01b0ca85b6fae52fb92c52d4bd.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"阿伦特与海德格尔\",\"isbn\":\"9787531322238\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/c75a3c3eff05692d386761f3149a23c4.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"波伏瓦与萨特\",\"isbn\":\"9787531322290\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/714b006dd719b11804936834c4c7b7a3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/4d3e7c6cfbfbda01939c8327025ca75b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"《万卷楼国学经典:孔子家语·颜氏家训》\",\"isbn\":\"9787547024959\",\"price\":438,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/e92cdd4f6cd0b3fed20477cc953f34a5.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"园林绿化工程\",\"isbn\":\"9787111140603\",\"price\":269,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0c98ce6694d19576f0b5a004d73612f3.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"二胡轻松入门\",\"isbn\":\"9787535245458\",\"price\":1031,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d821d6973e4115159dfaafbf75f9ad93.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"奥赛急先锋题库丛书. 小学数学\",\"isbn\":\"9787500765370\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/4adb4b9148e669bfb87d26d3f31b427a.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"天蓝色的彼岸\",\"isbn\":\"9787559628435\",\"price\":308,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6da6964bdb4a9d474024f5dd5a88dac3.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"山楂树下\",\"isbn\":\"9787533943806\",\"price\":781,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/be49672485ab4e27021a2646c0bda68f.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"新河北地图册\",\"isbn\":\"9787805525228\",\"price\":254,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/787570d388719befb25a2fe57bd32c4a.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"三角梅绽放的季节\",\"isbn\":\"9787536056374\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/8c43cdb6a70105a9b03d453c808a955f.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中考常用题型解题经典1000例.英语\",\"isbn\":\"9787561112908\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6baeac38fb9d82ea814a7c9269c2c145.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"中国历届高考作文精品廊——高考满分作文\",\"isbn\":\"9787500742357\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a37b957ece2e1cdb8edd61727db9e86f.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"课前预习语文二年级上册同步人教版 小学生语文专项训练一课一练同步强化训练课前辅导课后巩固练习册\",\"isbn\":\"9787573408945\",\"price\":264,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/24ed30c2bdbf1ef40e329b315487728f.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"课前预习数学二年级上册同步人教版 小学生数学专项训练一课一练同步强化训练课前辅导课后巩固练习册\",\"isbn\":\"9787573408884\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0bfec751a360d30f3f0b4728f494743b.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"书艺珍品赏析\",\"isbn\":\"9787535628336\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/941ebca8e362a52f6ef810c3d2ac6e36.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"最实用的快速查账手册\",\"isbn\":\"9787513600569\",\"price\":278,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/70044a84893000ead47d4ce9d666c81e.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"心灵鸡汤经典全集\",\"isbn\":\"9787504460943\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/af6509108ff8c2cc619ffb43acfb69af.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"习近平用典\",\"isbn\":\"9787511530561\",\"price\":1549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/43dabc1524427024f2aa939cce3d1b27.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"黄皮书英语四级 备考2019年6月四级英语真题试卷12套超详解全国大学英语四级真题cet4级2017年6月-2018年12月阅读听力写作翻译历年真题超详解\",\"isbn\":\"9787519253486\",\"price\":413,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5ebaf80eb2825a360e220cc44c5a9b8e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/3ecdec602720152d5b7567effddeb3cb.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f76cd3398d919c2aee180163c9c44e2c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/c56051d2f93a52a9efad23a38ed56c8a.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"曲一线 53初中全优卷\",\"isbn\":\"9787554156797\",\"price\":2719,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b8253acdaedb8bbc9b9c638116943f74.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/33789be492e33b38b0ac2ed8de1c881a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/4b3e2a0639b2ac42b90e30d104022480.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"企业所得税年度纳税申报汇算清缴操作实务:填报要点和案例解析\",\"isbn\":\"9787521802573\",\"price\":815,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5ea7f9e80e8c4116f712447fac245e2e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/4856035e7dcb9c4c0f462c44853da8f4.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"大学化学\",\"isbn\":\"9787030583178\",\"price\":289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/34da216d05926472290bd49a0b54e2c6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a1849af7d76c7f3717f826ad5b18a903.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"新版“律师业务必备”丛书:中国税务律师实务\",\"isbn\":\"9787511830142\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/915164d3facd79f9d350a2145d1fb196.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"高中语文\",\"isbn\":\"9787570217502\",\"price\":1632,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f3396bdc84c38851aaae5a09e1d311d9.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"特殊护理技术与手术配合\",\"isbn\":\"9787538127782\",\"price\":698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b4d3711c0904baf64c393250fd04ebf1.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"天上再见\",\"isbn\":\"9787539992495\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/8ee810964b51a5bb49efdcdf5a3070b8.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"医院成本核算\",\"isbn\":\"9787801571601\",\"price\":823,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/54f1d24801bd2631543d8976d9b63875.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"理智与情感\",\"isbn\":\"9787550245709\",\"price\":259,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/4566f3046fa8cb9e89eb3fa70306a744.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"个人所得税政策法规汇编大全\",\"isbn\":\"9787511890474\",\"price\":922,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/2d07f63d6d7369c6decd3320ef6d339a.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"像马一样思考:一个非传统牛仔的人生经验、领导力和同理心\",\"isbn\":\"9787111730880\",\"price\":2758,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/2ea451db9f13e429959e3225986f5e30.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":0},{\"goods_name\":\"物质极简 怦然心动的人生整理魔法\",\"isbn\":\"9787516809730\",\"price\":1243,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/34c0ce856b8dee497e7076b09ce5ae27.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"施工员通用与基础知识 市政方向\",\"isbn\":\"9787112207015\",\"price\":229,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/798a64849dd941f01654e67053693151.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"2023新高考物理真题全刷:基础2000题\",\"isbn\":\"9787302615910\",\"price\":2079,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f075560f38b8f1190939f97f35891889.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/0411e09f6850879d73238113fd058a01.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"对“老龄化是问题”说不:老年人社会适应的现状与对策\",\"isbn\":\"9787303109104\",\"price\":651,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/35419618e59da84617a6f679188040e6.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"后来,你都如何回忆我\",\"isbn\":\"9787550282469\",\"price\":1111,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/131fc003843586d23db9b1405dfa5ea6.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"球童学\",\"isbn\":\"9787563834068\",\"price\":1978,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d40a7a420b0cdc430875b1c610d8ab85.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"我是刘心武:60年生活历程之回忆\",\"isbn\":\"9787201053233\",\"price\":926,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/7ba4a19131d01ef01ba6a5029a2f793b.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"语文课超有趣.作文强化篇:三年级下册\",\"isbn\":\"9787213108150\",\"price\":224,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/04689c3d54e43d87e7e5e1c0a86e032d.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"曹雪芹祖籍在辽阳\",\"isbn\":\"9787806383476\",\"price\":1286,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b4df548bceff07ad155048be0326d83c.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"人之初\",\"isbn\":\"9787550223721\",\"price\":14408,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0a2e0000af1c7abb54685fb99b8f80e9.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"叶圣陶经典赏析.藕与莼菜\",\"isbn\":\"9787535870193\",\"price\":1177,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/3afd36234d38442ca8630bfbb0c30854.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"清代帝陵\",\"isbn\":\"9787807229810\",\"price\":1757,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a1275c50090fb07ad14bc6d318aedd54.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"葵花盘小分子肽、生物碱及黄酮的生物提取研究与应用\",\"isbn\":\"9787569218107\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/7bba07480b1188a3cc599f22cc38a849.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"遍地月光\",\"isbn\":\"9787530209523\",\"price\":1848,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0301d9c76147bc1c67c0b7dde579d9a4.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":0},{\"goods_name\":\"论语英译:Lun Yu of Confucius\",\"isbn\":\"9787806017548\",\"price\":7398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a02bea4ce40823a5bf288415824eba59.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"图书馆学基础简明教程\",\"isbn\":\"9787513080866\",\"price\":1419,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/36e8ad06efdbb9fcc06a4163474d234f.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"世界数学奥林匹克经典:奥数讲义初中卷\",\"isbn\":\"9787519295844\",\"price\":2223,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6b77f6ae229fb9f6a029c5619b912f6a.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"4年级上册(北师)数学\",\"isbn\":\"9787537124669\",\"price\":790,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/111ed9e1b2b782b62a656d21dc70366b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/bcb36320a6e30004155c741c86b7b94a.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"中老年健康长寿秘诀\",\"isbn\":\"9787515222660\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a518cb1136f7c4d32bbc99d6adaf3ae6.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"经典译林:战争与和平(精装)\",\"isbn\":\"9787544714396\",\"price\":1205,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/e09d654d9f61e70d4050a4693113d082.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"解构死亡:死亡、自杀、安乐死与死刑的剖析\",\"isbn\":\"9787805928531\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b37ca6ad5974ade7943c82b9e1cd99c9.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"兰花栽培入门\",\"isbn\":\"9787800221880\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d1d7c7b41d1b0811d82e52c2304fc8f5.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"华盛顿广场\",\"isbn\":\"9787560037745\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/e74e4fb5c24d3be6d29c43a13ef021e1.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"婚姻是女人一辈子的事\",\"isbn\":\"9787538553956\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d554f5248899920f2c2db98628b779fa.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"新媒体运营与推广\",\"isbn\":\"9787115541864\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/acd316294bc8fc9b06a15cebaf9e46d4.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"民间实用祖传秘方正版彩图版 简单实用老偏方民间实用土单方草药书正版\",\"isbn\":\"9787574211766\",\"price\":769,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/c42c4677fbcc659afc2bc048a41f6b62.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"小学生必背古诗词75+80首\",\"isbn\":\"9787549263110\",\"price\":270,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9a167087fa6d506c8757b60b8d3c65b5.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"陪孩子走过高中三年\",\"isbn\":\"9787550285392\",\"price\":769,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/14cad8465408c68ba5a010d1b79579dd.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"小红豆与街角蛋糕店\",\"isbn\":\"9787304081867\",\"price\":314,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/4cf22bb42c2d70f93edca144f3c72bbd.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"会消失的人\",\"isbn\":\"9787540478797\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/fc79deba7ce2351d3df1455e161db063.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"七日瑜伽:减压安神\",\"isbn\":\"9787538153705\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6d45513fc08f753da89922b08923fad1.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"七日瑜伽气质美人\",\"isbn\":\"9787538153699\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/54fede646a8d39f9f1e79b9ac0445ebc.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"七日瑜伽:美容美体\",\"isbn\":\"9787538153996\",\"price\":1639,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6b31add561bfa49f9f45d7a5eb3947cc.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"完全征服 Flash 动画设计\",\"isbn\":\"9787115157331\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/fa61870758219d324bf507c11bdfa815.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/cca190ba5002a3f9b7ad500faba03b15.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"Photoshop数码照片处理从入门到精通\",\"isbn\":\"9787500693949\",\"price\":1643,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f5795074c4488de66f843423aca70d2f.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"K线操练大全1:K线形态操练\",\"isbn\":\"9787546106854\",\"price\":1489,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1641977a95a5dcf73fce4ed8fead6ad1.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":0},{\"goods_name\":\"普通高等学校土木工程专业新编系列教材:弹性力学及有限元\",\"isbn\":\"9787562927174\",\"price\":1938,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/7f7a4524228ace8f4442088b1ec8a5f0.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"食品化学\",\"isbn\":\"9787810665018\",\"price\":277,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a030a6c91fe65d9ef2ca4b3952cbe258.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"概率论与数理统计学习指导书\",\"isbn\":\"9787109087927\",\"price\":5099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/2e40f4065408e5192972d107224f352c.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"概率论与数理统计(高)\",\"isbn\":\"9787109079489\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9be96108d172fb7059722287040f4519.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"形势与政策·四川版\",\"isbn\":\"9787514708875\",\"price\":211,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/63ff453fd7e3539e568ee0453e6f591b.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"商务英语教程\",\"isbn\":\"9787302574057\",\"price\":388,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/06f5de4bbd242fc11151c072a4bba460.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"全国中等卫生学校教材:五官科护理学\",\"isbn\":\"9787117033107\",\"price\":245,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d8daa98d5226c774994e104bd8b57d4b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/343d90e289040bbee71653d7341d5014.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/1d1efc5a4158f1987147895d3aa453ca.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/fabed095cb5a7a74343905457858447f.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"医学遗传学基础\",\"isbn\":\"9787534524141\",\"price\":329,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d3e5b1505de75a31674d05616a8ba7a8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/cfaaa24e9df4b09e80e38d5ea89ea57a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/ea7616dbf72ca2a0dd7c01f550425d1c.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"护理学基础学习指导及试题\",\"isbn\":\"9787117039888\",\"price\":4506,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5fb0ad2ffb396e6bbd7ba05e43575af1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5bdf0f78bded36744d366a0a00045af9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/11f031bc63c9c3489fc97b1bb341c80e.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"新编硕士研究生英语入学考试复习指导\",\"isbn\":\"9787810774475\",\"price\":505,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/30ef4fcaf309afb473892e84fb82db08.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/d09b56625b2962dc0bd9b9b3f8a964dd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f5cd04dc7eb1f548354b503e6274b6db.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"全国卫生专业技术资格考试·全真模拟试卷及疑难解析:护理学专业\",\"isbn\":\"9787802282216\",\"price\":669,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/7585abfb748bd74bcc9857f2f2cd5667.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/615dc99944a9c75e9aba58de8b0569fd.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"全国中等卫生学校教材:免疫学基础与病原生物学\",\"isbn\":\"9787117033022\",\"price\":549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f62e2faaf4b98c9bff89786f39801df3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/e87d84b74587ba9ac8e43301deed0ac5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/b55fda977f212a6b85f7103e2bb8e2db.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/63c779c91c0ba4fc9e549fc966c6370d.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"正常人体学基础\",\"isbn\":\"9787117043939\",\"price\":295,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0a8489619644bfe4433cd033f73037a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/59d57be90e504c348ed32b53e3188efb.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/adda11557669c026ac53179539fb63c4.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"药物学\",\"isbn\":\"9787117031219\",\"price\":455,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6340f62032071b06a65b0f60d37d294e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5c483490fc233ceb31dd66d13fe25056.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/1db5f87e3c897cbf6b4678bf567fc94a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/35fb58cc992537bb5f55279ef9eafeb4.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"康思英语听力•高一\",\"isbn\":\"9787553332574\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d9edac9b3e4b3ed766e1766ec2433f26.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/2ddd6ccbf8a9de8307960deeb7a6a9d3.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"新教材教材帮必修第三册数学RJB2021学年适用--天星教育\",\"isbn\":\"9787559058850\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5aa3bdabb1272173764d0544005467a1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/3409922280e58d5f41614afbd5521a50.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/55827a82efbf4806d030ee649ae2d5b1.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"10年高考真题最新模拟听力\",\"isbn\":\"9787511237835\",\"price\":1501,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/896ffc0487e3049a44b488e5d8b15953.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/d72ca07e21f9ee822ad7ad446f2aa9e8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5b7e9c685153e9684da5799e5c5c8121.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"开明出版社小学六年级下册语文重点知识集锦人教版归纳同步基础点汇总手册考点总结课前预习单\",\"isbn\":\"9787513161435\",\"price\":1296,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/994590940e225d242b20763360ca37e9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/6a8cdcc24a3e9b07c18fd775e2f6e250.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5555fd79596daebf71afc082d170c853.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"教材帮 必修\",\"isbn\":\"9787559058973\",\"price\":1096,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/e57fba36212742ca37e78aea7e6951cf.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":0},{\"goods_name\":\"学前500字\",\"isbn\":\"9787531541752\",\"price\":1119,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9e91275c8d9e8c1b4c8b6125e66cea0e.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"可持续发展管理\",\"isbn\":\"9787030164599\",\"price\":3243,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/37193139b0143b125b3e4bc57b98d5c1.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"玩出专注力·只有一个·邦臣小红花\",\"isbn\":\"9787510163494\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6686a6c576ddfc6b7a1bade5808c8a1c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/b4402e4890f4ae124bfb3153ccfeedfc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5bcf1043af166fc3176a9027938ee4ae.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"玩出专注力·谁不一样·邦臣小红花\",\"isbn\":\"9787510163487\",\"price\":550,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/c6efc794661d8506d5eb9255729be760.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/01d820e2f96a8c092cbfabb46bae9b7d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/7bffa860af8f669f843257b7345b3a81.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"发现辽宁\",\"isbn\":\"9787205073602\",\"price\":2499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/51bff85ee2cc50f541d62ca629856199.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-15/7457333ffcad13fdaaf03a1c868892be.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"仿妆女王画出超正大明星\",\"isbn\":\"9787122260451\",\"price\":554,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/de0f1739dc6346ddbac5a675423dcf3a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-15/95fae923105dae2fcfdb0a61cb364368.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"曾国藩成功学全书上下\",\"isbn\":\"9787801006349\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/4ae3f18d68bf7abd21df1e50fdb4afb7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-15/18bf84546e6bcd90bb01dc1bad0cd2d0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-15/ccbc374d64ddff5f805230b0be07fccb.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-15/24a47bc5090a5bead34e02f7ffff0753.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"宴遇\",\"isbn\":\"9787512679238\",\"price\":1298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/230a8baf4c5b42bd2401d98270269465.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"平常心:幸福人生的智慧\",\"isbn\":\"9787510702327\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/1321876568f32cac056e065dcd8c5eb6.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"高考志愿填报指南:高校简介及录取分数线速查\",\"isbn\":\"9787122383877\",\"price\":1180,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/613dfe183243db33d41504573a34ba4c.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"赢在转折点\",\"isbn\":\"9787511909381\",\"price\":385,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/39261870a4aaae340bf5157ce85c6714.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"斗气不如斗心:调节情绪释放心情的心灵法则\",\"isbn\":\"9787506493918\",\"price\":886,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/6aa71f44727d868bd72660013c3fd2cc.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"边读边悟《易经》\",\"isbn\":\"9787801209580\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/47bb19f0346439713ae7575788411b2e.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"好心态、好性格、好习惯\",\"isbn\":\"9787113164119\",\"price\":566,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/20dba61b1a24b127535daa15c5aa5f6c.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"身体健康手册\",\"isbn\":\"9787113171896\",\"price\":1098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/0c55adf29cd4b60b8e6c302dcc3e8a3a.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"约翰·克利斯朵夫(共四册)\",\"isbn\":\"6782316849287\",\"price\":1479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/119d3305dbde6e27e96c4c7bfafe50e1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-15/b7605101aeade06dc88689be785b5f46.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-15/da7e34ba2316b091292e1cb16833f242.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-15/d67972417c89d3fb0b5ed86bb0343bfd.jpeg\"],\"location_code\":\"NS-B5-1\",\"inventory\":1},{\"goods_name\":\"全世界优等生都在做的1000个思维游戏\",\"isbn\":\"9787511318688\",\"price\":1619,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/9f1adf3ed27f1e5f9ca4f74f8547b853.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"润物细无声\",\"isbn\":\"9787565225987\",\"price\":589,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/e1c80296d667d73bf4b6224f1724e077.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"胡雪岩/长篇历史小说经典书系\",\"isbn\":\"9787535484079\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/ebe11ada550020fd947766570174432b.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"运气提升法则随身自查手册 : 你是自己命运的设计师之二\",\"isbn\":\"9787512653399\",\"price\":689,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/a17c092c76a61428e1aba5a3b4cf8fe5.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"交响乐《巍巍太行》总谱\",\"isbn\":\"9787505983700\",\"price\":1893,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/7f9a741edd0149e194e285516916810e.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"世界弹道导弹\",\"isbn\":\"9787205077754\",\"price\":695,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/f22dec1a8d3aa0a4010df4b3366cf8a5.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"世界地图集\",\"isbn\":\"9787503135194\",\"price\":2036,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/6a3d0fdf6759f274810f5a86993383f3.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"中国志异全书\",\"isbn\":\"9787218170091\",\"price\":2836,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/9f07295a13f7b4d3026ae9253a009ea9.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"思无邪\",\"isbn\":\"9787020117000\",\"price\":594,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/dc50013d9ff09f9c703e2d0d0c0355b4.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"膳食(精)/古人的日常生活\",\"isbn\":\"9787576309461\",\"price\":828,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/1f9f9120a8cacf7b185e3aa15898aa48.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-16/050b8eb9d94a8ba0b9e0cceddd5b9caa.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"古人的日常生活\",\"isbn\":\"9787576309447\",\"price\":1269,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/6a7d7d981567fff350e64b93f3d8a810.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"茶饮(精)/古人的日常生活\",\"isbn\":\"9787576309478\",\"price\":628,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/3718057e04c861d1bdfe37884eee1996.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"服饰(精)/古人的日常生活\",\"isbn\":\"9787576309454\",\"price\":457,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/9365257e710ad05620bf6b3df678f01f.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"长安月下与君逢\",\"isbn\":\"9787505758025\",\"price\":984,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/6148b9d5aa7ebf9c8515faa67f9027af.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"藏在地图里的古诗词\",\"isbn\":\"9787557203351\",\"price\":2000,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/22d6ccdd2358d26027188b201d02fa25.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-16/0400c89f61e351386f0dca4a96af656f.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"奥赛急先锋ABC卷:英语\",\"isbn\":\"9787500765479\",\"price\":1599,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/dc9fa3d7ad318c99bd97e49204d3e638.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-16/eb100c5334d8523e56b687d9126a1c60.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":2},{\"goods_name\":\"净宗法语大观\",\"isbn\":\"9787802441002\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/a39dc96b440efec9288546e4438a2029.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"《书法常识一本通》\",\"isbn\":\"9787547012536\",\"price\":989,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/48fa4313461c12af14c6eedbe7647728.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"中国广播电影电视发展报告/广电蓝皮书\",\"isbn\":\"9787504383303\",\"price\":407,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/f5c3daac30454ad5650b4c977a801149.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"审计署审计结果公告汇编\",\"isbn\":\"9787511924889\",\"price\":880,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/68b455c6f74c6e84e9fb465388b4a57f.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"短视频运营实战\",\"isbn\":\"9787115554093\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/be644543ca4e3390d94c74257ede1825.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":2},{\"goods_name\":\"海子评传\",\"isbn\":\"9787538720655\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/dbd7dd68c7b5123538bb5b3185bc4ceb.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"循吏千年:百名清官启示录\",\"isbn\":\"9787205097646\",\"price\":2999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/2a81d1e21e5c54fdb1fa12c0a240696f.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"北宋辽金风云人物大观 汉朝的那些人\",\"isbn\":\"9787540219734\",\"price\":438,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/c2702883ae501f036a5e3c0ac7a0f2b4.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"北宋辽金风云人物大观 宋朝的那些人\",\"isbn\":\"9787540219734\",\"price\":238,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/477db7aa197ca50f070da0477c6b42b6.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"中国神话传说\",\"isbn\":\"9787218163406\",\"price\":3729,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/3916173efe22c27159604600cef081a0.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"猫饭奇妙物语\",\"isbn\":\"9787503037139\",\"price\":1553,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/c7d74d7157d6c115531729d05cdf2b83.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"全国博物馆通识系列·一本博物馆:湖南博物院\",\"isbn\":\"9787220134371\",\"price\":3399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/06aa4b86b04f4983bab271945b1ef91b.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"金融书法文集\",\"isbn\":\"9787505978089\",\"price\":3516,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/41cecfd4d10d06c235a3e0e1890364c2.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"西学东鉴:西方马克思主义评介\",\"isbn\":\"9787508717456\",\"price\":4919,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/d045f10eca1d3d9fa2a12c3a4a879022.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":4},{\"goods_name\":\"借鉴与创新:西方马克思主义的启示\",\"isbn\":\"9787508717449\",\"price\":4068,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/b557624d05721b80f618b7d4bd2bd0d3.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":4},{\"goods_name\":\"中国国防人力资源战略构架\",\"isbn\":\"9787508717463\",\"price\":2599,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/e6bf243c5a522a6d7014febb1f5eb66c.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"中国军人时代精神审视\",\"isbn\":\"9787508717494\",\"price\":1099,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/b0f140e3696061191bde015e1940ad63.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"你说数字我测运:百数易典·数字占卜\",\"isbn\":\"9787807298472\",\"price\":1947,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/5e7773d9c2d5212fb33349e8f1233c08.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"新东方 词以类记:IELTS词汇\",\"isbn\":\"9787553692920\",\"price\":801,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/5ff022af7d712c1fe0f736faf7701625.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"中国广播电影电视发展报告/广电蓝皮书\",\"isbn\":\"9787504383303\",\"price\":416,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/8034dca8df6d306270345b8eee5e335d.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"旧中国海关税务司署通令选编(下卷)\",\"isbn\":\"9787810650007\",\"price\":296,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/8ddb0913e94b134f978b77b84f7ac1a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-17/6f2788d8a3e507e9b0a8595f230652d3.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"货币战争\",\"isbn\":\"9787508608686\",\"price\":970,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/6783b6f125905678d69c8878e9ee9181.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"古韵京津——旅游随身小百科\",\"isbn\":\"9787538134247\",\"price\":294,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/9605951814e82c0bc02dba44afaba1b8.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"房地产合同范本与实例\",\"isbn\":\"9787806776841\",\"price\":1078,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/c3385f783fc7bb4a7a41299bd3f959bf.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"中共早期领导人活动纪实\",\"isbn\":\"9787801432551\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/cc89d48b11ddeb627e5ad8afccf1a170.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"浪漫北方——旅游随身小百科\",\"isbn\":\"9787538134292\",\"price\":933,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/61bc5c003433a57a49a5475261dc9beb.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"《社会主义从空想到科学的发展》导读\",\"isbn\":\"9787503562884\",\"price\":1046,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/2f16a0c879198b48a211178b34106649.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"钓鱼实战技法\",\"isbn\":\"9787205044671\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/5bb27f1f5db8165db247c5871c04a821.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"你就是脸皮太薄!:克服羞怯心理的85个实用心理学法则\",\"isbn\":\"9787569901153\",\"price\":199,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/a6a152d91c992b0e3f1fbcb1e385ea4d.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":0},{\"goods_name\":\"李智勇高考降维作文法\",\"isbn\":\"9787519451813\",\"price\":1395,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/cc6aedbdf54c00b2a0e63a31ab651027.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"生存互联\",\"isbn\":\"9787806014585\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/e3373eacb5e2fdef1285459dae52a864.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"双赢心理与双赢技巧\",\"isbn\":\"9787212016685\",\"price\":839,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/a364b8d7713a88046fae8fb064565192.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-17/bd48a127d3205275e44181d5edcd6017.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"李宁:创造一切可能\",\"isbn\":\"9787807291909\",\"price\":237,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/426e8a8c3f4bb0070b846665f4e8b6fc.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"本领制胜:改变一生命运的5项修炼\",\"isbn\":\"9787801701046\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/071a1e15a18d1800c2eb04965e23c9b8.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"眼科用药指南\",\"isbn\":\"9787122092502\",\"price\":5199,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/d651df89069591bceb4098768ff2f4b2.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"世界上最神奇的24堂情商课\",\"isbn\":\"9787121149696\",\"price\":4799,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/c5cb3fee54a8f528aa454f4783d8dd99.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"烟\",\"isbn\":\"9787806574133\",\"price\":889,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/887fbbabe743a574bb17ec60a7910e9f.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"认知驱动:做成一件对他人很有用的事\",\"isbn\":\"9787115569455\",\"price\":1109,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/9200fd02d49a1a808092a76a218a270f.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":0},{\"goods_name\":\"小小说精读\",\"isbn\":\"9787305054419\",\"price\":803,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/65039b3472d5fded1412645299bc0b29.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"这么慢,那么美:慢一点,才能发现幸福的全部细节\",\"isbn\":\"9787505735446\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/4e26dd50567fe8daa075902016591193.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"红楼梦 小人书\",\"isbn\":\"9787532244034\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/ac21eba91297e136292ed1732c150d91.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"欢乐嘻哈镇 11 智斗黄鼠狼\",\"isbn\":\"9787556811403\",\"price\":1500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/f36f9231b81e27323d50cff6b822843d.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"10岁我最大I我的妈妈是公主\",\"isbn\":\"9787531337447\",\"price\":1333,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/92796899437f51bab2f5c1812eac8569.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"10岁我最大II懒蛋老爸大揭发\",\"isbn\":\"9787531337430\",\"price\":235,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/8f243824597fc91301c9084724d4554c.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"小屁孩朱尔多·变身蜘蛛侠\",\"isbn\":\"9787531337614\",\"price\":1489,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/35f48188c3d230305b915bd97ac596f3.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":1},{\"goods_name\":\"小屁孩朱尔多·有个秘密不告诉你\",\"isbn\":\"9787531337621\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/377d364f3c894609bc0c57a63a6a6530.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":1},{\"goods_name\":\"小屁孩朱尔多·决斗班长\",\"isbn\":\"9787531337638\",\"price\":3679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/c27b3ce364d61c1d355f25aa793501f7.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":1},{\"goods_name\":\"儿科常见疾病知识问答\",\"isbn\":\"9787810860680\",\"price\":1977,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/452490b3e2e642688ff098132e130a0c.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"(14版)掌中宝—高中英语必备短语(全彩版)\",\"isbn\":\"9787551550789\",\"price\":472,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/2cec07bee25508c5e677504629e300e0.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"终极米迷口袋书:惊奇世界\",\"isbn\":\"9787115402578\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/e831af4303eb8762cc4503205762b83f.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":1},{\"goods_name\":\"荒诞故事集:耕林文化精选绘本\",\"isbn\":\"9787547000724\",\"price\":985,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/b261b49a7979ae2b5b9574a5e5dc4668.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":1},{\"goods_name\":\"幼儿社交能力培养立体屋:玩具店\",\"isbn\":\"9787556048120\",\"price\":407,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/474b2de946f6a3e68352f523b99ff838.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":1},{\"goods_name\":\"中国古典神话传说和民间故事 黄鹤楼的传说\",\"isbn\":\"9787559549358\",\"price\":634,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/621e3610e5402de124828b6e7253dfe0.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":1},{\"goods_name\":\"童年/教育部统编《语文》推荐阅读丛书\",\"isbn\":\"9787020137398\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-18/6ac5a88c79996815d14e377f5f29c113.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"小学生作文500字一学就会\",\"isbn\":\"9787513815482\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-18/bcecc6e44b38202329a17ddabff675d4.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"做个懂事的男孩\",\"isbn\":\"9787506489942\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-18/848192a39e0b3769d6a25942014cce6c.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"药物基因组学与个体化治疗用药决策\",\"isbn\":\"9787117237345\",\"price\":791,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-18/a9192db058cf4249fb612c7cd1893ad1.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"零基础素描完全入门教程:轻松学素描\",\"isbn\":\"9787558067952\",\"price\":400,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-18/03c671df29792c655eea9a5a85edec6c.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"食物相宜相克2000例\",\"isbn\":\"9787501997411\",\"price\":970,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-18/8bc140a7fa518c3819c95f24b90c811e.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"英汉词典\",\"isbn\":\"9787119047256\",\"price\":1503,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-18/59a3de4af3e2a6ba3151eaed8fdfaeb1.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"我爱唱英文童谣\",\"isbn\":\"9787545060607\",\"price\":1682,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/75a7cba9211ed4f4d661e7078a9ac9b3.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":1},{\"goods_name\":\"迪士尼明星益智拼图书—和米格一起去冒险\",\"isbn\":\"9787556834181\",\"price\":1088,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/94dd1470bc63a23ab12624fd0dd7179b.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":0},{\"goods_name\":\"乱世佳人 上下全\",\"isbn\":\"9787532719143\",\"price\":600,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/77619a7171953002a5055ee44282a5aa.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-19/9dd9d8f832ffab59649dcdb9c3055310.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-19/84b7ee54f9036faec848243ccddd01a0.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"男人的超级幽默\",\"isbn\":\"9787502821852\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/a4a1727a0b157011c90ccaf5edc38c7d.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"邓文迪:女人明白要趁早\",\"isbn\":\"9787512646131\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/0049b1c300bcbea1f4008e7cdf08900a.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"大话红楼\",\"isbn\":\"9787535431820\",\"price\":844,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/e5299ca6079046439d49fbf308b0dd21.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-19/945088c067f57c8d7f054dfbe9473a84.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"老麦咖啡馆\",\"isbn\":\"9787508636566\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/c798e8f108c89ca9eb22d5d8ddb17869.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"黑梦\",\"isbn\":\"9787507516685\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/40af39b0c1ac96649ad3cdd905f9f210.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"图说老年生活:画册\",\"isbn\":\"9787208023789\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/44c6b44b7c14507c81ecfa1f376fb18d.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"现代家庭医生\",\"isbn\":\"9787544108157\",\"price\":1499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/8dffab123d97192c912e3c82c62ddee1.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"地狱的第19层\",\"isbn\":\"9787806796771\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/3c1dd14e5463b9ef7e1c59740ab066bd.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"心灵长城之歌:古代爱国诗词学习笔记\",\"isbn\":\"9787805667720\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/3b6675f665632387fae2905dd7cd464e.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"龙票\",\"isbn\":\"9787535427618\",\"price\":769,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/ca2c55dd403d009c6514a2a04ffdc038.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"沈阳百年:1900-1999\",\"isbn\":\"9787544113496\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/057723daeb6348fdcc0f6882d08bfc1c.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"格列佛游记\",\"isbn\":\"9787544710725\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/2a10d5a9fdb9e71660d7572a4b767483.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"老新闻\",\"isbn\":\"9787801420893\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/5d9b5e71bd20a10de7b871982260a056.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"股功诀技\",\"isbn\":\"9787806329825\",\"price\":373,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/9ce11bdcd6b40bd942f2c9e66fbdbef6.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"遇见未知的自己\",\"isbn\":\"9787540475017\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/ff2b31a6073fced4a7f76d79b17e4581.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":2},{\"goods_name\":\"企业国有资产法理解与适用\",\"isbn\":\"9787509308165\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/3e4cb15cba5de9daa0a20592c5505fd9.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"选择的自我-一位哲学家眼中的人生\",\"isbn\":\"9787200028010\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/3d120293bc768937417c888c093a701a.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"新概念英语4:流利英语\",\"isbn\":\"9787560013497\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/716e4f1fd08543f036bc0bbfed399cf4.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":0},{\"goods_name\":\"儿童心理学\",\"isbn\":\"6785721237852\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/7cfe007d052801f6ae38190b0b07f376.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-19/75adc631ea2ca74b3f6d24fb857b3e6a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-19/305b92d1321b4590df2e9a0ef6e45877.jpeg\"],\"location_code\":\"NS-B5-1\",\"inventory\":1},{\"goods_name\":\"红楼梦诗词解析\",\"isbn\":\"6787679217542\",\"price\":949,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/e3808d143950a3ab1c99b61434dd4c1a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-19/cbe3117129b5fa80e45d8a2d46f73ab4.jpeg\"],\"location_code\":\"NS-B5-1\",\"inventory\":0},{\"goods_name\":\"新概念英语 新版3:培养技能\",\"isbn\":\"9787560013480\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/00dea331349cad1882db57436f710a44.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"天艺·木纹图典\",\"isbn\":\"9787531427940\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/023fafeab1a31fc30a1e128a45121779.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"新四大变化:花卉变化\",\"isbn\":\"9787531423430\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/f3b9720cbc42ebf8140426c66904e37b.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"新四大变化:动物变化\",\"isbn\":\"9787531423447\",\"price\":1408,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/d70c78d371a9815b55154c834f586dc0.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"天艺·水纹图典\",\"isbn\":\"9787531427933\",\"price\":1428,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/9eb88c4f2a2f53771bc2d9a2680aaeff.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"天艺·冰花图典\",\"isbn\":\"9787531427957\",\"price\":409,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/59bf25c2217d1c9ec854d12cb0c28ba9.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"故宫日历\",\"isbn\":\"6789656882318\",\"price\":768,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/37e21566a01a1b5491c9193933f76249.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/81306d426d4285a1c2a8f2624f7c7216.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/e70fb4f30de6cc892abf2f01c0ade323.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/a46b61aca277e981cce9b9a1541a6030.jpeg\"],\"location_code\":\"NS-B6-2\",\"inventory\":1},{\"goods_name\":\"故宫日历\",\"isbn\":\"6784528974953\",\"price\":634,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/f648a9d72e4036e24cbd871aa43169b1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/a3c77cb9f9abd36a246b67c2d3260dee.jpeg\"],\"location_code\":\"NS-B6-2\",\"inventory\":1},{\"goods_name\":\"小学生作文实用技巧一本全\",\"isbn\":\"9787544173018\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/387e438ee6092a242ceac84c77127281.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/b3068a088939b98d283ecc67b24c8c7f.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"红色通缉令:长篇小说\",\"isbn\":\"9787311024253\",\"price\":218,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/59369341aeb1d3c0eed84e6f94830e8b.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"长篇职场商战小说:首席执行官\",\"isbn\":\"9787511301420\",\"price\":459,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/b3d2a8a20badcbb754b2ab3c7d33db0b.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"单面人\",\"isbn\":\"9787807129851\",\"price\":1419,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/6231d517eb6f5e4d3ae4f31d3b899b9c.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"电动自行车四大件维修速成\",\"isbn\":\"9787115165022\",\"price\":2499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/a93fdca6183764d92e41a57142a6ff4e.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"临床药理学\",\"isbn\":\"9787040279009\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/50f3d9b96ca9f342fb93cdb593cf0206.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"内科学:供8年制及7年制临床医学等专业用\",\"isbn\":\"9787117069069\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/274a7e826a90eda56613915683e9d8db.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/cb65cd07cd4b555ccc45ef061a5957e1.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"劳动法律实用大典\",\"isbn\":\"6784298317994\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/7ea901e33360576f7b9969a971710f9b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/88f5c14de1357bd84df2555c05e80c37.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"中国共产党 90年\",\"isbn\":\"6784018073627\",\"price\":2249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/ab274fefe74887f2288557bed7c76485.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/c26b78510bd1ee25d63a7214d33eefe5.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"辽宁省志.广播电视志\",\"isbn\":\"9787538128055\",\"price\":4019,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/bc7b04ef5b22e277f5732c99e4f6c1e7.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"辽宁省志.出版志\",\"isbn\":\"9787538127560\",\"price\":2308,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/24bce0ba47ead163d72c3c820ac152a0.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"爸爸妈妈,这就是我自己喜欢的!\",\"isbn\":\"9787521713695\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/b5d5dc839d68c9299065532123d47cb6.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":0},{\"goods_name\":\"幼儿心理安抚绘本\",\"isbn\":\"9787508688022\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/22c1c866e93251038d2922f7da4cdfb2.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"爸妈不是我的佣人小熊孩励志快乐读书彩图注音版一二三年级老师推荐小学生必读课外阅读儿童文学\",\"isbn\":\"9787557022303\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/3560e6ae304bb21015c2fc9ef4b07991.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/1ed335174628bb050cd3113cff24e305.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":0},{\"goods_name\":\"诺贝尔幼儿科学馆\",\"isbn\":\"9787556407002\",\"price\":880,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/86cbb49edf02050f6cb84374121cd67b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/0b59dbf009604e9bb86a46a3a1de76b4.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"牛虹\",\"isbn\":\"6783610146521\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/755e86e38bd3c690faba7a459e445092.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/7820cb9cc61ecbfc0c4bca6db83083ef.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"长江之歌 胡宏伟作品选\",\"isbn\":\"6786185614512\",\"price\":2279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/012c9581f3e055215a612e510a720890.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/424458d19c195d7c7dd320bc8f9fa7e3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/2e64b171282bd04d96786fd3893c7726.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"清朝开国史研究\",\"isbn\":\"6789508010975\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/c25809b085c000fbc379cf3f077dc4e4.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/e5306acdf0898224f683ae1d5ac066ae.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"后水浒传\",\"isbn\":\"6788956044788\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/9e7c64ebf140bcefcf2b54e0b18ce1d1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/b788750ba11db1a4d07d46d9fd0cbd69.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书 1\",\"isbn\":\"9787535882011\",\"price\":199,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/08c5f35f43aff7001199c563d72d61a6.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535882004\",\"price\":199,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/764b296b8f788b4c9638407271095386.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书 3\",\"isbn\":\"9787535881991\",\"price\":199,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/25da594e42ffd8b5f17d9621ba435134.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"儿童百科全书\",\"isbn\":\"9787535881984\",\"price\":199,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/1468fcb197d8eb4a5ea6b79c9e8b01a7.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535881953\",\"price\":201,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/16f53648ba6019b933b38300f316d6b9.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书(9L)\",\"isbn\":\"9787535881915\",\"price\":199,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/4d77c01eb91b60e7f80c4742bbeb8cce.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书 8\",\"isbn\":\"9787535881922\",\"price\":199,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/bd7e0f325251ab1488d59d371c81cbd1.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535881939\",\"price\":202,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/bb4d8cf93173966c608b34de164f90c2.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535881946\",\"price\":195,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/b7dd2c1b0bb5b69001cd91d52edc5e44.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书 16\",\"isbn\":\"9787535881854\",\"price\":199,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/773e7c2709d8219be115b6696f36440a.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535881861\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/7ec03908be25fba72d873c78ffda27e1.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535881885\",\"price\":208,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/8fef01979fc05845cf334653c7a2eec6.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535881892\",\"price\":207,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/979c4619a02f6cda4f254905abc103e6.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535881878\",\"price\":199,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/ab825eda1446ce8852e88995fe888066.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535881977\",\"price\":193,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/2ca6422d4ef53a5306fde3782b3bd67f.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"沈阳电业局志\",\"isbn\":\"6786656153067\",\"price\":4149,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/3670e4f41dc476cf31efbeac6b736081.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/ce12545c7a809de51e5132f8b91b0ed7.jpeg\"],\"location_code\":\"NS-B6-2\",\"inventory\":1},{\"goods_name\":\"小花仙魔法换装PARTY:智慧露娜换装\",\"isbn\":\"9787535387172\",\"price\":3599,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/357dfbe8a5a65c2bf18a7907827414f9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/ffbabd20cf81f9ce820616e378319267.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/5171b2f43f74187ab39221685875bcdc.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"旷世名典全套\",\"isbn\":\"9787801462909\",\"price\":63399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/5273fc2a831669936e5c301081f7b7f4.jpeg\"],\"location_code\":\"NS-B6-2\",\"inventory\":1},{\"goods_name\":\"魔法学校2\",\"isbn\":\"9787531337485\",\"price\":397,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/6b50d02c13fcbde4fb55586c3ca139f9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/0cc3483bbdc1c95152774d882749f6ff.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/aa2ce643f7aaac20832c4204c788efda.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/b26bd05d697163de074875e12e06896e.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"家人营养食疗\",\"isbn\":\"9787806396117\",\"price\":3297,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/164d9d6c8eb00d9de5bdf28678d01295.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"#张韬书法篆刻中国画作品集\",\"isbn\":\"9787538233353\",\"price\":286,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/7f76647f24d74147f2412638c30f81ef.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"冰波奇妙系列——毒蜘蛛之死\",\"isbn\":\"9787531570561\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/6ded0d134da83c0e5600b642670b72bb.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"蠢人蠢笑话\",\"isbn\":\"9787501523610\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/890ca290469dfe1fc569d8ec857082c0.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"电动自行车四大件维修速成\",\"isbn\":\"9787115165022\",\"price\":2549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/db4907485c9b0731ab1fba7d646e35ee.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"我叫刘跃进\",\"isbn\":\"9787535435811\",\"price\":569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/ca8af3bdd814751ed1369a9b2f5acc31.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":0},{\"goods_name\":\"情商这门课,只能父母教著名教育专家唐雯倾心打造\",\"isbn\":\"9787559471918\",\"price\":1228,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/bce23e8d6d322bf1949d7276b09395bf.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"电动自行车蓄电池使用与维修\",\"isbn\":\"9787115162069\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/de1916f364a7f22010fbc46cab362d7f.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"动物探索\",\"isbn\":\"9787517002369\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/ef0b63f4ea86881aeca1087c7104dd6f.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"自己动手装修住宅\",\"isbn\":\"9787112035830\",\"price\":1575,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/589a34047c3b13e96f0c9e4002446ee0.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"罪行与宽待:原日本战犯反省绘画集\",\"isbn\":\"9787554907474\",\"price\":894,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/26040b3ce8bafed3bd6e4e058a236e39.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"儿童习惯管理与性格养成绘本:愉快出行\",\"isbn\":\"9787518071876\",\"price\":2286,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/19b166a0d4b8e2957f3517299027ac5b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/239d85137c66098d7e3b16b2f38f5697.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/b9c89cabeb08a97016b4dbcdcced31e6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/ee4cfe5f1ca06e0328dfcab0d11587ef.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"消防安全我知道 交通安全我知道\",\"isbn\":\"9787518071746\",\"price\":689,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/026e68afac4e6dc6f49199c4edcb4df0.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"走过半个世纪 笔会文粹\",\"isbn\":\"6784964883226\",\"price\":529,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/9f1188b899ba8430414e4dbc3262a3a1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/add22ddb29701e91e096c9a8a6fed094.jpeg\"],\"location_code\":\"NS-B6-2\",\"inventory\":1},{\"goods_name\":\"马克思生平事业年表 1818-1883\",\"isbn\":\"6789326051468\",\"price\":1281,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/029d8ed761a4b509ce9df36d3b2588de.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/ef8e81f8168c31e462c10f1bf5df80a1.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"约翰·克利斯朵夫(共四册)\",\"isbn\":\"6786305075125\",\"price\":1698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/99786fbb9dea41125be02e9a4d22839a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/c3031d22b768875804e2d26917be677f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/e4e73813c8245770d51557736a3deaca.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"青年无线电实用手册 吴志功王昌辉耿文学\",\"isbn\":\"6780772836559\",\"price\":959,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/c168b9611e929298f0a811940fa344ff.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/cacb2af75bc7e69e026c1d96679ee7e4.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"红旗飘飘(20集)\",\"isbn\":\"6788299759764\",\"price\":289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/a8b0fe5f8cd217618710e9ba4dc844f3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/919b7cc44f41a2abd2517dd53ddf8c49.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"三种命运 [苏]安娜·里凡诺娃\",\"isbn\":\"6789962038808\",\"price\":1590,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/e1c02993b7915f351782e7322d00bb8f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/4344738c788d2de0f12d64cd5a82451b.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"明史通俗演义上、下二册\",\"isbn\":\"6782244664645\",\"price\":1798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/74e5bfe3e6f951ae0a18e2161ca8f676.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/ec3a951efb811b9eeabaa3a6a2d2637e.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"后水浒传 青莲室主人辑\",\"isbn\":\"6783393996030\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/6b0d91491c1434491eb4dfc98c08651c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/fd36a633b8e06e54854844d8c52fc732.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"清朝开国史研究\",\"isbn\":\"6783864193451\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/62ae19a20659d4783ffaa0267444d969.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/6a2f790bd2f3438800da318141544873.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"长江之歌 胡宏伟作品选\",\"isbn\":\"6789608069983\",\"price\":2286,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/52b1aac69d41095a3bde14225ac7a589.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/fa85bd8aeafcd811e41de505fc575b45.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"成语典故 (增订本)\",\"isbn\":\"6783136830573\",\"price\":1482,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/a7bdce180bf67e776746c3100d3ad121.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/55e24cc59e5d7cbee7013242510e08ff.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"面相与医疗美容\",\"isbn\":\"6788320343740\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/09a9175a4df09f0eeede787c4a890c9c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/63b26273e9a8fb0cbe55f54fbb86874b.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"简明中国近代史 张玉春\",\"isbn\":\"6787720967525\",\"price\":759,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/60bf35f5ee7fe5889a9e7aa9f3c21b00.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/964624e205cfacb3259feb3eed88eab7.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"鲁迅杂文选 复旦大\",\"isbn\":\"6787930128175\",\"price\":1599,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/a5c7c247b4d2de519225116934652bfe.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/37cdf49a0cd9a8ab29e9ced617e1aa5f.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"巴金选集·第七卷\",\"isbn\":\"6788831377444\",\"price\":1647,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/444b06db4d5d515cd089948e58f3d049.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/601afa7fd6a8c94231c7338d21d909d1.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"徐懋庸选集·第三卷\",\"isbn\":\"6782472950026\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/e09a903c5db36a5fc0626f824ac4fbc8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/043d5122f29a95a3d61960995d8661a3.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"靳以选集·第三卷\",\"isbn\":\"6783963257677\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/e75c10c125a088faa8bc1b3f0f849fec.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/8e886727b6917e10e5013dd759891c1d.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"儿童习惯管理与性格养成绘本:培养饮食好习惯\",\"isbn\":\"9787518071869\",\"price\":382,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/df4d5fafe49ed270614dcb5892be0cc8.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"儿童习惯管理与性格养成绘本:培养饮食好习惯\",\"isbn\":\"9787518071869\",\"price\":389,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/ef67c03eebdf43a7a20727f86e4926d8.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"靳以选集·1-3\",\"isbn\":\"6789427245093\",\"price\":11877,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/b7782d1f5436798cd8a73b0ed9f7cecc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/62b94e865166b18a7d7526c9bbc5e5e4.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"儿童习惯管理与性格养成绘本:快乐成长\",\"isbn\":\"9787518071814\",\"price\":988,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/fa08d3f9f11f8a806e5bb2578d06fd80.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"金陵春梦1-4\",\"isbn\":\"6785479953059\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/b149b0e1d0ba79b7ea1f055e4f88890a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/d4dc325bd780331fcf0e1f2553eb4f93.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/278a7b59a64f9e5194840284eee77021.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"金陵春梦5-6\",\"isbn\":\"6789589552865\",\"price\":2399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/0b2243fce82520a45e7d5f80c55fa89c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/d62e84d83edf46ee76a5492df46e8d46.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"007全集1-4\",\"isbn\":\"6784461636309\",\"price\":10199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/d40762e2145261b1c89d6770efba2507.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/dec2b91aab4c3fefb129acd949d0cbc0.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"我的奇妙之旅\",\"isbn\":\"9787555705376\",\"price\":581,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/4505fcee73f7dab30884eb33f44af71b.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"西医学习中医教材 中医学讲义\",\"isbn\":\"6780862073655\",\"price\":1798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/6aa405171a06e6dba42038ec802642e8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/7b295406759171118ef8346468dcfcf3.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"金庸鹿鼎记1-5\",\"isbn\":\"6784661894194\",\"price\":2399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/08ed3d7fa049c3f96cabaf267be00ec7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/c193baed838fed9645ea4a3d8ac96e10.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/528182bde8de338d3c94f69be665df28.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"洪门传奇上下\",\"isbn\":\"9787806052303\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/da95bec11952e3a87931315825141dcb.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"上中下饮马流花河\",\"isbn\":\"6782026147277\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/f6159176e5ced20607db20386c77b081.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/8bc839538a47ad2be7177c8a61d2b491.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"绝代双骄1-5\",\"isbn\":\"6784161898769\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/21947f7454b412654e785a22ccafb7e9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/ad73d27120f0e1c1e774321c8a12cbbc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/df7ab2f09b9b03cf2f9968c98a4007fd.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"荒野游龙(全两册)\",\"isbn\":\"6786688783884\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/cb1f1cdf6d2ce826e250aa927f7a6997.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/9a07be55b481f614d13165e4e9588bf1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/6564bfba5e21039ecfc1661560ae61de.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"小学生作文起步\",\"isbn\":\"9787553647913\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/815c4e7eab56bab412599ae07839bbab.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"选股高手\",\"isbn\":\"9787806327364\",\"price\":217,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/4b3f17861eef909e986ff533ec7da3af.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\":药理学\",\"isbn\":\"9787117089050\",\"price\":488,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/486de9fb76bc588f4b93e9c2d1c07737.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"实用抗癫痫个体化药物治疗手册\",\"isbn\":\"9787533774035\",\"price\":6970,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/06ea6c935fa02d679cb0de7c153295b1.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":3},{\"goods_name\":\"四五快读\",\"isbn\":\"9787535764249\",\"price\":409,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/32a1951af1d4bf5c8616db35a59b6886.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/fcded0ddf918c4ccebef91b0012de431.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"新素描表现实技\",\"isbn\":\"9787531410546\",\"price\":229,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/8b5654c9b29b2cd76a05485511c4c023.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"实战技巧精粹:Excel2010图表\",\"isbn\":\"9787115335722\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/aa22db44f772eddb2223dee1a6613e13.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"四五快读\",\"isbn\":\"9787535764287\",\"price\":1063,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/d0d71141dec708190c5aec6d344ca367.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/0ab6afc3dfd098f2e86f6511adfd25d5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/a8f83581b4052700ad8465b280946672.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"四五快读\",\"isbn\":\"9787535764270\",\"price\":886,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/f8814af6dd616dfb131c60120d7c0b96.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/b2a8efc89c5b289ba7c381a7fa871169.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/bc059b6f1d7b7a99c74bf182435113a3.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"四五快读\",\"isbn\":\"9787535764263\",\"price\":426,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/b8b419610741cb4a5ca6990022060924.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/030c93571b65dac86549899b31acf25a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/ef6bd8711374e331b07fae2fb41df1c9.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"四五快读\",\"isbn\":\"9787535764256\",\"price\":970,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/1559fa13b879bc6e606ce8b1866f7aa0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/c62743d895fa1aa996c78162c8494ced.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/811372efaefa5da444647be9e1d0bd11.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"四五快读故事集\",\"isbn\":\"9787535766229\",\"price\":303,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/2b7b97411cd22967a97385c5cd6ff25e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/a514c08ba14a01273d5df1398c6e5854.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/1a22776f9f9debd53639fa9e65688b96.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"土建工长(技术员)培训教材 建筑施工技术\",\"isbn\":\"6785431430501\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/85e553e8652d55f2defc204d0bdd5433.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/20255ea9c831b9fc4e3732cf4f8f4b7b.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"汽车嘟嘟嘟系列:快来!一起盖房子\",\"isbn\":\"9787544830461\",\"price\":518,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/2f3ea55065334a1ff992462f0607b5d6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/3aaaf718f5cbb89cab7ec61e4b299164.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/709e2d1d6072be3a223ce733724445d3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/cf958607f429d4fea6235304276a4eb6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/427bef1436721282e399043839f1a337.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"我的世界建筑大师恐龙\",\"isbn\":\"9787115551597\",\"price\":1232,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/280a7b27b787bacb8bf37af1c88657da.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/ab6969b474cbfb708eba5cd894ac259e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/5a7c5f4964a8ee04d83c13faee307cc2.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/c554813c7352bdceee7a0c7c54fd8f56.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"微童话-小青蛙捉星星\",\"isbn\":\"9787531361954\",\"price\":407,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/76154c0a8311023bd9e5b87d1b2c244a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/8e18f4e7a24bda18242b480b1af8ae01.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"中华皮肤性病学博览.第一辑\",\"isbn\":\"9787538123876\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/be546b52450c95b646795dc0de1fbafb.jpeg\"],\"location_code\":\"NS-A5-4\",\"inventory\":1},{\"goods_name\":\"2025考研政治肖秀荣背诵手册 可搭肖四肖八1000题精讲精练\",\"isbn\":\"9787040610741\",\"price\":325,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/fb2aff4db0f0968c7f1578d213bf18eb.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/f66f128c2ce4dedfe12444210da4da9c.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"我的千岁寒\",\"isbn\":\"9787506339223\",\"price\":498,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/0a3b4c1d4d1a90b5aa062d13e49b67f9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/aaca81170c411bd03765bc25bdf4cb9f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/411a046bff5063ea9307d704c6ce2244.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"三体\",\"isbn\":\"9787229100605\",\"price\":988,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/a054a32233de2b8240016c3bf5e8ec11.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/68838edab0edf78efc4bc503257f4bdd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/e653c7d5fa19f7b4d0e030af98c9c40a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/e5d51f4cfb05b306909f82feff33a38d.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"中国学生成长必读丛书-海底两万里\",\"isbn\":\"9787511015037\",\"price\":390,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/5307145f511252ae64be0d27c833c852.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/a7dc007aaabcad12c4b5e129fcd1d8d6.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"图说辽宁朝鲜族\",\"isbn\":\"9787807226000\",\"price\":720,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/52bbb05640dfd7e4c230b001fdebf114.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"背景(上下)\",\"isbn\":\"9787805957814\",\"price\":324,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/8044664c5886c8274af4989df88056d0.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"二战全景纪实全\",\"isbn\":\"9787800749711\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/1cad5525b674e620123dcaa18d5b7c6c.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"中学生 国际国内\",\"isbn\":\"6786979534194\",\"price\":749,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/0053264aa67ad490b416681a76d8c06e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/16382b1d6de20b16dba150acba3d9ffd.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"长夜随笔\",\"isbn\":\"6788347406580\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/9a130f986c98fec5adb435e1f8fee100.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/07f6d88c29d82c204a704885ca087d69.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"王天一传记文学选\",\"isbn\":\"6789187390222\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/f2728c7f80e744e436ecaa8ef32c75b6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/9500c6aa6ad2fa8ac810beb80e755ee8.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"生病原因知多少 家庭防病手册\",\"isbn\":\"6789470932784\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/c5b69e42e098c489479aa2ab264c4b5c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/a741d83c9f57f21049a9f7464ee5d3f3.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"七杀手\",\"isbn\":\"6781828411236\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/90380eb583d7f0768c6c01e4a787653c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/1b5f9ec2ed5be6869bd1bb3b09976756.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"坚持四项基本原则 反对资产阶级自由化 百题解答\",\"isbn\":\"6784110695072\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/addeaa7346fdc4d5abfa680d50b84b14.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/b2a5869dd1e432754ac5f5c5e67decf7.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"星火燎原\",\"isbn\":\"6781324492610\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/586162dac83f2040a66b9acd16927030.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/51e93d4ba06039fe7184fd6847140246.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":0},{\"goods_name\":\"昭示:中国慰安妇 1993·跨国跨时代调查白皮书\",\"isbn\":\"6787357200941\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/59e29aeac2131ee9bfc6610c8491976c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/8765db7851ba278467c54d3ea388ee76.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"方洲新概念·特级教师教你写作文:四年级\",\"isbn\":\"9787513806428\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/fe39f0b6dfb713bc2f7448a684aa1c8e.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"小学生词语手册\",\"isbn\":\"9787806482544\",\"price\":665,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/a7e3a20822f354e196fd7d0f51276286.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"红楼梦\",\"isbn\":\"9787538289145\",\"price\":1499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/951d050eca5df793f3279dc18055d84f.jpeg\"],\"location_code\":\"NS-B6-2\",\"inventory\":1},{\"goods_name\":\"中国古代史常识 (专题部分)\",\"isbn\":\"6780597529095\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/d2b02428b71bd2168e5cfd85d78b4e60.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/bbdbad306182569131698a2d17ae6dcc.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"实用法律手册(注释本) 李盛平\",\"isbn\":\"6786820354373\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/f312961fa46733915df43c29527d96aa.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/abd03772697b36ed57bb39b7391b73c5.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"世界华人新兴富豪\",\"isbn\":\"6781707488224\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/75e69e3219f7744c177dd64189e38d63.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/75d242734795af314aa6f20ded66c366.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"世界华人新兴富豪\",\"isbn\":\"6781760753904\",\"price\":808,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/6a7cbf2844b6ceeeefec7a05f3158745.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/b7bd071b1eed2c21abb7db5f28ee7a96.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"三十六计及其妙用\",\"isbn\":\"6788055031627\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/b257c84389a090a58609606705928f4f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/a183e44019ae60cbb5ec2bcc5a451152.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"白癜风与黄褐斑防治\",\"isbn\":\"9787508232867\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/0bb15c1e67c20ae54dddb3e68118f804.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"顺利度过更年期\",\"isbn\":\"9787502523756\",\"price\":4299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/33f92f2bc49465c763df13f2cd76c8c2.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"得了前列腺疾病怎么办\",\"isbn\":\"9787538834840\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/c162e3bd8337e24c198afbe42985e98a.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"临床常见心律失常诊断与处理\",\"isbn\":\"9787810860109\",\"price\":1898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/4fafdaf7e40a7837e8d2f2c450caf00a.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"妇女更年期疾病防治100问\",\"isbn\":\"9787506235853\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/ae55545d8cb391c3fcce6731cb68b94e.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"常见病的中医特色疗法丛书:头痛\",\"isbn\":\"9787537747271\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/84db468890ec31342127b89f4b256921.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"现代中医诊疗手册·肝胆病手册\",\"isbn\":\"9787117063715\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/9a79162842421e0fa56a71b654cea88a.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"2011事件·作品·评论:上海文化漫步\",\"isbn\":\"9787549607006\",\"price\":1273,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/db09f2640230430ec5ea7ebd7b21a4dd.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"军机迷\",\"isbn\":\"9787535326706\",\"price\":630,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/381cda3b773888cc4f1e988cfafea7eb.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"导弹迷\",\"isbn\":\"9787535326737\",\"price\":1153,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/68445a2a9be47deb15de7e69a252bc6c.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"雷锋在我心中\",\"isbn\":\"9787810584371\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/50fae37fe0d323f2cdb7f6eaa3f6a2cf.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"漫道风雨\",\"isbn\":\"9787805668833\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/27a1c317e20c96c9067c9dc3759647a2.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"国际贸易/全国外经贸院校21世纪高职高专统编教材\",\"isbn\":\"9787800049750\",\"price\":1198,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/291e51e93fd40c874e74d815b5515b4f.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"罪行与宽待:原日本战犯反省绘画集\",\"isbn\":\"9787554907474\",\"price\":891,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-22/3f263afaf4b45cbd5788c1b56cc9014b.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"汉英医学略语大辞典\",\"isbn\":\"9787543327511\",\"price\":4469,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-22/acbc8bfe1e6998cfc6b575fb66785308.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"数学教师教学用书. 三年级. 上册\",\"isbn\":\"9787303147236\",\"price\":1757,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-22/2f644f9c263a1f355f00d4599219b164.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"数学教师教学用书. 四年级. 下册\",\"isbn\":\"9787303182695\",\"price\":1868,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-22/0cc900a296d9153d7a09501c2a140945.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"辽宁期刊史\",\"isbn\":\"9787205071844\",\"price\":2308,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-22/e07d03827e64f27eb33d55037221d432.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-22/475dcf9995115c414f7bb5522a09496f.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"古诗文词语纷议辩析\",\"isbn\":\"6783148682314\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-22/573fbc5447faff10b2796e00cedffeb9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-22/5c9af3963e7c9edceb1ec8cbf7d96eeb.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-22/b66ccfcc37635d3095c865185ed90971.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-22/7ec554aba9e09403dc0f93c12303b598.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"同在高原:怀念孔繁森\",\"isbn\":\"9787205036300\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-24/4e77e063993f0a5e13b3d211bcfe9a00.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-24/4e77e063993f0a5e13b3d211bcfe9a00.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"名家仕女画艺术\",\"isbn\":\"9787531426301\",\"price\":2308,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-24/9f4481ffb9247d5bd35fba11cfe55453.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"图解小穴位大健康\",\"isbn\":\"9787547008287\",\"price\":1061,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-24/a5c7ba1cc1103bb56538c6d08a6cc2e5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-24/8d517337497a655a966493ae675f4f33.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-24/7ca74fe386064b4013097d81f7c8a4e1.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"图解拔罐养生智慧\",\"isbn\":\"9787505420038\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-24/2d1508fc7b351197143d4dab5a6b708a.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"实用抗血栓个体化药物治疗手册栾家杰主编安徽科学技术出版社9787533769420\",\"isbn\":\"9787533769420\",\"price\":2834,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-24/b831632cacc2f19087193cabf71202e3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-24/489d45325962282f725450cbf71e67f1.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":2},{\"goods_name\":\"无价 美国医疗危机的根源和出路\",\"isbn\":\"9787543235601\",\"price\":5077,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-24/fd867aab31fe69a84e311560239de364.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"拒绝伤病跑步损伤预防与恢复指南\",\"isbn\":\"9787115497574\",\"price\":5099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-24/089e5140110d166a8eb7d41036b367be.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"玉文化研究新视野\",\"isbn\":\"9787550514874\",\"price\":6708,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-25/6452d7db4702d1fd5d5decdf0a2ee291.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"中国古代神话快乐读书吧四年上册课外阅读(中小学生课外阅读指导丛书)彩插无障碍阅读智慧熊图书\",\"isbn\":\"9787100186247\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-25/f8afa4686113d47addcf1369c47efcb6.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"革命烈士诗歌选读\",\"isbn\":\"9787020137787\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-25/211d2fa468377c7bd4285773ee176b50.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"师道弯弯 商国华 沈阳出版社\",\"isbn\":\"9787544183024\",\"price\":3134,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-26/49a906e4487ef8a9b30bfdd6b33bac82.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"古城春秋\",\"isbn\":\"9787544147521\",\"price\":1998,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-26/1bf7f95b07821525e86f740074414f52.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"新编学生字典\",\"isbn\":\"9787539276533\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-26/38d7137f80cf468c9817dec27892d8f3.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"古代汉语习题问答\",\"isbn\":\"6784121840541\",\"price\":1098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-26/bcfbd8d83783403c8f63ddf9f7bc553e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-26/d529b5bf54fdbbe26562e0ece1a581a2.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-26/4c06ed1e4478fa66558dc4d306bba650.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"三维设计\",\"isbn\":\"9787030518804\",\"price\":1569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-27/944a6a746b2db07b8c6d65eab5150fb1.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"了不起的安徒生\",\"isbn\":\"9787208137417\",\"price\":4499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-27/eb8cfaed30f8e5dc8e6a52f73fb046a0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-27/0e2d64fd53a531130d1aacc40f71e45c.jpeg\",\"wxfile://tmp_9b10d5624f61b8017fa60703ac4c8d18.jpg\",\"https://img.pddpic.com/open-gw/2025-09-27/a5054f8c2fe67810910bcad332eeae64.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"慎思集.续\",\"isbn\":\"9787531323297\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/2faa163ba99bfa0520d922e4422b84db.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"黑老大自供状:一部被揭出的黑老大日记\",\"isbn\":\"9787506352697\",\"price\":474,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/93b34bd0ad848a9e1c0c8c9d907e5f19.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"大独裁者 (原名《加林工程师的双曲线体》)\",\"isbn\":\"6786970345034\",\"price\":2499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/8d63806131dd24226e9f803e30132ff3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/b94a99bba6f88c6db5df1ce2c9185986.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"生根 [美】霍华德·法斯特\",\"isbn\":\"6788454164523\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/c70f6575a626340c50e218b1acbe8f65.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/452c9fa5828941053a15bc6856d70bf5.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"镜中像 (美)海伦·玛克内丝\",\"isbn\":\"6789228386081\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/9344968c0d1e50d7536b149fbcde5d50.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/919d6b600f1fb740ccb0a0d3076222cc.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"白鹿原 Bailuyuan\",\"isbn\":\"6782977147722\",\"price\":5199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/c9abecdeaf6bbd3ac381051fcf57c066.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/bb3914f6d886d4dd3878c9572bbae2fd.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"西游 记(共三册)\",\"isbn\":\"6783616339305\",\"price\":1689,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/ec6a5149161d2d1f1232252d77e1f1d1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/c9ac865a07b9d7de3464921dd516f840.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/30d47d57c9b94c2e3fc39088055e9ef9.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"军火交际花 (上、下册)\",\"isbn\":\"6789311349021\",\"price\":1079,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/cad54522714c1019bc059e7dc2477a80.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/5a2f9e523ee101922e3d4aff528f9a7c.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"党的组织生活问题解答\",\"isbn\":\"6780459154422\",\"price\":1064,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/910c28e1d43dcd4f1b65a7afbdbdc5e1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/348731a945a30627c46281f87f0f6b98.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"世界文学丛刊第十一辑 埃及现代短篇小说集\",\"isbn\":\"6785513274475\",\"price\":1327,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/b85c67d9fbc835fdc24b39bb6d99a8f7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/137d3fc62b940bdf5560d410e6a18354.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"世间女子\",\"isbn\":\"6788046022956\",\"price\":1898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/8608657f836c4bfea63839d736b01b3a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/99efde3d61d778bf72d5d85ab2742c91.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"怎样练习花样滑冰\",\"isbn\":\"6788632066507\",\"price\":274,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/0f04b1a7c802d87d813642379d5acb18.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/48c300cbe5673cb639005c428b983152.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"眼科护理 中山医学院附属眼科医院\",\"isbn\":\"6783453610523\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/3c9c449679be3e4dec527974d2f46153.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/3cbfc79e9a4bebe1186b924cc0cf9a89.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"福建少林拳 ·福建南拳丛书\",\"isbn\":\"6782694955871\",\"price\":440,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/10b968252e4ac9598e59d850c869fe16.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/611e43fc283104f13e5e4ae398cfc490.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"啄木鸟 1996年第2期\",\"isbn\":\"9771002655000\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/b76ae93ee84a93c0a03be23ab31f5512.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/48a136ba34418872707984b1df2f0a7f.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"正版实拍 天学真原\",\"isbn\":\"9787538215366\",\"price\":2172,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/076506d7ec2696a46eccbbe88841bb3b.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"实拍图 走出理学清代思想发展的内在理路\",\"isbn\":\"9787538246209\",\"price\":2856,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/939bc554b04c365511a6fb0d04a6f707.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"教与学\",\"isbn\":\"9787810510875\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/561200fc7f64e76f672fba9c26896982.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"慎思集.续\",\"isbn\":\"9787531323297\",\"price\":603,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/ca6f1678b0431ed2cd850c6a7934b386.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"赖世雄教你轻松说英语\",\"isbn\":\"9787806643082\",\"price\":633,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/29525a60500e7fdeccfe141f47b711d7.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"我们的长辈王稼祥(32开平装 全1册)\",\"isbn\":\"9787205037192\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/1809febc8942474e7b46830e647bbc74.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"中国古代科学技术史纲\",\"isbn\":\"9787538237016\",\"price\":12399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/e5d644596f1f77f4c15a38f5117459df.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"第二次世界大战什捷缅科亲历记\",\"isbn\":\"9787562606956\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/9b9cebd161d205fa79edde6446efe642.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"打官司法律常识速查速用大全集:案例应用版(打官司必备秘籍神器,涵盖所有常见纠纷类型,传授打官司技巧和法律知识,一本来自星星的神奇\",\"isbn\":\"9787509351406\",\"price\":1536,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/eb7b8fed2023dbba1c2695ecda4e1a09.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"我本英雄\",\"isbn\":\"9787531341291\",\"price\":984,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/1ec6865a5923e7bf56251327256796b5.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"国家公诉\",\"isbn\":\"9787531341307\",\"price\":1489,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/b22b1e9f0dadb63eee029d02eebfe61d.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"童林传 (前传上下部)\",\"isbn\":\"6788260558020\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/44ce014d8fe90fc1f92a861aa1221409.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/33df8d571a6ac95ed43dcc48e574eeb7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/8cb1bf4fbcecd644e3550f9ef68d6707.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/055360cff892591c3aa1525b9ca9201f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/2f79f1a744f3cd7a16158297e2c244f9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/15677671d110910c0b41a76a3ebb9074.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"毒砂掌\",\"isbn\":\"6783866435839\",\"price\":667,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/c530943d941a8654697f0454eac64f3e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/4c8f30a9166419c101263fabcc5a68f2.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/326dff15b048969de9d17668f3deeb08.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/a96611b991c27b8c9fb6760f59617baf.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/c36b10ce2b680fd35b0385f0c5c43e74.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"气功疗法和保健 (修订版)\",\"isbn\":\"6789842973463\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/c3a5aea252ba1c235ae201f35a228348.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/942df340fb325d13a36781ebda375fc3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/f37248a318c1992a18f462731106515f.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"胎教\",\"isbn\":\"6787765150122\",\"price\":697,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/a0f137d404282f6ac699923f430b6e73.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/e48ae5373fe07db7ba482a60c6ed3874.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/a54c7af9b69f8c8e681c1aa37804f1e7.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"《中国民间文化丛书》 中国民间传说\",\"isbn\":\"6781225965531\",\"price\":2119,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/a92cfc8a655533bdb19ea0d08329cb70.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/6b36aada489d7267eadf077193842178.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/d01b1c3fd513ae49005fd26f2ba24307.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"法律顾问 青年信箱(五)\",\"isbn\":\"6783426183678\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/a34db7f9a98d518bdc8386e2034880af.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/467ec37298ae3ea3b01b6b4ca21fe8ea.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/7a7f6a9e714741861fc33eed31debac8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/384d70bf4636baacebb3c9c951ea93ef.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"初级技术读物 怎样打乒乓球\",\"isbn\":\"6786302847254\",\"price\":1419,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/5fd478e79f35f64a4a50eed63b6f209d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/d8abf7a08229486e4bb97ce0bfbd6a8c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/5b6c320a4f720d17bc7ce576e95c7e19.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"古汉语常用字字典\",\"isbn\":\"6786297799883\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/ab6cf6a947dd028a542db36d9d99e1b2.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/f621f95329739461b121daf0aa303b03.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/20642cb7eb399d6e1aac02174143d759.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/f4419c65afd71ccc83b945058b82a0ec.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"中学生文库精选续编·生理心理辑 青年自我保健问答\",\"isbn\":\"6785647689735\",\"price\":1426,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/a1644cb76b2e957efef18d092ccc3dde.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/ae82f7dce83ebd00b4707cd9c6d1ad77.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"人间的诱惑\",\"isbn\":\"6781034302447\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/1447ba2d17408be174c7cf19cb463b57.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/c795076c3fdbb20efd051ec864766ced.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"《中国民间文化丛书》 中国民间年画\",\"isbn\":\"6786583818333\",\"price\":3099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/50d3fbf529d3eb66361823c130ff2e30.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/42d20db34fd90380c2ae29a8c68ef396.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"《成都棋苑》围棋丛刊·7 棋官子初\",\"isbn\":\"6788904791432\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/cdcdaafa8b6f7d244aa6e98ad183984b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/6b6932e8df1bd1a2365b145a60829562.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"里根与布什 —中央情报局秘密战\",\"isbn\":\"6788589756160\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/b427e05d93d90cb29ba8b328e4fa1e60.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/b05e686fc6c5620921d56c4fb1b7020f.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"社会心理学新编\",\"isbn\":\"6781023167369\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/4b12081496a42b2f9d7b30a73d060282.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/6b0fb7aa710c7f90e33df5828079826d.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"文言助读丛书\",\"isbn\":\"6788816870661\",\"price\":1197,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/4098a1c7493869a63493a475ad2580dd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/bf0f8f39d6bb1ebbb095c647aa2f453c.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"家庭饮食疗法\",\"isbn\":\"6787584375362\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/a5c322e5397794f21f74f7211128f8ca.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/8f94af965f24fde302866f0664087e0b.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"围棋妙手问答\",\"isbn\":\"6788187932080\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/1dfa4b394a1e8f9d1d8dc1abb81ba43d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/d31c4e30f49921ea85aa883bb8f80b14.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"影响历史进程的100个巨人\",\"isbn\":\"6781046311951\",\"price\":583,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/eef3f0c8fb9c40d1a0d365ad3a8298a0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/9613513b7217eed590f09b5c057d6988.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/c44c9c713e50678c6614b5794c1d137c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/c55766616882b1dc6d28b95e3af920e0.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"医生与患者\",\"isbn\":\"6785200986522\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/205aa903cdd23599de910236e006c1a9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/8c2215e6a1ddc750b889aa3369d65267.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/a21978a18bd5f71920cd98004c55ece8.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"中国民间文化丛书 中国谜语、谚语、歇后语\",\"isbn\":\"6788868318040\",\"price\":1977,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/78e74bb48ca5bff55978978c2ac73122.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/cb1d435abf9ba2448f2036243d9a5d14.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/f32b28791c4818a136c12cce651ab6ca.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"鬼神奇境\",\"isbn\":\"6786564859041\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/138d46e2f720f14d2397ea59c19c59f7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/00baaa93e1c4ba4cc64a29f333f6b446.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"海公大红袍全传\",\"isbn\":\"6781589731998\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/7913233c48617b3b2ee5d61b8e118c1c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/26efe85e17af9e84b8489cab463f2b13.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/7890115d8e53c2ac5fbe5851c68406d5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/57e3b650071a47abd9dbfed198558fcb.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/d7698e2d6b81801341afe53e61cc9196.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"晚清宫廷生活见闻\",\"isbn\":\"6787943067360\",\"price\":490,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/18192a06c6233e53dc80bc3bd1e87086.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/7873dbae91513b463aaf29d8181c51e3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/37f195f60f0b1704690bcf9022ff4019.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/181acae8603534917e8471c5a18b6501.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"越界飞行 U-2飞机事件间谍驾驶员\",\"isbn\":\"6783768617891\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/550b17b6ea726c240115f88df09ef965.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/93789f7f4629b4a6fa9f6435f7a64047.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/f36cda50ba7ba062eaa51c85090bf161.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/ea6136af0fe613bcff9376e26569ec88.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"千家诗\",\"isbn\":\"6784928094291\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/b515ceed6810d1435d076557d96f63e5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/badf490f6b294f3732c816956913085e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/6370435ae8674850e601d92779a58290.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"千家诗注析\",\"isbn\":\"6783514404850\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/acb41d0d0b35be85d5ef5583a940eb7b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/ecd9cc5ad7bd30dcdb287d5a89943e30.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/67a8933f37eb43957e27dc9e20eaa492.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/7bf876ea552dc1eb949b5152fa93ddca.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"二刻拍案惊奇\",\"isbn\":\"9787806260548\",\"price\":1030,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/189f3751b09762ab6bf822c4d20eb35b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/0877ea78812a0daaba222777c334774f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/ea1ecdd348c6945d44fb64c752bb3a95.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"馆藏:中国古典小说名著普及本;醒世恒言【实物拍图 带标签印章】\",\"isbn\":\"9787806260555\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/c8abbecf69d52639975f1c7cab1fb9cd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/ac0817f866a1ffcd63a0f5bb30ce2b4e.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"喻世明言\",\"isbn\":\"9787806260579\",\"price\":419,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/09c57c9ae27781804008f46541c8cd16.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/704bb519fada40d2fdd4b0232f9b4559.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"初刻拍案惊奇,二刻拍案惊奇(两本合售)\",\"isbn\":\"9787806260524\",\"price\":400,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/ec1f90db7731056472b46681c8af09da.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/38c6e07ed573bd281c90ea52f29609b1.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"世界史简编\",\"isbn\":\"6789800752524\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/31390829263c0e5229c70bae00c24209.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/d966ab2b767c957881d3941a95f8cf69.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"大自然之歌\",\"isbn\":\"6787623522471\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/42594527ddb0e167120f13f2dc0059cf.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/4a6ac99be973f648509eb2faddcd5590.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"暴君的末日 隋炀帝的故事\",\"isbn\":\"6782027493570\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/cb57280ca37e9df57d5d217773e3d101.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/e74ca92e90189b046efc3b343f258ce2.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"近代史资料\",\"isbn\":\"6783244407039\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/d65a6278f1eaaaf3f6f0d0b31b36877b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/4b085ad86da7d6e1a911ed5be7a89e00.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"长江漂流探险纪实\",\"isbn\":\"6788245307337\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/f69aa74080901e5cf6cae5d157778176.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/e1fa8c16222aad32d7057ff8b1c11eb3.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"森林工业技术知识丛书 木工识图\",\"isbn\":\"6783376605239\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/93912b89a3b291038b79c09fafff2090.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/b1dc7e0bb05ba1a5b757bba49a44d7f1.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"诺贝尔文学奖金获奖作家作品选上下\",\"isbn\":\"6788931986905\",\"price\":1208,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/88c6a094b2cc95e143a175f13430ee00.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/800af580b79afdf7685916964042b68b.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"二刻拍案惊奇 (全二册)\",\"isbn\":\"6787769138076\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/4aab57c46d122df80daf6333f41fddfd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/a5f45171342db3802155b8c857400c7d.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"欲海狂情\",\"isbn\":\"6781423241081\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/06bcd6cedb570b11a9099b199655ab0d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/200265d0a0f15d071cb031ec3498d1cc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/69308f2bb46c4a7bb133c0765fe8e929.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"古汉语常用字字典\",\"isbn\":\"6783219525672\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/ec5b61da2284c4445e41aa344670557f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/1572110fbcf06532b4dd851ec589b36f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/9b735d8baa00eedbc7f92097dcd6c172.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"审计\",\"isbn\":\"9787810440523\",\"price\":1222,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/4717bd313318fff4b0671500e4c129d0.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"辩证唯物主义和历史唯物主义原理:自学高考版\",\"isbn\":\"9787300011127\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/cddcfe75397ce0547ec80201d280a934.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"摄影问答(1)\",\"isbn\":\"6788722696449\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/757a37cbe41aaa9163f4f412e96fb848.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/416316ea1f47cf2ae4a1bc1ae13fe2c0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/27a1bebfe1d2564637303b93730316d6.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"希特勒亲历记\",\"isbn\":\"9787562606147\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/ca4a25ae4190c2f02f8384d6fd22b5d5.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"钱币\",\"isbn\":\"9787538236255\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/5eba317115994eb7b08e3797dbfc1b82.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"木青散文选\",\"isbn\":\"9787531319146\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/36ed54b70533df3ef2df75f013c8ef4c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/8a03e119fe76867d716062bfc1460da5.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"塑料性能实用手册\",\"isbn\":\"6786925425495\",\"price\":978,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/6f646ce2b5d73be4a3dcd6881687ec54.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/ccd91877abb999c0f427db2d88886a05.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/c929d1bae5c3477fcc19c4ef28378fd0.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"黑手党档案\",\"isbn\":\"9787506017411\",\"price\":549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/02891cda3a792c447caecff7f7f1fae8.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"中共执政党建设史1978-2009\",\"isbn\":\"9787205066345\",\"price\":2299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/e0e9243dd4979e9c37aacad431460e4a.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"《无线电》问与答汇编\",\"isbn\":\"6782739675773\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/18d67e92b170a41281f2f84fa1b38905.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/84232e41f7dbf1840cffc165320a8f9f.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"君子兰养花专家解惑答疑\",\"isbn\":\"9787503861833\",\"price\":1179,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/5bd3247beffd9f98d7d47eca3084b723.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"红墙纪事\",\"isbn\":\"9787801280435\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/ef547c78274b4e2e08bff484d2e7e47c.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"座山雕世家\",\"isbn\":\"6781151250890\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/c9bd074bbc008660b01e3451f2d237f1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/bf9191f43333324a48073ab228a65907.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/d102a4656e7c3528f85fbfd9d665893a.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"刘延林传\",\"isbn\":\"9787801513625\",\"price\":609,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/a03e24ddac68367baa21537f12bb6859.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"中国民间文化丛书中国民间小戏\",\"isbn\":\"6781362194541\",\"price\":1898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/4a171f3830422f0f8957cbb2082ccef0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/9d6bddf75322f4f8531f3a64682edc29.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/ca06e8b6323cdc0b9e9ef6ee9ff592cf.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"简明中外历史辞典\",\"isbn\":\"6789099334318\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/079baae8fb4811f535c4f1fd9fd7058a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/446b79a17b8b924a64a7c9cd85d8da74.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/9186118b75aeba4f3bd5138f8b2628ff.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"数学教师教学用书. 五年级. 上册\",\"isbn\":\"9787303147458\",\"price\":1094,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/804973ef2d0d8cace796f017c60d24a3.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"数学教师教学用书. 五年级. 上册\",\"isbn\":\"9787303147458\",\"price\":1092,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/a301b84dfa98737054efa0e55350d22c.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"野生动物保护与执法培训手册\",\"isbn\":\"9787519610005\",\"price\":598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/64094c60a070546a9f85e02f4f46b1f6.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"工商管理大百科全书\",\"isbn\":\"9787538252361\",\"price\":4550,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/242f6e4e5404e73cdb1de02af93b950b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/5fd619b513699570ae1e68ca82136631.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":0},{\"goods_name\":\"牛津少年儿童百科全书全九本\",\"isbn\":\"9787538249163\",\"price\":8090,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/3f53a6b8a9c6e95560294dd59ac7cee8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/d1dd94be0ca048261f4fcaacc442a955.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"小学生注音经典 中外名著全十一册\",\"isbn\":\"9787531535553\",\"price\":6559,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/c1bc44411106e39b4821465c8123e9f9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/1929517fe6f71213289240a03368280b.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"一生必读的经典 十大经典全十册\",\"isbn\":\"9787806635933\",\"price\":2637,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/31ec73285909b41155e19fdc11acbb2a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/c16067784401e3e87d9b845273d272e0.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"少年注音知识宝库系列六本\",\"isbn\":\"9787801146038\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/4ba9eeef3f18511a459e945720c9eab1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/9d963265b7347475526b5582136789cf.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"一生必读的十大经典\",\"isbn\":\"9787806635933\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/1f554797af63733f8a432a0724d7f7ca.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/01aaf31cd57b84608051f4096213a290.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"公务员内参\",\"isbn\":\"9787531336549\",\"price\":1130,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/77ddde93d93e48ced73b9783024b3302.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"合同法速查速用大全集\",\"isbn\":\"9787509351536\",\"price\":811,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/aa20587c606289f46e7077898e45c57f.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"吃的营养科学观b1-3\",\"isbn\":\"9787204041091\",\"price\":1126,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/48b13b047b44855f0079fd2ece6e40b3.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"供石品级划分与鉴赏\",\"isbn\":\"9787533124571\",\"price\":1208,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/7f0735b8b04de222ee9e738f01b7636c.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"现代工业人工林发展的创新研究\",\"isbn\":\"9787503826566\",\"price\":789,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/340986ad3d78492b602c3f5da86bbc7d.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"黑枭末日:刘涌黑社会性质犯罪集团覆灭记\",\"isbn\":\"9787801148117\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/0a4574a667a2a56a7fc2c38fa9145d0c.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"苦菜花\",\"isbn\":\"9787503301162\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/0ac91452616a3ee12645393d9e31052e.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"好故事 好家风\",\"isbn\":\"9787205085469\",\"price\":1857,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/fedb06ccca70f9999c9d3782aaea55ef.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"这才是清朝 5 十全天子\",\"isbn\":\"9787509398708\",\"price\":1188,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/631a85c7b1ba88c945e1186d768b996c.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"人教版初中道德与法治八年级下册教师教学用书含盘人民教育出\",\"isbn\":\"9787107331732\",\"price\":309,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/99b0f9ab2f36394ea2aa374fca4792a0.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"中华艺术之花.1991、1992、 “五个一工程”获奖作品(戏剧、电视剧、电影)两本合售\",\"isbn\":\"9787801160300\",\"price\":4507,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/583488b55cfa59358dae23cdcde94091.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"中华艺术之花.1991\",\"isbn\":\"9787801160294\",\"price\":7148,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/2b2b801b3b4e2c3a1879d33e33bc9eb6.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"教育是没有用的 回归教育的本质的新描述\",\"isbn\":\"9787301150962\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/126583319fed5bbe523a70e5a3da68e7.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":0},{\"goods_name\":\"高温消毒发货 离哥德巴赫猜想最近的人数学家陈景润\",\"isbn\":\"9787538256710\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/fbb374d70407ecab297a0fa24ddfb053.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"*四色掌中宝 高中英语必备短语\",\"isbn\":\"9787551550789\",\"price\":571,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/2c47a78890df59adcdd187ba4dc746e0.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"四书五经绘画本\",\"isbn\":\"6789151090078\",\"price\":400,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/e56f4f0abad2c169fc8e22d63a63e1a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/f773ce1ed071e60354eeb187beb07e8e.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"中国现代文学史(下册)\",\"isbn\":\"6784176932897\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/594e0a2cae86a8b2956b73501409fbc9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/efa07df404ae8de9e4adba498150fb8f.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"消费经济学原理\",\"isbn\":\"6785191941441\",\"price\":3199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/05b6f094b6ce80c79b7e3ff88ecd4050.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/d8acdcc19c4ea27f1ec50d6e6ba5ea64.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"明心宝训下册\",\"isbn\":\"9787220028366\",\"price\":1019,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/9ab469ac627a6e8903e5d29a9240999f.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"中外艺术家铁事\",\"isbn\":\"6787128991805\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/d448135953a378140b30b3ecc59878bf.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/0d5638b76032db97064ea28543ec17f4.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"草堂春秋\",\"isbn\":\"6789931465236\",\"price\":231,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/f0dab3348ab70b3588d0fd118d945a22.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/2fd70834a94b18118e9e291bee2074dd.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"高中语文答疑解惑 (第五册)\",\"isbn\":\"6783874081404\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/6f265f81106d7e94ffe56894bef29c06.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/32f62f5eb85da22c6afa859db86c64c6.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"唐太宗传\",\"isbn\":\"6784973482177\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/8985969cdb79bcf36ae308ae5d7dd883.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/0356b66b03ecac6d5c10f13cd139d7f9.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"常用文言虚词手册\",\"isbn\":\"6781665174814\",\"price\":229,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/43cfa0f47db76ceee3f64f5f3ceddec9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/19478a6ed0ffdc3d42aabde2dc512396.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"三角法辞典\",\"isbn\":\"6784522655623\",\"price\":2699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/8d7ea3ab68c6dec5334fc1998cdcdc73.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/63c75522a1fcd7df630a8b862fb84d00.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"白内障防治100问\",\"isbn\":\"9787506238502\",\"price\":634,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/663649de9abbc982f7a26a0ea7e34c52.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"孤独人格-克尔凯郭尔:西方智哲人格丛书【扉页有黄斑】\",\"isbn\":\"9787535413109\",\"price\":698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/eed33181e64c074966cfb841aa5a6785.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"袖珍中医皮肤科处方手册\",\"isbn\":\"9787805318257\",\"price\":5399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/5ec835ae07a81843687ddcf221375950.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"大宇宙探奇\",\"isbn\":\"9787536523623\",\"price\":524,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/ebdb90652a82a4c43ccd187c03bd02ff.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"商镇\",\"isbn\":\"9787505930605\",\"price\":231,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/d9e8ef133678bfd98504940aaefc2e43.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"大学英语四级考试巧攻阅读理解120篇金泉元 主编中国对外翻译出版公司9787500112334\",\"isbn\":\"9787500112334\",\"price\":629,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/e6976927a6b92dff3540c342c88c5c9c.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"职权\",\"isbn\":\"9787543858176\",\"price\":329,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/336d046a76b1e8d443f35c7897dd09fd.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"我主沉浮\",\"isbn\":\"9787531341338\",\"price\":1501,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/5aef3620d8d715249ce8f5c4d61e1974.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"聂卫平谈围棋\",\"isbn\":\"6788527979457\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/6120057d9538a23a9a012d27bb8c451a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/6fba2732a638e6b4292354ddafb7aee4.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"時詞解析\",\"isbn\":\"6780318682039\",\"price\":3390,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/5423ba43fb6effb1132f150b8b4473f6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/89c9ddfba5b08d8b528499726f45fd54.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"小草的奋斗 台湾省中学生作品选\",\"isbn\":\"6789450158207\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/988a4b043fcab90d857d32d1a42575f5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/ca534fb5af20d0578820f3270032bd63.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"失落的珍珠\",\"isbn\":\"6783261363675\",\"price\":319,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/08cf239173513346748b81baa066dcb0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/b282beec4142cd98b706fee71aabc1b7.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"汉语词典\",\"isbn\":\"6783732253931\",\"price\":1779,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/60de56fb3fff7e04df2ee2fc2de42676.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/5037a6dc916bc83fcca98b46c6dbedf3.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"中国的篆刻艺术与技巧\",\"isbn\":\"6782420958079\",\"price\":321,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/d18ac7134ed16984de1cbc885334a60f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/be6b3061d53ff27065dea2d38094f34d.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"绿牡丹 清·无名氏撰\",\"isbn\":\"6787683125373\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/539aef86deb343ba918af44d2f7a070e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/54202206f0fbcef8346f9cc583ccfb3c.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"作文开头500例\",\"isbn\":\"6781961976050\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/2c26a70ae6df4fb2d55d02c0d0fba87c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/177d4d858017b1fea8336775346bd007.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"徐懋庸选集·第一卷\",\"isbn\":\"6780453356340\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/f2eab71704620ceea305a60ccc9beed5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/94901b04f477b8c33dcb3f9a46052ce5.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"星象解码\",\"isbn\":\"6780006245796\",\"price\":874,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/2f500d1a66cec35e867c29ac19a6d400.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"计算机应用基础 景福文 辽宁大学出版社 9787561072844\",\"isbn\":\"9787561072844\",\"price\":1989,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/30dbff8cf8f01bf75b93d286d47e8411.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"文白对照四书五经1-5\",\"isbn\":\"9787805957661\",\"price\":1989,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/3db079845519de0ae97a3bcc205d0924.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"民间美术---沧州地域民间工艺美术实录(2016年大12开1版1印)\",\"isbn\":\"9787531472520\",\"price\":5937,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/fdf4ee8b468b6cbb8db094dd1019b3e3.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"漫话狗文化:一次神奇的文化之旅\",\"isbn\":\"9787505965027\",\"price\":1060,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/2fe2bf8bfd122102cd4786b64a3d09a8.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"皮皮鲁和复活的恐龙\",\"isbn\":\"9787534294075\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/b86f0f807f895a3d523eb19f464d7e59.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"中华保健中草药原色图谱\",\"isbn\":\"9787538128062\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/f60bd004687b97b015cac790fede50e7.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"吃吃喝喝那点儿事\",\"isbn\":\"9787531333937\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/d2d2cd6106f4b24bf5407c020d6ab524.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"24小时健康书\",\"isbn\":\"9787121317248\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/d7f8aaea8464c6f1d83de3ab83060f8e.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"大字版生活经典 五谷蔬果养生堂 中国保健协会编 湖南美术出版社\",\"isbn\":\"9787535641779\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/e5524d82fab53043433ebea7a51883c0.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"怀春\",\"isbn\":\"9787541115202\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-01/1ccc5ca5c2ae1956e2a46dc23dac4e6d.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"庆余年\",\"isbn\":\"9787020153541\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-01/fa4f32a3fe6561e657da64cd8e9dd468.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"第五次高峰:当代中国的犯罪问题.\",\"isbn\":\"9787507208931\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-01/f120a5be6ba0390bee61cabb5367ec3f.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"不宜多吃的食物\",\"isbn\":\"9787801319852\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-01/5e42867021b6c2c751efa3c0a85721b2.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"革命烈士诗抄\",\"isbn\":\"9787559648808\",\"price\":904,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-02/b3838f1f3679f663135c8ed761e219f3.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"世界文学精彩素材大全\",\"isbn\":\"9787504827197\",\"price\":359,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-02/cedb61576a672f48a0982baf154eff3e.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"腰椎间盘突出症的防治\",\"isbn\":\"9787508210506\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-02/79a260a9bab9df71ee577158857e561c.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"新疆玩全攻略2012 2013最新全彩版\",\"isbn\":\"9787563392995\",\"price\":1023,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-02/2bfe00eb162c038dece0ebc13dc5630f.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"世界文学名著典藏 忏悔录全译本 法 让 雅克 卢梭著 李新蕾译 高莉敏译 长江文艺出版社\",\"isbn\":\"9787535434340\",\"price\":582,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-02/7399eaf87222e0253799df87596509b2.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":0},{\"goods_name\":\"小说见闻录\",\"isbn\":\"6780032676297\",\"price\":823,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/208c172ff671aab7b5a8981ce6704d3a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/cd8625a3e2f4852d264fd53247b7774c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/bf0e49ad9466a574f11186710294f9f7.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"思辩散文选\",\"isbn\":\"6785897626777\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/d199cdc2f3ab7603168a61f8c8a063b8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/59ed8db506e63c7bf2e8c8a435b25be3.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"唐祝文周全传\",\"isbn\":\"6786315579962\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/ff72192065a8011a8b3c30a72b9115c7.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/e082e7c4da0cf86ae2d910b72e81fc09.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"希腊棺材之谜\",\"isbn\":\"6784431378012\",\"price\":823,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/1b6c3968f28aa76592a43115cf734c19.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/3928854125aa75f38b423b6395b5d244.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"实用摄影知识丛书 怎样拍摄夜景\",\"isbn\":\"6786813787051\",\"price\":990,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/c0efeaa31dff68b567df90f087ecec53.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/da0def49fb2975d8a056bee5bd3da313.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"中国在这里沉思\",\"isbn\":\"6785516474459\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/5d13b984c85647b4f93b5296a0e7c3b8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/1e225b37437417dac46779d2ed2edde7.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"有朝一日\",\"isbn\":\"6782109705210\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/da0ec25d2ac78e48c9e4025619406ed1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/d43880f54f6b58bae96e1746bf26350a.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"中外科学家小传\",\"isbn\":\"6785399992973\",\"price\":196,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/4c93c80e7237d95bd3a11440e9d188ca.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/2965de142e6c04ad11ad4ac6645e3e9f.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"法网\",\"isbn\":\"6789964355301\",\"price\":369,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/21b64fb1eb69fc8471d87bd2a12206ad.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/6f8d70e1a089475c1afb8afd7e57ba75.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"岳飞\",\"isbn\":\"6783513795763\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/14e98620d7f2a6df52bd6083ff5a9b5e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/8e83538ec6f1303a22cb60daa61ad354.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"勤学成才故事160个\",\"isbn\":\"6786903613563\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/c83a5bc0627e24de52ccf7c4cb695bd2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/d93c24a285f6c7e23f1bb180f8e94c27.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"战后日本史 上册\",\"isbn\":\"6786190448649\",\"price\":1208,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/6b8b52b3a5305cba8851f5735ea92bd8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/265f8b0e6818a269856888f29829fe2b.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"影事春秋 (第一辑)\",\"isbn\":\"6788689376054\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/bac0e9a93441cfd75f6556b1051529a2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/5295ececed47f9d3efbcd7808af2c89e.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"西厢记\",\"isbn\":\"6786596533269\",\"price\":988,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/553cf1953857dda27b4331d8c0e981c6.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/82ad519bd4168f88c23dd9ae1b3072c1.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"Java网络编程就业培训教程沈大林 主编中国铁道出版社9787113081966\",\"isbn\":\"9787113081966\",\"price\":1525,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/cb929b0e6d84faa51e307b01dfa273ec.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"俾斯麦的一生:尘封信札背后的真相下\",\"isbn\":\"9787212059170\",\"price\":1758,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/95d13dcef8f3d103f6c93cfacfbc0609.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/c769077364cf62404dd58cf1040e768d.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"养育会吃宝宝9787533032340\",\"isbn\":\"9787533032340\",\"price\":262,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/0ffc1a743ed2fea5455d16e341e8bc35.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"庆余年 1.2.3\",\"isbn\":\"9787020154586\",\"price\":2019,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/c8cb537af751d75e257278624ef092fc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/bcb15dc15c2f68c0ff82f773e11955a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/7109453d860a640123d0781b8a1a2ab5.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"故事大王 2018.9 10 11 12 共四期\",\"isbn\":\"9771004009184\",\"price\":1451,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/fee4a2b0f06a0b6f74e3c265907ced00.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/4f438dee27c80f9b9a89844ca79404e4.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"早期教育与天才\",\"isbn\":\"9787806459522\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/ba53534d705f27075330ccab5643d74b.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"金三角大毒枭坤沙传\",\"isbn\":\"9787225011417\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/57ab391b9a964b20450ddecce471ee8d.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"纺织大王刘国钧\",\"isbn\":\"9787506527095\",\"price\":289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/ad3b82f0d9c0c56cc0e770626ec20a40.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"古韵京津 旅游随身小百科 光雪 编 辽宁科学技术出版社\",\"isbn\":\"9787538134247\",\"price\":194,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/c55632f9c2d3d08e47ae90a265ee1647.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"林清玄妙谈人生智慧\",\"isbn\":\"9787805876184\",\"price\":1283,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/02df8e505b58ab6152f8cfb45bd80bcb.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"庄子千家诗百家姓增广贤文\",\"isbn\":\"9787805503899\",\"price\":800,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/3cb77d7b94ade05cdd9f8b2dbdb0de9f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/014e8c3bdb8eb23f5a36a4d34f893c03.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"用证据说话:债权债务官司证据指导\",\"isbn\":\"9787503685453\",\"price\":1149,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/2db1554931067c5671b98c921291d1be.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"断裂层\",\"isbn\":\"9787531316244\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/74929b7f5f4855a53a34f5fbf42e51c3.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"习惯决定未来蔡家瑶沈阳出版社9787544144261\",\"isbn\":\"9787544144261\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/c4c59919df6c5b78bd4483e00a48b696.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"沉沦\",\"isbn\":\"9787805277462\",\"price\":398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/3781a236a691f44c6e955631b27f63a5.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"醒来花飘落\",\"isbn\":\"9787541112188\",\"price\":289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/d9e67467905e527f09464e4d282f85fa.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"憔悴为了谁1994年一版一印\",\"isbn\":\"9787541112225\",\"price\":729,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/ae9f13c03a1cfb1b3bb8299d66a90adb.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"情迷醉梦女 岑凯伦 四川文艺出版社\",\"isbn\":\"9787541112164\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/565fbbae808310716f37346686dc3776.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"光绪与珍妃\",\"isbn\":\"6783748731233\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/933a5c37541edd28982feff6a3f4f50e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/10c17569001e4185c3373b2d0aaa7e56.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/fb0e6da4475cde4c85eff707839954de.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"高级财会系列丛书 涉外理财学\",\"isbn\":\"6786253474221\",\"price\":1743,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/c08d5b77fb42c0938da22f6a950c773b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/01b6a9eedbf43fb73b3cf26418d91c53.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"爱火\",\"isbn\":\"6783089352875\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/96fcae7f5de6ee3460e30ef16374a5d0.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/333472674b4d74a3ab60e4156744c306.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":0},{\"goods_name\":\"纽约灯火 ——美国纪实\",\"isbn\":\"6784660041852\",\"price\":886,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/fcf02c24302334671ac5f77dbf99bdcd.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/3b9c74c184f7980613946bdd2b7d451c.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"只为那份情\",\"isbn\":\"6787745033862\",\"price\":100,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/95acb26911411580509c6bf580c5e179.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/e7996d53f4728d03ca40cc80fc198d08.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"汉语常用字部首、结构、笔数、笔序字典\",\"isbn\":\"6784959843500\",\"price\":437,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/f08c6942f149d78d81a068d034495dcc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/d23a5a91bf227d5f108ebfa690a8e542.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"大亨遗孀一杰奎琳·肯尼迪·奥纳西斯夫人\",\"isbn\":\"6788812379450\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/54727184e6bc4f50b553d049f1f38aed.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/e200e67e344742555ab250938c50a820.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"格林童话全集\",\"isbn\":\"6788620773574\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/51b956e60be7e39be8af201cc60a7df2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/7bce57622c2da08efa52182eb74f3a15.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"天鹅姑娘\",\"isbn\":\"6783195177485\",\"price\":393,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/e4d853812ad7975ebd465d40cc6290b4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/0a0b3e1019f2f905a0cd670377274f39.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"有情归梦\",\"isbn\":\"6783352522825\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/d8b41edb88843c8dd574715d70291b02.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/903a87017d498c818230014da7c27886.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"破碎的梦\",\"isbn\":\"6785192044289\",\"price\":324,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/3cd7e29e8f5fb707a42f9a98736b337e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/318082c13c25e7548ad59068bf45e5c5.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"异恋\",\"isbn\":\"6788274376562\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/56a160722618e78468007303de7c228f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/09f23aed135e6bbdda37d8f07b5d663d.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"深宫风流\",\"isbn\":\"6782589863931\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/154dc4dee04aeefcd036b2760874dbfc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/ffa6d534552bf0c5f2eed5a351b8b355.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/a7786a42f552c1d7049e560333cf2ec3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/b13443537ae411d4a678239e02467b6a.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"饭店服务英语\",\"isbn\":\"6787113015320\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/55b9d751ef40d6e568b6ea9a70a5891c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/21a4351dc433b4ca71729629d9b915fc.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"鹰兵西北 进军西北卷\",\"isbn\":\"6789586903807\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/61ca9a4e25dd8e54f22b635ddaa88d5c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/fdeb7cdf8f3e725fe7f0e7ace4af7376.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"实用手相足相预测\",\"isbn\":\"6783417964664\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/36bebac8672d928d5e16abc862cf36e3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/db61a010cfd9d5853bf1dfb4f4c7266f.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"手相学大全\",\"isbn\":\"6782440828787\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/4dcc2b9e8b8dc338a1d6f4ea79c1a95d.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/30d47aec7e28cb5265a0255bebe7eb0c.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"善恶图全传\",\"isbn\":\"9787534812965\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/52f8d3f067b581e558b4ae8d1c150331.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"二战全景纪实上下册\",\"isbn\":\"9787800749711\",\"price\":800,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/a5a77ea5262bc42d40c53ef542bd36cc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/0f843263aaf1ec99138d9ae792e1260a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/71cadc8573342558ad7dc3126efbddb8.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"寡妇遗恨\",\"isbn\":\"6787884549034\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/a04c476848d4d01919778a1665c83344.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/9aaf9b64ef8fcef67f3944bf78e07c8a.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"别墅阴云\",\"isbn\":\"6789119969899\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/af1644cf5735df6c0df5c1e74b7999f9.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/05b898ffcb8806d8d84874e33132bd0b.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"卓娅和舒拉的故事\",\"isbn\":\"6788859730520\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/0a1b76b3c748dae813658e848e5428fc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/4e4de3154eb31fb3d0448cc8763a2763.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"古文百则\",\"isbn\":\"6786027095563\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/fd79b18f135beb3f0dfc3221bb93a36c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/0a2db7899a48330e85a6e347d458a3b1.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"云南游记百篇\",\"isbn\":\"6789780728026\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/958b8540bc5d6748473ab78028dcd54d.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/ce788bf179aa2e35562f2d0e7beb44ec.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"葡萄栽培\",\"isbn\":\"6789955059896\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/3880221bb4f730d753b7075cf4e2c011.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/cc5bd6bad3531ccf385d00f5221e2bad.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"如何战胜忧虑\",\"isbn\":\"6789589836040\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/35142ddde5075a1276cd014fc7dec8d0.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/e389406f39e781b7dbaa6c402c3997de.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"科学社会主义学习纲要\",\"isbn\":\"6789678803133\",\"price\":238,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/94e42054dfb3bf488b328e9abdc91d77.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/b938d01404e7f5c4b5fbe26c0dab88c4.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"相命奇书\",\"isbn\":\"6788633573822\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/f356c2f66b09aaf3bd68012199c374cf.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/e207d841de788df761bd7176fbe39ba0.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"泰姬外传\",\"isbn\":\"6789093971960\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/b162bf5e3a60502ab6e213f4f2316f12.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/6ce1d1a12e7d94e22924890dca677184.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"世界历史歌\",\"isbn\":\"6781938579582\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/1682b9aef582207417f29e0a460abd76.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/1b09900378b33d03cb0bbf7e5ee73a1c.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"古代哲理诗一百首\",\"isbn\":\"6781777523921\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/be402a956b0c2b45f9cd8797b32a427f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/63e81c3dea7659f6341e9ce3f88685c6.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"中国古代文学作品选\",\"isbn\":\"6782875126802\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/a15a2f8c69d3130bd8793befef5b5464.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/d00e897aa8f81061f59ea9ee9176f0cc.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"青少年自学 古诗文选粹\",\"isbn\":\"6786774824513\",\"price\":549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/372584d6152273d06edafba1ddc4d9d2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/94ef8f20d99cde8f6b57d12899428f1c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/f9a8074a16cc05bb5476135ca434e820.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"亚瑟王和他的骑士\",\"isbn\":\"6781998643187\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/3c3b316d0e759548fb57f3cb5c00e09d.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/9eb832f762400a382477a78abe88680a.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"史记选译 (全二册)\",\"isbn\":\"6780075006700\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/3332bb762073b87347a8c527614ee490.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/6cb384036c93031cf7ba3df659e51441.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/0c1818f94f359de1babab755f15669c5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/6a47a8b47661a48a7c5af3815eaa7054.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/cd16be5d313c7b32a4c7ad4922f7bedf.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"北京史地丛书· 北京西山风景区\",\"isbn\":\"6789895260221\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/4c2a359ac6ed32b86e02ad98e89ba802.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/9835169d14be7a3e77fac7aa7039b662.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"唐宋诗选讲\",\"isbn\":\"6782379252028\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/1ea21797580fc726040b8494e71f89f2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/c1b7573548a95b6ec5bb283070d4e9bb.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"唐宋词解析\",\"isbn\":\"6784514918111\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/8d83c128de25c95151a034e59e7612b8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/d14172bde9fbe6c6c2d61047902ba9ef.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"德伯家的苔丝 (简写本)\",\"isbn\":\"6783211010531\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/73a1be30db041a5f38e0788e72008bd0.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/55e691d976a10d422ac432b2da5f4c1b.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"清风漫语\",\"isbn\":\"6781301552528\",\"price\":3199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/b496cef091b01b7df85201c33eb53913.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/89af6d51fd6948684b59474b90e08994.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"蝙蝠侠\",\"isbn\":\"6784991491738\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/6e6977cfe03db90b98e3035229b79d22.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/39a6943929c6c1c48938ee60b3296c4c.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"危险的关系\",\"isbn\":\"6788438141694\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/cc9358dc31c00d7d22653258e204d70d.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/c9c20fc55088764f03c37016e8800449.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"哈克贝里·芬历险记\",\"isbn\":\"6785798893781\",\"price\":400,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/5d8fad643d631dcd26c9a10036ebac7c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/2cf3fd5e6fec69beb38e3a69eafc4b70.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"基辛格评传\",\"isbn\":\"6784111848921\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/dbe47e940e71f192d5a8e7ba99e8a44c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/fd75dfa758540cffc532ab0db2b111fd.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"迷信解析\",\"isbn\":\"6782260432232\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/105deab1ee1639c4daecd4345d48d77a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/efe93317c30d14176b234f10987d2ae9.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"中国古典文学名著题解\",\"isbn\":\"6785225308772\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/2ea9e5dc9a353fe623170beeb732a30e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/85cefad37ec1bf1582de4a1342dd8ec9.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"峨眉山奇遇\",\"isbn\":\"6789888628846\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/91fa3c33a168f5020553e8df578dd5aa.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/0c32211a81dca8d7dcf086682ea9e2f1.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"古原柳笛\",\"isbn\":\"9787531314028\",\"price\":947,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/4d9101216605bb24b877726c641d2108.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"读史有学问\",\"isbn\":\"9787544221603\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/fc6ad2e6b8b786b3f633197dc41a6101.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"三十六计智谋故事总集:苦肉计·连环计·走为下\",\"isbn\":\"9787503412226\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/28ea0c2fc940a5439a457e1f44fe100c.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"接纳不完美的自己\",\"isbn\":\"9787807029502\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/86cdffe76d7ae5565585adb180c25da7.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"育儿一日一页\",\"isbn\":\"9787800797859\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/8eb924f97c25141ab71104201b971d9e.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"隋唐演义 上下\",\"isbn\":\"9787500212157\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/5355f32ed2f22b53a52621e0ecfecfe8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/b9ba2b238ab50709a86fa02359e3fe7b.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"舒克和贝塔历险记(100集):郑渊洁童话丛书\",\"isbn\":\"9787507711967\",\"price\":589,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/a100183af002feb0ba434aeedd5bb1d4.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"雾都孤儿\",\"isbn\":\"9787560012469\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/8eada4febe71c8fac40feaa0712f2cc1.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":0},{\"goods_name\":\"差等生牛顿\",\"isbn\":\"9787530731413\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/32bc238c36783c1170725de49cfcc5aa.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"梨树实用栽培新技术\",\"isbn\":\"9787502358730\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/71004ce8d677cf2502e3dd4f92deda8d.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"欲望人生\",\"isbn\":\"9787531318606\",\"price\":589,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/7c3eeda92e26e231c1c1c35f59ca2369.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"诗人喜爱的诗\",\"isbn\":\"9787530204368\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/aafc69abfb85c21f8e5970d13f89c460.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"全图本名家新注汇评唐诗三百首\",\"isbn\":\"9787806690628\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/c9e0972f0302666503395cd41072daa4.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"庭院美化植物\",\"isbn\":\"9787504850089\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/26c60ecbae38b7de9e80a83a4477f806.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"北方果树整形修剪技术百问百答 专家为您答疑丛书\",\"isbn\":\"9787109099029\",\"price\":387,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/e521b3d035d1974989d08e55b7aef581.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"桃标准化生产\",\"isbn\":\"9787109122796\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/9afdc208feeb0d5a8d2ac84f020e337c.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"鸿爪雪泥:道的故事\",\"isbn\":\"9787503210242\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/6fb8c59b6dfeaa3298c1784ccdd2825a.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"中国简史\",\"isbn\":\"9787811033489\",\"price\":3799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/e6222418bf06c83af9bfb98e9629bfd3.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"彩绘全注全译全解周易\",\"isbn\":\"9787550237070\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/05c38f321c63228152302eeba0deaff9.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"养鸟指南(含盘)\",\"isbn\":\"9787538429046\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/2dacbc9765913b5d2de7a0f609e279a4.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"狼坝\",\"isbn\":\"9787500817956\",\"price\":395,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/65ca43664a8ba00f6cea20a7bc10b70d.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"寻找消失的渠勒国\",\"isbn\":\"9787205101039\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/f35844b996d674506c5d3dcf51158f6e.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"冒险河\",\"isbn\":\"9787530674260\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/f748634506d075b34902fca7b3e75969.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"程健写生与创作\",\"isbn\":\"9787531450047\",\"price\":2899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/fdc2d21570af3555868f7dffac8c4697.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"若飞故里:孙长喜·古城安顺风光画集\",\"isbn\":\"9787531442219\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/81d1bbcf3c134326cd0d3b45072cb373.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"中国画\",\"isbn\":\"9787531435198\",\"price\":204,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/7d460655b921fb1aa108cc28beda9824.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"山西大同万人坑发掘记事(日军侵华罪) 考古研究所 万卷出版社\",\"isbn\":\"9787547034392\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/b7413781f258699c9cc8b02c56ed007b.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"6ART工作室:美术高考得分点透析\",\"isbn\":\"9787531811305\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/84ed0e85c41147105ec0df5cdee79c62.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":2},{\"goods_name\":\"连环画课堂-西游记1\",\"isbn\":\"9787531333074\",\"price\":1084,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/1f8f10d159c7c7ea7ecdb15251a621b3.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"连环画课堂:西游记2\",\"isbn\":\"9787531333081\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/38bbac0c7f5f95afd381c41a9c982f51.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"连环画课堂-西游记3\",\"isbn\":\"9787531333098\",\"price\":828,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/e179e67c38a0dbcb11c97f2df338d3eb.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"连环画课堂-西游记4\",\"isbn\":\"9787531333104\",\"price\":1089,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/f634bcf09e30c4899c9c1970161e8ba7.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"连环画课堂-西游记5\",\"isbn\":\"9787531333111\",\"price\":969,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/6f1767fba696d3368300ea816710155c.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"连环画课堂-西游记6\",\"isbn\":\"9787531333128\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/0d6182003658b4a923676461248d3a35.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"极地线描课堂:静物篇(上)\",\"isbn\":\"9787531437239\",\"price\":1179,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/266b724dd1a57480626badbba377ced0.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"级地线描课堂:静物篇(下)\",\"isbn\":\"9787531437246\",\"price\":884,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/28d743243b8afd935c7d66ae7202ca49.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"极地线描课堂.动物篇.上\",\"isbn\":\"9787531437260\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/bb0ca916414fb45cf2709012cbe19c1a.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"极地线描课堂:动物篇(下)\",\"isbn\":\"9787531437222\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/fa505c60a80ef936a60047841ce948f2.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"极地线描课堂:人物篇(上)\",\"isbn\":\"9787531437208\",\"price\":1209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/889c2ef8c77202aee0a5de3a0fe47da2.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"极地线描课堂:人物篇(下)\",\"isbn\":\"9787531437215\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/315337ab15df0c5aecc1b99d08de2841.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"中国极地美术教育系列丛书:极地水粉课堂(少儿阶段)(第2册)(5-10岁)\",\"isbn\":\"9787531432289\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/cf40a91f62ca7e6f3fafeb4720382b9f.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"极地水粉课堂:5-10岁少儿阶段.第一册\",\"isbn\":\"9787531435402\",\"price\":585,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/ba15eaa9186b610af146576b458353ba.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"中国蘑菇云\",\"isbn\":\"9787205064334\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/98a95d3f56bc52c57825387bbdbf09a2.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":0},{\"goods_name\":\"剑桥少儿英语(第1级) 上下\",\"isbn\":\"9787560513454\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/c3a03354d2f3385b0c87348b1c7c37aa.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/13ea4a3deeaeb3ad2bd95c4cb0ae0b81.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"美丽妈妈育儿百科.0-1岁\",\"isbn\":\"9787501930395\",\"price\":1499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/602579e54056e93337e35bd161cbf5b3.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"新视野大学英语2 带激活码 带光盘\",\"isbn\":\"9787521325553\",\"price\":1200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/ebe49888f69c1d11f54a156e8a1fb127.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/49e93c87394a3f2b7b3723b9efe127aa.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/a1730da99ded7661fe80a14613bb44cf.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"管理有谋\",\"isbn\":\"9787516840269\",\"price\":377,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/d4df474cc32fcbac79b8dc1414633daf.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"各行各业\",\"isbn\":\"9787807314387\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/5d3f1604a12e3ffdc97ef6a57df03ab2.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"我们吃什么\",\"isbn\":\"9787807314387\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/db0bd50224b2b48c6e7240f73f348866.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"金钱的重要\",\"isbn\":\"9787807314387\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/fb2230b73647b95de663b63400e5d816.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"二十世纪大博览\",\"isbn\":\"6785240536990\",\"price\":3599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/1aca469bcc565f53b98b33756d524338.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/9e9503cc4a63a9f702a15cacf1ac0e50.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/eb24311146868206b4328cfabab42f41.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/f525fff5bea5d29cb3a6f61ac85c30c9.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/ce90a16977896008cf223f3a61eef52b.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"实用内科学\",\"isbn\":\"6780329857937\",\"price\":2503,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/7f895147eff4894240e3dfc8479e7a18.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/c51f34a15c2310e3bc2bea9d18376887.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/bfc526ee2878528a4a10803e636815ca.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/14d99c180ece7eed3d842036af91a8eb.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/7e2bcfcc3743801a9d6a8614fe6db451.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"千万个为什么\",\"isbn\":\"6785553099698\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/f809fbcb0dd6f820688a2b6c24740130.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/7f4abe6980032c75e6ecefe36a419d32.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/2a02ff6eb542a4092704e810176da207.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"中国渔业经济 1949-1983\",\"isbn\":\"6788428014451\",\"price\":4199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/f1351ecf96cf52df752b9ff9bbda0f07.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/96608893b5903f7f8fea6a1a36314cb8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/6b04195032afb1dced8e8b2ec423bef4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/29a763c41876b2be7720dac48eb952ff.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"辽宁省志.政府志\",\"isbn\":\"9787807114703\",\"price\":9599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/d6172a9f70520be83f0149966beb0438.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"辽宁省志.广播电视志\",\"isbn\":\"9787538128055\",\"price\":2699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/22b8ed8f5dcbfdcb73003887af46b645.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":6},{\"goods_name\":\"辽宁省志 报业志\",\"isbn\":\"6789634697540\",\"price\":5800,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/f844b30cada1baf2ca2d8de34cfef74f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/b7c382e8fe1c36b99974556d65d22d83.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"中国电力人物志\",\"isbn\":\"6786471692370\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/c182015f6e846e7bf75357486d1f9793.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/27e7fc8aff180b14d22ad1fcb543c895.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"辽宁科技发展概况 1949-1984\",\"isbn\":\"6787726583809\",\"price\":3199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/890941a880d15b4360e698453c9cc98a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/3a6a0de688c6e4c3768efc6f7ad46964.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"沈阳市 新旧街巷名称\",\"isbn\":\"6781302946460\",\"price\":2699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/49704dd3fb067a93590ab4ef5b8d7475.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/e83612bf185e71c7abec132d93d47420.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"沈阳铁路局中心卫生防疫站志 1949-1992\",\"isbn\":\"6789133568112\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/eb134ba7428938c358fc69d774910a3c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/555ec3598073f90e0efb71e687ca36e9.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"钢结构设计手册 (GBJ17-88版)\",\"isbn\":\"6786583590806\",\"price\":2399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/60f46261aa5ac490447b0d6d880f312c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/d28b361ae57ee20da8e9337226c263fd.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"机械零件设计手册 (第二版)\",\"isbn\":\"6786513689203\",\"price\":2300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/b21fa292f205e76dc18b92bdd6fae540.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/c2dcbc64996f52b2c12ff3cc1816bdf1.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"机械零件设计手册 (第二版)上册\",\"isbn\":\"6789317953699\",\"price\":2200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/0a8486fe3d1457489ceaeee185304805.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/6ac21d9438350b85ca9fa7ffb6b91aff.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"辽宁省农业资源调查报告\",\"isbn\":\"6789520898883\",\"price\":2687,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/16a676ed0b264d555fb3bac3fe3e8a5b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/a57bce7a617c50c851ff25697aa43610.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"辽宁省农作物品种资源目录\",\"isbn\":\"6781910300177\",\"price\":2799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/f73b2a441807b06e2fbc3d7ae536ebef.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/29bcb391774e659c66516f28e73a7092.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"饲料机械1984年合订本\",\"isbn\":\"6783156917778\",\"price\":1353,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/ec15352b048d7a73572fa347b03ca538.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/59dd5066aa124713487c83c93e4e5c17.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"辽宁经济统计年鉴\",\"isbn\":\"6789415005985\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/4b5ca7d9327687dd5ea66c4beb57803e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/9634c8431063f040ba46610ac29c2cd5.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"辽宁科技年鉴\",\"isbn\":\"6782192823676\",\"price\":2199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/2acee2e14ad089f9f3ece954346f4f57.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/c65aa82056463b8bb660f4f4c0fd1ddc.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"农业资源与区划研究文集\",\"isbn\":\"6785912148082\",\"price\":2999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/44dc73ad622d77deef49226c39778fe8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/0ae80f2400e183785963d89ab5e2ada6.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1}]}","source":"同步商品数据异常","time":"2026-05-21T16:07:12+08:00"} +{"err_msg":"更新库存汇总失败: Error 1062 (23000): Duplicate entry '17-2480-' for key 'uk_warehouse_product_batch'","level":"error","msg":"","request_params":"{\"user_id\":1965254774327533570,\"data\":[{\"goods_name\":\"300MW机组技术资料选编\",\"isbn\":\"6786283801505\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/3cc8d250e4a9f3f667debb9c7bb58da3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/6fdd2a62b313d1a5284501c62c80744f.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"中国历史地图集 (精装本)第八册\",\"isbn\":\"6789751923609\",\"price\":3659,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/402a038921df480b511aa16587e1d806.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/bd16fb2b16760850ae5e1d09de01aac2.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"辽宁五十年成就事典\",\"isbn\":\"9787806490969\",\"price\":3099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/077a3e1704e004ccf33fa490ba9776c7.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"世界争议文学名著金库上中下\",\"isbn\":\"9787800947292\",\"price\":4745,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/3e0bfb04aca2704b13989d6ab8f4ba1e.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中国改革 可持续性发展文献\",\"isbn\":\"6783192356978\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/782a6807fff9ecb89fcf2fcb862acad1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/eb76c3f5f23d40d1e9d0604036ff86ce.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中华私家藏书 第四卷\",\"isbn\":\"6781781025944\",\"price\":2279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/ce6f83df29d2c64611667f732c20aad1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/a5581ccee8c7c6d9531992f78cd97e52.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"国际海事条约汇编 (第二卷)\",\"isbn\":\"6787181989741\",\"price\":3589,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/1b68df445feb7a34126f35191d1faf31.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/33dc9b410b8533cf5f66e2b2e8dc26f3.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"劳动法律实用大典 上卷\",\"isbn\":\"6781681876880\",\"price\":4079,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/973457bb5ffbecf3031040e03a9c7c5c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/7b2fb93b1ab29f5e8f21ea0eb04bf47e.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"葫芦岛建市二十周年文艺精品集\",\"isbn\":\"6781235090608\",\"price\":1898,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/2e6ed7a93f4fa23e0938493438c9a1af.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/8bc6f6bdfa6840d9d400e3688aca30ad.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中国期刊名录:2003.3 上下\",\"isbn\":\"9787507602876\",\"price\":8129,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/2e9554c8f1cbd78ace12dfbebf91fee0.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"沈阳二战盟军战俘营图集 精装\",\"isbn\":\"9787531446675\",\"price\":3786,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/421a41fe41cf530a309315fbecf47486.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"依附·探索 : 苏联美术教育对中国油画的影响(1949-1976)\",\"isbn\":\"9787102066684\",\"price\":15499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/01b58921a95810fd33eb1972c9061b81.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/c2c3767711f2d02eb98a83dafd0c0508.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"男士毛衣与服饰搭配1680.个性风\",\"isbn\":\"9787506452250\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/1910e2c52bf71121f69a8b785ade13c2.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"Painter绘画技法完全攻略\",\"isbn\":\"9787302169581\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/05b234dee3db26d976be24fd442d44dc.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"《中国共产党辽宁省沈阳市组织史资料》 第三卷(1993.01-2001.07)\",\"isbn\":\"6782303429815\",\"price\":5500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/ba3fe6b125df8e3aca6d5b1e03a26c38.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/cf76fff8b0979f0ae20453b9628f99f3.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中国期刊50年\",\"isbn\":\"6787647648634\",\"price\":4599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/fdfde77b89b4c89ba7b8d5fbb84d79e0.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/9407f3ee517acdf2f320c0e61223ffd4.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"大连市第一次全国可移动文物普查成果选编\",\"isbn\":\"6786168558219\",\"price\":8599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/38ab884dbbe22004df77a90ce4afd3a4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/6b7aa4df013991a83b5e8738f0c5eb74.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"你问我答翻翻书:揭秘眼睛\",\"isbn\":\"9787533781569\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/ed7e12d8c6def382277b5a7bda716f7c.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"古筝基础教程\",\"isbn\":\"9787547700129\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/c02e215c824f96f8b42e9b493d5ea164.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":0},{\"goods_name\":\"我愛科學童話系列第二輯\",\"isbn\":\"9787545100662\",\"price\":1518,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/0ec7e767aa3b99bc980f8ce6c41cf273.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/34592db816aee7e96696c187f2ee300a.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"给孩子读诗\",\"isbn\":\"9787533943073\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/0f3897ce8fcbbae41ab3aaec7965a616.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"世界童话名篇精选.一(下)\",\"isbn\":\"9787531512882\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/cc9920279ca4bb6627678a4dad08877f.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"世界民间故事名篇精选\",\"isbn\":\"9787531512868\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/070b602f46a5f085c891c3239ae896de.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"世界儿童诗名篇精选\",\"isbn\":\"9787531512875\",\"price\":244,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/c7c1601e7dfa7c5920623402f05c4efa.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"新课标小学语文常备标准工具书 常用同义词近义词\",\"isbn\":\"6786543552275\",\"price\":2299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/68bddcf0958f37351b282fe210a322a2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-06/b0e0fe72a035f863e4798c4294cfe00a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-06/f0af707a8276bac6a46c0a4ed21eb94b.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中国古代文史巨著中国古代规模最大的丛书四库全书\",\"isbn\":\"9787546350417\",\"price\":490,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/b5cebf533786bccf16336389330b6a85.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中国文化知识读本:古代战役\",\"isbn\":\"9787546340951\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/8c0445488c4e8cff46f3fbbef7d15fef.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中国经典寓言\",\"isbn\":\"9787206070709\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/32e6901e96632696e53e7706d95d77df.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"世界名言警句\",\"isbn\":\"9787806266526\",\"price\":390,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/e8d659568a88fab162550352bfb58228.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中国文化知识读本:汉武帝北击匈奴\",\"isbn\":\"9787546350592\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/bd2dc6f618fcd91387cb84eec855618c.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中国文化知识读本:杰出的书画大家赵孟上下\",\"isbn\":\"9787546340913\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/8d6edbd4a71a9575ccc1fe2a1b9da024.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"米芾与\\\"米家山\\\"画法上下册\",\"isbn\":\"9787546341408\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/0405d4acdd4c62487e87d198eee84872.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"文学名著精华 : 中国卷 上中下册\",\"isbn\":\"9787538714333\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/c6e77adf6124a0c94f32a66e108dedaf.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"好孩子励志成长记全十册\",\"isbn\":\"9787530588451\",\"price\":1898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/a50a60c5bfca6fb4a75845087ead0baf.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-06/c001bb97ff311b6122f2b24b9e5e809b.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"道德经故事上下\",\"isbn\":\"9787503412301\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/2043a4547e8c19a64cff45702fc1eab4.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"中国茶经\",\"isbn\":\"9787546332154\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/807bc365fdd435d432918705a04f458d.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"思之魂\",\"isbn\":\"9787531331759\",\"price\":2587,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/238e579dd99e6fe2d7e479830e324ff4.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"辽宁曲艺史\",\"isbn\":\"9787561059166\",\"price\":2255,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/1b24e8f8ca92c324c62c4077225def00.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"崩溃的帝国\",\"isbn\":\"9787301235096\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/cd54a812abc86cc2be89df20c72006ed.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"犹太人智慧大全集(超值白金版)\",\"isbn\":\"9787511302731\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/cf4c775150843d663b5048631c2f9c76.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"十万个为什么 : 儿童版:人类生活、自然世界、天地万象【上中下 全三册 3本合售】【精装】\",\"isbn\":\"9787200053173\",\"price\":1998,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/52a0f9cf243f40370a97eeefff8a139f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-06/d6f0cc1e8525942a71e9917451c85210.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"盘中餐\",\"isbn\":\"9787514828825\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/9efa0fac03bc1c54d2c902b3e65b7caf.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"童年\",\"isbn\":\"9787107235573\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/4ca25ac1e4a192d48e6a5f35d2524a81.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"系统科学大学讲稿\",\"isbn\":\"9787300086187\",\"price\":7644,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/bd7739c9ecd9948e81a22069c15874b5.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"心灵导师:王阳明\",\"isbn\":\"9787512509535\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/6ce66ac8114fdbdbd0f30df10e62138e.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"循吏千年:百名清官启示录\",\"isbn\":\"9787205097646\",\"price\":3098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/3e1c3f71cb6843e119925e608e061f75.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"实用食品雕刻.菜肴围边精粹\",\"isbn\":\"9787805278391\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/44a202062c66427578f480c7bdce6ca2.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"咖啡馆轻食精选\",\"isbn\":\"9787538142891\",\"price\":679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/a103b76c7785a350f34abb6997161be3.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"中国古代航运史(单本只有上册)——“一带一路”系列丛书\",\"isbn\":\"9787563232680\",\"price\":4099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/e3667a5505742bd046d7a3d3b4544fbc.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"蒋新松传\",\"isbn\":\"9787516509999\",\"price\":1555,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/b1af5ac7a77ffc663b6764aaf6e8d1f5.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"古典戏剧故事白描百图\",\"isbn\":\"9787531428954\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/79e33c339e39602c3fcf8993cefbb855.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"人像摄影圣经:专业人像摄影技巧手册(安吉丽娜·朱莉御用摄影师倾情奉献,独创3D图解摄影技巧,人像摄影界圣经之作)\",\"isbn\":\"9787805015002\",\"price\":1197,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/cefdb2a48dd3f1355a562e176b962977.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-06/6e61e11fc2ea4df0e975e8a4d680e321.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"中国画语言与表达\",\"isbn\":\"9787806742013\",\"price\":1179,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/7f5f76727dcd7968eb8ee77d8dea088d.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"星光魅影:上世纪前半叶电影明星自述·\",\"isbn\":\"9787543923911\",\"price\":413,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/5473b40e9e6123c9d974611781c57f78.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"劳动争议仲裁标准与操作指引\",\"isbn\":\"9787301191217\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/cbf0dd176fe15209359129aa020a1988.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"经济学原理\",\"isbn\":\"9787547018415\",\"price\":470,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/dde360c865072caea5ee53be8403db92.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"二警察米海山 李玉娇 作家出版社\",\"isbn\":\"9787506393324\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/ed8572f8098764045f272d10f85686e4.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"漫道风雨(16开平装 全1册)\",\"isbn\":\"9787805668833\",\"price\":798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/d9b8735da1d430ec40db1e5b9da5328a.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"雷锋在我心中\",\"isbn\":\"9787810584371\",\"price\":548,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/ff88fd946a3a8ea7854d7dac5b461f71.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"军机迷\",\"isbn\":\"9787535326706\",\"price\":654,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/bf384aec953b1288b617b95da3bf1da9.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"2011上海文化漫步上海市文学艺术界联合会编文汇本社编文汇出版社9787549607006\",\"isbn\":\"9787549607006\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/ec06cfb966e33eaff518d3485aab5d47.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"导弹迷·白鳍豚梦幻军工厂丛书\",\"isbn\":\"9787535326737\",\"price\":589,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/dd503064e1bfa4c423d9973ebe472cad.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"命运之谜\",\"isbn\":\"9787539184609\",\"price\":211,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/73d9a783e2b269cdc6d38d23ba95ea2a.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"审计查证实务研究\",\"isbn\":\"9787511928825\",\"price\":2379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/02047b1c261aa0a2dcc22b76a609e2b4.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"打工女孩\",\"isbn\":\"9787532761005\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/5066187977975f71408d3b0427d98b2e.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"小王子纯美电影原图珍藏版\",\"isbn\":\"6782767410458\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/9a0923954b70144271300e83e536950c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/8d9be36eecba4b12730e7c87bb815453.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"小王子三部曲1\",\"isbn\":\"6786163274620\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/0e562d21416eb4d63daaba1b25b6c5df.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/d2da1aedecb37d388f0de166ab8cd5ea.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"沈阳掌故\",\"isbn\":\"6784641033260\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/79484695a7d7c3e4f5a70771513181af.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"藏地牛皮书\",\"isbn\":\"6782144285517\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/592abe00141ed10e2efe8bb1e83ecbcd.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/797ac6c935719de2e4a5ea75152edb31.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/11bf49cc629da2547b2cded0e29a5a21.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/d127349bc147cb19676a0fbdfcdf249d.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"白话二十五史精选 第二卷\",\"isbn\":\"6785144962028\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/d6d616b649bf295f716d89a9a1f6be98.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/1a6f830bf6fb13213757c86e42526978.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"白话二十五史精选 第三卷\",\"isbn\":\"6783498550092\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/b9f91fe41f9f9d6415471788b128bf03.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/aa7b2cc6f481159615a48f9d093a6ba1.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"白话二十五史精选 第四卷\",\"isbn\":\"6786292922676\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/3b203dc8548c37b301712144b30fa700.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/c64b00a89abaa7d5a1f39294907b35c3.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"纪晓岚传\",\"isbn\":\"6783565213257\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/72eee4d3914d81c10875772aa3f4720b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/9372d4502f2e58787c4f28f6535532f4.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"中学生实用英语小词典\",\"isbn\":\"6781127383568\",\"price\":1549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/bae70e3e91f9be6ae53a7dd0cfb7d386.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"教学参考用书 世界地理知识\",\"isbn\":\"6783580382425\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"wxfile://tmp_928be2b6f432fd1ed764803ae11a5e52.jpg\",\"https://img.pddpic.com/open-gw/2025-10-08/c13b55836ac2e8ef1240cca09b7e8b91.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"反欺骗术\",\"isbn\":\"6781639953488\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/8e7b4a654cedd89333f27c3f9d34bd85.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/3c1a977e823fbfad061d196a6ac31440.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"权谋术数大诀\",\"isbn\":\"6784892634818\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/8d6697040fac9fe950ecdeab03911312.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/5253a577e75b7efb639455adb3c512c0.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"是爱情还是欺骗\",\"isbn\":\"6781134303932\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/7d3354c7a001733344d98da5e8d0ad12.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/5c38ae8090e2b46c1e809b0490030421.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"40岁以后的性生活问题 白水百亮\",\"isbn\":\"6786844012723\",\"price\":1149,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/1ac83d937d584e054896d75ff51258cc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/049df44a8d7460b890347046976207b1.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"文艺理论上下册\",\"isbn\":\"6785718708999\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/9b9e78f19fd7cd129626bce838d7d436.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/e798bf3f604b64a146273a1b78a2eb2d.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"1962:中印大战纪实 师博\",\"isbn\":\"6789716948981\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/ef9b8c014ffd7acdc4a712d232e5f9ef.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/c7cd0e54c027e613da802aa64236a3d9.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"老沈阳:盛京流云\",\"isbn\":\"9787534413162\",\"price\":944,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/8eb3560e8ca7414ee3c36417c9b9d17c.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"一本书读懂APP营销\",\"isbn\":\"9787302469148\",\"price\":949,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/06e056396dd612d1f3d78af70c006071.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"最佳电脑操作短训教程\",\"isbn\":\"9787810658324\",\"price\":549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/1c761dcb8fa0118abe35f5df277a730f.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"日本民间故事选\",\"isbn\":\"6782276790966\",\"price\":409,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/377ab1e8784b0fc883bdfddc6ad85619.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/94d2b2a9a5446ff25ec4fd6141b136a6.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"经贸俄语\",\"isbn\":\"6784734883028\",\"price\":2199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/3b4c968587f00616880c5c9d139cf750.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/7294f62e205499555fd4dc40ce8ae55f.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"管理心理学及领导科学\",\"isbn\":\"6787401511252\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/2326f9c4c6ce3318200249c7ef967628.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/ca0caf1fa7aaf0a26eb62a3be4fcee70.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"二十个站台\",\"isbn\":\"9787540780494\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/9361dc7506a186a130c460851635097d.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"鹿鼎记1-5\",\"isbn\":\"6781482247323\",\"price\":3999,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/a423fef9b49dc1e9817113a4be9c6f17.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/7d19ee076d15623a969d238821595250.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/19cffdafbe6494a9b586d5ae20e05cf0.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"父母格差\",\"isbn\":\"9787532796571\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/75ec72413a13e8fb8f15fad778e38daf.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"水果类农产品安全知识讲座\",\"isbn\":\"9787502636111\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/d398ca1c80dd1e1fee965a7feff1c6b6.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"戏苑宗师——荀慧生\",\"isbn\":\"9787531423515\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/0daeaceac1e0f2732a3da5bd6c1db2df.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"中国绘画流派与大师系列丛书清代四王传统笔墨的终极展示\",\"isbn\":\"9787531429678\",\"price\":819,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/54248832e4ba0299bf9586fffb74de70.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"电力电缆选型与敷设(第2版)\",\"isbn\":\"9787122138620\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/e576e80654cc62261cf832d8ed84d5d5.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"毛泽东诗词欣赏\",\"isbn\":\"9787101070927\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/87a6b1b62ced5a5239206d830e24fc86.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"实用俄语语法 (词法·句法·练习及答案)\",\"isbn\":\"6781810828976\",\"price\":2199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/a5391a4562ce23939de5e29826500c12.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/cf8b1ec2d709c6df7a95d8c96114bacd.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"爱国主义简论\",\"isbn\":\"6789743512435\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/712b2b4647afa35ad7ef4c34adc37d1f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/c40194fc67d2cbe12dc2ee9f01ce8341.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"拜厄\",\"isbn\":\"6789575476235\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/eccc4d8165661516dfd93f0951d4380d.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/948b47c956a30b9b26700a660389d173.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"新产品开发流程管理:以市场为驱动(第5版)\",\"isbn\":\"9787121374548\",\"price\":2032,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/82087c550b2d30b30e1d297c8739ef5b.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"异性·风采录\",\"isbn\":\"6784694666980\",\"price\":559,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/d002f1802dc4f8622499f83b642d5662.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/9ce7cff84be5e67fd0e04462bb3a0f5d.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"哲学思想宝库经典\",\"isbn\":\"6789927950384\",\"price\":2999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/56ef258a339f22d82f6025e1b3eee542.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/bc901d0af053f6f31b5dbdc4f9454fc1.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"《漫画月刊》 作品集萃\",\"isbn\":\"6789884690912\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/55de3fc624720d11da0bf222b68f51fc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/9f42e55ec1a6e434cbda9cbd236b7e2e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/732b895c23b8a94d7579e8aeb07c0b92.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":5},{\"goods_name\":\"刽上下子手之歌\",\"isbn\":\"6782838212855\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/55cfe26e804dbeae8641497f936ae31f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/296ca3643256e37f8b964a561d64af70.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"长篇章回大书 呼家将上下\",\"isbn\":\"6784026443866\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/27d2a9535f7c3d1ba7a9b115171cd78a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/3ae743a887f865ca0a6feba94b3b22d5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/13530a26c44bf353eb118833f4d39517.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"则天女皇\",\"isbn\":\"6784282798651\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/08850776c71d2e7900020f66d16973a3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/9b9602c06295efefadd48d4e7ea945de.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"桥隆飙\",\"isbn\":\"6789863188568\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/ca8c24522f6b2d9618c22de01b54016b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/128ec9e7d65121a9f5442fbf6dfa8855.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"教父\",\"isbn\":\"6788500549833\",\"price\":582,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/d147d06d240d64645d4c663d502cb834.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/21893b6f4c5ce51e83dee087555e56a8.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"中国文化知识读本——笔著华夏—郦道元上下\",\"isbn\":\"9787546341057\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/9889b6e4a53c0640e0f8dc9130882f5d.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"三十六计全四卷\",\"isbn\":\"6786411018350\",\"price\":3990,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/14fd6e59970f8b079932e45e6483c3cf.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/64aea7f8d41bfc993c21b2d4d16488dc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/f7613735f5a2cceaecd01f1d77df44dd.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"资治通鉴【典藏本】全四卷\",\"isbn\":\"6784003161045\",\"price\":2990,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/06f69e1ac653c27d7710d46563deb9e3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/4461cc2b00de066d5e4fd3a1772b9dfa.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/a07ef9aa4b7634d5084aac73c5f64882.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/1182614217be0491253d0d79f420c0b0.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"园林建筑工程与设计 (上册)\",\"isbn\":\"6781056630469\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/3678c35184149022e764df871a2347c9.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/2458e9ebd2e048aea75787016b72938f.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"英汉词典(精编版)\",\"isbn\":\"9787119047256\",\"price\":1322,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-09/8e6166d7aa9d7479f306c95fed8aaf06.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"英汉词典(精编版)\",\"isbn\":\"9787119047256\",\"price\":3379,\"appearance\":\"90\",\"live_image\":[\"wxfile://tmp_5175ea7029ccc8ebbfdba85f91c070895e57dea3dd4209fe.jpg\",\"https://img.pddpic.com/open-gw/2025-10-09/11fed6f614d1dac28e8192d0265c3454.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"英汉词典(精编版)\",\"isbn\":\"9787119047256\",\"price\":2380,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-09/f10672e29ddde8b55c6165da9c634fdb.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"英汉词典(精编版)\",\"isbn\":\"9787119047256\",\"price\":3388,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-09/82af9c3f953ae42fba2b7250e635d418.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"陸小鳯全三册\",\"isbn\":\"6780999478876\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/896c5435312c54e6e91880fc494479a6.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/26ee223d75ab945fb52b04163da26699.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/b77947e7f07141e9ca34e8a559336155.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"倚天屠龍記全四册\",\"isbn\":\"6782820508594\",\"price\":2349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/e698e69c5198b8237839fd0e08aa96e5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/cf94470a4f150108de20e7689a6d2155.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"呼家将全两册\",\"isbn\":\"6787273635601\",\"price\":3199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/e6dfa5ef845cfdda0d40937849b0864e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/61543a3f09194449816c81da71c527d6.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"绝代双骄全四册\",\"isbn\":\"6783588505793\",\"price\":9899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/6fbe9ba6ac7e60a8ce66bb7e5cd36c88.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/265295ee3438a1f1bcb0fb339b3a9f5d.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"飞狐外传(附续集雪山飞狐) 上中下\",\"isbn\":\"6784567881169\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/1f0675f7a72bdf9c2e0d6557f77c571f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/bd5835e87de21f8561204cb0c2b3fb77.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/1753b339ffb8fbfa88b591ca67fe3c2e.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"米小圈上学记\",\"isbn\":\"9787536588196\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/10d929ea277d220b38125937a07464db.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"米小圈上学记\",\"isbn\":\"9787536588103\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/d5169082842168c9c70f63981371d231.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"暗杀局\",\"isbn\":\"6788373854693\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/1777bef7263353ddd77fadd8c8125d32.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/f19c1181ae40694a0ac892c2fd1d3ec9.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/f4cb009f7b6ef5eb2aab89c2be899ac0.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":2},{\"goods_name\":\"大逃亡\",\"isbn\":\"9787219030394\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/97056717bc4db219b2a0bcb527f6b44c.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"儿童沟通能力养成绘本:不要急,等一等再说\",\"isbn\":\"9787541495526\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/d8c6b5b5f3574e38eaf54127e0bd7fa1.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"儿童沟通能力养成绘本:不要哭,清楚地说\",\"isbn\":\"9787541495533\",\"price\":248,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/a7d3179612bde928fa346083378ae49e.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"儿童沟通能力养成绘本:不生气,好好地说\",\"isbn\":\"9787541495519\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/0cc162ee762225384a3e8f0d17d4bad6.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"儿童沟通能力养成绘本:不固执,恰当地说\",\"isbn\":\"9787541495502\",\"price\":500,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"原来这就是二十四节气(儿童绘本3-6岁套装全12册)\",\"isbn\":\"9787518613229\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/a77139a0b87d8f01d1649e0b5769eac1.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"儿童沟通能力养成绘本:专心听,听完再说\",\"isbn\":\"9787541495168\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/c90c7c3a149522e1e3fd03318377c7b2.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"米小圈上学记\",\"isbn\":\"9787536587748\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/1d55c8b1628d122451bd12d80ec54aea.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"藏在地图里的古诗词\",\"isbn\":\"9787557203351\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/aff2b556098da722b34b32ad2cf2f73c.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"毛泽东思想和中国特色社会主义理论体系概论\",\"isbn\":\"9787040566222\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/68f1c3becc0c700dfba496f783e03701.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"站成一棵树\",\"isbn\":\"9787533261221\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/fe4d09245e6a6b9bd0aa20e7482253ac.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"卖火柴的小女孩 郑柱子 陕西旅游出版社\",\"isbn\":\"9787541811180\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-13/4516dfe775534d5f16dd1fcc0fed3e96.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"啄木鸟 2017年第6期\",\"isbn\":\"9771002655000\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/3b9b98456f4c7a6bc90d8dd7cf250414.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-14/00728cdeab0b7408c2bfb9b1b6955e53.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-14/ad1e0c0b52a445fa78a530c33e3011a8.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"颈椎病诊断与非手术治疗\",\"isbn\":\"6780684930785\",\"price\":1499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/6174a73cdd1e6728721c2e258ade356f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-14/5c39ec7e1f3db7ef9bb2a2bd09cfb3bd.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"警察使用技能训练提要\",\"isbn\":\"6783836520589\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/10dbccea815e5acd2f429d863747d1a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-14/39720d36dd318034cf7c4e816df66339.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-14/ec4254a37447a41ccb4d4e5b3f64ece4.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"七日瑜伽:减压安神 (内有碟片一张)\",\"isbn\":\"9787538153705\",\"price\":1628,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"英汉词典(精编版)\",\"isbn\":\"9787119047256\",\"price\":880,\"appearance\":\"95\",\"live_image\":null,\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"春江花月夜\",\"isbn\":\"9787532603893\",\"price\":616,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/0db336c847160d96f3403816be04752a.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"家庭生活万事通\",\"isbn\":\"9787538176780\",\"price\":893,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/9d2b77463068617c905fd8db0cb97060.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"爱国日记\",\"isbn\":\"9787544108980\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/b45f1faa4e4f15786c16a569566fc3b3.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"古方养肾治百病\",\"isbn\":\"9787530888353\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/19ffe65540aa333e0972ce76c7e58857.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"怎样让孩子听话\",\"isbn\":\"6781471361595\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/fa235cd00effbca7bbd63154fe83ac72.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-14/248c8914ef5ee45a283404570f2fa810.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"认真学点语文 专家教授谈语文上编\",\"isbn\":\"6784667406521\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/1a773c159ebc630a7a8053b5039f3add.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-14/28fc05a3d27eeba98882085ffc1ee966.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"会计辞海\",\"isbn\":\"9787205014025\",\"price\":855,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/4e37f17b22050d3950a39377b5851093.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/5bf15ff1890ab75df2d2faae0e0b7be5.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"企业会计制度详解及实用指南全四册\",\"isbn\":\"9787501752041\",\"price\":4897,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/aeb9e05c4c93ab1892268e2e358dfac0.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"最新费用成本核算控制手册\",\"isbn\":\"9787500537960\",\"price\":3159,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/945349060887d9cf9678b3db6e3456eb.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"0~~5岁婴幼儿早教大百科\",\"isbn\":\"9787538440287\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/a52bb575b5bf7d75c132e41c8093d022.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"做人的糊涂哲学\",\"isbn\":\"9787504458926\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/394d84731f3912b871b24e81ba02759a.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"小学生新课标作文全能一本通\",\"isbn\":\"9787530410301\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/f0fefa5f2fd141ec90d1b9fd70359c61.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"夕阳美太极功夫扇\",\"isbn\":\"9787801780904\",\"price\":307,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/2160445d8f6dea0f3937926de65d945a.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"手掌按摩健康法\",\"isbn\":\"9787227013846\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/e564119268727c8c9405592dbc673c14.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"东北往事黑道风云20年(1234)\",\"isbn\":\"6783984376277\",\"price\":9000,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/e9c776467367ee2fd4217a01a0dd30e1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/71a465f16b405261d9a11189fb5a49da.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"中国老摄影记者优秀作品选\",\"isbn\":\"6786397838992\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/de763e4539f8460bce53f07a159a07ee.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/892474235a8476910732074dcc71dabb.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":3},{\"goods_name\":\"实用蔬菜贮藏技术\",\"isbn\":\"6785987020377\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/7eed3305ae2054e814ea3ab3888a8cfe.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/530964a3938e13745ad160d2709b0ff0.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"谈内蒙古地区养鱼\",\"isbn\":\"6782878132223\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/de957ae8f815dbefc0a37366399c9bd3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/e0fd162030413a27457edaf0d1326f09.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"现代汉语语法知识\",\"isbn\":\"6784721934084\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/49f5bc165de0fd129ae36cf82ebf29bf.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/a862ec570dc0501f68352c83dc518820.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"洪秀全演义\",\"isbn\":\"6783061206201\",\"price\":795,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/729dbcbd87c68f0954bbcf5a336743fe.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/388988286fd741777f76511a57f04513.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"秘传道家筋经内丹功\",\"isbn\":\"6786890241619\",\"price\":1587,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/eaa7685cd4f30a725a15c893591b712b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/7dc1645a8dcc25c5bebce85a4323cfd2.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":0},{\"goods_name\":\"指肚搿亲\",\"isbn\":\"6781285444340\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/ab508f214d44dd9a4d1455248a100d54.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/2c2c90b94da299d2bd2b3f512dc8d18d.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"名人梦兆\",\"isbn\":\"6783232767444\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/8c91890d5885f5240d8b01a8b292cac5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/d366cb86751ad651a950a7ed1e9c7800.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"船\",\"isbn\":\"6781111887857\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/a4ae2ed730c274199a75f9eac1223e07.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/51d766be504881a0f90b7936162ba7b1.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"圈套\",\"isbn\":\"6788586613003\",\"price\":649,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/5b508e96b18a29eca873be9b9dbda310.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/e43dbf2ec795bc557b39e24ff50da329.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"灵与欲\",\"isbn\":\"6789132594660\",\"price\":1049,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/009c84377b8bc8e3ae33db0bf795665a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/a13a9ac901d779b11e3d314526d38b85.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"冠心病\",\"isbn\":\"6788249638823\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/1389b36bddd1891359fb721d45527470.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/f831f0bb13e0851b39b434398f9a0625.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"中国文学批评史(上卷)\",\"isbn\":\"6787639582184\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/cb862643476b99cd062335e1d3a38d4a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/d46b1f1507e9b3d73ca128ff2907760d.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"机械基础\",\"isbn\":\"6788001422703\",\"price\":319,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/7c32d8bd716112d5b1c17d791b7c5449.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/743749f8aac6c865711096456c67e856.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"中华传统礼仪礼文\",\"isbn\":\"6783886150598\",\"price\":297,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/cadac7394a0671d589a22101fcd0fa6b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/4959e14659a9ba3b9d545d1197fad3f9.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"民间实用社交应酬大全\",\"isbn\":\"6789537708164\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/efd5588603f18c214ef085bce1750e9a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/0e8d80cb10d0a908f60b6795b7210ee5.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"蝴蝶发笑\",\"isbn\":\"9787205085360\",\"price\":1178,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/503531e80151142d8a18db4b3810ee3c.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"物权类司法解释小文库\",\"isbn\":\"9787802176713\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/0844a557031cf12aca5320aa4d9c8ede.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"慢慢来,好戏都在烟火里\",\"isbn\":\"9787577203713\",\"price\":1143,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/83868d0c126084e7dd23e481cafe01ac.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"红墙内外的独家报道\",\"isbn\":\"9787505930759\",\"price\":978,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/8fa4be0d3af7a874c3b967fb75e7a0b9.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"中药外用养生\",\"isbn\":\"9787538123371\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/7e989322af1b8fee0a437f0d2d61dbbc.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"隐身奇术\",\"isbn\":\"9787806012758\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/2167fa16064c3f48dbfa248b28fc2ea4.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"长夜难明 双星\",\"isbn\":\"9787572613012\",\"price\":1182,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/fdc9ad30b2a04a6cb7222ff7f879d8a4.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":0},{\"goods_name\":\"太空帝国\",\"isbn\":\"9787531567882\",\"price\":897,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/a1a5d0000191eb50b22b92529af60670.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"辽代官印汇考\",\"isbn\":\"9787561060513\",\"price\":10499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/b941d2e0cc928c5082a835a7a73d9036.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"微距摄影艺术\",\"isbn\":\"9787115219770\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/28c38c2b98ccc37edc392d91cdaec9d0.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":0},{\"goods_name\":\"国兰鉴赏与栽培图解\",\"isbn\":\"9787538140941\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/e16a24c2744758b284693f4d072f9122.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"中国君子兰名品鉴赏\",\"isbn\":\"9787503889240\",\"price\":1859,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/aa20a830e880fc9fee9d96465f4e27c6.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":0},{\"goods_name\":\"君子兰名家精品集萃\",\"isbn\":\"9787538154207\",\"price\":3356,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/c1a3f487898134a49ef166415c8b759e.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"秘密花园\",\"isbn\":\"9787544832953\",\"price\":2094,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/079bf5915bd543f3ca88d763783b7063.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"鲁迅美术学院作品集 有外盒\",\"isbn\":\"9787531418870\",\"price\":3599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/fb3e90921ff50109ca20b7ae019593ad.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"民国黑社会\",\"isbn\":\"6783437902987\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/49c1d03e36beee136ce9169ccb55214c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-16/adc850e84402cd21eb31805986a00e09.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"阅读和欣赏 外国文学部分(二)\",\"isbn\":\"6780653961693\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/f5ba8a874fcc9ebc3ee1c09935fc333c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/9b94174dc7dadfab7c22000e84ecaade.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"厚黑孙子兵法\",\"isbn\":\"6785751566423\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/d8532220778cfb410cb9c1f8ca8005d6.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/9cf36a6d050c55d9e685a111fd0bc626.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"机智谈判术\",\"isbn\":\"6780022728759\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/73d7ff9d4d4f71c409d3cdc7dae811e2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/741f3a06e5b0459baacb0ac0d7b12756.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"《十大古典白话长篇小说》丛书 封神演义\",\"isbn\":\"6782608196783\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/8ca43a7a3cf3dbbe80bb1e875cf6ec56.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/37e54ae6174789cb4cde0105adc976b5.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"元明清文学作品选\",\"isbn\":\"6783341091019\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/ded74f5f21ee2285ff0fb485ab199a33.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/b0472943228d1cb159afdd96e0b0a5a6.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"艾滋病及其防治\",\"isbn\":\"6786256885344\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/6228a8a7e03238c331b1b8e5ff743cd6.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/0e0dfcdffd669d614aa725954c51d0cf.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"护士教材 下册\",\"isbn\":\"6781667863562\",\"price\":501,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/d9391ab604bfa95d4789d89fd562f9f6.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"心理疗病术\",\"isbn\":\"6787499137646\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/22078e0074e7fb63a63e986c7e39bc65.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/a3e9383e531e4f2995cb24c594178b48.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"数学的童年\",\"isbn\":\"6788638188155\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/b3652463684e058a1f4e411f87e79050.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/b03955ea24d46c12d63aaa810b3d34c2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/9572d7d2f5b7f7aebd2c7dd93723a571.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"白话诸子精华\",\"isbn\":\"6787925758412\",\"price\":400,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/f70e763a8c5441353784a962d387b162.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/f8bae2dfab6b5737a3c9546bab7f9b28.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"蒋经国自述\",\"isbn\":\"6780794750845\",\"price\":400,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/2337ac6419327ee9596f1283ad3ac6bd.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/c529bb5708b089bf23ea25fb41c560da.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"背景(上下)\",\"isbn\":\"9787805957814\",\"price\":600,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/8b0ac21ae889b2cf78ba1badf2e7e3f9.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"中国古代改革成败论:湘岩文存二集\",\"isbn\":\"9787561046784\",\"price\":1499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/874de771fc41e782fb911a4393541976.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"朝鲜民族古代汉文诗选注(编注者签赠)\",\"isbn\":\"9787806446034\",\"price\":576,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/5e8f1f2da51585164fd3504a27958711.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"诗词赏析句典\",\"isbn\":\"9787538257298\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/8e8fc4f26d7ca9ac09dc25a5e8d6413c.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"实用抗血栓个体化药物治疗手册栾家杰主编安徽科学技术出版社9787533769420\",\"isbn\":\"9787533769420\",\"price\":2892,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-23/4b984180bf09a1fdcf26e11952c468c6.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"实用抗血栓个体化药物治疗手册栾家杰主编安徽科学技术出版社9787533769420\",\"isbn\":\"9787533769420\",\"price\":2089,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-23/552d3953c79b14b56c97af0cb81c4a55.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"恒此今生伴美玉 : 非遗传承人李洪斌大师玛瑙雕作 品集\",\"isbn\":\"9787544148405\",\"price\":1398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-25/1e69ec72a490506829a98f4e5dc2ff01.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"七日瑜伽:减压安神\",\"isbn\":\"9787538153705\",\"price\":1661,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-25/a9645d7ecf9a369cd6ffa35b6db55f81.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/720937e44fd742fc582300d9395be76e.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":2},{\"goods_name\":\"书名大国医谈健康\",\"isbn\":\"9787505141094\",\"price\":2379,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/61904ff8a87a8d1b51c8c796f8c2b291.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"儿童钢琴初步教程(3)\",\"isbn\":\"9787805530383\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/4e4f9eb6ae6e8951c7378a10c266b109.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/4c62690cbca3497edcd3f3f7192261f7.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"儿童钢琴初步教程1-2\",\"isbn\":\"9787805530321\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/7bc281c4f912a07eb5b0b534296947f6.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/efccaff7dbbdfde7701dc55c55424346.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"钢琴基础教程1-2\",\"isbn\":\"9787806672709\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/674e995f88b1f1ba15d6d5e99514f85e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/4ee0cca1d11788119f9db8f31bfa3722.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/35b40ff6f36ef177130c643d51aa3d66.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"柳琴考级曲集\",\"isbn\":\"9787806927786\",\"price\":5078,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/838d95e696fbfe0fbdd6869fd5a870b7.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"柳琴考级曲集.4\",\"isbn\":\"9787103048696\",\"price\":1301,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/984c417b2c93c0b1439fdb48499072b7.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"柳琴考级曲集3\",\"isbn\":\"9787103048689\",\"price\":1693,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/17099d1983a8a5762fd39952893e3ae6.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"柳琴考级曲集2\",\"isbn\":\"9787103048672\",\"price\":1065,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/618b6f00b58f6e1d0e226982010e9a34.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/a3694f6024d2619a9a7669c8d82ad59d.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"柳琴考级曲集1\",\"isbn\":\"9787103048665\",\"price\":1322,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/1f6ef85dafeb2d589dfce437d1881a50.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/bfea9f1468bb423ac15ec677f482aa39.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"正版实拍 评剧著名唱段选析\",\"isbn\":\"9787103020111\",\"price\":743,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/d99cbfa0af354186fa9c3e806a02f3db.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"《布格缪勒钢琴进阶练习25首》作品100(大音符版)\",\"isbn\":\"9787103060100\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/b078d0cc5db52e6ff8b16339c73641e5.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":0},{\"goods_name\":\"车尔尼钢琴流畅练习曲 作品849(大音符版)\",\"isbn\":\"9787552316582\",\"price\":1196,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/288b8deed0022b492acf4e1108c2373c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/395ab08b61c841672db7b04f8808a19d.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"莱蒙钢琴练习曲\",\"isbn\":\"9787544491099\",\"price\":952,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/8deeeccec4d377465956133f85e84fbe.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/9cd2b28746fd09a0186d7857be073130.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"久石让钢琴作品精选集\",\"isbn\":\"9787540445119\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/49a4558707c3156aebd0b74c45fedf5e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/6dea3609ee7535748b0fa2a5f5dff255.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"车尔尼钢琴初步教程 作品599 大音符版 西洋音乐 音乐出版社编辑部 编\",\"isbn\":\"9787103056066\",\"price\":629,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/6bafff34ffe2346a200b79f7205dcdcc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/8696c134f91b70a3cd05f8ee2310382d.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"中国音乐家协会社会音乐水平考级教材:全国少儿歌唱考级作品集2\",\"isbn\":\"9787539630007\",\"price\":488,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/db30a278d34f393e002d0f5f90f2e7d4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/6de6aa3c7e6bffa242c42eaf525819c1.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"钢琴考级作品 第一级 第八级 选自2021 2022大纲\",\"isbn\":\"9787103060247\",\"price\":3646,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/896290e5cc50f1b0012554f12c2f48f1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/7892049c409c2fcbce0f42a8491dfd50.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"巴赫法国组曲(BWV812-817)\",\"isbn\":\"9787544446617\",\"price\":572,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/2f0deecd61dc3d5a57afe37d8e602cb3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/31d598693ac2da0e4fd92e25e4018c56.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"阮考级曲集(小阮、中阮、大阮)\",\"isbn\":\"9787806922637\",\"price\":1798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/2d26c223919f199a962418402cace171.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/02b5533ede50a5cc0896bace95152cb9.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"给孩子的五线谱本\",\"isbn\":\"9787540486105\",\"price\":333,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/a8746f4f4516b43f39da4da03e624daa.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"我的皮肉生涯\",\"isbn\":\"6782815382677\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/bc648211fe6a5ef952ec3b8ccc3a6c07.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/b3bbc47cde11e1f19833ef22174381b7.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"《金沙》增刊 你喜爱的歌\",\"isbn\":\"6788920826942\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/0d90d4a4c4ab351e56ad3bc1d0d4a4c5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/a9422e14b8c0667addb217acd63088e5.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"《金沙》增刊 你喜爱的歌\",\"isbn\":\"6787259460381\",\"price\":1102,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/20ca06e5d4220b6c09fea752037dffcf.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/7501aa0794b73d02e44297a13273317a.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"少年电工\",\"isbn\":\"6786529988171\",\"price\":779,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/974ae56bbc2a68128c5d197e46384853.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/0e1164d6045175f1e02d4a2594247f94.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"思维技巧趣谈\",\"isbn\":\"6783874858748\",\"price\":529,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/48c29e41cc39f6025c3b2e1676743048.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/c89f3784e21804b4d8774e415519f625.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"中学生作文竞赛获奖作品\",\"isbn\":\"6786123612286\",\"price\":1787,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/23230d243c99c9c873492f79d5cc21f4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/ddf64cf5d1837de9adf03f6ecf816577.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"初中数学学习中常见错误分析 张子贤陈京文\",\"isbn\":\"6783806214345\",\"price\":549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/9024ef14fd05c0dd1a4ec393b2cc6a5b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/4b84cbaec5dc50689673335be14353be.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"全国美术院校研究生论文选(一)\",\"isbn\":\"6787333645820\",\"price\":2199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/58704da8b1a231e0559be22d1135303b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/f8594dbe2942421334a9ae6b9d4f6e30.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/6a9a6a7ffd5f2db48340ad5c91388869.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"太空漫游:宇宙中100个令人神往的目的地\",\"isbn\":\"9787555105220\",\"price\":1898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/d3090a8523fa0692f9772928a352a8e8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/e0154030832b165609814ace22136bb6.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"画说自然 林一白桦水墨画辑 吉林美术16开\",\"isbn\":\"9787538697667\",\"price\":2499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/de0a66738bf64cc8cccef203d7f33b0e.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"棒针编织2180实例篇 阿瑛编 中国纺织出版社\",\"isbn\":\"9787506445306\",\"price\":729,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/797839773da614893f631ff5cd5e533f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/6a7880d7c2f6583d815b306598d0e958.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"水墨画马技法研究\",\"isbn\":\"9787536810068\",\"price\":1698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/86400e87cd6d7f87507f0a0211f27b3c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/27fa496e043bc34d0f7abc26f2a933e5.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":0},{\"goods_name\":\"南一先生移植古琴曲集一\",\"isbn\":\"9787115475138\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/f5bed61b93b6061a4f4a7ca814e4971b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/283d2e91c18b26fb2ebca49f2755df08.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"经典棒针钩针花样\",\"isbn\":\"9787543928053\",\"price\":1079,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/b4160549e5cfc7dc532c28e6de762a8c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/cb62de5556269f3e72773dde939b11cc.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"英皇乐理线上考级(五级)模拟试卷\",\"isbn\":\"9787515362120\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/91da99766ef8a6ef64576662b5719b56.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/5f337b1cbaf7e8a9698a723e20663eae.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":0},{\"goods_name\":\"柳琴演奏艺术 北方文艺出版社2011年1版1印!\",\"isbn\":\"9787531727019\",\"price\":15799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/8b35be81e6a313f963ecaf66547d1476.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"人体造型与人体形象\",\"isbn\":\"9787530505700\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/9dd14a262439293691f1bce2d372cd2e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/519e75cb219bbac5d399254c91de38c8.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"手工坊2007时尚毛衣编织DIY系列:女士毛衣编织实例(秋冬篇)\",\"isbn\":\"9787506445269\",\"price\":679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/e6ad39f6e98aa2cc8437cfb6decf32c3.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"编织家园2008\",\"isbn\":\"9787506439848\",\"price\":397,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/3a730221908958c781fbd953be480df3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/0d8c56960cdca04a3d5560720af9f381.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"么喜龙书法艺术展作品选\",\"isbn\":\"9787531432494\",\"price\":3599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/b3556ddc441555b7b2947ace8faa0f96.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/dd6fa99896439928f6f1561788e14738.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"彩图版小学生必背古诗词赏析辞典\",\"isbn\":\"9787513806077\",\"price\":2334,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/ed4c8200334f5ea042e8506b3d93f087.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"辽宁教育史\",\"isbn\":\"9787806490044\",\"price\":2399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/757622f1410f90c4a1d1ef3174c9d52a.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"若叶心情第一辑《 享受快乐的单身生活》《一枚戒指的距离》2本合售\",\"isbn\":\"9787800057861\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/1ffcc213aeb58ce318809b5181cdd873.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"生命与信仰 克尔凯郭尔假名写作时期基督教哲学思想研究\",\"isbn\":\"9787214058911\",\"price\":2576,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/12549a0b6aa8d3449df2668fb41f8aa8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/6c005335034306fa4c41c51661098e29.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"天赐奇茶——解开土家族长寿县之谜\",\"isbn\":\"9787109220706\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/cbf9446c68811e199f146798965c7d59.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/0d5d947a16efbccaf9b2165e8c77be05.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"三毛散文全编 全十册\",\"isbn\":\"6784926858439\",\"price\":6399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/809bb376aae7f3bd60374d3a8b4849de.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/36f9295d6baedfe75442c912fc0095f0.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/74fa18245e8e524301a7f99fd41698b1.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"古典名著普及文库 全套\",\"isbn\":\"6785156785144\",\"price\":5990,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/310b346ad91ef38c0fc4f8979b9a8ff2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/363cd10ab95efac9ac34118fa17dcfa1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/72f19d274b60e9529e9aaef3c12fd6f3.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"职工业余中等学校高中课本 数学题解\",\"isbn\":\"6788526033373\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/f5e519abccefd08a6281fb814aee0a59.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/25d0a56a87a9ed6ee4da4417e1ad91da.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"板金工下料基础知识 (第三版)\",\"isbn\":\"6786244472298\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/6f3c0f20f47a09cd61fdb6aefd22418e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/ed639d334eafc16d0d6ed43da58eb114.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/7b7800c8cf9d5d648fafffcdf4d14779.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"趣味英语语法(一)\",\"isbn\":\"6788725020385\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/931f9122c67ae96492eeae7ca50dac02.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/d622315d95491e5d604fc709dd929cf7.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":0},{\"goods_name\":\"新阳光英语·听力过关 初中版\",\"isbn\":\"9787530352656\",\"price\":2479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/e6d49e91639fd444be031b91defb93bf.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"咽炎与喉炎\",\"isbn\":\"9787532350575\",\"price\":398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/0636bf2d43fea9898dd42829d74a878c.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"家庭问题二十讲 (修订本)\",\"isbn\":\"6788265952275\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/34fed832565c47280b31c63f50bb8687.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/1903f895c7876ef53213bf5e1e456a39.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"星光卡拉OK大全\",\"isbn\":\"6785956795506\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/9034bfcbeb51f3578f73f4ce0a457b8c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/637fb2b52c61193ac73781fe34bb6ba5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/678aac905c158a1f6f1a43de00fbdaf6.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"怎样打羽毛球\",\"isbn\":\"6784844950693\",\"price\":309,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/26362190042104157e184c017d1de65f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/e09eb606a8a57f6cddc392c367fff5ea.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/04fc541cc4b1fc9fd88cb7248d297614.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"中等师范学校美术课本 美术鉴赏\",\"isbn\":\"6785167764736\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/b123978ec87f63d506a95ba48e66e59e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/f5fe8a661f709f21dbe8f4abecf9a822.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"写作知识\",\"isbn\":\"6781820496390\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/f6a70310c3d4209906746b57da9664cf.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/7c4b40ccebbc0893787bf00b756b2254.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"小学语文教师手册\",\"isbn\":\"6788134001152\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/cd72d6d3c45aea15bb9394c2b3bb0626.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/a93b8fde6d087d608bc29d5759f553c1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/797f81c86c1818163205344cde4b7510.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"浪花集\",\"isbn\":\"6782495926014\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/68c8cdb46dd003d48ffadb138717fbb1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/0e2349e52d9175ab344da491f6f38b8c.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"进化退化与遗传\",\"isbn\":\"9787801440419\",\"price\":248,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/246fac6b72a602b79019ac965f5920df.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"木家具工艺\",\"isbn\":\"6780427840855\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/3edda5fb76047a307f70af316b53ebfb.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/3b4606b87f8c6cb24b346c6ea973118e.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"中级技术培训教材 机械制图\",\"isbn\":\"6786195733198\",\"price\":2699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/a422a8978f896265c78c19fd95b76b30.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/933d2dbaa6a29aba5654b1697aa231e8.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"服装折纸条裁剪法 (修订本)\",\"isbn\":\"6784590517065\",\"price\":3099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/6235a015d0bf7866f217cb82f5cffaef.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/9e1c49b06cba9dafde298c68d93a4546.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"草法金针\",\"isbn\":\"6780153151382\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/5130484e1c084fe5afa783561f04f0bc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/cede4c339959b65ce347de7a78b9600c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/546dbedf5b14373698800579f43aa881.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"乡镇电工实用技术\",\"isbn\":\"6788192852418\",\"price\":1798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/8bee3fa8ef7cfcbe74e73d6001065aec.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/81218fe215665c8f0ffe9fc937b5092c.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"家庭小菜园 大蒜\",\"isbn\":\"6787237056570\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/1bb46d6770946d10ee26286c9c513438.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/dbc42892993c27557e3ac76e1c838a22.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/c7b7a20a35dd1dca02f75371058747fa.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"围棋基础教程 初级篇\",\"isbn\":\"6788985853022\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/322c535ba6a3a3400431d7d38e67bb25.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/cd7463a664ccfe32d7e09bb8a1525e11.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"不等式 华昌年吴荣宝\",\"isbn\":\"6789736770735\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/cf49a43740909404f29934b65c1df8e5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/a28c47a94b9449162274fe1cf4574177.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/fc8cde13cdff75226f2f8e87b2bd78ce.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"中学生作文训练\",\"isbn\":\"6788394514191\",\"price\":488,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/d5389f893e9ab5bcbaf95cc621032831.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/302095c481c7580327b7f88cc8d003e8.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"精选名儒草堂诗馀\",\"isbn\":\"9787538265026\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/bc5673ec5e77cde03c9b2c56cc6df28c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/e5b813e5c7a715451138aa9a30875391.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"翰学三书\",\"isbn\":\"9787538265019\",\"price\":3699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/2bfe2d0c64602e2bea7fda47318d82a5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/0dffbdaea3f9312ab24a85291f9cbe9f.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"竹笑轩吟草\",\"isbn\":\"9787538265064\",\"price\":2679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/badf6e3021a2ce84f3560e3d641cc4dd.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"任之堂中药讲记 修订版\",\"isbn\":\"9787513260084\",\"price\":2135,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/24f4f9ae795f6612d994b1633c89a491.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/3fd7c710054241d6346d31e3b6eef9ed.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"恒此今生伴美玉 : 非遗传承人李洪斌大师玛瑙雕作 品集\",\"isbn\":\"9787544148405\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/b185edc5db5be95f682c1dcf018d4dd4.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"无障碍阅读全五册\",\"isbn\":\"9787100089456\",\"price\":1555,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/e040128dad729d19e6265c45bd2c442d.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/8449aba217685d790f4d1ec3b2a72f91.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"牛僧孺年谱 签赠本\",\"isbn\":\"9787806383483\",\"price\":15599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/2e64819a704dbc6c68e6d5fc2044758d.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/64435f9f2191321f5731aef9884559c5.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"国学经典文库 千金方\",\"isbn\":\"9787533554194\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/1bd3bb1c1e300c0104485422cb202dfe.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"丁立梅的阅读课 1 相见欢(彩色珍藏版)\",\"isbn\":\"9787520709453\",\"price\":237,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/8a61791204296786180e6c30e526b472.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"饮食细节决定健康\",\"isbn\":\"9787502823955\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/ac5b1cbd4f85ac9c0cf67688d324808e.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"英汉词典(精编版)\",\"isbn\":\"9787119047256\",\"price\":861,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-27/e8ed82551c099c51c4acd9a8233e4b1f.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"阿衰on line\",\"isbn\":\"9787541529948\",\"price\":10,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-28/33635f89ae71241bad0b4b9110fbdbd4.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"英汉词典(精编版)\",\"isbn\":\"9787119047256\",\"price\":861,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/693f2b9b3d288f24a2a108d8e3b6f61c.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中国历代文选 上下\",\"isbn\":\"6782592832213\",\"price\":1500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/0cfa3c31d8ac5860e68c5201400df9ee.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/8f9378d29618531d3f19e3dd83561727.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"托尔斯泰和他的创作\",\"isbn\":\"6781270016106\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/58976e9885550d4387a870c247e3ad1a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/b4b7222f1c31cec4bff76a1d206388dd.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"东北民间童话选\",\"isbn\":\"6783624072363\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/2afa4d057a321246e3f5742841ffd7cc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/b25fc2380a97e9cf572329984bcf8400.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"鄂尔多斯民歌\",\"isbn\":\"6780561292331\",\"price\":1879,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/7f2d4655ebd324b9a7dfaf6267358bbe.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/a7f8cfab2b015691bc5de4743280d00b.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"马克思恩格斯的人生之路\",\"isbn\":\"6783399681556\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/a4319642759f9305fb24f727ff6aa9d2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/ff818f5be6e71948b3c2915fe2bc5ba1.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"编辑杂谈\",\"isbn\":\"6787093770689\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/bc5a8dba17678edd35b16558342a9dc5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/a0eab0e7685d049c9da770eff4ed96ae.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"郭沫若少年诗稿\",\"isbn\":\"6786137238402\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/6bae72fc1596bdd8a452109c5928b4a3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/b4ff4ab2793f6f7079453b4e9deb65ce.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"马克思论艺术和社会理想\",\"isbn\":\"6780223014605\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/e4df46b031291f90790c21e7accbe7fa.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/02b55853f302d587bebb6b491efda700.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"我的经验一少数民族作家谈创作\",\"isbn\":\"6785249776157\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/b3112b9a8f29a858df95bc66b6109633.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/f26b2e4f60e197f2a9f49964743fa353.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"写作和语言(增订本)\",\"isbn\":\"6783365419388\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/f586aa8a40b7253bbd332b022ac77cf7.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/052d352039803dde991300bd0be0aa6d.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"文学理论\",\"isbn\":\"6781213462816\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/b71173139ba8d648821a23f781d99ccc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/6acd25613b356dc5711e6acde4a26170.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"大学语文 北京市自学考试课本\",\"isbn\":\"6786401936198\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/b984433aecda62f6455a74f616597b55.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/5cb8d51c15d7a56124fd7cb7cd5bc434.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"邓小平文选\",\"isbn\":\"6786889135927\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/80855454ce4ec3f7b1e04d4de8e6ded4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/6a97a25e8553a669701465996cdccdb1.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"莎士比亚喜剧五种\",\"isbn\":\"6783673814298\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/4572a9fb236d5e0be40960dbd068e841.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/b114c8269de22fadd6dbd9ef0248ffad.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"马克思 论文学与艺术(二)\",\"isbn\":\"6782605410535\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/b9e229371ef7b9b0943a297d2e90b66a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/0d35ac66bafdb4e1e1d7735f3e770b72.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"管理心理学及领导科学\",\"isbn\":\"6788358242411\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/34ae9e6740e390887b1b11124076bfe9.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/4af23d81a349fab14febc24b43e30ec1.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"“鲁迅论文艺遗产”浅探\",\"isbn\":\"6784667179041\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/17c327fa9e5beb731eb9aa54aa1e75fc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/0e1ac3c86e58740625729c5d8ef55084.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"辩证唯物主义与历史唯物主义 (修订本)\",\"isbn\":\"6783459883627\",\"price\":395,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/dccdd115284ee1de6637b18718d46f2b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/a99929d3087c2ce1ac43afe4c4d79d1f.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"文章原理初探\",\"isbn\":\"6783200508444\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/4b29a5d3010f103d4bfad0c2b86139ba.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/d4d6cd9cfaa905fff3ab45d39f45328e.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"郑板桥\",\"isbn\":\"6782621620864\",\"price\":549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/5289f99f1d592d6dd2fc26c114f418b0.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/073c5e715eda12ee56992d73bbdf7fa5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/a84f5eefe8b3b859e56a9973735b8ab9.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":0},{\"goods_name\":\"大海铺路\",\"isbn\":\"6789939431709\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/9cd74986ee7c74cdf209fa616c4d00a6.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/799bc4982ed84346211c7e891d94a45f.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"中國古代短篇小说选 八\",\"isbn\":\"6785505157470\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/01b1095095be0d450f471089ea90d318.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/b899349a01a676fdba6b173590b3337e.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"神雕侠侣(三)\",\"isbn\":\"6780948612915\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/bb7701af5f010b3670d6a7230af009bb.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/a09720d259550be11c8a063c6d39c0f5.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"江湖奇侠传 上\",\"isbn\":\"6789623078838\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/507c19ed836b9d401ef64b493d74e8a2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/992a2007f479f998baa508d9c74727c7.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"水浒全传\",\"isbn\":\"6787903074634\",\"price\":600,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/a285ca577d3fba9ea4b77f95ab5641c0.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/47b891d94288d8b4a557392cbbc1c803.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/b387208a2477922cbb811bf700d0abb3.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"现代汉语虚词用法小词典\",\"isbn\":\"6788864898015\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/f2ca660cf3e09cbf081bc2f06e26f487.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/a695973565c40a22e98cd196b440d761.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"全国中学生优秀作文选\",\"isbn\":\"6780398359641\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/bf3c05d7b631b57748571a237ae9d37f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/7cc76cf3b3f3a57a0ca09e2f7f1691cd.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"中国古代教育家传\",\"isbn\":\"6789005988223\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/b6abebc8e800a71ea88361de580850ee.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/c1f65fa478b931284461fe9645db2024.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"青楼\",\"isbn\":\"6784416485610\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/7be72e247062ab0f2cbfc7f66ee026a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/8c0bebe908ab38b2ff9cea6c284a98fb.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"万物起源翻翻书\",\"isbn\":\"9787517604440\",\"price\":419,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/b164e08bf4e1cdcf33c92ddf7b5b0805.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/dc52dd88c137adfe640695a0df552da9.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"大学英语四六级口语30天突破\",\"isbn\":\"9787501219261\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/ebad0342a2210c5e7d21842fe1b4452f.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"金陵春梦1-6\",\"isbn\":\"6787516459535\",\"price\":3049,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/08adc30dd24aa5d711d44d82cb725d04.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/473a2ec6778b0e14be22d81772cac966.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/4a1caa62e44219248b7e5aaed2fee066.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"小学生皮乐乐的趣味科学书7册\",\"isbn\":\"9787512621053\",\"price\":2699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/7a5f68948acdce850791f045698748d1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/2c685c89fa625d9438863b9f160251bb.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"小学生作文好词好句好段\",\"isbn\":\"9787544173025\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/7e0af02f102bceb157b87390a6eb7fc3.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"小学名校优秀作文赏析(小学三至六年级 适用名师点评版)\",\"isbn\":\"9787544172981\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/af6e1637cd9f7c2004bb75ba8a2d62f0.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"小学生满分作文名师解析\",\"isbn\":\"9787544172998\",\"price\":220,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/dfa9c6774d28bdf6cde1f47db64f5b02.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"小学生作文入门与提高\",\"isbn\":\"9787544173001\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/f4b2123f87693a9fc8e109d540d95e07.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"美与审美\",\"isbn\":\"6789640483050\",\"price\":424,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/481c6f9451b1c4c3965243617b37f25f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/1e33a15431b8cc2027fdf8a216eee9fb.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/37bb9ffb1625a784161032c15da17be8.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"当代西方哲学思潮评介\",\"isbn\":\"6784693099809\",\"price\":479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/9a97507b021b498025f9e95249981df2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/6a6023e57519ca0821436fccb94a2b42.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"当代西方经济思潮评介\",\"isbn\":\"6786311835645\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/8fc33db837d87fbbfe245fea8b272885.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/4ae41c957a9ed57c182e4dec41cb34a5.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"美与审美\",\"isbn\":\"6784855523818\",\"price\":429,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/b508b3867dcbadbc2e6504cf077fdb90.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/0d618c4e3f2f6c6f056ba408b74cbead.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"当代西方政治思潮评介\",\"isbn\":\"6781393165605\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/20a6f24a2a81bfc19035b491a20d87e4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/2cf4bd8a309b3c441b34f7ed9b6d9875.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"军人常见法律应用\",\"isbn\":\"6783158211687\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/449775be3bbfd6ed2b559053339961d0.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/ae2182e9d5f3652acd7af71b49bbf01d.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"军人价值论\",\"isbn\":\"6781706259043\",\"price\":3799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/02860c1f391672d35bce4298f66c6fe4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/5046e43bcc6ac45a2ba6ae0f0df82aa4.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"当代西方政治思潮评介\",\"isbn\":\"6788472587164\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/8e4e64211ea7b85ae6650af24fe65d95.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/035441fc301927e4629a0de6d5977fa1.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"当代西方文化思想评介\",\"isbn\":\"6788677714601\",\"price\":3199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/39e1ed31282db329d82a6bbc83383ba4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/ab6560dc6aaf467cefac9919ef2cca33.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"当代西方经济思潮评介\",\"isbn\":\"6789432266066\",\"price\":702,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/b726d8f6e207a4fb1ffb59a317b2ee9a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/68932c1897d6d7b830a41fab8284183d.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"数学教师教学用书\",\"isbn\":\"9787303147250\",\"price\":1898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/2150a9cd8001e72b57f760f23220a7d1.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"鲁滨孙漂流记\",\"isbn\":\"9787100089463\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/969d160437d64b011c285a0855b9214e.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"果树工(初级)/职业技能培训鉴定教材\",\"isbn\":\"9787504568762\",\"price\":797,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/b1ed621a4e852fa797d588bb582beb82.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"蔬菜工(中级)—教材\",\"isbn\":\"9787504568519\",\"price\":950,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/ae621ff6cbd15635b2f4f16a7579c0bb.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"新编实用家庭医书\",\"isbn\":\"6783182985351\",\"price\":2997,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-31/8e3f8129c1fff79e7b0b8b5c5be8d8a8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-31/a6271fdfb7a90f396373e56b5aa8518c.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"神奇校车 全10册\",\"isbn\":\"9787221091857\",\"price\":1800,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-01/e06d83e75937860724ab55bc6733b7e5.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-01/db71288006730f1400252933a0e579c1.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":0},{\"goods_name\":\"恐龙王国童话 美绘本 全六册\",\"isbn\":\"9787520001656\",\"price\":800,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-01/a8b2748b2d4459d63891f1ae3c0cbd17.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"第二教材. 四年级语文\",\"isbn\":\"9787545120349\",\"price\":509,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-01/6521cc903d05aaa92518856cc40c997c.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"小学教材同步作文全解 四年上\",\"isbn\":\"9787545042801\",\"price\":200,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-01/c52cace9d782c3f301402e827959ec75.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-01/63a8f737aebfc66128a2a51c25c83777.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-01/4b4ed881a6ec84c20b85a431a659cbec.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"新课标小学语文四库全书\",\"isbn\":\"9787500073727\",\"price\":200,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-01/d00e76f2f1e6080eea139b5410395dba.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-01/8c8864ce2cbc48439709651404651731.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"你好科学 地球套装 全14册\",\"isbn\":\"9787556026760\",\"price\":3343,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-01/db9b23f9367df179d00aa97438cd03a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-01/9662f1c45e9c02d2f6b18a1d4062d573.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"铃木绘本向日葵系列(适读年龄6-9岁)\",\"isbn\":\"9787537651578\",\"price\":2000,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-01/cf9212a9b3198e5d204e4bca905686b3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-01/ff47a7642cf376effa211ce31c063149.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"医疗体育常识 慢性病体育疗法\",\"isbn\":\"6787014448245\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-01/d5c80c337023facf39ef13144e1e6b1a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-01/70ffc101bb064b32216014abc9085ad7.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"手足按摩指南\",\"isbn\":\"9787563208111\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/c76baf16f483f81cca954be2473a624a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/e4fe6613edde3ccf517156425313e7bf.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/c8ebb07ebbafc12f35f7aea57fe93b0c.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"中国历代神童\",\"isbn\":\"9787800761409\",\"price\":369,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/3e95dba7dfccd524dfe5324253e20e8e.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"诸葛亮与武侯祠\",\"isbn\":\"6782733170136\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/7e0c262b8d3cf9577901c334e5797782.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/04e0ef0f1d11c87ff6f5e6becd6c43fb.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"我与悲鸿 -蒋碧微回忆录\",\"isbn\":\"6788601102309\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/0ce9c8eaf5c9a443ae171c593613f91c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/eb7d83a0cf9e04bb106bb054344a0234.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"古文选译 增订本\",\"isbn\":\"6782522437636\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/5a50cbc8aa456c91ff7e5f516fc51565.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/a616f27ddf7e4c7f831fbfbc29652226.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"李闯王在河南\",\"isbn\":\"6784947148603\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/b6c0d600e283f5d494dc4f8a1d1327f7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/1dbd312e9dcba71821a7e32ebf7cc004.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"蝴蝶梦 (简写本)\",\"isbn\":\"6783383962167\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/142a1f243efd917040607cd2b58908b9.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/ea8561d7e0609258dc9cfd04d27d3dab.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/33737da6ec11571050310bb884a2aa78.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"中国广播电影电视发展报告(2019)\",\"isbn\":\"9787504383303\",\"price\":49,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/7e83efebcff08032463711ad9bb30040.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"毛泽东与周恩来\",\"isbn\":\"9787806262122\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/5e1c26ef72382b8b7ee92eb996f889a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/305cc312dd3530db7abf809606fcc13f.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"公共管理学/高等学校公共管理专业精品教材\",\"isbn\":\"9787516144015\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/4613fd9535aa7e6dd5ea7b2bd0b3d377.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"党的十九届五中全会建议学习辅导百问\",\"isbn\":\"9787509913550\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/480a4f69256cc79f061feebb888b57ff.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"小窗幽记译注\",\"isbn\":\"9787538299212\",\"price\":6387,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/1a3cdef96ba4ba7234bd4f4065353ebf.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/d45a7ed9dcfc39337d68612f2129dae0.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"中国人民银行关于国库会计核算管理与操作的规定\",\"isbn\":\"9787500546535\",\"price\":679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/ed0c9a04b8ff9ec2735672cf7878792c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/e5f0c617067a9fe75ec6e5088a523db4.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"教育,向美而生\",\"isbn\":\"9787300268965\",\"price\":653,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/474753d6c0623c23de9cde1c80b61e4a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/54ceb5afb2362a40988964ca4c762042.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"好山好水在中国全两册\",\"isbn\":\"9787512639294\",\"price\":1698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/c425574f5334fccf6ba4484775ab8dcd.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/69aa43524ccafd03b80f5661da3d30d5.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"古代汉语 上下册\",\"isbn\":\"6787817359219\",\"price\":4199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/2495212e7ace685925b32c16b128b276.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/38fc6bfe3b86c0f7caedc1d9bb519cd0.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/3d17f0992f13507d85f479fdddb98984.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"桂林山水诗选\",\"isbn\":\"6788124393990\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/f959b998d1c5cd265a004bca1ffdf3fb.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/f188414485a380d3c34976b4c31a1a23.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"中华民族杰出人物传 第三集\",\"isbn\":\"6781460945299\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/329c6bf2d34e4757f5eac81b668bc184.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/6fd9bf394f7e6bae4fb6bd73ddbd25db.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/c05c7b65b969c7023fd11d8d203ada4b.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"人生世事格言选句\",\"isbn\":\"9787205083878\",\"price\":520,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/4e2b9a6540e521fcc4a067a58f9ea9e8.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/559b9753f092572968499c97bc6354f5.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"彩图中国青少年自然科学丛书34567\",\"isbn\":\"9787205035617\",\"price\":248,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/722d23d2230158fdb20c2d7c30c86d05.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/d8de65acdeae2173e3aee51ebcc2dc12.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"新编建筑分项工程设计施工技术图集 1-4 卷\",\"isbn\":\"9787900305794\",\"price\":9999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/9cf53de24ce87a28a6199e76ff19429c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/737d71269549e5a81c72a89208b777b1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/a25cb6bbb116573a4798bae9f4f3e875.jpeg\"],\"location_code\":\"NS-B6-4\",\"inventory\":1},{\"goods_name\":\"(全本·珍藏) 我不是教你全两册\",\"isbn\":\"6787868815759\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/9b7b0304b6a87172bbc2c87d794be95f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/937478a2443856e6a7653a50da8b57ec.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/4a7b3ec25ffe57bbc3e9fd33a1f56408.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"回忆我的父亲卓别林\",\"isbn\":\"6785742483021\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/3e610122dfe4e97d9ec3597b31485188.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/d12b403c2157896657f3783ed87b42ab.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/fed4606253c98dac53c5b57ba0bc6d13.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"少帅传奇 赵云声李政\",\"isbn\":\"6787858247436\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/50dbfdf93d829c6e4bdaab8fc9320082.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/060d8d03efe16360ac1d71a1a22ba411.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"白话《围炉夜话》\",\"isbn\":\"6781434783370\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/f49f57104c26ef1ab72faf961e18e912.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/0b24b5da7fde06d32f4cbbb16a2205d1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/bce76cf2907132f227f9e0e3f8ad85f7.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"欢度晚年\",\"isbn\":\"6780349430065\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/2f8584e75e3a97c440c76453a4d83196.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/d7be1e3197becd38a5cc83bfc996279e.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/8a19a24f6342c6249506fdf69f50b3ec.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"李白\",\"isbn\":\"6780674944523\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/6e656587efe473c06bb0ba2c6587b227.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/d5aa62082499cae231605bbac9c28850.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"爱的波折 (原名《白鲁尼卡》)\",\"isbn\":\"6785340471596\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/a4838d26ea8903f0e1aa3d11d60a2fc7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/849aee4f4faefee6bc80cffb3b8c5dd6.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/189e07eecb94ada622d3e2924b1aba29.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"中国传统文化奇观\",\"isbn\":\"6782762188538\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/cf4cb2eb5a7d42707847e29080bfe79e.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/47612a30f6ff807ff43eaffe9a3ac95a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/7965dea0bc5b434ef1f553c844c754b5.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"杜诗散绎\",\"isbn\":\"6788006700429\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/30c277e0dd67234075e8144363c8012c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/a24772b95c70a20fc9de4951ea8c5df3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/030fcb5409433840f3abc4d3c4ed6124.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"海 瑞\",\"isbn\":\"6781562338598\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/f7f163c2763d926d777160946b9ad24e.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/707f1c4e877ccc26b2fff57046591c10.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/0015d153d51b506989c54df20b521633.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"达尔文\",\"isbn\":\"6786967381627\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/4337a99398da65320bf02e7c1954e8e4.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"河南名胜古迹丛书 岳飞与岳庙\",\"isbn\":\"6785911123330\",\"price\":2289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/ef08561abbf3b7b865cba287861b503f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/300869378d41a10a6f5ad7d75c30f97f.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"续孽海花\",\"isbn\":\"6786282691582\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/443827ef43048f001ad142e1c7ca03dc.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/ee6120af6a39f5adf921ee8a4e76a222.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/b94b9f422ffb9a332bdeba718bd780ef.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"佛国都城\",\"isbn\":\"6787627702610\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/39244c73fb4096abd18b2c65f0328904.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/6ace2f87df24e6603a454572dc900171.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中国古典文学作品选读\",\"isbn\":\"6782558859463\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/8db9fb2d2600ac140f5ef58a9b0000a1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/099c28e971856c174f2246d67f9ce7f3.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"全日制十年制语文课本\",\"isbn\":\"6783396128014\",\"price\":298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/596cd38c26b9a2de886908537e62f180.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/0a923d8f93cc230bf74b17a88d49eba0.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/a6e7fa5b7f66926be2f7ec9a0a2f05e8.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"古句新用 杨为珍\",\"isbn\":\"6789685813329\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/444a4199c4afa0bc2076169c45826fd6.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/82b4a54a2ee019e4e5c6ba37ac0a3b08.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/da682359bb976916e38bf11af9d19ce2.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"红与黑\",\"isbn\":\"6787885677842\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/7d719df1ea76922941673a535dcb0449.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/67232762833a1182d7b16705d67a3b2d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/1e93b849046ae046186e95ac635e36b4.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"巴尔扎克中短篇小说选\",\"isbn\":\"6785228942497\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/1a6f37937a92c93d07f6acccfbe37b84.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/beafd389dfa88923163e19a462711e9e.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/6a9fd20100614a53e3d23c687eae0e2f.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"新课标小学语文常备标准工具书全十册\",\"isbn\":\"9787511272546\",\"price\":3799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/2798c4bdf2f4b7c9814213aeb070b794.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/d4f9118c7cf275c462a4eefbdbf9e247.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/a29f4c8264a9147fa8081e36973d8a0c.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"歪脑袋木头桩\",\"isbn\":\"9787533299064\",\"price\":100,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/8fab13e441b00e99459870a0c0da47be.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"一只想飞的猫\",\"isbn\":\"9787533299095\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/45d7405d3ebb9d8a9eb79c244b583d62.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"中国王朝兴亡史\",\"isbn\":\"9787810420204\",\"price\":1766,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"七日瑜伽:减压安神\",\"isbn\":\"9787538153705\",\"price\":1661,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/866defa14402974a468e129ea2ece729.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/ef81b25bde0371bfc20bdda910404545.jpeg\",\"https://img.pddpic.com/open-gw/2025-12-02/83685f3e-f7d6-458c-bd8b-adba8d2ba4b8.jpeg\",\"https://img.pddpic.com/open-gw/2025-12-02/c80f46f1-c640-48fb-b4c4-bf7f65186f7b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":5},{\"goods_name\":\"七日瑜伽:减压安神\",\"isbn\":\"9787538153705\",\"price\":1663,\"appearance\":\"90\",\"live_image\":null,\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"实用抗血栓个体化药物治疗手册栾家杰主编安徽科学技术出版社9787533769420\",\"isbn\":\"9787533769420\",\"price\":2258,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/847f850d755018c6f3f032061e6fc28e.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"七日瑜伽:减压安神\",\"isbn\":\"9787538153705\",\"price\":1659,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"七日瑜伽:减压安神\",\"isbn\":\"9787538153705\",\"price\":1657,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中国人民银行关于国库会计核算管理与操作的规定\",\"isbn\":\"9787500546535\",\"price\":266,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/0f58fb48eb2ba6220ba07bff5b2f3460.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中国人民银行关于国库会计核算管理与操作的规定\",\"isbn\":\"9787500546535\",\"price\":266,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/d92dacaa262c591e62a8689c7c4a1151.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"教育,向美而生\",\"isbn\":\"9787300268965\",\"price\":629,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/0b1530fe12f38d400143d7b7b9ac002c.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"实用抗血栓个体化药物治疗手册栾家杰主编安徽科学技术出版社9787533769420\",\"isbn\":\"9787533769420\",\"price\":2604,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/9a2a1d3d47a21278c65b5d6e21a4c4cf.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"仿妆女王画出超正大明星\",\"isbn\":\"9787122260451\",\"price\":649,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/8bd87b55c7fe92a13d3a23a6b51af4eb.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"(签名本)黑血城\",\"isbn\":\"9787805066318\",\"price\":776,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/725133f67e2e47b5782bdf66f0db5316.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"循吏千年:百名清官启示录\",\"isbn\":\"9787205097646\",\"price\":2370,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/ce5ee38338c64a557a81bb7b8b0cfc29.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中国王朝兴亡史\",\"isbn\":\"9787810420204\",\"price\":1766,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/87d874f1eef855a9f496aa4b53c2e1b8.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"《书法常识一本通》\",\"isbn\":\"9787547012536\",\"price\":3742,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/6df649479251c6a98335d0c3a3c9de64.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"你说数字我测运:百数易典·数字占卜\",\"isbn\":\"9787807298472\",\"price\":917,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/a63b74908928e7a357e5803bd690f950.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"米小圈上学记\",\"isbn\":\"9787536587748\",\"price\":1000,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/f7ca3c1ea6b0ecb94e807700dd098cd2.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"百年正气\",\"isbn\":\"9787205104672\",\"price\":4366,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/fa19598ef8e1dcf8331ab88cce7b9f99.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"米小圈上学记\",\"isbn\":\"9787536587748\",\"price\":1900,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/9f8cc2ab9dbac9f965da90baef84b79e.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"米小圈上学记\",\"isbn\":\"9787536587748\",\"price\":2800,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/8d37d0870b9149019db96f9044db5fb4.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"奇妙假期⑧·坏习惯涂改器\",\"isbn\":\"9787539575063\",\"price\":1900,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/955f956be3f366fb98c0d9958204d0c6.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"横冲直撞的恐龙宝宝\",\"isbn\":\"9787535886804\",\"price\":1500,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/8d3807b68e9daee9394cecabcd502920.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"我是女兵也是女人\",\"isbn\":\"9787510839139\",\"price\":746,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-06/8e04ea71906466909415bfb28a4c485a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-06/f2c13ef3121dc834066536ea1058d5c5.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"珍妮姑娘\",\"isbn\":\"6788883395181\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-06/f98ac9dba086f18ae2297e560bf21881.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-06/36d21465e26277d845e600f965c0f9cb.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"北京名园趣谈 陈文良魏开肇李学文\",\"isbn\":\"6785644709158\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-06/b72b3e689c71cdfb7280aabab37a65a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-06/1c388967922c5e8099aee7813eb70b7a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-06/1ee15e43c29cf7b4ae33404fe925729d.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"尹大力编 古代格言警句选\",\"isbn\":\"6787358850614\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-06/6ef46b1e9fd5db9b7bcc537b5fcd1267.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-06/ef11f97fa0101b210dba78ed70148c24.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-06/93228ca53c8510b8633caf21a5f07060.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"好山好水在中国\",\"isbn\":\"9787512639294\",\"price\":9984,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-06/f84ec3d678b78408fc40e01d01ce4ec3.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"我是女兵也是女人\",\"isbn\":\"9787510839139\",\"price\":4623,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-06/e7b86ac9d75a519a565f55bf63ac89ff.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-06/166fb509e30057fd1950fbefaef974b0.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"卫生知识丛书 老年保健知识\",\"isbn\":\"6780079505073\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/def3c7f386725d76215cdd9a2335ff61.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/08f0b00d2f256aefffabe357ca411c19.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"科学史上的九十九个谜\",\"isbn\":\"6781020162944\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/119a37df29b34372951b2c42487ffd20.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/49623f70b2dcc4088ea16a838db5b293.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"精神免疫学\",\"isbn\":\"9787506716079\",\"price\":2999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/e232c5337efe2a149642008944fd80df.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"图解手穴健康疗法\",\"isbn\":\"9787536926349\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/346bf3bffc27a1ef9a385dcc7f3fb5af.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"不能承受的生命之轻\",\"isbn\":\"9787532731077\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/1763fc32879912a4f178125b1d291bcc.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":0},{\"goods_name\":\"我的陌生朋友\",\"isbn\":\"9787506235501\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/08f0e39f1983c1b82828928875a05c65.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"百姓民俗礼仪大全(珍藏版)\",\"isbn\":\"9787500218128\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/185277b5569e47437549ce01267cb3de.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"推倒红墙:克里姆林宫最新档案解秘\",\"isbn\":\"9787801092885\",\"price\":240,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/5160fe0ea0df204300a13ed9c40dbeb0.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"诺贝尔文学获奖作家短篇小说精品\",\"isbn\":\"9787805794785\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/a0ddbbfbc99578ee5bb082e00877a8fe.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"简易英汉对照读物 名利场\",\"isbn\":\"6780340859103\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/52a505241e516c7feb96346cbbf898cc.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/621e402f468537724b482ff229202d5e.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"女性心理学\",\"isbn\":\"6783129183792\",\"price\":291,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/4a95690f8903a00f0029e21c1e4432cd.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/2fbd205a11f697ee7ce222ed1cb814a9.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"爱情心理学 作者:[奥〕弗洛伊德\",\"isbn\":\"6784386559107\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/4d2eb4be9a7a4a91fe7d3be7d3d1eac2.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/33f4b376842f44529561aab18f66ffa3.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"一个心理咨询医生礼记\",\"isbn\":\"6788548945398\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/3b859c0359b9d09bbccecb0174209b55.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/bf53fb7ceb12f50758bf43e2f7e475ac.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"临床交流学概论\",\"isbn\":\"6783415873092\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/b1db368604c191479ef9440430999aa3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/5bf18ab65cac50177d73062d0fde25e7.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"巨译的诞生\",\"isbn\":\"6782099711680\",\"price\":397,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/0d072aa9c1408860fa7d48c0de950357.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/0a0417b0a0e1669983f51b72bb28a9ec.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"冯梦龙笑话集\",\"isbn\":\"6783807644220\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/80c31c6db204dd69d0b05d27c21cc729.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/d821cec1ded6f65a2140f5ea4b935590.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"精神分析引论新篇\",\"isbn\":\"6788650219576\",\"price\":1698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/627e2360ec0d6e053d7817cf90cd46e7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/8ba6ecf820f0b94de857c0429debe2ef.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"人一初始印象与预测\",\"isbn\":\"6782447952703\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/e3c5ceefbd068942a834d1f5bec4c131.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/7f684d67563975ed693c25290daade46.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"精神病理学 精神症状的分析\",\"isbn\":\"6780984814648\",\"price\":1499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/2173aef792a383449447574c9f0e3309.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/2f1f7c5c383b3c5f508c91bec4ef82ac.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"心理治疗\",\"isbn\":\"6781698418107\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/09e0bd8776eca2b7a967623c7e1fe3dd.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/82ec46da73e55a0c40c88de839a66fe1.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"神经内科急症\",\"isbn\":\"6780113795671\",\"price\":289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/be475d58d3fe1c423c9e7638c0f48e54.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/580c2e38343d27ba49a6c810a069c7f7.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"被侮辱和被损害的\",\"isbn\":\"6788325518279\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/0ac75a5e6d53657c54f9ca02b945b711.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/d360ea7c86db469a190290083a55cb01.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"人类百位名人排座次\",\"isbn\":\"6785389043171\",\"price\":268,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/35b50f95e189abe4c3c0649a8f968016.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/741ebe8ad16b868e0fffd295e7052189.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"王季思选元曲三百首\",\"isbn\":\"9787506008501\",\"price\":593,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/56d2f5e4d94aab9163dcafeb77d3d825.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"诺贝尔文学获奖作家短篇小说精品\",\"isbn\":\"9787805794785\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/f7eae032107ec1450070755c68d790bb.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"文化论\",\"isbn\":\"6782757834494\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/bfd377477591335e880721f1df748851.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/c6174e183cebc1994edc2e8bef7860b0.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"二十一世纪生活预测 未来二十年\",\"isbn\":\"6782696435590\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/1f3fa203e899d0d1b82c866bd9d5bcbd.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/b8981da74a8eb7dbc9253e59b78d449c.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"脑血管疾病\",\"isbn\":\"6785159197526\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/465784b048660920edaf86199b6de4c6.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/7fdd19a3917e77bc582c7871f4b33ec3.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"一分钟小说选 [续集\",\"isbn\":\"6787972859514\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/78cdaabb0552fa27483b73f590e99b02.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/278496562b898d6b03c527900cd9e4e3.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"西洋现代观人术精要\",\"isbn\":\"6780912053590\",\"price\":259,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/d64d5a2ea8c428060ed9770d879201f9.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/0fcf3f4136d0a32fd2d2a4c157fabc29.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"营销心理学\",\"isbn\":\"9787504416933\",\"price\":290,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/7e6aeadd1e31d88954d7c66eed924cdd.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"越界飞行\",\"isbn\":\"6783658313191\",\"price\":290,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/cbaf2be7458b147c3e9b3ceb8c4be47d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/f71b1c39b30f1c9909f93c8cc93ecf59.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"孙子兵法句义浅解 贾启贤\",\"isbn\":\"6783666706699\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/81a4a6f2b66e1af0a99329251fb58af2.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/6d19817adcf4ac0aadbd973e4eb112ad.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"中国痣相全书\",\"isbn\":\"6786754033929\",\"price\":3199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/c366f9e733eb6360ccefa48ef17ed2e4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/1b988d3212884f586753f3f02730822a.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"东方情欲论\",\"isbn\":\"6783412206822\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/24399414230cedbbf014b7c114b1ccc0.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/f1134f4ae8c845550223eff5b2206f3b.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"医学心理学浅谈\",\"isbn\":\"6782606063196\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/00cffd4c64411ab54b466354960f76de.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/d0e53876f87282f636309d19a71e2ed2.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"如何修证佛法 南怀瑾讲述\",\"isbn\":\"6786529393576\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/a42806d01c9797b52a559e7245aa6c0d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/901d2d27955f697cc8f81da53966aa73.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"跟随彭总\",\"isbn\":\"6788671903274\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/a592d630185b79036d5d3ac5f53e2aa8.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/43aee6a1d58c9f5e58665f806902e698.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"文章修养\",\"isbn\":\"6786623591914\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/f6e3645e68dbc9e3dfcc78636b24d30c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/3e881625dba11828481917e762d701e1.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"赣第德\",\"isbn\":\"6780737020345\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/e9e3bd23efeb0b7e874a73d0f33fb7a8.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/c2e126417a9d3d7e953c9930fe160ed0.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"金鸭帝国\",\"isbn\":\"6788591552073\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/df825d8df8140a30c43bb134d12c16fc.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/d5bb74d899206b48a61c42ac66b9d6c9.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"传染病手册\",\"isbn\":\"6785342784869\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/c998e601a6cff89421bb9cce6598e665.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/30b43e816f22d2dfb399e2ae2b6d4587.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"古代白话小说选 (上下册)\",\"isbn\":\"6785006867311\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/6f1c7af6b46b0ca0f138c5bb0b697a8f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/b9153f852ecdd7ccdf1f06dfd1d7dea5.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"临床心理学\",\"isbn\":\"6787618184950\",\"price\":649,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/2f0ffc40a07ffd2cb67263a787cc8d1d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/e2cd019b7d56a138e95c2efd05d2c8f0.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"秋\",\"isbn\":\"6782170346140\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/d37677026097485bea91ca2c520f401c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/702560a23c8fbdabd1d11a75e8862dd3.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"中国近代史丛书孙中山\",\"isbn\":\"6782822596254\",\"price\":398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/1fcc44f15a933830c781304e6994c1c1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/1e4709abdbadb4591f8bde2c8d37448c.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"欢乐嘻哈镇 11 智斗黄鼠狼\",\"isbn\":\"9787556811403\",\"price\":1099,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/0a4f293b33f59f144b837eac2128902c.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"《昨夜星晨》亲列丛书之四 “文化大革命”中的名人之思\",\"isbn\":\"6788633017108\",\"price\":4900,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/92075500dcefe3f4956a14e36932920b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/1be67088979e7886ec6478ecdb9a1974.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"零基础日语入门王\",\"isbn\":\"9787500141198\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/0b77dd2e82b60a76e97745f0eb1de813.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"沉默的大多数:王小波杂文随笔全编\",\"isbn\":\"9787500627098\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/dcce4f26d36516d14f18f14674a0a6ce.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":0},{\"goods_name\":\"黄金时代白银时代\",\"isbn\":\"9787500646730\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/492643f49ca15e24a331fa46321fa4d2.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":0},{\"goods_name\":\"青铜时代\",\"isbn\":\"9787500646716\",\"price\":252,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/0a4a88bee6d375d10b5f39ad781edc07.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":0},{\"goods_name\":\"黑铁时代\",\"isbn\":\"9787500646723\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/6f38af47a2d3b73e78bdefd6a8f0652b.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":0},{\"goods_name\":\"历代诗话选注\",\"isbn\":\"6784562563147\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/67b35e9623a62657d7758707a1768310.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/0634392c28dfc5f89fb3b55046d26d13.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"唐诗三百首\",\"isbn\":\"6785291937927\",\"price\":2200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/fbe4ccd67c3b20afdbcf93327929defa.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/9b85f09a534da669e6ddd403336833fc.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/62a91cea54d87f700c0d70e878589521.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/401bf817397e418d5bb8b151ae1e23fc.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"唐诗选(共两册)\",\"isbn\":\"6783584292640\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/ad4da69f4e7dad9ac36a8f0321dec911.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/8721c559f793d0263f2c925be844fbd2.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/fd0da1afae5b8bcb41c7bcad34a5b973.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"安娜·卡列尼娜(共两册)\",\"isbn\":\"6780786710881\",\"price\":689,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/fcd0e1c38cfa1b1bfc8eafe346ed605c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/23d8dabfff03d8af0896f72bf9b073d2.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/f1e7e8596d70cc8546f378cc18f26b45.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"陶尔教授的头颅\",\"isbn\":\"6789804239718\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/3817d60939ed76ec762874a5883b43dc.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/1eebee9911b2dfa962ea84d4a46590a3.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"北京名园趣谈\",\"isbn\":\"6783979378539\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/88d7a07daba4876ee81014b4a7e54ffe.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/66d96177f5cfb4a25487090b7dfc330c.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"人生的智慧\",\"isbn\":\"6783843716844\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/1c801c8a5bc4e30ef1b2f2c8f0111271.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/441ebb6c4e8b5dcf772cdf9699bcb3fe.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"实用心身疾病学\",\"isbn\":\"6784986254448\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/32daf85b371a6fe751f62b93c010b679.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/9d52422c7ad22eb546e239175e1a5f9f.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"笑的心理学\",\"isbn\":\"6780757915236\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/5fab4d56f6c45a86c18bdf6eb4aa51cb.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/14f426b2a0a50063a55cc9e3e6b281bf.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"小图书馆丛书· 艾丽丝漫游奇境记\",\"isbn\":\"6787979965671\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/9c054708c254ac49604943e7e258ef57.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/64c7d36d84295a6957390c3a93312d70.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"免疫学\",\"isbn\":\"6784771804917\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/cc86ad7cfa60df04e5d430020d0b3228.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/c4589f7206eaaebdb58b7021351e0d50.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"笑的心理学\",\"isbn\":\"6784095737690\",\"price\":635,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/340c07ee25b68a121b3f34646ea6efe4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/c8f4e3da63b845a6960e5f0862aa2e11.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"人生三阶段\",\"isbn\":\"6781751257935\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/5f0978b22fd122b9539b937f1c25202b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/e8db1c4945f8b077aca53400698d303c.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"我们到了月球\",\"isbn\":\"6780525505908\",\"price\":260,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/b4d686e233a88bf723e09e30811df5f7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/b02608e689389dd81e30d267fe434d3e.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"女性的心理骚动\",\"isbn\":\"6789736154455\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/39934e4a91a09346651f22322307f8b4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/8ae985f64746c84252f65ea02478f03a.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"两性心理学\",\"isbn\":\"6785289396314\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/21a3e299a6732bd3e2d4d89a3d74cbcf.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/be61e90b1614f1101640a80f6eb033ca.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"欺骗心理学\",\"isbn\":\"6781716335266\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/7fa1447334916af943fe410f72cc99ec.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/763959088f766a9c7131a576bb60bdac.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"一分钟小说选\",\"isbn\":\"6786329552818\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/705aa157f3693e1484053f5417cd2ddf.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/d5d99b5e02e75c889fa1f64e023e1408.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"变态心理学\",\"isbn\":\"6782756431094\",\"price\":2000,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/dd2c9d42b92b60307a707cbc793bd1e2.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/5b84778a27c37b02dc96f279e643161c.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"教父\",\"isbn\":\"6783916703721\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/37001d965147287930ac28ce69aaa12c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/85748a693afd1b2b02eb69e103dd2c65.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"燕子李三传奇\",\"isbn\":\"6783400965807\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/27129274898fd694b1bf4ce9338c7e45.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/09b032692f21461a8e5f3770bd437357.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"钟道传 一斩鬼传·平鬼传\",\"isbn\":\"6788308845893\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/4c50aca9871adb9ccabbe991fb853219.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/3846181ab45316739c315bd5931f6f07.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"金融家\",\"isbn\":\"6781609309888\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/ddf626f5633c016024372f7085fd7d25.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/47268c396353bdac9d8478829a093bb1.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"九三年\",\"isbn\":\"6780447169479\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/82bb4d808de3da6d77f15c4993b4e55a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/c31d67249960a453699d1ac954ae0610.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"隋唐宫廷秘史\",\"isbn\":\"6786602609655\",\"price\":191,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/9dac4f0be4378ec09b70f9ee211c3457.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/0781428a07a5a1fe03f54828e7597c06.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"东北银行史\",\"isbn\":\"6780280614896\",\"price\":2999,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/1e9e16d4ec089276726e7a778003930a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/27c80156b64c8b42c035bbde8954349a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/cc7ad4ff0b1d40642695b18abfaf9352.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/d38150da19f4ce9610a421cd4ef8e408.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"延年益寿的学问\",\"isbn\":\"6780872434345\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/e0677a0eb4f646c106699ef29b8783f7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/7496c4a7a02038f7bb7683786ac24203.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"红岩\",\"isbn\":\"6789954149025\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/d6c95e61c6b1d7a0a509095a6d4b1935.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/e88fffab2523927708db7c05a672909f.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"碧云天\",\"isbn\":\"6785813569139\",\"price\":290,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/6da1e9f87411dc81ec303b0be4728ff1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/d921ad9904d54aa49d0fab7aa202be2d.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"奥运会赛场处的角逐\",\"isbn\":\"6783376713970\",\"price\":1798,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/bebb49cc842a452f41788631fd4a3ace.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/2932b41a7d3e2620340eb0669b89da04.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"外遇 (外国优秀中短篇小说选)\",\"isbn\":\"6783918181841\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/6ad61796c1045177a95690fc04658d49.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/50904d1b59a955e8ad6f1686efe39db1.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"黑血城\",\"isbn\":\"6786136631270\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/5e0a10ec403de3d7c25ce1941f621f2d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/e6636ea82c5e81fda6ebfd58d064f990.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/39ab1603f27625c0585a703714bf1e64.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"儿童文学小论 中国新文学的源流\",\"isbn\":\"9787530210987\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/3da71520f1700117d788500cef69c926.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"犯罪研究年鉴\",\"isbn\":\"6785313843969\",\"price\":589,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/175cede03d11afaae165b182c262ef8c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/bee49d9caeffc288680dc56d8815bfd5.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"十一届三中全会以来经济体制改革重要文件汇编\",\"isbn\":\"6789393386255\",\"price\":13200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/77169e74e04c5755cf3a21a24fbbd93a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/5035817e4770b2668979b3529b9ecde8.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/a9f22f627faa3282c8d9fdbcb9b35964.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"辞海(1989年版) 缩印本\",\"isbn\":\"6783946403740\",\"price\":2249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/06e3316122e94421844dbbd3912de01f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/44227a008b55f7078eebb7e28dca07ec.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"2019秋尖子生题库系列--五年级数学上  \",\"isbn\":\"9787554924488\",\"price\":677,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/459bcd163e4f98e263391bf459417fb3.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"数学\",\"isbn\":\"9787303181230\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/c3383339c8c4eb93d71ce29f1f9e94d1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-13/c830147932a8f90671822ecdd9fe762c.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":2},{\"goods_name\":\"文学描写辞典 小说部分下\",\"isbn\":\"6789368521320\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/ee39571bbeabf0b4f678635566c5985b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/1efa47356d2679a8eaab6fbd1846d18e.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"百年正气\",\"isbn\":\"9787205104672\",\"price\":1499,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-09/6cb2ec27a6ee2823fef4c92224c73285.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"百年正气\",\"isbn\":\"9787205104672\",\"price\":1498,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-09/85986cce73df4778804bd25025854225.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"欢乐嘻哈镇 11 智斗黄鼠狼\",\"isbn\":\"9787556811403\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-09/00ed23b9fde94417d3ea0974a0dcb5d0.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中国广播电影电视发展报告(2019)\",\"isbn\":\"9787504383303\",\"price\":10,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-11/31ca549f43bb99e01056451fc760ab2b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"百花酒店\",\"isbn\":\"9787531316909\",\"price\":203,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/b1cc4684a5786ea6e33c228837718b04.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"Re:从零开始的异世界生活11\",\"isbn\":\"9787541086687\",\"price\":551,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/32fba163c0ca764f1baec5eadb9d5688.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-15/6998b2114b2c7ab4cf28b1dfac0c598a.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"高分作文导航——小学生作文起步\",\"isbn\":\"9787540588533\",\"price\":419,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/098670569cb4c2444302ca22ba95b94e.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"消失的女孩\",\"isbn\":\"9787550014282\",\"price\":196,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/16d8c7d4c230fb01d03201046d365700.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"好宝宝看图编故事:雪娃娃不见了\",\"isbn\":\"9787534261572\",\"price\":580,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/7058c88541b5a3cd55fdbb1ad926bdc1.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"365夜故事(小学语文新课标必读书系)注音美绘版大东沟9787555221869\",\"isbn\":\"9787555221869\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/f8ea037619f731282780818a5903deae.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"素描静物\",\"isbn\":\"9787806853399\",\"price\":573,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/ad503951aebd3a668cf9d76ce0b5949b.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"音响技术及应用\",\"isbn\":\"9787111218142\",\"price\":872,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/10d124b2c1d358cd4c1b7e23a5e0c63c.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"涛头弄潮第1班\",\"isbn\":\"9787801913456\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/221aede5fc49e871458ff1ce7ebee96f.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"我爱人的情人\",\"isbn\":\"9787508628370\",\"price\":196,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/f795d7779992f6837cb35575bf808b28.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"戏剧人生\",\"isbn\":\"9787531316794\",\"price\":1669,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/27c88b4ca6e879ffb3385d4d509fd8b6.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"中国现代优秀歌曲2000首.通俗歌曲:1978-1990\",\"isbn\":\"9787531306795\",\"price\":588,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/1bdcb8c6f0c07921f963d454838366af.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"中国现代优秀歌曲精粹集成\",\"isbn\":\"9787531313212\",\"price\":479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/cf02091430c1a90202acd2f674224f4d.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"中国现代优秀歌曲2000首抒情歌曲1978 1990\",\"isbn\":\"9787531306771\",\"price\":429,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/57d5db51c3fc7003b853f8c74f97d3e7.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"中华皮肤性病学博览.第一辑\",\"isbn\":\"9787538123876\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/54283522c6961774cf69db384224497c.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"翻开我家老影集:我心中的外公毛泽东\",\"isbn\":\"9787507314984\",\"price\":339,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/7d43e3277e5bd7a9a4446136c07b6895.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"数学:附解题指导:文史财经类用\",\"isbn\":\"9787040050240\",\"price\":517,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/a0ca37a49636eb028287893e4678a202.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"一公升の眼泪\",\"isbn\":\"9787538531947\",\"price\":1330,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/18cef869dca623849e3fff23db207871.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":0},{\"goods_name\":\"中国初中生 300字作文大全 凯旋 上海远东出版社\",\"isbn\":\"9787806135136\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/fc0d9523cb236ec0ee56841769d0d589.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"神奇蜂胶疗法\",\"isbn\":\"9787109056442\",\"price\":779,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/2a468d498325e9b1be870d1d5cee12fc.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"伪劣商品鉴别指南\",\"isbn\":\"6788093655043\",\"price\":292,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/5f8875a2c53485fd983406467376a58f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/7a07a5a7515fb9552a2935d4b22392b0.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"伪劣商品鉴别指南(续)\",\"isbn\":\"6780664514595\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/61c4e22e32ce7d1b350eb2198f8678b6.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/88b9e0fba6ace18e1cbff0e4e6a5eb97.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"各国概况\",\"isbn\":\"6781104316626\",\"price\":600,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/8e413f4b66d9aa31eac5a6ccc71f808d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/47f7754c7f024795eab8c83b685341ad.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/9d5f508e8736d7074a77f97d0973ddca.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"金陵春梦 1-4\",\"isbn\":\"6786696645243\",\"price\":1605,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/63d68b360b4de873b79104219f339b1d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/c44026c1e6585e4a06716c821a70acaa.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"奇婚记\",\"isbn\":\"6782794372446\",\"price\":503,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/d24eda5526139933bb01761ff0ebfe77.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/90dd632385e10b22c4b2c7a20f69fe0e.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"伏尔泰小说选\",\"isbn\":\"6786147496508\",\"price\":401,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/d107a0106864125bd401667081aa0187.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/95cc3f436122c6500fb75cbf1319e0ab.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"大学语文 北京市自学考试课本\",\"isbn\":\"6781897939876\",\"price\":303,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/a55a9483f76fbaf142880952b4decae3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/d4a5abb5dc34761ee4a68710b3e8772b.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"高级财会系列丛书 高级审计学\",\"isbn\":\"6781222572235\",\"price\":596,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/90035faa82b75eb2954bad064c27fef3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/c28719e22a5ee8aa6ef8d1b9384c5a45.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"问题解法 代数学辞典 上\",\"isbn\":\"6783449043725\",\"price\":2107,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/57401a2f113f8fe22b5d511e25b76ba4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/4930aed1e772c164aee6beca734516e1.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"常用构词字典\",\"isbn\":\"6781409261340\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/e2b8d9beea9c299a8dd8432e3c67a459.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/6cf22011e3affe7df012f1f7b33679de.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"沈阳指南\",\"isbn\":\"6786294579337\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/bde9212b73b31314536490c021499d3a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/1c2748764f09d0a5d5ac59f80a51ec6e.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"权力场 中国传统政治智慧研究\",\"isbn\":\"6782321653846\",\"price\":1597,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/136032d89aa2586f7465c93c8332f696.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/c8c3dab133fc485c5ccf9118c8c3f3c1.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"脸上的红月亮\",\"isbn\":\"6785097109278\",\"price\":2199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/e08d5f61a8170865c10ce301ffbc3f3c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/65dd5074edbf9bfb55f9e52733af2ccb.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"辽宁文史资料\",\"isbn\":\"6786129190241\",\"price\":501,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/e5d77922501bf09f216a57a1376b9c29.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/9069d8fdd6078d4a5eb4849fecf55046.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"杨贵妃传\",\"isbn\":\"6780471352289\",\"price\":491,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/fe21f0c3fdefad2f06f517743c631e74.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/8415ca33528e9a0cf0ec84ef9f792637.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"培根论人生 培根随笔选\",\"isbn\":\"6788560863460\",\"price\":210,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/e90097eb86f0c0d0a24fdcb9a9427ada.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/ee00a86c6621be1792dd97c9237cefd9.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"文言语法常识\",\"isbn\":\"6787995541514\",\"price\":304,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/75a1b70775a3f6847d15283aacb60dc0.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/15400d0a4f5fa003a5eecc76c43be6b1.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"家庭周末节日菜谱\",\"isbn\":\"6784740841890\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/f52c3156a62dcac3c5b34f113fa17bab.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/e2fb223b38053b0d0d2a034ed8c20352.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"暴力与情爱\",\"isbn\":\"6788119401629\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/0603e08780169756db4543450b49769b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/5f5dbfcffb620b7bdd05d2d2609b0706.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"黑色日记\",\"isbn\":\"6785822589529\",\"price\":346,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/d64a128783ce94f946363c3ce4b1f487.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/c6fc826ec0a941e3aedc4301dc702843.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"爱的春、夏、秋、冬\",\"isbn\":\"6782918204791\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/21a288de581d2fbc63c95f1115da4774.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/9d2c8d45a7b6c388fc873cf0f7ceaeca.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"台湾新人新著 陌路\",\"isbn\":\"6784791966431\",\"price\":707,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/0f2dd82b84813121c77300fa7e55ae5a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/2ab67b3323837463cafe49571b509291.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"还你前生债 [香港]岑凯伦\",\"isbn\":\"6785208235639\",\"price\":604,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/ecd2cf2058b913707bdd03d8ae44b22f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/e0dece09d255d6ac776bdf0d3985d854.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"儿子与情人\",\"isbn\":\"6789182237554\",\"price\":505,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/712e1d7014a4111cb8bcf58b0a91ea3b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/06e7e2712558d4a0971c4cf2ea7fbf5c.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"爱到深处\",\"isbn\":\"6785330691551\",\"price\":326,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/9e0500aba01348f515d436e409ce867d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/3fca781242bd7fd712637aa9cc4ab4d7.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"我的中国情人\",\"isbn\":\"6784890146977\",\"price\":1608,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/8410a5ef463787e197b5d7d44593ec71.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/a6330ef4c8b0aa2fbd3debc180aa1c90.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"眼我学一科技英语 视听教材\",\"isbn\":\"6782862230899\",\"price\":702,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/6ddcb6d500369675cf29c8ca1e2cc364.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/14a14cc2f4765dd217958d13cee29453.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"傲慢与偏见\",\"isbn\":\"6787776886548\",\"price\":190,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/f58545900b9f792d37dc469a5c5c624f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/a3d076c0c4a05a0e344ebbcf3d8cc7d8.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"90年代校园文化新潮丛书 亲爱的狐狸\",\"isbn\":\"6781516706681\",\"price\":1102,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/89c6d901869199ee0fba727e677a70ee.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/b83b84fcc224abb57ca11ecd28758dda.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"野性的战争\",\"isbn\":\"6784283476182\",\"price\":192,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/e469ac78fc45b2a51709c87d94161dd2.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/c6c3e9f0e8a16fe3343c3ed4c7e4acfd.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"潇酒的情思\",\"isbn\":\"6784689527981\",\"price\":650,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/5ff6664d08b2c636d6d4ae61000209c3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/1e5473e3af04cdf1a5618460f376cdeb.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"轻风丝语\",\"isbn\":\"9787806878026\",\"price\":1614,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/7b2af24fb659820edb465e57ff585cb1.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"365夜童话·寓言·成语故事\",\"isbn\":\"6783881842372\",\"price\":404,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/7f9be9b23bcc2e11d43f0e69e9265656.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/9b42489840fa9e26ceb452e481c730b8.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"两天一课日语自学速成课本\",\"isbn\":\"6783433020765\",\"price\":842,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/36a0c33e56761d80542b6d220250b689.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/9cd307b92a1362d31e58e6bf457cd840.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"关东奏鸣曲\",\"isbn\":\"6786387389912\",\"price\":893,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/3a28da3e87d97cf1281fdbf7c45ef8f7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/058574608dbcd5a54bedc46845778701.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"中国:世纪之交的城市发展\",\"isbn\":\"6786137706898\",\"price\":1082,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/badb917c6ae1f2c81fd9926695b81556.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/b687868761ac66bfcc6a7f9ba3785502.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"老干部手册\",\"isbn\":\"6785016557841\",\"price\":208,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/5241df53a9d975f15dfdd3b068df076d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/589945f50e00f7b6aa8633f5ca4e4cb2.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"吴大帅秘闻录\",\"isbn\":\"9787805072395\",\"price\":1395,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/0e98c9e0feeec7eba7d6b2c9bc91f98a.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"女总统\",\"isbn\":\"6780869100670\",\"price\":193,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/48828e1dc0c02ac01440eca9c159a55c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/69d83d7ca00137596c83866ba261815f.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"日月\",\"isbn\":\"6785964212477\",\"price\":1107,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/a5c498a4b2bf3b7ce2a53d980ca371b1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/a3907870d22db4af639490f5ec04fb96.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"砂型铸造工艺及工装设计\",\"isbn\":\"6783003920874\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/7a3c6fb484901c98cedc4670c68450cb.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/eef22dd99074c0d995883e6eba1187ad.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"现代设计与构成\",\"isbn\":\"6782262811293\",\"price\":1595,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/2b02d16e8a5ba7836bf593b4b8276496.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/2310cc380fc8c9d3acb5513959832c8a.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"医食同源\",\"isbn\":\"6782661213702\",\"price\":1301,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/046ea7d599de80d8d0a6678713dbaae6.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/5394e175242f6655dd82f8400eeb67c4.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"长笛演奏实用教程\",\"isbn\":\"6786072559223\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/e83b9f458e281e4fc0d1743441978db7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/457262a6f8496a26d5441200a052d456.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"山水画基础技法\",\"isbn\":\"6787038562724\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/450dcf87e58ac12b20e8070b3a72f307.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/1eeaa17b7ad8d82905d0e0abba2b3d6a.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"无名杀手之谜\",\"isbn\":\"6780612071314\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/88ac07221d5989e8158b5e6de7136b63.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/ff3ec6fc20d58b48b5c30222b668eaae.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"女模特儿的世界\",\"isbn\":\"6784989553124\",\"price\":529,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/67e96e2f16e0af40b741bd52ee9a2ed4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/17e5e8b7d8355e81bc9bd1adcdb13cb2.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"大陆的厂长与香港的老板\",\"isbn\":\"6786931564605\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/e9b28db6e132abffd2058b629a933bac.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/17d39a1db128efd07d46f3915ab57099.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"自是花中第一流\",\"isbn\":\"6781278689278\",\"price\":606,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/78d0b810180b8b952e7ea5cb442685c3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/35b92d03747e53c9288c0db1e7fbd8b0.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"欢喜冤家\",\"isbn\":\"6789431120382\",\"price\":477,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/1ca09d19840113a511a65f2088ebe77f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/19e285ab75ccd55371d6f39c13384053.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"建筑工程定额与预算\",\"isbn\":\"6787789902512\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/c7c286b9e178b8bfa95802317fad13db.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/ff74c6cf56715baefcc41d4352fa0267.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"当幸福来敲门\",\"isbn\":\"9787302199113\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/f58c214869670399c6a3f3c5893ff9de.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/f9f43241af6e2d7478e7581fe45737ea.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"民族功臣张学良\",\"isbn\":\"6785453368579\",\"price\":531,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/822fe33e219a096b5e4c8b4b2d3387d2.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/206fe5fda75ec3b7248228913bab1e5d.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"现代玉米生产\",\"isbn\":\"9787801196071\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/5cf54861f417d09efbb5d39e7256246a.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"标准化养殖小区建设\",\"isbn\":\"9787802331198\",\"price\":493,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/e3c69e026ad106b96751364f2f243aa3.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"二度梅全传\",\"isbn\":\"6786421488009\",\"price\":605,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/8ee66fb2b06c4154e0a99fd00b7c0933.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/a6681601eb1c294a98311a50bdee20dd.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"婚姻心理分析\",\"isbn\":\"6782379706968\",\"price\":289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/06fe940ea8533169d2a6b2e3ea874b34.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/b720054ce048235e14886e4d4c21864a.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"暗房技术\",\"isbn\":\"9787805361505\",\"price\":704,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/32b18278c2a7d68edce73e4f76185c09.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"思想工作心理学\",\"isbn\":\"6783106206301\",\"price\":1205,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/8b0e7393e45e67c80dd8aa4a6894df61.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/eec97fc20e2bafec2e37a8561c46de0c.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"儿童智力奥秘\",\"isbn\":\"6786311455658\",\"price\":1109,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/643ccaf542577a44c3f259814f866085.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/eab801f5f9069a8de4cc6af3ec91d7e7.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"肉用鸡的饲养\",\"isbn\":\"6784097949366\",\"price\":391,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/203a7730c396c1a813fa8984ea07faaf.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/02889532e5486080920fa3f6ca72437e.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"权谋术数大诀\",\"isbn\":\"6781386972357\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/3e7e8a1ac7d151c2bf37b16f35b2b128.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/35a69e71788653348091f0aeb3e5ad73.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"辩证唯物主义和历史唯物主义原理\",\"isbn\":\"6786392921098\",\"price\":492,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/d88c9f8fe8373a7f4dc42ede9935a533.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/d4719ed205ed4d7c2850b8927532acdb.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"美术教师手册\",\"isbn\":\"6786137959980\",\"price\":407,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/7941247a4037dd40073f1f0b8e39a49f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/32ceef40cdbc00ac7bad40647fb67b25.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"宝瓶奇案\",\"isbn\":\"6785807462252\",\"price\":365,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/f7958687c92bae0d0fed77f1b302255d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/05ef741209a878630475e316b559b7c0.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":2},{\"goods_name\":\"文化的冲突与抉择\",\"isbn\":\"6788831146144\",\"price\":308,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/7532992c5f5009e0f4001e1f49eea3a6.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/fd0d5175ef59e7e8ae8e8fc42effe304.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"英汉对照社交礼仪文集\",\"isbn\":\"6787472792733\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/b19e696c664c60babe57bd832b7bf7fb.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/376180c206b6411206863ab064cc921d.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"芒种(上半月) 2013.06\",\"isbn\":\"9771003930007\",\"price\":1598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/7da7e0d9090ce5f2d5021b5e4221cb10.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"武则天传\",\"isbn\":\"9787512637511\",\"price\":506,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/cfb8eda45918cdc9d3e4d5dd8c5a09e5.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"癸巳存稿\",\"isbn\":\"9787538265057\",\"price\":6598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/95ba6acc5dcc17da2ddf4610de528788.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"何鸿燊大传\",\"isbn\":\"9787513913652\",\"price\":630,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/9181d273e7677a867e00f818ef93c43f.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"幽微的人性\",\"isbn\":\"9787559629470\",\"price\":491,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/397e5f50f3ff62b4cb425f694fa91eb9.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"女性生殖系统炎症百问百答\",\"isbn\":\"9787801576309\",\"price\":998,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/f9e447a641fbefeae6bc4d5fe82ddb9a.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"周围神经疾病防治150问\",\"isbn\":\"9787508205298\",\"price\":405,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/c355f194301e48272cf7d100b1c0926d.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"在刺刀和藩篱下 日本731部队的秘密 (日)西里扶甬子 著 王铁军 等 译新华文轩网络书店 正版图书\",\"isbn\":\"9787544178747\",\"price\":2732,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/6f5cfe70b586ca6232947def6c889460.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"实拍图 唤醒孩子的数学脑\",\"isbn\":\"9787547058121\",\"price\":302,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/6769cfdf86ce246a5fb29f9cc61bf9e8.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"日落尤其温柔 人间皆是浪漫\",\"isbn\":\"9787201206592\",\"price\":705,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/a104f565665c95208d0565ea3fd61932.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"人鬼降\",\"isbn\":\"9787502764623\",\"price\":404,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/7bf071c4589a0ce9afc59695be1f5757.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"家庭四季养花\",\"isbn\":\"9787520169035\",\"price\":659,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/f05f0b38adaaa2e6a5945ada67530ccd.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"中华上下五千年\",\"isbn\":\"9787805992938\",\"price\":994,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/36b670377828d092325e72a5fb4d7886.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"国家执业药师资格考试考点采分:药学专业知识2\",\"isbn\":\"9787513204255\",\"price\":3091,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/716155a1e428849540167d3209f31934.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"98上市公司资料速查手册\",\"isbn\":\"9787501140114\",\"price\":3101,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/74e76396b662e000f60eae6173ce538d.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"中华人民共和国计算机信息系统安全法规汇编公安部计算机管理监察司 编群众出版社9787501417520\",\"isbn\":\"9787501417520\",\"price\":898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/91ab1e9984ca341b9db30dfd5c8fda0b.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"2017百题大过关.中考语文:基础百题(有字迹)\",\"isbn\":\"9787567548879\",\"price\":997,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/ed47af18084443ba0d68d13bbcb89879.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"玩透纽约全彩\",\"isbn\":\"9787121233890\",\"price\":576,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/9e399ad72842411a5024b3b5859455bd.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-20/855812179c757bd3be072f1c80e18058.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"《戏谑与狂欢——新型二人转艺术特征论》\",\"isbn\":\"9787205069483\",\"price\":854,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/d55cb88ed033499d13383ba9ade92255.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"不负时光\",\"isbn\":\"9787549580859\",\"price\":498,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/835faf77641bcb1d1e3e9efd051e9f14.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"汽车自动变速器维修技术问答\",\"isbn\":\"9787508227221\",\"price\":356,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/e35da1a4d3cdea4e25f1bfdca7565354.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"朝阳之旅\",\"isbn\":\"9787503226984\",\"price\":620,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/7a8802615814ab8a6d66087ec8c1ba07.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"走近中国少数民族丛书--傣族\",\"isbn\":\"9787549709366\",\"price\":2593,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/511664cc181d5c2e127ca1a6f2c837ec.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"养生宝典.A卷:晚晴报《保健养生》版精粹\",\"isbn\":\"9787544122801\",\"price\":692,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/d1b2f7791bb45bb4bef3938b3880769b.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"错从口出 那些我们一读就错的汉字\",\"isbn\":\"9787115627506\",\"price\":1098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/f82f0032dcd9ac2c2d52bcac08f1e9b7.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"历史洪流中奋斗的故事\",\"isbn\":\"9787205073213\",\"price\":527,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/153c93ea3146ba213988fe7705987d00.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"广才图志\",\"isbn\":\"9787565217401\",\"price\":347,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/181db7eb1ea284cb1af975e48ec49b1b.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"辽阳历史文化丛书\",\"isbn\":\"9787549702817\",\"price\":6399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/f05c6d600253ecc488251d9708091ec1.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"清入关前都城研究\",\"isbn\":\"9787561055335\",\"price\":2290,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/85830ef6bd293f6825433b9b22fc56f2.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"静静的顿河\",\"isbn\":\"6783688117780\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/7107909b3319f54f92b91cf68ac9d1f4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-20/66123c2ed25699f883c05de23b473aa7.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"和大人一起读\",\"isbn\":\"9787555280408\",\"price\":1004,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/2fe95398b3d410e8fe97c878a8cbea4d.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"老年人健康休闲读本\",\"isbn\":\"9787806446768\",\"price\":395,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/83dffbd0a6b779a085b4b714d4086c74.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"活着的萨满:中国萨满教\",\"isbn\":\"9787205048624\",\"price\":7597,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/70c3962b37739321c8d28ce328680fd6.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"个人效能 果断力 一项个人基本技能 荷 杨思滕著 荷兰 林格斯梅著 董焱译 气象出版社\",\"isbn\":\"9787502943806\",\"price\":293,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/a9afe67e900d2d578bb99c9ed14cd7c6.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"这才是清朝 5 十全天子\",\"isbn\":\"9787509398708\",\"price\":340,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/c58858edd4b7e40bbf847e93259eb4a3.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"辽宁教育史\",\"isbn\":\"9787806490044\",\"price\":2890,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/aef827cce193a16e83091353c1e09fe4.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"朝鲜民族古代汉文诗选注(16开平装 全1册)\",\"isbn\":\"9787806446034\",\"price\":815,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/ab218a091585fdb0f914376b465ef257.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"中国古代改革成败论:湘岩文存二集\",\"isbn\":\"9787561046784\",\"price\":1697,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/e1852108dec1e1de943fa87a00d70407.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"新阳光英语·听力过关 初中版\",\"isbn\":\"9787530352656\",\"price\":2594,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/9688029f2c5a31e098df1cd0d219b950.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"通往科学家之路·离哥德巴赫猜想最近的人:数学家陈景润\",\"isbn\":\"9787538256710\",\"price\":629,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/7de27583b36dbad19762a593f256cb57.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"高血压饮食宜忌全书\",\"isbn\":\"9787553767536\",\"price\":496,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/87898f965f6b1bdf83e3c3c8ba1f32e6.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"死神 3\",\"isbn\":\"9787537162203\",\"price\":598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/e6858d023f2d228c8e96b62478c28cbf.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"绿化工小手册\",\"isbn\":\"9787508349312\",\"price\":728,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/d3d3684643669c790bf9a4eaebb8c11b.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"警世大案\",\"isbn\":\"9787806692578\",\"price\":598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/6fe61a3931b88ed4ff438157cf38239e.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"教育学\",\"isbn\":\"9787811032512\",\"price\":356,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/0895335ec4d679af8b29e1511adac9ad.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"天下大观:玉石王出土成佛纪实\",\"isbn\":\"9787503413636\",\"price\":208,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/0212e687e8b042f85ab77495e334fbf7.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"振兴辽宁省老工业基地常识\",\"isbn\":\"9787806699430\",\"price\":598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/c1353aef7a79a384eb5d2d4c44b4461f.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"好故事 好家风\",\"isbn\":\"9787205085469\",\"price\":274,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/b768cce4adb98981bdb05bbc7fd801e3.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"玩转App:商业分析+运营推广+营销技巧+实战案例 玩转移动互联网营销系列\",\"isbn\":\"9787302450917\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/2ebfa2ddca6b6adabfe97713e63dea56.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"男人的内心世界\",\"isbn\":\"9787532918331\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/10c1f6f1f9e3794b5b90432050e1680e.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"生活要有光:地球另一端的来信\",\"isbn\":\"9787555237358\",\"price\":516,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/194383648da82434afb9b906e3261654.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"我不做鬼马的妹妹\",\"isbn\":\"9787540452612\",\"price\":260,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/cb377da1eda5aeec9b88ea549367541f.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"首席女法医\",\"isbn\":\"9787544267601\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/7d973f1373a8302addf2e7e281129667.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"科学哲学导论\",\"isbn\":\"9787538250220\",\"price\":471,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/02ff2ef532397f14060936e2d2e45981.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"当代学术入门古典学\",\"isbn\":\"9787538250282\",\"price\":498,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/4f4b42e9ccea2c7f4bf568a3d1cb74f1.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"旺家旺夫好女人\",\"isbn\":\"9787504470560\",\"price\":548,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/8363b11c89c248fa6ae33dd06ad77716.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"恒此今生伴美玉 : 非遗传承人李洪斌大师玛瑙雕作 品集\",\"isbn\":\"9787544148405\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/41431d7e5b3c48c29cf5398fa887b43a.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"水墨研究系列丛书:刘俊京卷\",\"isbn\":\"9771815328009\",\"price\":1747,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/ec0dd51414c8d265326418e548e7c755.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"孩子们的哈农\",\"isbn\":\"9787805536491\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/1fe9aebbc39d710b54f8e8be2e3b6a02.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":0},{\"goods_name\":\"大美辽宁:英汉对照(16开平装 全1册)\",\"isbn\":\"9787205083373\",\"price\":3298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/0a1df80cf978dd28e0cda8650ad7972b.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"波音经营秘诀:空中巨无霸的腾飞历程\",\"isbn\":\"9787800725746\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/f3da20dcddfa17eea3b20ae97b2378bf.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"我的内在无穷大 自我探索的40堂必修课\",\"isbn\":\"9787115555816\",\"price\":586,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/a30358c571cd6d82f2414da21cc61650.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"新民说(中国启蒙思想文库)(内容无勾画,一版一印)\",\"isbn\":\"9787205028626\",\"price\":2798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/c54d769a0d2460016fba86b7bd5a29ce.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"A17 默觚:魏源集\",\"isbn\":\"9787205028541\",\"price\":13098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/aaf4a2131d70adf2cc7a94cdebbb08a8.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"訄书\",\"isbn\":\"9787205028671\",\"price\":2298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/d1ec489c10f82a96b34eeaa6b4685d96.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"建国方略\",\"isbn\":\"9787205028688\",\"price\":11599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/a5a56fe7ca9c9a8389274af42c2a8aee.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"强学:戊戌时论选\",\"isbn\":\"9787205028602\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/8e5d59a468a5cdb25986bddbc7d639e4.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"民声:辛亥时论选\",\"isbn\":\"9787205028558\",\"price\":2979,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/89f4032a49b194d1611b2810c8a3fa59.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"豆制品治病养生850方\",\"isbn\":\"9787539009315\",\"price\":301,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/cde934fce1722046e6519a3fbd8bccfd.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"日本访书志 日本访书志补\",\"isbn\":\"9787538265002\",\"price\":5098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/9a333088753145b3f68be141ae98e45b.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"传统相声选\",\"isbn\":\"6787144791312\",\"price\":798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/bffc254083a16be73cfe479e6615ef8c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-22/b2402926170baddf77c3da1751e190c1.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"法网金铎\",\"isbn\":\"6788090288761\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/bfd9030d73ba09ab7a800668438515d1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-22/2995305553d7dcfa9df560ca274feb77.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"汉知简-应用题 天天练 二年级 上册 24秋\",\"isbn\":\"9787557908126\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-23/a025a2d60245bb2cb67ab6a8bc954799.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"唐史演义\",\"isbn\":\"6787025134816\",\"price\":5599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-23/9adf7122ce5f983af420e9854fcf570c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-23/80aba20b460fc010d3a2270217b97c7b.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"中外名人格言精华\",\"isbn\":\"6789221123849\",\"price\":498,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-23/e5691685a87a72bc2f82cb6daa06247b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-23/490a0370dfe4cbdb1f3f49a011c04382.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"隐私\",\"isbn\":\"6783867961277\",\"price\":468,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-23/c801696d518b8e9f17bd23bc3341ac44.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-23/bea66c061b8af446e8886ed7262a8dae.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"唐史演义 上下册\",\"isbn\":\"6783235380936\",\"price\":1398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/a3aaa46ec03293a0563da945b77910b5.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/24cbc339553d917de0f17832c178ec9d.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"勾心斗角\",\"isbn\":\"6785898904156\",\"price\":298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/6e0cc4a55bedb1e047d8f0ff37930d4a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/4f072d8d74d3182b3648801a91cdf85e.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"马克思主义著作选读\",\"isbn\":\"6783156585709\",\"price\":598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/15bf4bc7324e3eba4940a872bafcb965.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/22c3685ec2523eaf98e12029361acb06.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"职业刺客\",\"isbn\":\"6788618055427\",\"price\":429,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/960b9c0dd2432baee98551ccbc29507a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/c80cd9ebc2ac325f609384290ad06d30.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"幻灭\",\"isbn\":\"6786940490347\",\"price\":378,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/bccd02bcc14dadc9aa06e4f7ff24c79d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/4539adcede4f149b244222cf7e7163a6.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"三侠五义\",\"isbn\":\"6785207045069\",\"price\":688,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/8ef3e9a8cd5e959701a0d8d254cdbfc5.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/b661035a271e208413b5d6c0415045f5.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"绿野仙踪\",\"isbn\":\"6787154652213\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/a9f57983dfa482c64a2689ac42223320.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/08cfd1c0593d8cbcce3dc05af3c3b5b8.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"西湖古代白话小说选\",\"isbn\":\"6783103123016\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/2e5b51164f9bf510eecd0e5853cb3cf5.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/468358c1742c4dceb7b537ce29dc2c11.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"清宫十三朝\",\"isbn\":\"6783318834240\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/f6f419e6805953ce1d22de47f608a1c5.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/1b6b0e86559a4fd327e67f356ad26b3a.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"小城秘事\",\"isbn\":\"6783392952387\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/642a6716d4744fb3b1399a0b88b13e6e.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/d5360753581eb4c9cd4be09f092d160d.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"暗杀局\",\"isbn\":\"6787362797367\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/bf9ea69b830ac4cca2eb2cbfababe902.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/bc1ec2e980fc471629233af9b2ac4e71.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":2},{\"goods_name\":\"我在为自己读书\",\"isbn\":\"9787519216498\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/98d53c67088380bc68037a39ecde2906.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"长寿秘决大观\",\"isbn\":\"6782819515191\",\"price\":1198,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-25/d83f2974b2e34f02e06cb87d856e7d2e.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-25/67d7b8fad17908d82072de1b0c2fc9f3.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"节日家宴菜谱\",\"isbn\":\"6782181328610\",\"price\":398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-25/32711a3507c3ee4dbe2838221139e034.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-25/bab9ec4dc331b15ae4f2bdc048e4a588.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"新编汽车驾驶员读本 下册\",\"isbn\":\"6786865255632\",\"price\":248,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-25/05b15344b43820dfc30b4972b8fd4553.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-25/acebf83c6621a0764a04ba8f1877a6ab.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"改革·探索·选择\",\"isbn\":\"6787283169458\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-25/a175bbf015163ee14ff6c4259627f382.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-25/47e38c410b55182ca5f4009a32dc74c8.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"农家饲养业丛书 水貂养殖法\",\"isbn\":\"6781453544631\",\"price\":298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/69515ab491fdaa8d1b9b6744753d963d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/886e040850a2b9be68ca87f89ddc7ac2.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/096a8b1f944e22f5e9f52ba87d98d6a4.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"长寿秘诀大观\",\"isbn\":\"6785918572034\",\"price\":698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/a7f2b22878509aa534afdfc35fa1a6ae.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/a185d9a145f8081b0822068615a62281.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/b318ce2da2b8750d5a7d419919bcd35b.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"外国中篇小说丛刊(5) 黑桃皇后\",\"isbn\":\"6789826069563\",\"price\":698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/366982c42ed60a49269ffa8f75a76ea5.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/809c50d9231bb72639e5afba2e54c1b6.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"风云人物一 “厚黑成功术”剖析\",\"isbn\":\"6783786405636\",\"price\":3098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/23507dbe21fb275da3d9045ed314ff41.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/c0473bc04c9070ccfb07387e0e8d8aa9.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/d75dd3c03e9e55810c23e373983e02c4.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"知人善任 无失误的领导艺术\",\"isbn\":\"6789065312657\",\"price\":398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/ffed93cb965e940316deedf2f6d6c25e.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/1dee9bf919deef75b9cc0bec414ab592.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/1267075865bebfda41007e4413fa1f7f.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"内经知要 李中梓辑注\",\"isbn\":\"6787440233358\",\"price\":1298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/12215704f72fbc57341ed57f86d17d7d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/b6fd1366fefbfbb3e90a424623a17040.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"辽宁省 建筑工程综合预算定额\",\"isbn\":\"6783769649314\",\"price\":2998,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/396bf14001e5b571c2859d733d626fdd.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/c9b6691994305efed5d79ced398c794b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/22ecfda9e396989219fb1d0747f0769a.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"教育心理学【1本】\",\"isbn\":\"9787561048351\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/2d3b29fe2242ce446d1fd588b0bedd09.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/26e2838ac7b39e1a682d538e01ebbf9b.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"小学语文教师手册\",\"isbn\":\"6783839000130\",\"price\":364,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/4f60305a49a83463f0d38bb5b08b9fd8.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/9152b378b25540a5d4727f587462c0c4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/2278044b88b494226b1a98cfd98a1a9c.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"职工业余中等学校高中课本 数学题解\",\"isbn\":\"6788046535956\",\"price\":658,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/61a06a01134b698babe64ff7d068e355.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/d8d9a4bf4c639d494c7d2132353b0adf.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/131c9133715bea4a3fb41f84d577593a.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"围棋基础教程 初级篇\",\"isbn\":\"6789894928124\",\"price\":898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/cf84347c56558e8b954b8c0db7c5f813.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/5a1308fef661dbd9939ae26624705084.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/cc1af60533ecc1a93f11ee8b983f2619.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"中学生作文训练\",\"isbn\":\"6784586603417\",\"price\":388,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/b546cce03a242808157de5e3e585c423.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/13055f963487cf5bb8b7c23d91233a79.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/1c8373b68abcea8618b52bace3a6bc52.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"初中数学学习中常见错误分析 张子贤陈京文\",\"isbn\":\"6789308705305\",\"price\":548,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/5b45cc6493e7b64ea263041cecd5091a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/c9f5298e9c1ddcfd5c37ea2bfe1ec415.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"中学生作文竞赛获奖作品\",\"isbn\":\"6780848679222\",\"price\":1833,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/0e0bd43c002f20a83058f603fa23c8f3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/c34195ca1009e82a7e2bc4757ce92435.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"思维技巧趣谈\",\"isbn\":\"6784780225610\",\"price\":428,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/fb63af13b4cc7b0dc550ff1e5025a44b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/e95f90c4dfda6fb8c7b6a8fdd32f3e6a.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"少年电工\",\"isbn\":\"6788995405527\",\"price\":778,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/297f3c12f76d19e4b5894175343eee67.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/870af1d68d17d7c37a1ea17886d3e16d.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"畸形的爱恋 (报告文学集)\",\"isbn\":\"6789457428825\",\"price\":298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/39c86819-92fb-4841-a4ef-57caec869127.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/69dbd804-358d-4278-b34a-fb9d49d0da6e.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"怎样读简谱\",\"isbn\":\"6784085519983\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-27/73d62d87-2061-4c6c-b885-248676b959d8.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-27/09470344-e40d-4d46-b4b4-284198cbccba.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"月季\",\"isbn\":\"6789196422453\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-27/f25043e4-69e9-45b7-8fb4-8433f21001d8.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-27/67c7a2cd-ed1c-4203-a04e-8e3a772cbe52.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"风雨落花\",\"isbn\":\"6786833300418\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-27/d99c5347-21ff-44f7-a53e-0a5efc9b844a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-27/105606e5-20d7-49cf-83d6-83355d73f9cb.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"旧上海娼妓秘史\",\"isbn\":\"6789779284633\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-27/54ff8149-2eb6-4b6a-969d-dbc67e943824.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-27/a093f8a1-77d7-48bd-81c3-122b0cfce8d5.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"浪花集\",\"isbn\":\"6786272659285\",\"price\":498,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-27/96854c60-671a-4d44-901f-718bb36a9ff1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-27/3ceaa4bf-848f-4ae3-807b-d770f3806751.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"金鹰\",\"isbn\":\"6789186191026\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-27/a611eeb0-e56b-48ef-b019-e053d4781e02.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-27/421b25d1-65f3-4492-bdf0-5b034c48a9e9.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"间谍\",\"isbn\":\"6786804972179\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-27/1b8def46-05b6-4a02-870c-498e0dd10231.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-27/8c438ced-9c3b-41b5-9df6-9273ae6d10f8.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"诗词赏析句典\",\"isbn\":\"9787538257298\",\"price\":1398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-27/b837d31e-ef47-4a9c-ab83-a8e7057e434c.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"欢乐农场日(中英双语韵文)/小熊很忙 9787508657844\",\"isbn\":\"9787508657844\",\"price\":1056,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/538f6407-02b0-4f09-a66d-7a0f3a159ae5.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":0},{\"goods_name\":\"白血病防治110问\",\"isbn\":\"9787506239738\",\"price\":318,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/fa7b04a9-e888-4c61-987d-e404e25322b1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/3d968f5a-7372-4a13-9b95-50b1515e8782.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"尖子生题库五年级数学上北师版BS版关成志孟伶俐9787554924488辽宁教育出版社\",\"isbn\":\"9787554924488\",\"price\":676,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/8822bf5e-3319-4e7b-aaff-6f54d7b47b29.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/7d91ebaf-446a-482b-b4ca-9b17905cca4d.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"胃病\",\"isbn\":\"9787539016344\",\"price\":396,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/0a950830-597b-4aa6-8ce1-538ebf3e4b62.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"从小好习惯全八册\",\"isbn\":\"9787535886804\",\"price\":1697,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/01855e75-671c-4ec4-9fe8-baddeda13dde.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/5b5c9e62-b704-460c-9460-590093029850.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"《十大古典白话长篇小说》丛书 封神演义\",\"isbn\":\"6787844351032\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/da31dab0-da2c-4144-84c0-3a6e21834d4d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/38c1712f-1383-4b32-9ab1-aba5309a7c3a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/8a34ff17-7322-496d-8763-67513cbd5070.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"元明清文学作品选\",\"isbn\":\"6780505323445\",\"price\":207,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/9a24f35d-b77e-4ff3-95d4-879e3bdad776.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/11220fed-f82f-4c37-b896-00220e880191.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/94f0855e-b569-46e2-a899-b4262102ccca.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"茶酒治百病(修订本)\",\"isbn\":\"9787543910713\",\"price\":298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/082cf83b-7fa8-46df-9682-8d39e5b58242.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"无障碍阅读 初中生必读\",\"isbn\":\"9787100092241\",\"price\":1499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/5e8668e6-d23d-4547-9590-a5fb9af4b342.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"日语初级教程\",\"isbn\":\"6785462003723\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/3256a23f-68a5-470c-b667-6c9f3e1507e4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/9d7f448e-f9a3-4dc0-b84e-1ee6d18b54a0.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/16686dd4-7277-4e26-9132-db9f697584c1.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"精选名儒草堂诗馀\",\"isbn\":\"9787538265026\",\"price\":1098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/3204e20e-299a-4c2c-b473-92055b874268.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"翰学三书\",\"isbn\":\"9787538265019\",\"price\":3898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/f61861ca-c16f-4f61-85c7-61872bed3f6b.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"竹笑轩吟草\",\"isbn\":\"9787538265064\",\"price\":2498,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/bd9f0629-da3c-413a-bf6e-39d1f494668e.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"花骸\",\"isbn\":\"6789687688467\",\"price\":648,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/b18810fc-bdcb-4898-87af-d3713a98a686.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/397fd2e7-bab8-4e9c-a457-2792524ed97d.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"蓝色档案 华永正\",\"isbn\":\"6786725975780\",\"price\":698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/4c03cf0e-c866-4626-a1db-29e6dd1e9a2c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/8c4d2202-d28b-4638-8181-796bb0a2131d.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"出山第案\",\"isbn\":\"6786650731325\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/0e1aa3bb-8a26-4db2-a9b5-68a8962011e9.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/5fdba389-17b1-44b8-ab8a-928b3f00bb0f.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"高等学校教材 日语会话\",\"isbn\":\"6785149156073\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/d561d233-6c32-4dcf-be5f-43e0bde69fd3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/36b8472e-39ab-4f7d-a890-8a6a1a599c19.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"越海侦察\",\"isbn\":\"6788631112585\",\"price\":598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/aa0f1edd-7f64-4080-a3ea-1a98ea624860.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/5bfb5f5d-a4a3-4c04-9acd-953633ed7f19.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"谋杀总统的国家\",\"isbn\":\"6780702451762\",\"price\":398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/96868491-d6d7-4288-936d-60bc10079531.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/227deeab-ad0d-4ab4-9978-ef3948407b24.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"江青日记外流记 谢峻峰\",\"isbn\":\"6784863534218\",\"price\":598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/690884e3-b417-4986-8fa6-7a4858981a99.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/a5501dad-97e8-43c4-97e9-e8969cb11fdb.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/abb6a0fe-3be9-4159-a028-40e43bfd6068.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"仙游记\",\"isbn\":\"6784232293444\",\"price\":1589,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/820f1439-a3f9-4b85-9cc8-5bddddbb7c6c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/641c8e46-ab9a-49dd-b54e-74c9d4abd376.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/9b9ffbbe-272b-434e-a566-b907c46bb921.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"神奇的校车全十二册\",\"isbn\":\"9787221091925\",\"price\":4398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/52102b34-3bb5-4c45-8e9f-983139121e2d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/8a904e4c-2217-4344-a3f2-1163d9188ac4.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"神奇的校车全十册\",\"isbn\":\"9787221091925\",\"price\":3098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/66373d8a-8f87-4428-a6c7-afca23ddfea9.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/f93cfc42-e121-4844-a4cf-795289f6eb7d.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"幼儿社交能力培养立体屋:玩具店\",\"isbn\":\"9787556048120\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/32d94537-df31-4096-a3c4-3db647c38167.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"荒诞故事集:耕林文化精选绘本\",\"isbn\":\"9787547000724\",\"price\":1098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/14a9ab1e-8a05-4639-815b-521f2e389c9b.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"和米格一起去冒险\",\"isbn\":\"9787556834181\",\"price\":598,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/7b93db54-904c-40a1-9fe2-1057e245941b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/c9db4cc0-e9da-4d39-8c03-b3e01b21c40b.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":0},{\"goods_name\":\"虚拟现实驾到\",\"isbn\":\"9787568296755\",\"price\":199,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/93803694-8dc4-4763-879c-50096ecfd586.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"终极米迷口袋书:惊奇世界\",\"isbn\":\"9787115402578\",\"price\":293,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/90d032a5-51e5-4198-90b7-1497d9d92c49.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/cdb4feee-262f-46d7-ac02-ef377988a03a.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"小屁孩朱尔多·变身蜘蛛侠\",\"isbn\":\"9787531337614\",\"price\":1587,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/497aa3d6-e9bd-4e53-b219-0abf34ef2c39.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"小屁孩朱尔多·决斗班长\",\"isbn\":\"9787531337638\",\"price\":2779,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/7f639b02-83c4-427c-b625-5049baf862a5.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"小屁孩朱尔多·有个秘密不告诉你\",\"isbn\":\"9787531337621\",\"price\":974,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/a62e4871-da6c-4f89-a255-b01e71cd4bc7.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"【全新正版】 中国古典神话传说和民间故事-黄鹤楼的传说 9787559549358 王淑杰 河北少年儿童出版社 2022-07-01\",\"isbn\":\"9787559549358\",\"price\":732,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/9db8bd5c-3913-4f6e-a006-cfffd186ab1b.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"魔法学校(注音版)1\",\"isbn\":\"9787531337058\",\"price\":377,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/1d871bdf-c6bf-414f-964a-a8743852e4ee.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/6ef2397a-b7c3-4b61-9de0-265297ead88c.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"楼外寻梦\",\"isbn\":\"9787531679936\",\"price\":388,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/ddfa3b4e-3046-4d0f-8f41-5fb022852dfb.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/16cb66cd-17b4-4dc2-9593-8497cf741cb6.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"蒙古贞文化大系:中国阜新蒙古剧(上下)蒙汉对照\",\"isbn\":\"9787549704217\",\"price\":10799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/ea0e169f-c484-4f1b-ac8e-e784f00269e4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/991f8cfa-cd72-4377-a2c9-0fb9828519da.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"胡雪岩的智慧微博 杨川 沈阳出版社\",\"isbn\":\"9787544144612\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/f7b5168a-5698-4da7-9df8-f7d78578ccc0.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/ccb2a943-935e-4d87-8f6f-8c6fd15b7351.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"中国古代航运史——“一带一路”系列丛书\",\"isbn\":\"9787563232680\",\"price\":4949,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/66ed68ea-95c2-4245-b5b7-68162a255d3d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/f8e92296-f0fc-43be-bc3c-9b6691922117.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"辽宁大事记.2011\",\"isbn\":\"9787549703869\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/e777b434-9044-4ac1-a387-cd4fb8170ebf.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/54d14036-58db-4bb1-89d3-0cb74f468f54.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"耄耋新作\",\"isbn\":\"9787544139281\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/166ed3d7-9f19-4e74-b661-5750bdbb7467.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/ebd5ea0c-7a23-46e7-b1cb-6b062dce3133.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"辽阳历史大事记\",\"isbn\":\"9787549700141\",\"price\":5399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/1f5be6ff-a903-4205-a762-d561795df3b9.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/0197044c-ddf0-46cf-bbd9-6be5f39edca2.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"印记辽宁 上集 永恒的记忆 说说辽宁的纪念馆\",\"isbn\":\"9787547021897\",\"price\":1582,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/57b83a18-5de1-42c8-87d2-9c3ae4d1d4e9.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"关东民间传说\",\"isbn\":\"9787544126656\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/7c8efdec-df32-4cad-9a36-74ecfce41147.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/e7e42d04-1c79-489c-af3e-9416974d8270.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"笔记文选读/大家语文\",\"isbn\":\"9787205086688\",\"price\":1007,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/55297ae8-a309-410d-bbc1-d0553f279497.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/5028caf9-7311-4b0a-acd8-2066f2e4252d.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"猛回头 : 陈天华、邹容集【平装本】 正版全新,一版一印,保存完好,实拍图片,品相如图所示\",\"isbn\":\"9787205028695\",\"price\":82299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/f0b2a84b-311c-4bc3-86f6-f730c87f6401.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"四世同堂 上下\",\"isbn\":\"6789814621097\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/a80f3eec-b887-4bf3-a90d-079edc91587a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/9baf09ff-2bb0-4f63-951c-5d9942d311bc.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/e51d89d4-f7ca-492a-8851-108a497889df.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"山菊花上下\",\"isbn\":\"6784518358361\",\"price\":1798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/8f61d13c-31b1-409e-9a13-a8dda2a396ce.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/72cf4c6f-dbfd-4517-ac1d-74ab898f00cb.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/396202bb-5870-4eb9-8079-47aa61b18f58.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"中国 死桥(上、下册)\",\"isbn\":\"6787000264168\",\"price\":5299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/f5c6f2e2-0940-418e-ad74-de3fd36de5e3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/ef69ff46-81c5-4a8f-91dc-3d7b4829a474.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"回忆与思考\",\"isbn\":\"6785424360060\",\"price\":4599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/65680cc5-1b5e-4941-9932-ed8654ef1bdc.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/b0efda24-2e13-47c2-9bd6-f2afbed8a2b3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/315a0f52-9a66-4eae-8711-a3962c1407ee.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"钢铁是怎样炼成的\",\"isbn\":\"6788468630715\",\"price\":4099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/faf9aa6f-77a3-4bb6-bc42-f879061cbd17.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/4745cdac-bda1-4b44-bdf0-774f7c7efacb.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"上海的早晨 第二部\",\"isbn\":\"6788219253689\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/3d7293b7-74ff-47c7-a301-c2901930d96d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/d89f4e32-11b5-4f2a-bd00-23e8ab939d44.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/505d2141-d4ab-4cf6-9815-a2ffb8a7f14c.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"冲破山河的迷雾上下\",\"isbn\":\"6789941045161\",\"price\":3999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/4f0bda8c-8859-4a26-bf05-ed74ef06af94.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/296ecfa8-ea12-4d7f-9ac9-6547d59024d0.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/e6dc8c77-5707-414e-a632-f057478fc73d.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"平原枪声\",\"isbn\":\"6783332618373\",\"price\":202,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/19131924-369f-436f-9e82-d207f9616c38.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/776302a1-cd0d-486b-a4f7-d39c728b5824.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/77f66add-291d-4833-bbfc-2e9d266f226c.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"敌后武工队\",\"isbn\":\"6786740161190\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/f5a1bfc0-ec61-4f56-afa7-644b971d88f0.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/5d060891-4588-49d9-8046-d205f9e840ec.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/b7178f03-9fb7-475f-84f1-1cfd25b47c15.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"薛刚反唐\",\"isbn\":\"6785381371358\",\"price\":300,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/90bd2a59-b781-455d-ba34-714c280c7f0f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/daedcc2d-18ec-4296-b23e-dded0c1c1a63.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"微神集\",\"isbn\":\"6781740909600\",\"price\":254,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/e99e2b37-e1db-4aae-9b0c-9f2c11f11c70.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/6554004e-bce2-4e83-912f-14c8742ea538.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"静物的用光\",\"isbn\":\"9787531427469\",\"price\":487,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/aaf842b8-e598-47fb-a7a5-2d0e51de5edc.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"传统工艺之旅\",\"isbn\":\"9787531426929\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/55eb0009-474a-4a1a-aabe-592232e0874a.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"记忆中的辽宁\",\"isbn\":\"9787531432128\",\"price\":4699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/eba4ee24-2be6-4328-92f4-22556119e74e.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/d4530098-bae0-45ac-8f6d-3ef0f69588e2.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"儿童学画必备资料用书:姜宏儿童创意素描教师范画赏析\",\"isbn\":\"9787807591795\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/808716cd-c75b-4e37-aa23-0235c5e58e3f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/adbec248-6ea2-4079-8b4a-e5d2ceb94938.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"中国书画 2015.09\",\"isbn\":\"9771672232020\",\"price\":529,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/ecd52d63-ee5e-4614-b883-e0bc2eb40ab5.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/dd1340f6-64df-4687-b60a-a7de100ab081.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"赵宝平素描集\",\"isbn\":\"9787102020914\",\"price\":4199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/cc247a1d-d87e-40a3-acc6-b40567861515.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"新编满族大辞典\",\"isbn\":\"9787561078594\",\"price\":11099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/c9bdd685-3368-48ea-84f6-128840dfd188.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"中国民营书业发行概览上下\",\"isbn\":\"6788250953789\",\"price\":9299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/e73c3283-ce9f-40ca-b2b3-aa5a631c71de.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/23fca110-860d-4ed2-a5d0-dbdc419993a4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/355fe81e-9af4-4963-a1cf-7fa22184a60c.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"辽宁省志.广播电视志\",\"isbn\":\"9787538128055\",\"price\":2698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/5e963542-7045-4cf2-a343-388901690d3c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/049f0efe-0f2f-4af4-8682-8ee212028a7e.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":2},{\"goods_name\":\"海洋乡志\",\"isbn\":\"9787205078645\",\"price\":11499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/6c8cb6fc-33c6-4eda-ad57-1113db5c275f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/1b941ae5-bb4c-4243-88ac-8516232d97a9.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"COM人体速写\",\"isbn\":\"9787531428046\",\"price\":3749,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/ec5b7a59-9136-457a-8603-84d54c668368.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"向峰文集全五卷\",\"isbn\":\"9787561042755\",\"price\":13900,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/74077f2a-5b6a-4b5a-9979-24bfd5ba1127.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/e5403cce-9e09-4540-bc0d-7a7c568f265b.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"辽宁省图书馆藏古籍精品图录\",\"isbn\":\"9787544136792\",\"price\":45999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/27d86eb4-1dea-495d-8c1f-5fe195dc841f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/85773b61-41fc-4679-b9db-291776fbff86.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"辽宁省志.出版志\",\"isbn\":\"9787538127560\",\"price\":1698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/47dbca04-edda-4ddb-a17a-fabf3ed0637d.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"药食同源养生方药集粹\",\"isbn\":\"9787559119278\",\"price\":476,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-30/34f10f87-35b3-418c-a05c-8bf20bf2e6dd.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"经济学原理\",\"isbn\":\"9787547018415\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-02/c40cdc9e-e553-4135-9c2b-030ba7a6788c.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"实用抗血栓个体化药物治疗手册栾家杰主编安徽科学技术出版社9787533769420\",\"isbn\":\"9787533769420\",\"price\":7386,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-02/201c08fd-62ce-4080-a2a4-899c533abede.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"饮食术\",\"isbn\":\"9787513259156\",\"price\":689,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-02/eaa00dba-6331-4e0b-9e3f-2af460de53bf.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"暗房技术\",\"isbn\":\"9787805361505\",\"price\":839,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-09/dbb6c343-ae28-45b6-b1ee-6765e62bb9c3.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"向日葵开过旧夏天\",\"isbn\":\"9787531338369\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-14/ecf1ebe0-e0df-4b61-a573-bb7389621b66.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"BOSS出没,请当心\",\"isbn\":\"9787543694033\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-14/9f866d5c-5695-4617-aace-c6933f01ba74.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"三国演义 绣像四大名著全本\",\"isbn\":\"9787564530389\",\"price\":566,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-14/59a13194-0b27-45b1-9a94-39aa10f6bc09.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\":中国古代教育史\",\"isbn\":\"9787107070525\",\"price\":877,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-16/b8075bd0-7a0d-446c-9d6c-a82e8b08ed36.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":0},{\"goods_name\":\"《书法常识一本通》\",\"isbn\":\"9787547012536\",\"price\":1236,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"别具魅力的软雕塑:[中英文本]\",\"isbn\":\"9787531427292\",\"price\":378,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"唐人书《金光明最胜王经》三种\",\"isbn\":\"9787806635568\",\"price\":1178,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"唐人书〈大般若波罗蜜多经卷三百九十〉\",\"isbn\":\"9787806635537\",\"price\":878,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"【二手正版】 疯狂科学 (美)格雷|译者:张子张 人民邮电 9787115244949\",\"isbn\":\"9787115244949\",\"price\":200,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"天艺·冰花图典\",\"isbn\":\"9787531427957\",\"price\":346,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"平天下 2022\",\"isbn\":\"9787010236957\",\"price\":777,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-18/b8779ce5-4abf-4987-bf4e-fee9e65ab336.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"2023年春 尖子生题库 数学五年级5年级下册(BS版)北师大版  \",\"isbn\":\"9787554936177\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-21/a1f27911-fc77-4bbd-a0d3-2cddf7b05f31.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"小学生中国文化大百科中华文化常识小学生必背知识点趣味问答 轻松易懂弘扬中华传统文化提高文学素养国学启蒙\",\"isbn\":\"9787511070982\",\"price\":476,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-23/5ac52b5f-432d-4a90-80fb-04e4abcd87c9.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"新蕾原创桥梁书:讲童话的魔法学校 管家琪 新蕾出版社\",\"isbn\":\"9787530761915\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-23/b51d2a4e-fe9f-473e-acd5-616f9b76069c.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"2023年春 尖子生题库 数学五年级5年级下册(BS版)北师大版  \",\"isbn\":\"9787554936177\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-23/4054fe71-9cff-4b01-80dd-47b352d95fe2.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"智慧故事:彩色注音版.外国卷【1本】\",\"isbn\":\"9787532240265\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-23/f55a2bb2-4479-4b98-a60b-00827ec16080.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"秘密森林奇遇记\",\"isbn\":\"9787530760253\",\"price\":1394,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-23/6453a745-c3fe-4bdc-ab65-5f7351a98aa5.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"于谦全传\",\"isbn\":\"6787076614831\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/5c7f04f8e52a92f12ee37525e6228448.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/da19c3a46de5191d3fa3f6e292b7ec36.jpeg\"],\"location_code\":\"NS-B6-4\",\"inventory\":1},{\"goods_name\":\"从小好习惯 幼儿行为习惯教养绘本(全28册)\",\"isbn\":\"9787535886804\",\"price\":200,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-01-06/3666c2b5-4e57-49bf-a095-b5bcde5d39fe.jpeg\",\"https://img.pddpic.com/open-gw/2026-01-06/81c72690-41ab-4e1e-b56d-c62362bd776b.jpeg\",\"https://img.pddpic.com/open-gw/2026-01-06/8a7380c5-331e-40dd-b3bc-b882cd2697a1.jpeg\",\"https://img.pddpic.com/open-gw/2026-01-06/440fad81-eb92-410c-b65a-ca7ad7f517b9.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"如果巴黎不快乐\",\"isbn\":\"9787547401880\",\"price\":389,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-01-26/6787bc1a-e132-48fc-9f18-a0feae5d767f.jpeg\"],\"location_code\":\"NS-A3-1\",\"inventory\":1},{\"goods_name\":\"高等院校经济与管理核心课经典系列教材.工商管理:企业运营管理(第四版)\",\"isbn\":\"9787563822447\",\"price\":332,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/e130efe4-f9fa-4b2e-9986-594064a4a238.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":2},{\"goods_name\":\"你有多,就有多珍贵简·格兰尼曼 安德烈·索勒9787521763294多仓直发\",\"isbn\":\"9787521763294\",\"price\":2903,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/5d608fa6-09fa-4777-9d37-32d2ec16f8a8.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"初中知识清单·初中必备工具书:语文\",\"isbn\":\"9787565603778\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/d125eddc-748f-4114-b99e-520088aac6de.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"Autodesk Inventor 2020实用教程\",\"isbn\":\"9787302587194\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/b3b2767d-c929-45a7-94af-0f7b83790a8d.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"计算机组装与维修基础教程(第5版)\",\"isbn\":\"9787302515463\",\"price\":1698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/2016960c-e9e2-41fa-9251-492b89acb283.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"建筑设计原理\",\"isbn\":\"9787112128082\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/8f1b543f-5a5f-4698-a5a8-74e9e42d4148.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"物流成本管理9787302313977\",\"isbn\":\"9787302313977\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/5b0a898f-0d13-4193-b3e9-79a976dce42b.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"正版二手货币银行学第五版王晓光9787302513995清华大学出版社\",\"isbn\":\"9787302513995\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/e89ce1dd-0ac9-4edf-9b77-e225f6e24fbe.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"周计划:小学语文阅读强化训练100篇\",\"isbn\":\"9787562848301\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/90bdb24c-182f-4d61-be9a-00867c149fc3.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"通用百年历(1921-2060)\",\"isbn\":\"9787534530272\",\"price\":3599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/a30e648e-3792-47eb-b571-288adeb0d034.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"华北解放战争纪实\",\"isbn\":\"9787010032849\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/66735eee-d069-4b0d-8117-24b7a02b7459.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"国际大奖小说:金龟虫在黄昏飞起\",\"isbn\":\"9787530742815\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/a4c10540-4d2e-404f-9986-db91588a56f8.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"匈奴帝国传奇(彩图版)\",\"isbn\":\"9787507827385\",\"price\":393,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/fa29de9f-86a0-4efb-bfea-3617a1c3665b.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"成长文库·你一定要读的中国经典:聊斋志异\",\"isbn\":\"9787530122822\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/f9cf6471-0626-46ff-bc20-f66451aed2bd.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"音乐基础知识(基本乐理)考级模拟试卷10套 一级、二级、三级(全三册)\",\"isbn\":\"9787515350684\",\"price\":387,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/ceb8f985-f66c-4b89-acd9-164927d264ed.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"全职高手8·赏金猎人\",\"isbn\":\"9787535385802\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/1d98ce54-0722-43e1-a97f-5647f7ed368b.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"it's love偷星九月天同人小说集 2册合售(1.2)\",\"isbn\":\"9787549201198\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/ab023683-b0d1-4d16-9174-4ce087966c9c.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"电商产品经理宝典:电商后台系统产品逻辑全解析\",\"isbn\":\"9787121325793\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/af0f12cd-9802-4c36-8724-c92218dfbd78.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"改变,从家庭亲子阅读开始\",\"isbn\":\"9787519466640\",\"price\":649,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/d858bc2f-22fd-4aa1-bf83-5c053e8f833b.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"Visual FoxPro 6.0数据库与程序设计(第3版)\",\"isbn\":\"9787121123931\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/23acd73e-e6a2-4184-8c22-89fa274eb0d4.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"政府绩效评估/“十二五”普通高等教育本科国家级规划教材·21世纪公共管理系列教材\",\"isbn\":\"9787300152189\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/10bc7a35-50bd-45be-9d84-56cbf72904ab.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"烹饪化学 第三版\",\"isbn\":\"9787516717547\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/299a3c81-7a18-4d74-8f50-f91bbbd6b664.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":0},{\"goods_name\":\"编程之美:微软技术面试心得\",\"isbn\":\"9787121060748\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/134d3eb7-4e5c-4bff-8bf8-1ff870b11955.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":2},{\"goods_name\":\"数据结构 用C语言描述\",\"isbn\":\"9787040433050\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/3917fc53-6fed-4309-b5c4-0fed635e57c6.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"世界高端奢侈品图鉴\",\"isbn\":\"9787510430947\",\"price\":888,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/1e7541dd-2e62-432b-bce7-6182296b73d5.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"喻屏传:一位老共产党员的人生历程\",\"isbn\":\"9787801992307\",\"price\":4099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/65a4c51d-ef8a-46bd-84e3-9bfae5e6fc5c.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"找对你人生中最重要的7个人\",\"isbn\":\"9787539973043\",\"price\":290,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/8b7a9d83-b76a-45b2-a9ff-c495d2a6f4a4.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"图说细说汉字\",\"isbn\":\"9787565827105\",\"price\":3159,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/e67657da-beb9-4ba0-af69-de87e6504f40.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"没有女人的男人们\",\"isbn\":\"9787532768776\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/153b7dcd-c99a-4189-8561-33b3eff0c243.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"意林成长卷:何以为青春\",\"isbn\":\"9787511070975\",\"price\":597,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/7ceb2fb2-519e-4cbf-8a86-afb9a1e6b74d.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"全球阶梯教养圣经 : 你的1岁孩子~你的6岁孩子 6本合售\",\"isbn\":\"9787539045016\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/e70081f2-256c-4c58-b18f-9cf5af361f8e.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"一次完全读懂佛教\",\"isbn\":\"9787543053472\",\"price\":1011,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/1583cdf4-707f-4630-83cd-ab9030a6fbcd.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"金英杰 2018年中西医结合执业医师资格考试实践技能图解\",\"isbn\":\"9787552271911\",\"price\":599,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/be9a5886-401a-419f-8239-b3ef05aa1e89.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"数字游戏史:艺术、设计和交互的发展\",\"isbn\":\"9787309151374\",\"price\":1430,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/7ed0d6b9-9feb-4ed3-b4f9-174c3cce4506.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"大学化学\",\"isbn\":\"9787301308455\",\"price\":409,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/917127f8-5ef4-4dde-a09b-e2ac8df02845.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"自考教材政府与事业单位会计(2018年版)\",\"isbn\":\"9787509585481\",\"price\":308,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/22f40fba-8262-4b05-96dc-c75e9ec3d5aa.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"八个宝盒 让孩子活出精彩人生\",\"isbn\":\"9787550211186\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/a2f7571c-347f-4d88-93c5-dcc53db26f35.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"21天学通C语言(第7版)\",\"isbn\":\"9787115355379\",\"price\":282,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/55a96c5d-0db0-4f32-a493-3b0d998208a5.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"GRE官方题库范文精讲\",\"isbn\":\"9787560529547\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/a4d30a15-4c74-48ea-a593-2d818d6aaa5a.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"说笑:有效有范儿的表达技巧(薛兆丰、李诞、于谦、徐峥推崇的沟通表达技巧)(未拆封)\",\"isbn\":\"9787521717419\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/58e63c94-ab50-4d5b-9ed2-6c775a87d796.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"金色男孩\",\"isbn\":\"9787514359879\",\"price\":1280,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/952c5b59-c2bf-44dd-9ac2-ecc79a0e8f4c.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"神农本草经\",\"isbn\":\"9787506798037\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/6d3f1a1a-6dc0-4a35-8d30-d9c341bbd3c8.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"我要对你做,春天对樱桃树做的事 全世界最美丽的情诗\",\"isbn\":\"9787551122795\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/5f6b7db2-11ce-40c5-8680-efe899a234e4.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"一天一首写给孩子的小小诗:捕捉生活中温暖的瞬间,让平凡的日子充满诗意\",\"isbn\":\"9787511047571\",\"price\":936,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/d9f716d5-84f2-4bd3-8d2c-255af55a10fb.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"中国原创科学童话大系[第六辑]:蚂蚁王国大冒险9787556033928\",\"isbn\":\"9787556033928\",\"price\":373,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/6db6f0b7-bbf5-4a05-a424-e99ae8589af1.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"项目管理/高职高专规划教材\",\"isbn\":\"9787111488743\",\"price\":429,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/3256c200-f3d7-468d-ad6e-d3a162390bcc.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"证券投资分析9787509564158\",\"isbn\":\"9787509564158\",\"price\":1129,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/0f0da07e-be81-4978-a7eb-e64df848d390.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"古瓷收藏入门百科\",\"isbn\":\"9787807204336\",\"price\":1263,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/276a2194-e0ff-43ea-8dec-f2dc940f064c.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"反败资本\",\"isbn\":\"9787111655138\",\"price\":401,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/8062ab3b-1b57-46a7-95cf-31355c63f36e.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"杏林拾萃 : 黄衍强行医集思录\",\"isbn\":\"9787548105800\",\"price\":877,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/147ba734-9665-4be7-9cc6-15a48e8df04f.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"精子战争\",\"isbn\":\"9787807000259\",\"price\":588,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/5763c53c-91a5-4263-82af-eef83b674ed6.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":0},{\"goods_name\":\"拍电影时我在想的事\",\"isbn\":\"9787544294041\",\"price\":1857,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/41356e61-a0b8-4365-966a-1214572d8377.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"老板生存手册\",\"isbn\":\"9787801095244\",\"price\":214,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/1d95a4b9-d89c-4fea-ba3b-2ec8c8698d90.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"民事诉讼法学【内页有划线笔记】\",\"isbn\":\"9787562088820\",\"price\":240,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/fb786e7a-ccc3-45b2-991f-3021611c335c.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"1年级下 清华附小的语文课\",\"isbn\":\"9787559815743\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/3b8a2a0e-004c-4b67-a79a-4364a0cde773.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"重难点手册七年级数学上册RJ\",\"isbn\":\"9787562286004\",\"price\":1279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/73ebde50-a731-468e-8eaa-43a518f5c8a2.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"一篇一篇,解读统编——小学语文统编新课这样教(3年级卷)\",\"isbn\":\"9787570211548\",\"price\":778,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/415db4f9-9eba-4e02-bc12-c6da47308624.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"2020国家执业药师中药通关必做2000题中药学专业知识(二)(第五版)\",\"isbn\":\"9787521416800\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/465ef795-72d4-438c-9372-d2a0cebd9dcf.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"建筑制图与识图(附实训任务书第3版)/“十三五”职业教育国家规划教材修订版\",\"isbn\":\"9787576309799\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/ccd0f6b6-4aff-43a5-ae1c-28a7c3f19d0d.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"学前儿童艺术教育(音乐)\",\"isbn\":\"9787040404654\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/c442801a-e026-4fc7-b897-840a4f4dbbc3.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"敏捷软件开发:原则、模式与实践\",\"isbn\":\"9787302071976\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/1635988c-2be7-4535-80a0-dfcc2cc2f631.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"生理学(第7版/高专临床)\",\"isbn\":\"9787117187633\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/ced9864e-524a-4aaf-ba83-7d53ad5039ef.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"全新正版图书 江苏“专转本”管理专业大类考试一本通陈永南京大学出版社9787305272820\",\"isbn\":\"9787305272820\",\"price\":1969,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/0dd0a009-a2e7-484c-9385-296e0d8d02e6.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"高情商聊天术:如何成为会表达的少数人\",\"isbn\":\"9787514218787\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/c02459c9-f307-4c50-ab9e-8f15dae442ef.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"泰语会话 外语-其他语种 邱苏伦 编\",\"isbn\":\"9787560026657\",\"price\":729,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/1fe3d200-f430-4562-8c7b-45edc74d4378.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"中华人民共和国民法典(32开硬壳精装大字版)附草案说明\",\"isbn\":\"9787516222331\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/4efcfaf1-7721-48ad-9735-38e5e8450018.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"再度与你:3:3 青春小说\",\"isbn\":\"9787574601659\",\"price\":1976,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/e76e2656-82e3-4e78-ae79-afd9c19de605.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"中国主要统计指标诠释\",\"isbn\":\"9787503761058\",\"price\":318,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/81ca7887-57db-489e-b469-bf1a6f8d166c.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"经济蓝皮书:2022年中国经济形势分析与预测\",\"isbn\":\"9787520194013\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/2accf642-1b62-4a2d-96e8-c014aa29294a.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"法官裁判智慧丛书:婚姻家庭纠纷裁判精要与规则适用\",\"isbn\":\"9787301248584\",\"price\":441,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/4878f29f-1700-4e59-b568-82d9bd6e86b3.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"2024李林考研数学冲刺预测6套卷(数学一)\",\"isbn\":\"9787512441804\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/addf4d2b-5d27-4d5c-b7de-2a3a7a95ea66.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"内科学全国医学院校教材配套精讲精练本科临床医学教材配套用书\",\"isbn\":\"9787519258917\",\"price\":569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/a879cbb1-c1d7-47b3-b77e-58f30570c734.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"法律英语阅读与翻译教程(第二版)\",\"isbn\":\"9787208136724\",\"price\":978,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/783e435b-a554-4f3a-adf9-65e6d40e795c.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"现代酒店英语实务教程 (有光盘)\",\"isbn\":\"9787506229050\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/2dcb3baa-f1ed-48ec-8a63-7cd26ba7c088.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"魔兽剑圣异界纵横 (1\",\"isbn\":\"9787543889651\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/afd6430a-b505-4279-bf05-be27510a6c2d.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"魔兽剑圣异界纵横 7\",\"isbn\":\"9787543886131\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/743035b6-ec99-4f78-a0f8-7865f38e4fa7.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"施工企业会计9787300276793\",\"isbn\":\"9787300276793\",\"price\":390,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/4e6fdb96-0bd4-4745-976c-3dd945d11f01.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"迪士尼公主晚安宝贝睡前故事\",\"isbn\":\"9787115543998\",\"price\":537,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/1c18dbc4-6e6d-415f-9c8f-0b6730720840.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"皮皮鲁总动员经典童话系列8本合售,正版,书目见图\",\"isbn\":\"9787534291197\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/7b1f6d2b-8856-4bc8-915b-23da40586625.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"百年家族:曾国藩\",\"isbn\":\"9787543448117\",\"price\":348,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/9dc8dac7-a60c-43bd-9461-e0fd5e900a58.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"我的第一本科学漫画书·科学实验王2:牛顿运动定律(普及版)\",\"isbn\":\"9787539187716\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/7e48109b-9fc6-4acb-8e2e-bbaa8c0690c6.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"亚洲的奥斯威辛:日军侵华集中营揭秘\",\"isbn\":\"9787220074189\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/4f14d603-b9ea-4121-905d-33c11453ca59.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"名犬图鉴:331种世界名犬驯养与鉴赏图典\",\"isbn\":\"9787537564496\",\"price\":438,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/00f96cf7-788d-4f2f-9371-0c6586c41922.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"奔跑吧 兄弟\",\"isbn\":\"9787504373311\",\"price\":480,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/b98e8176-9d88-4a8e-b141-a8b975c2e769.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"古堡鬼鼠 书口有污渍\",\"isbn\":\"9787539148595\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/f01f24c7-662a-4cea-a232-c93d18db5d1f.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"鸡皮疙瘩.魔兽主题馆(全新主题馆 一本书满满4个足料故事 勇者之旅 惊险够味!)\",\"isbn\":\"9787544823104\",\"price\":317,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/f32c5f06-4f6c-403d-9e86-14e6598f12f9.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"2013年厦门社科丛书·闽台历史民俗文化遗产资源调查系列:闽台民间传统饮食文化遗产资源调查\",\"isbn\":\"9787561550021\",\"price\":919,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/ba32eb8d-3ea7-4d70-9091-528797810980.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"沙丘序曲:厄崔迪家族\",\"isbn\":\"9787229153755\",\"price\":2479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/d040d0de-3654-47dd-a9ca-f0b9e79ce7af.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"佛祖在一号线\",\"isbn\":\"9787503945434\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/c56f1879-3a05-498d-bc22-74469e47e6e6.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"宿命\",\"isbn\":\"9787544268158\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/89f3bd38-a32c-4abf-9ef2-a24c85dd6a44.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"见识\",\"isbn\":\"9787508684604\",\"price\":301,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/40d78f89-1117-45c6-a724-4ba8fae48c24.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"国家职业资格培训教程:计算机操作员(基础知识)\",\"isbn\":\"9787504578716\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/d85996c3-11ee-40cd-abd4-a4710c38c6cb.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"神经病学全国医学院校教材配套精讲精练本科临床医学教材配套用书\",\"isbn\":\"9787519252045\",\"price\":524,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/7e86e02c-bd6e-4cd2-954e-584d9a3fda4b.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"国际注册内部审计师CIA考试新汇编600题(一):内部设计基础 2014版\",\"isbn\":\"9787545434217\",\"price\":290,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/20012461-643d-46e2-88af-0ebd6c626017.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"出租汽车驾驶员从业资格考试全国公共科目培训教材\",\"isbn\":\"9787114135132\",\"price\":563,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/847b3098-c919-4e46-ac51-ab188bc8b34a.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"内科学全国医学院校教材配套精讲精练本科临床医学教材配套用书\",\"isbn\":\"9787519258917\",\"price\":569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/d09bda53-e18b-46cb-9c5c-a0240b819494.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"小儿推拿(第4版/高职针灸推拿/配增值),16开本,人民卫生出版社(实物拍图,外品内页如图,内页干净整洁无字迹,无划线,扉页有签名)\",\"isbn\":\"9787117261647\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/221547a8-c3ba-475c-8207-ae163864a27f.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":3},{\"goods_name\":\"蔬菜生产技术南方本\",\"isbn\":\"9787565519017\",\"price\":458,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/bf6e431c-b233-4c0b-9b42-b276dae7dc95.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"电子整机装配工艺与调试\",\"isbn\":\"9787121428593\",\"price\":334,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/f408c06e-788f-4bc8-ad30-c425453d7736.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"学而思基本功数学一年级上\",\"isbn\":\"9787562859321\",\"price\":314,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/c25a83b6-3c0a-4e8e-8046-93e2b76f014a.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"《中国共产党纪律处分条例》适用解析\",\"isbn\":\"9787802168954\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/5118bc83-7226-4478-85a1-c66398e60fd9.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"别笑我是零基础韩语入门书\",\"isbn\":\"9787549810734\",\"price\":259,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/24ab31bc-e6f6-4741-bcc7-269feb1dff45.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"手把手教你做优秀税务会计:从入门到精通\",\"isbn\":\"9787111411871\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/a383bc01-78eb-4375-a7c9-fae7096a1e13.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":0},{\"goods_name\":\"食品营养与健康第三版十四五王尔茂科学出版社9787030656360\",\"isbn\":\"9787030656360\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/23a45e5a-1331-4aa6-b7e8-af942874a7ab.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"韩国现代文化\",\"isbn\":\"9787506277273\",\"price\":1316,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/64b3ebb5-72ff-4068-a8f3-960ef466520e.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"综合日语 (第三册学习手册)\",\"isbn\":\"9787301343838\",\"price\":592,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/6085380f-3e52-471b-9f52-9e17d43a3075.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"S7-200西门子PLC基础教程(第2版高等职业院校机电类十二五规划教材)编者:王淑英//赵建光9787115412867多仓直发\",\"isbn\":\"9787115412867\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/4634f9bc-ab5a-4125-9828-15b8ef46ee2c.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"系统集成项目管理工程师 历年真题解析(第3版)\",\"isbn\":\"9787121310058\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/e318b29c-4912-4db8-a167-e404a05fa830.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"西方法律思想史(第三版)\",\"isbn\":\"9787301245729\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/850fa5b9-abe9-428a-a6ee-04e84c13d2fc.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"法医毒物分析\",\"isbn\":\"9787117119412\",\"price\":679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/25009e2d-ef51-42ef-9ed9-8bc54ae96d1f.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"成本会计习题与模拟实训(第4版)\",\"isbn\":\"9787509537718\",\"price\":448,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/b1ef0286-4b75-45f6-889d-9b6636e32c52.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"理想树 高中必刷题物理高二1\",\"isbn\":\"9787565642616\",\"price\":519,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/d3971e47-0a35-4fed-8852-175584eb9c8a.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"怎样写楷书\",\"isbn\":\"9787530514429\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/300fb650-5d60-4c30-b9f5-78de43c26340.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"高等学校英语应用能力考试大纲 第二版 实践题集A级 全新版套装共2册 高等学校英语应用能力考试委员会 高等教育出版社 9787040519785\",\"isbn\":\"9787040519785\",\"price\":859,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/75e25bc2-e79a-4b6c-8a4c-d3ddca683ce2.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"高等学校英语应用能力考试大纲 第二版 实践题集A级 全新版套装共2册 高等学校英语应用能力考试委员会 高等教育出版社 9787040519785\",\"isbn\":\"9787040519785\",\"price\":859,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/e12162b3-9d81-477e-9781-db1c19a82db2.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"数学奥林匹克精编 5年级 陈卫华 著 熊斌,冯志刚 编新华文轩网络书店 正版图书\",\"isbn\":\"9787542772848\",\"price\":667,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/3c353cf2-0f43-4585-a103-9e1735d3f150.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"全国房地产经纪人职业资格考试用书 房地产经纪业务操作(第四版)2022版 根据2022年版大纲编写 2022年 房地产经纪人\",\"isbn\":\"9787112270934\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/e2822e09-c006-4779-a803-000002d895c1.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"十年轮回:从亚洲到全球的金融危机【内页干净 实物拍摄 无笔记】\",\"isbn\":\"9787547600290\",\"price\":1379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/7c01de09-8643-4734-ac2f-dc9c3f3ef734.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"90天攻克CATTI 三级笔译 第二版 两本 看图片\",\"isbn\":\"9787300216942\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/ed11a5ff-af7a-4085-871f-a3fa00882009.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":0},{\"goods_name\":\"产业并购操盘手:15个案例11个范本,拿来就用\",\"isbn\":\"9787201163574\",\"price\":2279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/2f616300-1555-462a-8119-391cfa71b2bc.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"韩国语1.2同售【馆藏书,书脊有伤】\",\"isbn\":\"9787105047635\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/81fb233f-3c43-4e6f-bdf2-8d0621d6fdcc.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"圣才教育·金融硕士(MF)考试过关必做习题集(第2版)\",\"isbn\":\"9787511414649\",\"price\":1499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/acec15ba-317c-490c-bbfd-08aac770ae2d.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"考研政治选择题考点手册 张修齐 9787509016688 正版旧书\",\"isbn\":\"9787509016688\",\"price\":455,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/4733518d-90d4-494f-8c51-690fc64d9171.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"MATLAB在自动控制中的应用\",\"isbn\":\"9787560616957\",\"price\":622,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/556576fe-1a95-4f0b-bb90-76f99ff253c9.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"正版书籍预防医学(第四版)/马骥 赵宏马骥,赵宏9787030476197新华仓库多仓直发\",\"isbn\":\"9787030476197\",\"price\":587,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/59dbb629-3fad-4d01-b18b-f1acc79c029b.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"Java核心技术/21世纪软件工程专业规划教材\",\"isbn\":\"9787302352051\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/c97610fe-d990-4699-b379-499d6a2d902f.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"高等学校英语应用能力考试大纲 第二版 实践题集A级 全新版套装共2册 高等学校英语应用能力考试委员会 高等教育出版社 9787040519785\",\"isbn\":\"9787040519785\",\"price\":659,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/3c91f5da-b22f-4603-937e-0bf152990470.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"市场营销研究:应用导向(第5版)\",\"isbn\":\"9787121075858\",\"price\":400,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/dbb4aee3-d844-4f5e-8ad0-f05bb02d94fc.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"“一带一路”为什么能成功:“一带一路”倡议的九大支柱 精装【内页干净】\",\"isbn\":\"9787300299556\",\"price\":1200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/999fcb4a-0ef8-452b-a551-1a626a3faf63.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"《自然辩证法》导读\",\"isbn\":\"9787516218150\",\"price\":807,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/c2a966df-162a-4b8f-9aa2-81fdd6985ca3.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"基因开关:揭秘遗传真相\",\"isbn\":\"9787500170952\",\"price\":1669,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/07d4b43b-6955-47f4-9a5b-d3422edb0613.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"超越死亡:恩宠与勇气\",\"isbn\":\"9787108023759\",\"price\":679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/c928b61b-ec8b-43b3-9f6f-223e0e07d225.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"只有警察知道:刑凶笔记\",\"isbn\":\"9787540471866\",\"price\":391,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/9ba7aed7-96cd-4ffd-9c10-796aa0dbeeda.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":0},{\"goods_name\":\"壮医特色技法操作规范/中国壮医药文库\",\"isbn\":\"9787555117940\",\"price\":2795,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/12ba241a-2db3-4521-913a-02b1904b1d3e.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"金丝猴日记:2005:2006年\",\"isbn\":\"9787503876844\",\"price\":619,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/ec5f10e1-6147-4401-8fff-9c7262be3a6f.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"大唐玄奘\",\"isbn\":\"9787504375964\",\"price\":749,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/bcc22c0c-a9f4-47fa-bfa4-b4c4acf1af13.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"京城小儿王刘弼臣临证实录 16开 本书收录刘老临床卓有疗效的医案数百例,在验案之中贯穿刘老的学术思想和临床经验。内容详实,深入浅出,切合临床,为中医儿科医生不可多得的参考书。\",\"isbn\":\"9787506749114\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/09f09c50-4383-49b4-967b-dc7168b27138.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":0},{\"goods_name\":\"(店庆活动用书)时间的力量\",\"isbn\":\"9787807127079\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/5d00c732-bf94-4ae5-8c19-c46fd02df81a.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"从文字到影像:分镜画面设计和电影制作流程(第2版 修订版)\",\"isbn\":\"9787115394644\",\"price\":529,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/0622223b-56be-45c3-8df3-60a791a203c0.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"现代教育技术:技能与训练\",\"isbn\":\"9787030551689\",\"price\":859,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/ef17c54b-314e-4822-9c42-4a503f883b3b.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"住房和城乡建设领域专业人员岗位培训考核用书施工员专业基础知识(设备安装)\",\"isbn\":\"9787112165711\",\"price\":525,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/6f7bb703-8ff4-475c-9f21-07c78ed77c25.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"生活中的经济学:(诺贝尔经济学奖得主关于经济、政治、社会的经典之作,薛兆丰专文推荐)\",\"isbn\":\"9787111422006\",\"price\":347,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/888997d0-948d-421a-8668-c34a03cdaf14.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":3},{\"goods_name\":\"跟着心中的孩子,找回面对世界的勇气:30部动画电影30部真人电影,关于人生里的各种迷惘与抉择(水尢 水某)\",\"isbn\":\"9787521700961\",\"price\":259,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/db3b066d-0c6b-493a-b4d4-55f4fc7ea7bc.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"就怕起错名\",\"isbn\":\"9787513900591\",\"price\":469,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/768a3a60-f2bd-433e-9d5f-e1f99cd91583.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"协和名医谈男科常见病\",\"isbn\":\"9787512706477\",\"price\":380,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/494b7929-3afa-4524-b6b1-a10ffa340e24.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"现货自然母乳喂养一本就够了许鼓,于伟9787538895834多仓直发\",\"isbn\":\"9787538895834\",\"price\":269,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/88b310ca-3ecc-47d3-99e7-021d2570e685.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"不怕输,才会赢得漂亮 影子 北京联合出版 9787559618320\",\"isbn\":\"9787559618320\",\"price\":303,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/6eb4628c-06ca-4914-947d-dddaced9a877.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"八卦象数点穴疗法\",\"isbn\":\"9787512605305\",\"price\":463,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/a50813ab-f423-4d8c-95b1-27a1ccfcaa33.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":0},{\"goods_name\":\"马燕日记\",\"isbn\":\"9787539985923\",\"price\":388,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/8da07165-d09e-446f-8d64-e880468cb9f7.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"人与永恒\",\"isbn\":\"9787807077978\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/dd076967-a538-439e-a969-3a48d31e8851.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"别人怎么对你,都是你教的\",\"isbn\":\"9787521706147\",\"price\":1579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/529d0586-87ab-4d1e-809a-87e13a943f0d.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":0},{\"goods_name\":\"【全新正版】1+X母婴护理职业技能实践手册9787565927522\",\"isbn\":\"9787565927522\",\"price\":1500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/52b09fbe-c58d-4d99-a957-a7cc9d8aff5b.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"政府会计实务及案例解析\",\"isbn\":\"9787542958969\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/5617c891-e1d0-40aa-ac35-ac6fac60c0a1.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"程序员的三门课:技术精进、架构修炼、管理探秘\",\"isbn\":\"9787121373770\",\"price\":577,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/343ec46e-57db-4eae-995c-a2ae6edffb88.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"Linux内核精髓:精通Linux内核必会的75个绝技\",\"isbn\":\"9787111410492\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/af843ba5-adfe-425b-bb10-7580d41b34e5.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"9787010143101辽沈大地改革潮:20世纪80年代振兴辽宁的探索与实践(全两册)\",\"isbn\":\"9787010143101\",\"price\":1097,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-18/c848c2fb-60a9-4a26-83b9-5ef239c8cdaa.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"荒原野狼鲁迅\",\"isbn\":\"9787507817171\",\"price\":458,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-18/bfa07a73-ae28-4648-b7bc-65493f0daa2c.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"名家名译:钢铁是怎样炼成的(彩色插图本)\",\"isbn\":\"9787506813723\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-18/6490cc51-00ca-46df-86b3-a3037e3037f0.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"沟通谈判手册 时尚女人\",\"isbn\":\"9787800047251\",\"price\":229,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/bbc54b1f-d661-4925-ab2a-29670a3175be.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"象棋入门\",\"isbn\":\"9787508237978\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/7f757a40-6e92-4763-a063-55d2dd5cd6c7.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":0},{\"goods_name\":\"明朝那些事儿(肆):粉饰太平\",\"isbn\":\"9787505723788\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/1cb95e0c-e8fb-4f8e-a81f-aab745eb7749.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"Linux内核精髓:精通Linux内核必会的75个绝技\",\"isbn\":\"9787111410492\",\"price\":1036,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/768c0f46-631b-44f7-93cf-b08e2dc4dc18.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"程序员的三门课 技术精进、架构修炼、管理探秘 于君泽李伟山张洪亮彭首長刘朋 电子工业出版社 9787121373770\",\"isbn\":\"9787121373770\",\"price\":724,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/6be2b6e7-98f8-4991-a4e7-b3c48a4e6ac8.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"政府会计实务及案例解析\",\"isbn\":\"9787542958969\",\"price\":574,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/eaa194ff-5e87-4927-b6fa-879c13f51f3e.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"鲁迅美术学院作品集\",\"isbn\":\"9787531418870\",\"price\":2579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/44dc4f61-e15d-4c6e-a21f-69ae5733774a.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-22/b0aafbff-84d2-4186-b6f5-7a0393eb12c8.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":2},{\"goods_name\":\"咬文嚼字\",\"isbn\":\"9787807401025\",\"price\":557,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/908e81b1-ca7a-4f5e-b8c4-e822d99b2722.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"著文当庄重(签赠本)\",\"isbn\":\"9787561041314\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/634d2ec4-f8e8-4095-8134-188aa680d0aa.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"书法经典放大·铭刻系列:曹全碑(四)\",\"isbn\":\"9787547911648\",\"price\":1770,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-21/0bf67a8e-267b-4e11-ada7-682ae8de9301.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-21/4c0b725a-0d31-46cf-b40c-9528d19e3c91.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"儿童心理安抚绘本《宝贝,你慢慢》\",\"isbn\":\"9787555292555\",\"price\":379,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-21/024a1449-5cca-49bd-a88e-2689b6941738.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"颜体集字创作指南:多宝塔碑\",\"isbn\":\"9787535679475\",\"price\":479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-21/b121f7cf-498d-4dc1-ba5c-5ac77d420328.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"蒲蒲兰绘本馆:白熊\",\"isbn\":\"9787552624052\",\"price\":659,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-21/d124af28-adf4-4c65-8a7b-27334d20fc0d.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"乐高DC漫画超级英雄 超越光速大挑战 AMEET工作室 刘瑞睿 国家开放大学出版社 9787304091224\",\"isbn\":\"9787304091224\",\"price\":644,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-21/08246dcf-8128-4048-83ca-570ef5ff9c91.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"小熊,你的压力有多大?\",\"isbn\":\"9787511051431\",\"price\":248,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-21/32440871-1449-422a-a736-d6d379d99af9.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"二万五千里 下\",\"isbn\":\"9787208144057\",\"price\":2029,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-21/dbf62b3a-fbca-43e2-abe2-72508daec260.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"程序员的三门课 技术精进、架构修炼、管理探秘 于君泽李伟山张洪亮彭首長刘朋 电子工业出版社 9787121373770\",\"isbn\":\"9787121373770\",\"price\":729,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/c0d8e562-7dd6-4cb7-8ece-67e6b970c597.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"日本公共标识设计(一)\",\"isbn\":\"9787535622112\",\"price\":1859,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/afbe1241-1478-46a8-ab89-b105549d3c3f.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"卡通漫画技法.角色篇\",\"isbn\":\"9787500647447\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/0a408f93-252f-4da2-8d0f-5f32b253d39f.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"公共环境标识设计\",\"isbn\":\"9787533722685\",\"price\":779,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/0f927c08-0d73-411b-9b0e-79957f411ac8.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"中国钢琴名曲30首\",\"isbn\":\"9787103013434\",\"price\":1259,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/ab4d4c6a-4557-4889-9b89-0d25f3ad9304.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"梅兰芳唱腔集\",\"isbn\":\"6786558171041\",\"price\":2869,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/245f2ece-d8b4-4516-9237-e54f2ba69b0c.jpeg\",\"wxfile://tmp_14d4e17e2ac3e5d5f752fdec9a93e9f5.jpg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"民国名人再回首:16开本简装本\",\"isbn\":\"9787806766491\",\"price\":479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/e1473de4-4c74-4be8-a2d0-98bc5c9117e1.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"民国南京1927-1949\",\"isbn\":\"9787806767474\",\"price\":2479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/900849ab-56fe-4735-946c-106060148404.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"宽容与正义\",\"isbn\":\"9787806768976\",\"price\":360,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/dadcd067-67ed-41ae-aa54-dba26c2c4fed.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"正版二手 你看起来好像很好吃\",\"isbn\":\"9787539144528\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/3a237326-cab4-4132-b3f7-8026e5e789ed.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"苏斯博士 双语经典【10本合售】【精装】\",\"isbn\":\"9787500117087\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/2d9305cd-5c53-437b-a401-1f2169510a41.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"震撼\",\"isbn\":\"9787544150347\",\"price\":1079,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/adab6461-fd57-41b6-afb7-d177a1d1b34d.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"说文解字 附检字\",\"isbn\":\"6780305936292\",\"price\":629,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/e26c71b8-7b55-451d-8ba1-e009a33c724e.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-22/e380d97d-38b1-4bc6-9ac4-d51d61f883ba.jpeg\",\"wxfile://tmp_35144c12696cb53abfcd728e718e168c.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1}]}","source":"同步商品数据异常","time":"2026-05-21T16:07:12+08:00"} +{"err_msg":"更新库存汇总失败: Error 1062 (23000): Duplicate entry '17-3254-' for key 'uk_warehouse_product_batch'","level":"error","msg":"","request_params":"{\"user_id\":1965254774327533570,\"data\":[{\"goods_name\":\"自己拯救自己\",\"isbn\":\"9787561331040\",\"price\":346,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-23/8f2141c5-12da-4b57-9743-2c6b825cca9b.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"三国演义连环画\",\"isbn\":\"6780370615662\",\"price\":23279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/a2cfc3be-6c1c-4234-b9f6-0525ee8b5645.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-24/d3cf6c01-83fa-46b3-a409-4e03d9f38877.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-24/8d087c4a-631b-4e3a-a579-d7e9a0fd053b.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-24/31f58dea-1087-401a-bff5-f2ec50f08e59.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-24/d0527966-90af-426a-98d9-4f8b83d9f9b1.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-24/c3aff9c7-e934-40ef-938e-6b18bcaa5d64.jpeg\",\"wxfile://tmp_be8c033c2522287442f0991fa0f90e60.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":0},{\"goods_name\":\"彭德怀传\",\"isbn\":\"6785205944421\",\"price\":2079,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/ba4c8544-11bb-41a6-9e84-ba16b539dd45.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-24/a647bc9a-f50c-474b-b270-9c3fb4939cbc.jpeg\",\"wxfile://tmp_8c8f6608bc95a961f8e509246c9975c3.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"马占山将军\",\"isbn\":\"6787358104799\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/bd818a43-7ea1-43b2-bb4d-f590ba6ae2f8.jpeg\",\"wxfile://tmp_6ef9ee5f3ae19fbd24caef22a9310be0.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"大连风物传说\",\"isbn\":\"6785669675326\",\"price\":1279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/c95d8ed7-2872-4e09-a332-4d20a73119cc.jpeg\",\"wxfile://tmp_9033dbf1c126a4861fa909dc682e640f.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"张作霖浪迹辽南\",\"isbn\":\"6785462035805\",\"price\":779,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/6af6e825-3828-409f-8140-f8d5a56bb330.jpeg\",\"wxfile://tmp_7bd9f60f3aba26d12904f9bb54f54105.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"包公案\",\"isbn\":\"6782066501302\",\"price\":4299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/6241fad0-2fc3-4552-82c8-e2c28be8c724.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-24/e197d39f-d10a-4ea7-9dd5-9d9cdea6a51b.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-24/f7f9d90b-8d88-43aa-a3d0-d7a5f9185942.jpeg\",\"wxfile://tmp_7faab8e2959d2363debf4a47e80f6c13.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"十宗罪 1-7\",\"isbn\":\"6784381043050\",\"price\":4679,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/22d94137-49cb-4052-9181-70a06f24bcda.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"十宗罪——中国十大凶案\",\"isbn\":\"9787540446765\",\"price\":559,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/2ed9c949-5c1f-4016-8bf9-6d838cf57c29.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":0},{\"goods_name\":\"连环罪1-4\",\"isbn\":\"9787201135427\",\"price\":3879,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/d50e77c1-ab8a-453c-8931-494e9335740e.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"程潜传\",\"isbn\":\"6780321947965\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/172642be-d189-42e3-b04d-20b02b863a3c.jpeg\",\"wxfile://tmp_8734a7703ff2b84ab810e47562acbaed.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"临床合理用药手册\",\"isbn\":\"6781023837571\",\"price\":498,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/44aa9516-1daf-406a-af61-cff35f0e2c3a.jpeg\",\"wxfile://tmp_c634f62bb5c0580c0af3aef143a083a1.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"名著精华的现代应用 礼记 史记 晏子春秋 颜氏家训\",\"isbn\":\"9787220032288\",\"price\":5239,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/d5ef3e10-cc82-45f3-bb89-f5d545975c3e.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-25/d86f6713-235e-4c33-bbb1-2f5c1c152f16.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"情史\",\"isbn\":\"6784839458698\",\"price\":3600,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/7fe362c9-8b45-4c60-8670-eeb8bd33b546.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-25/d9c44f79-995e-4556-8057-43fb1870cc26.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-25/2539579f-c6f1-4535-bb3e-c7136301748b.jpeg\",\"wxfile://tmp_5a97602ee1dfdaa0d44934768690e6b7.jpg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"将军刘德才\",\"isbn\":\"6786401570563\",\"price\":1179,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/d06f4ad9-6f96-44ea-b26c-eeaf7fc6aa8c.jpeg\",\"wxfile://tmp_f2db293b95cf62326288ed2011443b4a.jpg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"明末清初小说第一函\",\"isbn\":\"6788011592403\",\"price\":6600,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/c42c0b88-e5af-4e94-861d-db49d2b0cd39.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-25/1d1ac74b-8638-48ce-8407-7bfeea49c817.jpeg\",\"wxfile://tmp_c62a8930bb54982aaa2a84990b9dc3c7.jpg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"莫泊桑中短篇小说选集 上下册\",\"isbn\":\"6785884407594\",\"price\":1379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/31078f8e-deab-4840-9ff3-00a2607ccd76.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-25/0e0b5dec-9118-4d64-ac83-e71f6d7a8097.jpeg\",\"wxfile://tmp_1deaf459766ff22f53a18513c791c181.jpg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"外国文学 (欧洲文学部分上下)\",\"isbn\":\"6789789746817\",\"price\":3479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/1368993a-1965-4e89-964b-2a617e941e96.jpeg\",\"wxfile://tmp_05c19c21afb305c6d53008218cab17f2.jpg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"伦敦谋影\",\"isbn\":\"6788439489302\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/0084395f-9a30-4152-ad91-464fa515e97c.jpeg\",\"wxfile://tmp_000464137727bdad2cc67717a497c62d.jpg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"片石集\",\"isbn\":\"6787433617885\",\"price\":978,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/1aa251f8-b9a2-4073-bc53-6ac2ff5361a2.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-25/f7e6b71f-a930-4e91-9bb9-7a6f6fc2610a.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-25/56fc2f21-da41-4242-914b-d387e0e9bf67.jpeg\",\"wxfile://tmp_d697b54540d8ee38bebe3302141dce7f.jpg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"人体解剖学图谱 韩秋生 辽宁科学技术出版社 9787538140101\",\"isbn\":\"9787538140101\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/70e71e28-28f6-4291-9815-aa00c672c28b.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"新编大学化学实验(张丽丹)\",\"isbn\":\"9787122363855\",\"price\":202,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/d6427307-c8ac-4c97-b4b7-0bfca331a00f.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"色彩的舞蹈—花卉篇2\",\"isbn\":\"9787544178990\",\"price\":2134,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/1e2e4c83-e593-48b0-ba5b-c8c44e1536b4.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"民间秘术绝招大观\",\"isbn\":\"6784919417699\",\"price\":1379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/9bef2a6b-436c-4db8-98f7-e569f4d12cb2.jpeg\",\"wxfile://tmp_6a9c16d681ecc9f0e9d729f80727cc32.jpg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"姜子牙出山\",\"isbn\":\"6787105159897\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/b97e0a73-20d5-4594-a259-fc85734254ba.jpeg\",\"wxfile://tmp_d471c1723052ff9d3315648e71282cd8.jpg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"班主任工作中的心理效应\",\"isbn\":\"9787501986118\",\"price\":479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/1e9e4163-a265-48f5-bdfa-c4b8d3384ab7.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"看图学艺:图解服装裁剪100例\",\"isbn\":\"9787122101341\",\"price\":569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/d79bf8e3-b262-4e88-a3ae-ba655cbcd69e.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"民间剪纸技巧\",\"isbn\":\"9787508215037\",\"price\":269,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/14b38e5d-cfd1-40b2-a29e-3c4ee317596c.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"正版二手小学一年级韩素珍知识出版社9787501524563\",\"isbn\":\"9787501524563\",\"price\":584,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/872d2d2b-5628-4ed0-83d3-3b5b65468dc9.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"澳门特别行政区地图册\",\"isbn\":\"9787503158124\",\"price\":264,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/15536a9f-3cb4-4e34-abed-46a0af663658.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"批评官员的尺度\",\"isbn\":\"6787418629262\",\"price\":396,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/9e612e1a-9e0e-4859-bdac-f2b77436e279.jpeg\",\"wxfile://tmp_03821a18add9afc5490c371935d7df43.jpg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"蓝星诗库金版:海子的诗\",\"isbn\":\"9787020091508\",\"price\":419,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/dd2d12d5-751a-4cb1-957e-5efa1d43f3e2.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"身份的焦虑\",\"isbn\":\"9787532747511\",\"price\":479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/1526735a-3397-4df8-82b7-6d844e088827.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"如何有效整理信息\",\"isbn\":\"6789012624726\",\"price\":221,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/f4e0477d-d217-49e8-ab3f-4fe286e9e542.jpeg\",\"wxfile://tmp_e44e5f3931b4bbbf9e48d5679d3f6150.jpg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"JoJo帮妈妈\",\"isbn\":\"9787533563158\",\"price\":467,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/04d838d1-80e0-481c-a653-c5379811bc9f.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"课堂直播:四年级数学下\",\"isbn\":\"9787552267099\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/12cb4365-7701-4be9-97d5-c9b84e453080.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"口袋妖怪 光之轨迹\",\"isbn\":\"9787900349972\",\"price\":1777,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/f2a50afb-d670-40fc-a626-0d961c29e1cb.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"魏文彬和他的电视湘军\",\"isbn\":\"9787501176397\",\"price\":2716,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/13ea324d-91c9-48a3-94c5-02c9d2153baa.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"中国新疆壁画全集.4.库木吐拉\",\"isbn\":\"9787805473338\",\"price\":33579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/2ff1320d-5e52-42e5-b349-8dd68559584e.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"王亚南文集 第四卷\",\"isbn\":\"6780498099719\",\"price\":1879,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/dfeade6b-1643-4646-9a34-da3d22303c63.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-26/5d5a9b94-8165-4577-956e-a1998ae01dce.jpeg\",\"wxfile://tmp_577ed5de661dfdb6eec1debdbd6b4a1c.jpg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"儿童趣味折纸\",\"isbn\":\"6787380822826\",\"price\":328,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/5c0a3a02-40c3-4f0a-9ed2-f9738fe35f60.jpeg\",\"wxfile://tmp_ad84782685dd445208568a10e84ff1cd.jpg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"谈切脉 张翼\",\"isbn\":\"6783522215476\",\"price\":1569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-31/ee141384-648f-4f16-9c8a-b7ed54ed49e1.jpeg\",\"wxfile://tmp_4cba3153c089e13045e672f5be60e3f8.jpg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"濒湖脉学白话解\",\"isbn\":\"6789843559515\",\"price\":1579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-31/b4d5e60f-27bc-4368-b9ae-047f0f98b711.jpeg\",\"wxfile://tmp_bef251524fe4e191111734035616ea67.jpg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"简明中医内科学\",\"isbn\":\"6782451637154\",\"price\":1279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-31/a4bca812-9f76-493a-a6dd-32c0f75979e1.jpeg\",\"wxfile://tmp_3ac6316a1a65daf94a5890d344217bb5.jpg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"活页英语时文阅读理解八年级15\",\"isbn\":\"9787519800925\",\"price\":754,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/859a0389-a806-4fa5-8e6f-5ca3f09b7ae1.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/f5f3c94a-451a-4004-bb10-1d42856cecb8.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"无人幸免\",\"isbn\":\"9787572608193\",\"price\":405,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/713d178d-9264-4966-8f0f-91a0c4f84a87.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/4d5aff37-9d7e-46ba-bee7-5b6fd30dc00d.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"6级晨读英语美文70篇\",\"isbn\":\"9787510038662\",\"price\":2379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/447c2413-5310-425d-866d-55e08cf4ef28.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/2919d7b9-4bd7-4c58-86b0-fcc7fad3df8c.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"成林实用骨科学\",\"isbn\":\"9787800138560\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/8c6f2b5a-fb01-4692-81d7-358418bcd070.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/b7824829-9a94-4bd0-867f-aac6bc90e6a7.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"中华人民共和国宪法注解与配套(第三版):法律注解与配套丛书\",\"isbn\":\"9787509355176\",\"price\":688,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/e1203a6c-65a8-4ca8-b4e7-600967c9dfbe.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/9ae0d87b-5a4d-4702-853d-b211275efd40.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"建模法律论证的逻辑工具:法律可废止推理研究\",\"isbn\":\"9787562056522\",\"price\":4747,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/2a368767-0e95-40e3-917b-91897b15eb6f.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/f4520149-25e3-42af-9085-0fab9da53ab5.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"退出游戏日初野晴南海出版公司9787544285612初野晴9787544285612南海出版公司\",\"isbn\":\"9787544285612\",\"price\":919,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/f5ac09ec-1b6c-4954-b361-01f611f399a7.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/5fa0d637-097a-423d-acd5-30c4d6ade8ce.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"学前必备500字——青苹果启蒙丛书\",\"isbn\":\"9787806267776\",\"price\":528,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/39010028-bf23-41a3-a90a-415dd5d2aa10.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/04076694-af6f-40ca-bb8b-90b9a96e55a6.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"文心:中学图书馆文库\",\"isbn\":\"9787108030429\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/3b643ccb-96c1-42eb-81f8-c0ce0e437bd7.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/668f17ba-78d4-4c75-bf07-a28d4743b392.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"人生的态度:懂得生活的本质“造出”人生的意义,林语堂指定授权纪念典藏版\",\"isbn\":\"9787540494179\",\"price\":643,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/72f7c802-35ab-4def-9380-b228428675cc.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/adb3b627-0094-4876-b8ef-ed5b0a720dab.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"顾城哲思录 毛边本\",\"isbn\":\"9787554557556\",\"price\":568,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/0683f506-112d-4597-9b4f-e66e6d139eee.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/70d379dd-682d-40e9-a54e-e91fe299a424.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"回民支队\",\"isbn\":\"9787106041939\",\"price\":337,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/3d400447-163f-4175-9d08-61ca49dfb8a5.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/c1a80186-d5e8-4998-94af-042200c8f4ad.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"正版 名著名译丛书:大师和玛格丽特\",\"isbn\":\"9787020115907\",\"price\":978,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/02905762-6324-45bf-b133-0ffc5bd87dcb.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/0fc060ff-632d-42dc-8c82-a2ce094cd0d2.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"理查三世: 王族内讧与玫瑰战争\",\"isbn\":\"9787507547603\",\"price\":1296,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/a6617cc4-1ab8-497e-a60c-52fe517731ca.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/738ccc20-e733-4fda-b181-0d369877d00f.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":0},{\"goods_name\":\"再度与你 3 晗旭 绘新华文轩网络书店 正版图书\",\"isbn\":\"9787574601659\",\"price\":1129,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/f08204b7-5397-436e-80f2-7235e8a07997.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/74c4f8f7-8d29-4486-a91a-c18f26888d14.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"一本书读懂一带一路——重要的、难解的、核心的100个问题全面解答\",\"isbn\":\"9787550431447\",\"price\":859,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/766ffea9-f804-46b5-aa9b-b90fbb1a1b40.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/544546d5-72d1-4946-b552-32f98f5afa10.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"红乳\",\"isbn\":\"9787501232529\",\"price\":229,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/d1b27488-cd65-48ea-a530-6d87ec438b35.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/66050b48-27cc-4b3b-adc9-0ebfce2b7b1a.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"一本书读懂一带一路——重要的、难解的、核心的100个问题全面解答\",\"isbn\":\"9787550431447\",\"price\":859,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/d9c020a4-469d-4444-aad5-77a65db7b7d5.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/0e031684-ec7e-468b-82b7-faca73af6393.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"【全新正版包邮】 庭训格言 (清)康熙 著 陈生玺 贾乃谦 译 中州古籍出版社 9787534833557\",\"isbn\":\"9787534833557\",\"price\":267,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/ecde2d9f-36c7-4c4f-8edd-188738839ca5.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/978fb7e2-3000-401b-b8ff-57dbb728fc37.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"神秘岛\",\"isbn\":\"9787556055005\",\"price\":329,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/e7214443-d5f7-46ef-a66b-674092297413.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/5af4a3df-4aa9-466a-aa1b-788d35375af9.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"图解说文解字·画说汉字\",\"isbn\":\"9787550231887\",\"price\":280,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/07fee599-e793-4e9d-a6b0-bc59c09f62bf.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/7192525c-ea3e-492f-843c-5d0d84ff93d4.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"签名版 翻译新概念英汉互译实用教程(第6版)\",\"isbn\":\"9787118074246\",\"price\":394,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/f59e5683-538c-4f7d-8b92-6f1798633c95.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/b7c73140-ff8a-4fe1-bb0d-2e71b7283358.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"正版现货 银川史话 宁夏地方史话丛书\",\"isbn\":\"9787227060789\",\"price\":978,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/4b5404eb-7ed5-43c3-9224-65bdf47ed908.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/8647c5bf-3574-4f65-bc99-762dd2692797.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":0},{\"goods_name\":\"英语词缀词典:Vocabulary Workshop 1\",\"isbn\":\"9787800809682\",\"price\":1278,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/5b206637-130c-4d5e-a6b5-22c5fe811d54.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/77157b1c-f7d8-407e-ad98-b040149c5b17.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"天上神仙\",\"isbn\":\"9787500839965\",\"price\":679,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/b76d2e10-9859-494c-b75a-e50a7c43a4ba.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/84b6328f-1e10-4ed0-babc-2913dd3c51d6.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"李鸿章:甲午之殇\",\"isbn\":\"9787561355527\",\"price\":517,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/64e8f130-8e27-4058-b23b-9845cbfd3ae9.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/5623cf42-2a4a-470f-8100-bac781257461.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"中国古典文学名著丛书:海上花列传,九尾狐,平山冷燕,风月梦海天鸿雪记,玉娇梨,二度梅花案奇闻,青楼梦,春柳莺两交婚,八本合售\",\"isbn\":\"9787531850922\",\"price\":779,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/96f7e6cf-1d4a-48ed-af21-27307ae3d6f8.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/622c0094-c00b-46bd-9e52-ab318723c6fd.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"The Canterbury Tales (英文版) 特价\",\"isbn\":\"9787205093440\",\"price\":1599,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/d3e01d78-30a1-461c-ac26-7a63e0bf0509.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/2e4140b4-fc4c-4c4d-adca-c6837b565f07.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"爱丽丝漫游仙境\",\"isbn\":\"9787545508857\",\"price\":401,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/d0ac900b-8662-4877-8a88-b7f757b86dbf.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/f8383d94-112f-4165-9298-dbd125cff317.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":2},{\"goods_name\":\"海外中国研究丛书转变的中国\",\"isbn\":\"9787214077806\",\"price\":2079,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/0801ba05-6ab5-48ab-8c00-b21564265688.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/110690fc-51a0-49e9-8f69-3af090796a82.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"诗经选:宋诗选、山水田园诗选、插图珍藏版3册\",\"isbn\":\"9787559609434\",\"price\":399,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/af3d5051-b967-4166-bc44-e8eed40bb008.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/91245b23-abc4-446e-adda-10d80fbb35e1.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":0},{\"goods_name\":\"【全新正版包邮】 苏辛词说 顾随 北京出版社 9787200121070\",\"isbn\":\"9787200121070\",\"price\":629,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/25c3aeab-d400-46b7-8658-cecc55278a7c.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/88f229fe-cbfa-488d-9682-69462efc5cda.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"郑永年论中国:中国的文明复兴【内页干净】\",\"isbn\":\"9787520700658\",\"price\":584,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/f79e7481-e99f-483b-bfff-f72934685af7.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"全脑教学与成长型思维教学:提高学生学习力的92个课堂游戏\",\"isbn\":\"9787515349466\",\"price\":291,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/bdba2677-759e-4e96-8570-a4577bdb1c40.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/2ef8ac04-3fd6-412d-a163-b213ae7086bf.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"许美达小王子(新晋畅销书作家、千万粉丝博主许美达编译。)精装\",\"isbn\":\"9787559662231\",\"price\":335,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/217e8944-dd67-4b05-8224-c8469c1c229a.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/b7666daf-b90e-4489-a24d-dc6dc97888fa.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"造型基础与表现\",\"isbn\":\"9787516662656\",\"price\":1614,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/236e2ba2-60ad-4e78-ab57-7f253fd3acc6.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/ea5a0d23-4645-41d4-9ccb-e4a60b63f2ec.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"孟子\",\"isbn\":\"9787530378410\",\"price\":478,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/01b7affe-2fb3-4a94-8300-b7b55e940b33.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/cc28f5fa-a98a-46a0-a809-68e1df997897.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"希腊古典神话(新版)/经典译林\",\"isbn\":\"9787544768597\",\"price\":545,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/92d19260-7d4c-4448-8849-ed98e9342627.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/f9fbc065-408a-4bde-9e09-34896e825b67.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":0},{\"goods_name\":\"胆小鬼侦探(2)\",\"isbn\":\"9787514510454\",\"price\":259,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/e29dd412-170d-4613-a2fa-6a000081f518.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"意林脑洞系列--语文老师没讲到的红楼\",\"isbn\":\"9787556249930\",\"price\":329,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/8fb157f6-38dd-4255-b4eb-bb6768c99c4f.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/63c13648-e5c0-48dd-a898-61b0a9aa8d14.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"李轻松:行走与停顿(签名本)\",\"isbn\":\"9787544152549\",\"price\":2059,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/c2e8771b-284c-407d-b027-6025346e0545.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/452898b1-cda0-4245-a343-8d9b6335e029.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"红炉一点雪\",\"isbn\":\"9787544151702\",\"price\":878,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/25259d78-2687-4855-ae2e-5f2eaaaff887.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"淘气包马小跳系列*3本不重复。(书名见照片。一版一印。优惠价)\",\"isbn\":\"9787534273179\",\"price\":3579,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/fdf6852a-31c0-4965-81b6-de57aaeb251c.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/a9240182-aa35-41e7-be91-cbee8ae80e0b.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"综合运输与区域经济\",\"isbn\":\"9787113022303\",\"price\":9729,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/d0d63b82-70c2-411d-928f-365f5fc6b521.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/6aae7cd6-4db6-4601-ad0b-0e5552b4916f.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"牛顿 :\",\"isbn\":\"9787544125352\",\"price\":469,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/751d8275-ede3-47cb-ae9d-7d1904c5bce2.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/80fb4353-32f1-43eb-afb8-f320dfc6cecb.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"心脏病一百问\",\"isbn\":\"9787544131506\",\"price\":779,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/4e562c3a-4f81-4dc9-adb9-6b1c2b55914f.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/e4d7a86c-7597-4135-a56e-0196e15dbb3a.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"卜卜熊的雨衣-卜卜熊和朋友们系列\",\"isbn\":\"9787505627642\",\"price\":1179,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/d821b2ad-a52c-436a-be35-d32d3f5dfe67.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"隋唐演义(上下)\",\"isbn\":\"6788455558391\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-09/1457667e-4445-4aa6-ba11-3f9bf78cc54f.jpeg\",\"wxfile://tmp_955bab0891662fe21e9584f1287f93b8.jpg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"冰冷密室与博士们\",\"isbn\":\"9787537828420\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-09/45086947-7c5b-413a-b606-ff3af49ced8c.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"霜冷长河 山居笔记 文化苦旅 千年回响\",\"isbn\":\"9787506318372\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-09/b48fb9be-8241-40f5-9f01-42b836423411.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"巴巴爸爸新故事珍藏馆(2)\",\"isbn\":\"9787544830911\",\"price\":969,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-10/07a701ff-14db-4201-821a-98f06aa7b1c6.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-10/ddb907c4-ca94-415d-96ad-ff02a656e7e5.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"道源精微歌(上下) 敲蹻洞章(上下)瀊熻易考(上下)全6册(32开线装 据清光绪十五年京都前门外永盛斋刻本影印)\",\"isbn\":\"9787537737470\",\"price\":1770,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-12/4a009845-3dd8-4f3b-a720-36a54cb705c3.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"历代古钱图说 (全一册)\",\"isbn\":\"6780386703163\",\"price\":3079,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-13/d0ebd5b5-dc87-4c5a-872b-bc435afe8c9b.jpeg\",\"wxfile://tmp_243da1e752c4853e15281e63db6d7c3c.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"一分钟推销人\",\"isbn\":\"9787544226905\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-13/f09988b2-44b4-4ba6-bd3c-7f9ac0c51839.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"亚健康的中医调养\",\"isbn\":\"9787532377695\",\"price\":1205,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-13/c32ae58d-0886-4869-b79c-6b2e51e2aa12.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"一块钱也能创业:小本投资创业指南\",\"isbn\":\"9787801099549\",\"price\":620,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-13/fdf2a3bd-5b3c-4eca-9a4b-a1de137f9b45.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"每天健康一点点系列:经络松筋法\",\"isbn\":\"9787538437652\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-13/5b194ffa-8f23-42cd-b7a8-1fdc9cec397a.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":0},{\"goods_name\":\"华夏万卷·田英章现代汉语3500字(教学版) 行书\",\"isbn\":\"9787313090317\",\"price\":516,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-13/a84e9e7e-033b-40e9-8296-e26ecfd89710.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":0},{\"goods_name\":\"漂亮字的快写技巧:行书\",\"isbn\":\"9787313053831\",\"price\":944,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-13/47c1be12-f231-4756-a56e-ae6892119024.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"求医不如求己家庭医学全书\",\"isbn\":\"9787214052339\",\"price\":569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-13/8b663717-a3bf-45cf-b50c-650513c4e9f7.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"手到病自消全集4:图解艾灸除百病(专家指导版)\",\"isbn\":\"9787502373474\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/91f39461-f3db-4bf3-9cb5-b943975476d1.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"科技文献:特效穴位治百病速查宝典(专家指导版)\",\"isbn\":\"9787502370626\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/ad9b2c82-df0e-4fab-adc4-ad53e61ffce4.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"同性恋在中国\",\"isbn\":\"9787206022395\",\"price\":898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/60c577ef-25a3-4c9f-bab7-3bad83531a58.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"中国“变性人”现象\",\"isbn\":\"9787805924946\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/3e3999b6-3374-4279-8c9a-08cd89b3a530.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"中医火神派医案全解\",\"isbn\":\"9787509111499\",\"price\":2319,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/4fb50334-6e1b-4595-aaef-f3d5a2081242.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"吴淞笙围棋教室.入门篇\",\"isbn\":\"9787500924029\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/f4e94f57-523c-471a-af0d-af94eafaafbd.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"吴淞笙围棋教室(初级篇)\",\"isbn\":\"9787500923145\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/0375d78e-9e39-4424-9d05-6f5aca3e528d.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"德语成语典故词典\",\"isbn\":\"9787560818269\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/d6af9a05-7468-4e61-ad15-e24f9b17acb6.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"简明国际关系史\",\"isbn\":\"9787501219438\",\"price\":1998,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/37a98f61-dcf5-4a59-8a2f-258a77be993b.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"书法 章法\",\"isbn\":\"9787540227371\",\"price\":569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/728c396b-f45b-4f77-a843-80cfd2cc0544.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"苏青散文集\",\"isbn\":\"9787539615332\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/79a85f1e-1e5e-476c-a6bf-4237866161f4.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"邪恶之路\",\"isbn\":\"9787208079489\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/4f51a879-5e16-4f2f-be87-a9c6beba9da2.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"原封全新|让不可能成为可能:李昌钰的成功之道\",\"isbn\":\"9787513907736\",\"price\":6399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/affe14cf-3cac-4c69-9a02-706cb8b41fa1.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":0},{\"goods_name\":\"中国新诗三剑客\",\"isbn\":\"9787531334835\",\"price\":1559,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/09749781-9983-4401-be39-d83a070166ab.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"阿旺·班玛诺布活佛传 签名本\",\"isbn\":\"9787542120335\",\"price\":2199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/b276d34a-8950-4c88-af41-b83dc11a4c19.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"汉画神灵图像考述\",\"isbn\":\"9787810918848\",\"price\":2389,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/dce618db-6820-4216-86ae-f71613a0c18c.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"泵的设计与应用\",\"isbn\":\"9787111480280\",\"price\":5799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/1849af4f-4d73-4a9a-a379-a7ff4bc55e59.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"电力变压器运行与维修 正版 实拍 现货 有库存8 原包\",\"isbn\":\"9787512359598\",\"price\":2098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/339c981f-145d-425d-bcd0-5367a9068097.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"全站仪测量技术\",\"isbn\":\"9787562937449\",\"price\":1289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/6ca1412b-a28a-4732-b90a-9af84b4aaee7.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"泵类设备使用与维修问答\",\"isbn\":\"9787111488705\",\"price\":8098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/fd6a72fe-f53f-45f6-8b3f-16142c13506e.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"斯坦福大学最受欢迎的创意课\",\"isbn\":\"9787553411224\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/b5329a18-f791-4c71-a956-0004736bd3d8.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"劳动论:《马克思恩格斯全集》探义\",\"isbn\":\"9787205058791\",\"price\":4599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/1d476605-84f5-4311-84c9-0cffd270766f.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"人本教练模式\",\"isbn\":\"9787545906912\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/3ec198a9-d5d1-4082-9fc4-c1dd683ec9f6.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":0},{\"goods_name\":\"镜头里的领袖风采\",\"isbn\":\"9787531326885\",\"price\":569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/56393f61-5adf-486d-bfa2-44ae761ef912.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"拍下即发 如何在36岁以前成功 曾仕强中国式成功智慧表达说话技巧关系情商职场应酬交往生活工作规划 掌握正que的生涯计划书籍语录\",\"isbn\":\"9787515812892\",\"price\":429,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/0d50eb53-46ee-43f3-bc26-731eca1d08b8.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"马云的内部执行课:强者的世界永不言败\",\"isbn\":\"9787504753908\",\"price\":389,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/0b799c2e-e715-426e-8f6a-a970900d306e.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"短线点金速成:散户成功炒短速成法\",\"isbn\":\"9787501794164\",\"price\":339,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/26e14ac4-4096-4119-af8c-7d127e32cdd0.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"两个人的电影\",\"isbn\":\"9787531343004\",\"price\":1798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/6b4020b8-48c3-433a-9fbe-8e05547ae78d.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"悦读时光:笑死人不偿命的冷笑话\",\"isbn\":\"9787538588194\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/bc8e1796-7013-40e4-afd3-04cb4bcadac0.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"我的前半生\",\"isbn\":\"9787501400614\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/f1877a3a-1a97-40fd-8df7-c908d0239d1f.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"半生为人 等社科书四种(全四册)\",\"isbn\":\"9787508632964\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/070cbb38-7543-41e1-8543-ea78d2783a3c.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"人生的智慧\",\"isbn\":\"9787208081178\",\"price\":900,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/1cbdcb3f-2071-4048-9721-4edcb388fc8e.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":0},{\"goods_name\":\"人生不怕从头再来\",\"isbn\":\"9787535483133\",\"price\":558,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/4e1dcf9e-ab0d-4987-b428-15366e0fb83d.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"古都风韵\",\"isbn\":\"9787205071707\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/703c225d-90f1-47f2-9761-bf14bdc6c0ae.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"梦栖之地:园林景观设计与欣赏/世界高端文化珍藏图鉴大系 有签名\",\"isbn\":\"9787510446771\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/2666ac9a-35b7-42ea-97ac-d457d7b4b0ae.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"没有什么不可能:王健林的内部执行课\",\"isbn\":\"9787504754233\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/8ca0dc47-af65-40db-b514-b12aa9853fe1.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"废都\",\"isbn\":\"9787544726290\",\"price\":774,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/09561e7b-c3f4-4b80-b4eb-011671f9a2ae.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"土木工程现场施工技能必备系列图书:测量放线工入门与技巧\",\"isbn\":\"9787122171047\",\"price\":599,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/86deb932-aa30-490a-9ea9-5be6b0dda671.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"GPS RTK测量技术实用手册\",\"isbn\":\"9787114116100\",\"price\":2149,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/d38549da-6cf1-435e-8a06-a6b64f469323.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"征婚\",\"isbn\":\"9787531327226\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/2ab9f3a7-f610-4b82-8e12-f1e05be16556.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"总经理目标管理的100个经典案例\",\"isbn\":\"9787553462523\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/3bb5e947-ffc0-4f0f-8f34-516a64acdadc.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"电气安装工程造价\",\"isbn\":\"9787111476023\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/ef95ee11-4fe5-43ba-a530-5c28efdab736.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"UG NX 4.0中文版零件设计\",\"isbn\":\"9787302155669\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/d2b05cfa-ad05-49d7-ab64-49088bf540ff.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"图解液压技术基础\",\"isbn\":\"9787122162502\",\"price\":938,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/517414db-3cb9-4370-b4f1-9f070358c33a.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":0},{\"goods_name\":\"工程测量技术\",\"isbn\":\"9787111416852\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/7bfc958b-5993-4566-b360-b66e136403d0.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"机械设计手册:减\",\"isbn\":\"9787122071293\",\"price\":3479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/6b4971e1-0ddc-4b56-bd91-f50b3f361fe1.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"出纳岗位培训手册:出纳应知应会的7大工作事项和78个工作小项(图解版)\",\"isbn\":\"9787115265081\",\"price\":369,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/4afb8716-66ae-4758-9348-bc576a36d586.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"德国文学简史\",\"isbn\":\"9787810958158\",\"price\":3899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/239b8bde-311d-4c42-aac6-02a7600624c3.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"滚床单心理学(2)\",\"isbn\":\"9787221138460\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/29f24c9e-c9bd-48fb-a287-e1c38c214c72.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"行为矫正:原理与方法\",\"isbn\":\"9787501943661\",\"price\":369,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/150d5303-ab1a-4fb5-9ef6-4afa6a25ab3e.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"破解二元 : 一个大都市郊区结构转型的透视(签名本)\",\"isbn\":\"9787538153347\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/0cf4891d-6a88-4d00-922e-ca635f155b7c.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"2000年中国年度最佳短篇小说:漓江版·年选系列丛书\",\"isbn\":\"9787540726652\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/d254017c-e950-4e57-83dc-cd2a7b18caa7.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"男人战争\",\"isbn\":\"9787531334170\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/ec0b04da-ba25-4559-8bd6-7330aa9d3d9f.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"万卷出版公司 马云成功绝非偶然\",\"isbn\":\"9787547036754\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/54abc9d2-d36c-44ac-b7fe-bfae1763d57a.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"三国商学院+36计商学院大全集(升级版) 何菲鹏 编著 著作新华文轩网络书店 正版图书\",\"isbn\":\"9787511311948\",\"price\":538,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/01122451-0cec-4959-8a24-e2f63b63c918.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"极速前进!提高滑雪水平的50个基本要领\",\"isbn\":\"9787115412621\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/b2034a3d-e075-4c28-8c79-7134afacade5.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"成功就是和自己的较量:冯仑给年轻人的11堂成长课\",\"isbn\":\"9787516805114\",\"price\":554,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/ac722865-ed9c-4591-b7ac-bfa08c2604ec.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"思考致富\",\"isbn\":\"9787806883723\",\"price\":629,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/e625a3f8-1930-4fdc-95af-26af9aa460b4.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"旅游摄影实拍技巧大全\",\"isbn\":\"9787122217172\",\"price\":1179,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/3675ff0b-ecc2-494b-a92e-9c64045477cd.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"双板滑雪完全指南\",\"isbn\":\"9787115404954\",\"price\":3747,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/d7fa660b-dcba-4da4-bb54-9a3cb9f9a903.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":0},{\"goods_name\":\"周易大全\",\"isbn\":\"9787119074900\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/088a1cdd-7ab3-49b0-b789-fb85874f5489.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"中国思维魔王\",\"isbn\":\"6781967650354\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/4e105c7e-a197-4bd7-80a2-41c79020a9ef.jpeg\",\"wxfile://tmp_1227307de7186f7f36842460d084bfdb.jpg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"英汉词典\",\"isbn\":\"9787119047256\",\"price\":309,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-30/559158c4-293f-4d5d-a177-a8ff42496a0e.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"英汉词典\",\"isbn\":\"9787119047256\",\"price\":5000,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-05-11/3ce72107-4a5e-4716-94bb-ff5b590c7841.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"班主任推荐三字经$\",\"isbn\":\"9787538593792\",\"price\":149,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-05-11/05ae7887-0204-4a70-bd59-147715ecdd19.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"宋金文学作品译注讲析\",\"isbn\":\"6785801589805\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-05-11/93d5849b-c1f0-4eaa-a8a0-e3672168e2d7.jpeg\",\"wxfile://tmp_b586856aa8d9688f7ec32602b5d82c49.jpg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"名师名家带你读名著 海底两万里\",\"isbn\":\"9787538593778\",\"price\":347,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-05-14/546c2507-c6a1-46f8-adf5-f68c9d6a1f27.jpeg\",\"https://img.pddpic.com/open-gw/2026-05-14/48a12c3e-1586-4c62-a521-07a2b77f57b4.jpeg\",\"https://img.pddpic.com/open-gw/2026-05-14/02ed4056-c1bf-4336-8849-c46321d2451a.jpeg\",\"https://img.pddpic.com/open-gw/2026-05-14/de4f862d-5abc-464a-9db2-5a8819a260c1.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":4},{\"goods_name\":\"全注音儿童文学 冰波暖心童话\",\"isbn\":\"9787538596465\",\"price\":438,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-05-14/6d329068-6811-4bae-b873-41e5091620eb.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"秘密:中国唯一正版简体中文授权\",\"isbn\":\"9787540461843\",\"price\":699,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-05-17/de09313d-d055-46fc-993d-583ee201a042.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"巨译的诞生\",\"isbn\":\"6789184607567\",\"price\":399,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"启迪孩子智慧的动物对话\",\"isbn\":\"9787504473912\",\"price\":200,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"神奇校车(动画版)-三文鱼的洄游\",\"isbn\":\"9787221108463\",\"price\":4900,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A4-3\",\"inventory\":0},{\"goods_name\":\"龙族\",\"isbn\":\"9787549220632\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/87aa076a-28ba-4245-8c6d-ba17b83a0316.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"孩子看得懂的前沿科学漫画 :1—10【10本合售】\",\"isbn\":\"9787568296700\",\"price\":395,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/15385e9a-ced0-4227-a094-a775c462712b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"百年不断九州意-浩然气\",\"isbn\":\"6786318207471\",\"price\":5000,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/6d1c8f6f-dab8-4ea9-ae13-25384ed385eb.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"神怡心静\",\"isbn\":\"6784872899217\",\"price\":5000,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/84eb67a2-d89e-4fd5-800c-8faff49db15f.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"太极英语语法,无词读写 介词短语 漫画词汇 4册合售\",\"isbn\":\"9787201157788\",\"price\":529,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/cf31010d-8161-433c-90ae-f479099b3e7c.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"培育优秀子女的规律(下)\",\"isbn\":\"9787519442767\",\"price\":679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/7279f3c4-198b-4d54-9300-0f34d57f0801.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"写在人生边上(中英文本)9787108018908钱锺书?\",\"isbn\":\"9787108018908\",\"price\":779,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/1910fcbd-cd54-4438-8d45-c02bfc5811eb.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"儿童钢琴手指练习(修订本)\",\"isbn\":\"9787103020777\",\"price\":436,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/591aaccf-a748-4143-babd-79d49032ebee.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"曾国藩发迹史 上下\",\"isbn\":\"9787545206746\",\"price\":600,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/8aaf610a-6474-4787-986e-883f2678f6be.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"语文基础知识 六十讲\",\"isbn\":\"6787847970973\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/1f4eebfa-5cf3-48fd-99c4-103ddcb44b27.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"魏徽\",\"isbn\":\"6783669866401\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/3581b79f-4c50-4d86-96fd-f0e08b701ab8.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"于谦全传\",\"isbn\":\"6788262465099\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/78e51751-f223-4238-a32e-79bf56027466.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"小猫咪的朋友是谁呢\",\"isbn\":\"9787555230991\",\"price\":274,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/88aa117a-28d1-4057-a289-58e576e12e41.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"义务教育教科书 语文四年级下册\",\"isbn\":\"9787107341205\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/6628db70-b081-49d9-a018-48aecad21d7d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"周恩来:画册\",\"isbn\":\"9787501138661\",\"price\":5699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/f7c5aa6e-0db6-4a1b-9abb-2a6395b8158e.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"英语基本技能训练(第一册)\",\"isbn\":\"6788317269085\",\"price\":309,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/d74a47d0-2582-4367-865a-1b0d59e5f4c1.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"额尔古纳河右岸\",\"isbn\":\"9787020049332\",\"price\":689,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/e967e662-9785-4ff2-a16b-a388b1987a70.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"灸疗治百病\",\"isbn\":\"6783417174963\",\"price\":2899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/e5a74899-d57d-4e46-93ca-f03b648f0dde.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"魔法学校1\",\"isbn\":\"9787531337058\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/0379fe20-c25d-4426-ba77-01aec95511ba.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"魔法学校2\",\"isbn\":\"9787531337485\",\"price\":298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/881398d6-4cec-4e8f-8201-31bded15a872.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"流浪地球·彩插版\",\"isbn\":\"9787504698094\",\"price\":496,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/bc247f34-16a9-4a29-9643-421aa2324c9d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"刀锋\",\"isbn\":\"9787519040543\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/39c593af-ed17-47e4-afce-7dc1e2293bf4.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"收获长篇专号2019冬卷\",\"isbn\":\"9787570213979\",\"price\":676,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/dd30774a-150d-4bdf-9ec7-0acf5e08fc25.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"政治经济学辞典 上中下册\",\"isbn\":\"6781425593165\",\"price\":2999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/1ec4e1e0-32b7-4f6a-aa91-09937975144b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"芙蓉镇\",\"isbn\":\"9787020049332\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/4b957b7e-c4ea-44bc-852a-bf58c21534d7.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"西游记 水浒传 红楼梦 三国演义\",\"isbn\":\"9787800824791\",\"price\":5519,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/8fd4e209-a0ac-4db3-ad99-1715042b75e6.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"这里是中国\",\"isbn\":\"9787521701579\",\"price\":1979,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/8375e81a-dbb8-42e4-9920-ef8402bcfb7d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"佛教图文百科:佛教文化百科1000问(有彩图)一版一印 保证正版\",\"isbn\":\"9787561331897\",\"price\":779,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/40b1038f-965e-40b3-a05c-59a60217d8ef.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"应知应会文史知识300问:卡通版注音\",\"isbn\":\"9787531536284\",\"price\":1879,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/fda51b94-791e-4f9e-b440-e0734f7832a0.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中外十大名著全12集\",\"isbn\":\"9787806485149\",\"price\":2590,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/0a3798fa-db0e-4627-8ebe-c678027ecea3.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"特种兵王 1 -3\",\"isbn\":\"9787519004286\",\"price\":438,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/919746a2-a493-4d46-b507-9d6927a3a18d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"特种部队1 2(两本合售)\",\"isbn\":\"9787511322463\",\"price\":300,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/3df2565a-a4d0-4a22-9dfc-c2201cdd8a69.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"卜卜熊的雨衣\",\"isbn\":\"9787505627642\",\"price\":1129,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/f7d5fb15-7fff-4bfa-8e94-030fdc408b1d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"针灸治疗手册\",\"isbn\":\"6787765192808\",\"price\":679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/ce525849-525a-464a-b445-fdca839c0d8d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"【全新正版包邮】 小豆豆丢失的记忆 (日)黒柳彻子 著 戴琇峰 译 南海出版公司 9787544264600\",\"isbn\":\"9787544264600\",\"price\":227,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/51b36bea-d706-4580-8742-00ab3b3d7258.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"十万个为什么——米·伊林版本\",\"isbn\":\"9787570210190\",\"price\":1479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/a03da9a7-9365-4fa6-9d4d-4dd891fdc238.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"K·赤\",\"isbn\":\"6788777069546\",\"price\":578,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/37c0e478-173a-4bfd-a028-f15b98edcd50.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"神奇校车(动画版)-三文鱼的洄游\",\"isbn\":\"9787221108463\",\"price\":4795,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"AA-F1-1\",\"inventory\":0},{\"goods_name\":\"神奇校车-三文鱼的洄游\",\"isbn\":\"9787221108463\",\"price\":4900,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"AA-F1-1\",\"inventory\":0},{\"goods_name\":\"数学\",\"isbn\":\"9787303181230\",\"price\":202,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/0f51d2a6-d9f2-4021-a48e-c575781af411.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"辽宁省志·公安志1986—2005\",\"isbn\":\"6784758138119\",\"price\":5800,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/d006211b-b49d-4d19-858d-7c624eda06cf.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"希利尔讲世界史\",\"isbn\":\"9787545600858\",\"price\":9405,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/d39aa5bf-2c1b-474a-99e0-e62271bdc6f3.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"活了100万次的猫\",\"isbn\":\"9787806795095\",\"price\":9007,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/b92f070f-5cdc-485b-aabe-8fd814cddab2.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"米小圈漫画成语:马不停蹄\",\"isbn\":\"9787536575356\",\"price\":8041,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/cd6a9d20-adcd-4eb6-9d6a-7001e59b70d3.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"长大我最棒:注意安全 [3-6岁]\",\"isbn\":\"9787541742989\",\"price\":8298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/9b437bc4-953d-4be2-9011-bdb2fd4efe52.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"可复制的领导力\",\"isbn\":\"9787508682464\",\"price\":8591,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/5cdcaa70-7113-4000-be7b-031bcc8db6d9.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"新东方CEO周成刚最新力作 穿越世界的教育寻访\",\"isbn\":\"9787513339018\",\"price\":9878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/1671d9bb-efc7-4e8f-a2fe-1d672a3294be.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"匠人精神\",\"isbn\":\"9787508656151\",\"price\":8654,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/8d197232-1156-4178-b647-0c784a58c416.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"态度 吴军新书\",\"isbn\":\"9787508694740\",\"price\":9079,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/6408aa60-8dde-4ee3-85f1-b77e838e7a5b.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"麦肯锡方法\",\"isbn\":\"9787111292715\",\"price\":8484,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/2ac70770-c5f9-4144-a3f4-fe7175e0ee05.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"随风而来的玛丽阿姨\",\"isbn\":\"9787533268077\",\"price\":8296,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/d14f4c8e-8107-431b-8b03-c3142a252b1b.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"中国居民膳食指南(2022)\",\"isbn\":\"6785519521348\",\"price\":11976,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/c0baaaa3-a2be-4540-9497-6061a89c8c82.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"喜剧\",\"isbn\":\"6783778648950\",\"price\":1191,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/e3b87028-477c-4cdf-8c42-921fdec17ec0.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"多啦A梦 上下册\",\"isbn\":\"9787538613544\",\"price\":2399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/eaeec716-215b-40d6-bcff-f054f5d6af26.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"机器猫哆啦A梦\",\"isbn\":\"9787538613117\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/53134d77-5098-4d62-b2f0-a435ab242df4.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"星火英语·新要求大学英语4级词汇周计划\",\"isbn\":\"9787546307046\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/4f904b76-5478-4639-8d08-1114500b34d9.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"商务英语教程\",\"isbn\":\"9787302574057\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/d1dde977-456c-4d36-b253-da183579bd5e.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1}]}","source":"同步商品数据异常","time":"2026-05-21T16:07:12+08:00"} +{"err_msg":"更新库存汇总失败: Error 1062 (23000): Duplicate entry '17-7849-' for key 'uk_warehouse_product_batch'","level":"error","msg":"","request_params":"{\"user_id\":1965254774327533570,\"data\":[{\"goods_name\":\"春秀\",\"isbn\":\"9787108048011\",\"price\":815,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/bd92b6e10cd4e9668fc911568205d3cd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/5b724a1bd5e93600d0ecdb7245c13d3e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/08d5c36bd1b353436eb329769f82afb8.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"社会主义核心价值观绘本:我们的中国梦\",\"isbn\":\"9787532292455\",\"price\":495,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/503123f5fe5f1d35ee784a648f6f1e97.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/a6733e2e9b3e2128ea5d954aaaed677b.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"世界文学名著典藏:毁灭\",\"isbn\":\"9787535439666\",\"price\":1678,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/8b989cf00315df4aaa21ec5cdc7d8725.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/fe759bc014f69c8788f66db45f8349bb.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"读库1305\",\"isbn\":\"9787513304245\",\"price\":350,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/e04c3b73d6e4da5de3f7c65bff8f593b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/690f9bd98d8f64904564b64b8590fbfc.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"读库1401\",\"isbn\":\"9787513313827\",\"price\":878,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/22b97eafe4438bd99442ce9ca82a76ff.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/1e157e3fe4af55a9e761c18d1fa05b78.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":0},{\"goods_name\":\"到黑夜想你没办法:温家窑风景\",\"isbn\":\"9787535434500\",\"price\":8599,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/2f45bd6e446be6274bf7e90770eaa2a4.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/1ed5e0dd23fb444041592ca1e3d61fec.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"针灸新疗法:靶向针灸治疗\",\"isbn\":\"9787117199469\",\"price\":6099,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/4f6a6d7ae5e460bfc980dad6c8fbe344.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/530c98b330e24a5706de1ece6ed6039a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/790b90a397b5240ee8e42a2c1377336a.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"图表解中医备考丛书:针灸治疗学\",\"isbn\":\"9787506761772\",\"price\":1987,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/1842dbcf431c3d98ea77ee552c1d61a1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/02b7e82c11c0b22a315df9febc6bbae8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/b1b8f0dcd2ac57e39253bf9e12c63291.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"针灸名家医案解读\",\"isbn\":\"9787509179819\",\"price\":4068,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/d5b3803dbd82224b4acaeb2e8c14ab8a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/3934f4487dd978e79d8ab86c95bf30f8.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"重温胜利时光:寻访浙江嵊州幸存抗战老兵\",\"isbn\":\"9787205082161\",\"price\":1299,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/12bf2a92a5f9f1743c402ef7aaf8d35f.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"2007中国出版者名录.图书分册\",\"isbn\":\"9787507603422\",\"price\":2416,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/3c9f3381078130f171940d2d52957624.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"海外新闻出版实录2015/海外新闻出版实录丛书\",\"isbn\":\"9787506861168\",\"price\":299,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/aa46630b70b456f9f374d190910a518a.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"红闺春梦(上下)\",\"isbn\":\"9787530625576\",\"price\":1880,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/2c2b4d1206e82bfdf4a8d74c7c46a24e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/2ace7e7774a3d0f52a65da4759911053.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/2dd8fa73d0264f5d41ea2034c46362f2.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"金星教育·中学教材全解:八年级英语下\",\"isbn\":\"9787545021301\",\"price\":1857,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/027324fb8365382fbae65f823616b84d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/d3b6b0bfbd740fa3cce443c4eb0e26ff.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"皇太极全传\",\"isbn\":\"9787806017845\",\"price\":2355,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/b5c42bb8543f94b872b5cd21b8e39269.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/95ca510710b2007d862dfea4daef2e2a.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"新潮:民初时论选\",\"isbn\":\"9787205028572\",\"price\":3399,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/7c070bf9a45350bd33fe4a61cb34c27b.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"循吏千年:百名清官启示录\",\"isbn\":\"9787205097646\",\"price\":2999,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/a06cd28d0057d5948f8ce3035ad6aed3.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"写生课\",\"isbn\":\"9787807119876\",\"price\":1098,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/39997c0729c2c58286dd308ff834315b.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"生死拉据\",\"isbn\":\"9787512619906\",\"price\":310,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/8132d9ead0123d0538b0850bd87fe295.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"2008中国音像电子出版者名录\",\"isbn\":\"9787507603453\",\"price\":3299,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/d4a089951e2912e0696e69763c7f1b49.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/52b454fcec720107ed2aae322cf08e49.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":2},{\"goods_name\":\"和唐朝诗人握个手\",\"isbn\":\"9787550180246\",\"price\":270,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/1196b0d6fdfe39df78b9d4bcb6ee1e0a.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"犯罪心理学\",\"isbn\":\"9787568292429\",\"price\":899,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/095620979cd81e045a19a226718eef19.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"疯狂科学\",\"isbn\":\"9787115244949\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/9e2a605a98ed929ae412bc391b93bd4e.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"信仰力\",\"isbn\":\"9787205112462\",\"price\":1898,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/a6b4bd433947311f508f3d6b449c0d68.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/2a21628a73b4182f4505ab45dd909f39.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":2},{\"goods_name\":\"辽阔\",\"isbn\":\"9787205112295\",\"price\":2929,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/11ee7ce2bb504b2252f93ebe1638ffe5.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":2},{\"goods_name\":\"人生世事格言选句\",\"isbn\":\"9787205083878\",\"price\":1292,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/cddfcae7a3fad48a07f7226cacea0046.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"街与道的宗教\",\"isbn\":\"9787531339984\",\"price\":449,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/86c398005806b62e9ab9b2432a8790fa.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"挑战你的大脑:200个破案趣味故事\",\"isbn\":\"9787806662885\",\"price\":749,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/4dbef0686042fb641c06bd4c967792ed.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"创业学\",\"isbn\":\"9787205051266\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/ea659d62daa65569ef9e8498137701b1.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"销售秘密\",\"isbn\":\"9787545415117\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/43b898cfe763fcf49cdca906a2061fe7.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"通城学典·课时新体验:数学\",\"isbn\":\"9787563411573\",\"price\":1430,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/dbfd5e3cc68fb594e09b550f0cae4217.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"奥林匹斯星传\",\"isbn\":\"9787115136152\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/df86fd37cbf811ab7bc5dfc8013e71c9.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"蓝猫的航天梦想/杨利伟航天科普系列\",\"isbn\":\"9787534236204\",\"price\":525,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/c2ac728905eeb9d1223cf7d2fe625838.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"走出噩梦:苏南特大抢劫杀人系列案侦破纪实\",\"isbn\":\"9787501416745\",\"price\":949,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/3f7b7524700020092c6cfb04f9013f5d.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"文学名家名著:爱的教育\",\"isbn\":\"9787540485061\",\"price\":665,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/36a39981b543b6f843df1373ca272c96.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"汉语成语词典\",\"isbn\":\"9787806822890\",\"price\":302,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/d9b5c932eaaf7c2d78b43a3ad433211f.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"东欧苏联战场卷(1-6)卷\",\"isbn\":\"9787506106375\",\"price\":7807,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/81d612105973f698672d8b7c1f31d464.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/de5511ea45889cef16344d0c5690a276.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/97857064cbea5200847ee8b0b2919b86.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"盛京皇宫探幽\",\"isbn\":\"9787561054833\",\"price\":1076,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/682d2753eb1ff9d611dc44d877d94251.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"将船买酒白云边\",\"isbn\":\"9787547016046\",\"price\":4899,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/60875ab7e902cb8d0a016d574256aa59.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/234bb2c5a77a72c9fe17e16c33437420.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"辽宁风物 1-2\",\"isbn\":\"9787205074630\",\"price\":2299,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/e6151908ce2470b10aee9d41e903974a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/779b1c2bfe6b993724c29f1d34c41b0b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/c42cc3270c0f70bbb637572793183ef3.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"晚清民国瓷茗壶\",\"isbn\":\"9787806018484\",\"price\":1099,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/386ffcc514d58f186a8871a8b018d5bb.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"沧桑拾贝\",\"isbn\":\"9787531318514\",\"price\":1099,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/cbe7f3add1330b02ee7faa856ae83565.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"辽宁历史与文化\",\"isbn\":\"9787205063139\",\"price\":1099,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/965f6202a315f3e294127e1abb9b1e02.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"中国文化地图\",\"isbn\":\"6780706216899\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/42a1bdfdf7ddba464cd67957154781ec.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/57f1e951911ee49062bd8ffc1f851b8f.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"中国高等美术院校藏画精选\",\"isbn\":\"9787531428664\",\"price\":4199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/76d19a1c8c5fc6cd7477710b5f0d200f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/c6d2c60807647014de0995517f74f574.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/0a4b2c4c539285e241f9d388ae137e44.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/107e6e7ac7407b8e91c77f6c8a95cb70.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/3a7f728cba2615f1fe9996d03063548b.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"手绘魅力\",\"isbn\":\"9787561181676\",\"price\":2389,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/d71be146c36a60536901afd33dd4b5ba.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/3e36f6314c1651a70123c47bae6a9430.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/c1a71ee66a8744b6e3a3d4936472b489.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"辽宁老期刊图录\",\"isbn\":\"9787205063245\",\"price\":3099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/2fabaf89cfb636daa03b76714683df28.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/eb48538c988decd2a4f813864a2aa1c1.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"20世纪中国文艺图文志:话剧卷\",\"isbn\":\"9787544115308\",\"price\":6299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/1bb54b47c6a8c1494d8dc21c17db4a7d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/4a530cf9bed3baa3c7ebaf26413243dc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/6dcc5b6a50187ab1a6126bbbee33ad62.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/c795a993b4022513fb1e65a48006bc8f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/2bcbe484bb4b0ef359b9b6347b12e1d5.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"铁岭工笔画\",\"isbn\":\"9787531450788\",\"price\":1985,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/cda210a731f18d90d63fd49e969d63a4.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/3a009c251b91539f93a1a163865df16c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/b7a63903aa7c004650bb2b7939a6b57a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/221e7106863942ed67c88104d30447e2.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/d78f220fe402425a9cd425b7405e11ee.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"希施金风景画\",\"isbn\":\"9787561182123\",\"price\":3720,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/faff8fb696d111646496930e7d72dd9e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/ac619e3f2afebbf23553bba4815c8df8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/b64a7b2d8d7cd16c67f6e2858be517d1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/0474a952877c8f8de1e50b30a68e0102.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"江山高隐 中国绘画史渔隐舟渔垂钓图像考释\",\"isbn\":\"9787551710053\",\"price\":6238,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/83b08fd1ac893792902bf857727c8763.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/e50066b7c9d17793ba7dd2a5301d5dd5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/90d6dc3a8cc818f591fa02e7a4641c73.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"中国古锁图谱\",\"isbn\":\"9787561077856\",\"price\":17599,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/e22eb507a1c7f548c6738245f1777a35.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/f9dd8dfd6e7604bab61a1e23d4c60058.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/a1300eb89eb77dbb97d5265bb86c2d37.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/def4ee9b93f1caf40bcfcf5781fdda87.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/6c1290f7c85dd63cfd0e030784860f4d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/7b6d3c6fa48443a351cccae912bf00ae.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"恒此今生伴美玉 :\",\"isbn\":\"9787544148405\",\"price\":1399,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/1ee786de424af6873263e01e45a99706.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/d58fdf4b2cd544f7bebc8ce623d62ff0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/437f453c51e82f05a128da341dda994f.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"中国历代人物造型艺术\",\"isbn\":\"9787531431084\",\"price\":1772,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/aac773565fd54d3f8f67d7ecfa624988.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/bc6661be16388584b54de9999e43780f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/914b7d650cb850eb654f1917a247fe3d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/fff800c3bd4b2f6be43ed1a8c0014c14.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"脊梁:辽宁省直属机关劳模风采录\",\"isbn\":\"9787205058142\",\"price\":2799,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/40a2007f3dc8d62aa1029e8320fe077b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/3a5471dbe5e4c79112264a858fd433a8.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"中华保健中草药原色图谱\",\"isbn\":\"9787538128062\",\"price\":2110,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/eeb2d1816f0bafc839f831091488bc1b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/53818a1b501f5462f474902fef6abeee.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/6c1cfb10ffb0edc9e04d0cbfa83d5fd9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/bd9166ba265bf2664081001d9a756d87.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/acd4a94eb2a6a5cd41b0a0d868605a60.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"世界文学经典名著:茶花女\",\"isbn\":\"9787540412357\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/97f981c99a858f4d4ce7515e037e104a.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"红与黑 世界文学经典名著\",\"isbn\":\"9787540412296\",\"price\":329,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/bfd4452409450e88e1468050be0adcf9.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"少年 维特之烦恼\",\"isbn\":\"9787540412371\",\"price\":300,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/08bf1d8b2a16fd47322054fc0a1b7def.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"雁王\",\"isbn\":\"9787532437542\",\"price\":549,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/3cf1a249a71a03b525cd81583410f9e1.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"独耳大鹿:椋鸠十动物故事\",\"isbn\":\"9787532437528\",\"price\":2849,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/09d7a4baf600149be377a49eeb7ea637.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/a7d138a0751237299d9fe4220ec7c1a9.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"消失的野犬:椋鸠十动物故事\",\"isbn\":\"9787532437535\",\"price\":1898,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/5c5156bc8ff9ba9d153d63d81ca90755.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"世人二三事\",\"isbn\":\"9787572617119\",\"price\":971,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/82b90652609b93d9670f8ebba90c6510.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"魔鬼统计学\",\"isbn\":\"9787510893698\",\"price\":488,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/395cca3e4bcb539c30de140f546ed449.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"裙摆\",\"isbn\":\"9787573600073\",\"price\":531,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/8220657089c5d919d777ab49abd21356.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"我谨以此对抗孤独:史铁生、汪曾祺、季羡林、梁实秋、丰子恺等华语文坛14位名家写给人生的顿悟之书\",\"isbn\":\"9787519478049\",\"price\":691,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/a892d51b35844fe358e05800a1869a74.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"看人的本事\",\"isbn\":\"9787505748934\",\"price\":263,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/16211b84c30a77fce55604e86a5be0b3.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"酒鬼一家:一起实现的事\",\"isbn\":\"9787550031708\",\"price\":448,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/1c87e5d54187b5db488be76f7d918e5b.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"我的前半生:末代皇帝爱新觉罗·溥仪自传,随书附赠《清朝皇帝世系图》\",\"isbn\":\"9787557033187\",\"price\":1698,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/c1a1033381d4b4dbb48449f7df3480df.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"蟋蟀的江湖 儿童文学\",\"isbn\":\"9787531592730\",\"price\":1589,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/88793031bf30f41e29d4a4dfbae2958c.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"李皖的耳朵:触摸流行音乐的隐秘肪络\",\"isbn\":\"9787119025414\",\"price\":1099,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/5eaffb0cdd29987ea36501a506ad002a.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"希特勒全传\",\"isbn\":\"9787801202451\",\"price\":1149,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/2d052e830f39ec3750ae4a946c438572.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"漫客·火星少女. 第5辑\",\"isbn\":\"9787549209941\",\"price\":1349,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/f34e7e15a5e3f5765cfb1e61155a4c38.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/371daf9553810bbf4260864377032d34.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"漫客·火星少女\",\"isbn\":\"9787549207299\",\"price\":546,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/b1a3ec02a654f84b03749939b46939e9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/d65eee697d8ec4d6d3162a1107f7d705.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"漫客·火星少女. 第2辑\",\"isbn\":\"9787549208159\",\"price\":1349,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/4a63cae3b8a2cb76884353d63d32122e.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"国家宝藏 发现故宫\",\"isbn\":\"9787220127274\",\"price\":2019,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/445980b9d38837ebf1500495d1098a98.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"社交这门课,只能父母教著名教育专家唐雯新作\",\"isbn\":\"9787547064245\",\"price\":1178,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/a406421642a9f0a2be95ed19411cf8db.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"三味书屋/童年海\",\"isbn\":\"9787531570738\",\"price\":949,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/afeaef46abba151cc4119f52bca6e224.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"平妖传:绣像珍藏版\",\"isbn\":\"9787572609701\",\"price\":1759,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/b2c2790bb79f983362bdfad729927aab.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"蒙古贞历史\",\"isbn\":\"9787807226543\",\"price\":2699,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/59f64f46b1dd59ebdbd1014df139dbf5.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"国难见人心 寻访浙江诸暨幸存抗战老兵\",\"isbn\":\"9787205083670\",\"price\":1798,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/9eedca5c4f10760110bdc1b1b51b3b34.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"与历史人物对话\",\"isbn\":\"9787205074203\",\"price\":1477,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/f45ae5c457f67991060a39a7a39d8cff.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"泽源:大连海事大学校友口述实录\",\"isbn\":\"9787563238002\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/4a8d78b4c884750396da195486b42fb9.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"毛泽东思想基本问题\",\"isbn\":\"9787503524509\",\"price\":478,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/b5d3f81930eeb20e7690efc5314d286e.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"黄欧东画传:1905-1993\",\"isbn\":\"9787205060206\",\"price\":3199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/8b837543bab28537b78b6540dd799891.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"老安东\",\"isbn\":\"9787538295344\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/538573dcc10b8a2c13f0f10dab48d5bc.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"马克思列宁主义基本问题\",\"isbn\":\"9787503524493\",\"price\":298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/0cf5bd9aac2550aad50c28c8f8f1d384.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"望中犹记\",\"isbn\":\"9787806266243\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/acf46f3ca493f179fd04767002743af9.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"嫁妆瓶\",\"isbn\":\"9787806018255\",\"price\":1072,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/0c6b4613a5c471812c3da3b4a61f46d0.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"唐人书《金光明最胜王经》三种\",\"isbn\":\"9787806635568\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/86a9fb503e8f8b5dd2a70e618b9e23f3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/a2967bb316b5c65162a657301c0ba343.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"唐人书〈大般若波罗蜜多经卷三百九十〉\",\"isbn\":\"9787806635537\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/4b0ebe15b71bbef315704d2af67917e9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/73c458d809fc4594f3b235b1c6626d41.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"生活情趣集成\",\"isbn\":\"9787805181585\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/469e1e7eeda3f6ff46942c8d05773661.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/0add86e158151c1f3d60cc3add4cf134.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"长安好诗三万里:带你领略群星闪耀的大唐,感悟唐诗的魅力\",\"isbn\":\"9787554623398\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/376f676ff758b222f7d7ee1749d991fb.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"清史述得\",\"isbn\":\"9787806448939\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/5fbbf180e2c04ae966ef817b6d54ccd6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/95271b93c1b290ff829e7d96d32032ed.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"鉴宝\",\"isbn\":\"9787806019528\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/2fccdfa114d61b657836d986367be982.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/450695509d3d6002810cf2ae75a62495.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/a3e921d4f145fdf372364cec305a21d8.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"朝阳通史\",\"isbn\":\"9787549707355\",\"price\":6598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/080e1eb8fcecc4b2aa60b2111054af36.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"风雨长三角:长三角出版物市场成立15周年\",\"isbn\":\"9787807182627\",\"price\":361,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/8a6f75c2c1e2e937cb8ffab197e4272f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/f534e2d1b826f283ab9acfaecf165a6d.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"好姓名好孩子\",\"isbn\":\"9787504457202\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/b2009f0d8166c2be1d17c2906ba0a86f.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"B-29轰炸机群从中国起飞:美国援华空军远炸日本本土始末\",\"isbn\":\"9787506567572\",\"price\":1339,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/251ae488466fdedd7abc07d5ee2a1cbb.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"流年纪 :\",\"isbn\":\"9787205075071\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/2d17adbefcd17ee8a8199477ab0e744f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/4962af69c3829ba509b72cbd283fbfd3.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":2},{\"goods_name\":\"北京土话\",\"isbn\":\"9787538280449\",\"price\":2399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/5bee83e6cf194874b250820f35ed774c.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"人生世事格言选句\",\"isbn\":\"9787205083878\",\"price\":1292,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/0293b7df41ba34275a6b50c7918ae016.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/68bd13ff509de2e4813a9c8f8496103d.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"街与道的宗教\",\"isbn\":\"9787531339984\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/c887db57716874a6411ce88807291dc8.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"春秀\",\"isbn\":\"9787108048011\",\"price\":815,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/e49f24c7302481769b2eeff520d4ec87.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"道德经译释\",\"isbn\":\"9787543848580\",\"price\":1810,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/a99dc3409729c0beee5b7f9a97060cdd.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"旺家花草种养大全\",\"isbn\":\"9787533547790\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/3d1b546b6cf3656b853e3d097769059b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/4bb2cbf4f9e5830ac3399fa73e7bcf93.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"沧海一粟:尹沧海文集\",\"isbn\":\"9787807119869\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/9d9643b4767c3c12f04ffc01d4251c89.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/5b0adf766169312d568e9066f2329860.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"罪行与宽待:原日本战犯反省绘画集\",\"isbn\":\"9787554907474\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/83e993a9bb1b2df565b9b7dd547f2f25.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/6541fad474df2f12c93ddfc14e96d206.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/9590ed480a70d61794201b6d429e47b5.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"别具魅力的软雕塑:[中英文本]\",\"isbn\":\"9787531427292\",\"price\":1078,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/f959e9b2d1a1275f6e1a0bbffc690fdf.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/98d98bdf57f10fb52a685439581064cb.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"哈弗商学院MBA教程系列全套\",\"isbn\":\"9787505101753\",\"price\":3000,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/cb8163295d1aec817571db8a7bcedd45.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/96e6852169b4eb7f317f45ed810ce341.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"东线\",\"isbn\":\"9787307065697\",\"price\":719,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/c00b0c017dd373bbff28d340ff717945.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/8882a7f346b3c82fa5bb1e3f63bc9916.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"房地产法律服务指南\",\"isbn\":\"9787806775158\",\"price\":1859,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/7f9922e2b9684162a01ebbf95b2974ce.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/81e724e87121f2af469d9d14469577a6.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"唐诗鉴赏辞典\",\"isbn\":\"9787540339753\",\"price\":1226,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/631034a7b299e7d8cbf88096ee24a368.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/42041f72307229b32d7b5dced9cab40c.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"五脏排毒养生法(汉竹)\",\"isbn\":\"9787553781426\",\"price\":463,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/94a3028335ea1dec3de44525d23c6c16.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/c0e9be06805919e26a084984c27f14a1.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"单片机C语言程序设计实训100例:基于PIC+Proteus仿真\",\"isbn\":\"9787121148330\",\"price\":2699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/e29b78ad18e57d1f35f853ade59f20cc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/eb84b01f66048f6f510d415fb51ec8ce.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"趣味哲学\",\"isbn\":\"9787532544790\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/b63e33481f02b8bbef1bc279a180e1f2.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/1070d0ee5489b923e1f0a18c1fee2200.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"鲍德里亚与千禧年\",\"isbn\":\"9787301084762\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/e9ab591f14d4f83dc3f8458b4fa776e7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/76ad9cb90a29b718694986bbfdf3cc08.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"东野圭吾:麒麟之翼\",\"isbn\":\"9787544286312\",\"price\":850,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/46e9201a350cd347111c251e170f3bd5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/c7214921bf6dab0aa4b33889eda5ac44.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"这才是清朝1:帝国崛起\",\"isbn\":\"9787509398746\",\"price\":798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/421da66c7bac553dc457a782dda773d3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/93118c3ccbad6c50d1d76fbf4e0e6e9b.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"这才是清朝2:定鼎中原\",\"isbn\":\"9787509399088\",\"price\":1005,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/afe64289df521b14b68c95e42bc4e57b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/632aaf657a90eac8096c84b89e622c42.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"赵扬百年\",\"isbn\":\"9787565510335\",\"price\":8399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/bed2052ed535375ca1b1e7f5dd792b07.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/bfccb57921b61c72efc06c2f6ba085b9.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"李鹏回忆录 全\",\"isbn\":\"9787512358973\",\"price\":3299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/938d4ac8afbcfbeab308664a40cac185.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/65f4db3a061b6e7c74fee2929bc0a9c9.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\":中国古代教育史\",\"isbn\":\"9787107070525\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/770ab012d4ea4d0552c7fff58e6700cb.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/0109ba3a31d094d64578de7b9fe8e9fb.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"家庭推拿按摩\",\"isbn\":\"9787508210315\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/25b13980e48768c8c6b27b0ac2db9e6d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/271744ea2fdecda9adc966dd9234301c.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"44招帝王养生功法\",\"isbn\":\"9787801303547\",\"price\":1868,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/c6922dcb2177574437736e8e4d3ae988.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/8bcc272ad73a6bdbfc6cc12979333713.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"家庭摄录机的使用技巧\",\"isbn\":\"9787563706365\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/1c6a720c961f31a4552012785280dffe.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"中国灵璧奇石\",\"isbn\":\"9787801501073\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/d45f7e50a5ad1468b8f906211974a6b9.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"港澳台游——旅游随身小百科\",\"isbn\":\"9787538134285\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/5c7e45231dcec6647b676c02e579046c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/e63017c76551e8ca3c53315a1b61101b.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"乱世佳人:(全译本)\",\"isbn\":\"9787532709243\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/9c59635f9b9c9710c0fa1701156c4cd1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/ec5612e7a0cdeae4da6526beee50fbac.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/e472cdba87c39e2ab1baaf4a75965546.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"再也不见,拖延症\",\"isbn\":\"9787122372475\",\"price\":598,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/5551f74813cc10803550c35701e4edfd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/377f929c5cd9af2161adbe058e48f04e.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"新型纺织纱线\",\"isbn\":\"9787811110838\",\"price\":4659,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/484769d78372c9790ea9c8cb6baf0c9f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/b3b063a5390534401911cd2324f5b930.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"国学经典文库 千金方\",\"isbn\":\"9787533554194\",\"price\":549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/6a3a2e50d8361678221ea208ad35260a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/119999aa0945445f823c7f9a4f457247.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/4a88d4a4bbc162cd4fc24f9e47d1cbec.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"活页英语时文阅读理解高一年级 17\",\"isbn\":\"9787519824389\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/d431e19cc8c9b1cb456a795716b76229.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"绝处逢生(上下)\",\"isbn\":\"9787550023727\",\"price\":3990,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/18f8e01a7020cba8fd34b0e3fa236f30.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/61e4ef3dcc372c142e604744ccac8b9f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/59a9f6a2374f48fb7b8fba1b927a65d5.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"围棋基础教程 初级篇\",\"isbn\":\"6785955971997\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/f0bd5da87f8ffd01bc39158115600352.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/6c86a25ce51fadf9d79a9b24723d8dd8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/cb1ed0e486b9dc12c4f631683cdb6cb4.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/3e40b044fa6dab6938500e054c673449.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/be5102c814bdd83b8eb49e01fc1eae1f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/235fd9e32a524d0980e4dca634255266.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"人一初始印象与预测\",\"isbn\":\"6783916013459\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/ffdd75ac08de00e781310c9654ccd044.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/80d3dcf6ca088cd3147785603ed069c6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/343fd3b5ad26d8187bd51188f6ac191a.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"面相与医疗美容\",\"isbn\":\"6784965391814\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/ebbb3fa268d7a22a51a692f6e3953ce3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/eb33bc1ea146ea592a4175a4d652ecb0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/11dec7b5a0a19d7dbe9ce0ffeb6bc172.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"骨相、面相、手相、家相\",\"isbn\":\"6780297765061\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/a696868e9c8b81bd35f0d641ff3d0089.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/54756640918cc62f95cec12a9737abd7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/7102b01b247165aeac777ce433c93d1d.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":0},{\"goods_name\":\"自看手相\",\"isbn\":\"6784790162700\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/f75407eca0cbb9eb2c2d4d2a04734c30.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/1b83aac19932cfca86847a7543611387.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/55b74d9b3e131587dd977883f12d3b24.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/4fcc64571fe8c6294967d4fcfa4c0e45.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"白杨树下\",\"isbn\":\"9787506362641\",\"price\":1372,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/8385484e15c5f3d73f925c58afb640da.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"现代机械工程图学题典\",\"isbn\":\"9787030497574\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/dd9f6b8d3b83884dcaada73675b6da57.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/9ee3a8bc57aeb09a537d0a110096a47d.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"高中数学加分宝 112个考点清单+疑难全解\",\"isbn\":\"9787555239031\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/6030345a601fb835fc58e222a2c6e1b5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/808fd6457ecf6da8a7abf50ff59f3d80.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"2020日历每日人文地图\",\"isbn\":\"9787520412896\",\"price\":1031,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/04faae46c658e3de411aa28e1c07dc64.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/03574f42025c239594d8595cd8052164.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"2015小学数学MO竞赛通鉴\",\"isbn\":\"9787556409679\",\"price\":649,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/a2d460d4ed20cfa0d596922ca51d582b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/73aa52382dc54fce5d566a4e760e601c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/88e9159514f53f60b9f491ecc8068d69.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"艾青诗选\",\"isbn\":\"9787020137862\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/dc3a33aaed27f71c60e08153bfc9d077.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"章红“亲爱的小孩”系列-唐栗子和他的同学们\",\"isbn\":\"9787558401923\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/629cfcaaa6bb359d5de38b3f7496e423.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"饮食细节决定健康\",\"isbn\":\"9787502823955\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/aee80c0fc2e0861cc17000cd2557f13b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/192a4530a63a177e2fcda8a4f50ac102.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"启迪孩子智慧的动物对话\",\"isbn\":\"9787504473912\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/ee43c997d25b6fdce959f7a092d92d58.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/f5cdb567add0cb71c639334fa43c36e5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/05a385dcf75d06482193e431bfc0ad5e.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"丁立梅的阅读课I:相见欢\",\"isbn\":\"9787520709453\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/93f4255d26ca6c5178b71dcb23c76203.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/0c8532eb2b4195b92cd058d083d482bf.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/fbf3e44c21be558444d9873f461f17d0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/e81328fc0342015bbc49c9c0f226bf3f.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"彷徨 无障碍阅读+中考真题\",\"isbn\":\"9787570409914\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/40ecc7249e99a4fe0921d9ccbf1bd26b.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"中华传统美德故事:仁义礼智信\",\"isbn\":\"9787534256813\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/710fd1484cea919a78e58440ce48f46f.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"中国经济思想史简\",\"isbn\":\"6788440913864\",\"price\":347,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/f0dc8183d7cf02a445e39700ab94aca0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/8af33f46d8ad9450a4f263f7ae53a04c.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"成语典故 (增订本)\",\"isbn\":\"6785656435454\",\"price\":789,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/3a059702ca50a1d2e990a569ec8227f4.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/036f9743b08dab8b1f815fc065cb9c7c.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"2014国家执业药师资格考试考点评析与习题集:中药学专业知识一\",\"isbn\":\"9787506765312\",\"price\":393,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-13/4b5da146b5bb5c814fe659e96696ea7f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/c1e6153537492431bcce46d5a4d620ac.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-13/101b70aeacc7b5e1692aeadd1fd47c75.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"小猪佩器:森林小路\",\"isbn\":\"9787539763132\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/17b872467f859792a3ac7950e974192b.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"世界文学经典名著:罗亭贵族之家\",\"isbn\":\"9787540415358\",\"price\":549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/2089a8ba6ea2390baae04a64f76fc91a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/675a6cfddf484bd72d2e286fd06b87fc.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"名利场\",\"isbn\":\"9787540416171\",\"price\":1157,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5ec4249862eff90bbd6c697dd47fd176.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/d7614a4faa492d34ee85611f9a79306f.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"上尉的女儿\",\"isbn\":\"9787540413651\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/effc5eb3c3eccadf9c236628c91926dc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a04ac69e2fab3f00786af8a77dda8354.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"小猪佩器:乔治第一天上幼儿园\",\"isbn\":\"9787539760476\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/84cd9624e9e766886a250436bb80b1ff.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"高利尤老头欧热妮·格朗代\",\"isbn\":\"9787540415365\",\"price\":198,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5267a7dc0a19ebfbdcaf0b05277c35fc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a04b10ceb37d4907df912b45f562fe42.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"俊友\",\"isbn\":\"9787540414337\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/901222813ad08c3c985031125eccb438.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"小猪佩奇:校车旅行\",\"isbn\":\"9787539763101\",\"price\":689,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/13091e83a11bfad21976a64e8fdca648.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"小猪佩奇:游乐场\",\"isbn\":\"9787539763064\",\"price\":429,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/32acf9ea2ca5001cd0528457a5b510cd.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":0},{\"goods_name\":\"小猪佩器:去游泳\",\"isbn\":\"9787539763088\",\"price\":296,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/390823f55be1882fb53987f076808e87.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"地质矿产勘查规范与地质环境调查、灾害监测评估实用手册 上\",\"isbn\":\"9787884132812\",\"price\":3889,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/c77591fb4a94e286302046523d91161d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/7941e69d4af5d0fcede08e0f2786397d.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"中国财税管理与实施\",\"isbn\":\"9787900305794\",\"price\":3949,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5fce6fd060e5ae334f524f177d0d018c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/ff7ffe9909ae2462880b768ec423e896.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"名利场\",\"isbn\":\"9787540416171\",\"price\":1047,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6cea881dbb2288cd64bceb99b1b9186a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/4a3c9a9a825d0aaa59831c81baa8d3ed.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"哈克贝里·芬历险记\",\"isbn\":\"9787540416355\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b4ce4e93b85eb7430392dc312e4b02e8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/2d8d132fce3b0b416df91c6f8ff4d9af.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"中国合同示范文本\",\"isbn\":\"9787801433121\",\"price\":429,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/19c7c93aa30ea42326026bd04a9989da.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/9688465272c2e4ac743857bb85ce0485.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"莎莎的栅栏 Shasha de Zhalan\",\"isbn\":\"6785998228278\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/958cfd5d027ab37ca68adbb90784016e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/6681760740cdd0f1fa4fbb86c2291b58.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"啊哈,原来是这样啊 Aha, Yuanlai Shi Zheyang a\",\"isbn\":\"6787042823355\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/411627a550da0820a3d991c01467d7ab.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a567d6ab2af948d1187186c7f8db1460.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"哈佛管理全集\",\"isbn\":\"9787800019401\",\"price\":990,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9ff94b466652c41f791592895f5964ff.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/0d8a833a9bca0b02c47628690e38d050.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"为什么只有我在打扫\",\"isbn\":\"6782554615447\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/e23ce8cd27f0c1cfadf2d695defb152d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/116595890c119f3a3e1567ade367030c.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"游遍中国1-4\",\"isbn\":\"9787806063125\",\"price\":2499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/be85ac787cedf7d50f1041e62a31360f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/bef97469d31f512e16ad4d5661667dae.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"阿里的旅行 Ali de Lüxing\",\"isbn\":\"6786915135561\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6a23790784f484755b47ca0fc2f071fe.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/7c850150f508e762f4c8683aabaeec4a.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"刺猬,我们又见面了 Ciwei, Women You Jianmian Le\",\"isbn\":\"6782258087239\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5151de134acbdae043624236d8bee7f9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/7dbd9a71ef5a43bee2490eae2ad3e92d.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"你会吗 Ni Hui Ma\",\"isbn\":\"6780954208165\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d9aba38224e56572f3c875ec07a81145.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/24f49fb2e77a13af63a84eac18c3254a.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"谁来给长颈鹿戴上帽子 Shei Lai Gei Changjinglu Daishang Maozi\",\"isbn\":\"6783899814432\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/19286d7be86215a935766906252089c2.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/75ae1466736767882e723c6056a55b48.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"姚姚的大尾巴 Yaoyao de Daweiba\",\"isbn\":\"6787918663870\",\"price\":970,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a196c00119cb3d745613b273257687bf.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/ee18e6c0422d635dcebca092902e988c.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"文心雕龙\",\"isbn\":\"9787534828751\",\"price\":980,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/e0ed933e84ef16a3011e1a03a62a3a6d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/e0a903ea2cb047d422fa2933ae8cd90b.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"2001年上市公司速查手册\",\"isbn\":\"9787501152247\",\"price\":1098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/aba0eebcd469bc115148f382cbb58ea0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/8e59a777d5fe1947c5eb875a020f81d7.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"那一定是心理问题 :\",\"isbn\":\"9787559658210\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/72648926403583d7ad2cfd0a1a0af1d7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a1567ea2c8b37f189b8d25effc461b04.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"情系田园:田园诗稿、日记\",\"isbn\":\"9787531325574\",\"price\":2197,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/183b1072a4ad7f0d3863a7e6f8823883.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/8a25c18d220758576dc04f1fc4b33c26.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"多代社会\",\"isbn\":\"9787521764871\",\"price\":2379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1b4203ee004173179d4a87b0f8ef0f5d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/fa020e9da830cc5a436ba244d46fac63.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"盘发造型\",\"isbn\":\"9787030371355\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/437b07dea6d951b6e934f60bab78f88d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/c285278822b3379b14dc5508fa6df1bd.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"书 名:做最富足的自己——歪歪免财商教育童话\",\"isbn\":\"6784823390147\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/07b643e0d2f283b6b86f6c55072ad358.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/3ee3b352c2104528f5988470c0d47d7b.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"商业银行经营管理\",\"isbn\":\"9787543225220\",\"price\":331,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/700545ed3627dd2dbce999f02af9cfd3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/2bd94908cb488cdec8fbb451f0f6a2c0.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"书名:做最富足的自己——歪歪免财商教育童话 印\",\"isbn\":\"6788132296441\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/793bbc68fc4c0bfe7f4e53d4c9335fb5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/57333b6aa34215ec4b2fbd984ee902d3.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"书 名:做最富足的自己——歪歪免财商教育童话\",\"isbn\":\"6780996264742\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/79f7bc1ecfc8461facbea99dc75e8e88.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5f6e2110abee1531aa531bc960a08e72.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"书 名:做最富足的自己——歪歪免财商教育童话\",\"isbn\":\"6781802643794\",\"price\":194,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/c0a785a02d0d1e545308e2b87ec8b72d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/41c1584f8eb9d81dc4bbe3067bef97d3.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"书 名:做最富足的自己——歪歪免财商教育童话\",\"isbn\":\"6781202139156\",\"price\":205,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0f7af227c47074ece541be9d8816388b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/1193e125b43317fc31690aa61e913a2b.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"书 名:做最富足的自己——歪歪免财商教育童话\",\"isbn\":\"6784965822053\",\"price\":207,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/2bbb37d8699ca7b2c767cdb4554003e3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f7698bd8e9f2918364b9ba79764d41da.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"名:做最富足的自己——歪歪免财商教育童话 印\",\"isbn\":\"6789829389016\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9fbf96615428fcc5e11c10e48e47de60.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a8a580da4fc8c81507ce82b773dae713.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"辽宁省建筑安全培训教程. 管理人员培训教材\",\"isbn\":\"9787552910612\",\"price\":1186,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d71eb70dd2268ea547e1a18a49638abc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/16b4451745bc2fcb31790c9088b0f48e.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"税务稽查案件查办实务及典型案例(比武)\",\"isbn\":\"9787542965325\",\"price\":1757,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b90f1fc017eeca31b83b1224795be198.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a1550e1bf7eccd2f6098403787889d43.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"化蛹成蝶的追求:档案文化建设的理论与实践\",\"isbn\":\"9787205071837\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0a6af3f37191f2bd0fe2830efbcdcb28.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/b27995523ac8f4a21c3cb1650b61416f.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"尊隐:龚自珍集\",\"isbn\":\"9787205028633\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/03204fc6c39e099ad4e20cf176a34bd1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/794943e5d06878c87d2f6cf0d5c3c4df.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"二战纪实 中国远征军\",\"isbn\":\"9787553104300\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/fc9c6fa2edb067714e1abc3e2b6967ed.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/729dd7facbc7829540e39c53694f3383.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"来燕榭读书记\",\"isbn\":\"9787538259704\",\"price\":5499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/c948863af4ae952e50311d3c1e65832f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/fa26f0dc5d8c539e6f66c39de16b528f.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"与时随笔\",\"isbn\":\"9787205068165\",\"price\":294,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/ab1d050eb4349c968bed02f7a52fc982.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"论创新与求实\",\"isbn\":\"9787531329374\",\"price\":3929,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f8257c03e81602bdb73515856a41eebb.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"远方的路标\",\"isbn\":\"9787531327349\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/675b267d12e2799e089e5b1b1c5c4a2f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/4b7b1b34265824604d5ed83500960f61.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"书道今诠\",\"isbn\":\"9787545109665\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/245d5aa151cb6549e4f7ba3d0f40b20e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/d068a28dc487f40a6ac7a3a317b6ad6f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/67caf16eedfe6c90677a26716c769c7f.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"苏轼散文精品选:原文·注释·译文·赏析\",\"isbn\":\"9787224038873\",\"price\":1043,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/4368be6da70c8cba500240a538ac6da9.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"风雨哈佛路\",\"isbn\":\"9787508654621\",\"price\":1428,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/97d4d46d79f2e52c39b0fe94231fc411.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/ef14bf04dc9f87a563a13e8f9ea8739f.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":0},{\"goods_name\":\"红色的凤仙花\",\"isbn\":\"6783512003616\",\"price\":202,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/881cd281485fe60942335f0803449a20.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/119aa8209d9ad4253c894813c591348c.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"万祥寺志\",\"isbn\":\"9787205075736\",\"price\":4508,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/ccac4b087bfc66325577904fd1722478.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"中医文化学——十三五规划\",\"isbn\":\"9787513242608\",\"price\":986,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/62565574e4628f5976441843c6ad1da7.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"中医文化学——十三五规划\",\"isbn\":\"9787513242608\",\"price\":398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a3fd878b0883be01a34df7f33fd65eac.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"名师同步教学设计:小学数学四年级下册 人教版\",\"isbn\":\"9787544033077\",\"price\":889,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/7dd9fbb6b40fd0c0f124728ea406f0a9.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"媒介·社会:产业、形象与受众\",\"isbn\":\"9787301149843\",\"price\":411,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/cfc41c4430e1c381493b62e9346d7809.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/198fb0a49bdc9aafe14ab16473819a97.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"外科疾病中医特色外治226法\",\"isbn\":\"9787521423334\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f62bc48095083b52f211de77faa9f4ba.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"企业会计实务操作\",\"isbn\":\"9787561045572\",\"price\":5599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/295fb697d888f3503d2e8bbd7b1f229d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a8368dea4582f2baf2f4f4f5a0c6c67d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f78203a19a953f3c6ef21218dd7afc07.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"大学生创业教育教程\",\"isbn\":\"9787561185315\",\"price\":868,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f58b8ddacc3d3f649fa6c3501693824d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f6cd842040d583934a17f950fd7dc460.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/bbec0ccc142bbc87ee05c7bbb0dd9d07.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"书法艺术导论\",\"isbn\":\"9787561068533\",\"price\":394,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/12e7769912581e49d05e3678476d87ba.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/b1d022121b1fd3b78d213999a16e169e.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":2},{\"goods_name\":\"中公教育·事业单位公开招聘工作人员考试专用教材:全真面试教程\",\"isbn\":\"9787802088641\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d5c253e3776f1a26c277471bdd707936.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"光纤通信技术与设备\",\"isbn\":\"9787118126754\",\"price\":387,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0bf4b01f1dad3aae1950ca5dc859c0ab.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"学前教育学\",\"isbn\":\"9787107302763\",\"price\":497,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a6141f86f29b07427be8544ff3384549.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/eb491ff41018ea783f07496ce50f69f6.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"政府与事业单位会计\",\"isbn\":\"9787509548059\",\"price\":488,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/be722fdc7ed1847a9ac0fbe23300eb53.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"临床流行病学与循证医学\",\"isbn\":\"9787117266789\",\"price\":589,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/38146e919da45278dd3a33b1042bd5ff.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"只想和你好好的\",\"isbn\":\"9787559468338\",\"price\":397,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/84b1dfe9fbe591b0d1b6a11947e48333.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/34fc0ac1cb82675c15f2cd4c4a7053de.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"我们都一样,年轻又彷徨\",\"isbn\":\"9787540470883\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/34cd17fd24ef1ea71dea0117e9fa1f57.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f30668dc8862a8e82fbfda7f91e424a1.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"耀眼 1\",\"isbn\":\"9787551159098\",\"price\":357,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1714bc235530f66f8dccbb5c533380dd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/6d2737a97d3f884d65cef7b303c4189e.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":0},{\"goods_name\":\"心智成长 开启高效学习成长模式\",\"isbn\":\"9787115556509\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9ac5fa38efccfd83fe0925582e67167e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/687ff6eb6c0959956c3197f8cc9976d4.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"聪明女人必备的九张牌\",\"isbn\":\"9787563920624\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/124bb65bab6feab1f35e6b02e2c89c25.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/3b5d7d0f837c39bf7d4a92c68aec89f7.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"生气不如争气全集\",\"isbn\":\"9787802133907\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/96bfa79223aa2cee72cac31699a433d4.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/812ea7a182a361f4391d552a33931b89.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"别做那只迷途的候鸟\",\"isbn\":\"9787559626530\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/acc438ee325166bdb06a928e0740accf.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/123a86d70d5e6a761ebee5b8803cec2c.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"鸵鸟心理:为何我们总是害怕与逃避\",\"isbn\":\"9787122364210\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/946e4f0388b22b65ce4209bd79aefb68.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f072a6de45f5ba94e7ebda5153b3ece8.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"谁动了我的奶酪?\",\"isbn\":\"9787508650890\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/caedf188dd154d18d744e8e0a1bbc901.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/8f498c920eca92f058d85bbda61aa68f.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"六度人脉\",\"isbn\":\"9787540455125\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/62bd99c39b8418ccc27c1c6957ea12a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5069df8753564cccadb6dfdef9531a35.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"Why青春期\",\"isbn\":\"9787501224821\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5ccee5350c7d77b6f0f7e5ee2db5868c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f619a0183880cc237a542c6c1c2fc1be.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"细节决定成败\",\"isbn\":\"9787564074050\",\"price\":1231,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/890bc762bf630bfa1c0b30bfb77061de.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5c0cbf1a0f16b7f878041d76ea861ca1.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"记一忘三二\",\"isbn\":\"9787536091078\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5e326b21ec5cbb76417c2b627c9cb482.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/4c68bf327357fbdfabbf9f0fb431c1d2.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":0},{\"goods_name\":\"小学生分类作文新一本通:4年级\",\"isbn\":\"9787514602272\",\"price\":1909,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/23f829c5e1c9aa6019fdd986c51a5bde.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/2f4d0dfc2df15e9e062b2fd40c0106f0.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"开发商\",\"isbn\":\"9787539927053\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1b6d0cbdb3b0002a067727a9183e666f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/54f396af157f8d956fde4787d595b239.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"学习OpenCV\",\"isbn\":\"9787302209935\",\"price\":769,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d903fa53243554f10da605bd00b926f2.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/fce33657cc39b7dc17b10720ccb6828e.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"新编学生字典\",\"isbn\":\"9787539276533\",\"price\":509,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9f5b0cfa0a873bc5e6e703dc9e485ba0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/36184d9da209387503af48b9d4aa2680.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"实用广告学基础\",\"isbn\":\"9787561409213\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/cecf8a63d7de8efd4ab147048d9ac900.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/c4b9a81b177b04eb1407033f82939fe5.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"镜苏摩\",\"isbn\":\"9787104022541\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b580273515e7221b2da4fb6759d0c3a3.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"前沿故事\",\"isbn\":\"9787544212113\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d2888a5a0504951d9186fbbfd6dfd1a3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/659f00a32ccdf2ef418e9cc0306a3ed2.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"升级版动物小说大王沈石溪品藏书系:野马归野\",\"isbn\":\"9787559708908\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0fa366285b4bd8dc9d8bf662f719e4dd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/682b883eaa74ab5f0a41d7a3ab80353d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"艺术馆·艺术中的庭园与迷宫\",\"isbn\":\"9787568058230\",\"price\":2365,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d8f440c71d35ce525ce5220d2560ef81.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"实用商业俄语\",\"isbn\":\"9787561810712\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5fb3d36dda4f31a9dcad36dcc2571cb4.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/ddb4a689f967b8b077a0176ccef4cd04.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"三联精选·凛冬将至:电视剧笔记\",\"isbn\":\"9787108068347\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0532df0e1ce4241d00b61216b34585fe.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/4f0cd8c1918dcb97ffebf0f0f1d3ae16.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"文化的演化:民众动机正在重塑世界\",\"isbn\":\"9787208188822\",\"price\":2689,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/73792e1ae4940feea446b09cc05da95f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/03b89e78aa08abce850739a7e3939e06.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"光荣日 第一季\",\"isbn\":\"9787807596226\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a8f49c5e9d7a91050cbb2e9829da54ee.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/25764ad7e12503ff286e43b68893aa83.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"社会保险政策解读\",\"isbn\":\"9787538279887\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/81d2bba3ae483b7a1471b9a23c71d83c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/cf97907d107723e8b29954a0c1d25fd2.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"劳动保障政策问答\",\"isbn\":\"9787806699300\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/fc97f7cd399e884fcedd6b8e094397b8.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"外国公务员养老保险制度\",\"isbn\":\"9787801390851\",\"price\":2399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b86f26464c3f9711e59d64ec34abf719.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"3ds Max\",\"isbn\":\"9787115213358\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/332d2d4e5a433c3a05b6cef87a7ab3e3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f5d71137ad0346fe874c034ffd67a626.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"完善企业养老保险制度工作手册\",\"isbn\":\"9787801754233\",\"price\":1179,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/718069b5534bd1b052a0f9089d0395d7.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"劳动保障法规精选与实用维权700 问\",\"isbn\":\"9787801781628\",\"price\":329,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/97ae14e80228e018123a6c262f7c54d3.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"只有医生知道!2\",\"isbn\":\"9787539965956\",\"price\":769,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/829774ac47c3dd2e33dd99dc68e4b0b0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/c7f30dd71dc9bf1c0b358c62fb085697.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"住宅建筑设计经典:[图集]\",\"isbn\":\"9787538119633\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/154b5e8f9615cc110085b24124d871a0.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"改革先锋风采录\",\"isbn\":\"9787509910917\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9752be40988520018d16b332a893a5e1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/bbd7079a0ed573784c6229075067ca9d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"信息物理系统典型应用案例集\",\"isbn\":\"9787121362668\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b91fd7b00d6faa66f1a218a797da73eb.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"从课本到奥数难题点拨\",\"isbn\":\"9787544542494\",\"price\":316,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/c01d2dd8fd789941fa5e252bc2e96661.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"19学霸笔记--13.初中文言文\",\"isbn\":\"9787564831530\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/8a2ad518fc9068a0b1cb3ae5342179ab.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"电子琴实用教程\",\"isbn\":\"9787103005897\",\"price\":1317,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6f844d6716e6b7fccddd5998a3e5aa18.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"罗尔斯 正义与自由的求索\",\"isbn\":\"9787806389706\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6753c299060bea4ba38930634772906b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中国典当史\",\"isbn\":\"9787544133258\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1ec0cefd44cbe3ae1248e73ae318dea6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/9837c62d7b3b311461f82e857c57e120.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a834d42381db90fd48387a81a6e5751b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"稻草人\",\"isbn\":\"9787307127678\",\"price\":231,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/85b98c8496ddae3340fafbb2a0c96b6a.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"绘画气韵评典\",\"isbn\":\"9787531428299\",\"price\":586,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/548875bd7b841725f759f5297ff9a974.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"曹雪芹祖籍在辽阳.续集\",\"isbn\":\"9787205057473\",\"price\":2489,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1646e35d713f52a6d889aaa223f2a6b3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/0c2866c293560ad1c45024a2f9f37265.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"网络信息资源与电子政府\",\"isbn\":\"9787801148742\",\"price\":1647,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/69b9b7acf7d96aeaa8b0a881a63b17ae.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"一个真实的玛丽莲·梦露\",\"isbn\":\"9787506019262\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9990c78e7e995fd9f4ca0dcf8cdbf1e0.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"红色记忆:梦想的力量\",\"isbn\":\"9787550510975\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/23780b30581140f8c446d09cd7dc9b48.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/9ea33be146ce383a14804c13232924b0.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"大师也有错:余秋雨散文知识性疏误点击\",\"isbn\":\"9787801538574\",\"price\":821,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/3d130412ab436791d604230286070283.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/d572257ece1b2f220426a9e8561d4b43.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":2},{\"goods_name\":\"列车长·列车员·列车行李员·客运值班员·客运员·售票员·车站行李员\",\"isbn\":\"9787113043889\",\"price\":4199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b6061f51d06652d4791a791af0c272cf.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"倍速学习法七年级语文—人教版(上)2020秋\",\"isbn\":\"9787570401154\",\"price\":2352,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/c31991cf171c9e6604974597e5a70cae.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"旧梦:古风人气插画师 离城\",\"isbn\":\"9787569920260\",\"price\":1191,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/67de5913cb80553ceadbedf8155c1533.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/746695ec2d6be7e3e93531703cd38af4.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5a1b2777fea1ec7a262d89a25d16648e.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"西方绘画技法经典教程:人物草图表现技法通过火柴人学画画\",\"isbn\":\"9787547921470\",\"price\":4699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a36fe980575130f3c6ec6a8fce4e0569.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"学而思 培优辅导:初三化学跟踪练习 上\",\"isbn\":\"9787121235832\",\"price\":1273,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a27cb8468269f402cd1101306bbcb5e6.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"钢琴.二\",\"isbn\":\"9787532066896\",\"price\":1460,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/afb3c44b4525dc628231131a1900b3d3.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"《实践论》《矛盾论》导读\",\"isbn\":\"9787503562471\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f302191b6d3c950fee46b896ba9e73ae.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"中国文化现场\",\"isbn\":\"9787563925902\",\"price\":1096,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/ca983d4ee9ff7072f5cc8ff79b5f81a4.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"新东方 考研英语\",\"isbn\":\"9787802565401\",\"price\":277,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6c71b4a6842a31e47f6fa799be54002b.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"全国英语等级考试三级口试真题题库3\",\"isbn\":\"9787115304575\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/2898a048ead60ffa84960b32233db5a3.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"绝对成交之一个房地产销售教父的自白:为什么不管多难卖,他都卖得掉,还能卖出好价钱?\",\"isbn\":\"9787218106229\",\"price\":204,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/04ff49da674034c5465bfbc8c56cb79b.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"管理就是带好你身边的人\",\"isbn\":\"9787546419114\",\"price\":559,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/3784ed0c328badb786c785fb0f06082d.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"原始之美与自然之奇——奇特部落\",\"isbn\":\"9787119041643\",\"price\":342,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/82d03e35c4d6cd6f5364333303ae8bfa.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/ada266bb29c813e3f339b1141638c8e6.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"全国干部学习培训教材:社会保障制度建设\",\"isbn\":\"9787800988578\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/edef882804e322058b08702ccf5c411e.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"职工社会保险读本:你我最关心的社会保险问题\",\"isbn\":\"9787538275346\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/2f2db1fc317f788cdaa851dbbfbedd03.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"社会保险法知识问答\",\"isbn\":\"9787504591043\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/025c9c3f700f96a43a3f8eb654152f32.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/db2b8848ee52321b5cf40e5baa670724.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"全面加强党的执政能力建设沈阳方略\",\"isbn\":\"9787544127851\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/daa299e841443f9ed0d0b47012016aa3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/b0662b9f5fcf98dce7a2e1bec1a4d6c1.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"社会保险费征缴暂行条例及相关政策问题解答\",\"isbn\":\"9787507508499\",\"price\":2299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a435c762f9fcfcde504e50d1f629027d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/8c6d11760324f0f80258e69a28f25f73.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"新编党支部工作实用手册\",\"isbn\":\"9787505103559\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/8876b99964fec0be1a71da8efc1ee445.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/67e2a54a7059a553da70de90f50bf801.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"做人崇尚“孝善仁” 做事摆正“责权利”\",\"isbn\":\"9787516615133\",\"price\":794,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/927357b57394bcb3a158fe08a47df904.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"工伤保险条例实用指南\",\"isbn\":\"9787801890108\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/afb51f6d80886678054ed16a93b2ece8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/ec4ef8820dd4997b97fb60fc697bcebc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/767a83ce9f8c706abd2805ce928edaa8.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"公务员能力建设读本\",\"isbn\":\"9787544136150\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5f5b7ede50208c324beb0585d44f775e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/63f0b7a764fe85dc9f77d40b322ae085.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"最新基本养老保险政策问答\",\"isbn\":\"9787504584328\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"wxfile://tmp_0a989e56131a36b448038e604e37b3de.jpg\",\"https://img.pddpic.com/open-gw/2025-09-14/dedb6e95af535158eb07c5a7244d8237.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/d55dc90ab7d1dcee39cf80519a9ddad2.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"党的十七届五中全会《建议》学习辅导百问\",\"isbn\":\"9787509901564\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/920643723c023e6c860a152d2d95bad6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/4fb36e176640248881329cca807e2230.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中华人民共和国公务员法释义\",\"isbn\":\"9787801825124\",\"price\":479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/59c74bb29bf59a618ea3b3a3f8bf025d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/dcca7286bd758a84709a0787c82687ab.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/99bbdc60c120dbfed9e080f89eba1ee2.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"劳动合同法重点解读及实务应对技巧\",\"isbn\":\"9787509308332\",\"price\":1755,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0ae887a27582cf45312c839e1a23d0c3.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"工商法律文书大全与制作详解\",\"isbn\":\"9787509345122\",\"price\":634,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/7887b8db79bd2770349fcd15c0155d06.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/084ccad452fddc0408193ec49814561a.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"养老保险案例\",\"isbn\":\"9787504578532\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/ff94f474833df3a98364cf5541b0208f.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"《一看就懂!图解经皮毒》\",\"isbn\":\"9787500147084\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1bcb8a5d81222b7fa69a74b640d4807d.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":0},{\"goods_name\":\"语文教学参考. 三年级. 下册\",\"isbn\":\"9787801843944\",\"price\":978,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/db37e6028b65384745d39584a8cca9cc.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"张抗抗作品评论集\",\"isbn\":\"9787531320616\",\"price\":2949,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/885ff8830812369decb8b1a4b19eaf89.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/e6b0e4668bdfa42fd7f721c2b4adbb53.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"梁家河\",\"isbn\":\"9787224127232\",\"price\":1250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d74a8dd62b4850ed6b89e68eea6c4f4c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/e12e053906a011bf00212dbd33123e35.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"维克多英语听力进阶. 七年级. 上册\",\"isbn\":\"9787107247125\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d5f22b04ac89605d8e5e8113cc7f484c.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"我写我心\",\"isbn\":\"9787562156734\",\"price\":234,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f0aba96114369e73b872b3a43c810171.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"探险家沃斯(精装)\",\"isbn\":\"9787533961985\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"wxfile://tmp_1c19cbd8b8d4483bce03103efcca8580.jpg\",\"https://img.pddpic.com/open-gw/2025-09-14/44dbbd449e77cbe7586dad73fd76af59.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"我与思政课教师的交流\",\"isbn\":\"9787563239733\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9bf626596a7ba7dc65770817a15f6973.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/d0f1a1c1357ee2339aa838938cc1dbe0.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"华罗庚金杯赛培训教程.初中篇\",\"isbn\":\"9787308042789\",\"price\":3599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1a921b8b670c1ec53d95c74941ee6e8b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中医经典名著解读系列:《黄帝内经》和《本草纲目》中的女性养颜秘方\",\"isbn\":\"9787533762087\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/cf14f06ad6815fb7c38e1a9463da9f6e.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"农作物秸秆养牛手册\",\"isbn\":\"9787122180551\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9631a55be7c4ebe5ea41baba9887b495.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/0414386478a4bc52e5d2dde477c061a7.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"只想和你好好的\",\"isbn\":\"9787559468338\",\"price\":398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/592210591dcfc0b1a951e8a29d25b0f9.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"改变一生的座右铭\",\"isbn\":\"9787802113152\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1e5b76ca3dd1a473719ebe24fde942a4.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"辽海讲坛.第二辑\",\"isbn\":\"9787538281385\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/348b35cda50561e2203d290082aaa26b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"金星教育系列丛书·中学教材全解:8年级英语\",\"isbn\":\"9787541993220\",\"price\":405,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a8db14ea85c7adf34c7b1e665d8a3d4b.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"会说才能赢:论辩\",\"isbn\":\"9787205078478\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b331a24cc5a8a7cc21d0ca372dc3c6c9.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"内科护理学副主任护师 主任护师职称考试习题集\",\"isbn\":\"9787530479339\",\"price\":3019,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/677d2b9e38e8379ffdf0d8cc579b3fe6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/26834ef2f2295d2c66d1400648ad8135.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/bd99033cdd64d95d573d9cecfb9ea50a.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"护理概论学习指导\",\"isbn\":\"9787117064361\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0f5be41d54d99f69515b1a467b0ff6e0.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"护理技术学习指导\",\"isbn\":\"9787117057776\",\"price\":3599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/486d5d44e6d03690bba7eeb3efb5f1aa.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"病原生物与免疫学基础学习指导\",\"isbn\":\"9787117056625\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/57ee81f8e8b3cf01d5d52cfe26e7d10c.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"全国中等卫生学校教材:五官科护理学\",\"isbn\":\"9787117033107\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5f1e120edb9cfbff7823b284365af024.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"精神科护理学\",\"isbn\":\"9787117033619\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/afa6a30820bffb30f7127b67c40aaf17.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"药物学基础学习指导\",\"isbn\":\"9787117055512\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f2d2c9b33238f54e70a2c68f71c16f0e.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"辽海讲坛:第四辑\",\"isbn\":\"9787538284447\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/4b343e391f74890a1ce82be4c10c79e0.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"病理学基础学习指导\",\"isbn\":\"9787117056960\",\"price\":997,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6ef300a2f1b0253a42b0888c0056de00.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"绝顶\",\"isbn\":\"9787020037797\",\"price\":285,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/95a21bff1de34a64534c37a68c1ca7f5.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"新编公务员公文写作与处理实务\",\"isbn\":\"9787801589859\",\"price\":1348,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/8718b9586c492c787bf31ae1b4b5e19d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中医学基础\",\"isbn\":\"9787117049054\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/42716530f7732a6804a47a97745f4a1b.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"正常人体学基础\",\"isbn\":\"9787117043939\",\"price\":289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b7aadcc73e8d042197f528b3d7922035.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"计算机辅助翻译实践\",\"isbn\":\"9787118103557\",\"price\":1977,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6e3beec0c55bcb45061158a28c6b5b6a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/c09ee3de39efa3688449f8060778ea89.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/2d11772ff800b0d913223de8a1c4c514.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"建筑设备工程图识读与绘制\",\"isbn\":\"9787111148524\",\"price\":1442,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1372cd3da9c30b513bf40780a1851dd7.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"木本花卉栽培与养护\",\"isbn\":\"9787508208817\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/38a26215c079e67b95300c8946ae1d41.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"园林植物保护\",\"isbn\":\"9787111369219\",\"price\":1493,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/43c061f94277bad839d31f4c097b8676.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"建设工程资料填写与组卷系列丛书:园林绿化工程资料填写与组卷范例\",\"isbn\":\"9787802273740\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/bc39f525a627aa1b56b13c82cca00b9b.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"AutoCAD建筑设计与范例应用\",\"isbn\":\"9787302159445\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f45a249baaf06e0881a81524be711456.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"明月共潮生\",\"isbn\":\"9787530623329\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0e53491b67bfab72f212a5b7f7ea2eb0.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"西方商业银行管理\",\"isbn\":\"9787561714812\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f916e5d5b2aa457941fa826f9f784252.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"国家医师资格考试实践技能应试指南:临床执业医师\",\"isbn\":\"9787117124058\",\"price\":881,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6752f4efc0d9fedf956af52921ce05a0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/6ab8bd169179259e5a14d4c5a4b9cc02.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/891a1a01b0ca85b6fae52fb92c52d4bd.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"阿伦特与海德格尔\",\"isbn\":\"9787531322238\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/c75a3c3eff05692d386761f3149a23c4.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"波伏瓦与萨特\",\"isbn\":\"9787531322290\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/714b006dd719b11804936834c4c7b7a3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/4d3e7c6cfbfbda01939c8327025ca75b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"《万卷楼国学经典:孔子家语·颜氏家训》\",\"isbn\":\"9787547024959\",\"price\":438,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/e92cdd4f6cd0b3fed20477cc953f34a5.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"园林绿化工程\",\"isbn\":\"9787111140603\",\"price\":269,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0c98ce6694d19576f0b5a004d73612f3.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"二胡轻松入门\",\"isbn\":\"9787535245458\",\"price\":1031,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d821d6973e4115159dfaafbf75f9ad93.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"奥赛急先锋题库丛书. 小学数学\",\"isbn\":\"9787500765370\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/4adb4b9148e669bfb87d26d3f31b427a.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"天蓝色的彼岸\",\"isbn\":\"9787559628435\",\"price\":308,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6da6964bdb4a9d474024f5dd5a88dac3.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"山楂树下\",\"isbn\":\"9787533943806\",\"price\":781,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/be49672485ab4e27021a2646c0bda68f.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"新河北地图册\",\"isbn\":\"9787805525228\",\"price\":254,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/787570d388719befb25a2fe57bd32c4a.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"三角梅绽放的季节\",\"isbn\":\"9787536056374\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/8c43cdb6a70105a9b03d453c808a955f.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中考常用题型解题经典1000例.英语\",\"isbn\":\"9787561112908\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6baeac38fb9d82ea814a7c9269c2c145.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"中国历届高考作文精品廊——高考满分作文\",\"isbn\":\"9787500742357\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a37b957ece2e1cdb8edd61727db9e86f.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"课前预习语文二年级上册同步人教版 小学生语文专项训练一课一练同步强化训练课前辅导课后巩固练习册\",\"isbn\":\"9787573408945\",\"price\":264,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/24ed30c2bdbf1ef40e329b315487728f.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"课前预习数学二年级上册同步人教版 小学生数学专项训练一课一练同步强化训练课前辅导课后巩固练习册\",\"isbn\":\"9787573408884\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0bfec751a360d30f3f0b4728f494743b.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"书艺珍品赏析\",\"isbn\":\"9787535628336\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/941ebca8e362a52f6ef810c3d2ac6e36.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"最实用的快速查账手册\",\"isbn\":\"9787513600569\",\"price\":278,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/70044a84893000ead47d4ce9d666c81e.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"心灵鸡汤经典全集\",\"isbn\":\"9787504460943\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/af6509108ff8c2cc619ffb43acfb69af.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"习近平用典\",\"isbn\":\"9787511530561\",\"price\":1549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/43dabc1524427024f2aa939cce3d1b27.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"黄皮书英语四级 备考2019年6月四级英语真题试卷12套超详解全国大学英语四级真题cet4级2017年6月-2018年12月阅读听力写作翻译历年真题超详解\",\"isbn\":\"9787519253486\",\"price\":413,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5ebaf80eb2825a360e220cc44c5a9b8e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/3ecdec602720152d5b7567effddeb3cb.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f76cd3398d919c2aee180163c9c44e2c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/c56051d2f93a52a9efad23a38ed56c8a.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"曲一线 53初中全优卷\",\"isbn\":\"9787554156797\",\"price\":2719,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b8253acdaedb8bbc9b9c638116943f74.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/33789be492e33b38b0ac2ed8de1c881a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/4b3e2a0639b2ac42b90e30d104022480.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"企业所得税年度纳税申报汇算清缴操作实务:填报要点和案例解析\",\"isbn\":\"9787521802573\",\"price\":815,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5ea7f9e80e8c4116f712447fac245e2e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/4856035e7dcb9c4c0f462c44853da8f4.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"大学化学\",\"isbn\":\"9787030583178\",\"price\":289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/34da216d05926472290bd49a0b54e2c6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/a1849af7d76c7f3717f826ad5b18a903.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"新版“律师业务必备”丛书:中国税务律师实务\",\"isbn\":\"9787511830142\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/915164d3facd79f9d350a2145d1fb196.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"高中语文\",\"isbn\":\"9787570217502\",\"price\":1632,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f3396bdc84c38851aaae5a09e1d311d9.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"特殊护理技术与手术配合\",\"isbn\":\"9787538127782\",\"price\":698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b4d3711c0904baf64c393250fd04ebf1.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"天上再见\",\"isbn\":\"9787539992495\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/8ee810964b51a5bb49efdcdf5a3070b8.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"医院成本核算\",\"isbn\":\"9787801571601\",\"price\":823,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/54f1d24801bd2631543d8976d9b63875.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"理智与情感\",\"isbn\":\"9787550245709\",\"price\":259,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/4566f3046fa8cb9e89eb3fa70306a744.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"个人所得税政策法规汇编大全\",\"isbn\":\"9787511890474\",\"price\":922,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/2d07f63d6d7369c6decd3320ef6d339a.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"像马一样思考:一个非传统牛仔的人生经验、领导力和同理心\",\"isbn\":\"9787111730880\",\"price\":2758,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/2ea451db9f13e429959e3225986f5e30.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":0},{\"goods_name\":\"物质极简 怦然心动的人生整理魔法\",\"isbn\":\"9787516809730\",\"price\":1243,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/34c0ce856b8dee497e7076b09ce5ae27.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"施工员通用与基础知识 市政方向\",\"isbn\":\"9787112207015\",\"price\":229,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/798a64849dd941f01654e67053693151.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"2023新高考物理真题全刷:基础2000题\",\"isbn\":\"9787302615910\",\"price\":2079,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f075560f38b8f1190939f97f35891889.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/0411e09f6850879d73238113fd058a01.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"对“老龄化是问题”说不:老年人社会适应的现状与对策\",\"isbn\":\"9787303109104\",\"price\":651,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/35419618e59da84617a6f679188040e6.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"后来,你都如何回忆我\",\"isbn\":\"9787550282469\",\"price\":1111,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/131fc003843586d23db9b1405dfa5ea6.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"球童学\",\"isbn\":\"9787563834068\",\"price\":1978,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d40a7a420b0cdc430875b1c610d8ab85.jpeg\"],\"location_code\":\"NS-B3-1\",\"inventory\":1},{\"goods_name\":\"我是刘心武:60年生活历程之回忆\",\"isbn\":\"9787201053233\",\"price\":926,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/7ba4a19131d01ef01ba6a5029a2f793b.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"语文课超有趣.作文强化篇:三年级下册\",\"isbn\":\"9787213108150\",\"price\":224,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/04689c3d54e43d87e7e5e1c0a86e032d.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"曹雪芹祖籍在辽阳\",\"isbn\":\"9787806383476\",\"price\":1286,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b4df548bceff07ad155048be0326d83c.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"人之初\",\"isbn\":\"9787550223721\",\"price\":14408,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0a2e0000af1c7abb54685fb99b8f80e9.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"叶圣陶经典赏析.藕与莼菜\",\"isbn\":\"9787535870193\",\"price\":1177,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/3afd36234d38442ca8630bfbb0c30854.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"清代帝陵\",\"isbn\":\"9787807229810\",\"price\":1757,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a1275c50090fb07ad14bc6d318aedd54.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"葵花盘小分子肽、生物碱及黄酮的生物提取研究与应用\",\"isbn\":\"9787569218107\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/7bba07480b1188a3cc599f22cc38a849.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"遍地月光\",\"isbn\":\"9787530209523\",\"price\":1848,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0301d9c76147bc1c67c0b7dde579d9a4.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":0},{\"goods_name\":\"论语英译:Lun Yu of Confucius\",\"isbn\":\"9787806017548\",\"price\":7398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a02bea4ce40823a5bf288415824eba59.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"图书馆学基础简明教程\",\"isbn\":\"9787513080866\",\"price\":1419,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/36e8ad06efdbb9fcc06a4163474d234f.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"世界数学奥林匹克经典:奥数讲义初中卷\",\"isbn\":\"9787519295844\",\"price\":2223,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6b77f6ae229fb9f6a029c5619b912f6a.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"4年级上册(北师)数学\",\"isbn\":\"9787537124669\",\"price\":790,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/111ed9e1b2b782b62a656d21dc70366b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/bcb36320a6e30004155c741c86b7b94a.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"中老年健康长寿秘诀\",\"isbn\":\"9787515222660\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a518cb1136f7c4d32bbc99d6adaf3ae6.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"经典译林:战争与和平(精装)\",\"isbn\":\"9787544714396\",\"price\":1205,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/e09d654d9f61e70d4050a4693113d082.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"解构死亡:死亡、自杀、安乐死与死刑的剖析\",\"isbn\":\"9787805928531\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/b37ca6ad5974ade7943c82b9e1cd99c9.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"兰花栽培入门\",\"isbn\":\"9787800221880\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d1d7c7b41d1b0811d82e52c2304fc8f5.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"华盛顿广场\",\"isbn\":\"9787560037745\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/e74e4fb5c24d3be6d29c43a13ef021e1.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"婚姻是女人一辈子的事\",\"isbn\":\"9787538553956\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d554f5248899920f2c2db98628b779fa.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"新媒体运营与推广\",\"isbn\":\"9787115541864\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/acd316294bc8fc9b06a15cebaf9e46d4.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"民间实用祖传秘方正版彩图版 简单实用老偏方民间实用土单方草药书正版\",\"isbn\":\"9787574211766\",\"price\":769,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/c42c4677fbcc659afc2bc048a41f6b62.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"小学生必背古诗词75+80首\",\"isbn\":\"9787549263110\",\"price\":270,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9a167087fa6d506c8757b60b8d3c65b5.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"陪孩子走过高中三年\",\"isbn\":\"9787550285392\",\"price\":769,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/14cad8465408c68ba5a010d1b79579dd.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"小红豆与街角蛋糕店\",\"isbn\":\"9787304081867\",\"price\":314,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/4cf22bb42c2d70f93edca144f3c72bbd.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"会消失的人\",\"isbn\":\"9787540478797\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/fc79deba7ce2351d3df1455e161db063.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"七日瑜伽:减压安神\",\"isbn\":\"9787538153705\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6d45513fc08f753da89922b08923fad1.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"七日瑜伽气质美人\",\"isbn\":\"9787538153699\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/54fede646a8d39f9f1e79b9ac0445ebc.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"七日瑜伽:美容美体\",\"isbn\":\"9787538153996\",\"price\":1639,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6b31add561bfa49f9f45d7a5eb3947cc.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"完全征服 Flash 动画设计\",\"isbn\":\"9787115157331\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/fa61870758219d324bf507c11bdfa815.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/cca190ba5002a3f9b7ad500faba03b15.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"Photoshop数码照片处理从入门到精通\",\"isbn\":\"9787500693949\",\"price\":1643,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f5795074c4488de66f843423aca70d2f.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"K线操练大全1:K线形态操练\",\"isbn\":\"9787546106854\",\"price\":1489,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/1641977a95a5dcf73fce4ed8fead6ad1.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":0},{\"goods_name\":\"普通高等学校土木工程专业新编系列教材:弹性力学及有限元\",\"isbn\":\"9787562927174\",\"price\":1938,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/7f7a4524228ace8f4442088b1ec8a5f0.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"食品化学\",\"isbn\":\"9787810665018\",\"price\":277,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/a030a6c91fe65d9ef2ca4b3952cbe258.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"概率论与数理统计学习指导书\",\"isbn\":\"9787109087927\",\"price\":5099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/2e40f4065408e5192972d107224f352c.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"概率论与数理统计(高)\",\"isbn\":\"9787109079489\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9be96108d172fb7059722287040f4519.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"形势与政策·四川版\",\"isbn\":\"9787514708875\",\"price\":211,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/63ff453fd7e3539e568ee0453e6f591b.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"商务英语教程\",\"isbn\":\"9787302574057\",\"price\":388,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/06f5de4bbd242fc11151c072a4bba460.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"全国中等卫生学校教材:五官科护理学\",\"isbn\":\"9787117033107\",\"price\":245,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d8daa98d5226c774994e104bd8b57d4b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/343d90e289040bbee71653d7341d5014.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/1d1efc5a4158f1987147895d3aa453ca.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/fabed095cb5a7a74343905457858447f.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"医学遗传学基础\",\"isbn\":\"9787534524141\",\"price\":329,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d3e5b1505de75a31674d05616a8ba7a8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/cfaaa24e9df4b09e80e38d5ea89ea57a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/ea7616dbf72ca2a0dd7c01f550425d1c.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"护理学基础学习指导及试题\",\"isbn\":\"9787117039888\",\"price\":4506,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5fb0ad2ffb396e6bbd7ba05e43575af1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5bdf0f78bded36744d366a0a00045af9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/11f031bc63c9c3489fc97b1bb341c80e.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"新编硕士研究生英语入学考试复习指导\",\"isbn\":\"9787810774475\",\"price\":505,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/30ef4fcaf309afb473892e84fb82db08.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/d09b56625b2962dc0bd9b9b3f8a964dd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/f5cd04dc7eb1f548354b503e6274b6db.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"全国卫生专业技术资格考试·全真模拟试卷及疑难解析:护理学专业\",\"isbn\":\"9787802282216\",\"price\":669,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/7585abfb748bd74bcc9857f2f2cd5667.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/615dc99944a9c75e9aba58de8b0569fd.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"全国中等卫生学校教材:免疫学基础与病原生物学\",\"isbn\":\"9787117033022\",\"price\":549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/f62e2faaf4b98c9bff89786f39801df3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/e87d84b74587ba9ac8e43301deed0ac5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/b55fda977f212a6b85f7103e2bb8e2db.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/63c779c91c0ba4fc9e549fc966c6370d.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"正常人体学基础\",\"isbn\":\"9787117043939\",\"price\":295,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/0a8489619644bfe4433cd033f73037a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/59d57be90e504c348ed32b53e3188efb.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/adda11557669c026ac53179539fb63c4.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"药物学\",\"isbn\":\"9787117031219\",\"price\":455,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6340f62032071b06a65b0f60d37d294e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5c483490fc233ceb31dd66d13fe25056.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/1db5f87e3c897cbf6b4678bf567fc94a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/35fb58cc992537bb5f55279ef9eafeb4.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"康思英语听力•高一\",\"isbn\":\"9787553332574\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/d9edac9b3e4b3ed766e1766ec2433f26.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/2ddd6ccbf8a9de8307960deeb7a6a9d3.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"新教材教材帮必修第三册数学RJB2021学年适用--天星教育\",\"isbn\":\"9787559058850\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/5aa3bdabb1272173764d0544005467a1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/3409922280e58d5f41614afbd5521a50.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/55827a82efbf4806d030ee649ae2d5b1.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"10年高考真题最新模拟听力\",\"isbn\":\"9787511237835\",\"price\":1501,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/896ffc0487e3049a44b488e5d8b15953.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/d72ca07e21f9ee822ad7ad446f2aa9e8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5b7e9c685153e9684da5799e5c5c8121.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"开明出版社小学六年级下册语文重点知识集锦人教版归纳同步基础点汇总手册考点总结课前预习单\",\"isbn\":\"9787513161435\",\"price\":1296,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/994590940e225d242b20763360ca37e9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/6a8cdcc24a3e9b07c18fd775e2f6e250.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5555fd79596daebf71afc082d170c853.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"教材帮 必修\",\"isbn\":\"9787559058973\",\"price\":1096,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/e57fba36212742ca37e78aea7e6951cf.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":0},{\"goods_name\":\"学前500字\",\"isbn\":\"9787531541752\",\"price\":1119,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/9e91275c8d9e8c1b4c8b6125e66cea0e.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"可持续发展管理\",\"isbn\":\"9787030164599\",\"price\":3243,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/37193139b0143b125b3e4bc57b98d5c1.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"玩出专注力·只有一个·邦臣小红花\",\"isbn\":\"9787510163494\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/6686a6c576ddfc6b7a1bade5808c8a1c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/b4402e4890f4ae124bfb3153ccfeedfc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/5bcf1043af166fc3176a9027938ee4ae.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"玩出专注力·谁不一样·邦臣小红花\",\"isbn\":\"9787510163487\",\"price\":550,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-14/c6efc794661d8506d5eb9255729be760.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/01d820e2f96a8c092cbfabb46bae9b7d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-14/7bffa860af8f669f843257b7345b3a81.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"发现辽宁\",\"isbn\":\"9787205073602\",\"price\":2499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/51bff85ee2cc50f541d62ca629856199.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-15/7457333ffcad13fdaaf03a1c868892be.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"仿妆女王画出超正大明星\",\"isbn\":\"9787122260451\",\"price\":554,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/de0f1739dc6346ddbac5a675423dcf3a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-15/95fae923105dae2fcfdb0a61cb364368.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"曾国藩成功学全书上下\",\"isbn\":\"9787801006349\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/4ae3f18d68bf7abd21df1e50fdb4afb7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-15/18bf84546e6bcd90bb01dc1bad0cd2d0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-15/ccbc374d64ddff5f805230b0be07fccb.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-15/24a47bc5090a5bead34e02f7ffff0753.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"宴遇\",\"isbn\":\"9787512679238\",\"price\":1298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/230a8baf4c5b42bd2401d98270269465.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"平常心:幸福人生的智慧\",\"isbn\":\"9787510702327\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/1321876568f32cac056e065dcd8c5eb6.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"高考志愿填报指南:高校简介及录取分数线速查\",\"isbn\":\"9787122383877\",\"price\":1180,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/613dfe183243db33d41504573a34ba4c.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"赢在转折点\",\"isbn\":\"9787511909381\",\"price\":385,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/39261870a4aaae340bf5157ce85c6714.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"斗气不如斗心:调节情绪释放心情的心灵法则\",\"isbn\":\"9787506493918\",\"price\":886,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/6aa71f44727d868bd72660013c3fd2cc.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"边读边悟《易经》\",\"isbn\":\"9787801209580\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/47bb19f0346439713ae7575788411b2e.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"好心态、好性格、好习惯\",\"isbn\":\"9787113164119\",\"price\":566,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/20dba61b1a24b127535daa15c5aa5f6c.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"身体健康手册\",\"isbn\":\"9787113171896\",\"price\":1098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/0c55adf29cd4b60b8e6c302dcc3e8a3a.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"约翰·克利斯朵夫(共四册)\",\"isbn\":\"6782316849287\",\"price\":1479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/119d3305dbde6e27e96c4c7bfafe50e1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-15/b7605101aeade06dc88689be785b5f46.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-15/da7e34ba2316b091292e1cb16833f242.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-15/d67972417c89d3fb0b5ed86bb0343bfd.jpeg\"],\"location_code\":\"NS-B5-1\",\"inventory\":1},{\"goods_name\":\"全世界优等生都在做的1000个思维游戏\",\"isbn\":\"9787511318688\",\"price\":1619,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/9f1adf3ed27f1e5f9ca4f74f8547b853.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"润物细无声\",\"isbn\":\"9787565225987\",\"price\":589,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/e1c80296d667d73bf4b6224f1724e077.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"胡雪岩/长篇历史小说经典书系\",\"isbn\":\"9787535484079\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/ebe11ada550020fd947766570174432b.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"运气提升法则随身自查手册 : 你是自己命运的设计师之二\",\"isbn\":\"9787512653399\",\"price\":689,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/a17c092c76a61428e1aba5a3b4cf8fe5.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"交响乐《巍巍太行》总谱\",\"isbn\":\"9787505983700\",\"price\":1893,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/7f9a741edd0149e194e285516916810e.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"世界弹道导弹\",\"isbn\":\"9787205077754\",\"price\":695,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/f22dec1a8d3aa0a4010df4b3366cf8a5.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"世界地图集\",\"isbn\":\"9787503135194\",\"price\":2036,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/6a3d0fdf6759f274810f5a86993383f3.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"中国志异全书\",\"isbn\":\"9787218170091\",\"price\":2836,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-15/9f07295a13f7b4d3026ae9253a009ea9.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"思无邪\",\"isbn\":\"9787020117000\",\"price\":594,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/dc50013d9ff09f9c703e2d0d0c0355b4.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"膳食(精)/古人的日常生活\",\"isbn\":\"9787576309461\",\"price\":828,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/1f9f9120a8cacf7b185e3aa15898aa48.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-16/050b8eb9d94a8ba0b9e0cceddd5b9caa.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"古人的日常生活\",\"isbn\":\"9787576309447\",\"price\":1269,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/6a7d7d981567fff350e64b93f3d8a810.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"茶饮(精)/古人的日常生活\",\"isbn\":\"9787576309478\",\"price\":628,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/3718057e04c861d1bdfe37884eee1996.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"服饰(精)/古人的日常生活\",\"isbn\":\"9787576309454\",\"price\":457,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/9365257e710ad05620bf6b3df678f01f.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"长安月下与君逢\",\"isbn\":\"9787505758025\",\"price\":984,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/6148b9d5aa7ebf9c8515faa67f9027af.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"藏在地图里的古诗词\",\"isbn\":\"9787557203351\",\"price\":2000,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/22d6ccdd2358d26027188b201d02fa25.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-16/0400c89f61e351386f0dca4a96af656f.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"奥赛急先锋ABC卷:英语\",\"isbn\":\"9787500765479\",\"price\":1599,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/dc9fa3d7ad318c99bd97e49204d3e638.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-16/eb100c5334d8523e56b687d9126a1c60.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":2},{\"goods_name\":\"净宗法语大观\",\"isbn\":\"9787802441002\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/a39dc96b440efec9288546e4438a2029.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"《书法常识一本通》\",\"isbn\":\"9787547012536\",\"price\":989,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/48fa4313461c12af14c6eedbe7647728.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"中国广播电影电视发展报告/广电蓝皮书\",\"isbn\":\"9787504383303\",\"price\":407,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/f5c3daac30454ad5650b4c977a801149.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"审计署审计结果公告汇编\",\"isbn\":\"9787511924889\",\"price\":880,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/68b455c6f74c6e84e9fb465388b4a57f.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"短视频运营实战\",\"isbn\":\"9787115554093\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/be644543ca4e3390d94c74257ede1825.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":2},{\"goods_name\":\"海子评传\",\"isbn\":\"9787538720655\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/dbd7dd68c7b5123538bb5b3185bc4ceb.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"循吏千年:百名清官启示录\",\"isbn\":\"9787205097646\",\"price\":2999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/2a81d1e21e5c54fdb1fa12c0a240696f.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"北宋辽金风云人物大观 汉朝的那些人\",\"isbn\":\"9787540219734\",\"price\":438,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/c2702883ae501f036a5e3c0ac7a0f2b4.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"北宋辽金风云人物大观 宋朝的那些人\",\"isbn\":\"9787540219734\",\"price\":238,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/477db7aa197ca50f070da0477c6b42b6.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"中国神话传说\",\"isbn\":\"9787218163406\",\"price\":3729,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/3916173efe22c27159604600cef081a0.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"猫饭奇妙物语\",\"isbn\":\"9787503037139\",\"price\":1553,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/c7d74d7157d6c115531729d05cdf2b83.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"全国博物馆通识系列·一本博物馆:湖南博物院\",\"isbn\":\"9787220134371\",\"price\":3399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/06aa4b86b04f4983bab271945b1ef91b.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"金融书法文集\",\"isbn\":\"9787505978089\",\"price\":3516,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/41cecfd4d10d06c235a3e0e1890364c2.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"西学东鉴:西方马克思主义评介\",\"isbn\":\"9787508717456\",\"price\":4919,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/d045f10eca1d3d9fa2a12c3a4a879022.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":4},{\"goods_name\":\"借鉴与创新:西方马克思主义的启示\",\"isbn\":\"9787508717449\",\"price\":4068,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/b557624d05721b80f618b7d4bd2bd0d3.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":4},{\"goods_name\":\"中国国防人力资源战略构架\",\"isbn\":\"9787508717463\",\"price\":2599,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/e6bf243c5a522a6d7014febb1f5eb66c.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"中国军人时代精神审视\",\"isbn\":\"9787508717494\",\"price\":1099,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/b0f140e3696061191bde015e1940ad63.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"你说数字我测运:百数易典·数字占卜\",\"isbn\":\"9787807298472\",\"price\":1947,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/5e7773d9c2d5212fb33349e8f1233c08.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"新东方 词以类记:IELTS词汇\",\"isbn\":\"9787553692920\",\"price\":801,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/5ff022af7d712c1fe0f736faf7701625.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"中国广播电影电视发展报告/广电蓝皮书\",\"isbn\":\"9787504383303\",\"price\":416,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-16/8034dca8df6d306270345b8eee5e335d.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"旧中国海关税务司署通令选编(下卷)\",\"isbn\":\"9787810650007\",\"price\":296,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/8ddb0913e94b134f978b77b84f7ac1a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-17/6f2788d8a3e507e9b0a8595f230652d3.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"货币战争\",\"isbn\":\"9787508608686\",\"price\":970,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/6783b6f125905678d69c8878e9ee9181.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"古韵京津——旅游随身小百科\",\"isbn\":\"9787538134247\",\"price\":294,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/9605951814e82c0bc02dba44afaba1b8.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"房地产合同范本与实例\",\"isbn\":\"9787806776841\",\"price\":1078,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/c3385f783fc7bb4a7a41299bd3f959bf.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"中共早期领导人活动纪实\",\"isbn\":\"9787801432551\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/cc89d48b11ddeb627e5ad8afccf1a170.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"浪漫北方——旅游随身小百科\",\"isbn\":\"9787538134292\",\"price\":933,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/61bc5c003433a57a49a5475261dc9beb.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"《社会主义从空想到科学的发展》导读\",\"isbn\":\"9787503562884\",\"price\":1046,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/2f16a0c879198b48a211178b34106649.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"钓鱼实战技法\",\"isbn\":\"9787205044671\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/5bb27f1f5db8165db247c5871c04a821.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"你就是脸皮太薄!:克服羞怯心理的85个实用心理学法则\",\"isbn\":\"9787569901153\",\"price\":199,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/a6a152d91c992b0e3f1fbcb1e385ea4d.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":0},{\"goods_name\":\"李智勇高考降维作文法\",\"isbn\":\"9787519451813\",\"price\":1395,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/cc6aedbdf54c00b2a0e63a31ab651027.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"生存互联\",\"isbn\":\"9787806014585\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/e3373eacb5e2fdef1285459dae52a864.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"双赢心理与双赢技巧\",\"isbn\":\"9787212016685\",\"price\":839,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/a364b8d7713a88046fae8fb064565192.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-17/bd48a127d3205275e44181d5edcd6017.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"李宁:创造一切可能\",\"isbn\":\"9787807291909\",\"price\":237,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/426e8a8c3f4bb0070b846665f4e8b6fc.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"本领制胜:改变一生命运的5项修炼\",\"isbn\":\"9787801701046\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/071a1e15a18d1800c2eb04965e23c9b8.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"眼科用药指南\",\"isbn\":\"9787122092502\",\"price\":5199,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/d651df89069591bceb4098768ff2f4b2.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"世界上最神奇的24堂情商课\",\"isbn\":\"9787121149696\",\"price\":4799,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/c5cb3fee54a8f528aa454f4783d8dd99.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"烟\",\"isbn\":\"9787806574133\",\"price\":889,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/887fbbabe743a574bb17ec60a7910e9f.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"认知驱动:做成一件对他人很有用的事\",\"isbn\":\"9787115569455\",\"price\":1109,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/9200fd02d49a1a808092a76a218a270f.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":0},{\"goods_name\":\"小小说精读\",\"isbn\":\"9787305054419\",\"price\":803,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/65039b3472d5fded1412645299bc0b29.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"这么慢,那么美:慢一点,才能发现幸福的全部细节\",\"isbn\":\"9787505735446\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/4e26dd50567fe8daa075902016591193.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"红楼梦 小人书\",\"isbn\":\"9787532244034\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/ac21eba91297e136292ed1732c150d91.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"欢乐嘻哈镇 11 智斗黄鼠狼\",\"isbn\":\"9787556811403\",\"price\":1500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/f36f9231b81e27323d50cff6b822843d.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"10岁我最大I我的妈妈是公主\",\"isbn\":\"9787531337447\",\"price\":1333,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/92796899437f51bab2f5c1812eac8569.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"10岁我最大II懒蛋老爸大揭发\",\"isbn\":\"9787531337430\",\"price\":235,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/8f243824597fc91301c9084724d4554c.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"小屁孩朱尔多·变身蜘蛛侠\",\"isbn\":\"9787531337614\",\"price\":1489,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/35f48188c3d230305b915bd97ac596f3.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":1},{\"goods_name\":\"小屁孩朱尔多·有个秘密不告诉你\",\"isbn\":\"9787531337621\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/377d364f3c894609bc0c57a63a6a6530.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":1},{\"goods_name\":\"小屁孩朱尔多·决斗班长\",\"isbn\":\"9787531337638\",\"price\":3679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/c27b3ce364d61c1d355f25aa793501f7.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":1},{\"goods_name\":\"儿科常见疾病知识问答\",\"isbn\":\"9787810860680\",\"price\":1977,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/452490b3e2e642688ff098132e130a0c.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"(14版)掌中宝—高中英语必备短语(全彩版)\",\"isbn\":\"9787551550789\",\"price\":472,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/2cec07bee25508c5e677504629e300e0.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"终极米迷口袋书:惊奇世界\",\"isbn\":\"9787115402578\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/e831af4303eb8762cc4503205762b83f.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":1},{\"goods_name\":\"荒诞故事集:耕林文化精选绘本\",\"isbn\":\"9787547000724\",\"price\":985,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/b261b49a7979ae2b5b9574a5e5dc4668.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":1},{\"goods_name\":\"幼儿社交能力培养立体屋:玩具店\",\"isbn\":\"9787556048120\",\"price\":407,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/474b2de946f6a3e68352f523b99ff838.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":1},{\"goods_name\":\"中国古典神话传说和民间故事 黄鹤楼的传说\",\"isbn\":\"9787559549358\",\"price\":634,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-17/621e3610e5402de124828b6e7253dfe0.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":1},{\"goods_name\":\"童年/教育部统编《语文》推荐阅读丛书\",\"isbn\":\"9787020137398\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-18/6ac5a88c79996815d14e377f5f29c113.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"小学生作文500字一学就会\",\"isbn\":\"9787513815482\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-18/bcecc6e44b38202329a17ddabff675d4.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"做个懂事的男孩\",\"isbn\":\"9787506489942\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-18/848192a39e0b3769d6a25942014cce6c.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"药物基因组学与个体化治疗用药决策\",\"isbn\":\"9787117237345\",\"price\":791,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-18/a9192db058cf4249fb612c7cd1893ad1.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"零基础素描完全入门教程:轻松学素描\",\"isbn\":\"9787558067952\",\"price\":400,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-18/03c671df29792c655eea9a5a85edec6c.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"食物相宜相克2000例\",\"isbn\":\"9787501997411\",\"price\":970,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-18/8bc140a7fa518c3819c95f24b90c811e.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"英汉词典\",\"isbn\":\"9787119047256\",\"price\":1503,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-18/59a3de4af3e2a6ba3151eaed8fdfaeb1.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"我爱唱英文童谣\",\"isbn\":\"9787545060607\",\"price\":1682,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/75a7cba9211ed4f4d661e7078a9ac9b3.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":1},{\"goods_name\":\"迪士尼明星益智拼图书—和米格一起去冒险\",\"isbn\":\"9787556834181\",\"price\":1088,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/94dd1470bc63a23ab12624fd0dd7179b.jpeg\"],\"location_code\":\"NS-A3-4\",\"inventory\":0},{\"goods_name\":\"乱世佳人 上下全\",\"isbn\":\"9787532719143\",\"price\":600,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/77619a7171953002a5055ee44282a5aa.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-19/9dd9d8f832ffab59649dcdb9c3055310.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-19/84b7ee54f9036faec848243ccddd01a0.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"男人的超级幽默\",\"isbn\":\"9787502821852\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/a4a1727a0b157011c90ccaf5edc38c7d.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"邓文迪:女人明白要趁早\",\"isbn\":\"9787512646131\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/0049b1c300bcbea1f4008e7cdf08900a.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"大话红楼\",\"isbn\":\"9787535431820\",\"price\":844,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/e5299ca6079046439d49fbf308b0dd21.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-19/945088c067f57c8d7f054dfbe9473a84.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"老麦咖啡馆\",\"isbn\":\"9787508636566\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/c798e8f108c89ca9eb22d5d8ddb17869.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"黑梦\",\"isbn\":\"9787507516685\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/40af39b0c1ac96649ad3cdd905f9f210.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"图说老年生活:画册\",\"isbn\":\"9787208023789\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/44c6b44b7c14507c81ecfa1f376fb18d.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"现代家庭医生\",\"isbn\":\"9787544108157\",\"price\":1499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/8dffab123d97192c912e3c82c62ddee1.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"地狱的第19层\",\"isbn\":\"9787806796771\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/3c1dd14e5463b9ef7e1c59740ab066bd.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"心灵长城之歌:古代爱国诗词学习笔记\",\"isbn\":\"9787805667720\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/3b6675f665632387fae2905dd7cd464e.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"龙票\",\"isbn\":\"9787535427618\",\"price\":769,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/ca2c55dd403d009c6514a2a04ffdc038.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"沈阳百年:1900-1999\",\"isbn\":\"9787544113496\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/057723daeb6348fdcc0f6882d08bfc1c.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"格列佛游记\",\"isbn\":\"9787544710725\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/2a10d5a9fdb9e71660d7572a4b767483.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"老新闻\",\"isbn\":\"9787801420893\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/5d9b5e71bd20a10de7b871982260a056.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"股功诀技\",\"isbn\":\"9787806329825\",\"price\":373,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/9ce11bdcd6b40bd942f2c9e66fbdbef6.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"遇见未知的自己\",\"isbn\":\"9787540475017\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/ff2b31a6073fced4a7f76d79b17e4581.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":2},{\"goods_name\":\"企业国有资产法理解与适用\",\"isbn\":\"9787509308165\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/3e4cb15cba5de9daa0a20592c5505fd9.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"选择的自我-一位哲学家眼中的人生\",\"isbn\":\"9787200028010\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/3d120293bc768937417c888c093a701a.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"新概念英语4:流利英语\",\"isbn\":\"9787560013497\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/716e4f1fd08543f036bc0bbfed399cf4.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":0},{\"goods_name\":\"儿童心理学\",\"isbn\":\"6785721237852\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/7cfe007d052801f6ae38190b0b07f376.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-19/75adc631ea2ca74b3f6d24fb857b3e6a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-19/305b92d1321b4590df2e9a0ef6e45877.jpeg\"],\"location_code\":\"NS-B5-1\",\"inventory\":1},{\"goods_name\":\"红楼梦诗词解析\",\"isbn\":\"6787679217542\",\"price\":949,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/e3808d143950a3ab1c99b61434dd4c1a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-19/cbe3117129b5fa80e45d8a2d46f73ab4.jpeg\"],\"location_code\":\"NS-B5-1\",\"inventory\":0},{\"goods_name\":\"新概念英语 新版3:培养技能\",\"isbn\":\"9787560013480\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/00dea331349cad1882db57436f710a44.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"天艺·木纹图典\",\"isbn\":\"9787531427940\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/023fafeab1a31fc30a1e128a45121779.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"新四大变化:花卉变化\",\"isbn\":\"9787531423430\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/f3b9720cbc42ebf8140426c66904e37b.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"新四大变化:动物变化\",\"isbn\":\"9787531423447\",\"price\":1408,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/d70c78d371a9815b55154c834f586dc0.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"天艺·水纹图典\",\"isbn\":\"9787531427933\",\"price\":1428,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/9eb88c4f2a2f53771bc2d9a2680aaeff.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"天艺·冰花图典\",\"isbn\":\"9787531427957\",\"price\":409,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-19/59bf25c2217d1c9ec854d12cb0c28ba9.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"故宫日历\",\"isbn\":\"6789656882318\",\"price\":768,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/37e21566a01a1b5491c9193933f76249.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/81306d426d4285a1c2a8f2624f7c7216.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/e70fb4f30de6cc892abf2f01c0ade323.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/a46b61aca277e981cce9b9a1541a6030.jpeg\"],\"location_code\":\"NS-B6-2\",\"inventory\":1},{\"goods_name\":\"故宫日历\",\"isbn\":\"6784528974953\",\"price\":634,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/f648a9d72e4036e24cbd871aa43169b1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/a3c77cb9f9abd36a246b67c2d3260dee.jpeg\"],\"location_code\":\"NS-B6-2\",\"inventory\":1},{\"goods_name\":\"小学生作文实用技巧一本全\",\"isbn\":\"9787544173018\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/387e438ee6092a242ceac84c77127281.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/b3068a088939b98d283ecc67b24c8c7f.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"红色通缉令:长篇小说\",\"isbn\":\"9787311024253\",\"price\":218,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/59369341aeb1d3c0eed84e6f94830e8b.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"长篇职场商战小说:首席执行官\",\"isbn\":\"9787511301420\",\"price\":459,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/b3d2a8a20badcbb754b2ab3c7d33db0b.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"单面人\",\"isbn\":\"9787807129851\",\"price\":1419,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/6231d517eb6f5e4d3ae4f31d3b899b9c.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"电动自行车四大件维修速成\",\"isbn\":\"9787115165022\",\"price\":2499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/a93fdca6183764d92e41a57142a6ff4e.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"临床药理学\",\"isbn\":\"9787040279009\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/50f3d9b96ca9f342fb93cdb593cf0206.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"内科学:供8年制及7年制临床医学等专业用\",\"isbn\":\"9787117069069\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/274a7e826a90eda56613915683e9d8db.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/cb65cd07cd4b555ccc45ef061a5957e1.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"劳动法律实用大典\",\"isbn\":\"6784298317994\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/7ea901e33360576f7b9969a971710f9b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/88f5c14de1357bd84df2555c05e80c37.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"中国共产党 90年\",\"isbn\":\"6784018073627\",\"price\":2249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/ab274fefe74887f2288557bed7c76485.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/c26b78510bd1ee25d63a7214d33eefe5.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"辽宁省志.广播电视志\",\"isbn\":\"9787538128055\",\"price\":4019,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/bc7b04ef5b22e277f5732c99e4f6c1e7.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"辽宁省志.出版志\",\"isbn\":\"9787538127560\",\"price\":2308,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/24bce0ba47ead163d72c3c820ac152a0.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":1},{\"goods_name\":\"爸爸妈妈,这就是我自己喜欢的!\",\"isbn\":\"9787521713695\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/b5d5dc839d68c9299065532123d47cb6.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":0},{\"goods_name\":\"幼儿心理安抚绘本\",\"isbn\":\"9787508688022\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/22c1c866e93251038d2922f7da4cdfb2.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"爸妈不是我的佣人小熊孩励志快乐读书彩图注音版一二三年级老师推荐小学生必读课外阅读儿童文学\",\"isbn\":\"9787557022303\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/3560e6ae304bb21015c2fc9ef4b07991.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/1ed335174628bb050cd3113cff24e305.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":0},{\"goods_name\":\"诺贝尔幼儿科学馆\",\"isbn\":\"9787556407002\",\"price\":880,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/86cbb49edf02050f6cb84374121cd67b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/0b59dbf009604e9bb86a46a3a1de76b4.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"牛虹\",\"isbn\":\"6783610146521\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/755e86e38bd3c690faba7a459e445092.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/7820cb9cc61ecbfc0c4bca6db83083ef.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"长江之歌 胡宏伟作品选\",\"isbn\":\"6786185614512\",\"price\":2279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/012c9581f3e055215a612e510a720890.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/424458d19c195d7c7dd320bc8f9fa7e3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/2e64b171282bd04d96786fd3893c7726.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"清朝开国史研究\",\"isbn\":\"6789508010975\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/c25809b085c000fbc379cf3f077dc4e4.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/e5306acdf0898224f683ae1d5ac066ae.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"后水浒传\",\"isbn\":\"6788956044788\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/9e7c64ebf140bcefcf2b54e0b18ce1d1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-20/b788750ba11db1a4d07d46d9fd0cbd69.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书 1\",\"isbn\":\"9787535882011\",\"price\":199,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/08c5f35f43aff7001199c563d72d61a6.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535882004\",\"price\":199,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/764b296b8f788b4c9638407271095386.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书 3\",\"isbn\":\"9787535881991\",\"price\":199,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/25da594e42ffd8b5f17d9621ba435134.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"儿童百科全书\",\"isbn\":\"9787535881984\",\"price\":199,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/1468fcb197d8eb4a5ea6b79c9e8b01a7.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535881953\",\"price\":201,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/16f53648ba6019b933b38300f316d6b9.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书(9L)\",\"isbn\":\"9787535881915\",\"price\":199,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/4d77c01eb91b60e7f80c4742bbeb8cce.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书 8\",\"isbn\":\"9787535881922\",\"price\":199,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/bd7e0f325251ab1488d59d371c81cbd1.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535881939\",\"price\":202,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/bb4d8cf93173966c608b34de164f90c2.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535881946\",\"price\":195,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/b7dd2c1b0bb5b69001cd91d52edc5e44.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书 16\",\"isbn\":\"9787535881854\",\"price\":199,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/773e7c2709d8219be115b6696f36440a.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535881861\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/7ec03908be25fba72d873c78ffda27e1.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535881885\",\"price\":208,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/8fef01979fc05845cf334653c7a2eec6.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535881892\",\"price\":207,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/979c4619a02f6cda4f254905abc103e6.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535881878\",\"price\":199,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/ab825eda1446ce8852e88995fe888066.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"大英儿童百科全书\",\"isbn\":\"9787535881977\",\"price\":193,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-20/2ca6422d4ef53a5306fde3782b3bd67f.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"沈阳电业局志\",\"isbn\":\"6786656153067\",\"price\":4149,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/3670e4f41dc476cf31efbeac6b736081.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/ce12545c7a809de51e5132f8b91b0ed7.jpeg\"],\"location_code\":\"NS-B6-2\",\"inventory\":1},{\"goods_name\":\"小花仙魔法换装PARTY:智慧露娜换装\",\"isbn\":\"9787535387172\",\"price\":3599,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/357dfbe8a5a65c2bf18a7907827414f9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/ffbabd20cf81f9ce820616e378319267.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/5171b2f43f74187ab39221685875bcdc.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"旷世名典全套\",\"isbn\":\"9787801462909\",\"price\":63399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/5273fc2a831669936e5c301081f7b7f4.jpeg\"],\"location_code\":\"NS-B6-2\",\"inventory\":1},{\"goods_name\":\"魔法学校2\",\"isbn\":\"9787531337485\",\"price\":397,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/6b50d02c13fcbde4fb55586c3ca139f9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/0cc3483bbdc1c95152774d882749f6ff.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/aa2ce643f7aaac20832c4204c788efda.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/b26bd05d697163de074875e12e06896e.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"家人营养食疗\",\"isbn\":\"9787806396117\",\"price\":3297,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/164d9d6c8eb00d9de5bdf28678d01295.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"#张韬书法篆刻中国画作品集\",\"isbn\":\"9787538233353\",\"price\":286,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/7f76647f24d74147f2412638c30f81ef.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"冰波奇妙系列——毒蜘蛛之死\",\"isbn\":\"9787531570561\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/6ded0d134da83c0e5600b642670b72bb.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"蠢人蠢笑话\",\"isbn\":\"9787501523610\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/890ca290469dfe1fc569d8ec857082c0.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"电动自行车四大件维修速成\",\"isbn\":\"9787115165022\",\"price\":2549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/db4907485c9b0731ab1fba7d646e35ee.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"我叫刘跃进\",\"isbn\":\"9787535435811\",\"price\":569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/ca8af3bdd814751ed1369a9b2f5acc31.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":0},{\"goods_name\":\"情商这门课,只能父母教著名教育专家唐雯倾心打造\",\"isbn\":\"9787559471918\",\"price\":1228,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/bce23e8d6d322bf1949d7276b09395bf.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"电动自行车蓄电池使用与维修\",\"isbn\":\"9787115162069\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/de1916f364a7f22010fbc46cab362d7f.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"动物探索\",\"isbn\":\"9787517002369\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/ef0b63f4ea86881aeca1087c7104dd6f.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"自己动手装修住宅\",\"isbn\":\"9787112035830\",\"price\":1575,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/589a34047c3b13e96f0c9e4002446ee0.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"罪行与宽待:原日本战犯反省绘画集\",\"isbn\":\"9787554907474\",\"price\":894,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/26040b3ce8bafed3bd6e4e058a236e39.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"儿童习惯管理与性格养成绘本:愉快出行\",\"isbn\":\"9787518071876\",\"price\":2286,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/19b166a0d4b8e2957f3517299027ac5b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/239d85137c66098d7e3b16b2f38f5697.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/b9c89cabeb08a97016b4dbcdcced31e6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/ee4cfe5f1ca06e0328dfcab0d11587ef.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"消防安全我知道 交通安全我知道\",\"isbn\":\"9787518071746\",\"price\":689,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/026e68afac4e6dc6f49199c4edcb4df0.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"走过半个世纪 笔会文粹\",\"isbn\":\"6784964883226\",\"price\":529,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/9f1188b899ba8430414e4dbc3262a3a1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/add22ddb29701e91e096c9a8a6fed094.jpeg\"],\"location_code\":\"NS-B6-2\",\"inventory\":1},{\"goods_name\":\"马克思生平事业年表 1818-1883\",\"isbn\":\"6789326051468\",\"price\":1281,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/029d8ed761a4b509ce9df36d3b2588de.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/ef8e81f8168c31e462c10f1bf5df80a1.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"约翰·克利斯朵夫(共四册)\",\"isbn\":\"6786305075125\",\"price\":1698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/99786fbb9dea41125be02e9a4d22839a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/c3031d22b768875804e2d26917be677f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/e4e73813c8245770d51557736a3deaca.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"青年无线电实用手册 吴志功王昌辉耿文学\",\"isbn\":\"6780772836559\",\"price\":959,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/c168b9611e929298f0a811940fa344ff.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/cacb2af75bc7e69e026c1d96679ee7e4.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"红旗飘飘(20集)\",\"isbn\":\"6788299759764\",\"price\":289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/a8b0fe5f8cd217618710e9ba4dc844f3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/919b7cc44f41a2abd2517dd53ddf8c49.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"三种命运 [苏]安娜·里凡诺娃\",\"isbn\":\"6789962038808\",\"price\":1590,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/e1c02993b7915f351782e7322d00bb8f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/4344738c788d2de0f12d64cd5a82451b.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"明史通俗演义上、下二册\",\"isbn\":\"6782244664645\",\"price\":1798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/74e5bfe3e6f951ae0a18e2161ca8f676.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/ec3a951efb811b9eeabaa3a6a2d2637e.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"后水浒传 青莲室主人辑\",\"isbn\":\"6783393996030\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/6b0d91491c1434491eb4dfc98c08651c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/fd36a633b8e06e54854844d8c52fc732.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"清朝开国史研究\",\"isbn\":\"6783864193451\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/62ae19a20659d4783ffaa0267444d969.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/6a2f790bd2f3438800da318141544873.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"长江之歌 胡宏伟作品选\",\"isbn\":\"6789608069983\",\"price\":2286,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/52b1aac69d41095a3bde14225ac7a589.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/fa85bd8aeafcd811e41de505fc575b45.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"成语典故 (增订本)\",\"isbn\":\"6783136830573\",\"price\":1482,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/a7bdce180bf67e776746c3100d3ad121.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/55e24cc59e5d7cbee7013242510e08ff.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"面相与医疗美容\",\"isbn\":\"6788320343740\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/09a9175a4df09f0eeede787c4a890c9c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/63b26273e9a8fb0cbe55f54fbb86874b.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"简明中国近代史 张玉春\",\"isbn\":\"6787720967525\",\"price\":759,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/60bf35f5ee7fe5889a9e7aa9f3c21b00.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/964624e205cfacb3259feb3eed88eab7.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"鲁迅杂文选 复旦大\",\"isbn\":\"6787930128175\",\"price\":1599,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/a5c7c247b4d2de519225116934652bfe.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/37cdf49a0cd9a8ab29e9ced617e1aa5f.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"巴金选集·第七卷\",\"isbn\":\"6788831377444\",\"price\":1647,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/444b06db4d5d515cd089948e58f3d049.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/601afa7fd6a8c94231c7338d21d909d1.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"徐懋庸选集·第三卷\",\"isbn\":\"6782472950026\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/e09a903c5db36a5fc0626f824ac4fbc8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/043d5122f29a95a3d61960995d8661a3.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"靳以选集·第三卷\",\"isbn\":\"6783963257677\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/e75c10c125a088faa8bc1b3f0f849fec.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/8e886727b6917e10e5013dd759891c1d.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"儿童习惯管理与性格养成绘本:培养饮食好习惯\",\"isbn\":\"9787518071869\",\"price\":382,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/df4d5fafe49ed270614dcb5892be0cc8.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"儿童习惯管理与性格养成绘本:培养饮食好习惯\",\"isbn\":\"9787518071869\",\"price\":389,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/ef67c03eebdf43a7a20727f86e4926d8.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"靳以选集·1-3\",\"isbn\":\"6789427245093\",\"price\":11877,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/b7782d1f5436798cd8a73b0ed9f7cecc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/62b94e865166b18a7d7526c9bbc5e5e4.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"儿童习惯管理与性格养成绘本:快乐成长\",\"isbn\":\"9787518071814\",\"price\":988,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/fa08d3f9f11f8a806e5bb2578d06fd80.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"金陵春梦1-4\",\"isbn\":\"6785479953059\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/b149b0e1d0ba79b7ea1f055e4f88890a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/d4dc325bd780331fcf0e1f2553eb4f93.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/278a7b59a64f9e5194840284eee77021.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"金陵春梦5-6\",\"isbn\":\"6789589552865\",\"price\":2399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/0b2243fce82520a45e7d5f80c55fa89c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/d62e84d83edf46ee76a5492df46e8d46.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"007全集1-4\",\"isbn\":\"6784461636309\",\"price\":10199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/d40762e2145261b1c89d6770efba2507.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/dec2b91aab4c3fefb129acd949d0cbc0.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"我的奇妙之旅\",\"isbn\":\"9787555705376\",\"price\":581,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/4505fcee73f7dab30884eb33f44af71b.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"西医学习中医教材 中医学讲义\",\"isbn\":\"6780862073655\",\"price\":1798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/6aa405171a06e6dba42038ec802642e8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/7b295406759171118ef8346468dcfcf3.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"金庸鹿鼎记1-5\",\"isbn\":\"6784661894194\",\"price\":2399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/08ed3d7fa049c3f96cabaf267be00ec7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/c193baed838fed9645ea4a3d8ac96e10.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/528182bde8de338d3c94f69be665df28.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"洪门传奇上下\",\"isbn\":\"9787806052303\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/da95bec11952e3a87931315825141dcb.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"上中下饮马流花河\",\"isbn\":\"6782026147277\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/f6159176e5ced20607db20386c77b081.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/8bc839538a47ad2be7177c8a61d2b491.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"绝代双骄1-5\",\"isbn\":\"6784161898769\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/21947f7454b412654e785a22ccafb7e9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/ad73d27120f0e1c1e774321c8a12cbbc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/df7ab2f09b9b03cf2f9968c98a4007fd.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"荒野游龙(全两册)\",\"isbn\":\"6786688783884\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/cb1f1cdf6d2ce826e250aa927f7a6997.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/9a07be55b481f614d13165e4e9588bf1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/6564bfba5e21039ecfc1661560ae61de.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"小学生作文起步\",\"isbn\":\"9787553647913\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/815c4e7eab56bab412599ae07839bbab.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"选股高手\",\"isbn\":\"9787806327364\",\"price\":217,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/4b3f17861eef909e986ff533ec7da3af.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\":药理学\",\"isbn\":\"9787117089050\",\"price\":488,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/486de9fb76bc588f4b93e9c2d1c07737.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"实用抗癫痫个体化药物治疗手册\",\"isbn\":\"9787533774035\",\"price\":6970,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/06ea6c935fa02d679cb0de7c153295b1.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":3},{\"goods_name\":\"四五快读\",\"isbn\":\"9787535764249\",\"price\":409,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/32a1951af1d4bf5c8616db35a59b6886.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/fcded0ddf918c4ccebef91b0012de431.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"新素描表现实技\",\"isbn\":\"9787531410546\",\"price\":229,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/8b5654c9b29b2cd76a05485511c4c023.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"实战技巧精粹:Excel2010图表\",\"isbn\":\"9787115335722\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/aa22db44f772eddb2223dee1a6613e13.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"四五快读\",\"isbn\":\"9787535764287\",\"price\":1063,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/d0d71141dec708190c5aec6d344ca367.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/0ab6afc3dfd098f2e86f6511adfd25d5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/a8f83581b4052700ad8465b280946672.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"四五快读\",\"isbn\":\"9787535764270\",\"price\":886,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/f8814af6dd616dfb131c60120d7c0b96.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/b2a8efc89c5b289ba7c381a7fa871169.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/bc059b6f1d7b7a99c74bf182435113a3.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"四五快读\",\"isbn\":\"9787535764263\",\"price\":426,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/b8b419610741cb4a5ca6990022060924.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/030c93571b65dac86549899b31acf25a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/ef6bd8711374e331b07fae2fb41df1c9.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"四五快读\",\"isbn\":\"9787535764256\",\"price\":970,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/1559fa13b879bc6e606ce8b1866f7aa0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/c62743d895fa1aa996c78162c8494ced.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/811372efaefa5da444647be9e1d0bd11.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"四五快读故事集\",\"isbn\":\"9787535766229\",\"price\":303,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/2b7b97411cd22967a97385c5cd6ff25e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/a514c08ba14a01273d5df1398c6e5854.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/1a22776f9f9debd53639fa9e65688b96.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"土建工长(技术员)培训教材 建筑施工技术\",\"isbn\":\"6785431430501\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/85e553e8652d55f2defc204d0bdd5433.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/20255ea9c831b9fc4e3732cf4f8f4b7b.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"汽车嘟嘟嘟系列:快来!一起盖房子\",\"isbn\":\"9787544830461\",\"price\":518,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/2f3ea55065334a1ff992462f0607b5d6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/3aaaf718f5cbb89cab7ec61e4b299164.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/709e2d1d6072be3a223ce733724445d3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/cf958607f429d4fea6235304276a4eb6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/427bef1436721282e399043839f1a337.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"我的世界建筑大师恐龙\",\"isbn\":\"9787115551597\",\"price\":1232,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/280a7b27b787bacb8bf37af1c88657da.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/ab6969b474cbfb708eba5cd894ac259e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/5a7c5f4964a8ee04d83c13faee307cc2.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/c554813c7352bdceee7a0c7c54fd8f56.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"微童话-小青蛙捉星星\",\"isbn\":\"9787531361954\",\"price\":407,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/76154c0a8311023bd9e5b87d1b2c244a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/8e18f4e7a24bda18242b480b1af8ae01.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"中华皮肤性病学博览.第一辑\",\"isbn\":\"9787538123876\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/be546b52450c95b646795dc0de1fbafb.jpeg\"],\"location_code\":\"NS-A5-4\",\"inventory\":1},{\"goods_name\":\"2025考研政治肖秀荣背诵手册 可搭肖四肖八1000题精讲精练\",\"isbn\":\"9787040610741\",\"price\":325,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/fb2aff4db0f0968c7f1578d213bf18eb.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/f66f128c2ce4dedfe12444210da4da9c.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"我的千岁寒\",\"isbn\":\"9787506339223\",\"price\":498,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/0a3b4c1d4d1a90b5aa062d13e49b67f9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/aaca81170c411bd03765bc25bdf4cb9f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/411a046bff5063ea9307d704c6ce2244.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"三体\",\"isbn\":\"9787229100605\",\"price\":988,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/a054a32233de2b8240016c3bf5e8ec11.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/68838edab0edf78efc4bc503257f4bdd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/e653c7d5fa19f7b4d0e030af98c9c40a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/e5d51f4cfb05b306909f82feff33a38d.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"中国学生成长必读丛书-海底两万里\",\"isbn\":\"9787511015037\",\"price\":390,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/5307145f511252ae64be0d27c833c852.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/a7dc007aaabcad12c4b5e129fcd1d8d6.jpeg\"],\"location_code\":\"NS-B3-2\",\"inventory\":1},{\"goods_name\":\"图说辽宁朝鲜族\",\"isbn\":\"9787807226000\",\"price\":720,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/52bbb05640dfd7e4c230b001fdebf114.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"背景(上下)\",\"isbn\":\"9787805957814\",\"price\":324,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/8044664c5886c8274af4989df88056d0.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"二战全景纪实全\",\"isbn\":\"9787800749711\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/1cad5525b674e620123dcaa18d5b7c6c.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"中学生 国际国内\",\"isbn\":\"6786979534194\",\"price\":749,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/0053264aa67ad490b416681a76d8c06e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/16382b1d6de20b16dba150acba3d9ffd.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"长夜随笔\",\"isbn\":\"6788347406580\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/9a130f986c98fec5adb435e1f8fee100.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/07f6d88c29d82c204a704885ca087d69.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"王天一传记文学选\",\"isbn\":\"6789187390222\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/f2728c7f80e744e436ecaa8ef32c75b6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/9500c6aa6ad2fa8ac810beb80e755ee8.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"生病原因知多少 家庭防病手册\",\"isbn\":\"6789470932784\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/c5b69e42e098c489479aa2ab264c4b5c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/a741d83c9f57f21049a9f7464ee5d3f3.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"七杀手\",\"isbn\":\"6781828411236\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/90380eb583d7f0768c6c01e4a787653c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/1b5f9ec2ed5be6869bd1bb3b09976756.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"坚持四项基本原则 反对资产阶级自由化 百题解答\",\"isbn\":\"6784110695072\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/addeaa7346fdc4d5abfa680d50b84b14.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/b2a5869dd1e432754ac5f5c5e67decf7.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"星火燎原\",\"isbn\":\"6781324492610\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/586162dac83f2040a66b9acd16927030.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/51e93d4ba06039fe7184fd6847140246.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":0},{\"goods_name\":\"昭示:中国慰安妇 1993·跨国跨时代调查白皮书\",\"isbn\":\"6787357200941\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/59e29aeac2131ee9bfc6610c8491976c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/8765db7851ba278467c54d3ea388ee76.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"方洲新概念·特级教师教你写作文:四年级\",\"isbn\":\"9787513806428\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/fe39f0b6dfb713bc2f7448a684aa1c8e.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"小学生词语手册\",\"isbn\":\"9787806482544\",\"price\":665,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/a7e3a20822f354e196fd7d0f51276286.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"红楼梦\",\"isbn\":\"9787538289145\",\"price\":1499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/951d050eca5df793f3279dc18055d84f.jpeg\"],\"location_code\":\"NS-B6-2\",\"inventory\":1},{\"goods_name\":\"中国古代史常识 (专题部分)\",\"isbn\":\"6780597529095\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/d2b02428b71bd2168e5cfd85d78b4e60.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/bbdbad306182569131698a2d17ae6dcc.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"实用法律手册(注释本) 李盛平\",\"isbn\":\"6786820354373\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/f312961fa46733915df43c29527d96aa.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/abd03772697b36ed57bb39b7391b73c5.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"世界华人新兴富豪\",\"isbn\":\"6781707488224\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/75e69e3219f7744c177dd64189e38d63.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/75d242734795af314aa6f20ded66c366.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"世界华人新兴富豪\",\"isbn\":\"6781760753904\",\"price\":808,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/6a7cbf2844b6ceeeefec7a05f3158745.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/b7bd071b1eed2c21abb7db5f28ee7a96.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"三十六计及其妙用\",\"isbn\":\"6788055031627\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/b257c84389a090a58609606705928f4f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-21/a183e44019ae60cbb5ec2bcc5a451152.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"白癜风与黄褐斑防治\",\"isbn\":\"9787508232867\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/0bb15c1e67c20ae54dddb3e68118f804.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"顺利度过更年期\",\"isbn\":\"9787502523756\",\"price\":4299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/33f92f2bc49465c763df13f2cd76c8c2.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"得了前列腺疾病怎么办\",\"isbn\":\"9787538834840\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/c162e3bd8337e24c198afbe42985e98a.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"临床常见心律失常诊断与处理\",\"isbn\":\"9787810860109\",\"price\":1898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/4fafdaf7e40a7837e8d2f2c450caf00a.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"妇女更年期疾病防治100问\",\"isbn\":\"9787506235853\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/ae55545d8cb391c3fcce6731cb68b94e.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"常见病的中医特色疗法丛书:头痛\",\"isbn\":\"9787537747271\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/84db468890ec31342127b89f4b256921.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"现代中医诊疗手册·肝胆病手册\",\"isbn\":\"9787117063715\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/9a79162842421e0fa56a71b654cea88a.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"2011事件·作品·评论:上海文化漫步\",\"isbn\":\"9787549607006\",\"price\":1273,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/db09f2640230430ec5ea7ebd7b21a4dd.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"军机迷\",\"isbn\":\"9787535326706\",\"price\":630,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/381cda3b773888cc4f1e988cfafea7eb.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"导弹迷\",\"isbn\":\"9787535326737\",\"price\":1153,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/68445a2a9be47deb15de7e69a252bc6c.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"雷锋在我心中\",\"isbn\":\"9787810584371\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/50fae37fe0d323f2cdb7f6eaa3f6a2cf.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"漫道风雨\",\"isbn\":\"9787805668833\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/27a1c317e20c96c9067c9dc3759647a2.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"国际贸易/全国外经贸院校21世纪高职高专统编教材\",\"isbn\":\"9787800049750\",\"price\":1198,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-21/291e51e93fd40c874e74d815b5515b4f.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"罪行与宽待:原日本战犯反省绘画集\",\"isbn\":\"9787554907474\",\"price\":891,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-22/3f263afaf4b45cbd5788c1b56cc9014b.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"汉英医学略语大辞典\",\"isbn\":\"9787543327511\",\"price\":4469,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-22/acbc8bfe1e6998cfc6b575fb66785308.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"数学教师教学用书. 三年级. 上册\",\"isbn\":\"9787303147236\",\"price\":1757,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-22/2f644f9c263a1f355f00d4599219b164.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"数学教师教学用书. 四年级. 下册\",\"isbn\":\"9787303182695\",\"price\":1868,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-22/0cc900a296d9153d7a09501c2a140945.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"辽宁期刊史\",\"isbn\":\"9787205071844\",\"price\":2308,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-22/e07d03827e64f27eb33d55037221d432.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-22/475dcf9995115c414f7bb5522a09496f.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"古诗文词语纷议辩析\",\"isbn\":\"6783148682314\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-22/573fbc5447faff10b2796e00cedffeb9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-22/5c9af3963e7c9edceb1ec8cbf7d96eeb.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-22/b66ccfcc37635d3095c865185ed90971.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-22/7ec554aba9e09403dc0f93c12303b598.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"同在高原:怀念孔繁森\",\"isbn\":\"9787205036300\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-24/4e77e063993f0a5e13b3d211bcfe9a00.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-24/4e77e063993f0a5e13b3d211bcfe9a00.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"名家仕女画艺术\",\"isbn\":\"9787531426301\",\"price\":2308,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-24/9f4481ffb9247d5bd35fba11cfe55453.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"图解小穴位大健康\",\"isbn\":\"9787547008287\",\"price\":1061,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-24/a5c7ba1cc1103bb56538c6d08a6cc2e5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-24/8d517337497a655a966493ae675f4f33.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-24/7ca74fe386064b4013097d81f7c8a4e1.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"图解拔罐养生智慧\",\"isbn\":\"9787505420038\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-24/2d1508fc7b351197143d4dab5a6b708a.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"实用抗血栓个体化药物治疗手册栾家杰主编安徽科学技术出版社9787533769420\",\"isbn\":\"9787533769420\",\"price\":2834,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-24/b831632cacc2f19087193cabf71202e3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-24/489d45325962282f725450cbf71e67f1.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":2},{\"goods_name\":\"无价 美国医疗危机的根源和出路\",\"isbn\":\"9787543235601\",\"price\":5077,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-24/fd867aab31fe69a84e311560239de364.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"拒绝伤病跑步损伤预防与恢复指南\",\"isbn\":\"9787115497574\",\"price\":5099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-24/089e5140110d166a8eb7d41036b367be.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"玉文化研究新视野\",\"isbn\":\"9787550514874\",\"price\":6708,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-25/6452d7db4702d1fd5d5decdf0a2ee291.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"中国古代神话快乐读书吧四年上册课外阅读(中小学生课外阅读指导丛书)彩插无障碍阅读智慧熊图书\",\"isbn\":\"9787100186247\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-25/f8afa4686113d47addcf1369c47efcb6.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"革命烈士诗歌选读\",\"isbn\":\"9787020137787\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-25/211d2fa468377c7bd4285773ee176b50.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"师道弯弯 商国华 沈阳出版社\",\"isbn\":\"9787544183024\",\"price\":3134,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-26/49a906e4487ef8a9b30bfdd6b33bac82.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"古城春秋\",\"isbn\":\"9787544147521\",\"price\":1998,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-26/1bf7f95b07821525e86f740074414f52.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"新编学生字典\",\"isbn\":\"9787539276533\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-26/38d7137f80cf468c9817dec27892d8f3.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"古代汉语习题问答\",\"isbn\":\"6784121840541\",\"price\":1098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-26/bcfbd8d83783403c8f63ddf9f7bc553e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-26/d529b5bf54fdbbe26562e0ece1a581a2.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-26/4c06ed1e4478fa66558dc4d306bba650.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"三维设计\",\"isbn\":\"9787030518804\",\"price\":1569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-27/944a6a746b2db07b8c6d65eab5150fb1.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"了不起的安徒生\",\"isbn\":\"9787208137417\",\"price\":4499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-27/eb8cfaed30f8e5dc8e6a52f73fb046a0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-27/0e2d64fd53a531130d1aacc40f71e45c.jpeg\",\"wxfile://tmp_9b10d5624f61b8017fa60703ac4c8d18.jpg\",\"https://img.pddpic.com/open-gw/2025-09-27/a5054f8c2fe67810910bcad332eeae64.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"慎思集.续\",\"isbn\":\"9787531323297\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/2faa163ba99bfa0520d922e4422b84db.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"黑老大自供状:一部被揭出的黑老大日记\",\"isbn\":\"9787506352697\",\"price\":474,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/93b34bd0ad848a9e1c0c8c9d907e5f19.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"大独裁者 (原名《加林工程师的双曲线体》)\",\"isbn\":\"6786970345034\",\"price\":2499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/8d63806131dd24226e9f803e30132ff3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/b94a99bba6f88c6db5df1ce2c9185986.jpeg\"],\"location_code\":\"NS-A1-3\",\"inventory\":1},{\"goods_name\":\"生根 [美】霍华德·法斯特\",\"isbn\":\"6788454164523\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/c70f6575a626340c50e218b1acbe8f65.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/452c9fa5828941053a15bc6856d70bf5.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"镜中像 (美)海伦·玛克内丝\",\"isbn\":\"6789228386081\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/9344968c0d1e50d7536b149fbcde5d50.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/919d6b600f1fb740ccb0a0d3076222cc.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"白鹿原 Bailuyuan\",\"isbn\":\"6782977147722\",\"price\":5199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/c9abecdeaf6bbd3ac381051fcf57c066.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/bb3914f6d886d4dd3878c9572bbae2fd.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"西游 记(共三册)\",\"isbn\":\"6783616339305\",\"price\":1689,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/ec6a5149161d2d1f1232252d77e1f1d1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/c9ac865a07b9d7de3464921dd516f840.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/30d47d57c9b94c2e3fc39088055e9ef9.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"军火交际花 (上、下册)\",\"isbn\":\"6789311349021\",\"price\":1079,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/cad54522714c1019bc059e7dc2477a80.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/5a2f9e523ee101922e3d4aff528f9a7c.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"党的组织生活问题解答\",\"isbn\":\"6780459154422\",\"price\":1064,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/910c28e1d43dcd4f1b65a7afbdbdc5e1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/348731a945a30627c46281f87f0f6b98.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"世界文学丛刊第十一辑 埃及现代短篇小说集\",\"isbn\":\"6785513274475\",\"price\":1327,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/b85c67d9fbc835fdc24b39bb6d99a8f7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/137d3fc62b940bdf5560d410e6a18354.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"世间女子\",\"isbn\":\"6788046022956\",\"price\":1898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/8608657f836c4bfea63839d736b01b3a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/99efde3d61d778bf72d5d85ab2742c91.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"怎样练习花样滑冰\",\"isbn\":\"6788632066507\",\"price\":274,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/0f04b1a7c802d87d813642379d5acb18.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/48c300cbe5673cb639005c428b983152.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"眼科护理 中山医学院附属眼科医院\",\"isbn\":\"6783453610523\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/3c9c449679be3e4dec527974d2f46153.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/3cbfc79e9a4bebe1186b924cc0cf9a89.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"福建少林拳 ·福建南拳丛书\",\"isbn\":\"6782694955871\",\"price\":440,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/10b968252e4ac9598e59d850c869fe16.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/611e43fc283104f13e5e4ae398cfc490.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"啄木鸟 1996年第2期\",\"isbn\":\"9771002655000\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-28/b76ae93ee84a93c0a03be23ab31f5512.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-28/48a136ba34418872707984b1df2f0a7f.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"正版实拍 天学真原\",\"isbn\":\"9787538215366\",\"price\":2172,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/076506d7ec2696a46eccbbe88841bb3b.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"实拍图 走出理学清代思想发展的内在理路\",\"isbn\":\"9787538246209\",\"price\":2856,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/939bc554b04c365511a6fb0d04a6f707.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"教与学\",\"isbn\":\"9787810510875\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/561200fc7f64e76f672fba9c26896982.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"慎思集.续\",\"isbn\":\"9787531323297\",\"price\":603,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/ca6f1678b0431ed2cd850c6a7934b386.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"赖世雄教你轻松说英语\",\"isbn\":\"9787806643082\",\"price\":633,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/29525a60500e7fdeccfe141f47b711d7.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"我们的长辈王稼祥(32开平装 全1册)\",\"isbn\":\"9787205037192\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/1809febc8942474e7b46830e647bbc74.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"中国古代科学技术史纲\",\"isbn\":\"9787538237016\",\"price\":12399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/e5d644596f1f77f4c15a38f5117459df.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"第二次世界大战什捷缅科亲历记\",\"isbn\":\"9787562606956\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/9b9cebd161d205fa79edde6446efe642.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"打官司法律常识速查速用大全集:案例应用版(打官司必备秘籍神器,涵盖所有常见纠纷类型,传授打官司技巧和法律知识,一本来自星星的神奇\",\"isbn\":\"9787509351406\",\"price\":1536,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/eb7b8fed2023dbba1c2695ecda4e1a09.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"我本英雄\",\"isbn\":\"9787531341291\",\"price\":984,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/1ec6865a5923e7bf56251327256796b5.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"国家公诉\",\"isbn\":\"9787531341307\",\"price\":1489,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-29/b22b1e9f0dadb63eee029d02eebfe61d.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"童林传 (前传上下部)\",\"isbn\":\"6788260558020\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/44ce014d8fe90fc1f92a861aa1221409.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/33df8d571a6ac95ed43dcc48e574eeb7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/8cb1bf4fbcecd644e3550f9ef68d6707.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/055360cff892591c3aa1525b9ca9201f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/2f79f1a744f3cd7a16158297e2c244f9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/15677671d110910c0b41a76a3ebb9074.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"毒砂掌\",\"isbn\":\"6783866435839\",\"price\":667,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/c530943d941a8654697f0454eac64f3e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/4c8f30a9166419c101263fabcc5a68f2.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/326dff15b048969de9d17668f3deeb08.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/a96611b991c27b8c9fb6760f59617baf.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/c36b10ce2b680fd35b0385f0c5c43e74.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"气功疗法和保健 (修订版)\",\"isbn\":\"6789842973463\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/c3a5aea252ba1c235ae201f35a228348.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/942df340fb325d13a36781ebda375fc3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/f37248a318c1992a18f462731106515f.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"胎教\",\"isbn\":\"6787765150122\",\"price\":697,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/a0f137d404282f6ac699923f430b6e73.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/e48ae5373fe07db7ba482a60c6ed3874.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/a54c7af9b69f8c8e681c1aa37804f1e7.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"《中国民间文化丛书》 中国民间传说\",\"isbn\":\"6781225965531\",\"price\":2119,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/a92cfc8a655533bdb19ea0d08329cb70.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/6b36aada489d7267eadf077193842178.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/d01b1c3fd513ae49005fd26f2ba24307.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"法律顾问 青年信箱(五)\",\"isbn\":\"6783426183678\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/a34db7f9a98d518bdc8386e2034880af.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/467ec37298ae3ea3b01b6b4ca21fe8ea.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/7a7f6a9e714741861fc33eed31debac8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/384d70bf4636baacebb3c9c951ea93ef.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"初级技术读物 怎样打乒乓球\",\"isbn\":\"6786302847254\",\"price\":1419,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/5fd478e79f35f64a4a50eed63b6f209d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/d8abf7a08229486e4bb97ce0bfbd6a8c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/5b6c320a4f720d17bc7ce576e95c7e19.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"古汉语常用字字典\",\"isbn\":\"6786297799883\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/ab6cf6a947dd028a542db36d9d99e1b2.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/f621f95329739461b121daf0aa303b03.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/20642cb7eb399d6e1aac02174143d759.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/f4419c65afd71ccc83b945058b82a0ec.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"中学生文库精选续编·生理心理辑 青年自我保健问答\",\"isbn\":\"6785647689735\",\"price\":1426,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/a1644cb76b2e957efef18d092ccc3dde.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/ae82f7dce83ebd00b4707cd9c6d1ad77.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"人间的诱惑\",\"isbn\":\"6781034302447\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/1447ba2d17408be174c7cf19cb463b57.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/c795076c3fdbb20efd051ec864766ced.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"《中国民间文化丛书》 中国民间年画\",\"isbn\":\"6786583818333\",\"price\":3099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/50d3fbf529d3eb66361823c130ff2e30.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/42d20db34fd90380c2ae29a8c68ef396.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"《成都棋苑》围棋丛刊·7 棋官子初\",\"isbn\":\"6788904791432\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/cdcdaafa8b6f7d244aa6e98ad183984b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/6b6932e8df1bd1a2365b145a60829562.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"里根与布什 —中央情报局秘密战\",\"isbn\":\"6788589756160\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/b427e05d93d90cb29ba8b328e4fa1e60.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/b05e686fc6c5620921d56c4fb1b7020f.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"社会心理学新编\",\"isbn\":\"6781023167369\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/4b12081496a42b2f9d7b30a73d060282.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/6b0fb7aa710c7f90e33df5828079826d.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"文言助读丛书\",\"isbn\":\"6788816870661\",\"price\":1197,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/4098a1c7493869a63493a475ad2580dd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/bf0f8f39d6bb1ebbb095c647aa2f453c.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"家庭饮食疗法\",\"isbn\":\"6787584375362\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/a5c322e5397794f21f74f7211128f8ca.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/8f94af965f24fde302866f0664087e0b.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"围棋妙手问答\",\"isbn\":\"6788187932080\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/1dfa4b394a1e8f9d1d8dc1abb81ba43d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/d31c4e30f49921ea85aa883bb8f80b14.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"影响历史进程的100个巨人\",\"isbn\":\"6781046311951\",\"price\":583,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/eef3f0c8fb9c40d1a0d365ad3a8298a0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/9613513b7217eed590f09b5c057d6988.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/c44c9c713e50678c6614b5794c1d137c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/c55766616882b1dc6d28b95e3af920e0.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"医生与患者\",\"isbn\":\"6785200986522\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/205aa903cdd23599de910236e006c1a9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/8c2215e6a1ddc750b889aa3369d65267.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/a21978a18bd5f71920cd98004c55ece8.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"中国民间文化丛书 中国谜语、谚语、歇后语\",\"isbn\":\"6788868318040\",\"price\":1977,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/78e74bb48ca5bff55978978c2ac73122.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/cb1d435abf9ba2448f2036243d9a5d14.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/f32b28791c4818a136c12cce651ab6ca.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"鬼神奇境\",\"isbn\":\"6786564859041\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/138d46e2f720f14d2397ea59c19c59f7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/00baaa93e1c4ba4cc64a29f333f6b446.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"海公大红袍全传\",\"isbn\":\"6781589731998\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/7913233c48617b3b2ee5d61b8e118c1c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/26efe85e17af9e84b8489cab463f2b13.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/7890115d8e53c2ac5fbe5851c68406d5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/57e3b650071a47abd9dbfed198558fcb.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/d7698e2d6b81801341afe53e61cc9196.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"晚清宫廷生活见闻\",\"isbn\":\"6787943067360\",\"price\":490,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/18192a06c6233e53dc80bc3bd1e87086.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/7873dbae91513b463aaf29d8181c51e3.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/37f195f60f0b1704690bcf9022ff4019.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/181acae8603534917e8471c5a18b6501.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"越界飞行 U-2飞机事件间谍驾驶员\",\"isbn\":\"6783768617891\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/550b17b6ea726c240115f88df09ef965.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/93789f7f4629b4a6fa9f6435f7a64047.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/f36cda50ba7ba062eaa51c85090bf161.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/ea6136af0fe613bcff9376e26569ec88.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"千家诗\",\"isbn\":\"6784928094291\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/b515ceed6810d1435d076557d96f63e5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/badf490f6b294f3732c816956913085e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/6370435ae8674850e601d92779a58290.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"千家诗注析\",\"isbn\":\"6783514404850\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/acb41d0d0b35be85d5ef5583a940eb7b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/ecd9cc5ad7bd30dcdb287d5a89943e30.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/67a8933f37eb43957e27dc9e20eaa492.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/7bf876ea552dc1eb949b5152fa93ddca.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"二刻拍案惊奇\",\"isbn\":\"9787806260548\",\"price\":1030,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/189f3751b09762ab6bf822c4d20eb35b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/0877ea78812a0daaba222777c334774f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/ea1ecdd348c6945d44fb64c752bb3a95.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"馆藏:中国古典小说名著普及本;醒世恒言【实物拍图 带标签印章】\",\"isbn\":\"9787806260555\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/c8abbecf69d52639975f1c7cab1fb9cd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/ac0817f866a1ffcd63a0f5bb30ce2b4e.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"喻世明言\",\"isbn\":\"9787806260579\",\"price\":419,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/09c57c9ae27781804008f46541c8cd16.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/704bb519fada40d2fdd4b0232f9b4559.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"初刻拍案惊奇,二刻拍案惊奇(两本合售)\",\"isbn\":\"9787806260524\",\"price\":400,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/ec1f90db7731056472b46681c8af09da.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/38c6e07ed573bd281c90ea52f29609b1.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"世界史简编\",\"isbn\":\"6789800752524\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/31390829263c0e5229c70bae00c24209.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/d966ab2b767c957881d3941a95f8cf69.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"大自然之歌\",\"isbn\":\"6787623522471\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/42594527ddb0e167120f13f2dc0059cf.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/4a6ac99be973f648509eb2faddcd5590.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"暴君的末日 隋炀帝的故事\",\"isbn\":\"6782027493570\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/cb57280ca37e9df57d5d217773e3d101.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/e74ca92e90189b046efc3b343f258ce2.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"近代史资料\",\"isbn\":\"6783244407039\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/d65a6278f1eaaaf3f6f0d0b31b36877b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/4b085ad86da7d6e1a911ed5be7a89e00.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"长江漂流探险纪实\",\"isbn\":\"6788245307337\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/f69aa74080901e5cf6cae5d157778176.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/e1fa8c16222aad32d7057ff8b1c11eb3.jpeg\"],\"location_code\":\"NS-A5-1\",\"inventory\":1},{\"goods_name\":\"森林工业技术知识丛书 木工识图\",\"isbn\":\"6783376605239\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/93912b89a3b291038b79c09fafff2090.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/b1dc7e0bb05ba1a5b757bba49a44d7f1.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"诺贝尔文学奖金获奖作家作品选上下\",\"isbn\":\"6788931986905\",\"price\":1208,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/88c6a094b2cc95e143a175f13430ee00.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/800af580b79afdf7685916964042b68b.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"二刻拍案惊奇 (全二册)\",\"isbn\":\"6787769138076\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/4aab57c46d122df80daf6333f41fddfd.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/a5f45171342db3802155b8c857400c7d.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"欲海狂情\",\"isbn\":\"6781423241081\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/06bcd6cedb570b11a9099b199655ab0d.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/200265d0a0f15d071cb031ec3498d1cc.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/69308f2bb46c4a7bb133c0765fe8e929.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"古汉语常用字字典\",\"isbn\":\"6783219525672\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/ec5b61da2284c4445e41aa344670557f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/1572110fbcf06532b4dd851ec589b36f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/9b735d8baa00eedbc7f92097dcd6c172.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"审计\",\"isbn\":\"9787810440523\",\"price\":1222,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/4717bd313318fff4b0671500e4c129d0.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"辩证唯物主义和历史唯物主义原理:自学高考版\",\"isbn\":\"9787300011127\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/cddcfe75397ce0547ec80201d280a934.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"摄影问答(1)\",\"isbn\":\"6788722696449\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/757a37cbe41aaa9163f4f412e96fb848.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/416316ea1f47cf2ae4a1bc1ae13fe2c0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/27a1bebfe1d2564637303b93730316d6.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"希特勒亲历记\",\"isbn\":\"9787562606147\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/ca4a25ae4190c2f02f8384d6fd22b5d5.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"钱币\",\"isbn\":\"9787538236255\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/5eba317115994eb7b08e3797dbfc1b82.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"木青散文选\",\"isbn\":\"9787531319146\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/36ed54b70533df3ef2df75f013c8ef4c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/8a03e119fe76867d716062bfc1460da5.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"塑料性能实用手册\",\"isbn\":\"6786925425495\",\"price\":978,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/6f646ce2b5d73be4a3dcd6881687ec54.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/ccd91877abb999c0f427db2d88886a05.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/c929d1bae5c3477fcc19c4ef28378fd0.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"黑手党档案\",\"isbn\":\"9787506017411\",\"price\":549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/02891cda3a792c447caecff7f7f1fae8.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"中共执政党建设史1978-2009\",\"isbn\":\"9787205066345\",\"price\":2299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/e0e9243dd4979e9c37aacad431460e4a.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"《无线电》问与答汇编\",\"isbn\":\"6782739675773\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/18d67e92b170a41281f2f84fa1b38905.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/84232e41f7dbf1840cffc165320a8f9f.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"君子兰养花专家解惑答疑\",\"isbn\":\"9787503861833\",\"price\":1179,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/5bd3247beffd9f98d7d47eca3084b723.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"红墙纪事\",\"isbn\":\"9787801280435\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/ef547c78274b4e2e08bff484d2e7e47c.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"座山雕世家\",\"isbn\":\"6781151250890\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/c9bd074bbc008660b01e3451f2d237f1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/bf9191f43333324a48073ab228a65907.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/d102a4656e7c3528f85fbfd9d665893a.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"刘延林传\",\"isbn\":\"9787801513625\",\"price\":609,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/a03e24ddac68367baa21537f12bb6859.jpeg\"],\"location_code\":\"NS-A1-4\",\"inventory\":1},{\"goods_name\":\"中国民间文化丛书中国民间小戏\",\"isbn\":\"6781362194541\",\"price\":1898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/4a171f3830422f0f8957cbb2082ccef0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/9d6bddf75322f4f8531f3a64682edc29.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/ca06e8b6323cdc0b9e9ef6ee9ff592cf.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"简明中外历史辞典\",\"isbn\":\"6789099334318\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/079baae8fb4811f535c4f1fd9fd7058a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/446b79a17b8b924a64a7c9cd85d8da74.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/9186118b75aeba4f3bd5138f8b2628ff.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"数学教师教学用书. 五年级. 上册\",\"isbn\":\"9787303147458\",\"price\":1094,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/804973ef2d0d8cace796f017c60d24a3.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"数学教师教学用书. 五年级. 上册\",\"isbn\":\"9787303147458\",\"price\":1092,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/a301b84dfa98737054efa0e55350d22c.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"野生动物保护与执法培训手册\",\"isbn\":\"9787519610005\",\"price\":598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/64094c60a070546a9f85e02f4f46b1f6.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"工商管理大百科全书\",\"isbn\":\"9787538252361\",\"price\":4550,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/242f6e4e5404e73cdb1de02af93b950b.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/5fd619b513699570ae1e68ca82136631.jpeg\"],\"location_code\":\"NS-B6-1\",\"inventory\":0},{\"goods_name\":\"牛津少年儿童百科全书全九本\",\"isbn\":\"9787538249163\",\"price\":8090,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/3f53a6b8a9c6e95560294dd59ac7cee8.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/d1dd94be0ca048261f4fcaacc442a955.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"小学生注音经典 中外名著全十一册\",\"isbn\":\"9787531535553\",\"price\":6559,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/c1bc44411106e39b4821465c8123e9f9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/1929517fe6f71213289240a03368280b.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"一生必读的经典 十大经典全十册\",\"isbn\":\"9787806635933\",\"price\":2637,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/31ec73285909b41155e19fdc11acbb2a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/c16067784401e3e87d9b845273d272e0.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"少年注音知识宝库系列六本\",\"isbn\":\"9787801146038\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/4ba9eeef3f18511a459e945720c9eab1.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/9d963265b7347475526b5582136789cf.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"一生必读的十大经典\",\"isbn\":\"9787806635933\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/1f554797af63733f8a432a0724d7f7ca.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/01aaf31cd57b84608051f4096213a290.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"公务员内参\",\"isbn\":\"9787531336549\",\"price\":1130,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/77ddde93d93e48ced73b9783024b3302.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"合同法速查速用大全集\",\"isbn\":\"9787509351536\",\"price\":811,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/aa20587c606289f46e7077898e45c57f.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"吃的营养科学观b1-3\",\"isbn\":\"9787204041091\",\"price\":1126,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/48b13b047b44855f0079fd2ece6e40b3.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"供石品级划分与鉴赏\",\"isbn\":\"9787533124571\",\"price\":1208,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/7f0735b8b04de222ee9e738f01b7636c.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"现代工业人工林发展的创新研究\",\"isbn\":\"9787503826566\",\"price\":789,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/340986ad3d78492b602c3f5da86bbc7d.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"黑枭末日:刘涌黑社会性质犯罪集团覆灭记\",\"isbn\":\"9787801148117\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/0a4574a667a2a56a7fc2c38fa9145d0c.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"苦菜花\",\"isbn\":\"9787503301162\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/0ac91452616a3ee12645393d9e31052e.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"好故事 好家风\",\"isbn\":\"9787205085469\",\"price\":1857,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/fedb06ccca70f9999c9d3782aaea55ef.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"这才是清朝 5 十全天子\",\"isbn\":\"9787509398708\",\"price\":1188,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/631a85c7b1ba88c945e1186d768b996c.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"人教版初中道德与法治八年级下册教师教学用书含盘人民教育出\",\"isbn\":\"9787107331732\",\"price\":309,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/99b0f9ab2f36394ea2aa374fca4792a0.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"中华艺术之花.1991、1992、 “五个一工程”获奖作品(戏剧、电视剧、电影)两本合售\",\"isbn\":\"9787801160300\",\"price\":4507,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/583488b55cfa59358dae23cdcde94091.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"中华艺术之花.1991\",\"isbn\":\"9787801160294\",\"price\":7148,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/2b2b801b3b4e2c3a1879d33e33bc9eb6.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"教育是没有用的 回归教育的本质的新描述\",\"isbn\":\"9787301150962\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/126583319fed5bbe523a70e5a3da68e7.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":0},{\"goods_name\":\"高温消毒发货 离哥德巴赫猜想最近的人数学家陈景润\",\"isbn\":\"9787538256710\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/fbb374d70407ecab297a0fa24ddfb053.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"*四色掌中宝 高中英语必备短语\",\"isbn\":\"9787551550789\",\"price\":571,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/2c47a78890df59adcdd187ba4dc746e0.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"四书五经绘画本\",\"isbn\":\"6789151090078\",\"price\":400,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/e56f4f0abad2c169fc8e22d63a63e1a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/f773ce1ed071e60354eeb187beb07e8e.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"中国现代文学史(下册)\",\"isbn\":\"6784176932897\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/594e0a2cae86a8b2956b73501409fbc9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/efa07df404ae8de9e4adba498150fb8f.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"消费经济学原理\",\"isbn\":\"6785191941441\",\"price\":3199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/05b6f094b6ce80c79b7e3ff88ecd4050.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/d8acdcc19c4ea27f1ec50d6e6ba5ea64.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"明心宝训下册\",\"isbn\":\"9787220028366\",\"price\":1019,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/9ab469ac627a6e8903e5d29a9240999f.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"中外艺术家铁事\",\"isbn\":\"6787128991805\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/d448135953a378140b30b3ecc59878bf.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/0d5638b76032db97064ea28543ec17f4.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"草堂春秋\",\"isbn\":\"6789931465236\",\"price\":231,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/f0dab3348ab70b3588d0fd118d945a22.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/2fd70834a94b18118e9e291bee2074dd.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"高中语文答疑解惑 (第五册)\",\"isbn\":\"6783874081404\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/6f265f81106d7e94ffe56894bef29c06.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/32f62f5eb85da22c6afa859db86c64c6.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"唐太宗传\",\"isbn\":\"6784973482177\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/8985969cdb79bcf36ae308ae5d7dd883.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/0356b66b03ecac6d5c10f13cd139d7f9.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"常用文言虚词手册\",\"isbn\":\"6781665174814\",\"price\":229,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/43cfa0f47db76ceee3f64f5f3ceddec9.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/19478a6ed0ffdc3d42aabde2dc512396.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"三角法辞典\",\"isbn\":\"6784522655623\",\"price\":2699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/8d7ea3ab68c6dec5334fc1998cdcdc73.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/63c75522a1fcd7df630a8b862fb84d00.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"白内障防治100问\",\"isbn\":\"9787506238502\",\"price\":634,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/663649de9abbc982f7a26a0ea7e34c52.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"孤独人格-克尔凯郭尔:西方智哲人格丛书【扉页有黄斑】\",\"isbn\":\"9787535413109\",\"price\":698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/eed33181e64c074966cfb841aa5a6785.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"袖珍中医皮肤科处方手册\",\"isbn\":\"9787805318257\",\"price\":5399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/5ec835ae07a81843687ddcf221375950.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"大宇宙探奇\",\"isbn\":\"9787536523623\",\"price\":524,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/ebdb90652a82a4c43ccd187c03bd02ff.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"商镇\",\"isbn\":\"9787505930605\",\"price\":231,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/d9e8ef133678bfd98504940aaefc2e43.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"大学英语四级考试巧攻阅读理解120篇金泉元 主编中国对外翻译出版公司9787500112334\",\"isbn\":\"9787500112334\",\"price\":629,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/e6976927a6b92dff3540c342c88c5c9c.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"职权\",\"isbn\":\"9787543858176\",\"price\":329,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/336d046a76b1e8d443f35c7897dd09fd.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"我主沉浮\",\"isbn\":\"9787531341338\",\"price\":1501,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/5aef3620d8d715249ce8f5c4d61e1974.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"聂卫平谈围棋\",\"isbn\":\"6788527979457\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/6120057d9538a23a9a012d27bb8c451a.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/6fba2732a638e6b4292354ddafb7aee4.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"時詞解析\",\"isbn\":\"6780318682039\",\"price\":3390,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/5423ba43fb6effb1132f150b8b4473f6.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/89c9ddfba5b08d8b528499726f45fd54.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"小草的奋斗 台湾省中学生作品选\",\"isbn\":\"6789450158207\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/988a4b043fcab90d857d32d1a42575f5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/ca534fb5af20d0578820f3270032bd63.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"失落的珍珠\",\"isbn\":\"6783261363675\",\"price\":319,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/08cf239173513346748b81baa066dcb0.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/b282beec4142cd98b706fee71aabc1b7.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"汉语词典\",\"isbn\":\"6783732253931\",\"price\":1779,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/60de56fb3fff7e04df2ee2fc2de42676.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/5037a6dc916bc83fcca98b46c6dbedf3.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"中国的篆刻艺术与技巧\",\"isbn\":\"6782420958079\",\"price\":321,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/d18ac7134ed16984de1cbc885334a60f.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/be6b3061d53ff27065dea2d38094f34d.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"绿牡丹 清·无名氏撰\",\"isbn\":\"6787683125373\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/539aef86deb343ba918af44d2f7a070e.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/54202206f0fbcef8346f9cc583ccfb3c.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"作文开头500例\",\"isbn\":\"6781961976050\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/2c26a70ae6df4fb2d55d02c0d0fba87c.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/177d4d858017b1fea8336775346bd007.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"徐懋庸选集·第一卷\",\"isbn\":\"6780453356340\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/f2eab71704620ceea305a60ccc9beed5.jpeg\",\"https://img.pddpic.com/open-gw/2025-09-30/94901b04f477b8c33dcb3f9a46052ce5.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"星象解码\",\"isbn\":\"6780006245796\",\"price\":874,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/2f500d1a66cec35e867c29ac19a6d400.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"计算机应用基础 景福文 辽宁大学出版社 9787561072844\",\"isbn\":\"9787561072844\",\"price\":1989,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/30dbff8cf8f01bf75b93d286d47e8411.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"文白对照四书五经1-5\",\"isbn\":\"9787805957661\",\"price\":1989,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/3db079845519de0ae97a3bcc205d0924.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"民间美术---沧州地域民间工艺美术实录(2016年大12开1版1印)\",\"isbn\":\"9787531472520\",\"price\":5937,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/fdf4ee8b468b6cbb8db094dd1019b3e3.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"漫话狗文化:一次神奇的文化之旅\",\"isbn\":\"9787505965027\",\"price\":1060,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/2fe2bf8bfd122102cd4786b64a3d09a8.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"皮皮鲁和复活的恐龙\",\"isbn\":\"9787534294075\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/b86f0f807f895a3d523eb19f464d7e59.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"中华保健中草药原色图谱\",\"isbn\":\"9787538128062\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/f60bd004687b97b015cac790fede50e7.jpeg\"],\"location_code\":\"NS-A1-5\",\"inventory\":1},{\"goods_name\":\"吃吃喝喝那点儿事\",\"isbn\":\"9787531333937\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/d2d2cd6106f4b24bf5407c020d6ab524.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"24小时健康书\",\"isbn\":\"9787121317248\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/d7f8aaea8464c6f1d83de3ab83060f8e.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"大字版生活经典 五谷蔬果养生堂 中国保健协会编 湖南美术出版社\",\"isbn\":\"9787535641779\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-09-30/e5524d82fab53043433ebea7a51883c0.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"怀春\",\"isbn\":\"9787541115202\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-01/1ccc5ca5c2ae1956e2a46dc23dac4e6d.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"庆余年\",\"isbn\":\"9787020153541\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-01/fa4f32a3fe6561e657da64cd8e9dd468.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"第五次高峰:当代中国的犯罪问题.\",\"isbn\":\"9787507208931\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-01/f120a5be6ba0390bee61cabb5367ec3f.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"不宜多吃的食物\",\"isbn\":\"9787801319852\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-01/5e42867021b6c2c751efa3c0a85721b2.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"革命烈士诗抄\",\"isbn\":\"9787559648808\",\"price\":904,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-02/b3838f1f3679f663135c8ed761e219f3.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"世界文学精彩素材大全\",\"isbn\":\"9787504827197\",\"price\":359,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-02/cedb61576a672f48a0982baf154eff3e.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"腰椎间盘突出症的防治\",\"isbn\":\"9787508210506\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-02/79a260a9bab9df71ee577158857e561c.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"新疆玩全攻略2012 2013最新全彩版\",\"isbn\":\"9787563392995\",\"price\":1023,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-02/2bfe00eb162c038dece0ebc13dc5630f.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"世界文学名著典藏 忏悔录全译本 法 让 雅克 卢梭著 李新蕾译 高莉敏译 长江文艺出版社\",\"isbn\":\"9787535434340\",\"price\":582,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-02/7399eaf87222e0253799df87596509b2.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":0},{\"goods_name\":\"小说见闻录\",\"isbn\":\"6780032676297\",\"price\":823,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/208c172ff671aab7b5a8981ce6704d3a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/cd8625a3e2f4852d264fd53247b7774c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/bf0e49ad9466a574f11186710294f9f7.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"思辩散文选\",\"isbn\":\"6785897626777\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/d199cdc2f3ab7603168a61f8c8a063b8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/59ed8db506e63c7bf2e8c8a435b25be3.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"唐祝文周全传\",\"isbn\":\"6786315579962\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/ff72192065a8011a8b3c30a72b9115c7.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/e082e7c4da0cf86ae2d910b72e81fc09.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"希腊棺材之谜\",\"isbn\":\"6784431378012\",\"price\":823,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/1b6c3968f28aa76592a43115cf734c19.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/3928854125aa75f38b423b6395b5d244.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"实用摄影知识丛书 怎样拍摄夜景\",\"isbn\":\"6786813787051\",\"price\":990,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/c0efeaa31dff68b567df90f087ecec53.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/da0def49fb2975d8a056bee5bd3da313.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"中国在这里沉思\",\"isbn\":\"6785516474459\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/5d13b984c85647b4f93b5296a0e7c3b8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/1e225b37437417dac46779d2ed2edde7.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"有朝一日\",\"isbn\":\"6782109705210\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/da0ec25d2ac78e48c9e4025619406ed1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/d43880f54f6b58bae96e1746bf26350a.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"中外科学家小传\",\"isbn\":\"6785399992973\",\"price\":196,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/4c93c80e7237d95bd3a11440e9d188ca.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/2965de142e6c04ad11ad4ac6645e3e9f.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"法网\",\"isbn\":\"6789964355301\",\"price\":369,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/21b64fb1eb69fc8471d87bd2a12206ad.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/6f8d70e1a089475c1afb8afd7e57ba75.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"岳飞\",\"isbn\":\"6783513795763\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/14e98620d7f2a6df52bd6083ff5a9b5e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/8e83538ec6f1303a22cb60daa61ad354.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"勤学成才故事160个\",\"isbn\":\"6786903613563\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/c83a5bc0627e24de52ccf7c4cb695bd2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/d93c24a285f6c7e23f1bb180f8e94c27.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"战后日本史 上册\",\"isbn\":\"6786190448649\",\"price\":1208,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/6b8b52b3a5305cba8851f5735ea92bd8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/265f8b0e6818a269856888f29829fe2b.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"影事春秋 (第一辑)\",\"isbn\":\"6788689376054\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/bac0e9a93441cfd75f6556b1051529a2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/5295ececed47f9d3efbcd7808af2c89e.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"西厢记\",\"isbn\":\"6786596533269\",\"price\":988,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/553cf1953857dda27b4331d8c0e981c6.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/82ad519bd4168f88c23dd9ae1b3072c1.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"Java网络编程就业培训教程沈大林 主编中国铁道出版社9787113081966\",\"isbn\":\"9787113081966\",\"price\":1525,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/cb929b0e6d84faa51e307b01dfa273ec.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"俾斯麦的一生:尘封信札背后的真相下\",\"isbn\":\"9787212059170\",\"price\":1758,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/95d13dcef8f3d103f6c93cfacfbc0609.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/c769077364cf62404dd58cf1040e768d.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"养育会吃宝宝9787533032340\",\"isbn\":\"9787533032340\",\"price\":262,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/0ffc1a743ed2fea5455d16e341e8bc35.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"庆余年 1.2.3\",\"isbn\":\"9787020154586\",\"price\":2019,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/c8cb537af751d75e257278624ef092fc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/bcb15dc15c2f68c0ff82f773e11955a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/7109453d860a640123d0781b8a1a2ab5.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"故事大王 2018.9 10 11 12 共四期\",\"isbn\":\"9771004009184\",\"price\":1451,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/fee4a2b0f06a0b6f74e3c265907ced00.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/4f438dee27c80f9b9a89844ca79404e4.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"早期教育与天才\",\"isbn\":\"9787806459522\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/ba53534d705f27075330ccab5643d74b.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"金三角大毒枭坤沙传\",\"isbn\":\"9787225011417\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/57ab391b9a964b20450ddecce471ee8d.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"纺织大王刘国钧\",\"isbn\":\"9787506527095\",\"price\":289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/ad3b82f0d9c0c56cc0e770626ec20a40.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"古韵京津 旅游随身小百科 光雪 编 辽宁科学技术出版社\",\"isbn\":\"9787538134247\",\"price\":194,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/c55632f9c2d3d08e47ae90a265ee1647.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"林清玄妙谈人生智慧\",\"isbn\":\"9787805876184\",\"price\":1283,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/02df8e505b58ab6152f8cfb45bd80bcb.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"庄子千家诗百家姓增广贤文\",\"isbn\":\"9787805503899\",\"price\":800,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/3cb77d7b94ade05cdd9f8b2dbdb0de9f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/014e8c3bdb8eb23f5a36a4d34f893c03.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"用证据说话:债权债务官司证据指导\",\"isbn\":\"9787503685453\",\"price\":1149,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/2db1554931067c5671b98c921291d1be.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"断裂层\",\"isbn\":\"9787531316244\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/74929b7f5f4855a53a34f5fbf42e51c3.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"习惯决定未来蔡家瑶沈阳出版社9787544144261\",\"isbn\":\"9787544144261\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/c4c59919df6c5b78bd4483e00a48b696.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"沉沦\",\"isbn\":\"9787805277462\",\"price\":398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/3781a236a691f44c6e955631b27f63a5.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"醒来花飘落\",\"isbn\":\"9787541112188\",\"price\":289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/d9e67467905e527f09464e4d282f85fa.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"憔悴为了谁1994年一版一印\",\"isbn\":\"9787541112225\",\"price\":729,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/ae9f13c03a1cfb1b3bb8299d66a90adb.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"情迷醉梦女 岑凯伦 四川文艺出版社\",\"isbn\":\"9787541112164\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/565fbbae808310716f37346686dc3776.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"光绪与珍妃\",\"isbn\":\"6783748731233\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/933a5c37541edd28982feff6a3f4f50e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/10c17569001e4185c3373b2d0aaa7e56.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/fb0e6da4475cde4c85eff707839954de.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"高级财会系列丛书 涉外理财学\",\"isbn\":\"6786253474221\",\"price\":1743,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/c08d5b77fb42c0938da22f6a950c773b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/01b6a9eedbf43fb73b3cf26418d91c53.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"爱火\",\"isbn\":\"6783089352875\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/96fcae7f5de6ee3460e30ef16374a5d0.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/333472674b4d74a3ab60e4156744c306.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":0},{\"goods_name\":\"纽约灯火 ——美国纪实\",\"isbn\":\"6784660041852\",\"price\":886,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/fcf02c24302334671ac5f77dbf99bdcd.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/3b9c74c184f7980613946bdd2b7d451c.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"只为那份情\",\"isbn\":\"6787745033862\",\"price\":100,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/95acb26911411580509c6bf580c5e179.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/e7996d53f4728d03ca40cc80fc198d08.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"汉语常用字部首、结构、笔数、笔序字典\",\"isbn\":\"6784959843500\",\"price\":437,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/f08c6942f149d78d81a068d034495dcc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/d23a5a91bf227d5f108ebfa690a8e542.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"大亨遗孀一杰奎琳·肯尼迪·奥纳西斯夫人\",\"isbn\":\"6788812379450\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/54727184e6bc4f50b553d049f1f38aed.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/e200e67e344742555ab250938c50a820.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"格林童话全集\",\"isbn\":\"6788620773574\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/51b956e60be7e39be8af201cc60a7df2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/7bce57622c2da08efa52182eb74f3a15.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"天鹅姑娘\",\"isbn\":\"6783195177485\",\"price\":393,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/e4d853812ad7975ebd465d40cc6290b4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/0a0b3e1019f2f905a0cd670377274f39.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"有情归梦\",\"isbn\":\"6783352522825\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/d8b41edb88843c8dd574715d70291b02.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/903a87017d498c818230014da7c27886.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"破碎的梦\",\"isbn\":\"6785192044289\",\"price\":324,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/3cd7e29e8f5fb707a42f9a98736b337e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/318082c13c25e7548ad59068bf45e5c5.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"异恋\",\"isbn\":\"6788274376562\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-03/56a160722618e78468007303de7c228f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-03/09f23aed135e6bbdda37d8f07b5d663d.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"深宫风流\",\"isbn\":\"6782589863931\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/154dc4dee04aeefcd036b2760874dbfc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/ffa6d534552bf0c5f2eed5a351b8b355.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/a7786a42f552c1d7049e560333cf2ec3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/b13443537ae411d4a678239e02467b6a.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"饭店服务英语\",\"isbn\":\"6787113015320\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/55b9d751ef40d6e568b6ea9a70a5891c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/21a4351dc433b4ca71729629d9b915fc.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"鹰兵西北 进军西北卷\",\"isbn\":\"6789586903807\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/61ca9a4e25dd8e54f22b635ddaa88d5c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/fdeb7cdf8f3e725fe7f0e7ace4af7376.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"实用手相足相预测\",\"isbn\":\"6783417964664\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/36bebac8672d928d5e16abc862cf36e3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/db61a010cfd9d5853bf1dfb4f4c7266f.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"手相学大全\",\"isbn\":\"6782440828787\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/4dcc2b9e8b8dc338a1d6f4ea79c1a95d.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/30d47aec7e28cb5265a0255bebe7eb0c.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"善恶图全传\",\"isbn\":\"9787534812965\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/52f8d3f067b581e558b4ae8d1c150331.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"二战全景纪实上下册\",\"isbn\":\"9787800749711\",\"price\":800,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/a5a77ea5262bc42d40c53ef542bd36cc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/0f843263aaf1ec99138d9ae792e1260a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/71cadc8573342558ad7dc3126efbddb8.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"寡妇遗恨\",\"isbn\":\"6787884549034\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/a04c476848d4d01919778a1665c83344.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/9aaf9b64ef8fcef67f3944bf78e07c8a.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"别墅阴云\",\"isbn\":\"6789119969899\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/af1644cf5735df6c0df5c1e74b7999f9.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/05b898ffcb8806d8d84874e33132bd0b.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"卓娅和舒拉的故事\",\"isbn\":\"6788859730520\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/0a1b76b3c748dae813658e848e5428fc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/4e4de3154eb31fb3d0448cc8763a2763.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"古文百则\",\"isbn\":\"6786027095563\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/fd79b18f135beb3f0dfc3221bb93a36c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/0a2db7899a48330e85a6e347d458a3b1.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"云南游记百篇\",\"isbn\":\"6789780728026\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/958b8540bc5d6748473ab78028dcd54d.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/ce788bf179aa2e35562f2d0e7beb44ec.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"葡萄栽培\",\"isbn\":\"6789955059896\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/3880221bb4f730d753b7075cf4e2c011.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/cc5bd6bad3531ccf385d00f5221e2bad.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"如何战胜忧虑\",\"isbn\":\"6789589836040\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/35142ddde5075a1276cd014fc7dec8d0.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/e389406f39e781b7dbaa6c402c3997de.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"科学社会主义学习纲要\",\"isbn\":\"6789678803133\",\"price\":238,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/94e42054dfb3bf488b328e9abdc91d77.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/b938d01404e7f5c4b5fbe26c0dab88c4.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"相命奇书\",\"isbn\":\"6788633573822\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/f356c2f66b09aaf3bd68012199c374cf.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/e207d841de788df761bd7176fbe39ba0.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"泰姬外传\",\"isbn\":\"6789093971960\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/b162bf5e3a60502ab6e213f4f2316f12.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/6ce1d1a12e7d94e22924890dca677184.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"世界历史歌\",\"isbn\":\"6781938579582\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/1682b9aef582207417f29e0a460abd76.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/1b09900378b33d03cb0bbf7e5ee73a1c.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"古代哲理诗一百首\",\"isbn\":\"6781777523921\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/be402a956b0c2b45f9cd8797b32a427f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/63e81c3dea7659f6341e9ce3f88685c6.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"中国古代文学作品选\",\"isbn\":\"6782875126802\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/a15a2f8c69d3130bd8793befef5b5464.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/d00e897aa8f81061f59ea9ee9176f0cc.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"青少年自学 古诗文选粹\",\"isbn\":\"6786774824513\",\"price\":549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/372584d6152273d06edafba1ddc4d9d2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/94ef8f20d99cde8f6b57d12899428f1c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/f9a8074a16cc05bb5476135ca434e820.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"亚瑟王和他的骑士\",\"isbn\":\"6781998643187\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/3c3b316d0e759548fb57f3cb5c00e09d.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/9eb832f762400a382477a78abe88680a.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"史记选译 (全二册)\",\"isbn\":\"6780075006700\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/3332bb762073b87347a8c527614ee490.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/6cb384036c93031cf7ba3df659e51441.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/0c1818f94f359de1babab755f15669c5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/6a47a8b47661a48a7c5af3815eaa7054.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/cd16be5d313c7b32a4c7ad4922f7bedf.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"北京史地丛书· 北京西山风景区\",\"isbn\":\"6789895260221\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/4c2a359ac6ed32b86e02ad98e89ba802.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/9835169d14be7a3e77fac7aa7039b662.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"唐宋诗选讲\",\"isbn\":\"6782379252028\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/1ea21797580fc726040b8494e71f89f2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/c1b7573548a95b6ec5bb283070d4e9bb.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"唐宋词解析\",\"isbn\":\"6784514918111\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/8d83c128de25c95151a034e59e7612b8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/d14172bde9fbe6c6c2d61047902ba9ef.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"德伯家的苔丝 (简写本)\",\"isbn\":\"6783211010531\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/73a1be30db041a5f38e0788e72008bd0.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/55e691d976a10d422ac432b2da5f4c1b.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"清风漫语\",\"isbn\":\"6781301552528\",\"price\":3199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/b496cef091b01b7df85201c33eb53913.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/89af6d51fd6948684b59474b90e08994.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"蝙蝠侠\",\"isbn\":\"6784991491738\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/6e6977cfe03db90b98e3035229b79d22.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/39a6943929c6c1c48938ee60b3296c4c.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"危险的关系\",\"isbn\":\"6788438141694\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/cc9358dc31c00d7d22653258e204d70d.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/c9c20fc55088764f03c37016e8800449.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"哈克贝里·芬历险记\",\"isbn\":\"6785798893781\",\"price\":400,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/5d8fad643d631dcd26c9a10036ebac7c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/2cf3fd5e6fec69beb38e3a69eafc4b70.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"基辛格评传\",\"isbn\":\"6784111848921\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/dbe47e940e71f192d5a8e7ba99e8a44c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/fd75dfa758540cffc532ab0db2b111fd.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"迷信解析\",\"isbn\":\"6782260432232\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/105deab1ee1639c4daecd4345d48d77a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/efe93317c30d14176b234f10987d2ae9.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"中国古典文学名著题解\",\"isbn\":\"6785225308772\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/2ea9e5dc9a353fe623170beeb732a30e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/85cefad37ec1bf1582de4a1342dd8ec9.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"峨眉山奇遇\",\"isbn\":\"6789888628846\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-04/91fa3c33a168f5020553e8df578dd5aa.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-04/0c32211a81dca8d7dcf086682ea9e2f1.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"古原柳笛\",\"isbn\":\"9787531314028\",\"price\":947,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/4d9101216605bb24b877726c641d2108.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"读史有学问\",\"isbn\":\"9787544221603\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/fc6ad2e6b8b786b3f633197dc41a6101.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"三十六计智谋故事总集:苦肉计·连环计·走为下\",\"isbn\":\"9787503412226\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/28ea0c2fc940a5439a457e1f44fe100c.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"接纳不完美的自己\",\"isbn\":\"9787807029502\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/86cdffe76d7ae5565585adb180c25da7.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"育儿一日一页\",\"isbn\":\"9787800797859\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/8eb924f97c25141ab71104201b971d9e.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"隋唐演义 上下\",\"isbn\":\"9787500212157\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/5355f32ed2f22b53a52621e0ecfecfe8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/b9ba2b238ab50709a86fa02359e3fe7b.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"舒克和贝塔历险记(100集):郑渊洁童话丛书\",\"isbn\":\"9787507711967\",\"price\":589,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/a100183af002feb0ba434aeedd5bb1d4.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"雾都孤儿\",\"isbn\":\"9787560012469\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/8eada4febe71c8fac40feaa0712f2cc1.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":0},{\"goods_name\":\"差等生牛顿\",\"isbn\":\"9787530731413\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/32bc238c36783c1170725de49cfcc5aa.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"梨树实用栽培新技术\",\"isbn\":\"9787502358730\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/71004ce8d677cf2502e3dd4f92deda8d.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"欲望人生\",\"isbn\":\"9787531318606\",\"price\":589,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/7c3eeda92e26e231c1c1c35f59ca2369.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"诗人喜爱的诗\",\"isbn\":\"9787530204368\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/aafc69abfb85c21f8e5970d13f89c460.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"全图本名家新注汇评唐诗三百首\",\"isbn\":\"9787806690628\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/c9e0972f0302666503395cd41072daa4.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"庭院美化植物\",\"isbn\":\"9787504850089\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/26c60ecbae38b7de9e80a83a4477f806.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"北方果树整形修剪技术百问百答 专家为您答疑丛书\",\"isbn\":\"9787109099029\",\"price\":387,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/e521b3d035d1974989d08e55b7aef581.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"桃标准化生产\",\"isbn\":\"9787109122796\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/9afdc208feeb0d5a8d2ac84f020e337c.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"鸿爪雪泥:道的故事\",\"isbn\":\"9787503210242\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/6fb8c59b6dfeaa3298c1784ccdd2825a.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"中国简史\",\"isbn\":\"9787811033489\",\"price\":3799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/e6222418bf06c83af9bfb98e9629bfd3.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"彩绘全注全译全解周易\",\"isbn\":\"9787550237070\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/05c38f321c63228152302eeba0deaff9.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"养鸟指南(含盘)\",\"isbn\":\"9787538429046\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/2dacbc9765913b5d2de7a0f609e279a4.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"狼坝\",\"isbn\":\"9787500817956\",\"price\":395,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/65ca43664a8ba00f6cea20a7bc10b70d.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"寻找消失的渠勒国\",\"isbn\":\"9787205101039\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/f35844b996d674506c5d3dcf51158f6e.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"冒险河\",\"isbn\":\"9787530674260\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/f748634506d075b34902fca7b3e75969.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"程健写生与创作\",\"isbn\":\"9787531450047\",\"price\":2899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/fdc2d21570af3555868f7dffac8c4697.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"若飞故里:孙长喜·古城安顺风光画集\",\"isbn\":\"9787531442219\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/81d1bbcf3c134326cd0d3b45072cb373.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"中国画\",\"isbn\":\"9787531435198\",\"price\":204,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/7d460655b921fb1aa108cc28beda9824.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"山西大同万人坑发掘记事(日军侵华罪) 考古研究所 万卷出版社\",\"isbn\":\"9787547034392\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/b7413781f258699c9cc8b02c56ed007b.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"6ART工作室:美术高考得分点透析\",\"isbn\":\"9787531811305\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/84ed0e85c41147105ec0df5cdee79c62.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":2},{\"goods_name\":\"连环画课堂-西游记1\",\"isbn\":\"9787531333074\",\"price\":1084,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/1f8f10d159c7c7ea7ecdb15251a621b3.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"连环画课堂:西游记2\",\"isbn\":\"9787531333081\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/38bbac0c7f5f95afd381c41a9c982f51.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"连环画课堂-西游记3\",\"isbn\":\"9787531333098\",\"price\":828,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/e179e67c38a0dbcb11c97f2df338d3eb.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"连环画课堂-西游记4\",\"isbn\":\"9787531333104\",\"price\":1089,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/f634bcf09e30c4899c9c1970161e8ba7.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"连环画课堂-西游记5\",\"isbn\":\"9787531333111\",\"price\":969,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/6f1767fba696d3368300ea816710155c.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"连环画课堂-西游记6\",\"isbn\":\"9787531333128\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/0d6182003658b4a923676461248d3a35.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"极地线描课堂:静物篇(上)\",\"isbn\":\"9787531437239\",\"price\":1179,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/266b724dd1a57480626badbba377ced0.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"级地线描课堂:静物篇(下)\",\"isbn\":\"9787531437246\",\"price\":884,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/28d743243b8afd935c7d66ae7202ca49.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"极地线描课堂.动物篇.上\",\"isbn\":\"9787531437260\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/bb0ca916414fb45cf2709012cbe19c1a.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"极地线描课堂:动物篇(下)\",\"isbn\":\"9787531437222\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/fa505c60a80ef936a60047841ce948f2.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"极地线描课堂:人物篇(上)\",\"isbn\":\"9787531437208\",\"price\":1209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/889c2ef8c77202aee0a5de3a0fe47da2.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"极地线描课堂:人物篇(下)\",\"isbn\":\"9787531437215\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/315337ab15df0c5aecc1b99d08de2841.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"中国极地美术教育系列丛书:极地水粉课堂(少儿阶段)(第2册)(5-10岁)\",\"isbn\":\"9787531432289\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/cf40a91f62ca7e6f3fafeb4720382b9f.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"极地水粉课堂:5-10岁少儿阶段.第一册\",\"isbn\":\"9787531435402\",\"price\":585,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/ba15eaa9186b610af146576b458353ba.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"中国蘑菇云\",\"isbn\":\"9787205064334\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/98a95d3f56bc52c57825387bbdbf09a2.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":0},{\"goods_name\":\"剑桥少儿英语(第1级) 上下\",\"isbn\":\"9787560513454\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/c3a03354d2f3385b0c87348b1c7c37aa.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/13ea4a3deeaeb3ad2bd95c4cb0ae0b81.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"美丽妈妈育儿百科.0-1岁\",\"isbn\":\"9787501930395\",\"price\":1499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/602579e54056e93337e35bd161cbf5b3.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"新视野大学英语2 带激活码 带光盘\",\"isbn\":\"9787521325553\",\"price\":1200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/ebe49888f69c1d11f54a156e8a1fb127.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/49e93c87394a3f2b7b3723b9efe127aa.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/a1730da99ded7661fe80a14613bb44cf.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"管理有谋\",\"isbn\":\"9787516840269\",\"price\":377,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/d4df474cc32fcbac79b8dc1414633daf.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"各行各业\",\"isbn\":\"9787807314387\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/5d3f1604a12e3ffdc97ef6a57df03ab2.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"我们吃什么\",\"isbn\":\"9787807314387\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/db0bd50224b2b48c6e7240f73f348866.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"金钱的重要\",\"isbn\":\"9787807314387\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/fb2230b73647b95de663b63400e5d816.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"二十世纪大博览\",\"isbn\":\"6785240536990\",\"price\":3599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/1aca469bcc565f53b98b33756d524338.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/9e9503cc4a63a9f702a15cacf1ac0e50.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/eb24311146868206b4328cfabab42f41.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/f525fff5bea5d29cb3a6f61ac85c30c9.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/ce90a16977896008cf223f3a61eef52b.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"实用内科学\",\"isbn\":\"6780329857937\",\"price\":2503,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/7f895147eff4894240e3dfc8479e7a18.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/c51f34a15c2310e3bc2bea9d18376887.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/bfc526ee2878528a4a10803e636815ca.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/14d99c180ece7eed3d842036af91a8eb.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/7e2bcfcc3743801a9d6a8614fe6db451.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"千万个为什么\",\"isbn\":\"6785553099698\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/f809fbcb0dd6f820688a2b6c24740130.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/7f4abe6980032c75e6ecefe36a419d32.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/2a02ff6eb542a4092704e810176da207.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"中国渔业经济 1949-1983\",\"isbn\":\"6788428014451\",\"price\":4199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/f1351ecf96cf52df752b9ff9bbda0f07.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/96608893b5903f7f8fea6a1a36314cb8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/6b04195032afb1dced8e8b2ec423bef4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/29a763c41876b2be7720dac48eb952ff.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"辽宁省志.政府志\",\"isbn\":\"9787807114703\",\"price\":9599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/d6172a9f70520be83f0149966beb0438.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"辽宁省志.广播电视志\",\"isbn\":\"9787538128055\",\"price\":2699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/22b8ed8f5dcbfdcb73003887af46b645.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":6},{\"goods_name\":\"辽宁省志 报业志\",\"isbn\":\"6789634697540\",\"price\":5800,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/f844b30cada1baf2ca2d8de34cfef74f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/b7c382e8fe1c36b99974556d65d22d83.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"中国电力人物志\",\"isbn\":\"6786471692370\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/c182015f6e846e7bf75357486d1f9793.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/27e7fc8aff180b14d22ad1fcb543c895.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"辽宁科技发展概况 1949-1984\",\"isbn\":\"6787726583809\",\"price\":3199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/890941a880d15b4360e698453c9cc98a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/3a6a0de688c6e4c3768efc6f7ad46964.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"沈阳市 新旧街巷名称\",\"isbn\":\"6781302946460\",\"price\":2699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/49704dd3fb067a93590ab4ef5b8d7475.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/e83612bf185e71c7abec132d93d47420.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"沈阳铁路局中心卫生防疫站志 1949-1992\",\"isbn\":\"6789133568112\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/eb134ba7428938c358fc69d774910a3c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/555ec3598073f90e0efb71e687ca36e9.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"钢结构设计手册 (GBJ17-88版)\",\"isbn\":\"6786583590806\",\"price\":2399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/60f46261aa5ac490447b0d6d880f312c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/d28b361ae57ee20da8e9337226c263fd.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"机械零件设计手册 (第二版)\",\"isbn\":\"6786513689203\",\"price\":2300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/b21fa292f205e76dc18b92bdd6fae540.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/c2dcbc64996f52b2c12ff3cc1816bdf1.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"机械零件设计手册 (第二版)上册\",\"isbn\":\"6789317953699\",\"price\":2200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/0a8486fe3d1457489ceaeee185304805.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/6ac21d9438350b85ca9fa7ffb6b91aff.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"辽宁省农业资源调查报告\",\"isbn\":\"6789520898883\",\"price\":2687,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/16a676ed0b264d555fb3bac3fe3e8a5b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/a57bce7a617c50c851ff25697aa43610.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"辽宁省农作物品种资源目录\",\"isbn\":\"6781910300177\",\"price\":2799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/f73b2a441807b06e2fbc3d7ae536ebef.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/29bcb391774e659c66516f28e73a7092.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"饲料机械1984年合订本\",\"isbn\":\"6783156917778\",\"price\":1353,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/ec15352b048d7a73572fa347b03ca538.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/59dd5066aa124713487c83c93e4e5c17.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"辽宁经济统计年鉴\",\"isbn\":\"6789415005985\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/4b5ca7d9327687dd5ea66c4beb57803e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/9634c8431063f040ba46610ac29c2cd5.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"辽宁科技年鉴\",\"isbn\":\"6782192823676\",\"price\":2199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/2acee2e14ad089f9f3ece954346f4f57.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/c65aa82056463b8bb660f4f4c0fd1ddc.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"农业资源与区划研究文集\",\"isbn\":\"6785912148082\",\"price\":2999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/44dc73ad622d77deef49226c39778fe8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/0ae80f2400e183785963d89ab5e2ada6.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1}]}","source":"同步商品数据异常","time":"2026-05-21T17:03:03+08:00"} +{"err_msg":"更新库存汇总失败: Error 1062 (23000): Duplicate entry '17-9035-' for key 'uk_warehouse_product_batch'","level":"error","msg":"","request_params":"{\"user_id\":1965254774327533570,\"data\":[{\"goods_name\":\"300MW机组技术资料选编\",\"isbn\":\"6786283801505\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/3cc8d250e4a9f3f667debb9c7bb58da3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/6fdd2a62b313d1a5284501c62c80744f.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"中国历史地图集 (精装本)第八册\",\"isbn\":\"6789751923609\",\"price\":3659,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/402a038921df480b511aa16587e1d806.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/bd16fb2b16760850ae5e1d09de01aac2.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"辽宁五十年成就事典\",\"isbn\":\"9787806490969\",\"price\":3099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/077a3e1704e004ccf33fa490ba9776c7.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"世界争议文学名著金库上中下\",\"isbn\":\"9787800947292\",\"price\":4745,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/3e0bfb04aca2704b13989d6ab8f4ba1e.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中国改革 可持续性发展文献\",\"isbn\":\"6783192356978\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/782a6807fff9ecb89fcf2fcb862acad1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/eb76c3f5f23d40d1e9d0604036ff86ce.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中华私家藏书 第四卷\",\"isbn\":\"6781781025944\",\"price\":2279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/ce6f83df29d2c64611667f732c20aad1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/a5581ccee8c7c6d9531992f78cd97e52.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"国际海事条约汇编 (第二卷)\",\"isbn\":\"6787181989741\",\"price\":3589,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/1b68df445feb7a34126f35191d1faf31.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/33dc9b410b8533cf5f66e2b2e8dc26f3.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"劳动法律实用大典 上卷\",\"isbn\":\"6781681876880\",\"price\":4079,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/973457bb5ffbecf3031040e03a9c7c5c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/7b2fb93b1ab29f5e8f21ea0eb04bf47e.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"葫芦岛建市二十周年文艺精品集\",\"isbn\":\"6781235090608\",\"price\":1898,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/2e6ed7a93f4fa23e0938493438c9a1af.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/8bc6f6bdfa6840d9d400e3688aca30ad.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中国期刊名录:2003.3 上下\",\"isbn\":\"9787507602876\",\"price\":8129,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/2e9554c8f1cbd78ace12dfbebf91fee0.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"沈阳二战盟军战俘营图集 精装\",\"isbn\":\"9787531446675\",\"price\":3786,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/421a41fe41cf530a309315fbecf47486.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"依附·探索 : 苏联美术教育对中国油画的影响(1949-1976)\",\"isbn\":\"9787102066684\",\"price\":15499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/01b58921a95810fd33eb1972c9061b81.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/c2c3767711f2d02eb98a83dafd0c0508.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"男士毛衣与服饰搭配1680.个性风\",\"isbn\":\"9787506452250\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/1910e2c52bf71121f69a8b785ade13c2.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"Painter绘画技法完全攻略\",\"isbn\":\"9787302169581\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/05b234dee3db26d976be24fd442d44dc.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"《中国共产党辽宁省沈阳市组织史资料》 第三卷(1993.01-2001.07)\",\"isbn\":\"6782303429815\",\"price\":5500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/ba3fe6b125df8e3aca6d5b1e03a26c38.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/cf76fff8b0979f0ae20453b9628f99f3.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中国期刊50年\",\"isbn\":\"6787647648634\",\"price\":4599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/fdfde77b89b4c89ba7b8d5fbb84d79e0.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/9407f3ee517acdf2f320c0e61223ffd4.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"大连市第一次全国可移动文物普查成果选编\",\"isbn\":\"6786168558219\",\"price\":8599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/38ab884dbbe22004df77a90ce4afd3a4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/6b7aa4df013991a83b5e8738f0c5eb74.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"你问我答翻翻书:揭秘眼睛\",\"isbn\":\"9787533781569\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/ed7e12d8c6def382277b5a7bda716f7c.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"古筝基础教程\",\"isbn\":\"9787547700129\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/c02e215c824f96f8b42e9b493d5ea164.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":0},{\"goods_name\":\"我愛科學童話系列第二輯\",\"isbn\":\"9787545100662\",\"price\":1518,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/0ec7e767aa3b99bc980f8ce6c41cf273.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-05/34592db816aee7e96696c187f2ee300a.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"给孩子读诗\",\"isbn\":\"9787533943073\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-05/0f3897ce8fcbbae41ab3aaec7965a616.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"世界童话名篇精选.一(下)\",\"isbn\":\"9787531512882\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/cc9920279ca4bb6627678a4dad08877f.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"世界民间故事名篇精选\",\"isbn\":\"9787531512868\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/070b602f46a5f085c891c3239ae896de.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"世界儿童诗名篇精选\",\"isbn\":\"9787531512875\",\"price\":244,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/c7c1601e7dfa7c5920623402f05c4efa.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"新课标小学语文常备标准工具书 常用同义词近义词\",\"isbn\":\"6786543552275\",\"price\":2299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/68bddcf0958f37351b282fe210a322a2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-06/b0e0fe72a035f863e4798c4294cfe00a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-06/f0af707a8276bac6a46c0a4ed21eb94b.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中国古代文史巨著中国古代规模最大的丛书四库全书\",\"isbn\":\"9787546350417\",\"price\":490,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/b5cebf533786bccf16336389330b6a85.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中国文化知识读本:古代战役\",\"isbn\":\"9787546340951\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/8c0445488c4e8cff46f3fbbef7d15fef.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中国经典寓言\",\"isbn\":\"9787206070709\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/32e6901e96632696e53e7706d95d77df.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"世界名言警句\",\"isbn\":\"9787806266526\",\"price\":390,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/e8d659568a88fab162550352bfb58228.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中国文化知识读本:汉武帝北击匈奴\",\"isbn\":\"9787546350592\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/bd2dc6f618fcd91387cb84eec855618c.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"中国文化知识读本:杰出的书画大家赵孟上下\",\"isbn\":\"9787546340913\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/8d6edbd4a71a9575ccc1fe2a1b9da024.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"米芾与\\\"米家山\\\"画法上下册\",\"isbn\":\"9787546341408\",\"price\":2599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/0405d4acdd4c62487e87d198eee84872.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"文学名著精华 : 中国卷 上中下册\",\"isbn\":\"9787538714333\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/c6e77adf6124a0c94f32a66e108dedaf.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"好孩子励志成长记全十册\",\"isbn\":\"9787530588451\",\"price\":1898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/a50a60c5bfca6fb4a75845087ead0baf.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-06/c001bb97ff311b6122f2b24b9e5e809b.jpeg\"],\"location_code\":\"NS-A4-4\",\"inventory\":1},{\"goods_name\":\"道德经故事上下\",\"isbn\":\"9787503412301\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/2043a4547e8c19a64cff45702fc1eab4.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"中国茶经\",\"isbn\":\"9787546332154\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/807bc365fdd435d432918705a04f458d.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"思之魂\",\"isbn\":\"9787531331759\",\"price\":2587,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/238e579dd99e6fe2d7e479830e324ff4.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"辽宁曲艺史\",\"isbn\":\"9787561059166\",\"price\":2255,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/1b24e8f8ca92c324c62c4077225def00.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"崩溃的帝国\",\"isbn\":\"9787301235096\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/cd54a812abc86cc2be89df20c72006ed.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"犹太人智慧大全集(超值白金版)\",\"isbn\":\"9787511302731\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/cf4c775150843d663b5048631c2f9c76.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"十万个为什么 : 儿童版:人类生活、自然世界、天地万象【上中下 全三册 3本合售】【精装】\",\"isbn\":\"9787200053173\",\"price\":1998,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/52a0f9cf243f40370a97eeefff8a139f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-06/d6f0cc1e8525942a71e9917451c85210.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"盘中餐\",\"isbn\":\"9787514828825\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/9efa0fac03bc1c54d2c902b3e65b7caf.jpeg\"],\"location_code\":\"NS-A4-3\",\"inventory\":1},{\"goods_name\":\"童年\",\"isbn\":\"9787107235573\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/4ca25ac1e4a192d48e6a5f35d2524a81.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"系统科学大学讲稿\",\"isbn\":\"9787300086187\",\"price\":7644,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/bd7739c9ecd9948e81a22069c15874b5.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"心灵导师:王阳明\",\"isbn\":\"9787512509535\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/6ce66ac8114fdbdbd0f30df10e62138e.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"循吏千年:百名清官启示录\",\"isbn\":\"9787205097646\",\"price\":3098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/3e1c3f71cb6843e119925e608e061f75.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"实用食品雕刻.菜肴围边精粹\",\"isbn\":\"9787805278391\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/44a202062c66427578f480c7bdce6ca2.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"咖啡馆轻食精选\",\"isbn\":\"9787538142891\",\"price\":679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/a103b76c7785a350f34abb6997161be3.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"中国古代航运史(单本只有上册)——“一带一路”系列丛书\",\"isbn\":\"9787563232680\",\"price\":4099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/e3667a5505742bd046d7a3d3b4544fbc.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"蒋新松传\",\"isbn\":\"9787516509999\",\"price\":1555,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/b1af5ac7a77ffc663b6764aaf6e8d1f5.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"古典戏剧故事白描百图\",\"isbn\":\"9787531428954\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/79e33c339e39602c3fcf8993cefbb855.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"人像摄影圣经:专业人像摄影技巧手册(安吉丽娜·朱莉御用摄影师倾情奉献,独创3D图解摄影技巧,人像摄影界圣经之作)\",\"isbn\":\"9787805015002\",\"price\":1197,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/cefdb2a48dd3f1355a562e176b962977.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-06/6e61e11fc2ea4df0e975e8a4d680e321.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"中国画语言与表达\",\"isbn\":\"9787806742013\",\"price\":1179,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/7f5f76727dcd7968eb8ee77d8dea088d.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"星光魅影:上世纪前半叶电影明星自述·\",\"isbn\":\"9787543923911\",\"price\":413,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/5473b40e9e6123c9d974611781c57f78.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"劳动争议仲裁标准与操作指引\",\"isbn\":\"9787301191217\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/cbf0dd176fe15209359129aa020a1988.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"经济学原理\",\"isbn\":\"9787547018415\",\"price\":470,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-06/dde360c865072caea5ee53be8403db92.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"二警察米海山 李玉娇 作家出版社\",\"isbn\":\"9787506393324\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/ed8572f8098764045f272d10f85686e4.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"漫道风雨(16开平装 全1册)\",\"isbn\":\"9787805668833\",\"price\":798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/d9b8735da1d430ec40db1e5b9da5328a.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"雷锋在我心中\",\"isbn\":\"9787810584371\",\"price\":548,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/ff88fd946a3a8ea7854d7dac5b461f71.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"军机迷\",\"isbn\":\"9787535326706\",\"price\":654,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/bf384aec953b1288b617b95da3bf1da9.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"2011上海文化漫步上海市文学艺术界联合会编文汇本社编文汇出版社9787549607006\",\"isbn\":\"9787549607006\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/ec06cfb966e33eaff518d3485aab5d47.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"导弹迷·白鳍豚梦幻军工厂丛书\",\"isbn\":\"9787535326737\",\"price\":589,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/dd503064e1bfa4c423d9973ebe472cad.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"命运之谜\",\"isbn\":\"9787539184609\",\"price\":211,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/73d9a783e2b269cdc6d38d23ba95ea2a.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"审计查证实务研究\",\"isbn\":\"9787511928825\",\"price\":2379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/02047b1c261aa0a2dcc22b76a609e2b4.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"打工女孩\",\"isbn\":\"9787532761005\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-07/5066187977975f71408d3b0427d98b2e.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"小王子纯美电影原图珍藏版\",\"isbn\":\"6782767410458\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/9a0923954b70144271300e83e536950c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/8d9be36eecba4b12730e7c87bb815453.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"小王子三部曲1\",\"isbn\":\"6786163274620\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/0e562d21416eb4d63daaba1b25b6c5df.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/d2da1aedecb37d388f0de166ab8cd5ea.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"沈阳掌故\",\"isbn\":\"6784641033260\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/79484695a7d7c3e4f5a70771513181af.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"藏地牛皮书\",\"isbn\":\"6782144285517\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/592abe00141ed10e2efe8bb1e83ecbcd.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/797ac6c935719de2e4a5ea75152edb31.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/11bf49cc629da2547b2cded0e29a5a21.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/d127349bc147cb19676a0fbdfcdf249d.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"白话二十五史精选 第二卷\",\"isbn\":\"6785144962028\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/d6d616b649bf295f716d89a9a1f6be98.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/1a6f830bf6fb13213757c86e42526978.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"白话二十五史精选 第三卷\",\"isbn\":\"6783498550092\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/b9f91fe41f9f9d6415471788b128bf03.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/aa7b2cc6f481159615a48f9d093a6ba1.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"白话二十五史精选 第四卷\",\"isbn\":\"6786292922676\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/3b203dc8548c37b301712144b30fa700.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/c64b00a89abaa7d5a1f39294907b35c3.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"纪晓岚传\",\"isbn\":\"6783565213257\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/72eee4d3914d81c10875772aa3f4720b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/9372d4502f2e58787c4f28f6535532f4.jpeg\"],\"location_code\":\"NS-A4-2\",\"inventory\":1},{\"goods_name\":\"中学生实用英语小词典\",\"isbn\":\"6781127383568\",\"price\":1549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/bae70e3e91f9be6ae53a7dd0cfb7d386.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"教学参考用书 世界地理知识\",\"isbn\":\"6783580382425\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"wxfile://tmp_928be2b6f432fd1ed764803ae11a5e52.jpg\",\"https://img.pddpic.com/open-gw/2025-10-08/c13b55836ac2e8ef1240cca09b7e8b91.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"反欺骗术\",\"isbn\":\"6781639953488\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/8e7b4a654cedd89333f27c3f9d34bd85.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/3c1a977e823fbfad061d196a6ac31440.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"权谋术数大诀\",\"isbn\":\"6784892634818\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/8d6697040fac9fe950ecdeab03911312.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/5253a577e75b7efb639455adb3c512c0.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"是爱情还是欺骗\",\"isbn\":\"6781134303932\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/7d3354c7a001733344d98da5e8d0ad12.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/5c38ae8090e2b46c1e809b0490030421.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"40岁以后的性生活问题 白水百亮\",\"isbn\":\"6786844012723\",\"price\":1149,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/1ac83d937d584e054896d75ff51258cc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/049df44a8d7460b890347046976207b1.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"文艺理论上下册\",\"isbn\":\"6785718708999\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/9b9e78f19fd7cd129626bce838d7d436.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/e798bf3f604b64a146273a1b78a2eb2d.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"1962:中印大战纪实 师博\",\"isbn\":\"6789716948981\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/ef9b8c014ffd7acdc4a712d232e5f9ef.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/c7cd0e54c027e613da802aa64236a3d9.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"老沈阳:盛京流云\",\"isbn\":\"9787534413162\",\"price\":944,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/8eb3560e8ca7414ee3c36417c9b9d17c.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"一本书读懂APP营销\",\"isbn\":\"9787302469148\",\"price\":949,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/06e056396dd612d1f3d78af70c006071.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"最佳电脑操作短训教程\",\"isbn\":\"9787810658324\",\"price\":549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/1c761dcb8fa0118abe35f5df277a730f.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":1},{\"goods_name\":\"日本民间故事选\",\"isbn\":\"6782276790966\",\"price\":409,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/377ab1e8784b0fc883bdfddc6ad85619.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/94d2b2a9a5446ff25ec4fd6141b136a6.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"经贸俄语\",\"isbn\":\"6784734883028\",\"price\":2199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/3b4c968587f00616880c5c9d139cf750.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/7294f62e205499555fd4dc40ce8ae55f.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"管理心理学及领导科学\",\"isbn\":\"6787401511252\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/2326f9c4c6ce3318200249c7ef967628.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/ca0caf1fa7aaf0a26eb62a3be4fcee70.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"二十个站台\",\"isbn\":\"9787540780494\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/9361dc7506a186a130c460851635097d.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"鹿鼎记1-5\",\"isbn\":\"6781482247323\",\"price\":3999,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/a423fef9b49dc1e9817113a4be9c6f17.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/7d19ee076d15623a969d238821595250.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/19cffdafbe6494a9b586d5ae20e05cf0.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"父母格差\",\"isbn\":\"9787532796571\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/75ec72413a13e8fb8f15fad778e38daf.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"水果类农产品安全知识讲座\",\"isbn\":\"9787502636111\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/d398ca1c80dd1e1fee965a7feff1c6b6.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"戏苑宗师——荀慧生\",\"isbn\":\"9787531423515\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/0daeaceac1e0f2732a3da5bd6c1db2df.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"中国绘画流派与大师系列丛书清代四王传统笔墨的终极展示\",\"isbn\":\"9787531429678\",\"price\":819,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/54248832e4ba0299bf9586fffb74de70.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"电力电缆选型与敷设(第2版)\",\"isbn\":\"9787122138620\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/e576e80654cc62261cf832d8ed84d5d5.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"毛泽东诗词欣赏\",\"isbn\":\"9787101070927\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/87a6b1b62ced5a5239206d830e24fc86.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"实用俄语语法 (词法·句法·练习及答案)\",\"isbn\":\"6781810828976\",\"price\":2199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/a5391a4562ce23939de5e29826500c12.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/cf8b1ec2d709c6df7a95d8c96114bacd.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"爱国主义简论\",\"isbn\":\"6789743512435\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/712b2b4647afa35ad7ef4c34adc37d1f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/c40194fc67d2cbe12dc2ee9f01ce8341.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"拜厄\",\"isbn\":\"6789575476235\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/eccc4d8165661516dfd93f0951d4380d.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/948b47c956a30b9b26700a660389d173.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"新产品开发流程管理:以市场为驱动(第5版)\",\"isbn\":\"9787121374548\",\"price\":2032,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/82087c550b2d30b30e1d297c8739ef5b.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"异性·风采录\",\"isbn\":\"6784694666980\",\"price\":559,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/d002f1802dc4f8622499f83b642d5662.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/9ce7cff84be5e67fd0e04462bb3a0f5d.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"哲学思想宝库经典\",\"isbn\":\"6789927950384\",\"price\":2999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/56ef258a339f22d82f6025e1b3eee542.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/bc901d0af053f6f31b5dbdc4f9454fc1.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"《漫画月刊》 作品集萃\",\"isbn\":\"6789884690912\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/55de3fc624720d11da0bf222b68f51fc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/9f42e55ec1a6e434cbda9cbd236b7e2e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/732b895c23b8a94d7579e8aeb07c0b92.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":5},{\"goods_name\":\"刽上下子手之歌\",\"isbn\":\"6782838212855\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/55cfe26e804dbeae8641497f936ae31f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/296ca3643256e37f8b964a561d64af70.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"长篇章回大书 呼家将上下\",\"isbn\":\"6784026443866\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/27d2a9535f7c3d1ba7a9b115171cd78a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/3ae743a887f865ca0a6feba94b3b22d5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/13530a26c44bf353eb118833f4d39517.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"则天女皇\",\"isbn\":\"6784282798651\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/08850776c71d2e7900020f66d16973a3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/9b9602c06295efefadd48d4e7ea945de.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"桥隆飙\",\"isbn\":\"6789863188568\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/ca8c24522f6b2d9618c22de01b54016b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/128ec9e7d65121a9f5442fbf6dfa8855.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"教父\",\"isbn\":\"6788500549833\",\"price\":582,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/d147d06d240d64645d4c663d502cb834.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/21893b6f4c5ce51e83dee087555e56a8.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"中国文化知识读本——笔著华夏—郦道元上下\",\"isbn\":\"9787546341057\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/9889b6e4a53c0640e0f8dc9130882f5d.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"三十六计全四卷\",\"isbn\":\"6786411018350\",\"price\":3990,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/14fd6e59970f8b079932e45e6483c3cf.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/64aea7f8d41bfc993c21b2d4d16488dc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/f7613735f5a2cceaecd01f1d77df44dd.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"资治通鉴【典藏本】全四卷\",\"isbn\":\"6784003161045\",\"price\":2990,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/06f69e1ac653c27d7710d46563deb9e3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/4461cc2b00de066d5e4fd3a1772b9dfa.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/a07ef9aa4b7634d5084aac73c5f64882.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/1182614217be0491253d0d79f420c0b0.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"园林建筑工程与设计 (上册)\",\"isbn\":\"6781056630469\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-08/3678c35184149022e764df871a2347c9.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-08/2458e9ebd2e048aea75787016b72938f.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"英汉词典(精编版)\",\"isbn\":\"9787119047256\",\"price\":1322,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-09/8e6166d7aa9d7479f306c95fed8aaf06.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"英汉词典(精编版)\",\"isbn\":\"9787119047256\",\"price\":3379,\"appearance\":\"90\",\"live_image\":[\"wxfile://tmp_5175ea7029ccc8ebbfdba85f91c070895e57dea3dd4209fe.jpg\",\"https://img.pddpic.com/open-gw/2025-10-09/11fed6f614d1dac28e8192d0265c3454.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"英汉词典(精编版)\",\"isbn\":\"9787119047256\",\"price\":2380,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-09/f10672e29ddde8b55c6165da9c634fdb.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"英汉词典(精编版)\",\"isbn\":\"9787119047256\",\"price\":3388,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-09/82af9c3f953ae42fba2b7250e635d418.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"陸小鳯全三册\",\"isbn\":\"6780999478876\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/896c5435312c54e6e91880fc494479a6.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/26ee223d75ab945fb52b04163da26699.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/b77947e7f07141e9ca34e8a559336155.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"倚天屠龍記全四册\",\"isbn\":\"6782820508594\",\"price\":2349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/e698e69c5198b8237839fd0e08aa96e5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/cf94470a4f150108de20e7689a6d2155.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"呼家将全两册\",\"isbn\":\"6787273635601\",\"price\":3199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/e6dfa5ef845cfdda0d40937849b0864e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/61543a3f09194449816c81da71c527d6.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"绝代双骄全四册\",\"isbn\":\"6783588505793\",\"price\":9899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/6fbe9ba6ac7e60a8ce66bb7e5cd36c88.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/265295ee3438a1f1bcb0fb339b3a9f5d.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"飞狐外传(附续集雪山飞狐) 上中下\",\"isbn\":\"6784567881169\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/1f0675f7a72bdf9c2e0d6557f77c571f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/bd5835e87de21f8561204cb0c2b3fb77.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/1753b339ffb8fbfa88b591ca67fe3c2e.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"米小圈上学记\",\"isbn\":\"9787536588196\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/10d929ea277d220b38125937a07464db.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"米小圈上学记\",\"isbn\":\"9787536588103\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/d5169082842168c9c70f63981371d231.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"暗杀局\",\"isbn\":\"6788373854693\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/1777bef7263353ddd77fadd8c8125d32.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/f19c1181ae40694a0ac892c2fd1d3ec9.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-10/f4cb009f7b6ef5eb2aab89c2be899ac0.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":2},{\"goods_name\":\"大逃亡\",\"isbn\":\"9787219030394\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-10/97056717bc4db219b2a0bcb527f6b44c.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"儿童沟通能力养成绘本:不要急,等一等再说\",\"isbn\":\"9787541495526\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/d8c6b5b5f3574e38eaf54127e0bd7fa1.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"儿童沟通能力养成绘本:不要哭,清楚地说\",\"isbn\":\"9787541495533\",\"price\":248,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/a7d3179612bde928fa346083378ae49e.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"儿童沟通能力养成绘本:不生气,好好地说\",\"isbn\":\"9787541495519\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/0cc162ee762225384a3e8f0d17d4bad6.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"儿童沟通能力养成绘本:不固执,恰当地说\",\"isbn\":\"9787541495502\",\"price\":500,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"原来这就是二十四节气(儿童绘本3-6岁套装全12册)\",\"isbn\":\"9787518613229\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/a77139a0b87d8f01d1649e0b5769eac1.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"儿童沟通能力养成绘本:专心听,听完再说\",\"isbn\":\"9787541495168\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/c90c7c3a149522e1e3fd03318377c7b2.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"米小圈上学记\",\"isbn\":\"9787536587748\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/1d55c8b1628d122451bd12d80ec54aea.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"藏在地图里的古诗词\",\"isbn\":\"9787557203351\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/aff2b556098da722b34b32ad2cf2f73c.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"毛泽东思想和中国特色社会主义理论体系概论\",\"isbn\":\"9787040566222\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/68f1c3becc0c700dfba496f783e03701.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"站成一棵树\",\"isbn\":\"9787533261221\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-11/fe4d09245e6a6b9bd0aa20e7482253ac.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"卖火柴的小女孩 郑柱子 陕西旅游出版社\",\"isbn\":\"9787541811180\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-13/4516dfe775534d5f16dd1fcc0fed3e96.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"啄木鸟 2017年第6期\",\"isbn\":\"9771002655000\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/3b9b98456f4c7a6bc90d8dd7cf250414.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-14/00728cdeab0b7408c2bfb9b1b6955e53.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-14/ad1e0c0b52a445fa78a530c33e3011a8.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"颈椎病诊断与非手术治疗\",\"isbn\":\"6780684930785\",\"price\":1499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/6174a73cdd1e6728721c2e258ade356f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-14/5c39ec7e1f3db7ef9bb2a2bd09cfb3bd.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"警察使用技能训练提要\",\"isbn\":\"6783836520589\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/10dbccea815e5acd2f429d863747d1a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-14/39720d36dd318034cf7c4e816df66339.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-14/ec4254a37447a41ccb4d4e5b3f64ece4.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"七日瑜伽:减压安神 (内有碟片一张)\",\"isbn\":\"9787538153705\",\"price\":1628,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"英汉词典(精编版)\",\"isbn\":\"9787119047256\",\"price\":880,\"appearance\":\"95\",\"live_image\":null,\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"春江花月夜\",\"isbn\":\"9787532603893\",\"price\":616,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/0db336c847160d96f3403816be04752a.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"家庭生活万事通\",\"isbn\":\"9787538176780\",\"price\":893,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/9d2b77463068617c905fd8db0cb97060.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"爱国日记\",\"isbn\":\"9787544108980\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/b45f1faa4e4f15786c16a569566fc3b3.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"古方养肾治百病\",\"isbn\":\"9787530888353\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/19ffe65540aa333e0972ce76c7e58857.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"怎样让孩子听话\",\"isbn\":\"6781471361595\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/fa235cd00effbca7bbd63154fe83ac72.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-14/248c8914ef5ee45a283404570f2fa810.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"认真学点语文 专家教授谈语文上编\",\"isbn\":\"6784667406521\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-14/1a773c159ebc630a7a8053b5039f3add.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-14/28fc05a3d27eeba98882085ffc1ee966.jpeg\"],\"location_code\":\"NS-B1-3\",\"inventory\":1},{\"goods_name\":\"会计辞海\",\"isbn\":\"9787205014025\",\"price\":855,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/4e37f17b22050d3950a39377b5851093.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/5bf15ff1890ab75df2d2faae0e0b7be5.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"企业会计制度详解及实用指南全四册\",\"isbn\":\"9787501752041\",\"price\":4897,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/aeb9e05c4c93ab1892268e2e358dfac0.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"最新费用成本核算控制手册\",\"isbn\":\"9787500537960\",\"price\":3159,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/945349060887d9cf9678b3db6e3456eb.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"0~~5岁婴幼儿早教大百科\",\"isbn\":\"9787538440287\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/a52bb575b5bf7d75c132e41c8093d022.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"做人的糊涂哲学\",\"isbn\":\"9787504458926\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/394d84731f3912b871b24e81ba02759a.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"小学生新课标作文全能一本通\",\"isbn\":\"9787530410301\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/f0fefa5f2fd141ec90d1b9fd70359c61.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"夕阳美太极功夫扇\",\"isbn\":\"9787801780904\",\"price\":307,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/2160445d8f6dea0f3937926de65d945a.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"手掌按摩健康法\",\"isbn\":\"9787227013846\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/e564119268727c8c9405592dbc673c14.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"东北往事黑道风云20年(1234)\",\"isbn\":\"6783984376277\",\"price\":9000,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/e9c776467367ee2fd4217a01a0dd30e1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/71a465f16b405261d9a11189fb5a49da.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"中国老摄影记者优秀作品选\",\"isbn\":\"6786397838992\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/de763e4539f8460bce53f07a159a07ee.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/892474235a8476910732074dcc71dabb.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":3},{\"goods_name\":\"实用蔬菜贮藏技术\",\"isbn\":\"6785987020377\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/7eed3305ae2054e814ea3ab3888a8cfe.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/530964a3938e13745ad160d2709b0ff0.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"谈内蒙古地区养鱼\",\"isbn\":\"6782878132223\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/de957ae8f815dbefc0a37366399c9bd3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/e0fd162030413a27457edaf0d1326f09.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"现代汉语语法知识\",\"isbn\":\"6784721934084\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/49f5bc165de0fd129ae36cf82ebf29bf.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/a862ec570dc0501f68352c83dc518820.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"洪秀全演义\",\"isbn\":\"6783061206201\",\"price\":795,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/729dbcbd87c68f0954bbcf5a336743fe.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/388988286fd741777f76511a57f04513.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"秘传道家筋经内丹功\",\"isbn\":\"6786890241619\",\"price\":1587,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/eaa7685cd4f30a725a15c893591b712b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/7dc1645a8dcc25c5bebce85a4323cfd2.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":0},{\"goods_name\":\"指肚搿亲\",\"isbn\":\"6781285444340\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/ab508f214d44dd9a4d1455248a100d54.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/2c2c90b94da299d2bd2b3f512dc8d18d.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"名人梦兆\",\"isbn\":\"6783232767444\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/8c91890d5885f5240d8b01a8b292cac5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/d366cb86751ad651a950a7ed1e9c7800.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"船\",\"isbn\":\"6781111887857\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/a4ae2ed730c274199a75f9eac1223e07.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/51d766be504881a0f90b7936162ba7b1.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"圈套\",\"isbn\":\"6788586613003\",\"price\":649,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/5b508e96b18a29eca873be9b9dbda310.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/e43dbf2ec795bc557b39e24ff50da329.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"灵与欲\",\"isbn\":\"6789132594660\",\"price\":1049,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/009c84377b8bc8e3ae33db0bf795665a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/a13a9ac901d779b11e3d314526d38b85.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"冠心病\",\"isbn\":\"6788249638823\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/1389b36bddd1891359fb721d45527470.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/f831f0bb13e0851b39b434398f9a0625.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"中国文学批评史(上卷)\",\"isbn\":\"6787639582184\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/cb862643476b99cd062335e1d3a38d4a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/d46b1f1507e9b3d73ca128ff2907760d.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"机械基础\",\"isbn\":\"6788001422703\",\"price\":319,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/7c32d8bd716112d5b1c17d791b7c5449.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/743749f8aac6c865711096456c67e856.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"中华传统礼仪礼文\",\"isbn\":\"6783886150598\",\"price\":297,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/cadac7394a0671d589a22101fcd0fa6b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/4959e14659a9ba3b9d545d1197fad3f9.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"民间实用社交应酬大全\",\"isbn\":\"6789537708164\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-15/efd5588603f18c214ef085bce1750e9a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-15/0e8d80cb10d0a908f60b6795b7210ee5.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"蝴蝶发笑\",\"isbn\":\"9787205085360\",\"price\":1178,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/503531e80151142d8a18db4b3810ee3c.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"物权类司法解释小文库\",\"isbn\":\"9787802176713\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/0844a557031cf12aca5320aa4d9c8ede.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"慢慢来,好戏都在烟火里\",\"isbn\":\"9787577203713\",\"price\":1143,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/83868d0c126084e7dd23e481cafe01ac.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"红墙内外的独家报道\",\"isbn\":\"9787505930759\",\"price\":978,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/8fa4be0d3af7a874c3b967fb75e7a0b9.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"中药外用养生\",\"isbn\":\"9787538123371\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/7e989322af1b8fee0a437f0d2d61dbbc.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"隐身奇术\",\"isbn\":\"9787806012758\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/2167fa16064c3f48dbfa248b28fc2ea4.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"长夜难明 双星\",\"isbn\":\"9787572613012\",\"price\":1182,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/fdc9ad30b2a04a6cb7222ff7f879d8a4.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":0},{\"goods_name\":\"太空帝国\",\"isbn\":\"9787531567882\",\"price\":897,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/a1a5d0000191eb50b22b92529af60670.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"辽代官印汇考\",\"isbn\":\"9787561060513\",\"price\":10499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/b941d2e0cc928c5082a835a7a73d9036.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"微距摄影艺术\",\"isbn\":\"9787115219770\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/28c38c2b98ccc37edc392d91cdaec9d0.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":0},{\"goods_name\":\"国兰鉴赏与栽培图解\",\"isbn\":\"9787538140941\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/e16a24c2744758b284693f4d072f9122.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"中国君子兰名品鉴赏\",\"isbn\":\"9787503889240\",\"price\":1859,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/aa20a830e880fc9fee9d96465f4e27c6.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":0},{\"goods_name\":\"君子兰名家精品集萃\",\"isbn\":\"9787538154207\",\"price\":3356,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/c1a3f487898134a49ef166415c8b759e.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"秘密花园\",\"isbn\":\"9787544832953\",\"price\":2094,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/079bf5915bd543f3ca88d763783b7063.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"鲁迅美术学院作品集 有外盒\",\"isbn\":\"9787531418870\",\"price\":3599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/fb3e90921ff50109ca20b7ae019593ad.jpeg\"],\"location_code\":\"NS-A4-1\",\"inventory\":1},{\"goods_name\":\"民国黑社会\",\"isbn\":\"6783437902987\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-16/49c1d03e36beee136ce9169ccb55214c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-16/adc850e84402cd21eb31805986a00e09.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"阅读和欣赏 外国文学部分(二)\",\"isbn\":\"6780653961693\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/f5ba8a874fcc9ebc3ee1c09935fc333c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/9b94174dc7dadfab7c22000e84ecaade.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"厚黑孙子兵法\",\"isbn\":\"6785751566423\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/d8532220778cfb410cb9c1f8ca8005d6.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/9cf36a6d050c55d9e685a111fd0bc626.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"机智谈判术\",\"isbn\":\"6780022728759\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/73d7ff9d4d4f71c409d3cdc7dae811e2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/741f3a06e5b0459baacb0ac0d7b12756.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"《十大古典白话长篇小说》丛书 封神演义\",\"isbn\":\"6782608196783\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/8ca43a7a3cf3dbbe80bb1e875cf6ec56.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/37e54ae6174789cb4cde0105adc976b5.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"元明清文学作品选\",\"isbn\":\"6783341091019\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/ded74f5f21ee2285ff0fb485ab199a33.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/b0472943228d1cb159afdd96e0b0a5a6.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"艾滋病及其防治\",\"isbn\":\"6786256885344\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/6228a8a7e03238c331b1b8e5ff743cd6.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/0e0dfcdffd669d614aa725954c51d0cf.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"护士教材 下册\",\"isbn\":\"6781667863562\",\"price\":501,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/d9391ab604bfa95d4789d89fd562f9f6.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"心理疗病术\",\"isbn\":\"6787499137646\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/22078e0074e7fb63a63e986c7e39bc65.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/a3e9383e531e4f2995cb24c594178b48.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"数学的童年\",\"isbn\":\"6788638188155\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/b3652463684e058a1f4e411f87e79050.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/b03955ea24d46c12d63aaa810b3d34c2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/9572d7d2f5b7f7aebd2c7dd93723a571.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"白话诸子精华\",\"isbn\":\"6787925758412\",\"price\":400,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/f70e763a8c5441353784a962d387b162.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/f8bae2dfab6b5737a3c9546bab7f9b28.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"蒋经国自述\",\"isbn\":\"6780794750845\",\"price\":400,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/2337ac6419327ee9596f1283ad3ac6bd.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-17/c529bb5708b089bf23ea25fb41c560da.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"背景(上下)\",\"isbn\":\"9787805957814\",\"price\":600,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/8b0ac21ae889b2cf78ba1badf2e7e3f9.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"中国古代改革成败论:湘岩文存二集\",\"isbn\":\"9787561046784\",\"price\":1499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/874de771fc41e782fb911a4393541976.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"朝鲜民族古代汉文诗选注(编注者签赠)\",\"isbn\":\"9787806446034\",\"price\":576,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/5e8f1f2da51585164fd3504a27958711.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"诗词赏析句典\",\"isbn\":\"9787538257298\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-17/8e8fc4f26d7ca9ac09dc25a5e8d6413c.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"实用抗血栓个体化药物治疗手册栾家杰主编安徽科学技术出版社9787533769420\",\"isbn\":\"9787533769420\",\"price\":2892,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-23/4b984180bf09a1fdcf26e11952c468c6.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"实用抗血栓个体化药物治疗手册栾家杰主编安徽科学技术出版社9787533769420\",\"isbn\":\"9787533769420\",\"price\":2089,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-23/552d3953c79b14b56c97af0cb81c4a55.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"恒此今生伴美玉 : 非遗传承人李洪斌大师玛瑙雕作 品集\",\"isbn\":\"9787544148405\",\"price\":1398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-25/1e69ec72a490506829a98f4e5dc2ff01.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"七日瑜伽:减压安神\",\"isbn\":\"9787538153705\",\"price\":1661,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-25/a9645d7ecf9a369cd6ffa35b6db55f81.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/720937e44fd742fc582300d9395be76e.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":2},{\"goods_name\":\"书名大国医谈健康\",\"isbn\":\"9787505141094\",\"price\":2379,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/61904ff8a87a8d1b51c8c796f8c2b291.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"儿童钢琴初步教程(3)\",\"isbn\":\"9787805530383\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/4e4f9eb6ae6e8951c7378a10c266b109.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/4c62690cbca3497edcd3f3f7192261f7.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"儿童钢琴初步教程1-2\",\"isbn\":\"9787805530321\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/7bc281c4f912a07eb5b0b534296947f6.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/efccaff7dbbdfde7701dc55c55424346.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"钢琴基础教程1-2\",\"isbn\":\"9787806672709\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/674e995f88b1f1ba15d6d5e99514f85e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/4ee0cca1d11788119f9db8f31bfa3722.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/35b40ff6f36ef177130c643d51aa3d66.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"柳琴考级曲集\",\"isbn\":\"9787806927786\",\"price\":5078,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/838d95e696fbfe0fbdd6869fd5a870b7.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"柳琴考级曲集.4\",\"isbn\":\"9787103048696\",\"price\":1301,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/984c417b2c93c0b1439fdb48499072b7.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"柳琴考级曲集3\",\"isbn\":\"9787103048689\",\"price\":1693,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/17099d1983a8a5762fd39952893e3ae6.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"柳琴考级曲集2\",\"isbn\":\"9787103048672\",\"price\":1065,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/618b6f00b58f6e1d0e226982010e9a34.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/a3694f6024d2619a9a7669c8d82ad59d.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"柳琴考级曲集1\",\"isbn\":\"9787103048665\",\"price\":1322,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/1f6ef85dafeb2d589dfce437d1881a50.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/bfea9f1468bb423ac15ec677f482aa39.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"正版实拍 评剧著名唱段选析\",\"isbn\":\"9787103020111\",\"price\":743,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/d99cbfa0af354186fa9c3e806a02f3db.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"《布格缪勒钢琴进阶练习25首》作品100(大音符版)\",\"isbn\":\"9787103060100\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/b078d0cc5db52e6ff8b16339c73641e5.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":0},{\"goods_name\":\"车尔尼钢琴流畅练习曲 作品849(大音符版)\",\"isbn\":\"9787552316582\",\"price\":1196,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/288b8deed0022b492acf4e1108c2373c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/395ab08b61c841672db7b04f8808a19d.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"莱蒙钢琴练习曲\",\"isbn\":\"9787544491099\",\"price\":952,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/8deeeccec4d377465956133f85e84fbe.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/9cd2b28746fd09a0186d7857be073130.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"久石让钢琴作品精选集\",\"isbn\":\"9787540445119\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/49a4558707c3156aebd0b74c45fedf5e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/6dea3609ee7535748b0fa2a5f5dff255.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"车尔尼钢琴初步教程 作品599 大音符版 西洋音乐 音乐出版社编辑部 编\",\"isbn\":\"9787103056066\",\"price\":629,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/6bafff34ffe2346a200b79f7205dcdcc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/8696c134f91b70a3cd05f8ee2310382d.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"中国音乐家协会社会音乐水平考级教材:全国少儿歌唱考级作品集2\",\"isbn\":\"9787539630007\",\"price\":488,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/db30a278d34f393e002d0f5f90f2e7d4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/6de6aa3c7e6bffa242c42eaf525819c1.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"钢琴考级作品 第一级 第八级 选自2021 2022大纲\",\"isbn\":\"9787103060247\",\"price\":3646,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/896290e5cc50f1b0012554f12c2f48f1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/7892049c409c2fcbce0f42a8491dfd50.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"巴赫法国组曲(BWV812-817)\",\"isbn\":\"9787544446617\",\"price\":572,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/2f0deecd61dc3d5a57afe37d8e602cb3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/31d598693ac2da0e4fd92e25e4018c56.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"阮考级曲集(小阮、中阮、大阮)\",\"isbn\":\"9787806922637\",\"price\":1798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/2d26c223919f199a962418402cace171.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/02b5533ede50a5cc0896bace95152cb9.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"给孩子的五线谱本\",\"isbn\":\"9787540486105\",\"price\":333,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/a8746f4f4516b43f39da4da03e624daa.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"我的皮肉生涯\",\"isbn\":\"6782815382677\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/bc648211fe6a5ef952ec3b8ccc3a6c07.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/b3bbc47cde11e1f19833ef22174381b7.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"《金沙》增刊 你喜爱的歌\",\"isbn\":\"6788920826942\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/0d90d4a4c4ab351e56ad3bc1d0d4a4c5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/a9422e14b8c0667addb217acd63088e5.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"《金沙》增刊 你喜爱的歌\",\"isbn\":\"6787259460381\",\"price\":1102,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/20ca06e5d4220b6c09fea752037dffcf.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/7501aa0794b73d02e44297a13273317a.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"少年电工\",\"isbn\":\"6786529988171\",\"price\":779,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/974ae56bbc2a68128c5d197e46384853.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/0e1164d6045175f1e02d4a2594247f94.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"思维技巧趣谈\",\"isbn\":\"6783874858748\",\"price\":529,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/48c29e41cc39f6025c3b2e1676743048.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/c89f3784e21804b4d8774e415519f625.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"中学生作文竞赛获奖作品\",\"isbn\":\"6786123612286\",\"price\":1787,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/23230d243c99c9c873492f79d5cc21f4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/ddf64cf5d1837de9adf03f6ecf816577.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"初中数学学习中常见错误分析 张子贤陈京文\",\"isbn\":\"6783806214345\",\"price\":549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/9024ef14fd05c0dd1a4ec393b2cc6a5b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/4b84cbaec5dc50689673335be14353be.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"全国美术院校研究生论文选(一)\",\"isbn\":\"6787333645820\",\"price\":2199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/58704da8b1a231e0559be22d1135303b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/f8594dbe2942421334a9ae6b9d4f6e30.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/6a9a6a7ffd5f2db48340ad5c91388869.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"太空漫游:宇宙中100个令人神往的目的地\",\"isbn\":\"9787555105220\",\"price\":1898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/d3090a8523fa0692f9772928a352a8e8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/e0154030832b165609814ace22136bb6.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"画说自然 林一白桦水墨画辑 吉林美术16开\",\"isbn\":\"9787538697667\",\"price\":2499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/de0a66738bf64cc8cccef203d7f33b0e.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"棒针编织2180实例篇 阿瑛编 中国纺织出版社\",\"isbn\":\"9787506445306\",\"price\":729,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/797839773da614893f631ff5cd5e533f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/6a7880d7c2f6583d815b306598d0e958.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"水墨画马技法研究\",\"isbn\":\"9787536810068\",\"price\":1698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/86400e87cd6d7f87507f0a0211f27b3c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/27fa496e043bc34d0f7abc26f2a933e5.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":0},{\"goods_name\":\"南一先生移植古琴曲集一\",\"isbn\":\"9787115475138\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/f5bed61b93b6061a4f4a7ca814e4971b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/283d2e91c18b26fb2ebca49f2755df08.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"经典棒针钩针花样\",\"isbn\":\"9787543928053\",\"price\":1079,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/b4160549e5cfc7dc532c28e6de762a8c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/cb62de5556269f3e72773dde939b11cc.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"英皇乐理线上考级(五级)模拟试卷\",\"isbn\":\"9787515362120\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/91da99766ef8a6ef64576662b5719b56.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/5f337b1cbaf7e8a9698a723e20663eae.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":0},{\"goods_name\":\"柳琴演奏艺术 北方文艺出版社2011年1版1印!\",\"isbn\":\"9787531727019\",\"price\":15799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/8b35be81e6a313f963ecaf66547d1476.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"人体造型与人体形象\",\"isbn\":\"9787530505700\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/9dd14a262439293691f1bce2d372cd2e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/519e75cb219bbac5d399254c91de38c8.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"手工坊2007时尚毛衣编织DIY系列:女士毛衣编织实例(秋冬篇)\",\"isbn\":\"9787506445269\",\"price\":679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/e6ad39f6e98aa2cc8437cfb6decf32c3.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"编织家园2008\",\"isbn\":\"9787506439848\",\"price\":397,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/3a730221908958c781fbd953be480df3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/0d8c56960cdca04a3d5560720af9f381.jpeg\"],\"location_code\":\"NS-B1-4\",\"inventory\":1},{\"goods_name\":\"么喜龙书法艺术展作品选\",\"isbn\":\"9787531432494\",\"price\":3599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/b3556ddc441555b7b2947ace8faa0f96.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/dd6fa99896439928f6f1561788e14738.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"彩图版小学生必背古诗词赏析辞典\",\"isbn\":\"9787513806077\",\"price\":2334,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/ed4c8200334f5ea042e8506b3d93f087.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"辽宁教育史\",\"isbn\":\"9787806490044\",\"price\":2399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/757622f1410f90c4a1d1ef3174c9d52a.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"若叶心情第一辑《 享受快乐的单身生活》《一枚戒指的距离》2本合售\",\"isbn\":\"9787800057861\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/1ffcc213aeb58ce318809b5181cdd873.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"生命与信仰 克尔凯郭尔假名写作时期基督教哲学思想研究\",\"isbn\":\"9787214058911\",\"price\":2576,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/12549a0b6aa8d3449df2668fb41f8aa8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/6c005335034306fa4c41c51661098e29.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"天赐奇茶——解开土家族长寿县之谜\",\"isbn\":\"9787109220706\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/cbf9446c68811e199f146798965c7d59.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/0d5d947a16efbccaf9b2165e8c77be05.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"三毛散文全编 全十册\",\"isbn\":\"6784926858439\",\"price\":6399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/809bb376aae7f3bd60374d3a8b4849de.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/36f9295d6baedfe75442c912fc0095f0.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/74fa18245e8e524301a7f99fd41698b1.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"古典名著普及文库 全套\",\"isbn\":\"6785156785144\",\"price\":5990,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/310b346ad91ef38c0fc4f8979b9a8ff2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/363cd10ab95efac9ac34118fa17dcfa1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/72f19d274b60e9529e9aaef3c12fd6f3.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"职工业余中等学校高中课本 数学题解\",\"isbn\":\"6788526033373\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/f5e519abccefd08a6281fb814aee0a59.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/25d0a56a87a9ed6ee4da4417e1ad91da.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"板金工下料基础知识 (第三版)\",\"isbn\":\"6786244472298\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/6f3c0f20f47a09cd61fdb6aefd22418e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/ed639d334eafc16d0d6ed43da58eb114.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/7b7800c8cf9d5d648fafffcdf4d14779.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"趣味英语语法(一)\",\"isbn\":\"6788725020385\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/931f9122c67ae96492eeae7ca50dac02.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/d622315d95491e5d604fc709dd929cf7.jpeg\"],\"location_code\":\"NS-B1-1\",\"inventory\":0},{\"goods_name\":\"新阳光英语·听力过关 初中版\",\"isbn\":\"9787530352656\",\"price\":2479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/e6d49e91639fd444be031b91defb93bf.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"咽炎与喉炎\",\"isbn\":\"9787532350575\",\"price\":398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/0636bf2d43fea9898dd42829d74a878c.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"家庭问题二十讲 (修订本)\",\"isbn\":\"6788265952275\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/34fed832565c47280b31c63f50bb8687.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/1903f895c7876ef53213bf5e1e456a39.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"星光卡拉OK大全\",\"isbn\":\"6785956795506\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/9034bfcbeb51f3578f73f4ce0a457b8c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/637fb2b52c61193ac73781fe34bb6ba5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/678aac905c158a1f6f1a43de00fbdaf6.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"怎样打羽毛球\",\"isbn\":\"6784844950693\",\"price\":309,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/26362190042104157e184c017d1de65f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/e09eb606a8a57f6cddc392c367fff5ea.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/04fc541cc4b1fc9fd88cb7248d297614.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"中等师范学校美术课本 美术鉴赏\",\"isbn\":\"6785167764736\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/b123978ec87f63d506a95ba48e66e59e.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/f5fe8a661f709f21dbe8f4abecf9a822.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"写作知识\",\"isbn\":\"6781820496390\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/f6a70310c3d4209906746b57da9664cf.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/7c4b40ccebbc0893787bf00b756b2254.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"小学语文教师手册\",\"isbn\":\"6788134001152\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/cd72d6d3c45aea15bb9394c2b3bb0626.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/a93b8fde6d087d608bc29d5759f553c1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/797f81c86c1818163205344cde4b7510.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"浪花集\",\"isbn\":\"6782495926014\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/68c8cdb46dd003d48ffadb138717fbb1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/0e2349e52d9175ab344da491f6f38b8c.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"进化退化与遗传\",\"isbn\":\"9787801440419\",\"price\":248,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/246fac6b72a602b79019ac965f5920df.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"木家具工艺\",\"isbn\":\"6780427840855\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/3edda5fb76047a307f70af316b53ebfb.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/3b4606b87f8c6cb24b346c6ea973118e.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"中级技术培训教材 机械制图\",\"isbn\":\"6786195733198\",\"price\":2699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/a422a8978f896265c78c19fd95b76b30.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/933d2dbaa6a29aba5654b1697aa231e8.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"服装折纸条裁剪法 (修订本)\",\"isbn\":\"6784590517065\",\"price\":3099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/6235a015d0bf7866f217cb82f5cffaef.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/9e1c49b06cba9dafde298c68d93a4546.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"草法金针\",\"isbn\":\"6780153151382\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/5130484e1c084fe5afa783561f04f0bc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/cede4c339959b65ce347de7a78b9600c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/546dbedf5b14373698800579f43aa881.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"乡镇电工实用技术\",\"isbn\":\"6788192852418\",\"price\":1798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/8bee3fa8ef7cfcbe74e73d6001065aec.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/81218fe215665c8f0ffe9fc937b5092c.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"家庭小菜园 大蒜\",\"isbn\":\"6787237056570\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/1bb46d6770946d10ee26286c9c513438.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/dbc42892993c27557e3ac76e1c838a22.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/c7b7a20a35dd1dca02f75371058747fa.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"围棋基础教程 初级篇\",\"isbn\":\"6788985853022\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/322c535ba6a3a3400431d7d38e67bb25.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/cd7463a664ccfe32d7e09bb8a1525e11.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"不等式 华昌年吴荣宝\",\"isbn\":\"6789736770735\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/cf49a43740909404f29934b65c1df8e5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/a28c47a94b9449162274fe1cf4574177.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/fc8cde13cdff75226f2f8e87b2bd78ce.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"中学生作文训练\",\"isbn\":\"6788394514191\",\"price\":488,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/d5389f893e9ab5bcbaf95cc621032831.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/302095c481c7580327b7f88cc8d003e8.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"精选名儒草堂诗馀\",\"isbn\":\"9787538265026\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/bc5673ec5e77cde03c9b2c56cc6df28c.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/e5b813e5c7a715451138aa9a30875391.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"翰学三书\",\"isbn\":\"9787538265019\",\"price\":3699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/2bfe2d0c64602e2bea7fda47318d82a5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/0dffbdaea3f9312ab24a85291f9cbe9f.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"竹笑轩吟草\",\"isbn\":\"9787538265064\",\"price\":2679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/badf6e3021a2ce84f3560e3d641cc4dd.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"任之堂中药讲记 修订版\",\"isbn\":\"9787513260084\",\"price\":2135,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/24f4f9ae795f6612d994b1633c89a491.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/3fd7c710054241d6346d31e3b6eef9ed.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"恒此今生伴美玉 : 非遗传承人李洪斌大师玛瑙雕作 品集\",\"isbn\":\"9787544148405\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/b185edc5db5be95f682c1dcf018d4dd4.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"无障碍阅读全五册\",\"isbn\":\"9787100089456\",\"price\":1555,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/e040128dad729d19e6265c45bd2c442d.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/8449aba217685d790f4d1ec3b2a72f91.jpeg\"],\"location_code\":\"NS-B1-5\",\"inventory\":1},{\"goods_name\":\"牛僧孺年谱 签赠本\",\"isbn\":\"9787806383483\",\"price\":15599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/2e64819a704dbc6c68e6d5fc2044758d.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-26/64435f9f2191321f5731aef9884559c5.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"国学经典文库 千金方\",\"isbn\":\"9787533554194\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/1bd3bb1c1e300c0104485422cb202dfe.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"丁立梅的阅读课 1 相见欢(彩色珍藏版)\",\"isbn\":\"9787520709453\",\"price\":237,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/8a61791204296786180e6c30e526b472.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"饮食细节决定健康\",\"isbn\":\"9787502823955\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-26/ac5b1cbd4f85ac9c0cf67688d324808e.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"英汉词典(精编版)\",\"isbn\":\"9787119047256\",\"price\":861,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-27/e8ed82551c099c51c4acd9a8233e4b1f.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"阿衰on line\",\"isbn\":\"9787541529948\",\"price\":10,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-28/33635f89ae71241bad0b4b9110fbdbd4.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"英汉词典(精编版)\",\"isbn\":\"9787119047256\",\"price\":861,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/693f2b9b3d288f24a2a108d8e3b6f61c.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中国历代文选 上下\",\"isbn\":\"6782592832213\",\"price\":1500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/0cfa3c31d8ac5860e68c5201400df9ee.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/8f9378d29618531d3f19e3dd83561727.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"托尔斯泰和他的创作\",\"isbn\":\"6781270016106\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/58976e9885550d4387a870c247e3ad1a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/b4b7222f1c31cec4bff76a1d206388dd.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"东北民间童话选\",\"isbn\":\"6783624072363\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/2afa4d057a321246e3f5742841ffd7cc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/b25fc2380a97e9cf572329984bcf8400.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"鄂尔多斯民歌\",\"isbn\":\"6780561292331\",\"price\":1879,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/7f2d4655ebd324b9a7dfaf6267358bbe.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/a7f8cfab2b015691bc5de4743280d00b.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"马克思恩格斯的人生之路\",\"isbn\":\"6783399681556\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/a4319642759f9305fb24f727ff6aa9d2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/ff818f5be6e71948b3c2915fe2bc5ba1.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"编辑杂谈\",\"isbn\":\"6787093770689\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/bc5a8dba17678edd35b16558342a9dc5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/a0eab0e7685d049c9da770eff4ed96ae.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"郭沫若少年诗稿\",\"isbn\":\"6786137238402\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/6bae72fc1596bdd8a452109c5928b4a3.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/b4ff4ab2793f6f7079453b4e9deb65ce.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"马克思论艺术和社会理想\",\"isbn\":\"6780223014605\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/e4df46b031291f90790c21e7accbe7fa.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/02b55853f302d587bebb6b491efda700.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"我的经验一少数民族作家谈创作\",\"isbn\":\"6785249776157\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/b3112b9a8f29a858df95bc66b6109633.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/f26b2e4f60e197f2a9f49964743fa353.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"写作和语言(增订本)\",\"isbn\":\"6783365419388\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/f586aa8a40b7253bbd332b022ac77cf7.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/052d352039803dde991300bd0be0aa6d.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"文学理论\",\"isbn\":\"6781213462816\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/b71173139ba8d648821a23f781d99ccc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/6acd25613b356dc5711e6acde4a26170.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"大学语文 北京市自学考试课本\",\"isbn\":\"6786401936198\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/b984433aecda62f6455a74f616597b55.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/5cb8d51c15d7a56124fd7cb7cd5bc434.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"邓小平文选\",\"isbn\":\"6786889135927\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/80855454ce4ec3f7b1e04d4de8e6ded4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/6a97a25e8553a669701465996cdccdb1.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"莎士比亚喜剧五种\",\"isbn\":\"6783673814298\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/4572a9fb236d5e0be40960dbd068e841.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/b114c8269de22fadd6dbd9ef0248ffad.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"马克思 论文学与艺术(二)\",\"isbn\":\"6782605410535\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/b9e229371ef7b9b0943a297d2e90b66a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/0d35ac66bafdb4e1e1d7735f3e770b72.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"管理心理学及领导科学\",\"isbn\":\"6788358242411\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/34ae9e6740e390887b1b11124076bfe9.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/4af23d81a349fab14febc24b43e30ec1.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"“鲁迅论文艺遗产”浅探\",\"isbn\":\"6784667179041\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/17c327fa9e5beb731eb9aa54aa1e75fc.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/0e1ac3c86e58740625729c5d8ef55084.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"辩证唯物主义与历史唯物主义 (修订本)\",\"isbn\":\"6783459883627\",\"price\":395,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/dccdd115284ee1de6637b18718d46f2b.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/a99929d3087c2ce1ac43afe4c4d79d1f.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"文章原理初探\",\"isbn\":\"6783200508444\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/4b29a5d3010f103d4bfad0c2b86139ba.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/d4d6cd9cfaa905fff3ab45d39f45328e.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"郑板桥\",\"isbn\":\"6782621620864\",\"price\":549,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/5289f99f1d592d6dd2fc26c114f418b0.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/073c5e715eda12ee56992d73bbdf7fa5.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/a84f5eefe8b3b859e56a9973735b8ab9.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":0},{\"goods_name\":\"大海铺路\",\"isbn\":\"6789939431709\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/9cd74986ee7c74cdf209fa616c4d00a6.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/799bc4982ed84346211c7e891d94a45f.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"中國古代短篇小说选 八\",\"isbn\":\"6785505157470\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/01b1095095be0d450f471089ea90d318.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/b899349a01a676fdba6b173590b3337e.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"神雕侠侣(三)\",\"isbn\":\"6780948612915\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/bb7701af5f010b3670d6a7230af009bb.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/a09720d259550be11c8a063c6d39c0f5.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"江湖奇侠传 上\",\"isbn\":\"6789623078838\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/507c19ed836b9d401ef64b493d74e8a2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/992a2007f479f998baa508d9c74727c7.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"水浒全传\",\"isbn\":\"6787903074634\",\"price\":600,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/a285ca577d3fba9ea4b77f95ab5641c0.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/47b891d94288d8b4a557392cbbc1c803.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/b387208a2477922cbb811bf700d0abb3.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"现代汉语虚词用法小词典\",\"isbn\":\"6788864898015\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/f2ca660cf3e09cbf081bc2f06e26f487.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/a695973565c40a22e98cd196b440d761.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"全国中学生优秀作文选\",\"isbn\":\"6780398359641\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/bf3c05d7b631b57748571a237ae9d37f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/7cc76cf3b3f3a57a0ca09e2f7f1691cd.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"中国古代教育家传\",\"isbn\":\"6789005988223\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/b6abebc8e800a71ea88361de580850ee.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/c1f65fa478b931284461fe9645db2024.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"青楼\",\"isbn\":\"6784416485610\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-29/7be72e247062ab0f2cbfc7f66ee026a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-29/8c0bebe908ab38b2ff9cea6c284a98fb.jpeg\"],\"location_code\":\"NS-A5-2\",\"inventory\":1},{\"goods_name\":\"万物起源翻翻书\",\"isbn\":\"9787517604440\",\"price\":419,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/b164e08bf4e1cdcf33c92ddf7b5b0805.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/dc52dd88c137adfe640695a0df552da9.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"大学英语四六级口语30天突破\",\"isbn\":\"9787501219261\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/ebad0342a2210c5e7d21842fe1b4452f.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"金陵春梦1-6\",\"isbn\":\"6787516459535\",\"price\":3049,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/08adc30dd24aa5d711d44d82cb725d04.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/473a2ec6778b0e14be22d81772cac966.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/4a1caa62e44219248b7e5aaed2fee066.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"小学生皮乐乐的趣味科学书7册\",\"isbn\":\"9787512621053\",\"price\":2699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/7a5f68948acdce850791f045698748d1.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/2c685c89fa625d9438863b9f160251bb.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"小学生作文好词好句好段\",\"isbn\":\"9787544173025\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/7e0af02f102bceb157b87390a6eb7fc3.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"小学名校优秀作文赏析(小学三至六年级 适用名师点评版)\",\"isbn\":\"9787544172981\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/af6e1637cd9f7c2004bb75ba8a2d62f0.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"小学生满分作文名师解析\",\"isbn\":\"9787544172998\",\"price\":220,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/dfa9c6774d28bdf6cde1f47db64f5b02.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"小学生作文入门与提高\",\"isbn\":\"9787544173001\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/f4b2123f87693a9fc8e109d540d95e07.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"美与审美\",\"isbn\":\"6789640483050\",\"price\":424,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/481c6f9451b1c4c3965243617b37f25f.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/1e33a15431b8cc2027fdf8a216eee9fb.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/37bb9ffb1625a784161032c15da17be8.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"当代西方哲学思潮评介\",\"isbn\":\"6784693099809\",\"price\":479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/9a97507b021b498025f9e95249981df2.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/6a6023e57519ca0821436fccb94a2b42.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"当代西方经济思潮评介\",\"isbn\":\"6786311835645\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/8fc33db837d87fbbfe245fea8b272885.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/4ae41c957a9ed57c182e4dec41cb34a5.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"美与审美\",\"isbn\":\"6784855523818\",\"price\":429,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/b508b3867dcbadbc2e6504cf077fdb90.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/0d618c4e3f2f6c6f056ba408b74cbead.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"当代西方政治思潮评介\",\"isbn\":\"6781393165605\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/20a6f24a2a81bfc19035b491a20d87e4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/2cf4bd8a309b3c441b34f7ed9b6d9875.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"军人常见法律应用\",\"isbn\":\"6783158211687\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/449775be3bbfd6ed2b559053339961d0.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/ae2182e9d5f3652acd7af71b49bbf01d.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"军人价值论\",\"isbn\":\"6781706259043\",\"price\":3799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/02860c1f391672d35bce4298f66c6fe4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/5046e43bcc6ac45a2ba6ae0f0df82aa4.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"当代西方政治思潮评介\",\"isbn\":\"6788472587164\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/8e4e64211ea7b85ae6650af24fe65d95.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/035441fc301927e4629a0de6d5977fa1.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"当代西方文化思想评介\",\"isbn\":\"6788677714601\",\"price\":3199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/39e1ed31282db329d82a6bbc83383ba4.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/ab6560dc6aaf467cefac9919ef2cca33.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"当代西方经济思潮评介\",\"isbn\":\"6789432266066\",\"price\":702,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/b726d8f6e207a4fb1ffb59a317b2ee9a.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-30/68932c1897d6d7b830a41fab8284183d.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"数学教师教学用书\",\"isbn\":\"9787303147250\",\"price\":1898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/2150a9cd8001e72b57f760f23220a7d1.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"鲁滨孙漂流记\",\"isbn\":\"9787100089463\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/969d160437d64b011c285a0855b9214e.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"果树工(初级)/职业技能培训鉴定教材\",\"isbn\":\"9787504568762\",\"price\":797,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/b1ed621a4e852fa797d588bb582beb82.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"蔬菜工(中级)—教材\",\"isbn\":\"9787504568519\",\"price\":950,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-30/ae621ff6cbd15635b2f4f16a7579c0bb.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"新编实用家庭医书\",\"isbn\":\"6783182985351\",\"price\":2997,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-10-31/8e3f8129c1fff79e7b0b8b5c5be8d8a8.jpeg\",\"https://img.pddpic.com/open-gw/2025-10-31/a6271fdfb7a90f396373e56b5aa8518c.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"神奇校车 全10册\",\"isbn\":\"9787221091857\",\"price\":1800,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-01/e06d83e75937860724ab55bc6733b7e5.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-01/db71288006730f1400252933a0e579c1.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":0},{\"goods_name\":\"恐龙王国童话 美绘本 全六册\",\"isbn\":\"9787520001656\",\"price\":800,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-01/a8b2748b2d4459d63891f1ae3c0cbd17.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"第二教材. 四年级语文\",\"isbn\":\"9787545120349\",\"price\":509,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-01/6521cc903d05aaa92518856cc40c997c.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"小学教材同步作文全解 四年上\",\"isbn\":\"9787545042801\",\"price\":200,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-01/c52cace9d782c3f301402e827959ec75.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-01/63a8f737aebfc66128a2a51c25c83777.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-01/4b4ed881a6ec84c20b85a431a659cbec.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"新课标小学语文四库全书\",\"isbn\":\"9787500073727\",\"price\":200,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-01/d00e76f2f1e6080eea139b5410395dba.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-01/8c8864ce2cbc48439709651404651731.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"你好科学 地球套装 全14册\",\"isbn\":\"9787556026760\",\"price\":3343,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-01/db9b23f9367df179d00aa97438cd03a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-01/9662f1c45e9c02d2f6b18a1d4062d573.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"铃木绘本向日葵系列(适读年龄6-9岁)\",\"isbn\":\"9787537651578\",\"price\":2000,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-01/cf9212a9b3198e5d204e4bca905686b3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-01/ff47a7642cf376effa211ce31c063149.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"医疗体育常识 慢性病体育疗法\",\"isbn\":\"6787014448245\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-01/d5c80c337023facf39ef13144e1e6b1a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-01/70ffc101bb064b32216014abc9085ad7.jpeg\"],\"location_code\":\"NS-B1-2\",\"inventory\":1},{\"goods_name\":\"手足按摩指南\",\"isbn\":\"9787563208111\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/c76baf16f483f81cca954be2473a624a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/e4fe6613edde3ccf517156425313e7bf.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/c8ebb07ebbafc12f35f7aea57fe93b0c.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"中国历代神童\",\"isbn\":\"9787800761409\",\"price\":369,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/3e95dba7dfccd524dfe5324253e20e8e.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"诸葛亮与武侯祠\",\"isbn\":\"6782733170136\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/7e0c262b8d3cf9577901c334e5797782.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/04e0ef0f1d11c87ff6f5e6becd6c43fb.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"我与悲鸿 -蒋碧微回忆录\",\"isbn\":\"6788601102309\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/0ce9c8eaf5c9a443ae171c593613f91c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/eb7d83a0cf9e04bb106bb054344a0234.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"古文选译 增订本\",\"isbn\":\"6782522437636\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/5a50cbc8aa456c91ff7e5f516fc51565.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/a616f27ddf7e4c7f831fbfbc29652226.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"李闯王在河南\",\"isbn\":\"6784947148603\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/b6c0d600e283f5d494dc4f8a1d1327f7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/1dbd312e9dcba71821a7e32ebf7cc004.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"蝴蝶梦 (简写本)\",\"isbn\":\"6783383962167\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/142a1f243efd917040607cd2b58908b9.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/ea8561d7e0609258dc9cfd04d27d3dab.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/33737da6ec11571050310bb884a2aa78.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"中国广播电影电视发展报告(2019)\",\"isbn\":\"9787504383303\",\"price\":49,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/7e83efebcff08032463711ad9bb30040.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"毛泽东与周恩来\",\"isbn\":\"9787806262122\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/5e1c26ef72382b8b7ee92eb996f889a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/305cc312dd3530db7abf809606fcc13f.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"公共管理学/高等学校公共管理专业精品教材\",\"isbn\":\"9787516144015\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/4613fd9535aa7e6dd5ea7b2bd0b3d377.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"党的十九届五中全会建议学习辅导百问\",\"isbn\":\"9787509913550\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/480a4f69256cc79f061feebb888b57ff.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"小窗幽记译注\",\"isbn\":\"9787538299212\",\"price\":6387,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/1a3cdef96ba4ba7234bd4f4065353ebf.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/d45a7ed9dcfc39337d68612f2129dae0.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"中国人民银行关于国库会计核算管理与操作的规定\",\"isbn\":\"9787500546535\",\"price\":679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/ed0c9a04b8ff9ec2735672cf7878792c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/e5f0c617067a9fe75ec6e5088a523db4.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"教育,向美而生\",\"isbn\":\"9787300268965\",\"price\":653,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/474753d6c0623c23de9cde1c80b61e4a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/54ceb5afb2362a40988964ca4c762042.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"好山好水在中国全两册\",\"isbn\":\"9787512639294\",\"price\":1698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/c425574f5334fccf6ba4484775ab8dcd.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/69aa43524ccafd03b80f5661da3d30d5.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"古代汉语 上下册\",\"isbn\":\"6787817359219\",\"price\":4199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/2495212e7ace685925b32c16b128b276.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/38fc6bfe3b86c0f7caedc1d9bb519cd0.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/3d17f0992f13507d85f479fdddb98984.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"桂林山水诗选\",\"isbn\":\"6788124393990\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/f959b998d1c5cd265a004bca1ffdf3fb.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/f188414485a380d3c34976b4c31a1a23.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"中华民族杰出人物传 第三集\",\"isbn\":\"6781460945299\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/329c6bf2d34e4757f5eac81b668bc184.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/6fd9bf394f7e6bae4fb6bd73ddbd25db.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/c05c7b65b969c7023fd11d8d203ada4b.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"人生世事格言选句\",\"isbn\":\"9787205083878\",\"price\":520,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/4e2b9a6540e521fcc4a067a58f9ea9e8.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/559b9753f092572968499c97bc6354f5.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"彩图中国青少年自然科学丛书34567\",\"isbn\":\"9787205035617\",\"price\":248,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/722d23d2230158fdb20c2d7c30c86d05.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/d8de65acdeae2173e3aee51ebcc2dc12.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"新编建筑分项工程设计施工技术图集 1-4 卷\",\"isbn\":\"9787900305794\",\"price\":9999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/9cf53de24ce87a28a6199e76ff19429c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/737d71269549e5a81c72a89208b777b1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/a25cb6bbb116573a4798bae9f4f3e875.jpeg\"],\"location_code\":\"NS-B6-4\",\"inventory\":1},{\"goods_name\":\"(全本·珍藏) 我不是教你全两册\",\"isbn\":\"6787868815759\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/9b7b0304b6a87172bbc2c87d794be95f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/937478a2443856e6a7653a50da8b57ec.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/4a7b3ec25ffe57bbc3e9fd33a1f56408.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"回忆我的父亲卓别林\",\"isbn\":\"6785742483021\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/3e610122dfe4e97d9ec3597b31485188.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/d12b403c2157896657f3783ed87b42ab.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/fed4606253c98dac53c5b57ba0bc6d13.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"少帅传奇 赵云声李政\",\"isbn\":\"6787858247436\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/50dbfdf93d829c6e4bdaab8fc9320082.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/060d8d03efe16360ac1d71a1a22ba411.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"白话《围炉夜话》\",\"isbn\":\"6781434783370\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/f49f57104c26ef1ab72faf961e18e912.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/0b24b5da7fde06d32f4cbbb16a2205d1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/bce76cf2907132f227f9e0e3f8ad85f7.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"欢度晚年\",\"isbn\":\"6780349430065\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/2f8584e75e3a97c440c76453a4d83196.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/d7be1e3197becd38a5cc83bfc996279e.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/8a19a24f6342c6249506fdf69f50b3ec.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"李白\",\"isbn\":\"6780674944523\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/6e656587efe473c06bb0ba2c6587b227.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/d5aa62082499cae231605bbac9c28850.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"爱的波折 (原名《白鲁尼卡》)\",\"isbn\":\"6785340471596\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/a4838d26ea8903f0e1aa3d11d60a2fc7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/849aee4f4faefee6bc80cffb3b8c5dd6.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/189e07eecb94ada622d3e2924b1aba29.jpeg\"],\"location_code\":\"NS-B2-2\",\"inventory\":1},{\"goods_name\":\"中国传统文化奇观\",\"isbn\":\"6782762188538\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/cf4cb2eb5a7d42707847e29080bfe79e.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/47612a30f6ff807ff43eaffe9a3ac95a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/7965dea0bc5b434ef1f553c844c754b5.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"杜诗散绎\",\"isbn\":\"6788006700429\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/30c277e0dd67234075e8144363c8012c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/a24772b95c70a20fc9de4951ea8c5df3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/030fcb5409433840f3abc4d3c4ed6124.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"海 瑞\",\"isbn\":\"6781562338598\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/f7f163c2763d926d777160946b9ad24e.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/707f1c4e877ccc26b2fff57046591c10.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/0015d153d51b506989c54df20b521633.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"达尔文\",\"isbn\":\"6786967381627\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/4337a99398da65320bf02e7c1954e8e4.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"河南名胜古迹丛书 岳飞与岳庙\",\"isbn\":\"6785911123330\",\"price\":2289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/ef08561abbf3b7b865cba287861b503f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/300869378d41a10a6f5ad7d75c30f97f.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"续孽海花\",\"isbn\":\"6786282691582\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/443827ef43048f001ad142e1c7ca03dc.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/ee6120af6a39f5adf921ee8a4e76a222.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/b94b9f422ffb9a332bdeba718bd780ef.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"佛国都城\",\"isbn\":\"6787627702610\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/39244c73fb4096abd18b2c65f0328904.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/6ace2f87df24e6603a454572dc900171.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中国古典文学作品选读\",\"isbn\":\"6782558859463\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/8db9fb2d2600ac140f5ef58a9b0000a1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/099c28e971856c174f2246d67f9ce7f3.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"全日制十年制语文课本\",\"isbn\":\"6783396128014\",\"price\":298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/596cd38c26b9a2de886908537e62f180.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/0a923d8f93cc230bf74b17a88d49eba0.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/a6e7fa5b7f66926be2f7ec9a0a2f05e8.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"古句新用 杨为珍\",\"isbn\":\"6789685813329\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/444a4199c4afa0bc2076169c45826fd6.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/82b4a54a2ee019e4e5c6ba37ac0a3b08.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/da682359bb976916e38bf11af9d19ce2.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"红与黑\",\"isbn\":\"6787885677842\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/7d719df1ea76922941673a535dcb0449.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/67232762833a1182d7b16705d67a3b2d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/1e93b849046ae046186e95ac635e36b4.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"巴尔扎克中短篇小说选\",\"isbn\":\"6785228942497\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/1a6f37937a92c93d07f6acccfbe37b84.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/beafd389dfa88923163e19a462711e9e.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/6a9fd20100614a53e3d23c687eae0e2f.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"新课标小学语文常备标准工具书全十册\",\"isbn\":\"9787511272546\",\"price\":3799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/2798c4bdf2f4b7c9814213aeb070b794.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/d4f9118c7cf275c462a4eefbdbf9e247.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/a29f4c8264a9147fa8081e36973d8a0c.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"歪脑袋木头桩\",\"isbn\":\"9787533299064\",\"price\":100,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/8fab13e441b00e99459870a0c0da47be.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"一只想飞的猫\",\"isbn\":\"9787533299095\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/45d7405d3ebb9d8a9eb79c244b583d62.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"中国王朝兴亡史\",\"isbn\":\"9787810420204\",\"price\":1766,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"七日瑜伽:减压安神\",\"isbn\":\"9787538153705\",\"price\":1661,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/866defa14402974a468e129ea2ece729.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-05/ef81b25bde0371bfc20bdda910404545.jpeg\",\"https://img.pddpic.com/open-gw/2025-12-02/83685f3e-f7d6-458c-bd8b-adba8d2ba4b8.jpeg\",\"https://img.pddpic.com/open-gw/2025-12-02/c80f46f1-c640-48fb-b4c4-bf7f65186f7b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":5},{\"goods_name\":\"七日瑜伽:减压安神\",\"isbn\":\"9787538153705\",\"price\":1663,\"appearance\":\"90\",\"live_image\":null,\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"实用抗血栓个体化药物治疗手册栾家杰主编安徽科学技术出版社9787533769420\",\"isbn\":\"9787533769420\",\"price\":2258,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/847f850d755018c6f3f032061e6fc28e.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"七日瑜伽:减压安神\",\"isbn\":\"9787538153705\",\"price\":1659,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"七日瑜伽:减压安神\",\"isbn\":\"9787538153705\",\"price\":1657,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中国人民银行关于国库会计核算管理与操作的规定\",\"isbn\":\"9787500546535\",\"price\":266,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/0f58fb48eb2ba6220ba07bff5b2f3460.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中国人民银行关于国库会计核算管理与操作的规定\",\"isbn\":\"9787500546535\",\"price\":266,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/d92dacaa262c591e62a8689c7c4a1151.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"教育,向美而生\",\"isbn\":\"9787300268965\",\"price\":629,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/0b1530fe12f38d400143d7b7b9ac002c.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"实用抗血栓个体化药物治疗手册栾家杰主编安徽科学技术出版社9787533769420\",\"isbn\":\"9787533769420\",\"price\":2604,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/9a2a1d3d47a21278c65b5d6e21a4c4cf.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"仿妆女王画出超正大明星\",\"isbn\":\"9787122260451\",\"price\":649,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/8bd87b55c7fe92a13d3a23a6b51af4eb.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"(签名本)黑血城\",\"isbn\":\"9787805066318\",\"price\":776,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/725133f67e2e47b5782bdf66f0db5316.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"循吏千年:百名清官启示录\",\"isbn\":\"9787205097646\",\"price\":2370,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/ce5ee38338c64a557a81bb7b8b0cfc29.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中国王朝兴亡史\",\"isbn\":\"9787810420204\",\"price\":1766,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/87d874f1eef855a9f496aa4b53c2e1b8.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"《书法常识一本通》\",\"isbn\":\"9787547012536\",\"price\":3742,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/6df649479251c6a98335d0c3a3c9de64.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"你说数字我测运:百数易典·数字占卜\",\"isbn\":\"9787807298472\",\"price\":917,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/a63b74908928e7a357e5803bd690f950.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"米小圈上学记\",\"isbn\":\"9787536587748\",\"price\":1000,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/f7ca3c1ea6b0ecb94e807700dd098cd2.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"百年正气\",\"isbn\":\"9787205104672\",\"price\":4366,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/fa19598ef8e1dcf8331ab88cce7b9f99.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"米小圈上学记\",\"isbn\":\"9787536587748\",\"price\":1900,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/9f8cc2ab9dbac9f965da90baef84b79e.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"米小圈上学记\",\"isbn\":\"9787536587748\",\"price\":2800,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/8d37d0870b9149019db96f9044db5fb4.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"奇妙假期⑧·坏习惯涂改器\",\"isbn\":\"9787539575063\",\"price\":1900,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/955f956be3f366fb98c0d9958204d0c6.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"横冲直撞的恐龙宝宝\",\"isbn\":\"9787535886804\",\"price\":1500,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-05/8d3807b68e9daee9394cecabcd502920.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"我是女兵也是女人\",\"isbn\":\"9787510839139\",\"price\":746,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-06/8e04ea71906466909415bfb28a4c485a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-06/f2c13ef3121dc834066536ea1058d5c5.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"珍妮姑娘\",\"isbn\":\"6788883395181\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-06/f98ac9dba086f18ae2297e560bf21881.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-06/36d21465e26277d845e600f965c0f9cb.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"北京名园趣谈 陈文良魏开肇李学文\",\"isbn\":\"6785644709158\",\"price\":239,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-06/b72b3e689c71cdfb7280aabab37a65a7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-06/1c388967922c5e8099aee7813eb70b7a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-06/1ee15e43c29cf7b4ae33404fe925729d.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"尹大力编 古代格言警句选\",\"isbn\":\"6787358850614\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-06/6ef46b1e9fd5db9b7bcc537b5fcd1267.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-06/ef11f97fa0101b210dba78ed70148c24.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-06/93228ca53c8510b8633caf21a5f07060.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"好山好水在中国\",\"isbn\":\"9787512639294\",\"price\":9984,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-06/f84ec3d678b78408fc40e01d01ce4ec3.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"我是女兵也是女人\",\"isbn\":\"9787510839139\",\"price\":4623,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-06/e7b86ac9d75a519a565f55bf63ac89ff.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-06/166fb509e30057fd1950fbefaef974b0.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"卫生知识丛书 老年保健知识\",\"isbn\":\"6780079505073\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/def3c7f386725d76215cdd9a2335ff61.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/08f0b00d2f256aefffabe357ca411c19.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"科学史上的九十九个谜\",\"isbn\":\"6781020162944\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/119a37df29b34372951b2c42487ffd20.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/49623f70b2dcc4088ea16a838db5b293.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"精神免疫学\",\"isbn\":\"9787506716079\",\"price\":2999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/e232c5337efe2a149642008944fd80df.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"图解手穴健康疗法\",\"isbn\":\"9787536926349\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/346bf3bffc27a1ef9a385dcc7f3fb5af.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"不能承受的生命之轻\",\"isbn\":\"9787532731077\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/1763fc32879912a4f178125b1d291bcc.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":0},{\"goods_name\":\"我的陌生朋友\",\"isbn\":\"9787506235501\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/08f0e39f1983c1b82828928875a05c65.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"百姓民俗礼仪大全(珍藏版)\",\"isbn\":\"9787500218128\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/185277b5569e47437549ce01267cb3de.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"推倒红墙:克里姆林宫最新档案解秘\",\"isbn\":\"9787801092885\",\"price\":240,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/5160fe0ea0df204300a13ed9c40dbeb0.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"诺贝尔文学获奖作家短篇小说精品\",\"isbn\":\"9787805794785\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/a0ddbbfbc99578ee5bb082e00877a8fe.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"简易英汉对照读物 名利场\",\"isbn\":\"6780340859103\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/52a505241e516c7feb96346cbbf898cc.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/621e402f468537724b482ff229202d5e.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"女性心理学\",\"isbn\":\"6783129183792\",\"price\":291,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/4a95690f8903a00f0029e21c1e4432cd.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/2fbd205a11f697ee7ce222ed1cb814a9.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"爱情心理学 作者:[奥〕弗洛伊德\",\"isbn\":\"6784386559107\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/4d2eb4be9a7a4a91fe7d3be7d3d1eac2.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/33f4b376842f44529561aab18f66ffa3.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"一个心理咨询医生礼记\",\"isbn\":\"6788548945398\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/3b859c0359b9d09bbccecb0174209b55.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/bf53fb7ceb12f50758bf43e2f7e475ac.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"临床交流学概论\",\"isbn\":\"6783415873092\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/b1db368604c191479ef9440430999aa3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/5bf18ab65cac50177d73062d0fde25e7.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"巨译的诞生\",\"isbn\":\"6782099711680\",\"price\":397,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/0d072aa9c1408860fa7d48c0de950357.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/0a0417b0a0e1669983f51b72bb28a9ec.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"冯梦龙笑话集\",\"isbn\":\"6783807644220\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/80c31c6db204dd69d0b05d27c21cc729.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/d821cec1ded6f65a2140f5ea4b935590.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"精神分析引论新篇\",\"isbn\":\"6788650219576\",\"price\":1698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/627e2360ec0d6e053d7817cf90cd46e7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/8ba6ecf820f0b94de857c0429debe2ef.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"人一初始印象与预测\",\"isbn\":\"6782447952703\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/e3c5ceefbd068942a834d1f5bec4c131.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/7f684d67563975ed693c25290daade46.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"精神病理学 精神症状的分析\",\"isbn\":\"6780984814648\",\"price\":1499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/2173aef792a383449447574c9f0e3309.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/2f1f7c5c383b3c5f508c91bec4ef82ac.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"心理治疗\",\"isbn\":\"6781698418107\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/09e0bd8776eca2b7a967623c7e1fe3dd.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/82ec46da73e55a0c40c88de839a66fe1.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"神经内科急症\",\"isbn\":\"6780113795671\",\"price\":289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/be475d58d3fe1c423c9e7638c0f48e54.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/580c2e38343d27ba49a6c810a069c7f7.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"被侮辱和被损害的\",\"isbn\":\"6788325518279\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/0ac75a5e6d53657c54f9ca02b945b711.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/d360ea7c86db469a190290083a55cb01.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"人类百位名人排座次\",\"isbn\":\"6785389043171\",\"price\":268,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/35b50f95e189abe4c3c0649a8f968016.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/741ebe8ad16b868e0fffd295e7052189.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"王季思选元曲三百首\",\"isbn\":\"9787506008501\",\"price\":593,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/56d2f5e4d94aab9163dcafeb77d3d825.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"诺贝尔文学获奖作家短篇小说精品\",\"isbn\":\"9787805794785\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/f7eae032107ec1450070755c68d790bb.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"文化论\",\"isbn\":\"6782757834494\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/bfd377477591335e880721f1df748851.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/c6174e183cebc1994edc2e8bef7860b0.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"二十一世纪生活预测 未来二十年\",\"isbn\":\"6782696435590\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/1f3fa203e899d0d1b82c866bd9d5bcbd.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/b8981da74a8eb7dbc9253e59b78d449c.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"脑血管疾病\",\"isbn\":\"6785159197526\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/465784b048660920edaf86199b6de4c6.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/7fdd19a3917e77bc582c7871f4b33ec3.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"一分钟小说选 [续集\",\"isbn\":\"6787972859514\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/78cdaabb0552fa27483b73f590e99b02.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/278496562b898d6b03c527900cd9e4e3.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"西洋现代观人术精要\",\"isbn\":\"6780912053590\",\"price\":259,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/d64d5a2ea8c428060ed9770d879201f9.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/0fcf3f4136d0a32fd2d2a4c157fabc29.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"营销心理学\",\"isbn\":\"9787504416933\",\"price\":290,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/7e6aeadd1e31d88954d7c66eed924cdd.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"越界飞行\",\"isbn\":\"6783658313191\",\"price\":290,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/cbaf2be7458b147c3e9b3ceb8c4be47d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/f71b1c39b30f1c9909f93c8cc93ecf59.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"孙子兵法句义浅解 贾启贤\",\"isbn\":\"6783666706699\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/81a4a6f2b66e1af0a99329251fb58af2.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/6d19817adcf4ac0aadbd973e4eb112ad.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"中国痣相全书\",\"isbn\":\"6786754033929\",\"price\":3199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/c366f9e733eb6360ccefa48ef17ed2e4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/1b988d3212884f586753f3f02730822a.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"东方情欲论\",\"isbn\":\"6783412206822\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/24399414230cedbbf014b7c114b1ccc0.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/f1134f4ae8c845550223eff5b2206f3b.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"医学心理学浅谈\",\"isbn\":\"6782606063196\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/00cffd4c64411ab54b466354960f76de.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/d0e53876f87282f636309d19a71e2ed2.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"如何修证佛法 南怀瑾讲述\",\"isbn\":\"6786529393576\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/a42806d01c9797b52a559e7245aa6c0d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/901d2d27955f697cc8f81da53966aa73.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"跟随彭总\",\"isbn\":\"6788671903274\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/a592d630185b79036d5d3ac5f53e2aa8.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/43aee6a1d58c9f5e58665f806902e698.jpeg\"],\"location_code\":\"NS-B2-1\",\"inventory\":1},{\"goods_name\":\"文章修养\",\"isbn\":\"6786623591914\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/f6e3645e68dbc9e3dfcc78636b24d30c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/3e881625dba11828481917e762d701e1.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"赣第德\",\"isbn\":\"6780737020345\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/e9e3bd23efeb0b7e874a73d0f33fb7a8.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/c2e126417a9d3d7e953c9930fe160ed0.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"金鸭帝国\",\"isbn\":\"6788591552073\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/df825d8df8140a30c43bb134d12c16fc.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/d5bb74d899206b48a61c42ac66b9d6c9.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"传染病手册\",\"isbn\":\"6785342784869\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/c998e601a6cff89421bb9cce6598e665.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/30b43e816f22d2dfb399e2ae2b6d4587.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"古代白话小说选 (上下册)\",\"isbn\":\"6785006867311\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/6f1c7af6b46b0ca0f138c5bb0b697a8f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/b9153f852ecdd7ccdf1f06dfd1d7dea5.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"临床心理学\",\"isbn\":\"6787618184950\",\"price\":649,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/2f0ffc40a07ffd2cb67263a787cc8d1d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/e2cd019b7d56a138e95c2efd05d2c8f0.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"秋\",\"isbn\":\"6782170346140\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/d37677026097485bea91ca2c520f401c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/702560a23c8fbdabd1d11a75e8862dd3.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"中国近代史丛书孙中山\",\"isbn\":\"6782822596254\",\"price\":398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-07/1fcc44f15a933830c781304e6994c1c1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-07/1e4709abdbadb4591f8bde2c8d37448c.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"欢乐嘻哈镇 11 智斗黄鼠狼\",\"isbn\":\"9787556811403\",\"price\":1099,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/0a4f293b33f59f144b837eac2128902c.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"《昨夜星晨》亲列丛书之四 “文化大革命”中的名人之思\",\"isbn\":\"6788633017108\",\"price\":4900,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/92075500dcefe3f4956a14e36932920b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/1be67088979e7886ec6478ecdb9a1974.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"零基础日语入门王\",\"isbn\":\"9787500141198\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/0b77dd2e82b60a76e97745f0eb1de813.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"沉默的大多数:王小波杂文随笔全编\",\"isbn\":\"9787500627098\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/dcce4f26d36516d14f18f14674a0a6ce.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":0},{\"goods_name\":\"黄金时代白银时代\",\"isbn\":\"9787500646730\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/492643f49ca15e24a331fa46321fa4d2.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":0},{\"goods_name\":\"青铜时代\",\"isbn\":\"9787500646716\",\"price\":252,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/0a4a88bee6d375d10b5f39ad781edc07.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":0},{\"goods_name\":\"黑铁时代\",\"isbn\":\"9787500646723\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/6f38af47a2d3b73e78bdefd6a8f0652b.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":0},{\"goods_name\":\"历代诗话选注\",\"isbn\":\"6784562563147\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/67b35e9623a62657d7758707a1768310.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/0634392c28dfc5f89fb3b55046d26d13.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"唐诗三百首\",\"isbn\":\"6785291937927\",\"price\":2200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/fbe4ccd67c3b20afdbcf93327929defa.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/9b85f09a534da669e6ddd403336833fc.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/62a91cea54d87f700c0d70e878589521.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/401bf817397e418d5bb8b151ae1e23fc.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"唐诗选(共两册)\",\"isbn\":\"6783584292640\",\"price\":1199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/ad4da69f4e7dad9ac36a8f0321dec911.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/8721c559f793d0263f2c925be844fbd2.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/fd0da1afae5b8bcb41c7bcad34a5b973.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"安娜·卡列尼娜(共两册)\",\"isbn\":\"6780786710881\",\"price\":689,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/fcd0e1c38cfa1b1bfc8eafe346ed605c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/23d8dabfff03d8af0896f72bf9b073d2.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/f1e7e8596d70cc8546f378cc18f26b45.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"陶尔教授的头颅\",\"isbn\":\"6789804239718\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/3817d60939ed76ec762874a5883b43dc.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/1eebee9911b2dfa962ea84d4a46590a3.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"北京名园趣谈\",\"isbn\":\"6783979378539\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/88d7a07daba4876ee81014b4a7e54ffe.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/66d96177f5cfb4a25487090b7dfc330c.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"人生的智慧\",\"isbn\":\"6783843716844\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/1c801c8a5bc4e30ef1b2f2c8f0111271.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/441ebb6c4e8b5dcf772cdf9699bcb3fe.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"实用心身疾病学\",\"isbn\":\"6784986254448\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/32daf85b371a6fe751f62b93c010b679.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/9d52422c7ad22eb546e239175e1a5f9f.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"笑的心理学\",\"isbn\":\"6780757915236\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/5fab4d56f6c45a86c18bdf6eb4aa51cb.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/14f426b2a0a50063a55cc9e3e6b281bf.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"小图书馆丛书· 艾丽丝漫游奇境记\",\"isbn\":\"6787979965671\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/9c054708c254ac49604943e7e258ef57.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/64c7d36d84295a6957390c3a93312d70.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"免疫学\",\"isbn\":\"6784771804917\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/cc86ad7cfa60df04e5d430020d0b3228.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/c4589f7206eaaebdb58b7021351e0d50.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"笑的心理学\",\"isbn\":\"6784095737690\",\"price\":635,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/340c07ee25b68a121b3f34646ea6efe4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/c8f4e3da63b845a6960e5f0862aa2e11.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"人生三阶段\",\"isbn\":\"6781751257935\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/5f0978b22fd122b9539b937f1c25202b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/e8db1c4945f8b077aca53400698d303c.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"我们到了月球\",\"isbn\":\"6780525505908\",\"price\":260,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/b4d686e233a88bf723e09e30811df5f7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/b02608e689389dd81e30d267fe434d3e.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"女性的心理骚动\",\"isbn\":\"6789736154455\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/39934e4a91a09346651f22322307f8b4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/8ae985f64746c84252f65ea02478f03a.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"两性心理学\",\"isbn\":\"6785289396314\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/21a3e299a6732bd3e2d4d89a3d74cbcf.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/be61e90b1614f1101640a80f6eb033ca.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"欺骗心理学\",\"isbn\":\"6781716335266\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/7fa1447334916af943fe410f72cc99ec.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/763959088f766a9c7131a576bb60bdac.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"一分钟小说选\",\"isbn\":\"6786329552818\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/705aa157f3693e1484053f5417cd2ddf.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/d5d99b5e02e75c889fa1f64e023e1408.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"变态心理学\",\"isbn\":\"6782756431094\",\"price\":2000,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/dd2c9d42b92b60307a707cbc793bd1e2.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/5b84778a27c37b02dc96f279e643161c.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"教父\",\"isbn\":\"6783916703721\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/37001d965147287930ac28ce69aaa12c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/85748a693afd1b2b02eb69e103dd2c65.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"燕子李三传奇\",\"isbn\":\"6783400965807\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/27129274898fd694b1bf4ce9338c7e45.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/09b032692f21461a8e5f3770bd437357.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"钟道传 一斩鬼传·平鬼传\",\"isbn\":\"6788308845893\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/4c50aca9871adb9ccabbe991fb853219.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/3846181ab45316739c315bd5931f6f07.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"金融家\",\"isbn\":\"6781609309888\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/ddf626f5633c016024372f7085fd7d25.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/47268c396353bdac9d8478829a093bb1.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"九三年\",\"isbn\":\"6780447169479\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/82bb4d808de3da6d77f15c4993b4e55a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/c31d67249960a453699d1ac954ae0610.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"隋唐宫廷秘史\",\"isbn\":\"6786602609655\",\"price\":191,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/9dac4f0be4378ec09b70f9ee211c3457.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/0781428a07a5a1fe03f54828e7597c06.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"东北银行史\",\"isbn\":\"6780280614896\",\"price\":2999,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/1e9e16d4ec089276726e7a778003930a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/27c80156b64c8b42c035bbde8954349a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/cc7ad4ff0b1d40642695b18abfaf9352.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/d38150da19f4ce9610a421cd4ef8e408.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"延年益寿的学问\",\"isbn\":\"6780872434345\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/e0677a0eb4f646c106699ef29b8783f7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/7496c4a7a02038f7bb7683786ac24203.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"红岩\",\"isbn\":\"6789954149025\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/d6c95e61c6b1d7a0a509095a6d4b1935.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/e88fffab2523927708db7c05a672909f.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"碧云天\",\"isbn\":\"6785813569139\",\"price\":290,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/6da1e9f87411dc81ec303b0be4728ff1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/d921ad9904d54aa49d0fab7aa202be2d.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"奥运会赛场处的角逐\",\"isbn\":\"6783376713970\",\"price\":1798,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/bebb49cc842a452f41788631fd4a3ace.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/2932b41a7d3e2620340eb0669b89da04.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"外遇 (外国优秀中短篇小说选)\",\"isbn\":\"6783918181841\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/6ad61796c1045177a95690fc04658d49.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/50904d1b59a955e8ad6f1686efe39db1.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"黑血城\",\"isbn\":\"6786136631270\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/5e0a10ec403de3d7c25ce1941f621f2d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/e6636ea82c5e81fda6ebfd58d064f990.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/39ab1603f27625c0585a703714bf1e64.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"儿童文学小论 中国新文学的源流\",\"isbn\":\"9787530210987\",\"price\":200,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/3da71520f1700117d788500cef69c926.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"犯罪研究年鉴\",\"isbn\":\"6785313843969\",\"price\":589,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/175cede03d11afaae165b182c262ef8c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/bee49d9caeffc288680dc56d8815bfd5.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"十一届三中全会以来经济体制改革重要文件汇编\",\"isbn\":\"6789393386255\",\"price\":13200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/77169e74e04c5755cf3a21a24fbbd93a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/5035817e4770b2668979b3529b9ecde8.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/a9f22f627faa3282c8d9fdbcb9b35964.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"辞海(1989年版) 缩印本\",\"isbn\":\"6783946403740\",\"price\":2249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/06e3316122e94421844dbbd3912de01f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/44227a008b55f7078eebb7e28dca07ec.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"2019秋尖子生题库系列--五年级数学上  \",\"isbn\":\"9787554924488\",\"price\":677,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/459bcd163e4f98e263391bf459417fb3.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"数学\",\"isbn\":\"9787303181230\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/c3383339c8c4eb93d71ce29f1f9e94d1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-13/c830147932a8f90671822ecdd9fe762c.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":2},{\"goods_name\":\"文学描写辞典 小说部分下\",\"isbn\":\"6789368521320\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-08/ee39571bbeabf0b4f678635566c5985b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-08/1efa47356d2679a8eaab6fbd1846d18e.jpeg\"],\"location_code\":\"NS-B2-3\",\"inventory\":1},{\"goods_name\":\"百年正气\",\"isbn\":\"9787205104672\",\"price\":1499,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-09/6cb2ec27a6ee2823fef4c92224c73285.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"百年正气\",\"isbn\":\"9787205104672\",\"price\":1498,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-09/85986cce73df4778804bd25025854225.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"欢乐嘻哈镇 11 智斗黄鼠狼\",\"isbn\":\"9787556811403\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-09/00ed23b9fde94417d3ea0974a0dcb5d0.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中国广播电影电视发展报告(2019)\",\"isbn\":\"9787504383303\",\"price\":10,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-11/31ca549f43bb99e01056451fc760ab2b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"百花酒店\",\"isbn\":\"9787531316909\",\"price\":203,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/b1cc4684a5786ea6e33c228837718b04.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"Re:从零开始的异世界生活11\",\"isbn\":\"9787541086687\",\"price\":551,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/32fba163c0ca764f1baec5eadb9d5688.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-15/6998b2114b2c7ab4cf28b1dfac0c598a.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"高分作文导航——小学生作文起步\",\"isbn\":\"9787540588533\",\"price\":419,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/098670569cb4c2444302ca22ba95b94e.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"消失的女孩\",\"isbn\":\"9787550014282\",\"price\":196,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/16d8c7d4c230fb01d03201046d365700.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"好宝宝看图编故事:雪娃娃不见了\",\"isbn\":\"9787534261572\",\"price\":580,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/7058c88541b5a3cd55fdbb1ad926bdc1.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"365夜故事(小学语文新课标必读书系)注音美绘版大东沟9787555221869\",\"isbn\":\"9787555221869\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/f8ea037619f731282780818a5903deae.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"素描静物\",\"isbn\":\"9787806853399\",\"price\":573,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/ad503951aebd3a668cf9d76ce0b5949b.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"音响技术及应用\",\"isbn\":\"9787111218142\",\"price\":872,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/10d124b2c1d358cd4c1b7e23a5e0c63c.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"涛头弄潮第1班\",\"isbn\":\"9787801913456\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-15/221aede5fc49e871458ff1ce7ebee96f.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"我爱人的情人\",\"isbn\":\"9787508628370\",\"price\":196,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/f795d7779992f6837cb35575bf808b28.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"戏剧人生\",\"isbn\":\"9787531316794\",\"price\":1669,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/27c88b4ca6e879ffb3385d4d509fd8b6.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"中国现代优秀歌曲2000首.通俗歌曲:1978-1990\",\"isbn\":\"9787531306795\",\"price\":588,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/1bdcb8c6f0c07921f963d454838366af.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"中国现代优秀歌曲精粹集成\",\"isbn\":\"9787531313212\",\"price\":479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/cf02091430c1a90202acd2f674224f4d.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"中国现代优秀歌曲2000首抒情歌曲1978 1990\",\"isbn\":\"9787531306771\",\"price\":429,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/57d5db51c3fc7003b853f8c74f97d3e7.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"中华皮肤性病学博览.第一辑\",\"isbn\":\"9787538123876\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/54283522c6961774cf69db384224497c.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"翻开我家老影集:我心中的外公毛泽东\",\"isbn\":\"9787507314984\",\"price\":339,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/7d43e3277e5bd7a9a4446136c07b6895.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"数学:附解题指导:文史财经类用\",\"isbn\":\"9787040050240\",\"price\":517,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/a0ca37a49636eb028287893e4678a202.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"一公升の眼泪\",\"isbn\":\"9787538531947\",\"price\":1330,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/18cef869dca623849e3fff23db207871.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":0},{\"goods_name\":\"中国初中生 300字作文大全 凯旋 上海远东出版社\",\"isbn\":\"9787806135136\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/fc0d9523cb236ec0ee56841769d0d589.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"神奇蜂胶疗法\",\"isbn\":\"9787109056442\",\"price\":779,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/2a468d498325e9b1be870d1d5cee12fc.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"伪劣商品鉴别指南\",\"isbn\":\"6788093655043\",\"price\":292,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/5f8875a2c53485fd983406467376a58f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/7a07a5a7515fb9552a2935d4b22392b0.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"伪劣商品鉴别指南(续)\",\"isbn\":\"6780664514595\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/61c4e22e32ce7d1b350eb2198f8678b6.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/88b9e0fba6ace18e1cbff0e4e6a5eb97.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"各国概况\",\"isbn\":\"6781104316626\",\"price\":600,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/8e413f4b66d9aa31eac5a6ccc71f808d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/47f7754c7f024795eab8c83b685341ad.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/9d5f508e8736d7074a77f97d0973ddca.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"金陵春梦 1-4\",\"isbn\":\"6786696645243\",\"price\":1605,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/63d68b360b4de873b79104219f339b1d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/c44026c1e6585e4a06716c821a70acaa.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"奇婚记\",\"isbn\":\"6782794372446\",\"price\":503,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/d24eda5526139933bb01761ff0ebfe77.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/90dd632385e10b22c4b2c7a20f69fe0e.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"伏尔泰小说选\",\"isbn\":\"6786147496508\",\"price\":401,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/d107a0106864125bd401667081aa0187.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/95cc3f436122c6500fb75cbf1319e0ab.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"大学语文 北京市自学考试课本\",\"isbn\":\"6781897939876\",\"price\":303,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/a55a9483f76fbaf142880952b4decae3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/d4a5abb5dc34761ee4a68710b3e8772b.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"高级财会系列丛书 高级审计学\",\"isbn\":\"6781222572235\",\"price\":596,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/90035faa82b75eb2954bad064c27fef3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/c28719e22a5ee8aa6ef8d1b9384c5a45.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"问题解法 代数学辞典 上\",\"isbn\":\"6783449043725\",\"price\":2107,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/57401a2f113f8fe22b5d511e25b76ba4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/4930aed1e772c164aee6beca734516e1.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"常用构词字典\",\"isbn\":\"6781409261340\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/e2b8d9beea9c299a8dd8432e3c67a459.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/6cf22011e3affe7df012f1f7b33679de.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"沈阳指南\",\"isbn\":\"6786294579337\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/bde9212b73b31314536490c021499d3a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/1c2748764f09d0a5d5ac59f80a51ec6e.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"权力场 中国传统政治智慧研究\",\"isbn\":\"6782321653846\",\"price\":1597,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/136032d89aa2586f7465c93c8332f696.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/c8c3dab133fc485c5ccf9118c8c3f3c1.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"脸上的红月亮\",\"isbn\":\"6785097109278\",\"price\":2199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/e08d5f61a8170865c10ce301ffbc3f3c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/65dd5074edbf9bfb55f9e52733af2ccb.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"辽宁文史资料\",\"isbn\":\"6786129190241\",\"price\":501,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/e5d77922501bf09f216a57a1376b9c29.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/9069d8fdd6078d4a5eb4849fecf55046.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"杨贵妃传\",\"isbn\":\"6780471352289\",\"price\":491,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/fe21f0c3fdefad2f06f517743c631e74.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/8415ca33528e9a0cf0ec84ef9f792637.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"培根论人生 培根随笔选\",\"isbn\":\"6788560863460\",\"price\":210,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/e90097eb86f0c0d0a24fdcb9a9427ada.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/ee00a86c6621be1792dd97c9237cefd9.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"文言语法常识\",\"isbn\":\"6787995541514\",\"price\":304,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/75a1b70775a3f6847d15283aacb60dc0.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/15400d0a4f5fa003a5eecc76c43be6b1.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"家庭周末节日菜谱\",\"isbn\":\"6784740841890\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/f52c3156a62dcac3c5b34f113fa17bab.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/e2fb223b38053b0d0d2a034ed8c20352.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"暴力与情爱\",\"isbn\":\"6788119401629\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/0603e08780169756db4543450b49769b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/5f5dbfcffb620b7bdd05d2d2609b0706.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"黑色日记\",\"isbn\":\"6785822589529\",\"price\":346,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/d64a128783ce94f946363c3ce4b1f487.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/c6fc826ec0a941e3aedc4301dc702843.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"爱的春、夏、秋、冬\",\"isbn\":\"6782918204791\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/21a288de581d2fbc63c95f1115da4774.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/9d2c8d45a7b6c388fc873cf0f7ceaeca.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"台湾新人新著 陌路\",\"isbn\":\"6784791966431\",\"price\":707,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/0f2dd82b84813121c77300fa7e55ae5a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/2ab67b3323837463cafe49571b509291.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"还你前生债 [香港]岑凯伦\",\"isbn\":\"6785208235639\",\"price\":604,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/ecd2cf2058b913707bdd03d8ae44b22f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/e0dece09d255d6ac776bdf0d3985d854.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"儿子与情人\",\"isbn\":\"6789182237554\",\"price\":505,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/712e1d7014a4111cb8bcf58b0a91ea3b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/06e7e2712558d4a0971c4cf2ea7fbf5c.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"爱到深处\",\"isbn\":\"6785330691551\",\"price\":326,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/9e0500aba01348f515d436e409ce867d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/3fca781242bd7fd712637aa9cc4ab4d7.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"我的中国情人\",\"isbn\":\"6784890146977\",\"price\":1608,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/8410a5ef463787e197b5d7d44593ec71.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/a6330ef4c8b0aa2fbd3debc180aa1c90.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"眼我学一科技英语 视听教材\",\"isbn\":\"6782862230899\",\"price\":702,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/6ddcb6d500369675cf29c8ca1e2cc364.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/14a14cc2f4765dd217958d13cee29453.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"傲慢与偏见\",\"isbn\":\"6787776886548\",\"price\":190,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/f58545900b9f792d37dc469a5c5c624f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/a3d076c0c4a05a0e344ebbcf3d8cc7d8.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"90年代校园文化新潮丛书 亲爱的狐狸\",\"isbn\":\"6781516706681\",\"price\":1102,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/89c6d901869199ee0fba727e677a70ee.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/b83b84fcc224abb57ca11ecd28758dda.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"野性的战争\",\"isbn\":\"6784283476182\",\"price\":192,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/e469ac78fc45b2a51709c87d94161dd2.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/c6c3e9f0e8a16fe3343c3ed4c7e4acfd.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"潇酒的情思\",\"isbn\":\"6784689527981\",\"price\":650,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/5ff6664d08b2c636d6d4ae61000209c3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/1e5473e3af04cdf1a5618460f376cdeb.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"轻风丝语\",\"isbn\":\"9787806878026\",\"price\":1614,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/7b2af24fb659820edb465e57ff585cb1.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"365夜童话·寓言·成语故事\",\"isbn\":\"6783881842372\",\"price\":404,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/7f9be9b23bcc2e11d43f0e69e9265656.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/9b42489840fa9e26ceb452e481c730b8.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"两天一课日语自学速成课本\",\"isbn\":\"6783433020765\",\"price\":842,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/36a0c33e56761d80542b6d220250b689.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/9cd307b92a1362d31e58e6bf457cd840.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"关东奏鸣曲\",\"isbn\":\"6786387389912\",\"price\":893,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/3a28da3e87d97cf1281fdbf7c45ef8f7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/058574608dbcd5a54bedc46845778701.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"中国:世纪之交的城市发展\",\"isbn\":\"6786137706898\",\"price\":1082,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/badb917c6ae1f2c81fd9926695b81556.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/b687868761ac66bfcc6a7f9ba3785502.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"老干部手册\",\"isbn\":\"6785016557841\",\"price\":208,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/5241df53a9d975f15dfdd3b068df076d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/589945f50e00f7b6aa8633f5ca4e4cb2.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"吴大帅秘闻录\",\"isbn\":\"9787805072395\",\"price\":1395,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/0e98c9e0feeec7eba7d6b2c9bc91f98a.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"女总统\",\"isbn\":\"6780869100670\",\"price\":193,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/48828e1dc0c02ac01440eca9c159a55c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/69d83d7ca00137596c83866ba261815f.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"日月\",\"isbn\":\"6785964212477\",\"price\":1107,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-16/a5c498a4b2bf3b7ce2a53d980ca371b1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-16/a3907870d22db4af639490f5ec04fb96.jpeg\"],\"location_code\":\"NS-B4-2\",\"inventory\":1},{\"goods_name\":\"砂型铸造工艺及工装设计\",\"isbn\":\"6783003920874\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/7a3c6fb484901c98cedc4670c68450cb.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/eef22dd99074c0d995883e6eba1187ad.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"现代设计与构成\",\"isbn\":\"6782262811293\",\"price\":1595,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/2b02d16e8a5ba7836bf593b4b8276496.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/2310cc380fc8c9d3acb5513959832c8a.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"医食同源\",\"isbn\":\"6782661213702\",\"price\":1301,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/046ea7d599de80d8d0a6678713dbaae6.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/5394e175242f6655dd82f8400eeb67c4.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"长笛演奏实用教程\",\"isbn\":\"6786072559223\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/e83b9f458e281e4fc0d1743441978db7.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/457262a6f8496a26d5441200a052d456.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"山水画基础技法\",\"isbn\":\"6787038562724\",\"price\":1599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/450dcf87e58ac12b20e8070b3a72f307.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/1eeaa17b7ad8d82905d0e0abba2b3d6a.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"无名杀手之谜\",\"isbn\":\"6780612071314\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/88ac07221d5989e8158b5e6de7136b63.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/ff3ec6fc20d58b48b5c30222b668eaae.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"女模特儿的世界\",\"isbn\":\"6784989553124\",\"price\":529,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/67e96e2f16e0af40b741bd52ee9a2ed4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/17e5e8b7d8355e81bc9bd1adcdb13cb2.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"大陆的厂长与香港的老板\",\"isbn\":\"6786931564605\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/e9b28db6e132abffd2058b629a933bac.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/17d39a1db128efd07d46f3915ab57099.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"自是花中第一流\",\"isbn\":\"6781278689278\",\"price\":606,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/78d0b810180b8b952e7ea5cb442685c3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/35b92d03747e53c9288c0db1e7fbd8b0.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"欢喜冤家\",\"isbn\":\"6789431120382\",\"price\":477,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/1ca09d19840113a511a65f2088ebe77f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/19e285ab75ccd55371d6f39c13384053.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"建筑工程定额与预算\",\"isbn\":\"6787789902512\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/c7c286b9e178b8bfa95802317fad13db.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/ff74c6cf56715baefcc41d4352fa0267.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"当幸福来敲门\",\"isbn\":\"9787302199113\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/f58c214869670399c6a3f3c5893ff9de.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/f9f43241af6e2d7478e7581fe45737ea.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"民族功臣张学良\",\"isbn\":\"6785453368579\",\"price\":531,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-17/822fe33e219a096b5e4c8b4b2d3387d2.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-17/206fe5fda75ec3b7248228913bab1e5d.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"现代玉米生产\",\"isbn\":\"9787801196071\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/5cf54861f417d09efbb5d39e7256246a.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"标准化养殖小区建设\",\"isbn\":\"9787802331198\",\"price\":493,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/e3c69e026ad106b96751364f2f243aa3.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"二度梅全传\",\"isbn\":\"6786421488009\",\"price\":605,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/8ee66fb2b06c4154e0a99fd00b7c0933.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/a6681601eb1c294a98311a50bdee20dd.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"婚姻心理分析\",\"isbn\":\"6782379706968\",\"price\":289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/06fe940ea8533169d2a6b2e3ea874b34.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/b720054ce048235e14886e4d4c21864a.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"暗房技术\",\"isbn\":\"9787805361505\",\"price\":704,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/32b18278c2a7d68edce73e4f76185c09.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"思想工作心理学\",\"isbn\":\"6783106206301\",\"price\":1205,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/8b0e7393e45e67c80dd8aa4a6894df61.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/eec97fc20e2bafec2e37a8561c46de0c.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"儿童智力奥秘\",\"isbn\":\"6786311455658\",\"price\":1109,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/643ccaf542577a44c3f259814f866085.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/eab801f5f9069a8de4cc6af3ec91d7e7.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"肉用鸡的饲养\",\"isbn\":\"6784097949366\",\"price\":391,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/203a7730c396c1a813fa8984ea07faaf.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/02889532e5486080920fa3f6ca72437e.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"权谋术数大诀\",\"isbn\":\"6781386972357\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/3e7e8a1ac7d151c2bf37b16f35b2b128.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/35a69e71788653348091f0aeb3e5ad73.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"辩证唯物主义和历史唯物主义原理\",\"isbn\":\"6786392921098\",\"price\":492,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/d88c9f8fe8373a7f4dc42ede9935a533.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/d4719ed205ed4d7c2850b8927532acdb.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"美术教师手册\",\"isbn\":\"6786137959980\",\"price\":407,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/7941247a4037dd40073f1f0b8e39a49f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/32ceef40cdbc00ac7bad40647fb67b25.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"宝瓶奇案\",\"isbn\":\"6785807462252\",\"price\":365,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/f7958687c92bae0d0fed77f1b302255d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/05ef741209a878630475e316b559b7c0.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":2},{\"goods_name\":\"文化的冲突与抉择\",\"isbn\":\"6788831146144\",\"price\":308,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/7532992c5f5009e0f4001e1f49eea3a6.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/fd0d5175ef59e7e8ae8e8fc42effe304.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"英汉对照社交礼仪文集\",\"isbn\":\"6787472792733\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/b19e696c664c60babe57bd832b7bf7fb.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-18/376180c206b6411206863ab064cc921d.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"芒种(上半月) 2013.06\",\"isbn\":\"9771003930007\",\"price\":1598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-18/7da7e0d9090ce5f2d5021b5e4221cb10.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"武则天传\",\"isbn\":\"9787512637511\",\"price\":506,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/cfb8eda45918cdc9d3e4d5dd8c5a09e5.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"癸巳存稿\",\"isbn\":\"9787538265057\",\"price\":6598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/95ba6acc5dcc17da2ddf4610de528788.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"何鸿燊大传\",\"isbn\":\"9787513913652\",\"price\":630,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/9181d273e7677a867e00f818ef93c43f.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"幽微的人性\",\"isbn\":\"9787559629470\",\"price\":491,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/397e5f50f3ff62b4cb425f694fa91eb9.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"女性生殖系统炎症百问百答\",\"isbn\":\"9787801576309\",\"price\":998,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/f9e447a641fbefeae6bc4d5fe82ddb9a.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"周围神经疾病防治150问\",\"isbn\":\"9787508205298\",\"price\":405,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/c355f194301e48272cf7d100b1c0926d.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"在刺刀和藩篱下 日本731部队的秘密 (日)西里扶甬子 著 王铁军 等 译新华文轩网络书店 正版图书\",\"isbn\":\"9787544178747\",\"price\":2732,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/6f5cfe70b586ca6232947def6c889460.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"实拍图 唤醒孩子的数学脑\",\"isbn\":\"9787547058121\",\"price\":302,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/6769cfdf86ce246a5fb29f9cc61bf9e8.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"日落尤其温柔 人间皆是浪漫\",\"isbn\":\"9787201206592\",\"price\":705,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/a104f565665c95208d0565ea3fd61932.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"人鬼降\",\"isbn\":\"9787502764623\",\"price\":404,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/7bf071c4589a0ce9afc59695be1f5757.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"家庭四季养花\",\"isbn\":\"9787520169035\",\"price\":659,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/f05f0b38adaaa2e6a5945ada67530ccd.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"中华上下五千年\",\"isbn\":\"9787805992938\",\"price\":994,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/36b670377828d092325e72a5fb4d7886.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"国家执业药师资格考试考点采分:药学专业知识2\",\"isbn\":\"9787513204255\",\"price\":3091,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/716155a1e428849540167d3209f31934.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"98上市公司资料速查手册\",\"isbn\":\"9787501140114\",\"price\":3101,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/74e76396b662e000f60eae6173ce538d.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"中华人民共和国计算机信息系统安全法规汇编公安部计算机管理监察司 编群众出版社9787501417520\",\"isbn\":\"9787501417520\",\"price\":898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/91ab1e9984ca341b9db30dfd5c8fda0b.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"2017百题大过关.中考语文:基础百题(有字迹)\",\"isbn\":\"9787567548879\",\"price\":997,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-19/ed47af18084443ba0d68d13bbcb89879.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"玩透纽约全彩\",\"isbn\":\"9787121233890\",\"price\":576,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/9e399ad72842411a5024b3b5859455bd.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-20/855812179c757bd3be072f1c80e18058.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"《戏谑与狂欢——新型二人转艺术特征论》\",\"isbn\":\"9787205069483\",\"price\":854,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/d55cb88ed033499d13383ba9ade92255.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"不负时光\",\"isbn\":\"9787549580859\",\"price\":498,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/835faf77641bcb1d1e3e9efd051e9f14.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"汽车自动变速器维修技术问答\",\"isbn\":\"9787508227221\",\"price\":356,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/e35da1a4d3cdea4e25f1bfdca7565354.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"朝阳之旅\",\"isbn\":\"9787503226984\",\"price\":620,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/7a8802615814ab8a6d66087ec8c1ba07.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"走近中国少数民族丛书--傣族\",\"isbn\":\"9787549709366\",\"price\":2593,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/511664cc181d5c2e127ca1a6f2c837ec.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"养生宝典.A卷:晚晴报《保健养生》版精粹\",\"isbn\":\"9787544122801\",\"price\":692,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/d1b2f7791bb45bb4bef3938b3880769b.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"错从口出 那些我们一读就错的汉字\",\"isbn\":\"9787115627506\",\"price\":1098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/f82f0032dcd9ac2c2d52bcac08f1e9b7.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"历史洪流中奋斗的故事\",\"isbn\":\"9787205073213\",\"price\":527,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/153c93ea3146ba213988fe7705987d00.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"广才图志\",\"isbn\":\"9787565217401\",\"price\":347,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/181db7eb1ea284cb1af975e48ec49b1b.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"辽阳历史文化丛书\",\"isbn\":\"9787549702817\",\"price\":6399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/f05c6d600253ecc488251d9708091ec1.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"清入关前都城研究\",\"isbn\":\"9787561055335\",\"price\":2290,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/85830ef6bd293f6825433b9b22fc56f2.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"静静的顿河\",\"isbn\":\"6783688117780\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/7107909b3319f54f92b91cf68ac9d1f4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-20/66123c2ed25699f883c05de23b473aa7.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"和大人一起读\",\"isbn\":\"9787555280408\",\"price\":1004,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/2fe95398b3d410e8fe97c878a8cbea4d.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"老年人健康休闲读本\",\"isbn\":\"9787806446768\",\"price\":395,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/83dffbd0a6b779a085b4b714d4086c74.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"活着的萨满:中国萨满教\",\"isbn\":\"9787205048624\",\"price\":7597,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-20/70c3962b37739321c8d28ce328680fd6.jpeg\"],\"location_code\":\"NS-B4-1\",\"inventory\":1},{\"goods_name\":\"个人效能 果断力 一项个人基本技能 荷 杨思滕著 荷兰 林格斯梅著 董焱译 气象出版社\",\"isbn\":\"9787502943806\",\"price\":293,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/a9afe67e900d2d578bb99c9ed14cd7c6.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"这才是清朝 5 十全天子\",\"isbn\":\"9787509398708\",\"price\":340,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/c58858edd4b7e40bbf847e93259eb4a3.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"辽宁教育史\",\"isbn\":\"9787806490044\",\"price\":2890,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/aef827cce193a16e83091353c1e09fe4.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"朝鲜民族古代汉文诗选注(16开平装 全1册)\",\"isbn\":\"9787806446034\",\"price\":815,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/ab218a091585fdb0f914376b465ef257.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"中国古代改革成败论:湘岩文存二集\",\"isbn\":\"9787561046784\",\"price\":1697,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/e1852108dec1e1de943fa87a00d70407.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"新阳光英语·听力过关 初中版\",\"isbn\":\"9787530352656\",\"price\":2594,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/9688029f2c5a31e098df1cd0d219b950.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"通往科学家之路·离哥德巴赫猜想最近的人:数学家陈景润\",\"isbn\":\"9787538256710\",\"price\":629,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/7de27583b36dbad19762a593f256cb57.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"高血压饮食宜忌全书\",\"isbn\":\"9787553767536\",\"price\":496,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/87898f965f6b1bdf83e3c3c8ba1f32e6.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"死神 3\",\"isbn\":\"9787537162203\",\"price\":598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/e6858d023f2d228c8e96b62478c28cbf.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"绿化工小手册\",\"isbn\":\"9787508349312\",\"price\":728,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/d3d3684643669c790bf9a4eaebb8c11b.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"警世大案\",\"isbn\":\"9787806692578\",\"price\":598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/6fe61a3931b88ed4ff438157cf38239e.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"教育学\",\"isbn\":\"9787811032512\",\"price\":356,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/0895335ec4d679af8b29e1511adac9ad.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"天下大观:玉石王出土成佛纪实\",\"isbn\":\"9787503413636\",\"price\":208,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/0212e687e8b042f85ab77495e334fbf7.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"振兴辽宁省老工业基地常识\",\"isbn\":\"9787806699430\",\"price\":598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-21/c1353aef7a79a384eb5d2d4c44b4461f.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"好故事 好家风\",\"isbn\":\"9787205085469\",\"price\":274,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/b768cce4adb98981bdb05bbc7fd801e3.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"玩转App:商业分析+运营推广+营销技巧+实战案例 玩转移动互联网营销系列\",\"isbn\":\"9787302450917\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/2ebfa2ddca6b6adabfe97713e63dea56.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"男人的内心世界\",\"isbn\":\"9787532918331\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/10c1f6f1f9e3794b5b90432050e1680e.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"生活要有光:地球另一端的来信\",\"isbn\":\"9787555237358\",\"price\":516,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/194383648da82434afb9b906e3261654.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"我不做鬼马的妹妹\",\"isbn\":\"9787540452612\",\"price\":260,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/cb377da1eda5aeec9b88ea549367541f.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"首席女法医\",\"isbn\":\"9787544267601\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/7d973f1373a8302addf2e7e281129667.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"科学哲学导论\",\"isbn\":\"9787538250220\",\"price\":471,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/02ff2ef532397f14060936e2d2e45981.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"当代学术入门古典学\",\"isbn\":\"9787538250282\",\"price\":498,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/4f4b42e9ccea2c7f4bf568a3d1cb74f1.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"旺家旺夫好女人\",\"isbn\":\"9787504470560\",\"price\":548,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/8363b11c89c248fa6ae33dd06ad77716.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"恒此今生伴美玉 : 非遗传承人李洪斌大师玛瑙雕作 品集\",\"isbn\":\"9787544148405\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/41431d7e5b3c48c29cf5398fa887b43a.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"水墨研究系列丛书:刘俊京卷\",\"isbn\":\"9771815328009\",\"price\":1747,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/ec0dd51414c8d265326418e548e7c755.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"孩子们的哈农\",\"isbn\":\"9787805536491\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/1fe9aebbc39d710b54f8e8be2e3b6a02.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":0},{\"goods_name\":\"大美辽宁:英汉对照(16开平装 全1册)\",\"isbn\":\"9787205083373\",\"price\":3298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/0a1df80cf978dd28e0cda8650ad7972b.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"波音经营秘诀:空中巨无霸的腾飞历程\",\"isbn\":\"9787800725746\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/f3da20dcddfa17eea3b20ae97b2378bf.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"我的内在无穷大 自我探索的40堂必修课\",\"isbn\":\"9787115555816\",\"price\":586,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/a30358c571cd6d82f2414da21cc61650.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"新民说(中国启蒙思想文库)(内容无勾画,一版一印)\",\"isbn\":\"9787205028626\",\"price\":2798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/c54d769a0d2460016fba86b7bd5a29ce.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"A17 默觚:魏源集\",\"isbn\":\"9787205028541\",\"price\":13098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/aaf4a2131d70adf2cc7a94cdebbb08a8.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"訄书\",\"isbn\":\"9787205028671\",\"price\":2298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/d1ec489c10f82a96b34eeaa6b4685d96.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"建国方略\",\"isbn\":\"9787205028688\",\"price\":11599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/a5a56fe7ca9c9a8389274af42c2a8aee.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"强学:戊戌时论选\",\"isbn\":\"9787205028602\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/8e5d59a468a5cdb25986bddbc7d639e4.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"民声:辛亥时论选\",\"isbn\":\"9787205028558\",\"price\":2979,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/89f4032a49b194d1611b2810c8a3fa59.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"豆制品治病养生850方\",\"isbn\":\"9787539009315\",\"price\":301,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/cde934fce1722046e6519a3fbd8bccfd.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"日本访书志 日本访书志补\",\"isbn\":\"9787538265002\",\"price\":5098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/9a333088753145b3f68be141ae98e45b.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"传统相声选\",\"isbn\":\"6787144791312\",\"price\":798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/bffc254083a16be73cfe479e6615ef8c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-22/b2402926170baddf77c3da1751e190c1.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"法网金铎\",\"isbn\":\"6788090288761\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-22/bfd9030d73ba09ab7a800668438515d1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-22/2995305553d7dcfa9df560ca274feb77.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"汉知简-应用题 天天练 二年级 上册 24秋\",\"isbn\":\"9787557908126\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-23/a025a2d60245bb2cb67ab6a8bc954799.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"唐史演义\",\"isbn\":\"6787025134816\",\"price\":5599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-23/9adf7122ce5f983af420e9854fcf570c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-23/80aba20b460fc010d3a2270217b97c7b.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"中外名人格言精华\",\"isbn\":\"6789221123849\",\"price\":498,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-23/e5691685a87a72bc2f82cb6daa06247b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-23/490a0370dfe4cbdb1f3f49a011c04382.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"隐私\",\"isbn\":\"6783867961277\",\"price\":468,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-23/c801696d518b8e9f17bd23bc3341ac44.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-23/bea66c061b8af446e8886ed7262a8dae.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"唐史演义 上下册\",\"isbn\":\"6783235380936\",\"price\":1398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/a3aaa46ec03293a0563da945b77910b5.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/24cbc339553d917de0f17832c178ec9d.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"勾心斗角\",\"isbn\":\"6785898904156\",\"price\":298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/6e0cc4a55bedb1e047d8f0ff37930d4a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/4f072d8d74d3182b3648801a91cdf85e.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"马克思主义著作选读\",\"isbn\":\"6783156585709\",\"price\":598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/15bf4bc7324e3eba4940a872bafcb965.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/22c3685ec2523eaf98e12029361acb06.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"职业刺客\",\"isbn\":\"6788618055427\",\"price\":429,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/960b9c0dd2432baee98551ccbc29507a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/c80cd9ebc2ac325f609384290ad06d30.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"幻灭\",\"isbn\":\"6786940490347\",\"price\":378,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/bccd02bcc14dadc9aa06e4f7ff24c79d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/4539adcede4f149b244222cf7e7163a6.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"三侠五义\",\"isbn\":\"6785207045069\",\"price\":688,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/8ef3e9a8cd5e959701a0d8d254cdbfc5.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/b661035a271e208413b5d6c0415045f5.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"绿野仙踪\",\"isbn\":\"6787154652213\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/a9f57983dfa482c64a2689ac42223320.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/08cfd1c0593d8cbcce3dc05af3c3b5b8.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"西湖古代白话小说选\",\"isbn\":\"6783103123016\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/2e5b51164f9bf510eecd0e5853cb3cf5.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/468358c1742c4dceb7b537ce29dc2c11.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"清宫十三朝\",\"isbn\":\"6783318834240\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/f6f419e6805953ce1d22de47f608a1c5.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/1b6b0e86559a4fd327e67f356ad26b3a.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"小城秘事\",\"isbn\":\"6783392952387\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/642a6716d4744fb3b1399a0b88b13e6e.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/d5360753581eb4c9cd4be09f092d160d.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"暗杀局\",\"isbn\":\"6787362797367\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/bf9ea69b830ac4cca2eb2cbfababe902.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-24/bc1ec2e980fc471629233af9b2ac4e71.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":2},{\"goods_name\":\"我在为自己读书\",\"isbn\":\"9787519216498\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-24/98d53c67088380bc68037a39ecde2906.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"长寿秘决大观\",\"isbn\":\"6782819515191\",\"price\":1198,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-25/d83f2974b2e34f02e06cb87d856e7d2e.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-25/67d7b8fad17908d82072de1b0c2fc9f3.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"节日家宴菜谱\",\"isbn\":\"6782181328610\",\"price\":398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-25/32711a3507c3ee4dbe2838221139e034.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-25/bab9ec4dc331b15ae4f2bdc048e4a588.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"新编汽车驾驶员读本 下册\",\"isbn\":\"6786865255632\",\"price\":248,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-25/05b15344b43820dfc30b4972b8fd4553.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-25/acebf83c6621a0764a04ba8f1877a6ab.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"改革·探索·选择\",\"isbn\":\"6787283169458\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-25/a175bbf015163ee14ff6c4259627f382.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-25/47e38c410b55182ca5f4009a32dc74c8.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"农家饲养业丛书 水貂养殖法\",\"isbn\":\"6781453544631\",\"price\":298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/69515ab491fdaa8d1b9b6744753d963d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/886e040850a2b9be68ca87f89ddc7ac2.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/096a8b1f944e22f5e9f52ba87d98d6a4.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"长寿秘诀大观\",\"isbn\":\"6785918572034\",\"price\":698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/a7f2b22878509aa534afdfc35fa1a6ae.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/a185d9a145f8081b0822068615a62281.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/b318ce2da2b8750d5a7d419919bcd35b.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"外国中篇小说丛刊(5) 黑桃皇后\",\"isbn\":\"6789826069563\",\"price\":698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/366982c42ed60a49269ffa8f75a76ea5.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/809c50d9231bb72639e5afba2e54c1b6.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"风云人物一 “厚黑成功术”剖析\",\"isbn\":\"6783786405636\",\"price\":3098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/23507dbe21fb275da3d9045ed314ff41.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/c0473bc04c9070ccfb07387e0e8d8aa9.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/d75dd3c03e9e55810c23e373983e02c4.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"知人善任 无失误的领导艺术\",\"isbn\":\"6789065312657\",\"price\":398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/ffed93cb965e940316deedf2f6d6c25e.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/1dee9bf919deef75b9cc0bec414ab592.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/1267075865bebfda41007e4413fa1f7f.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"内经知要 李中梓辑注\",\"isbn\":\"6787440233358\",\"price\":1298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/12215704f72fbc57341ed57f86d17d7d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/b6fd1366fefbfbb3e90a424623a17040.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"辽宁省 建筑工程综合预算定额\",\"isbn\":\"6783769649314\",\"price\":2998,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/396bf14001e5b571c2859d733d626fdd.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/c9b6691994305efed5d79ced398c794b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/22ecfda9e396989219fb1d0747f0769a.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"教育心理学【1本】\",\"isbn\":\"9787561048351\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/2d3b29fe2242ce446d1fd588b0bedd09.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/26e2838ac7b39e1a682d538e01ebbf9b.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"小学语文教师手册\",\"isbn\":\"6783839000130\",\"price\":364,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/4f60305a49a83463f0d38bb5b08b9fd8.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/9152b378b25540a5d4727f587462c0c4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/2278044b88b494226b1a98cfd98a1a9c.jpeg\"],\"location_code\":\"NS-B4-3\",\"inventory\":1},{\"goods_name\":\"职工业余中等学校高中课本 数学题解\",\"isbn\":\"6788046535956\",\"price\":658,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/61a06a01134b698babe64ff7d068e355.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/d8d9a4bf4c639d494c7d2132353b0adf.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/131c9133715bea4a3fb41f84d577593a.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"围棋基础教程 初级篇\",\"isbn\":\"6789894928124\",\"price\":898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/cf84347c56558e8b954b8c0db7c5f813.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/5a1308fef661dbd9939ae26624705084.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/cc1af60533ecc1a93f11ee8b983f2619.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"中学生作文训练\",\"isbn\":\"6784586603417\",\"price\":388,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/b546cce03a242808157de5e3e585c423.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/13055f963487cf5bb8b7c23d91233a79.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/1c8373b68abcea8618b52bace3a6bc52.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"初中数学学习中常见错误分析 张子贤陈京文\",\"isbn\":\"6789308705305\",\"price\":548,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/5b45cc6493e7b64ea263041cecd5091a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/c9f5298e9c1ddcfd5c37ea2bfe1ec415.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"中学生作文竞赛获奖作品\",\"isbn\":\"6780848679222\",\"price\":1833,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/0e0bd43c002f20a83058f603fa23c8f3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/c34195ca1009e82a7e2bc4757ce92435.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"思维技巧趣谈\",\"isbn\":\"6784780225610\",\"price\":428,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/fb63af13b4cc7b0dc550ff1e5025a44b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/e95f90c4dfda6fb8c7b6a8fdd32f3e6a.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"少年电工\",\"isbn\":\"6788995405527\",\"price\":778,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/297f3c12f76d19e4b5894175343eee67.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/870af1d68d17d7c37a1ea17886d3e16d.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"畸形的爱恋 (报告文学集)\",\"isbn\":\"6789457428825\",\"price\":298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-26/39c86819-92fb-4841-a4ef-57caec869127.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-26/69dbd804-358d-4278-b34a-fb9d49d0da6e.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"怎样读简谱\",\"isbn\":\"6784085519983\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-27/73d62d87-2061-4c6c-b885-248676b959d8.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-27/09470344-e40d-4d46-b4b4-284198cbccba.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"月季\",\"isbn\":\"6789196422453\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-27/f25043e4-69e9-45b7-8fb4-8433f21001d8.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-27/67c7a2cd-ed1c-4203-a04e-8e3a772cbe52.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"风雨落花\",\"isbn\":\"6786833300418\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-27/d99c5347-21ff-44f7-a53e-0a5efc9b844a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-27/105606e5-20d7-49cf-83d6-83355d73f9cb.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"旧上海娼妓秘史\",\"isbn\":\"6789779284633\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-27/54ff8149-2eb6-4b6a-969d-dbc67e943824.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-27/a093f8a1-77d7-48bd-81c3-122b0cfce8d5.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"浪花集\",\"isbn\":\"6786272659285\",\"price\":498,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-27/96854c60-671a-4d44-901f-718bb36a9ff1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-27/3ceaa4bf-848f-4ae3-807b-d770f3806751.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"金鹰\",\"isbn\":\"6789186191026\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-27/a611eeb0-e56b-48ef-b019-e053d4781e02.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-27/421b25d1-65f3-4492-bdf0-5b034c48a9e9.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"间谍\",\"isbn\":\"6786804972179\",\"price\":209,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-27/1b8def46-05b6-4a02-870c-498e0dd10231.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-27/8c438ced-9c3b-41b5-9df6-9273ae6d10f8.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"诗词赏析句典\",\"isbn\":\"9787538257298\",\"price\":1398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-27/b837d31e-ef47-4a9c-ab83-a8e7057e434c.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"欢乐农场日(中英双语韵文)/小熊很忙 9787508657844\",\"isbn\":\"9787508657844\",\"price\":1056,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/538f6407-02b0-4f09-a66d-7a0f3a159ae5.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":0},{\"goods_name\":\"白血病防治110问\",\"isbn\":\"9787506239738\",\"price\":318,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/fa7b04a9-e888-4c61-987d-e404e25322b1.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/3d968f5a-7372-4a13-9b95-50b1515e8782.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"尖子生题库五年级数学上北师版BS版关成志孟伶俐9787554924488辽宁教育出版社\",\"isbn\":\"9787554924488\",\"price\":676,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/8822bf5e-3319-4e7b-aaff-6f54d7b47b29.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/7d91ebaf-446a-482b-b4ca-9b17905cca4d.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"胃病\",\"isbn\":\"9787539016344\",\"price\":396,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/0a950830-597b-4aa6-8ce1-538ebf3e4b62.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"从小好习惯全八册\",\"isbn\":\"9787535886804\",\"price\":1697,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/01855e75-671c-4ec4-9fe8-baddeda13dde.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/5b5c9e62-b704-460c-9460-590093029850.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"《十大古典白话长篇小说》丛书 封神演义\",\"isbn\":\"6787844351032\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/da31dab0-da2c-4144-84c0-3a6e21834d4d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/38c1712f-1383-4b32-9ab1-aba5309a7c3a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/8a34ff17-7322-496d-8763-67513cbd5070.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"元明清文学作品选\",\"isbn\":\"6780505323445\",\"price\":207,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/9a24f35d-b77e-4ff3-95d4-879e3bdad776.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/11220fed-f82f-4c37-b896-00220e880191.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/94f0855e-b569-46e2-a899-b4262102ccca.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"茶酒治百病(修订本)\",\"isbn\":\"9787543910713\",\"price\":298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/082cf83b-7fa8-46df-9682-8d39e5b58242.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"无障碍阅读 初中生必读\",\"isbn\":\"9787100092241\",\"price\":1499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/5e8668e6-d23d-4547-9590-a5fb9af4b342.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"日语初级教程\",\"isbn\":\"6785462003723\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/3256a23f-68a5-470c-b667-6c9f3e1507e4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/9d7f448e-f9a3-4dc0-b84e-1ee6d18b54a0.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/16686dd4-7277-4e26-9132-db9f697584c1.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"精选名儒草堂诗馀\",\"isbn\":\"9787538265026\",\"price\":1098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/3204e20e-299a-4c2c-b473-92055b874268.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"翰学三书\",\"isbn\":\"9787538265019\",\"price\":3898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/f61861ca-c16f-4f61-85c7-61872bed3f6b.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"竹笑轩吟草\",\"isbn\":\"9787538265064\",\"price\":2498,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/bd9f0629-da3c-413a-bf6e-39d1f494668e.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"花骸\",\"isbn\":\"6789687688467\",\"price\":648,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/b18810fc-bdcb-4898-87af-d3713a98a686.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/397fd2e7-bab8-4e9c-a457-2792524ed97d.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"蓝色档案 华永正\",\"isbn\":\"6786725975780\",\"price\":698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/4c03cf0e-c866-4626-a1db-29e6dd1e9a2c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/8c4d2202-d28b-4638-8181-796bb0a2131d.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"出山第案\",\"isbn\":\"6786650731325\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/0e1aa3bb-8a26-4db2-a9b5-68a8962011e9.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/5fdba389-17b1-44b8-ab8a-928b3f00bb0f.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"高等学校教材 日语会话\",\"isbn\":\"6785149156073\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/d561d233-6c32-4dcf-be5f-43e0bde69fd3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/36b8472e-39ab-4f7d-a890-8a6a1a599c19.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"越海侦察\",\"isbn\":\"6788631112585\",\"price\":598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/aa0f1edd-7f64-4080-a3ea-1a98ea624860.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/5bfb5f5d-a4a3-4c04-9acd-953633ed7f19.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"谋杀总统的国家\",\"isbn\":\"6780702451762\",\"price\":398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/96868491-d6d7-4288-936d-60bc10079531.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/227deeab-ad0d-4ab4-9978-ef3948407b24.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"江青日记外流记 谢峻峰\",\"isbn\":\"6784863534218\",\"price\":598,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/690884e3-b417-4986-8fa6-7a4858981a99.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/a5501dad-97e8-43c4-97e9-e8969cb11fdb.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/abb6a0fe-3be9-4159-a028-40e43bfd6068.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"仙游记\",\"isbn\":\"6784232293444\",\"price\":1589,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/820f1439-a3f9-4b85-9cc8-5bddddbb7c6c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/641c8e46-ab9a-49dd-b54e-74c9d4abd376.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/9b9ffbbe-272b-434e-a566-b907c46bb921.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"神奇的校车全十二册\",\"isbn\":\"9787221091925\",\"price\":4398,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/52102b34-3bb5-4c45-8e9f-983139121e2d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/8a904e4c-2217-4344-a3f2-1163d9188ac4.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"神奇的校车全十册\",\"isbn\":\"9787221091925\",\"price\":3098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/66373d8a-8f87-4428-a6c7-afca23ddfea9.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/f93cfc42-e121-4844-a4cf-795289f6eb7d.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"幼儿社交能力培养立体屋:玩具店\",\"isbn\":\"9787556048120\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/32d94537-df31-4096-a3c4-3db647c38167.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"荒诞故事集:耕林文化精选绘本\",\"isbn\":\"9787547000724\",\"price\":1098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/14a9ab1e-8a05-4639-815b-521f2e389c9b.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"和米格一起去冒险\",\"isbn\":\"9787556834181\",\"price\":598,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/7b93db54-904c-40a1-9fe2-1057e245941b.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/c9db4cc0-e9da-4d39-8c03-b3e01b21c40b.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":0},{\"goods_name\":\"虚拟现实驾到\",\"isbn\":\"9787568296755\",\"price\":199,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/93803694-8dc4-4763-879c-50096ecfd586.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"终极米迷口袋书:惊奇世界\",\"isbn\":\"9787115402578\",\"price\":293,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/90d032a5-51e5-4198-90b7-1497d9d92c49.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/cdb4feee-262f-46d7-ac02-ef377988a03a.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"小屁孩朱尔多·变身蜘蛛侠\",\"isbn\":\"9787531337614\",\"price\":1587,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/497aa3d6-e9bd-4e53-b219-0abf34ef2c39.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"小屁孩朱尔多·决斗班长\",\"isbn\":\"9787531337638\",\"price\":2779,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/7f639b02-83c4-427c-b625-5049baf862a5.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"小屁孩朱尔多·有个秘密不告诉你\",\"isbn\":\"9787531337621\",\"price\":974,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/a62e4871-da6c-4f89-a255-b01e71cd4bc7.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"【全新正版】 中国古典神话传说和民间故事-黄鹤楼的传说 9787559549358 王淑杰 河北少年儿童出版社 2022-07-01\",\"isbn\":\"9787559549358\",\"price\":732,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/9db8bd5c-3913-4f6e-a006-cfffd186ab1b.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"魔法学校(注音版)1\",\"isbn\":\"9787531337058\",\"price\":377,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-28/1d871bdf-c6bf-414f-964a-a8743852e4ee.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-28/6ef2397a-b7c3-4b61-9de0-265297ead88c.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"巨译的诞生\",\"isbn\":\"6789184607567\",\"price\":399,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"启迪孩子智慧的动物对话\",\"isbn\":\"9787504473912\",\"price\":200,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"神奇校车(动画版)-三文鱼的洄游\",\"isbn\":\"9787221108463\",\"price\":4795,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"AA-F1-1\",\"inventory\":0},{\"goods_name\":\"神奇校车-三文鱼的洄游\",\"isbn\":\"9787221108463\",\"price\":4900,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"AA-F1-1\",\"inventory\":0},{\"goods_name\":\"神奇校车(动画版)-三文鱼的洄游\",\"isbn\":\"9787221108463\",\"price\":4900,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A4-3\",\"inventory\":0},{\"goods_name\":\"楼外寻梦\",\"isbn\":\"9787531679936\",\"price\":388,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/ddfa3b4e-3046-4d0f-8f41-5fb022852dfb.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/16cb66cd-17b4-4dc2-9593-8497cf741cb6.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"蒙古贞文化大系:中国阜新蒙古剧(上下)蒙汉对照\",\"isbn\":\"9787549704217\",\"price\":10799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/ea0e169f-c484-4f1b-ac8e-e784f00269e4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/991f8cfa-cd72-4377-a2c9-0fb9828519da.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"胡雪岩的智慧微博 杨川 沈阳出版社\",\"isbn\":\"9787544144612\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/f7b5168a-5698-4da7-9df8-f7d78578ccc0.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/ccb2a943-935e-4d87-8f6f-8c6fd15b7351.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"中国古代航运史——“一带一路”系列丛书\",\"isbn\":\"9787563232680\",\"price\":4949,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/66ed68ea-95c2-4245-b5b7-68162a255d3d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/f8e92296-f0fc-43be-bc3c-9b6691922117.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"辽宁大事记.2011\",\"isbn\":\"9787549703869\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/e777b434-9044-4ac1-a387-cd4fb8170ebf.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/54d14036-58db-4bb1-89d3-0cb74f468f54.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"耄耋新作\",\"isbn\":\"9787544139281\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/166ed3d7-9f19-4e74-b661-5750bdbb7467.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/ebd5ea0c-7a23-46e7-b1cb-6b062dce3133.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"辽阳历史大事记\",\"isbn\":\"9787549700141\",\"price\":5399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/1f5be6ff-a903-4205-a762-d561795df3b9.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/0197044c-ddf0-46cf-bbd9-6be5f39edca2.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"印记辽宁 上集 永恒的记忆 说说辽宁的纪念馆\",\"isbn\":\"9787547021897\",\"price\":1582,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/57b83a18-5de1-42c8-87d2-9c3ae4d1d4e9.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"关东民间传说\",\"isbn\":\"9787544126656\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/7c8efdec-df32-4cad-9a36-74ecfce41147.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/e7e42d04-1c79-489c-af3e-9416974d8270.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"笔记文选读/大家语文\",\"isbn\":\"9787205086688\",\"price\":1007,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/55297ae8-a309-410d-bbc1-d0553f279497.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/5028caf9-7311-4b0a-acd8-2066f2e4252d.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"猛回头 : 陈天华、邹容集【平装本】 正版全新,一版一印,保存完好,实拍图片,品相如图所示\",\"isbn\":\"9787205028695\",\"price\":82299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/f0b2a84b-311c-4bc3-86f6-f730c87f6401.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"四世同堂 上下\",\"isbn\":\"6789814621097\",\"price\":1299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/a80f3eec-b887-4bf3-a90d-079edc91587a.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/9baf09ff-2bb0-4f63-951c-5d9942d311bc.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/e51d89d4-f7ca-492a-8851-108a497889df.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"山菊花上下\",\"isbn\":\"6784518358361\",\"price\":1798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/8f61d13c-31b1-409e-9a13-a8dda2a396ce.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/72cf4c6f-dbfd-4517-ac1d-74ab898f00cb.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/396202bb-5870-4eb9-8079-47aa61b18f58.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"中国 死桥(上、下册)\",\"isbn\":\"6787000264168\",\"price\":5299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/f5c6f2e2-0940-418e-ad74-de3fd36de5e3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/ef69ff46-81c5-4a8f-91dc-3d7b4829a474.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"回忆与思考\",\"isbn\":\"6785424360060\",\"price\":4599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/65680cc5-1b5e-4941-9932-ed8654ef1bdc.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/b0efda24-2e13-47c2-9bd6-f2afbed8a2b3.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/315a0f52-9a66-4eae-8711-a3962c1407ee.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"钢铁是怎样炼成的\",\"isbn\":\"6788468630715\",\"price\":4099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/faf9aa6f-77a3-4bb6-bc42-f879061cbd17.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/4745cdac-bda1-4b44-bdf0-774f7c7efacb.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"上海的早晨 第二部\",\"isbn\":\"6788219253689\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/3d7293b7-74ff-47c7-a301-c2901930d96d.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/d89f4e32-11b5-4f2a-bd00-23e8ab939d44.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/505d2141-d4ab-4cf6-9815-a2ffb8a7f14c.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"冲破山河的迷雾上下\",\"isbn\":\"6789941045161\",\"price\":3999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/4f0bda8c-8859-4a26-bf05-ed74ef06af94.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/296ecfa8-ea12-4d7f-9ac9-6547d59024d0.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/e6dc8c77-5707-414e-a632-f057478fc73d.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"平原枪声\",\"isbn\":\"6783332618373\",\"price\":202,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/19131924-369f-436f-9e82-d207f9616c38.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/776302a1-cd0d-486b-a4f7-d39c728b5824.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/77f66add-291d-4833-bbfc-2e9d266f226c.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"敌后武工队\",\"isbn\":\"6786740161190\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/f5a1bfc0-ec61-4f56-afa7-644b971d88f0.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/5d060891-4588-49d9-8046-d205f9e840ec.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/b7178f03-9fb7-475f-84f1-1cfd25b47c15.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"薛刚反唐\",\"isbn\":\"6785381371358\",\"price\":300,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/90bd2a59-b781-455d-ba34-714c280c7f0f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/daedcc2d-18ec-4296-b23e-dded0c1c1a63.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"微神集\",\"isbn\":\"6781740909600\",\"price\":254,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/e99e2b37-e1db-4aae-9b0c-9f2c11f11c70.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/6554004e-bce2-4e83-912f-14c8742ea538.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"静物的用光\",\"isbn\":\"9787531427469\",\"price\":487,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/aaf842b8-e598-47fb-a7a5-2d0e51de5edc.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"传统工艺之旅\",\"isbn\":\"9787531426929\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/55eb0009-474a-4a1a-aabe-592232e0874a.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"记忆中的辽宁\",\"isbn\":\"9787531432128\",\"price\":4699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/eba4ee24-2be6-4328-92f4-22556119e74e.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/d4530098-bae0-45ac-8f6d-3ef0f69588e2.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"儿童学画必备资料用书:姜宏儿童创意素描教师范画赏析\",\"isbn\":\"9787807591795\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/808716cd-c75b-4e37-aa23-0235c5e58e3f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/adbec248-6ea2-4079-8b4a-e5d2ceb94938.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"中国书画 2015.09\",\"isbn\":\"9771672232020\",\"price\":529,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/ecd52d63-ee5e-4614-b883-e0bc2eb40ab5.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/dd1340f6-64df-4687-b60a-a7de100ab081.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"赵宝平素描集\",\"isbn\":\"9787102020914\",\"price\":4199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/cc247a1d-d87e-40a3-acc6-b40567861515.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"新编满族大辞典\",\"isbn\":\"9787561078594\",\"price\":11099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/c9bdd685-3368-48ea-84f6-128840dfd188.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"中国民营书业发行概览上下\",\"isbn\":\"6788250953789\",\"price\":9299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/e73c3283-ce9f-40ca-b2b3-aa5a631c71de.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/23fca110-860d-4ed2-a5d0-dbdc419993a4.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/355fe81e-9af4-4963-a1cf-7fa22184a60c.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"辽宁省志.广播电视志\",\"isbn\":\"9787538128055\",\"price\":2698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/5e963542-7045-4cf2-a343-388901690d3c.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/049f0efe-0f2f-4af4-8682-8ee212028a7e.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":2},{\"goods_name\":\"海洋乡志\",\"isbn\":\"9787205078645\",\"price\":11499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/6c8cb6fc-33c6-4eda-ad57-1113db5c275f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/1b941ae5-bb4c-4243-88ac-8516232d97a9.jpeg\"],\"location_code\":\"NS-A5-3\",\"inventory\":1},{\"goods_name\":\"COM人体速写\",\"isbn\":\"9787531428046\",\"price\":3749,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/ec5b7a59-9136-457a-8603-84d54c668368.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"向峰文集全五卷\",\"isbn\":\"9787561042755\",\"price\":13900,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/74077f2a-5b6a-4b5a-9979-24bfd5ba1127.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/e5403cce-9e09-4540-bc0d-7a7c568f265b.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"辽宁省图书馆藏古籍精品图录\",\"isbn\":\"9787544136792\",\"price\":45999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/27d86eb4-1dea-495d-8c1f-5fe195dc841f.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-29/85773b61-41fc-4679-b9db-291776fbff86.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"辽宁省志.出版志\",\"isbn\":\"9787538127560\",\"price\":1698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-29/47dbca04-edda-4ddb-a17a-fabf3ed0637d.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"药食同源养生方药集粹\",\"isbn\":\"9787559119278\",\"price\":476,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-30/34f10f87-35b3-418c-a05c-8bf20bf2e6dd.jpeg\"],\"location_code\":\"NS-A4-5\",\"inventory\":1},{\"goods_name\":\"数学\",\"isbn\":\"9787303181230\",\"price\":202,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/0f51d2a6-d9f2-4021-a48e-c575781af411.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"辽宁省志·公安志1986—2005\",\"isbn\":\"6784758138119\",\"price\":5800,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/d006211b-b49d-4d19-858d-7c624eda06cf.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"希利尔讲世界史\",\"isbn\":\"9787545600858\",\"price\":9405,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/d39aa5bf-2c1b-474a-99e0-e62271bdc6f3.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"活了100万次的猫\",\"isbn\":\"9787806795095\",\"price\":9007,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/b92f070f-5cdc-485b-aabe-8fd814cddab2.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"米小圈漫画成语:马不停蹄\",\"isbn\":\"9787536575356\",\"price\":8041,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/cd6a9d20-adcd-4eb6-9d6a-7001e59b70d3.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"长大我最棒:注意安全 [3-6岁]\",\"isbn\":\"9787541742989\",\"price\":8298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/9b437bc4-953d-4be2-9011-bdb2fd4efe52.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"可复制的领导力\",\"isbn\":\"9787508682464\",\"price\":8591,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/5cdcaa70-7113-4000-be7b-031bcc8db6d9.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"新东方CEO周成刚最新力作 穿越世界的教育寻访\",\"isbn\":\"9787513339018\",\"price\":9878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/1671d9bb-efc7-4e8f-a2fe-1d672a3294be.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"匠人精神\",\"isbn\":\"9787508656151\",\"price\":8654,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/8d197232-1156-4178-b647-0c784a58c416.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"态度 吴军新书\",\"isbn\":\"9787508694740\",\"price\":9079,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/6408aa60-8dde-4ee3-85f1-b77e838e7a5b.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"麦肯锡方法\",\"isbn\":\"9787111292715\",\"price\":8484,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/2ac70770-c5f9-4144-a3f4-fe7175e0ee05.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"随风而来的玛丽阿姨\",\"isbn\":\"9787533268077\",\"price\":8296,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/d14f4c8e-8107-431b-8b03-c3142a252b1b.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"中国居民膳食指南(2022)\",\"isbn\":\"6785519521348\",\"price\":11976,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/c0baaaa3-a2be-4540-9497-6061a89c8c82.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"喜剧\",\"isbn\":\"6783778648950\",\"price\":1191,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/e3b87028-477c-4cdf-8c42-921fdec17ec0.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"多啦A梦 上下册\",\"isbn\":\"9787538613544\",\"price\":2399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/eaeec716-215b-40d6-bcff-f054f5d6af26.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"机器猫哆啦A梦\",\"isbn\":\"9787538613117\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/53134d77-5098-4d62-b2f0-a435ab242df4.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"星火英语·新要求大学英语4级词汇周计划\",\"isbn\":\"9787546307046\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/4f904b76-5478-4639-8d08-1114500b34d9.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"商务英语教程\",\"isbn\":\"9787302574057\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-01/d1dde977-456c-4d36-b253-da183579bd5e.jpeg\"],\"location_code\":\"AA-1-01\",\"inventory\":1},{\"goods_name\":\"经济学原理\",\"isbn\":\"9787547018415\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-02/c40cdc9e-e553-4135-9c2b-030ba7a6788c.jpeg\"],\"location_code\":\"NS-B4-5\",\"inventory\":1},{\"goods_name\":\"实用抗血栓个体化药物治疗手册栾家杰主编安徽科学技术出版社9787533769420\",\"isbn\":\"9787533769420\",\"price\":7386,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-02/201c08fd-62ce-4080-a2a4-899c533abede.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"饮食术\",\"isbn\":\"9787513259156\",\"price\":689,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-02/eaa00dba-6331-4e0b-9e3f-2af460de53bf.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"暗房技术\",\"isbn\":\"9787805361505\",\"price\":839,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-09/dbb6c343-ae28-45b6-b1ee-6765e62bb9c3.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"向日葵开过旧夏天\",\"isbn\":\"9787531338369\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-14/ecf1ebe0-e0df-4b61-a573-bb7389621b66.jpeg\"],\"location_code\":\"NS-B4-4\",\"inventory\":1},{\"goods_name\":\"BOSS出没,请当心\",\"isbn\":\"9787543694033\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-14/9f866d5c-5695-4617-aace-c6933f01ba74.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"三国演义 绣像四大名著全本\",\"isbn\":\"9787564530389\",\"price\":566,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-14/59a13194-0b27-45b1-9a94-39aa10f6bc09.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\":中国古代教育史\",\"isbn\":\"9787107070525\",\"price\":877,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-16/b8075bd0-7a0d-446c-9d6c-a82e8b08ed36.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":0},{\"goods_name\":\"《书法常识一本通》\",\"isbn\":\"9787547012536\",\"price\":1236,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"别具魅力的软雕塑:[中英文本]\",\"isbn\":\"9787531427292\",\"price\":378,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"唐人书《金光明最胜王经》三种\",\"isbn\":\"9787806635568\",\"price\":1178,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"唐人书〈大般若波罗蜜多经卷三百九十〉\",\"isbn\":\"9787806635537\",\"price\":878,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"【二手正版】 疯狂科学 (美)格雷|译者:张子张 人民邮电 9787115244949\",\"isbn\":\"9787115244949\",\"price\":200,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"天艺·冰花图典\",\"isbn\":\"9787531427957\",\"price\":346,\"appearance\":\"85\",\"live_image\":null,\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"平天下 2022\",\"isbn\":\"9787010236957\",\"price\":777,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-18/b8779ce5-4abf-4987-bf4e-fee9e65ab336.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"2023年春 尖子生题库 数学五年级5年级下册(BS版)北师大版  \",\"isbn\":\"9787554936177\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-21/a1f27911-fc77-4bbd-a0d3-2cddf7b05f31.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"小学生中国文化大百科中华文化常识小学生必背知识点趣味问答 轻松易懂弘扬中华传统文化提高文学素养国学启蒙\",\"isbn\":\"9787511070982\",\"price\":476,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-23/5ac52b5f-432d-4a90-80fb-04e4abcd87c9.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"新蕾原创桥梁书:讲童话的魔法学校 管家琪 新蕾出版社\",\"isbn\":\"9787530761915\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-23/b51d2a4e-fe9f-473e-acd5-616f9b76069c.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"2023年春 尖子生题库 数学五年级5年级下册(BS版)北师大版  \",\"isbn\":\"9787554936177\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-23/4054fe71-9cff-4b01-80dd-47b352d95fe2.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"智慧故事:彩色注音版.外国卷【1本】\",\"isbn\":\"9787532240265\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-23/f55a2bb2-4479-4b98-a60b-00827ec16080.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"秘密森林奇遇记\",\"isbn\":\"9787530760253\",\"price\":1394,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-12-23/6453a745-c3fe-4bdc-ab65-5f7351a98aa5.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"从小好习惯 幼儿行为习惯教养绘本(全28册)\",\"isbn\":\"9787535886804\",\"price\":200,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-01-06/3666c2b5-4e57-49bf-a095-b5bcde5d39fe.jpeg\",\"https://img.pddpic.com/open-gw/2026-01-06/81c72690-41ab-4e1e-b56d-c62362bd776b.jpeg\",\"https://img.pddpic.com/open-gw/2026-01-06/8a7380c5-331e-40dd-b3bc-b882cd2697a1.jpeg\",\"https://img.pddpic.com/open-gw/2026-01-06/440fad81-eb92-410c-b65a-ca7ad7f517b9.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"如果巴黎不快乐\",\"isbn\":\"9787547401880\",\"price\":389,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-01-26/6787bc1a-e132-48fc-9f18-a0feae5d767f.jpeg\"],\"location_code\":\"NS-A3-1\",\"inventory\":1},{\"goods_name\":\"高等院校经济与管理核心课经典系列教材.工商管理:企业运营管理(第四版)\",\"isbn\":\"9787563822447\",\"price\":332,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/e130efe4-f9fa-4b2e-9986-594064a4a238.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":2},{\"goods_name\":\"你有多,就有多珍贵简·格兰尼曼 安德烈·索勒9787521763294多仓直发\",\"isbn\":\"9787521763294\",\"price\":2903,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/5d608fa6-09fa-4777-9d37-32d2ec16f8a8.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"初中知识清单·初中必备工具书:语文\",\"isbn\":\"9787565603778\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/d125eddc-748f-4114-b99e-520088aac6de.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"Autodesk Inventor 2020实用教程\",\"isbn\":\"9787302587194\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/b3b2767d-c929-45a7-94af-0f7b83790a8d.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"计算机组装与维修基础教程(第5版)\",\"isbn\":\"9787302515463\",\"price\":1698,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/2016960c-e9e2-41fa-9251-492b89acb283.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"建筑设计原理\",\"isbn\":\"9787112128082\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/8f1b543f-5a5f-4698-a5a8-74e9e42d4148.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"物流成本管理9787302313977\",\"isbn\":\"9787302313977\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/5b0a898f-0d13-4193-b3e9-79a976dce42b.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"正版二手货币银行学第五版王晓光9787302513995清华大学出版社\",\"isbn\":\"9787302513995\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/e89ce1dd-0ac9-4edf-9b77-e225f6e24fbe.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"周计划:小学语文阅读强化训练100篇\",\"isbn\":\"9787562848301\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/90bdb24c-182f-4d61-be9a-00867c149fc3.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"通用百年历(1921-2060)\",\"isbn\":\"9787534530272\",\"price\":3599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/a30e648e-3792-47eb-b571-288adeb0d034.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"华北解放战争纪实\",\"isbn\":\"9787010032849\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/66735eee-d069-4b0d-8117-24b7a02b7459.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"国际大奖小说:金龟虫在黄昏飞起\",\"isbn\":\"9787530742815\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/a4c10540-4d2e-404f-9986-db91588a56f8.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"匈奴帝国传奇(彩图版)\",\"isbn\":\"9787507827385\",\"price\":393,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/fa29de9f-86a0-4efb-bfea-3617a1c3665b.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"成长文库·你一定要读的中国经典:聊斋志异\",\"isbn\":\"9787530122822\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/f9cf6471-0626-46ff-bc20-f66451aed2bd.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"音乐基础知识(基本乐理)考级模拟试卷10套 一级、二级、三级(全三册)\",\"isbn\":\"9787515350684\",\"price\":387,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/ceb8f985-f66c-4b89-acd9-164927d264ed.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"全职高手8·赏金猎人\",\"isbn\":\"9787535385802\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/1d98ce54-0722-43e1-a97f-5647f7ed368b.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"it's love偷星九月天同人小说集 2册合售(1.2)\",\"isbn\":\"9787549201198\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/ab023683-b0d1-4d16-9174-4ce087966c9c.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"电商产品经理宝典:电商后台系统产品逻辑全解析\",\"isbn\":\"9787121325793\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/af0f12cd-9802-4c36-8724-c92218dfbd78.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"改变,从家庭亲子阅读开始\",\"isbn\":\"9787519466640\",\"price\":649,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/d858bc2f-22fd-4aa1-bf83-5c053e8f833b.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"Visual FoxPro 6.0数据库与程序设计(第3版)\",\"isbn\":\"9787121123931\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/23acd73e-e6a2-4184-8c22-89fa274eb0d4.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"政府绩效评估/“十二五”普通高等教育本科国家级规划教材·21世纪公共管理系列教材\",\"isbn\":\"9787300152189\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/10bc7a35-50bd-45be-9d84-56cbf72904ab.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"烹饪化学 第三版\",\"isbn\":\"9787516717547\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/299a3c81-7a18-4d74-8f50-f91bbbd6b664.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":0},{\"goods_name\":\"编程之美:微软技术面试心得\",\"isbn\":\"9787121060748\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/134d3eb7-4e5c-4bff-8bf8-1ff870b11955.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":2},{\"goods_name\":\"数据结构 用C语言描述\",\"isbn\":\"9787040433050\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/3917fc53-6fed-4309-b5c4-0fed635e57c6.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"世界高端奢侈品图鉴\",\"isbn\":\"9787510430947\",\"price\":888,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/1e7541dd-2e62-432b-bce7-6182296b73d5.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"喻屏传:一位老共产党员的人生历程\",\"isbn\":\"9787801992307\",\"price\":4099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/65a4c51d-ef8a-46bd-84e3-9bfae5e6fc5c.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"找对你人生中最重要的7个人\",\"isbn\":\"9787539973043\",\"price\":290,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/8b7a9d83-b76a-45b2-a9ff-c495d2a6f4a4.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"图说细说汉字\",\"isbn\":\"9787565827105\",\"price\":3159,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/e67657da-beb9-4ba0-af69-de87e6504f40.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"没有女人的男人们\",\"isbn\":\"9787532768776\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/153b7dcd-c99a-4189-8561-33b3eff0c243.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"意林成长卷:何以为青春\",\"isbn\":\"9787511070975\",\"price\":597,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/7ceb2fb2-519e-4cbf-8a86-afb9a1e6b74d.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"全球阶梯教养圣经 : 你的1岁孩子~你的6岁孩子 6本合售\",\"isbn\":\"9787539045016\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/e70081f2-256c-4c58-b18f-9cf5af361f8e.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"一次完全读懂佛教\",\"isbn\":\"9787543053472\",\"price\":1011,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/1583cdf4-707f-4630-83cd-ab9030a6fbcd.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"金英杰 2018年中西医结合执业医师资格考试实践技能图解\",\"isbn\":\"9787552271911\",\"price\":599,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/be9a5886-401a-419f-8239-b3ef05aa1e89.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"数字游戏史:艺术、设计和交互的发展\",\"isbn\":\"9787309151374\",\"price\":1430,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/7ed0d6b9-9feb-4ed3-b4f9-174c3cce4506.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"大学化学\",\"isbn\":\"9787301308455\",\"price\":409,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/917127f8-5ef4-4dde-a09b-e2ac8df02845.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"自考教材政府与事业单位会计(2018年版)\",\"isbn\":\"9787509585481\",\"price\":308,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/22f40fba-8262-4b05-96dc-c75e9ec3d5aa.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"八个宝盒 让孩子活出精彩人生\",\"isbn\":\"9787550211186\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/a2f7571c-347f-4d88-93c5-dcc53db26f35.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"21天学通C语言(第7版)\",\"isbn\":\"9787115355379\",\"price\":282,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/55a96c5d-0db0-4f32-a493-3b0d998208a5.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"GRE官方题库范文精讲\",\"isbn\":\"9787560529547\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/a4d30a15-4c74-48ea-a593-2d818d6aaa5a.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"说笑:有效有范儿的表达技巧(薛兆丰、李诞、于谦、徐峥推崇的沟通表达技巧)(未拆封)\",\"isbn\":\"9787521717419\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/58e63c94-ab50-4d5b-9ed2-6c775a87d796.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"金色男孩\",\"isbn\":\"9787514359879\",\"price\":1280,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/952c5b59-c2bf-44dd-9ac2-ecc79a0e8f4c.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"神农本草经\",\"isbn\":\"9787506798037\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/6d3f1a1a-6dc0-4a35-8d30-d9c341bbd3c8.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"我要对你做,春天对樱桃树做的事 全世界最美丽的情诗\",\"isbn\":\"9787551122795\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/5f6b7db2-11ce-40c5-8680-efe899a234e4.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"一天一首写给孩子的小小诗:捕捉生活中温暖的瞬间,让平凡的日子充满诗意\",\"isbn\":\"9787511047571\",\"price\":936,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/d9f716d5-84f2-4bd3-8d2c-255af55a10fb.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"中国原创科学童话大系[第六辑]:蚂蚁王国大冒险9787556033928\",\"isbn\":\"9787556033928\",\"price\":373,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/6db6f0b7-bbf5-4a05-a424-e99ae8589af1.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"项目管理/高职高专规划教材\",\"isbn\":\"9787111488743\",\"price\":429,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/3256c200-f3d7-468d-ad6e-d3a162390bcc.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"证券投资分析9787509564158\",\"isbn\":\"9787509564158\",\"price\":1129,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/0f0da07e-be81-4978-a7eb-e64df848d390.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"古瓷收藏入门百科\",\"isbn\":\"9787807204336\",\"price\":1263,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/276a2194-e0ff-43ea-8dec-f2dc940f064c.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"反败资本\",\"isbn\":\"9787111655138\",\"price\":401,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/8062ab3b-1b57-46a7-95cf-31355c63f36e.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"杏林拾萃 : 黄衍强行医集思录\",\"isbn\":\"9787548105800\",\"price\":877,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/147ba734-9665-4be7-9cc6-15a48e8df04f.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"精子战争\",\"isbn\":\"9787807000259\",\"price\":588,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/5763c53c-91a5-4263-82af-eef83b674ed6.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":0},{\"goods_name\":\"拍电影时我在想的事\",\"isbn\":\"9787544294041\",\"price\":1857,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/41356e61-a0b8-4365-966a-1214572d8377.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"老板生存手册\",\"isbn\":\"9787801095244\",\"price\":214,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-11/1d95a4b9-d89c-4fea-ba3b-2ec8c8698d90.jpeg\"],\"location_code\":\"NS-A3-2\",\"inventory\":1},{\"goods_name\":\"民事诉讼法学【内页有划线笔记】\",\"isbn\":\"9787562088820\",\"price\":240,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/fb786e7a-ccc3-45b2-991f-3021611c335c.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"1年级下 清华附小的语文课\",\"isbn\":\"9787559815743\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/3b8a2a0e-004c-4b67-a79a-4364a0cde773.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"重难点手册七年级数学上册RJ\",\"isbn\":\"9787562286004\",\"price\":1279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/73ebde50-a731-468e-8eaa-43a518f5c8a2.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"一篇一篇,解读统编——小学语文统编新课这样教(3年级卷)\",\"isbn\":\"9787570211548\",\"price\":778,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/415db4f9-9eba-4e02-bc12-c6da47308624.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"2020国家执业药师中药通关必做2000题中药学专业知识(二)(第五版)\",\"isbn\":\"9787521416800\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/465ef795-72d4-438c-9372-d2a0cebd9dcf.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"建筑制图与识图(附实训任务书第3版)/“十三五”职业教育国家规划教材修订版\",\"isbn\":\"9787576309799\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/ccd0f6b6-4aff-43a5-ae1c-28a7c3f19d0d.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"学前儿童艺术教育(音乐)\",\"isbn\":\"9787040404654\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/c442801a-e026-4fc7-b897-840a4f4dbbc3.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"敏捷软件开发:原则、模式与实践\",\"isbn\":\"9787302071976\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/1635988c-2be7-4535-80a0-dfcc2cc2f631.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"生理学(第7版/高专临床)\",\"isbn\":\"9787117187633\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/ced9864e-524a-4aaf-ba83-7d53ad5039ef.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"全新正版图书 江苏“专转本”管理专业大类考试一本通陈永南京大学出版社9787305272820\",\"isbn\":\"9787305272820\",\"price\":1969,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/0dd0a009-a2e7-484c-9385-296e0d8d02e6.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"高情商聊天术:如何成为会表达的少数人\",\"isbn\":\"9787514218787\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/c02459c9-f307-4c50-ab9e-8f15dae442ef.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"泰语会话 外语-其他语种 邱苏伦 编\",\"isbn\":\"9787560026657\",\"price\":729,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/1fe3d200-f430-4562-8c7b-45edc74d4378.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"中华人民共和国民法典(32开硬壳精装大字版)附草案说明\",\"isbn\":\"9787516222331\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/4efcfaf1-7721-48ad-9735-38e5e8450018.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"再度与你:3:3 青春小说\",\"isbn\":\"9787574601659\",\"price\":1976,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/e76e2656-82e3-4e78-ae79-afd9c19de605.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"中国主要统计指标诠释\",\"isbn\":\"9787503761058\",\"price\":318,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/81ca7887-57db-489e-b469-bf1a6f8d166c.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"经济蓝皮书:2022年中国经济形势分析与预测\",\"isbn\":\"9787520194013\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/2accf642-1b62-4a2d-96e8-c014aa29294a.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"法官裁判智慧丛书:婚姻家庭纠纷裁判精要与规则适用\",\"isbn\":\"9787301248584\",\"price\":441,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/4878f29f-1700-4e59-b568-82d9bd6e86b3.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"2024李林考研数学冲刺预测6套卷(数学一)\",\"isbn\":\"9787512441804\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/addf4d2b-5d27-4d5c-b7de-2a3a7a95ea66.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"内科学全国医学院校教材配套精讲精练本科临床医学教材配套用书\",\"isbn\":\"9787519258917\",\"price\":569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/a879cbb1-c1d7-47b3-b77e-58f30570c734.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"法律英语阅读与翻译教程(第二版)\",\"isbn\":\"9787208136724\",\"price\":978,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/783e435b-a554-4f3a-adf9-65e6d40e795c.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"现代酒店英语实务教程 (有光盘)\",\"isbn\":\"9787506229050\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/2dcb3baa-f1ed-48ec-8a63-7cd26ba7c088.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"魔兽剑圣异界纵横 (1\",\"isbn\":\"9787543889651\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/afd6430a-b505-4279-bf05-be27510a6c2d.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"魔兽剑圣异界纵横 7\",\"isbn\":\"9787543886131\",\"price\":500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/743035b6-ec99-4f78-a0f8-7865f38e4fa7.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"施工企业会计9787300276793\",\"isbn\":\"9787300276793\",\"price\":390,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/4e6fdb96-0bd4-4745-976c-3dd945d11f01.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"迪士尼公主晚安宝贝睡前故事\",\"isbn\":\"9787115543998\",\"price\":537,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/1c18dbc4-6e6d-415f-9c8f-0b6730720840.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"皮皮鲁总动员经典童话系列8本合售,正版,书目见图\",\"isbn\":\"9787534291197\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/7b1f6d2b-8856-4bc8-915b-23da40586625.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"百年家族:曾国藩\",\"isbn\":\"9787543448117\",\"price\":348,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/9dc8dac7-a60c-43bd-9461-e0fd5e900a58.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"我的第一本科学漫画书·科学实验王2:牛顿运动定律(普及版)\",\"isbn\":\"9787539187716\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/7e48109b-9fc6-4acb-8e2e-bbaa8c0690c6.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"亚洲的奥斯威辛:日军侵华集中营揭秘\",\"isbn\":\"9787220074189\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/4f14d603-b9ea-4121-905d-33c11453ca59.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"名犬图鉴:331种世界名犬驯养与鉴赏图典\",\"isbn\":\"9787537564496\",\"price\":438,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/00f96cf7-788d-4f2f-9371-0c6586c41922.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"奔跑吧 兄弟\",\"isbn\":\"9787504373311\",\"price\":480,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/b98e8176-9d88-4a8e-b141-a8b975c2e769.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"古堡鬼鼠 书口有污渍\",\"isbn\":\"9787539148595\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/f01f24c7-662a-4cea-a232-c93d18db5d1f.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"鸡皮疙瘩.魔兽主题馆(全新主题馆 一本书满满4个足料故事 勇者之旅 惊险够味!)\",\"isbn\":\"9787544823104\",\"price\":317,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/f32c5f06-4f6c-403d-9e86-14e6598f12f9.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"2013年厦门社科丛书·闽台历史民俗文化遗产资源调查系列:闽台民间传统饮食文化遗产资源调查\",\"isbn\":\"9787561550021\",\"price\":919,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/ba32eb8d-3ea7-4d70-9091-528797810980.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"沙丘序曲:厄崔迪家族\",\"isbn\":\"9787229153755\",\"price\":2479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/d040d0de-3654-47dd-a9ca-f0b9e79ce7af.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"佛祖在一号线\",\"isbn\":\"9787503945434\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/c56f1879-3a05-498d-bc22-74469e47e6e6.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"宿命\",\"isbn\":\"9787544268158\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/89f3bd38-a32c-4abf-9ef2-a24c85dd6a44.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"见识\",\"isbn\":\"9787508684604\",\"price\":301,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/40d78f89-1117-45c6-a724-4ba8fae48c24.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"国家职业资格培训教程:计算机操作员(基础知识)\",\"isbn\":\"9787504578716\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/d85996c3-11ee-40cd-abd4-a4710c38c6cb.jpeg\"],\"location_code\":\"NS-A3-3\",\"inventory\":1},{\"goods_name\":\"神经病学全国医学院校教材配套精讲精练本科临床医学教材配套用书\",\"isbn\":\"9787519252045\",\"price\":524,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/7e86e02c-bd6e-4cd2-954e-584d9a3fda4b.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"国际注册内部审计师CIA考试新汇编600题(一):内部设计基础 2014版\",\"isbn\":\"9787545434217\",\"price\":290,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/20012461-643d-46e2-88af-0ebd6c626017.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"出租汽车驾驶员从业资格考试全国公共科目培训教材\",\"isbn\":\"9787114135132\",\"price\":563,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/847b3098-c919-4e46-ac51-ab188bc8b34a.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"内科学全国医学院校教材配套精讲精练本科临床医学教材配套用书\",\"isbn\":\"9787519258917\",\"price\":569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/d09bda53-e18b-46cb-9c5c-a0240b819494.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"小儿推拿(第4版/高职针灸推拿/配增值),16开本,人民卫生出版社(实物拍图,外品内页如图,内页干净整洁无字迹,无划线,扉页有签名)\",\"isbn\":\"9787117261647\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/221547a8-c3ba-475c-8207-ae163864a27f.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":3},{\"goods_name\":\"蔬菜生产技术南方本\",\"isbn\":\"9787565519017\",\"price\":458,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/bf6e431c-b233-4c0b-9b42-b276dae7dc95.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"电子整机装配工艺与调试\",\"isbn\":\"9787121428593\",\"price\":334,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/f408c06e-788f-4bc8-ad30-c425453d7736.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"学而思基本功数学一年级上\",\"isbn\":\"9787562859321\",\"price\":314,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-12/c25a83b6-3c0a-4e8e-8046-93e2b76f014a.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"《中国共产党纪律处分条例》适用解析\",\"isbn\":\"9787802168954\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/5118bc83-7226-4478-85a1-c66398e60fd9.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"别笑我是零基础韩语入门书\",\"isbn\":\"9787549810734\",\"price\":259,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/24ab31bc-e6f6-4741-bcc7-269feb1dff45.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"手把手教你做优秀税务会计:从入门到精通\",\"isbn\":\"9787111411871\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/a383bc01-78eb-4375-a7c9-fae7096a1e13.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":0},{\"goods_name\":\"食品营养与健康第三版十四五王尔茂科学出版社9787030656360\",\"isbn\":\"9787030656360\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/23a45e5a-1331-4aa6-b7e8-af942874a7ab.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"韩国现代文化\",\"isbn\":\"9787506277273\",\"price\":1316,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/64b3ebb5-72ff-4068-a8f3-960ef466520e.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"综合日语 (第三册学习手册)\",\"isbn\":\"9787301343838\",\"price\":592,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/6085380f-3e52-471b-9f52-9e17d43a3075.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"S7-200西门子PLC基础教程(第2版高等职业院校机电类十二五规划教材)编者:王淑英//赵建光9787115412867多仓直发\",\"isbn\":\"9787115412867\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/4634f9bc-ab5a-4125-9828-15b8ef46ee2c.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"系统集成项目管理工程师 历年真题解析(第3版)\",\"isbn\":\"9787121310058\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/e318b29c-4912-4db8-a167-e404a05fa830.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"西方法律思想史(第三版)\",\"isbn\":\"9787301245729\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/850fa5b9-abe9-428a-a6ee-04e84c13d2fc.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"法医毒物分析\",\"isbn\":\"9787117119412\",\"price\":679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/25009e2d-ef51-42ef-9ed9-8bc54ae96d1f.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"成本会计习题与模拟实训(第4版)\",\"isbn\":\"9787509537718\",\"price\":448,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/b1ef0286-4b75-45f6-889d-9b6636e32c52.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"理想树 高中必刷题物理高二1\",\"isbn\":\"9787565642616\",\"price\":519,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/d3971e47-0a35-4fed-8852-175584eb9c8a.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"怎样写楷书\",\"isbn\":\"9787530514429\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-13/300fb650-5d60-4c30-b9f5-78de43c26340.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"高等学校英语应用能力考试大纲 第二版 实践题集A级 全新版套装共2册 高等学校英语应用能力考试委员会 高等教育出版社 9787040519785\",\"isbn\":\"9787040519785\",\"price\":859,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/75e25bc2-e79a-4b6c-8a4c-d3ddca683ce2.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"高等学校英语应用能力考试大纲 第二版 实践题集A级 全新版套装共2册 高等学校英语应用能力考试委员会 高等教育出版社 9787040519785\",\"isbn\":\"9787040519785\",\"price\":859,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/e12162b3-9d81-477e-9781-db1c19a82db2.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"数学奥林匹克精编 5年级 陈卫华 著 熊斌,冯志刚 编新华文轩网络书店 正版图书\",\"isbn\":\"9787542772848\",\"price\":667,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/3c353cf2-0f43-4585-a103-9e1735d3f150.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"全国房地产经纪人职业资格考试用书 房地产经纪业务操作(第四版)2022版 根据2022年版大纲编写 2022年 房地产经纪人\",\"isbn\":\"9787112270934\",\"price\":250,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/e2822e09-c006-4779-a803-000002d895c1.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"十年轮回:从亚洲到全球的金融危机【内页干净 实物拍摄 无笔记】\",\"isbn\":\"9787547600290\",\"price\":1379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/7c01de09-8643-4734-ac2f-dc9c3f3ef734.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"90天攻克CATTI 三级笔译 第二版 两本 看图片\",\"isbn\":\"9787300216942\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/ed11a5ff-af7a-4085-871f-a3fa00882009.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":0},{\"goods_name\":\"产业并购操盘手:15个案例11个范本,拿来就用\",\"isbn\":\"9787201163574\",\"price\":2279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/2f616300-1555-462a-8119-391cfa71b2bc.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"韩国语1.2同售【馆藏书,书脊有伤】\",\"isbn\":\"9787105047635\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/81fb233f-3c43-4e6f-bdf2-8d0621d6fdcc.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"圣才教育·金融硕士(MF)考试过关必做习题集(第2版)\",\"isbn\":\"9787511414649\",\"price\":1499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/acec15ba-317c-490c-bbfd-08aac770ae2d.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"考研政治选择题考点手册 张修齐 9787509016688 正版旧书\",\"isbn\":\"9787509016688\",\"price\":455,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/4733518d-90d4-494f-8c51-690fc64d9171.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"MATLAB在自动控制中的应用\",\"isbn\":\"9787560616957\",\"price\":622,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/556576fe-1a95-4f0b-bb90-76f99ff253c9.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"正版书籍预防医学(第四版)/马骥 赵宏马骥,赵宏9787030476197新华仓库多仓直发\",\"isbn\":\"9787030476197\",\"price\":587,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/59dbb629-3fad-4d01-b18b-f1acc79c029b.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"Java核心技术/21世纪软件工程专业规划教材\",\"isbn\":\"9787302352051\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/c97610fe-d990-4699-b379-499d6a2d902f.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"高等学校英语应用能力考试大纲 第二版 实践题集A级 全新版套装共2册 高等学校英语应用能力考试委员会 高等教育出版社 9787040519785\",\"isbn\":\"9787040519785\",\"price\":659,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/3c91f5da-b22f-4603-937e-0bf152990470.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"市场营销研究:应用导向(第5版)\",\"isbn\":\"9787121075858\",\"price\":400,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-14/dbb4aee3-d844-4f5e-8ad0-f05bb02d94fc.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"“一带一路”为什么能成功:“一带一路”倡议的九大支柱 精装【内页干净】\",\"isbn\":\"9787300299556\",\"price\":1200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/999fcb4a-0ef8-452b-a551-1a626a3faf63.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"《自然辩证法》导读\",\"isbn\":\"9787516218150\",\"price\":807,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/c2a966df-162a-4b8f-9aa2-81fdd6985ca3.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"基因开关:揭秘遗传真相\",\"isbn\":\"9787500170952\",\"price\":1669,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/07d4b43b-6955-47f4-9a5b-d3422edb0613.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"超越死亡:恩宠与勇气\",\"isbn\":\"9787108023759\",\"price\":679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/c928b61b-ec8b-43b3-9f6f-223e0e07d225.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"只有警察知道:刑凶笔记\",\"isbn\":\"9787540471866\",\"price\":391,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/9ba7aed7-96cd-4ffd-9c10-796aa0dbeeda.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":0},{\"goods_name\":\"壮医特色技法操作规范/中国壮医药文库\",\"isbn\":\"9787555117940\",\"price\":2795,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/12ba241a-2db3-4521-913a-02b1904b1d3e.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"金丝猴日记:2005:2006年\",\"isbn\":\"9787503876844\",\"price\":619,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/ec5f10e1-6147-4401-8fff-9c7262be3a6f.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"大唐玄奘\",\"isbn\":\"9787504375964\",\"price\":749,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/bcc22c0c-a9f4-47fa-bfa4-b4c4acf1af13.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"京城小儿王刘弼臣临证实录 16开 本书收录刘老临床卓有疗效的医案数百例,在验案之中贯穿刘老的学术思想和临床经验。内容详实,深入浅出,切合临床,为中医儿科医生不可多得的参考书。\",\"isbn\":\"9787506749114\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/09f09c50-4383-49b4-967b-dc7168b27138.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":0},{\"goods_name\":\"(店庆活动用书)时间的力量\",\"isbn\":\"9787807127079\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/5d00c732-bf94-4ae5-8c19-c46fd02df81a.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"从文字到影像:分镜画面设计和电影制作流程(第2版 修订版)\",\"isbn\":\"9787115394644\",\"price\":529,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/0622223b-56be-45c3-8df3-60a791a203c0.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"现代教育技术:技能与训练\",\"isbn\":\"9787030551689\",\"price\":859,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/ef17c54b-314e-4822-9c42-4a503f883b3b.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"住房和城乡建设领域专业人员岗位培训考核用书施工员专业基础知识(设备安装)\",\"isbn\":\"9787112165711\",\"price\":525,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/6f7bb703-8ff4-475c-9f21-07c78ed77c25.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"生活中的经济学:(诺贝尔经济学奖得主关于经济、政治、社会的经典之作,薛兆丰专文推荐)\",\"isbn\":\"9787111422006\",\"price\":347,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/888997d0-948d-421a-8668-c34a03cdaf14.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":3},{\"goods_name\":\"跟着心中的孩子,找回面对世界的勇气:30部动画电影30部真人电影,关于人生里的各种迷惘与抉择(水尢 水某)\",\"isbn\":\"9787521700961\",\"price\":259,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/db3b066d-0c6b-493a-b4d4-55f4fc7ea7bc.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"就怕起错名\",\"isbn\":\"9787513900591\",\"price\":469,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/768a3a60-f2bd-433e-9d5f-e1f99cd91583.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"协和名医谈男科常见病\",\"isbn\":\"9787512706477\",\"price\":380,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/494b7929-3afa-4524-b6b1-a10ffa340e24.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"现货自然母乳喂养一本就够了许鼓,于伟9787538895834多仓直发\",\"isbn\":\"9787538895834\",\"price\":269,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/88b310ca-3ecc-47d3-99e7-021d2570e685.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"不怕输,才会赢得漂亮 影子 北京联合出版 9787559618320\",\"isbn\":\"9787559618320\",\"price\":303,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/6eb4628c-06ca-4914-947d-dddaced9a877.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":1},{\"goods_name\":\"八卦象数点穴疗法\",\"isbn\":\"9787512605305\",\"price\":463,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/a50813ab-f423-4d8c-95b1-27a1ccfcaa33.jpeg\"],\"location_code\":\"NS-B3-3\",\"inventory\":0},{\"goods_name\":\"马燕日记\",\"isbn\":\"9787539985923\",\"price\":388,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/8da07165-d09e-446f-8d64-e880468cb9f7.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"人与永恒\",\"isbn\":\"9787807077978\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/dd076967-a538-439e-a969-3a48d31e8851.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"别人怎么对你,都是你教的\",\"isbn\":\"9787521706147\",\"price\":1579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/529d0586-87ab-4d1e-809a-87e13a943f0d.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":0},{\"goods_name\":\"【全新正版】1+X母婴护理职业技能实践手册9787565927522\",\"isbn\":\"9787565927522\",\"price\":1500,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/52b09fbe-c58d-4d99-a957-a7cc9d8aff5b.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"政府会计实务及案例解析\",\"isbn\":\"9787542958969\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/5617c891-e1d0-40aa-ac35-ac6fac60c0a1.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"程序员的三门课:技术精进、架构修炼、管理探秘\",\"isbn\":\"9787121373770\",\"price\":577,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/343ec46e-57db-4eae-995c-a2ae6edffb88.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"Linux内核精髓:精通Linux内核必会的75个绝技\",\"isbn\":\"9787111410492\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-15/af843ba5-adfe-425b-bb10-7580d41b34e5.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"9787010143101辽沈大地改革潮:20世纪80年代振兴辽宁的探索与实践(全两册)\",\"isbn\":\"9787010143101\",\"price\":1097,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-18/c848c2fb-60a9-4a26-83b9-5ef239c8cdaa.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"荒原野狼鲁迅\",\"isbn\":\"9787507817171\",\"price\":458,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-18/bfa07a73-ae28-4648-b7bc-65493f0daa2c.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"名家名译:钢铁是怎样炼成的(彩色插图本)\",\"isbn\":\"9787506813723\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-18/6490cc51-00ca-46df-86b3-a3037e3037f0.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"沟通谈判手册 时尚女人\",\"isbn\":\"9787800047251\",\"price\":229,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/bbc54b1f-d661-4925-ab2a-29670a3175be.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"象棋入门\",\"isbn\":\"9787508237978\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/7f757a40-6e92-4763-a063-55d2dd5cd6c7.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":0},{\"goods_name\":\"明朝那些事儿(肆):粉饰太平\",\"isbn\":\"9787505723788\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/1cb95e0c-e8fb-4f8e-a81f-aab745eb7749.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"Linux内核精髓:精通Linux内核必会的75个绝技\",\"isbn\":\"9787111410492\",\"price\":1036,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/768c0f46-631b-44f7-93cf-b08e2dc4dc18.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"程序员的三门课 技术精进、架构修炼、管理探秘 于君泽李伟山张洪亮彭首長刘朋 电子工业出版社 9787121373770\",\"isbn\":\"9787121373770\",\"price\":724,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/6be2b6e7-98f8-4991-a4e7-b3c48a4e6ac8.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"政府会计实务及案例解析\",\"isbn\":\"9787542958969\",\"price\":574,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/eaa194ff-5e87-4927-b6fa-879c13f51f3e.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"鲁迅美术学院作品集\",\"isbn\":\"9787531418870\",\"price\":2579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/44dc4f61-e15d-4c6e-a21f-69ae5733774a.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-22/b0aafbff-84d2-4186-b6f5-7a0393eb12c8.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":2}]}","source":"同步商品数据异常","time":"2026-05-21T17:03:04+08:00"} +{"err_msg":"更新库存汇总失败: Error 1062 (23000): Duplicate entry '17-9831-' for key 'uk_warehouse_product_batch'","level":"error","msg":"","request_params":"{\"user_id\":1965254774327533570,\"data\":[{\"goods_name\":\"咬文嚼字\",\"isbn\":\"9787807401025\",\"price\":557,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/908e81b1-ca7a-4f5e-b8c4-e822d99b2722.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"著文当庄重(签赠本)\",\"isbn\":\"9787561041314\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-19/634d2ec4-f8e8-4095-8134-188aa680d0aa.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"书法经典放大·铭刻系列:曹全碑(四)\",\"isbn\":\"9787547911648\",\"price\":1770,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-21/0bf67a8e-267b-4e11-ada7-682ae8de9301.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-21/4c0b725a-0d31-46cf-b40c-9528d19e3c91.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"儿童心理安抚绘本《宝贝,你慢慢》\",\"isbn\":\"9787555292555\",\"price\":379,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-21/024a1449-5cca-49bd-a88e-2689b6941738.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"颜体集字创作指南:多宝塔碑\",\"isbn\":\"9787535679475\",\"price\":479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-21/b121f7cf-498d-4dc1-ba5c-5ac77d420328.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"蒲蒲兰绘本馆:白熊\",\"isbn\":\"9787552624052\",\"price\":659,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-21/d124af28-adf4-4c65-8a7b-27334d20fc0d.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"乐高DC漫画超级英雄 超越光速大挑战 AMEET工作室 刘瑞睿 国家开放大学出版社 9787304091224\",\"isbn\":\"9787304091224\",\"price\":644,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-21/08246dcf-8128-4048-83ca-570ef5ff9c91.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"小熊,你的压力有多大?\",\"isbn\":\"9787511051431\",\"price\":248,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-21/32440871-1449-422a-a736-d6d379d99af9.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"二万五千里 下\",\"isbn\":\"9787208144057\",\"price\":2029,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-21/dbf62b3a-fbca-43e2-abe2-72508daec260.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"程序员的三门课 技术精进、架构修炼、管理探秘 于君泽李伟山张洪亮彭首長刘朋 电子工业出版社 9787121373770\",\"isbn\":\"9787121373770\",\"price\":729,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/c0d8e562-7dd6-4cb7-8ece-67e6b970c597.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"日本公共标识设计(一)\",\"isbn\":\"9787535622112\",\"price\":1859,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/afbe1241-1478-46a8-ab89-b105549d3c3f.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"卡通漫画技法.角色篇\",\"isbn\":\"9787500647447\",\"price\":300,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/0a408f93-252f-4da2-8d0f-5f32b253d39f.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"公共环境标识设计\",\"isbn\":\"9787533722685\",\"price\":779,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/0f927c08-0d73-411b-9b0e-79957f411ac8.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"中国钢琴名曲30首\",\"isbn\":\"9787103013434\",\"price\":1259,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/ab4d4c6a-4557-4889-9b89-0d25f3ad9304.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"梅兰芳唱腔集\",\"isbn\":\"6786558171041\",\"price\":2869,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/245f2ece-d8b4-4516-9237-e54f2ba69b0c.jpeg\",\"wxfile://tmp_14d4e17e2ac3e5d5f752fdec9a93e9f5.jpg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"民国名人再回首:16开本简装本\",\"isbn\":\"9787806766491\",\"price\":479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/e1473de4-4c74-4be8-a2d0-98bc5c9117e1.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"民国南京1927-1949\",\"isbn\":\"9787806767474\",\"price\":2479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/900849ab-56fe-4735-946c-106060148404.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"宽容与正义\",\"isbn\":\"9787806768976\",\"price\":360,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/dadcd067-67ed-41ae-aa54-dba26c2c4fed.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"正版二手 你看起来好像很好吃\",\"isbn\":\"9787539144528\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/3a237326-cab4-4132-b3f7-8026e5e789ed.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"苏斯博士 双语经典【10本合售】【精装】\",\"isbn\":\"9787500117087\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/2d9305cd-5c53-437b-a401-1f2169510a41.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"震撼\",\"isbn\":\"9787544150347\",\"price\":1079,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/adab6461-fd57-41b6-afb7-d177a1d1b34d.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"说文解字 附检字\",\"isbn\":\"6780305936292\",\"price\":629,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-22/e26c71b8-7b55-451d-8ba1-e009a33c724e.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-22/e380d97d-38b1-4bc6-9ac4-d51d61f883ba.jpeg\",\"wxfile://tmp_35144c12696cb53abfcd728e718e168c.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"自己拯救自己\",\"isbn\":\"9787561331040\",\"price\":346,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-23/8f2141c5-12da-4b57-9743-2c6b825cca9b.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"三国演义连环画\",\"isbn\":\"6780370615662\",\"price\":23279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/a2cfc3be-6c1c-4234-b9f6-0525ee8b5645.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-24/d3cf6c01-83fa-46b3-a409-4e03d9f38877.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-24/8d087c4a-631b-4e3a-a579-d7e9a0fd053b.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-24/31f58dea-1087-401a-bff5-f2ec50f08e59.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-24/d0527966-90af-426a-98d9-4f8b83d9f9b1.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-24/c3aff9c7-e934-40ef-938e-6b18bcaa5d64.jpeg\",\"wxfile://tmp_be8c033c2522287442f0991fa0f90e60.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":0},{\"goods_name\":\"彭德怀传\",\"isbn\":\"6785205944421\",\"price\":2079,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/ba4c8544-11bb-41a6-9e84-ba16b539dd45.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-24/a647bc9a-f50c-474b-b270-9c3fb4939cbc.jpeg\",\"wxfile://tmp_8c8f6608bc95a961f8e509246c9975c3.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"马占山将军\",\"isbn\":\"6787358104799\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/bd818a43-7ea1-43b2-bb4d-f590ba6ae2f8.jpeg\",\"wxfile://tmp_6ef9ee5f3ae19fbd24caef22a9310be0.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"大连风物传说\",\"isbn\":\"6785669675326\",\"price\":1279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/c95d8ed7-2872-4e09-a332-4d20a73119cc.jpeg\",\"wxfile://tmp_9033dbf1c126a4861fa909dc682e640f.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"张作霖浪迹辽南\",\"isbn\":\"6785462035805\",\"price\":779,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/6af6e825-3828-409f-8140-f8d5a56bb330.jpeg\",\"wxfile://tmp_7bd9f60f3aba26d12904f9bb54f54105.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"包公案\",\"isbn\":\"6782066501302\",\"price\":4299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/6241fad0-2fc3-4552-82c8-e2c28be8c724.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-24/e197d39f-d10a-4ea7-9dd5-9d9cdea6a51b.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-24/f7f9d90b-8d88-43aa-a3d0-d7a5f9185942.jpeg\",\"wxfile://tmp_7faab8e2959d2363debf4a47e80f6c13.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"十宗罪 1-7\",\"isbn\":\"6784381043050\",\"price\":4679,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/22d94137-49cb-4052-9181-70a06f24bcda.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"十宗罪——中国十大凶案\",\"isbn\":\"9787540446765\",\"price\":559,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/2ed9c949-5c1f-4016-8bf9-6d838cf57c29.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":0},{\"goods_name\":\"连环罪1-4\",\"isbn\":\"9787201135427\",\"price\":3879,\"appearance\":\"95\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-24/d50e77c1-ab8a-453c-8931-494e9335740e.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"程潜传\",\"isbn\":\"6780321947965\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/172642be-d189-42e3-b04d-20b02b863a3c.jpeg\",\"wxfile://tmp_8734a7703ff2b84ab810e47562acbaed.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"临床合理用药手册\",\"isbn\":\"6781023837571\",\"price\":498,\"appearance\":\"80\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/44aa9516-1daf-406a-af61-cff35f0e2c3a.jpeg\",\"wxfile://tmp_c634f62bb5c0580c0af3aef143a083a1.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"名著精华的现代应用 礼记 史记 晏子春秋 颜氏家训\",\"isbn\":\"9787220032288\",\"price\":5239,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/d5ef3e10-cc82-45f3-bb89-f5d545975c3e.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-25/d86f6713-235e-4c33-bbb1-2f5c1c152f16.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"情史\",\"isbn\":\"6784839458698\",\"price\":3600,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/7fe362c9-8b45-4c60-8670-eeb8bd33b546.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-25/d9c44f79-995e-4556-8057-43fb1870cc26.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-25/2539579f-c6f1-4535-bb3e-c7136301748b.jpeg\",\"wxfile://tmp_5a97602ee1dfdaa0d44934768690e6b7.jpg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"将军刘德才\",\"isbn\":\"6786401570563\",\"price\":1179,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/d06f4ad9-6f96-44ea-b26c-eeaf7fc6aa8c.jpeg\",\"wxfile://tmp_f2db293b95cf62326288ed2011443b4a.jpg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"明末清初小说第一函\",\"isbn\":\"6788011592403\",\"price\":6600,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/c42c0b88-e5af-4e94-861d-db49d2b0cd39.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-25/1d1ac74b-8638-48ce-8407-7bfeea49c817.jpeg\",\"wxfile://tmp_c62a8930bb54982aaa2a84990b9dc3c7.jpg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"莫泊桑中短篇小说选集 上下册\",\"isbn\":\"6785884407594\",\"price\":1379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/31078f8e-deab-4840-9ff3-00a2607ccd76.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-25/0e0b5dec-9118-4d64-ac83-e71f6d7a8097.jpeg\",\"wxfile://tmp_1deaf459766ff22f53a18513c791c181.jpg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"外国文学 (欧洲文学部分上下)\",\"isbn\":\"6789789746817\",\"price\":3479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/1368993a-1965-4e89-964b-2a617e941e96.jpeg\",\"wxfile://tmp_05c19c21afb305c6d53008218cab17f2.jpg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"伦敦谋影\",\"isbn\":\"6788439489302\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/0084395f-9a30-4152-ad91-464fa515e97c.jpeg\",\"wxfile://tmp_000464137727bdad2cc67717a497c62d.jpg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"片石集\",\"isbn\":\"6787433617885\",\"price\":978,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/1aa251f8-b9a2-4073-bc53-6ac2ff5361a2.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-25/f7e6b71f-a930-4e91-9bb9-7a6f6fc2610a.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-25/56fc2f21-da41-4242-914b-d387e0e9bf67.jpeg\",\"wxfile://tmp_d697b54540d8ee38bebe3302141dce7f.jpg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"人体解剖学图谱 韩秋生 辽宁科学技术出版社 9787538140101\",\"isbn\":\"9787538140101\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/70e71e28-28f6-4291-9815-aa00c672c28b.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"新编大学化学实验(张丽丹)\",\"isbn\":\"9787122363855\",\"price\":202,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/d6427307-c8ac-4c97-b4b7-0bfca331a00f.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"色彩的舞蹈—花卉篇2\",\"isbn\":\"9787544178990\",\"price\":2134,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-25/1e2e4c83-e593-48b0-ba5b-c8c44e1536b4.jpeg\"],\"location_code\":\"NS-B6-3\",\"inventory\":1},{\"goods_name\":\"民间秘术绝招大观\",\"isbn\":\"6784919417699\",\"price\":1379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/9bef2a6b-436c-4db8-98f7-e569f4d12cb2.jpeg\",\"wxfile://tmp_6a9c16d681ecc9f0e9d729f80727cc32.jpg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"姜子牙出山\",\"isbn\":\"6787105159897\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/b97e0a73-20d5-4594-a259-fc85734254ba.jpeg\",\"wxfile://tmp_d471c1723052ff9d3315648e71282cd8.jpg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"班主任工作中的心理效应\",\"isbn\":\"9787501986118\",\"price\":479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/1e9e4163-a265-48f5-bdfa-c4b8d3384ab7.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"看图学艺:图解服装裁剪100例\",\"isbn\":\"9787122101341\",\"price\":569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/d79bf8e3-b262-4e88-a3ae-ba655cbcd69e.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"民间剪纸技巧\",\"isbn\":\"9787508215037\",\"price\":269,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/14b38e5d-cfd1-40b2-a29e-3c4ee317596c.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"正版二手小学一年级韩素珍知识出版社9787501524563\",\"isbn\":\"9787501524563\",\"price\":584,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/872d2d2b-5628-4ed0-83d3-3b5b65468dc9.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"澳门特别行政区地图册\",\"isbn\":\"9787503158124\",\"price\":264,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/15536a9f-3cb4-4e34-abed-46a0af663658.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"批评官员的尺度\",\"isbn\":\"6787418629262\",\"price\":396,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/9e612e1a-9e0e-4859-bdac-f2b77436e279.jpeg\",\"wxfile://tmp_03821a18add9afc5490c371935d7df43.jpg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"蓝星诗库金版:海子的诗\",\"isbn\":\"9787020091508\",\"price\":419,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/dd2d12d5-751a-4cb1-957e-5efa1d43f3e2.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"身份的焦虑\",\"isbn\":\"9787532747511\",\"price\":479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/1526735a-3397-4df8-82b7-6d844e088827.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"如何有效整理信息\",\"isbn\":\"6789012624726\",\"price\":221,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/f4e0477d-d217-49e8-ab3f-4fe286e9e542.jpeg\",\"wxfile://tmp_e44e5f3931b4bbbf9e48d5679d3f6150.jpg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"JoJo帮妈妈\",\"isbn\":\"9787533563158\",\"price\":467,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/04d838d1-80e0-481c-a653-c5379811bc9f.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"课堂直播:四年级数学下\",\"isbn\":\"9787552267099\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/12cb4365-7701-4be9-97d5-c9b84e453080.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"口袋妖怪 光之轨迹\",\"isbn\":\"9787900349972\",\"price\":1777,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/f2a50afb-d670-40fc-a626-0d961c29e1cb.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"魏文彬和他的电视湘军\",\"isbn\":\"9787501176397\",\"price\":2716,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/13ea324d-91c9-48a3-94c5-02c9d2153baa.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"中国新疆壁画全集.4.库木吐拉\",\"isbn\":\"9787805473338\",\"price\":33579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/2ff1320d-5e52-42e5-b349-8dd68559584e.jpeg\"],\"location_code\":\"NS-A6-2\",\"inventory\":1},{\"goods_name\":\"王亚南文集 第四卷\",\"isbn\":\"6780498099719\",\"price\":1879,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/dfeade6b-1643-4646-9a34-da3d22303c63.jpeg\",\"https://img.pddpic.com/open-gw/2026-03-26/5d5a9b94-8165-4577-956e-a1998ae01dce.jpeg\",\"wxfile://tmp_577ed5de661dfdb6eec1debdbd6b4a1c.jpg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"儿童趣味折纸\",\"isbn\":\"6787380822826\",\"price\":328,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-26/5c0a3a02-40c3-4f0a-9ed2-f9738fe35f60.jpeg\",\"wxfile://tmp_ad84782685dd445208568a10e84ff1cd.jpg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"谈切脉 张翼\",\"isbn\":\"6783522215476\",\"price\":1569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-31/ee141384-648f-4f16-9c8a-b7ed54ed49e1.jpeg\",\"wxfile://tmp_4cba3153c089e13045e672f5be60e3f8.jpg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"濒湖脉学白话解\",\"isbn\":\"6789843559515\",\"price\":1579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-31/b4d5e60f-27bc-4368-b9ae-047f0f98b711.jpeg\",\"wxfile://tmp_bef251524fe4e191111734035616ea67.jpg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"简明中医内科学\",\"isbn\":\"6782451637154\",\"price\":1279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-03-31/a4bca812-9f76-493a-a6dd-32c0f75979e1.jpeg\",\"wxfile://tmp_3ac6316a1a65daf94a5890d344217bb5.jpg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"活页英语时文阅读理解八年级15\",\"isbn\":\"9787519800925\",\"price\":754,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/859a0389-a806-4fa5-8e6f-5ca3f09b7ae1.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/f5f3c94a-451a-4004-bb10-1d42856cecb8.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"无人幸免\",\"isbn\":\"9787572608193\",\"price\":405,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/713d178d-9264-4966-8f0f-91a0c4f84a87.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/4d5aff37-9d7e-46ba-bee7-5b6fd30dc00d.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"6级晨读英语美文70篇\",\"isbn\":\"9787510038662\",\"price\":2379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/447c2413-5310-425d-866d-55e08cf4ef28.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/2919d7b9-4bd7-4c58-86b0-fcc7fad3df8c.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"成林实用骨科学\",\"isbn\":\"9787800138560\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/8c6f2b5a-fb01-4692-81d7-358418bcd070.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/b7824829-9a94-4bd0-867f-aac6bc90e6a7.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"中华人民共和国宪法注解与配套(第三版):法律注解与配套丛书\",\"isbn\":\"9787509355176\",\"price\":688,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/e1203a6c-65a8-4ca8-b4e7-600967c9dfbe.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/9ae0d87b-5a4d-4702-853d-b211275efd40.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"建模法律论证的逻辑工具:法律可废止推理研究\",\"isbn\":\"9787562056522\",\"price\":4747,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/2a368767-0e95-40e3-917b-91897b15eb6f.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/f4520149-25e3-42af-9085-0fab9da53ab5.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"退出游戏日初野晴南海出版公司9787544285612初野晴9787544285612南海出版公司\",\"isbn\":\"9787544285612\",\"price\":919,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/f5ac09ec-1b6c-4954-b361-01f611f399a7.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/5fa0d637-097a-423d-acd5-30c4d6ade8ce.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"学前必备500字——青苹果启蒙丛书\",\"isbn\":\"9787806267776\",\"price\":528,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/39010028-bf23-41a3-a90a-415dd5d2aa10.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/04076694-af6f-40ca-bb8b-90b9a96e55a6.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"文心:中学图书馆文库\",\"isbn\":\"9787108030429\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/3b643ccb-96c1-42eb-81f8-c0ce0e437bd7.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/668f17ba-78d4-4c75-bf07-a28d4743b392.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"人生的态度:懂得生活的本质“造出”人生的意义,林语堂指定授权纪念典藏版\",\"isbn\":\"9787540494179\",\"price\":643,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/72f7c802-35ab-4def-9380-b228428675cc.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/adb3b627-0094-4876-b8ef-ed5b0a720dab.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"顾城哲思录 毛边本\",\"isbn\":\"9787554557556\",\"price\":568,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/0683f506-112d-4597-9b4f-e66e6d139eee.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/70d379dd-682d-40e9-a54e-e91fe299a424.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"回民支队\",\"isbn\":\"9787106041939\",\"price\":337,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/3d400447-163f-4175-9d08-61ca49dfb8a5.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/c1a80186-d5e8-4998-94af-042200c8f4ad.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"正版 名著名译丛书:大师和玛格丽特\",\"isbn\":\"9787020115907\",\"price\":978,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/02905762-6324-45bf-b133-0ffc5bd87dcb.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/0fc060ff-632d-42dc-8c82-a2ce094cd0d2.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"理查三世: 王族内讧与玫瑰战争\",\"isbn\":\"9787507547603\",\"price\":1296,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/a6617cc4-1ab8-497e-a60c-52fe517731ca.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/738ccc20-e733-4fda-b181-0d369877d00f.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":0},{\"goods_name\":\"再度与你 3 晗旭 绘新华文轩网络书店 正版图书\",\"isbn\":\"9787574601659\",\"price\":1129,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/f08204b7-5397-436e-80f2-7235e8a07997.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/74c4f8f7-8d29-4486-a91a-c18f26888d14.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"一本书读懂一带一路——重要的、难解的、核心的100个问题全面解答\",\"isbn\":\"9787550431447\",\"price\":859,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/766ffea9-f804-46b5-aa9b-b90fbb1a1b40.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/544546d5-72d1-4946-b552-32f98f5afa10.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"红乳\",\"isbn\":\"9787501232529\",\"price\":229,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/d1b27488-cd65-48ea-a530-6d87ec438b35.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/66050b48-27cc-4b3b-adc9-0ebfce2b7b1a.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"一本书读懂一带一路——重要的、难解的、核心的100个问题全面解答\",\"isbn\":\"9787550431447\",\"price\":859,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/d9c020a4-469d-4444-aad5-77a65db7b7d5.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/0e031684-ec7e-468b-82b7-faca73af6393.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"【全新正版包邮】 庭训格言 (清)康熙 著 陈生玺 贾乃谦 译 中州古籍出版社 9787534833557\",\"isbn\":\"9787534833557\",\"price\":267,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/ecde2d9f-36c7-4c4f-8edd-188738839ca5.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/978fb7e2-3000-401b-b8ff-57dbb728fc37.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"神秘岛\",\"isbn\":\"9787556055005\",\"price\":329,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/e7214443-d5f7-46ef-a66b-674092297413.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/5af4a3df-4aa9-466a-aa1b-788d35375af9.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"图解说文解字·画说汉字\",\"isbn\":\"9787550231887\",\"price\":280,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/07fee599-e793-4e9d-a6b0-bc59c09f62bf.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/7192525c-ea3e-492f-843c-5d0d84ff93d4.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"签名版 翻译新概念英汉互译实用教程(第6版)\",\"isbn\":\"9787118074246\",\"price\":394,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/f59e5683-538c-4f7d-8b92-6f1798633c95.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/b7c73140-ff8a-4fe1-bb0d-2e71b7283358.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"正版现货 银川史话 宁夏地方史话丛书\",\"isbn\":\"9787227060789\",\"price\":978,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/4b5404eb-7ed5-43c3-9224-65bdf47ed908.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/8647c5bf-3574-4f65-bc99-762dd2692797.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":0},{\"goods_name\":\"英语词缀词典:Vocabulary Workshop 1\",\"isbn\":\"9787800809682\",\"price\":1278,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/5b206637-130c-4d5e-a6b5-22c5fe811d54.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/77157b1c-f7d8-407e-ad98-b040149c5b17.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"天上神仙\",\"isbn\":\"9787500839965\",\"price\":679,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/b76d2e10-9859-494c-b75a-e50a7c43a4ba.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/84b6328f-1e10-4ed0-babc-2913dd3c51d6.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"李鸿章:甲午之殇\",\"isbn\":\"9787561355527\",\"price\":517,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/64e8f130-8e27-4058-b23b-9845cbfd3ae9.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/5623cf42-2a4a-470f-8100-bac781257461.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"中国古典文学名著丛书:海上花列传,九尾狐,平山冷燕,风月梦海天鸿雪记,玉娇梨,二度梅花案奇闻,青楼梦,春柳莺两交婚,八本合售\",\"isbn\":\"9787531850922\",\"price\":779,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/96f7e6cf-1d4a-48ed-af21-27307ae3d6f8.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/622c0094-c00b-46bd-9e52-ab318723c6fd.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"The Canterbury Tales (英文版) 特价\",\"isbn\":\"9787205093440\",\"price\":1599,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/d3e01d78-30a1-461c-ac26-7a63e0bf0509.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/2e4140b4-fc4c-4c4d-adca-c6837b565f07.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"爱丽丝漫游仙境\",\"isbn\":\"9787545508857\",\"price\":401,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/d0ac900b-8662-4877-8a88-b7f757b86dbf.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/f8383d94-112f-4165-9298-dbd125cff317.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":2},{\"goods_name\":\"海外中国研究丛书转变的中国\",\"isbn\":\"9787214077806\",\"price\":2079,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/0801ba05-6ab5-48ab-8c00-b21564265688.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/110690fc-51a0-49e9-8f69-3af090796a82.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"诗经选:宋诗选、山水田园诗选、插图珍藏版3册\",\"isbn\":\"9787559609434\",\"price\":399,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/af3d5051-b967-4166-bc44-e8eed40bb008.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/91245b23-abc4-446e-adda-10d80fbb35e1.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":0},{\"goods_name\":\"【全新正版包邮】 苏辛词说 顾随 北京出版社 9787200121070\",\"isbn\":\"9787200121070\",\"price\":629,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/25c3aeab-d400-46b7-8658-cecc55278a7c.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/88f229fe-cbfa-488d-9682-69462efc5cda.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"郑永年论中国:中国的文明复兴【内页干净】\",\"isbn\":\"9787520700658\",\"price\":584,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/f79e7481-e99f-483b-bfff-f72934685af7.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"全脑教学与成长型思维教学:提高学生学习力的92个课堂游戏\",\"isbn\":\"9787515349466\",\"price\":291,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/bdba2677-759e-4e96-8570-a4577bdb1c40.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/2ef8ac04-3fd6-412d-a163-b213ae7086bf.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"许美达小王子(新晋畅销书作家、千万粉丝博主许美达编译。)精装\",\"isbn\":\"9787559662231\",\"price\":335,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/217e8944-dd67-4b05-8224-c8469c1c229a.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/b7666daf-b90e-4489-a24d-dc6dc97888fa.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"造型基础与表现\",\"isbn\":\"9787516662656\",\"price\":1614,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/236e2ba2-60ad-4e78-ab57-7f253fd3acc6.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/ea5a0d23-4645-41d4-9ccb-e4a60b63f2ec.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"孟子\",\"isbn\":\"9787530378410\",\"price\":478,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/01b7affe-2fb3-4a94-8300-b7b55e940b33.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/cc28f5fa-a98a-46a0-a809-68e1df997897.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"希腊古典神话(新版)/经典译林\",\"isbn\":\"9787544768597\",\"price\":545,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/92d19260-7d4c-4448-8849-ed98e9342627.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/f9fbc065-408a-4bde-9e09-34896e825b67.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":0},{\"goods_name\":\"胆小鬼侦探(2)\",\"isbn\":\"9787514510454\",\"price\":259,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/e29dd412-170d-4613-a2fa-6a000081f518.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"意林脑洞系列--语文老师没讲到的红楼\",\"isbn\":\"9787556249930\",\"price\":329,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/8fb157f6-38dd-4255-b4eb-bb6768c99c4f.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/63c13648-e5c0-48dd-a898-61b0a9aa8d14.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"李轻松:行走与停顿(签名本)\",\"isbn\":\"9787544152549\",\"price\":2059,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/c2e8771b-284c-407d-b027-6025346e0545.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/452898b1-cda0-4245-a343-8d9b6335e029.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"红炉一点雪\",\"isbn\":\"9787544151702\",\"price\":878,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/25259d78-2687-4855-ae2e-5f2eaaaff887.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"淘气包马小跳系列*3本不重复。(书名见照片。一版一印。优惠价)\",\"isbn\":\"9787534273179\",\"price\":3579,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/fdf6852a-31c0-4965-81b6-de57aaeb251c.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/a9240182-aa35-41e7-be91-cbee8ae80e0b.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"综合运输与区域经济\",\"isbn\":\"9787113022303\",\"price\":9729,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/d0d63b82-70c2-411d-928f-365f5fc6b521.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/6aae7cd6-4db6-4601-ad0b-0e5552b4916f.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"牛顿 :\",\"isbn\":\"9787544125352\",\"price\":469,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/751d8275-ede3-47cb-ae9d-7d1904c5bce2.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/80fb4353-32f1-43eb-afb8-f320dfc6cecb.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"心脏病一百问\",\"isbn\":\"9787544131506\",\"price\":779,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/4e562c3a-4f81-4dc9-adb9-6b1c2b55914f.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-05/e4d7a86c-7597-4135-a56e-0196e15dbb3a.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"卜卜熊的雨衣-卜卜熊和朋友们系列\",\"isbn\":\"9787505627642\",\"price\":1179,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-05/d821b2ad-a52c-436a-be35-d32d3f5dfe67.jpeg\"],\"location_code\":\"NS-A2-1\",\"inventory\":1},{\"goods_name\":\"隋唐演义(上下)\",\"isbn\":\"6788455558391\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-09/1457667e-4445-4aa6-ba11-3f9bf78cc54f.jpeg\",\"wxfile://tmp_955bab0891662fe21e9584f1287f93b8.jpg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"冰冷密室与博士们\",\"isbn\":\"9787537828420\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-09/45086947-7c5b-413a-b606-ff3af49ced8c.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"霜冷长河 山居笔记 文化苦旅 千年回响\",\"isbn\":\"9787506318372\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-09/b48fb9be-8241-40f5-9f01-42b836423411.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"巴巴爸爸新故事珍藏馆(2)\",\"isbn\":\"9787544830911\",\"price\":969,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-10/07a701ff-14db-4201-821a-98f06aa7b1c6.jpeg\",\"https://img.pddpic.com/open-gw/2026-04-10/ddb907c4-ca94-415d-96ad-ff02a656e7e5.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"道源精微歌(上下) 敲蹻洞章(上下)瀊熻易考(上下)全6册(32开线装 据清光绪十五年京都前门外永盛斋刻本影印)\",\"isbn\":\"9787537737470\",\"price\":1770,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-12/4a009845-3dd8-4f3b-a720-36a54cb705c3.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"历代古钱图说 (全一册)\",\"isbn\":\"6780386703163\",\"price\":3079,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-13/d0ebd5b5-dc87-4c5a-872b-bc435afe8c9b.jpeg\",\"wxfile://tmp_243da1e752c4853e15281e63db6d7c3c.jpg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"一分钟推销人\",\"isbn\":\"9787544226905\",\"price\":878,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-13/f09988b2-44b4-4ba6-bd3c-7f9ac0c51839.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"亚健康的中医调养\",\"isbn\":\"9787532377695\",\"price\":1205,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-13/c32ae58d-0886-4869-b79c-6b2e51e2aa12.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"一块钱也能创业:小本投资创业指南\",\"isbn\":\"9787801099549\",\"price\":620,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-13/fdf2a3bd-5b3c-4eca-9a4b-a1de137f9b45.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":1},{\"goods_name\":\"每天健康一点点系列:经络松筋法\",\"isbn\":\"9787538437652\",\"price\":579,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-13/5b194ffa-8f23-42cd-b7a8-1fdc9cec397a.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":0},{\"goods_name\":\"华夏万卷·田英章现代汉语3500字(教学版) 行书\",\"isbn\":\"9787313090317\",\"price\":516,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-13/a84e9e7e-033b-40e9-8296-e26ecfd89710.jpeg\"],\"location_code\":\"NS-A6-3\",\"inventory\":0},{\"goods_name\":\"漂亮字的快写技巧:行书\",\"isbn\":\"9787313053831\",\"price\":944,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-13/47c1be12-f231-4756-a56e-ae6892119024.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"求医不如求己家庭医学全书\",\"isbn\":\"9787214052339\",\"price\":569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-13/8b663717-a3bf-45cf-b50c-650513c4e9f7.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"龙族\",\"isbn\":\"9787549220632\",\"price\":199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/87aa076a-28ba-4245-8c6d-ba17b83a0316.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"孩子看得懂的前沿科学漫画 :1—10【10本合售】\",\"isbn\":\"9787568296700\",\"price\":395,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/15385e9a-ced0-4227-a094-a775c462712b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"百年不断九州意-浩然气\",\"isbn\":\"6786318207471\",\"price\":5000,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/6d1c8f6f-dab8-4ea9-ae13-25384ed385eb.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"神怡心静\",\"isbn\":\"6784872899217\",\"price\":5000,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/84eb67a2-d89e-4fd5-800c-8faff49db15f.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"太极英语语法,无词读写 介词短语 漫画词汇 4册合售\",\"isbn\":\"9787201157788\",\"price\":529,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/cf31010d-8161-433c-90ae-f479099b3e7c.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"培育优秀子女的规律(下)\",\"isbn\":\"9787519442767\",\"price\":679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/7279f3c4-198b-4d54-9300-0f34d57f0801.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"写在人生边上(中英文本)9787108018908钱锺书?\",\"isbn\":\"9787108018908\",\"price\":779,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/1910fcbd-cd54-4438-8d45-c02bfc5811eb.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"儿童钢琴手指练习(修订本)\",\"isbn\":\"9787103020777\",\"price\":436,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/591aaccf-a748-4143-babd-79d49032ebee.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"曾国藩发迹史 上下\",\"isbn\":\"9787545206746\",\"price\":600,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/8aaf610a-6474-4787-986e-883f2678f6be.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"语文基础知识 六十讲\",\"isbn\":\"6787847970973\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/1f4eebfa-5cf3-48fd-99c4-103ddcb44b27.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"魏徽\",\"isbn\":\"6783669866401\",\"price\":279,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/3581b79f-4c50-4d86-96fd-f0e08b701ab8.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"于谦全传\",\"isbn\":\"6788262465099\",\"price\":799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/78e51751-f223-4238-a32e-79bf56027466.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"小猫咪的朋友是谁呢\",\"isbn\":\"9787555230991\",\"price\":274,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/88aa117a-28d1-4057-a289-58e576e12e41.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"义务教育教科书 语文四年级下册\",\"isbn\":\"9787107341205\",\"price\":200,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/6628db70-b081-49d9-a018-48aecad21d7d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"周恩来:画册\",\"isbn\":\"9787501138661\",\"price\":5699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/f7c5aa6e-0db6-4a1b-9abb-2a6395b8158e.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"英语基本技能训练(第一册)\",\"isbn\":\"6788317269085\",\"price\":309,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/d74a47d0-2582-4367-865a-1b0d59e5f4c1.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"额尔古纳河右岸\",\"isbn\":\"9787020049332\",\"price\":689,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/e967e662-9785-4ff2-a16b-a388b1987a70.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"灸疗治百病\",\"isbn\":\"6783417174963\",\"price\":2899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/e5a74899-d57d-4e46-93ca-f03b648f0dde.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"魔法学校1\",\"isbn\":\"9787531337058\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/0379fe20-c25d-4426-ba77-01aec95511ba.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"魔法学校2\",\"isbn\":\"9787531337485\",\"price\":298,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/881398d6-4cec-4e8f-8201-31bded15a872.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"流浪地球·彩插版\",\"isbn\":\"9787504698094\",\"price\":496,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/bc247f34-16a9-4a29-9643-421aa2324c9d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"刀锋\",\"isbn\":\"9787519040543\",\"price\":219,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/39c593af-ed17-47e4-afce-7dc1e2293bf4.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"收获长篇专号2019冬卷\",\"isbn\":\"9787570213979\",\"price\":676,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/dd30774a-150d-4bdf-9ec7-0acf5e08fc25.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"政治经济学辞典 上中下册\",\"isbn\":\"6781425593165\",\"price\":2999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/1ec4e1e0-32b7-4f6a-aa91-09937975144b.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"芙蓉镇\",\"isbn\":\"9787020049332\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/4b957b7e-c4ea-44bc-852a-bf58c21534d7.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"西游记 水浒传 红楼梦 三国演义\",\"isbn\":\"9787800824791\",\"price\":5519,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/8fd4e209-a0ac-4db3-ad99-1715042b75e6.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"这里是中国\",\"isbn\":\"9787521701579\",\"price\":1979,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/8375e81a-dbb8-42e4-9920-ef8402bcfb7d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"佛教图文百科:佛教文化百科1000问(有彩图)一版一印 保证正版\",\"isbn\":\"9787561331897\",\"price\":779,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/40b1038f-965e-40b3-a05c-59a60217d8ef.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"应知应会文史知识300问:卡通版注音\",\"isbn\":\"9787531536284\",\"price\":1879,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/fda51b94-791e-4f9e-b440-e0734f7832a0.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"中外十大名著全12集\",\"isbn\":\"9787806485149\",\"price\":2590,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/0a3798fa-db0e-4627-8ebe-c678027ecea3.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"特种兵王 1 -3\",\"isbn\":\"9787519004286\",\"price\":438,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/919746a2-a493-4d46-b507-9d6927a3a18d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"特种部队1 2(两本合售)\",\"isbn\":\"9787511322463\",\"price\":300,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/3df2565a-a4d0-4a22-9dfc-c2201cdd8a69.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"卜卜熊的雨衣\",\"isbn\":\"9787505627642\",\"price\":1129,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/f7d5fb15-7fff-4bfa-8e94-030fdc408b1d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"针灸治疗手册\",\"isbn\":\"6787765192808\",\"price\":679,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/ce525849-525a-464a-b445-fdca839c0d8d.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"【全新正版包邮】 小豆豆丢失的记忆 (日)黒柳彻子 著 戴琇峰 译 南海出版公司 9787544264600\",\"isbn\":\"9787544264600\",\"price\":227,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/51b36bea-d706-4580-8742-00ab3b3d7258.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"十万个为什么——米·伊林版本\",\"isbn\":\"9787570210190\",\"price\":1479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/a03da9a7-9365-4fa6-9d4d-4dd891fdc238.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"K·赤\",\"isbn\":\"6788777069546\",\"price\":578,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-16/37c0e478-173a-4bfd-a028-f15b98edcd50.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":0},{\"goods_name\":\"手到病自消全集4:图解艾灸除百病(专家指导版)\",\"isbn\":\"9787502373474\",\"price\":449,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/91f39461-f3db-4bf3-9cb5-b943975476d1.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"科技文献:特效穴位治百病速查宝典(专家指导版)\",\"isbn\":\"9787502370626\",\"price\":2099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/ad9b2c82-df0e-4fab-adc4-ad53e61ffce4.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"同性恋在中国\",\"isbn\":\"9787206022395\",\"price\":898,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/60c577ef-25a3-4c9f-bab7-3bad83531a58.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"中国“变性人”现象\",\"isbn\":\"9787805924946\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/3e3999b6-3374-4279-8c9a-08cd89b3a530.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"中医火神派医案全解\",\"isbn\":\"9787509111499\",\"price\":2319,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/4fb50334-6e1b-4595-aaef-f3d5a2081242.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"吴淞笙围棋教室.入门篇\",\"isbn\":\"9787500924029\",\"price\":699,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/f4e94f57-523c-471a-af0d-af94eafaafbd.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"吴淞笙围棋教室(初级篇)\",\"isbn\":\"9787500923145\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/0375d78e-9e39-4424-9d05-6f5aca3e528d.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"德语成语典故词典\",\"isbn\":\"9787560818269\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/d6af9a05-7468-4e61-ad15-e24f9b17acb6.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"简明国际关系史\",\"isbn\":\"9787501219438\",\"price\":1998,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-22/37a98f61-dcf5-4a59-8a2f-258a77be993b.jpeg\"],\"location_code\":\"NS-A6-5\",\"inventory\":1},{\"goods_name\":\"书法 章法\",\"isbn\":\"9787540227371\",\"price\":569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/728c396b-f45b-4f77-a843-80cfd2cc0544.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"苏青散文集\",\"isbn\":\"9787539615332\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/79a85f1e-1e5e-476c-a6bf-4237866161f4.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"邪恶之路\",\"isbn\":\"9787208079489\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/4f51a879-5e16-4f2f-be87-a9c6beba9da2.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"原封全新|让不可能成为可能:李昌钰的成功之道\",\"isbn\":\"9787513907736\",\"price\":6399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/affe14cf-3cac-4c69-9a02-706cb8b41fa1.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":0},{\"goods_name\":\"中国新诗三剑客\",\"isbn\":\"9787531334835\",\"price\":1559,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/09749781-9983-4401-be39-d83a070166ab.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"阿旺·班玛诺布活佛传 签名本\",\"isbn\":\"9787542120335\",\"price\":2199,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/b276d34a-8950-4c88-af41-b83dc11a4c19.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"汉画神灵图像考述\",\"isbn\":\"9787810918848\",\"price\":2389,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/dce618db-6820-4216-86ae-f71613a0c18c.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"泵的设计与应用\",\"isbn\":\"9787111480280\",\"price\":5799,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/1849af4f-4d73-4a9a-a379-a7ff4bc55e59.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"电力变压器运行与维修 正版 实拍 现货 有库存8 原包\",\"isbn\":\"9787512359598\",\"price\":2098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/339c981f-145d-425d-bcd0-5367a9068097.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"全站仪测量技术\",\"isbn\":\"9787562937449\",\"price\":1289,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/6ca1412b-a28a-4732-b90a-9af84b4aaee7.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"泵类设备使用与维修问答\",\"isbn\":\"9787111488705\",\"price\":8098,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/fd6a72fe-f53f-45f6-8b3f-16142c13506e.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"斯坦福大学最受欢迎的创意课\",\"isbn\":\"9787553411224\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/b5329a18-f791-4c71-a956-0004736bd3d8.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"劳动论:《马克思恩格斯全集》探义\",\"isbn\":\"9787205058791\",\"price\":4599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/1d476605-84f5-4311-84c9-0cffd270766f.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"人本教练模式\",\"isbn\":\"9787545906912\",\"price\":999,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/3ec198a9-d5d1-4082-9fc4-c1dd683ec9f6.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":0},{\"goods_name\":\"镜头里的领袖风采\",\"isbn\":\"9787531326885\",\"price\":569,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/56393f61-5adf-486d-bfa2-44ae761ef912.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"拍下即发 如何在36岁以前成功 曾仕强中国式成功智慧表达说话技巧关系情商职场应酬交往生活工作规划 掌握正que的生涯计划书籍语录\",\"isbn\":\"9787515812892\",\"price\":429,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/0d50eb53-46ee-43f3-bc26-731eca1d08b8.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"马云的内部执行课:强者的世界永不言败\",\"isbn\":\"9787504753908\",\"price\":389,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/0b799c2e-e715-426e-8f6a-a970900d306e.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"短线点金速成:散户成功炒短速成法\",\"isbn\":\"9787501794164\",\"price\":339,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/26e14ac4-4096-4119-af8c-7d127e32cdd0.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"两个人的电影\",\"isbn\":\"9787531343004\",\"price\":1798,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/6b4020b8-48c3-433a-9fbe-8e05547ae78d.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"悦读时光:笑死人不偿命的冷笑话\",\"isbn\":\"9787538588194\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/bc8e1796-7013-40e4-afd3-04cb4bcadac0.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"我的前半生\",\"isbn\":\"9787501400614\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/f1877a3a-1a97-40fd-8df7-c908d0239d1f.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"半生为人 等社科书四种(全四册)\",\"isbn\":\"9787508632964\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/070cbb38-7543-41e1-8543-ea78d2783a3c.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":1},{\"goods_name\":\"人生的智慧\",\"isbn\":\"9787208081178\",\"price\":900,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/1cbdcb3f-2071-4048-9721-4edcb388fc8e.jpeg\"],\"location_code\":\"NS-A6-1\",\"inventory\":0},{\"goods_name\":\"人生不怕从头再来\",\"isbn\":\"9787535483133\",\"price\":558,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/4e1dcf9e-ab0d-4987-b428-15366e0fb83d.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"古都风韵\",\"isbn\":\"9787205071707\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/703c225d-90f1-47f2-9761-bf14bdc6c0ae.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"梦栖之地:园林景观设计与欣赏/世界高端文化珍藏图鉴大系 有签名\",\"isbn\":\"9787510446771\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/2666ac9a-35b7-42ea-97ac-d457d7b4b0ae.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"没有什么不可能:王健林的内部执行课\",\"isbn\":\"9787504754233\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/8ca0dc47-af65-40db-b514-b12aa9853fe1.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":1},{\"goods_name\":\"废都\",\"isbn\":\"9787544726290\",\"price\":774,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-24/09561e7b-c3f4-4b80-b4eb-011671f9a2ae.jpeg\"],\"location_code\":\"NS-A6-4\",\"inventory\":0},{\"goods_name\":\"土木工程现场施工技能必备系列图书:测量放线工入门与技巧\",\"isbn\":\"9787122171047\",\"price\":599,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/86deb932-aa30-490a-9ea9-5be6b0dda671.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"GPS RTK测量技术实用手册\",\"isbn\":\"9787114116100\",\"price\":2149,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/d38549da-6cf1-435e-8a06-a6b64f469323.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"征婚\",\"isbn\":\"9787531327226\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/2ab9f3a7-f610-4b82-8e12-f1e05be16556.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"总经理目标管理的100个经典案例\",\"isbn\":\"9787553462523\",\"price\":399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/3bb5e947-ffc0-4f0f-8f34-516a64acdadc.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"电气安装工程造价\",\"isbn\":\"9787111476023\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/ef95ee11-4fe5-43ba-a530-5c28efdab736.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"UG NX 4.0中文版零件设计\",\"isbn\":\"9787302155669\",\"price\":1099,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/d2b05cfa-ad05-49d7-ab64-49088bf540ff.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"图解液压技术基础\",\"isbn\":\"9787122162502\",\"price\":938,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/517414db-3cb9-4370-b4f1-9f070358c33a.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":0},{\"goods_name\":\"工程测量技术\",\"isbn\":\"9787111416852\",\"price\":1399,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/7bfc958b-5993-4566-b360-b66e136403d0.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"机械设计手册:减\",\"isbn\":\"9787122071293\",\"price\":3479,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/6b4971e1-0ddc-4b56-bd91-f50b3f361fe1.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"出纳岗位培训手册:出纳应知应会的7大工作事项和78个工作小项(图解版)\",\"isbn\":\"9787115265081\",\"price\":369,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/4afb8716-66ae-4758-9348-bc576a36d586.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"德国文学简史\",\"isbn\":\"9787810958158\",\"price\":3899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/239b8bde-311d-4c42-aac6-02a7600624c3.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"滚床单心理学(2)\",\"isbn\":\"9787221138460\",\"price\":499,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/29f24c9e-c9bd-48fb-a287-e1c38c214c72.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"行为矫正:原理与方法\",\"isbn\":\"9787501943661\",\"price\":369,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/150d5303-ab1a-4fb5-9ef6-4afa6a25ab3e.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"破解二元 : 一个大都市郊区结构转型的透视(签名本)\",\"isbn\":\"9787538153347\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/0cf4891d-6a88-4d00-922e-ca635f155b7c.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"2000年中国年度最佳短篇小说:漓江版·年选系列丛书\",\"isbn\":\"9787540726652\",\"price\":379,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/d254017c-e950-4e57-83dc-cd2a7b18caa7.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"男人战争\",\"isbn\":\"9787531334170\",\"price\":349,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/ec0b04da-ba25-4559-8bd6-7330aa9d3d9f.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"万卷出版公司 马云成功绝非偶然\",\"isbn\":\"9787547036754\",\"price\":249,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/54abc9d2-d36c-44ac-b7fe-bfae1763d57a.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"三国商学院+36计商学院大全集(升级版) 何菲鹏 编著 著作新华文轩网络书店 正版图书\",\"isbn\":\"9787511311948\",\"price\":538,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/01122451-0cec-4959-8a24-e2f63b63c918.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"极速前进!提高滑雪水平的50个基本要领\",\"isbn\":\"9787115412621\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/b2034a3d-e075-4c28-8c79-7134afacade5.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"成功就是和自己的较量:冯仑给年轻人的11堂成长课\",\"isbn\":\"9787516805114\",\"price\":554,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/ac722865-ed9c-4591-b7ac-bfa08c2604ec.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"思考致富\",\"isbn\":\"9787806883723\",\"price\":629,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/e625a3f8-1930-4fdc-95af-26af9aa460b4.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"旅游摄影实拍技巧大全\",\"isbn\":\"9787122217172\",\"price\":1179,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/3675ff0b-ecc2-494b-a92e-9c64045477cd.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"双板滑雪完全指南\",\"isbn\":\"9787115404954\",\"price\":3747,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/d7fa660b-dcba-4da4-bb54-9a3cb9f9a903.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":0},{\"goods_name\":\"周易大全\",\"isbn\":\"9787119074900\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/088a1cdd-7ab3-49b0-b789-fb85874f5489.jpeg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"中国思维魔王\",\"isbn\":\"6781967650354\",\"price\":899,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-27/4e105c7e-a197-4bd7-80a2-41c79020a9ef.jpeg\",\"wxfile://tmp_1227307de7186f7f36842460d084bfdb.jpg\"],\"location_code\":\"NS-A2-2\",\"inventory\":1},{\"goods_name\":\"英汉词典\",\"isbn\":\"9787119047256\",\"price\":309,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-04-30/559158c4-293f-4d5d-a177-a8ff42496a0e.jpeg\"],\"location_code\":\"NS-A1-1\",\"inventory\":1},{\"goods_name\":\"英汉词典\",\"isbn\":\"9787119047256\",\"price\":5000,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-05-11/3ce72107-4a5e-4716-94bb-ff5b590c7841.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"班主任推荐三字经$\",\"isbn\":\"9787538593792\",\"price\":149,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-05-11/05ae7887-0204-4a70-bd59-147715ecdd19.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"宋金文学作品译注讲析\",\"isbn\":\"6785801589805\",\"price\":599,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-05-11/93d5849b-c1f0-4eaa-a8a0-e3672168e2d7.jpeg\",\"wxfile://tmp_b586856aa8d9688f7ec32602b5d82c49.jpg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"名师名家带你读名著 海底两万里\",\"isbn\":\"9787538593778\",\"price\":347,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-05-14/546c2507-c6a1-46f8-adf5-f68c9d6a1f27.jpeg\",\"https://img.pddpic.com/open-gw/2026-05-14/48a12c3e-1586-4c62-a521-07a2b77f57b4.jpeg\",\"https://img.pddpic.com/open-gw/2026-05-14/02ed4056-c1bf-4336-8849-c46321d2451a.jpeg\",\"https://img.pddpic.com/open-gw/2026-05-14/de4f862d-5abc-464a-9db2-5a8819a260c1.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":4},{\"goods_name\":\"全注音儿童文学 冰波暖心童话\",\"isbn\":\"9787538596465\",\"price\":438,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-05-14/6d329068-6811-4bae-b873-41e5091620eb.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"秘密:中国唯一正版简体中文授权\",\"isbn\":\"9787540461843\",\"price\":699,\"appearance\":\"90\",\"live_image\":[\"https://img.pddpic.com/open-gw/2026-05-17/de09313d-d055-46fc-993d-583ee201a042.jpeg\"],\"location_code\":\"NS-A1-2\",\"inventory\":1},{\"goods_name\":\"于谦全传\",\"isbn\":\"6787076614831\",\"price\":299,\"appearance\":\"85\",\"live_image\":[\"https://img.pddpic.com/open-gw/2025-11-02/5c7f04f8e52a92f12ee37525e6228448.jpeg\",\"https://img.pddpic.com/open-gw/2025-11-02/da19c3a46de5191d3fa3f6e292b7ec36.jpeg\"],\"location_code\":\"NS-B6-4\",\"inventory\":1}]}","source":"同步商品数据异常","time":"2026-05-21T17:03:04+08:00"} +{"error":"保存日志失败: Error 1048 (23000): Column 'live_image' cannot be null","level":"error","msg":"","shop_id":2042843272765263874,"source":"保存外部任务日志","time":"2026-05-21T17:37:03+08:00"} +{"code":"500","fields.msg":"店铺已到期,到期时间:2026-05-14 13:53:21","level":"error","msg":"","response":"{\"code\":\"500\",\"msg\":\"店铺已到期,到期时间:2026-05-14 13:53:21\"}\n","shop_id":2042843272765263874,"source":"外部接口返回错误","time":"2026-05-21T17:37:03+08:00"} +{"error":"保存日志失败: Error 1048 (23000): Column 'live_image' cannot be null","level":"error","msg":"","shop_id":2042843272765263874,"source":"保存外部任务日志","time":"2026-05-21T17:54:16+08:00"} +{"code":"500","fields.msg":"店铺已到期,到期时间:2026-05-14 13:53:21","level":"error","msg":"","response":"{\"code\":\"500\",\"msg\":\"店铺已到期,到期时间:2026-05-14 13:53:21\"}\n","shop_id":2042843272765263874,"source":"外部接口返回错误","time":"2026-05-21T17:54:16+08:00"} +{"error":"保存日志失败: Error 1048 (23000): Column 'live_image' cannot be null","level":"error","msg":"","shop_id":2042843272765263874,"source":"保存外部任务日志","time":"2026-05-21T17:56:14+08:00"} +{"code":"500","fields.msg":"店铺已到期,到期时间:2026-05-14 13:53:21","level":"error","msg":"","response":"{\"code\":\"500\",\"msg\":\"店铺已到期,到期时间:2026-05-14 13:53:21\"}\n","shop_id":2042843272765263874,"source":"外部接口返回错误","time":"2026-05-21T17:56:14+08:00"} +{"cost":400,"error":"同步失败: 未找到关联的外部任务","level":"error","msg":"","product_id":14449,"sale_price":110,"source":"同步售价到外部接口","time":"2026-05-21T17:56:17+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-22T10:27:09+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-22T10:27:21+08:00"} +{"err_msg":"创建任务接口返回错误: 店铺类型不匹配 错误店铺类型:2","level":"error","msg":"","request_params":"{\"ShopID\":2026828096496140289,\"ShopType\":5,\"ProductID\":12215}","source":"重试任务异常","time":"2026-05-22T13:08:39+08:00"} +{"err_msg":"创建任务接口返回错误: 请求创建任务接口失败: 请求接口 https://api.buzhiyushu.cn/zhishu/baseInfo/addNewTask data {\"msg\":\"店铺不存在\",\"code\":500}","level":"error","msg":"","request_params":"{\"ShopID\":2026828096496140289,\"ShopType\":2,\"ProductID\":12215}","source":"重试任务异常","time":"2026-05-22T13:09:22+08:00"} +{"err_msg":"店铺不存在","level":"error","msg":"","request_params":"{\"id\":2026828423056261121}","source":"查询店铺详情异常","time":"2026-05-22T14:11:09+08:00"} +{"code":"500","fields.msg":"店铺已到期,到期时间:2026-05-14 13:53:21","level":"error","msg":"","response":"{\"code\":\"500\",\"msg\":\"店铺已到期,到期时间:2026-05-14 13:53:21\"}\n","shop_id":2042843272765263874,"source":"外部接口返回错误","time":"2026-05-22T15:30:06+08:00"} +{"cost":0,"error":"同步失败: 未找到关联的外部任务","level":"error","msg":"","product_id":14450,"sale_price":320,"source":"同步售价到外部接口","time":"2026-05-22T15:30:40+08:00"} +{"code":"500","fields.msg":"店铺已到期,到期时间:2026-05-14 13:53:21","level":"error","msg":"","response":"{\"code\":\"500\",\"msg\":\"店铺已到期,到期时间:2026-05-14 13:53:21\"}\n","shop_id":2042843272765263874,"source":"外部接口返回错误","time":"2026-05-22T15:44:16+08:00"} +{"cost":300,"error":"同步失败: 未找到关联的外部任务","level":"error","msg":"","product_id":14451,"sale_price":100,"source":"同步售价到外部接口","time":"2026-05-22T15:44:21+08:00"} +{"code":"500","fields.msg":"店铺已到期,到期时间:2026-05-14 13:53:21","level":"error","msg":"","response":"{\"code\":\"500\",\"msg\":\"店铺已到期,到期时间:2026-05-14 13:53:21\"}\n","shop_id":2042843272765263874,"source":"外部接口返回错误","time":"2026-05-22T15:48:09+08:00"} +{"cost":300,"error":"同步失败: 未找到关联的外部任务","level":"error","msg":"","product_id":14452,"sale_price":100,"source":"同步售价到外部接口","time":"2026-05-22T15:48:15+08:00"} +{"code":"500","fields.msg":"店铺已到期,到期时间:2026-05-14 13:53:21","level":"error","msg":"","response":"{\"code\":\"500\",\"msg\":\"店铺已到期,到期时间:2026-05-14 13:53:21\"}\n","shop_id":2042843272765263874,"source":"外部接口返回错误","time":"2026-05-22T15:51:21+08:00"} +{"cost":300,"error":"同步失败: 未找到关联的外部任务","level":"error","msg":"","product_id":14454,"sale_price":1498,"source":"同步售价到外部接口","time":"2026-05-22T15:51:25+08:00"} +{"cost":300,"error":"同步失败: 未找到关联的外部任务","level":"error","msg":"","product_id":14455,"sale_price":1393,"source":"同步售价到外部接口","time":"2026-05-22T15:51:29+08:00"} +{"cost":300,"error":"同步失败: 未找到关联的外部任务","level":"error","msg":"","product_id":14456,"sale_price":1462,"source":"同步售价到外部接口","time":"2026-05-22T15:51:35+08:00"} +{"cost":300,"error":"同步失败: 未找到关联的外部任务","level":"error","msg":"","product_id":14453,"sale_price":1073,"source":"同步售价到外部接口","time":"2026-05-22T15:51:40+08:00"} +{"code":"500","fields.msg":"店铺已到期,到期时间:2026-05-14 13:53:21","level":"error","msg":"","response":"{\"code\":\"500\",\"msg\":\"店铺已到期,到期时间:2026-05-14 13:53:21\"}\n","shop_id":2042843272765263874,"source":"外部接口返回错误","time":"2026-05-22T16:00:48+08:00"} +{"cost":300,"error":"同步失败: 未找到关联的外部任务","level":"error","msg":"","product_id":14457,"sale_price":499,"source":"同步售价到外部接口","time":"2026-05-22T16:00:50+08:00"} +{"code":"500","fields.msg":"店铺已到期,到期时间:2026-05-14 13:53:21","level":"error","msg":"","response":"{\"code\":\"500\",\"msg\":\"店铺已到期,到期时间:2026-05-14 13:53:21\"}\n","shop_id":2042843272765263874,"source":"外部接口返回错误","time":"2026-05-22T16:05:46+08:00"} +{"cost":300,"error":"同步失败: 未找到关联的外部任务","level":"error","msg":"","product_id":14458,"sale_price":499,"source":"同步售价到外部接口","time":"2026-05-22T16:05:48+08:00"} +{"cost":300,"error":"同步失败: 未找到关联的外部任务","level":"error","msg":"","product_id":14459,"sale_price":599,"source":"同步售价到外部接口","time":"2026-05-22T16:22:24+08:00"} +{"err_msg":"店铺不存在","level":"error","msg":"","request_params":"{\"id\":2054805126617469000}","source":"查询店铺详情异常","time":"2026-05-23T16:17:44+08:00"} +{"err_msg":"店铺不存在","level":"error","msg":"","request_params":"{\"id\":1}","source":"查询店铺详情异常","time":"2026-05-23T16:18:05+08:00"} +{"err_msg":"店铺不存在","level":"error","msg":"","request_params":"{\"id\":2054805126617469000}","source":"查询店铺详情异常","time":"2026-05-23T16:19:55+08:00"} +{"err_msg":"店铺不存在","level":"error","msg":"","request_params":"{\"id\":2054805126617469000}","source":"查询店铺详情异常","time":"2026-05-23T16:20:27+08:00"} +{"err_msg":"查询商品数据失败","level":"error","msg":"","request_params":"{\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":21,\"Type\":1}","source":"导出商品异常","time":"2026-05-23T16:34:24+08:00"} +{"err_msg":"店铺不存在","level":"error","msg":"","request_params":"{\"id\":2054805126617469000}","source":"查询店铺详情异常","time":"2026-05-23T16:40:59+08:00"} +{"err_msg":"库位编码已存在","level":"error","msg":"","request_params":"{\"WarehouseID\":20,\"IDs\":[536],\"Code\":\"A1-1\",\"Type\":1,\"Capacity\":255,\"Sort\":null,\"Status\":1}","source":"更新库位异常","time":"2026-05-23T17:11:42+08:00"} +{"err_msg":"店铺不存在","level":"error","msg":"","request_params":"{\"id\":2054805126617469000}","source":"查询店铺详情异常","time":"2026-05-23T17:31:42+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-23T18:54:03+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.","level":"error","msg":"","shop_id":2042843272765263874,"source":"创建外部任务失败","time":"2026-05-24T15:40:41+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.","level":"error","msg":"","shop_id":2042843272765263874,"source":"创建外部任务失败","time":"2026-05-24T15:40:43+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.","level":"error","msg":"","shop_id":2042843272765263874,"source":"创建外部任务失败","time":"2026-05-24T15:40:50+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.","level":"error","msg":"","shop_id":2042843272765263874,"source":"创建外部任务失败","time":"2026-05-24T18:08:50+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Status\":\"\",\"IDs\":null,\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-25T10:35:19+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Status\":\"\",\"IDs\":null,\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-25T10:35:29+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Status\":\"\",\"IDs\":null,\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-25T10:35:30+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Status\":\"\",\"IDs\":null,\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-25T10:37:18+08:00"} +{"err_msg":"子账号的到期时间不能超过主账号的到期时间","level":"error","msg":"","source":"添加员工异常","time":"2026-05-25T15:58:36+08:00"} +{"err_msg":"子账号的到期时间不能超过主账号的到期时间","level":"error","msg":"","source":"修改员工过期时间异常","time":"2026-05-25T16:15:54+08:00"} +{"err_msg":"子账号的到期时间不能超过主账号的到期时间","level":"error","msg":"","source":"修改员工过期时间异常","time":"2026-05-25T16:16:04+08:00"} +{"err_msg":"子账号的到期时间不能超过主账号的到期时间","level":"error","msg":"","source":"修改员工过期时间异常","time":"2026-05-25T16:16:35+08:00"} +{"err_msg":"子账号的到期时间不能超过主账号的到期时间","level":"error","msg":"","source":"修改员工过期时间异常","time":"2026-05-25T16:16:58+08:00"} +{"err_msg":"子账号的到期时间不能超过主账号的到期时间","level":"error","msg":"","source":"修改员工过期时间异常","time":"2026-05-25T16:17:18+08:00"} +{"err_msg":"子账号已过期,无法登录","level":"error","msg":"","source":"登录异常","time":"2026-05-25T16:27:49+08:00"} +{"err_msg":"子账号已过期,无法登录","level":"error","msg":"","source":"登录异常","time":"2026-05-25T16:28:06+08:00"} +{"err_msg":"子账号已过期,无法登录","level":"error","msg":"","source":"登录异常","time":"2026-05-25T16:34:46+08:00"} +{"err_msg":"子账号已过期,无法登录","level":"error","msg":"","source":"登录异常","time":"2026-05-25T16:34:47+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-25T16:36:04+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-25T16:36:13+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-25T16:36:14+08:00"} +{"err_msg":"小车编号已存在","level":"error","msg":"","request_params":"{\"warehouse_id\":21,\"PushType\":1,\"Code\":1,\"Name\":\"八五品\",\"Capacity\":200,\"Appearance\":85,\"ShopInfo\":[{\"account\":\"\",\"create_time\":\"2026-03-11 18:54:26\",\"deregulation\":\"1\",\"expiration_time\":\"2026-06-24 09:40:40\",\"id\":\"2031685168119377922\",\"is_expiration\":\"1\",\"is_syn_order\":1,\"mall_id\":794137,\"password\":\"\",\"publish_type\":0,\"refresh_token\":\"8994660b1489c55b200a3bdcdaf033d26bd86fc77fe32315710ca7ae37b10461\",\"shop_alias_name\":\"简创甄选书籍的书店\",\"shop_authorize\":\"1\",\"shop_expiration_time\":\"2026-06-13 16:12:52\",\"shop_group\":\"默认分组\",\"shop_key\":\"\",\"shop_name\":\"简创甄选书籍\",\"shop_nike\":\"\",\"shop_type\":\"2\",\"sku_spec\":\"\",\"status\":\"0\",\"tenant_id\":\"\",\"token\":\"c4c8406da6cf162b42eed1932b9c786f93e5abed264ee41729b4db397d0d704d\",\"update_time\":\"2026-05-25 09:40:15\",\"user_id\":0}]}","source":"创建小车异常","time":"2026-05-25T16:50:08+08:00"} +{"err_msg":"子账号已过期,无法登录","level":"error","msg":"","source":"登录异常","time":"2026-05-25T16:56:09+08:00"} +{"err_msg":"该小车存在未完成的任务,无法删除","level":"error","msg":"","request_params":"{\"ID\":6}","source":"删除小车异常","time":"2026-05-25T17:34:10+08:00"} +{"err_msg":"波次任务不存在","level":"error","msg":"","request_params":"{\"ID\":143}","source":"波次任务详情异常","time":"2026-05-26T14:34:47+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-26T15:44:30+08:00"} +{"err_msg":"查询出库单列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"OutNo\":\"\",\"Status\":0,\"CustomerID\":0,\"WarehouseID\":0,\"StartDate\":0,\"EndDate\":0}","source":"出库单列表异常","time":"2026-05-28T10:56:35+08:00"} +{"err_msg":"查询出库单列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"OutNo\":\"\",\"Status\":0,\"CustomerID\":0,\"WarehouseID\":0,\"StartDate\":0,\"EndDate\":0}","source":"出库单列表异常","time":"2026-05-28T10:56:37+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: No connection could be made because the target machine actively refused it.","level":"error","msg":"","shop_id":2054805126617468929,"source":"创建外部任务失败","time":"2026-05-28T11:31:26+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: No connection could be made because the target machine actively refused it.","level":"error","msg":"","shop_id":2054805126617468929,"source":"创建外部任务失败","time":"2026-05-28T11:32:45+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Status\":\"\",\"IDs\":null,\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:38:56+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:38:56+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:39:05+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:39:16+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:39:25+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:39:36+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:39:45+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:39:56+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:40:05+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:40:16+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:40:25+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:40:36+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:40:45+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:40:56+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:41:05+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:41:16+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:41:25+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:41:36+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:41:45+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:41:56+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:42:05+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:42:16+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:42:25+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:42:36+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:42:45+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:42:56+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:43:05+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:43:16+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:43:25+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:43:36+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:43:45+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:43:56+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:44:05+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:44:16+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:44:25+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:44:36+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:44:46+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:44:57+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:45:06+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:45:17+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:45:26+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:45:37+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:45:46+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:45:57+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:46:06+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Status\":\"\",\"IDs\":null,\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:46:22+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:46:25+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:46:37+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:46:46+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:46:57+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:47:06+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:47:16+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:47:25+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:47:36+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:47:45+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:47:56+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:48:05+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:48:16+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:48:25+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:48:36+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:48:45+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:48:56+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Status\":\"\",\"IDs\":null,\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:49:14+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:49:16+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:49:26+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:49:35+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Status\":\"\",\"IDs\":null,\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:49:50+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:49:56+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:50:07+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:50:16+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:50:27+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:50:36+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:50:47+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:50:56+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:51:07+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:51:16+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:51:27+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:51:36+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:51:47+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:51:56+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Status\":\"\",\"IDs\":null,\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:52:00+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:52:07+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:52:16+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:52:27+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:52:36+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:52:47+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:52:56+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:53:07+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:53:16+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:53:26+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":1,\"Keyword\":\"\",\"Status\":\"1\",\"IDs\":[116],\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:53:36+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Status\":\"\",\"IDs\":null,\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseID\":0}","source":"商品列表异常","time":"2026-05-28T11:55:48+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"校验员工机械码异常","time":"2026-05-28T13:24:16+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"校验员工机械码异常","time":"2026-05-28T13:24:24+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"校验员工机械码异常","time":"2026-05-28T13:24:28+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"校验员工机械码异常","time":"2026-05-28T13:24:31+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"校验员工机械码异常","time":"2026-05-28T14:31:53+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"校验员工机械码异常","time":"2026-05-28T14:33:29+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"校验员工机械码异常","time":"2026-05-28T14:34:03+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"校验员工机械码异常","time":"2026-05-28T14:35:59+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"校验员工机械码异常","time":"2026-05-28T14:36:51+08:00"} +{"err_msg":"查询库存汇总列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":20,\"ProductId\":0,\"WarehouseID\":0}","source":"库存汇总列表异常","time":"2026-05-28T15:06:27+08:00"} +{"err_msg":"查询库存汇总列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":20,\"ProductId\":0,\"WarehouseID\":0}","source":"库存汇总列表异常","time":"2026-05-28T15:07:37+08:00"} +{"err_msg":"查询库存汇总列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":20,\"ProductId\":0,\"WarehouseID\":0}","source":"库存汇总列表异常","time":"2026-05-28T15:10:36+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"校验员工机械码异常","time":"2026-05-28T15:17:34+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"校验员工机械码异常","time":"2026-05-28T15:18:12+08:00"} +{"err_msg":"用户名或密码错误","level":"error","msg":"","source":"登录异常","time":"2026-05-28T15:23:08+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T11:27:49+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T11:27:51+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T11:28:08+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T11:28:11+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T11:28:21+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T11:28:25+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T11:28:30+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T11:28:36+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T11:28:57+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T11:29:17+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T11:29:36+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T11:29:44+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T11:29:47+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T11:32:43+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T11:32:56+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T12:24:30+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T13:26:46+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T13:26:50+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T15:00:13+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T15:00:20+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T15:00:22+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T15:00:27+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T15:00:28+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-05-29T15:00:30+08:00"} +{"err_msg":"新旧数据完全一致,无需提交变更","level":"error","msg":"","request_params":"{\"ID\":0,\"Barcode\":\"9787205067861\",\"OldName\":\"好心情离不开心理学\",\"NewName\":\"好心情离不开心理学\",\"OldPublisher\":\"辽宁人民出版社\",\"NewPublisher\":\"辽宁人民出版社\",\"OldAuthor\":\"李丽 著\",\"NewAuthor\":\"李丽 著\",\"OldPublicationTime\":1270080000,\"NewPublicationTime\":1270080000,\"OldPrice\":2500,\"NewPrice\":2500,\"OldBindingLayout\":\"平装\",\"NewBindingLayout\":\"平装\",\"OldPageCount\":240,\"NewPageCount\":240,\"OldWordCount\":155000,\"NewWordCount\":155000,\"OldLiveImage\":null,\"NewLiveImage\":null,\"OldIsSuit\":0,\"NewIsSuit\":0}","source":"保存商品日志异常","time":"2026-05-29T15:13:46+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":20,\"Barcode\":\"\",\"Status\":null}","source":"商品日志列表异常","time":"2026-05-29T15:22:18+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":20,\"Barcode\":\"\",\"Status\":null}","source":"商品日志列表异常","time":"2026-05-29T15:22:37+08:00"} +{"err_msg":"只有系统管理员才可以访问","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":20,\"Barcode\":\"\",\"Status\":null}","source":"商品日志列表异常","time":"2026-05-29T15:24:39+08:00"} +{"err_msg":"只有系统管理员才可以访问","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":20,\"Barcode\":\"\",\"Status\":null}","source":"商品日志列表异常","time":"2026-05-29T15:24:39+08:00"} +{"err_msg":"只有系统管理员才可以访问","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":20,\"Barcode\":\"\",\"Status\":null}","source":"商品日志列表异常","time":"2026-05-29T15:24:50+08:00"} +{"err_msg":"该商品变更日志已存在,无需重复提交","level":"error","msg":"","request_params":"{\"ID\":0,\"Barcode\":\"9787111213826\",\"OldName\":\"1\",\"NewName\":\"10800\",\"OldPublisher\":\"1\",\"NewPublisher\":\"1\",\"OldAuthor\":\"1\",\"NewAuthor\":\"1\",\"OldPublicationTime\":1,\"NewPublicationTime\":1,\"OldPrice\":1,\"NewPrice\":1,\"OldBindingLayout\":\"1\",\"NewBindingLayout\":\"1\",\"OldPageCount\":1,\"NewPageCount\":1,\"OldWordCount\":1,\"NewWordCount\":1,\"OldLiveImage\":[\"https://example.com/image2.jpg\"],\"NewLiveImage\":[\"https://example.com/image2.jpg\"],\"OldIsSuit\":0,\"NewIsSuit\":1}","source":"保存商品日志异常","time":"2026-05-29T15:46:54+08:00"} +{"err_msg":"该日志已审核,无法重复审核","level":"error","msg":"","request_params":"{\"ID\":8,\"Status\":2,\"NewName\":\"\",\"NewPublisher\":\"\",\"NewAuthor\":\"\",\"NewPublicationTime\":0,\"NewPrice\":0,\"NewBindingLayout\":\"\",\"NewPageCount\":0,\"NewWordCount\":0,\"NewLiveImage\":null,\"NewIsSuit\":0}","source":"审核商品日志异常","time":"2026-05-29T16:32:12+08:00"} +{"err_msg":"该日志已审核,无法重复审核","level":"error","msg":"","request_params":"{\"ID\":8,\"Status\":2,\"NewName\":\"\",\"NewPublisher\":\"\",\"NewAuthor\":\"\",\"NewPublicationTime\":0,\"NewPrice\":0,\"NewBindingLayout\":\"\",\"NewPageCount\":0,\"NewWordCount\":0,\"NewLiveImage\":null,\"NewIsSuit\":0}","source":"审核商品日志异常","time":"2026-05-29T16:32:41+08:00"} +{"err_msg":"该日志已审核,无法重复审核","level":"error","msg":"","request_params":"{\"ID\":8,\"Status\":1,\"NewName\":\"\",\"NewPublisher\":\"\",\"NewAuthor\":\"\",\"NewPublicationTime\":0,\"NewPrice\":0,\"NewBindingLayout\":\"\",\"NewPageCount\":0,\"NewWordCount\":0,\"NewLiveImage\":null,\"NewIsSuit\":0}","source":"审核商品日志异常","time":"2026-05-29T16:33:54+08:00"} +{"err_msg":"审核商品日志失败:Error 1048 (23000): Column 'new_live_image' cannot be null","level":"error","msg":"","request_params":"{\"ID\":11,\"Status\":1,\"NewName\":\"\",\"NewPublisher\":\"\",\"NewAuthor\":\"\",\"NewPublicationTime\":0,\"NewPrice\":0,\"NewBindingLayout\":\"\",\"NewPageCount\":0,\"NewWordCount\":0,\"NewLiveImage\":null,\"NewIsSuit\":0}","source":"审核商品日志异常","time":"2026-05-29T16:57:25+08:00"} +{"err_msg":"审核商品日志失败:Error 1048 (23000): Column 'new_live_image' cannot be null","level":"error","msg":"","request_params":"{\"ID\":11,\"Status\":1,\"NewName\":\"\",\"NewPublisher\":\"\",\"NewAuthor\":\"\",\"NewPublicationTime\":0,\"NewPrice\":0,\"NewBindingLayout\":\"\",\"NewPageCount\":0,\"NewWordCount\":0,\"NewLiveImage\":null,\"NewIsSuit\":0}","source":"审核商品日志异常","time":"2026-05-29T16:57:32+08:00"} +{"err_msg":"用户名或密码错误","level":"error","msg":"","source":"登录异常","time":"2026-05-30T10:59:26+08:00"} +{"err_msg":"账号类型不匹配","level":"error","msg":"","source":"登录异常","time":"2026-05-30T11:00:28+08:00"} +{"err_msg":"账号类型不匹配","level":"error","msg":"","source":"登录异常","time":"2026-05-30T11:00:30+08:00"} +{"err_msg":"用户名或密码错误","level":"error","msg":"","source":"登录异常","time":"2026-05-30T13:03:28+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"Page\":0,\"PageSize\":0,\"Name\":\"\"}","source":"用户类型列表异常","time":"2026-05-30T14:55:44+08:00"} +{"err_msg":"店铺不存在","level":"error","msg":"","request_params":"{\"ShopID\":1}","source":"获取店铺商品详情异常","time":"2026-05-30T15:28:35+08:00"} +{"err_msg":"解析外部接口响应失败: invalid character '\u003c' looking for beginning of value","level":"error","msg":"","request_params":"{\"ShopID\":2054805126617468929,\"ShopType\":1,\"ProductID\":114}","source":"重试任务异常","time":"2026-05-30T15:45:15+08:00"} +{"err_msg":"条码和品相至少提供一个","level":"error","msg":"","request_params":"{\"Barcode\":\"\",\"Appearance\":0}","source":"库存统计异常","time":"2026-05-30T16:12:24+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.","level":"error","msg":"","shop_id":2054805126617468929,"source":"创建外部任务失败","time":"2026-05-31T19:12:19+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.","level":"error","msg":"","shop_id":2054805126617468929,"source":"创建外部任务失败","time":"2026-05-31T19:12:27+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.","level":"error","msg":"","shop_id":2026828423056261121,"source":"创建外部任务失败","time":"2026-05-31T19:12:40+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.","level":"error","msg":"","shop_id":2026828423056261121,"source":"创建外部任务失败","time":"2026-05-31T19:12:48+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.","level":"error","msg":"","shop_id":2054805126617468929,"source":"创建外部任务失败","time":"2026-05-31T19:13:15+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.","level":"error","msg":"","shop_id":2026828423056261121,"source":"创建外部任务失败","time":"2026-05-31T19:13:36+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.","level":"error","msg":"","shop_id":2054805126617468929,"source":"创建外部任务失败","time":"2026-05-31T19:14:21+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.","level":"error","msg":"","shop_id":2026828423056261121,"source":"创建外部任务失败","time":"2026-05-31T19:14:42+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.","level":"error","msg":"","shop_id":2054805126617468929,"source":"创建外部任务失败","time":"2026-05-31T19:14:54+08:00"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.","level":"error","msg":"","shop_id":2026828423056261121,"source":"创建外部任务失败","time":"2026-05-31T19:15:15+08:00"} +{"err_msg":"[ERROR] 保存书籍信息失败:创建书籍信息失败:Error 1364 (HY000): Field 'image_object' doesn't have a default value\n","level":"error","msg":"","request_params":"{\"Fid\":0,\"Type\":2,\"Isbn\":\"9787218163406\",\"FIsbn\":\"1\",\"BookName\":\"中国神话传说(5000年传下来的中国故事,全十册)\",\"FBookName\":\"第一册\",\"Author\":\"李改婷 编\",\"Publisher\":\"广东人民出版社\",\"PublicationTime\":1677600000,\"BindingLayout\":\"其他\",\"FixPrice\":2000000,\"PageCount\":320,\"WordCount\":0,\"BookFormat\":0,\"LiveImage\":[\"https://img.pddpic.com/garner-api-open/2026-04-30/4418b25a84f84688f64a3f76c60d6d80.jpg\"]}","source":"同步书籍信息异常","time":"2026-06-01T11:26:08+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-06-01T18:08:25+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":20,\"Keyword\":\"1\",\"Status\":\"1\",\"IDs\":null,\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseIDs\":null,\"LocationID\":0,\"ISBN\":\"\",\"Code\":\"\",\"Appearance\":0}","source":"分销商品列表异常","time":"2026-06-02T11:45:46+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":20,\"Keyword\":\"1\",\"Status\":\"1\",\"IDs\":null,\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseIDs\":null,\"LocationID\":0,\"ISBN\":\"\",\"Code\":\"\",\"Appearance\":0}","source":"分销商品列表异常","time":"2026-06-02T11:46:16+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":20,\"Keyword\":\"\",\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseIDs\":0,\"LocationID\":0,\"Appearance\":0,\"StartStockAt\":0,\"EndStockAt\":0}","source":"分销商品列表异常","time":"2026-06-02T15:20:26+08:00"} +{"err_msg":"查询商品列表失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":20,\"Keyword\":\"\",\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"WarehouseIDs\":0,\"LocationID\":0,\"Appearance\":0,\"StartStockAt\":0,\"EndStockAt\":0}","source":"分销商品列表异常","time":"2026-06-02T15:21:49+08:00"} +{"error":"解析失败: invalid character '\u003c' looking for beginning of value","level":"error","msg":"","shop_id":1,"source":"批量推送-解析创建任务响应失败","time":"2026-06-03T09:44:42+08:00"} +{"error":"解析失败: invalid character '\u003c' looking for beginning of value","level":"error","msg":"","shop_id":2,"source":"批量推送-解析创建任务响应失败","time":"2026-06-03T09:44:42+08:00"} +{"err_msg":"没有成功创建任何任务","level":"error","msg":"","request_params":"{\"user_id\":1965254774327533570,\"shop_ids\":[1,2],\"shop_types\":[2,3],\"product_ids\":[3,4]}","source":"批量推送异常","time":"2026-06-03T09:44:42+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:1 shop_type:2 sign:F1558CD63BF9CD1353CF974B4041F972 task_count:2 task_type:7] shop_id:1 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"1","shop_type":"2","sign":"F1558CD63BF9CD1353CF974B4041F972","task_count":"2","task_type":"7"},"shop_id":1,"source":"批量推送-发起创建任务请求","time":"2026-06-03T09:48:27+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"解析失败: invalid character '\u003c' looking for beginning of value","level":"error","msg":"","raw_response":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003ctitle\u003eError\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\u003cpre\u003eCannot POST /task/create\u003c/pre\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n","shop_id":1,"source":"批量推送-解析创建任务响应失败","time":"2026-06-03T09:48:27+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2 shop_type:3 sign:5101535AF8DA26B0D26E679AB0D08090 task_count:2 task_type:7] shop_id:2 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2","shop_type":"3","sign":"5101535AF8DA26B0D26E679AB0D08090","task_count":"2","task_type":"7"},"shop_id":2,"source":"批量推送-发起创建任务请求","time":"2026-06-03T09:48:27+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"解析失败: invalid character '\u003c' looking for beginning of value","level":"error","msg":"","raw_response":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003ctitle\u003eError\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\u003cpre\u003eCannot POST /task/create\u003c/pre\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n","shop_id":2,"source":"批量推送-解析创建任务响应失败","time":"2026-06-03T09:48:27+08:00"} +{"level":"error","msg":"","product_ids":[3,4],"shop_ids":[1,2],"shop_types":[2,3],"source":"批量推送-没有成功创建任何任务","task_count":2,"time":"2026-06-03T09:48:27+08:00","user_id":1965254774327533570} +{"err_msg":"没有成功创建任何任务","level":"error","msg":"","request_params":"{\"user_id\":1965254774327533570,\"shop_ids\":[1,2],\"shop_types\":[2,3],\"product_ids\":[3,4]}","source":"批量推送异常","time":"2026-06-03T09:48:27+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:1 shop_type:2 sign:F1558CD63BF9CD1353CF974B4041F972 task_count:2 task_type:7] shop_id:1 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"1","shop_type":"2","sign":"F1558CD63BF9CD1353CF974B4041F972","task_count":"2","task_type":"7"},"shop_id":1,"source":"批量推送-发起创建任务请求","time":"2026-06-03T09:48:40+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"解析失败: invalid character '\u003c' looking for beginning of value","level":"error","msg":"","raw_response":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003ctitle\u003eError\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\u003cpre\u003eCannot POST /task/create\u003c/pre\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n","shop_id":1,"source":"批量推送-解析创建任务响应失败","time":"2026-06-03T09:48:40+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2 shop_type:3 sign:5101535AF8DA26B0D26E679AB0D08090 task_count:2 task_type:7] shop_id:2 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2","shop_type":"3","sign":"5101535AF8DA26B0D26E679AB0D08090","task_count":"2","task_type":"7"},"shop_id":2,"source":"批量推送-发起创建任务请求","time":"2026-06-03T09:48:40+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"解析失败: invalid character '\u003c' looking for beginning of value","level":"error","msg":"","raw_response":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003ctitle\u003eError\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\u003cpre\u003eCannot POST /task/create\u003c/pre\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n","shop_id":2,"source":"批量推送-解析创建任务响应失败","time":"2026-06-03T09:48:40+08:00"} +{"level":"error","msg":"","product_ids":[3,4],"shop_ids":[1,2],"shop_types":[2,3],"source":"批量推送-没有成功创建任何任务","task_count":2,"time":"2026-06-03T09:48:40+08:00","user_id":1965254774327533570} +{"err_msg":"没有成功创建任何任务","level":"error","msg":"","request_params":"{\"user_id\":1965254774327533570,\"shop_ids\":[1,2],\"shop_types\":[2,3],\"product_ids\":[3,4]}","source":"批量推送异常","time":"2026-06-03T09:48:40+08:00"} +{"level":"info","msg":"map[product_ids:[33 34] shop_ids:[1 2] shop_types:[2 3] source:批量推送-入口 user_id:1965254774327533570]","product_ids":[33,34],"shop_ids":[1,2],"shop_types":[2,3],"source":"批量推送-入口","time":"2026-06-03T09:51:40+08:00","user_id":1965254774327533570} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:1 shop_type:2 sign:F1558CD63BF9CD1353CF974B4041F972 task_count:2 task_type:7] shop_id:1 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"1","shop_type":"2","sign":"F1558CD63BF9CD1353CF974B4041F972","task_count":"2","task_type":"7"},"shop_id":1,"source":"批量推送-发起创建任务请求","time":"2026-06-03T09:51:40+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"解析失败: invalid character '\u003c' looking for beginning of value","level":"error","msg":"","raw_response":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003ctitle\u003eError\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\u003cpre\u003eCannot POST /task/create\u003c/pre\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n","shop_id":1,"source":"批量推送-解析创建任务响应失败","time":"2026-06-03T09:51:40+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2 shop_type:3 sign:5101535AF8DA26B0D26E679AB0D08090 task_count:2 task_type:7] shop_id:2 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2","shop_type":"3","sign":"5101535AF8DA26B0D26E679AB0D08090","task_count":"2","task_type":"7"},"shop_id":2,"source":"批量推送-发起创建任务请求","time":"2026-06-03T09:51:40+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"解析失败: invalid character '\u003c' looking for beginning of value","level":"error","msg":"","raw_response":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003ctitle\u003eError\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\u003cpre\u003eCannot POST /task/create\u003c/pre\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n","shop_id":2,"source":"批量推送-解析创建任务响应失败","time":"2026-06-03T09:51:40+08:00"} +{"level":"error","msg":"","product_ids":[33,34],"shop_ids":[1,2],"shop_types":[2,3],"source":"批量推送-没有成功创建任何任务","task_count":2,"time":"2026-06-03T09:51:40+08:00","user_id":1965254774327533570} +{"err_msg":"没有成功创建任何任务","level":"error","msg":"","request_params":"{\"user_id\":1965254774327533570,\"shop_ids\":[1,2],\"shop_types\":[2,3],\"product_ids\":[33,34]}","source":"批量推送异常","time":"2026-06-03T09:51:40+08:00"} +{"level":"info","msg":"map[product_ids:[33 34] shop_ids:[2026828096496140289 2026828423056261121] shop_types:[2 5] source:批量推送-入口 user_id:1965254774327533570]","product_ids":[33,34],"shop_ids":[2026828096496140289,2026828423056261121],"shop_types":[2,5],"source":"批量推送-入口","time":"2026-06-03T09:55:35+08:00","user_id":1965254774327533570} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828096496140289 shop_type:2 sign:710B15A209552C18E02784AE05EAE681 task_count:2 task_type:7] shop_id:2026828096496140289 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828096496140289","shop_type":"2","sign":"710B15A209552C18E02784AE05EAE681","task_count":"2","task_type":"7"},"shop_id":2026828096496140289,"source":"批量推送-发起创建任务请求","time":"2026-06-03T09:55:35+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"解析失败: invalid character '\u003c' looking for beginning of value","level":"error","msg":"","raw_response":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003ctitle\u003eError\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\u003cpre\u003eCannot POST /task/create\u003c/pre\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n","shop_id":2026828096496140289,"source":"批量推送-解析创建任务响应失败","time":"2026-06-03T09:55:35+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828423056261121 shop_type:5 sign:BBD1BD765F21199C9FA3943BCE5AAFCA task_count:2 task_type:7] shop_id:2026828423056261121 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828423056261121","shop_type":"5","sign":"BBD1BD765F21199C9FA3943BCE5AAFCA","task_count":"2","task_type":"7"},"shop_id":2026828423056261121,"source":"批量推送-发起创建任务请求","time":"2026-06-03T09:55:35+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"解析失败: invalid character '\u003c' looking for beginning of value","level":"error","msg":"","raw_response":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003ctitle\u003eError\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\u003cpre\u003eCannot POST /task/create\u003c/pre\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n","shop_id":2026828423056261121,"source":"批量推送-解析创建任务响应失败","time":"2026-06-03T09:55:35+08:00"} +{"level":"error","msg":"","product_ids":[33,34],"shop_ids":[2026828096496140289,2026828423056261121],"shop_types":[2,5],"source":"批量推送-没有成功创建任何任务","task_count":2,"time":"2026-06-03T09:55:35+08:00","user_id":1965254774327533570} +{"err_msg":"没有成功创建任何任务","level":"error","msg":"","request_params":"{\"user_id\":1965254774327533570,\"shop_ids\":[2026828096496140289,2026828423056261121],\"shop_types\":[2,5],\"product_ids\":[33,34]}","source":"批量推送异常","time":"2026-06-03T09:55:35+08:00"} +{"level":"info","msg":"map[product_ids:[33 34] shop_ids:[2026828096496140289 2026828423056261121] shop_types:[2 5] source:批量推送-入口 user_id:1965254774327533570]","product_ids":[33,34],"shop_ids":[2026828096496140289,2026828423056261121],"shop_types":[2,5],"source":"批量推送-入口","time":"2026-06-03T10:07:52+08:00","user_id":1965254774327533570} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828096496140289 shop_type:2 sign:710B15A209552C18E02784AE05EAE681 task_count:2 task_type:7] shop_id:2026828096496140289 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828096496140289","shop_type":"2","sign":"710B15A209552C18E02784AE05EAE681","task_count":"2","task_type":"7"},"shop_id":2026828096496140289,"source":"批量推送-发起创建任务请求","time":"2026-06-03T10:07:52+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"解析失败: invalid character '\u003c' looking for beginning of value","level":"error","msg":"","raw_response":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003ctitle\u003eError\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\u003cpre\u003eCannot POST /task/create\u003c/pre\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n","shop_id":2026828096496140289,"source":"批量推送-解析创建任务响应失败","time":"2026-06-03T10:07:52+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828423056261121 shop_type:5 sign:BBD1BD765F21199C9FA3943BCE5AAFCA task_count:2 task_type:7] shop_id:2026828423056261121 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828423056261121","shop_type":"5","sign":"BBD1BD765F21199C9FA3943BCE5AAFCA","task_count":"2","task_type":"7"},"shop_id":2026828423056261121,"source":"批量推送-发起创建任务请求","time":"2026-06-03T10:07:52+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"解析失败: invalid character '\u003c' looking for beginning of value","level":"error","msg":"","raw_response":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003ctitle\u003eError\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\u003cpre\u003eCannot POST /task/create\u003c/pre\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n","shop_id":2026828423056261121,"source":"批量推送-解析创建任务响应失败","time":"2026-06-03T10:07:52+08:00"} +{"level":"error","msg":"","product_ids":[33,34],"shop_ids":[2026828096496140289,2026828423056261121],"shop_types":[2,5],"source":"批量推送-没有成功创建任何任务","task_count":2,"time":"2026-06-03T10:07:52+08:00","user_id":1965254774327533570} +{"err_msg":"没有成功创建任何任务","level":"error","msg":"","request_params":"{\"user_id\":1965254774327533570,\"shop_ids\":[2026828096496140289,2026828423056261121],\"shop_types\":[2,5],\"product_ids\":[33,34]}","source":"批量推送异常","time":"2026-06-03T10:07:52+08:00"} +{"level":"info","msg":"map[product_ids:[33 34] shop_ids:[2026828096496140289 2026828423056261121] shop_types:[2 5] source:批量推送-入口 user_id:1965254774327533570]","product_ids":[33,34],"shop_ids":[2026828096496140289,2026828423056261121],"shop_types":[2,5],"source":"批量推送-入口","time":"2026-06-03T10:08:06+08:00","user_id":1965254774327533570} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828096496140289 shop_type:2 sign:710B15A209552C18E02784AE05EAE681 task_count:2 task_type:7] shop_id:2026828096496140289 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828096496140289","shop_type":"2","sign":"710B15A209552C18E02784AE05EAE681","task_count":"2","task_type":"7"},"shop_id":2026828096496140289,"source":"批量推送-发起创建任务请求","time":"2026-06-03T10:08:06+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"解析失败: invalid character '\u003c' looking for beginning of value","level":"error","msg":"","raw_response":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003ctitle\u003eError\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\u003cpre\u003eCannot POST /task/create\u003c/pre\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n","shop_id":2026828096496140289,"source":"批量推送-解析创建任务响应失败","time":"2026-06-03T10:08:06+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828423056261121 shop_type:5 sign:BBD1BD765F21199C9FA3943BCE5AAFCA task_count:2 task_type:7] shop_id:2026828423056261121 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828423056261121","shop_type":"5","sign":"BBD1BD765F21199C9FA3943BCE5AAFCA","task_count":"2","task_type":"7"},"shop_id":2026828423056261121,"source":"批量推送-发起创建任务请求","time":"2026-06-03T10:08:06+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"解析失败: invalid character '\u003c' looking for beginning of value","level":"error","msg":"","raw_response":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003ctitle\u003eError\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\u003cpre\u003eCannot POST /task/create\u003c/pre\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n","shop_id":2026828423056261121,"source":"批量推送-解析创建任务响应失败","time":"2026-06-03T10:08:06+08:00"} +{"level":"error","msg":"","product_ids":[33,34],"shop_ids":[2026828096496140289,2026828423056261121],"shop_types":[2,5],"source":"批量推送-没有成功创建任何任务","task_count":2,"time":"2026-06-03T10:08:06+08:00","user_id":1965254774327533570} +{"err_msg":"没有成功创建任何任务","level":"error","msg":"","request_params":"{\"user_id\":1965254774327533570,\"shop_ids\":[2026828096496140289,2026828423056261121],\"shop_types\":[2,5],\"product_ids\":[33,34]}","source":"批量推送异常","time":"2026-06-03T10:08:06+08:00"} +{"level":"info","msg":"map[product_ids:[33 34] shop_ids:[2026828096496140289 2026828423056261121] shop_types:[2 5] source:批量推送-入口 user_id:1965254774327533570]","product_ids":[33,34],"shop_ids":[2026828096496140289,2026828423056261121],"shop_types":[2,5],"source":"批量推送-入口","time":"2026-06-03T10:12:33+08:00","user_id":1965254774327533570} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828096496140289 shop_type:2 sign:710B15A209552C18E02784AE05EAE681 task_count:2 task_type:7] shop_id:2026828096496140289 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828096496140289","shop_type":"2","sign":"710B15A209552C18E02784AE05EAE681","task_count":"2","task_type":"7"},"shop_id":2026828096496140289,"source":"批量推送-发起创建任务请求","time":"2026-06-03T10:12:33+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"500","data":null,"data_type":"\u003cnil\u003e","fields.msg":"店铺数据为空","level":"info","msg":"map[code:500 data:\u003cnil\u003e data_type:\u003cnil\u003e msg:店铺数据为空 shop_id:2026828096496140289 source:批量推送-创建任务响应]","shop_id":2026828096496140289,"source":"批量推送-创建任务响应","time":"2026-06-03T10:12:33+08:00"} +{"code":"500","fields.msg":"店铺数据为空","level":"error","msg":"","shop_id":2026828096496140289,"source":"批量推送-创建任务返回错误","time":"2026-06-03T10:12:33+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828423056261121 shop_type:5 sign:BBD1BD765F21199C9FA3943BCE5AAFCA task_count:2 task_type:7] shop_id:2026828423056261121 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828423056261121","shop_type":"5","sign":"BBD1BD765F21199C9FA3943BCE5AAFCA","task_count":"2","task_type":"7"},"shop_id":2026828423056261121,"source":"批量推送-发起创建任务请求","time":"2026-06-03T10:12:33+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2061994430447960065","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2061994430447960065 data_type:string msg:成功 shop_id:2026828423056261121 source:批量推送-创建任务响应]","shop_id":2026828423056261121,"source":"批量推送-创建任务响应","time":"2026-06-03T10:12:34+08:00"} +{"error":"查询失败: record not found","level":"error","msg":"","product_id":33,"source":"批量推送-查询库存明细失败","time":"2026-06-03T10:12:34+08:00"} +{"error":"查询失败: record not found","level":"error","msg":"","product_id":34,"source":"批量推送-查询库存明细失败","time":"2026-06-03T10:12:34+08:00"} +{"level":"info","msg":"map[product_ids:[114 113] shop_ids:[2031685168119377922 2054805126617468929] shop_types:[2 1] source:批量推送-入口 user_id:1965254774327533570]","product_ids":[114,113],"shop_ids":[2031685168119377922,2054805126617468929],"shop_types":[2,1],"source":"批量推送-入口","time":"2026-06-03T10:35:47+08:00","user_id":1965254774327533570} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2031685168119377922 shop_type:2 sign:8F6FF23CD8EFADD5A86B960B89B59CE3 task_count:2 task_type:7] shop_id:2031685168119377922 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2031685168119377922","shop_type":"2","sign":"8F6FF23CD8EFADD5A86B960B89B59CE3","task_count":"2","task_type":"7"},"shop_id":2031685168119377922,"source":"批量推送-发起创建任务请求","time":"2026-06-03T10:35:47+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2062000272203268098","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2062000272203268098 data_type:string msg:成功 shop_id:2031685168119377922 source:批量推送-创建任务响应]","shop_id":2031685168119377922,"source":"批量推送-创建任务响应","time":"2026-06-03T10:35:47+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2054805126617468929 shop_type:1 sign:62EED361BBAFEF238C7FDC477CB8E71E task_count:2 task_type:7] shop_id:2054805126617468929 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2054805126617468929","shop_type":"1","sign":"62EED361BBAFEF238C7FDC477CB8E71E","task_count":"2","task_type":"7"},"shop_id":2054805126617468929,"source":"批量推送-发起创建任务请求","time":"2026-06-03T10:35:47+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2062000274623381505","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2062000274623381505 data_type:string msg:成功 shop_id:2054805126617468929 source:批量推送-创建任务响应]","shop_id":2054805126617468929,"source":"批量推送-创建任务响应","time":"2026-06-03T10:35:48+08:00"} +{"level":"info","msg":"map[product_ids:[33 34] shop_ids:[2026828096496140289 2026828423056261121] shop_types:[2 5] source:批量推送-入口 user_id:1965254774327533570]","product_ids":[33,34],"shop_ids":[2026828096496140289,2026828423056261121],"shop_types":[2,5],"source":"批量推送-入口","time":"2026-06-03T11:47:04+08:00","user_id":1965254774327533570} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828096496140289 shop_type:2 sign:710B15A209552C18E02784AE05EAE681 task_count:2 task_type:7] shop_id:2026828096496140289 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828096496140289","shop_type":"2","sign":"710B15A209552C18E02784AE05EAE681","task_count":"2","task_type":"7"},"shop_id":2026828096496140289,"source":"批量推送-发起创建任务请求","time":"2026-06-03T11:47:04+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"500","data":null,"data_type":"\u003cnil\u003e","fields.msg":"店铺数据为空","level":"info","msg":"map[code:500 data:\u003cnil\u003e data_type:\u003cnil\u003e msg:店铺数据为空 shop_id:2026828096496140289 source:批量推送-创建任务响应]","shop_id":2026828096496140289,"source":"批量推送-创建任务响应","time":"2026-06-03T11:47:04+08:00"} +{"code":"500","fields.msg":"店铺数据为空","level":"error","msg":"","shop_id":2026828096496140289,"source":"批量推送-创建任务返回错误","time":"2026-06-03T11:47:04+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828423056261121 shop_type:5 sign:BBD1BD765F21199C9FA3943BCE5AAFCA task_count:2 task_type:7] shop_id:2026828423056261121 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828423056261121","shop_type":"5","sign":"BBD1BD765F21199C9FA3943BCE5AAFCA","task_count":"2","task_type":"7"},"shop_id":2026828423056261121,"source":"批量推送-发起创建任务请求","time":"2026-06-03T11:47:04+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2062018211526688770","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2062018211526688770 data_type:string msg:成功 shop_id:2026828423056261121 source:批量推送-创建任务响应]","shop_id":2026828423056261121,"source":"批量推送-创建任务响应","time":"2026-06-03T11:47:05+08:00"} +{"error":"查询失败: record not found","level":"error","msg":"","product_id":33,"source":"批量推送-查询库存明细失败","time":"2026-06-03T11:47:05+08:00"} +{"error":"查询失败: record not found","level":"error","msg":"","product_id":34,"source":"批量推送-查询库存明细失败","time":"2026-06-03T11:47:05+08:00"} +{"level":"info","msg":"map[product_ids:[33 34] shop_ids:[2026828096496140289 2026828423056261121] shop_types:[2 5] source:批量推送-入口 user_id:1965254774327533570]","product_ids":[33,34],"shop_ids":[2026828096496140289,2026828423056261121],"shop_types":[2,5],"source":"批量推送-入口","time":"2026-06-03T12:46:07+08:00","user_id":1965254774327533570} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828096496140289 shop_type:2 sign:710B15A209552C18E02784AE05EAE681 task_count:2 task_type:7] shop_id:2026828096496140289 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828096496140289","shop_type":"2","sign":"710B15A209552C18E02784AE05EAE681","task_count":"2","task_type":"7"},"shop_id":2026828096496140289,"source":"批量推送-发起创建任务请求","time":"2026-06-03T12:46:07+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"500","data":null,"data_type":"\u003cnil\u003e","fields.msg":"店铺数据为空","level":"info","msg":"map[code:500 data:\u003cnil\u003e data_type:\u003cnil\u003e msg:店铺数据为空 shop_id:2026828096496140289 source:批量推送-创建任务响应]","shop_id":2026828096496140289,"source":"批量推送-创建任务响应","time":"2026-06-03T12:46:07+08:00"} +{"code":"500","fields.msg":"店铺数据为空","level":"error","msg":"","shop_id":2026828096496140289,"source":"批量推送-创建任务返回错误","time":"2026-06-03T12:46:07+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828423056261121 shop_type:5 sign:BBD1BD765F21199C9FA3943BCE5AAFCA task_count:2 task_type:7] shop_id:2026828423056261121 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828423056261121","shop_type":"5","sign":"BBD1BD765F21199C9FA3943BCE5AAFCA","task_count":"2","task_type":"7"},"shop_id":2026828423056261121,"source":"批量推送-发起创建任务请求","time":"2026-06-03T12:46:07+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2062033064727363585","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2062033064727363585 data_type:string msg:成功 shop_id:2026828423056261121 source:批量推送-创建任务响应]","shop_id":2026828423056261121,"source":"批量推送-创建任务响应","time":"2026-06-03T12:46:08+08:00"} +{"error":"查询失败: record not found","level":"error","msg":"","product_id":33,"source":"批量推送-查询库存明细失败","time":"2026-06-03T12:46:08+08:00"} +{"error":"查询失败: record not found","level":"error","msg":"","product_id":34,"source":"批量推送-查询库存明细失败","time":"2026-06-03T12:46:08+08:00"} +{"level":"info","msg":"map[product_ids:[33 34] shop_ids:[2026828096496140289 2026828423056261121] shop_types:[2 5] source:批量推送-入口 user_id:1965254774327533570]","product_ids":[33,34],"shop_ids":[2026828096496140289,2026828423056261121],"shop_types":[2,5],"source":"批量推送-入口","time":"2026-06-03T13:17:52+08:00","user_id":1965254774327533570} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828096496140289 shop_type:2 sign:710B15A209552C18E02784AE05EAE681 task_count:2 task_type:7] shop_id:2026828096496140289 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828096496140289","shop_type":"2","sign":"710B15A209552C18E02784AE05EAE681","task_count":"2","task_type":"7"},"shop_id":2026828096496140289,"source":"批量推送-发起创建任务请求","time":"2026-06-03T13:17:52+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"500","data":null,"data_type":"\u003cnil\u003e","fields.msg":"店铺数据为空","level":"info","msg":"map[code:500 data:\u003cnil\u003e data_type:\u003cnil\u003e msg:店铺数据为空 shop_id:2026828096496140289 source:批量推送-创建任务响应]","shop_id":2026828096496140289,"source":"批量推送-创建任务响应","time":"2026-06-03T13:17:52+08:00"} +{"code":"500","fields.msg":"店铺数据为空","level":"error","msg":"","shop_id":2026828096496140289,"source":"批量推送-创建任务返回错误","time":"2026-06-03T13:17:52+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828423056261121 shop_type:5 sign:BBD1BD765F21199C9FA3943BCE5AAFCA task_count:2 task_type:7] shop_id:2026828423056261121 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828423056261121","shop_type":"5","sign":"BBD1BD765F21199C9FA3943BCE5AAFCA","task_count":"2","task_type":"7"},"shop_id":2026828423056261121,"source":"批量推送-发起创建任务请求","time":"2026-06-03T13:17:52+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2062041054436081665","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2062041054436081665 data_type:string msg:成功 shop_id:2026828423056261121 source:批量推送-创建任务响应]","shop_id":2026828423056261121,"source":"批量推送-创建任务响应","time":"2026-06-03T13:17:53+08:00"} +{"level":"error","msg":"","product_id":33,"source":"批量推送-库存明细不存在","time":"2026-06-03T13:17:53+08:00"} +{"level":"error","msg":"","product_id":34,"source":"批量推送-库存明细不存在","time":"2026-06-03T13:17:53+08:00"} +{"level":"info","msg":"map[product_ids:[33 34] shop_ids:[2058054283306110978 2026828423056261121] shop_types:[2 5] source:批量推送-入口 user_id:1965254774327533570]","product_ids":[33,34],"shop_ids":[2058054283306110978,2026828423056261121],"shop_types":[2,5],"source":"批量推送-入口","time":"2026-06-03T13:22:56+08:00","user_id":1965254774327533570} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2058054283306110978 shop_type:2 sign:43A8457691E7ECEF33FE89C876D6A145 task_count:2 task_type:7] shop_id:2058054283306110978 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2058054283306110978","shop_type":"2","sign":"43A8457691E7ECEF33FE89C876D6A145","task_count":"2","task_type":"7"},"shop_id":2058054283306110978,"source":"批量推送-发起创建任务请求","time":"2026-06-03T13:22:56+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2062042327528980481","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2062042327528980481 data_type:string msg:成功 shop_id:2058054283306110978 source:批量推送-创建任务响应]","shop_id":2058054283306110978,"source":"批量推送-创建任务响应","time":"2026-06-03T13:22:56+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828423056261121 shop_type:5 sign:BBD1BD765F21199C9FA3943BCE5AAFCA task_count:2 task_type:7] shop_id:2026828423056261121 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828423056261121","shop_type":"5","sign":"BBD1BD765F21199C9FA3943BCE5AAFCA","task_count":"2","task_type":"7"},"shop_id":2026828423056261121,"source":"批量推送-发起创建任务请求","time":"2026-06-03T13:22:56+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2062042328648859649","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2062042328648859649 data_type:string msg:成功 shop_id:2026828423056261121 source:批量推送-创建任务响应]","shop_id":2026828423056261121,"source":"批量推送-创建任务响应","time":"2026-06-03T13:22:57+08:00"} +{"level":"error","msg":"","product_id":33,"source":"批量推送-库存明细不存在","time":"2026-06-03T13:22:57+08:00"} +{"level":"error","msg":"","product_id":34,"source":"批量推送-库存明细不存在","time":"2026-06-03T13:22:57+08:00"} +{"level":"info","msg":"map[product_ids:[33 34] shop_ids:[2058054283306110978 2026828423056261121] shop_types:[2 5] source:批量推送-入口 user_id:1965254774327533570]","product_ids":[33,34],"shop_ids":[2058054283306110978,2026828423056261121],"shop_types":[2,5],"source":"批量推送-入口","time":"2026-06-03T13:24:51+08:00","user_id":1965254774327533570} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2058054283306110978 shop_type:2 sign:43A8457691E7ECEF33FE89C876D6A145 task_count:2 task_type:7] shop_id:2058054283306110978 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2058054283306110978","shop_type":"2","sign":"43A8457691E7ECEF33FE89C876D6A145","task_count":"2","task_type":"7"},"shop_id":2058054283306110978,"source":"批量推送-发起创建任务请求","time":"2026-06-03T13:24:51+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2062042811627159554","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2062042811627159554 data_type:string msg:成功 shop_id:2058054283306110978 source:批量推送-创建任务响应]","shop_id":2058054283306110978,"source":"批量推送-创建任务响应","time":"2026-06-03T13:24:52+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828423056261121 shop_type:5 sign:BBD1BD765F21199C9FA3943BCE5AAFCA task_count:2 task_type:7] shop_id:2026828423056261121 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828423056261121","shop_type":"5","sign":"BBD1BD765F21199C9FA3943BCE5AAFCA","task_count":"2","task_type":"7"},"shop_id":2026828423056261121,"source":"批量推送-发起创建任务请求","time":"2026-06-03T13:24:52+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2062042813002891266","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2062042813002891266 data_type:string msg:成功 shop_id:2026828423056261121 source:批量推送-创建任务响应]","shop_id":2026828423056261121,"source":"批量推送-创建任务响应","time":"2026-06-03T13:24:52+08:00"} +{"error":"查询失败: record not found","level":"error","msg":"","product_id":33,"source":"批量推送-查询库存明细失败","time":"2026-06-03T13:24:52+08:00"} +{"error":"查询失败: record not found","level":"error","msg":"","product_id":34,"source":"批量推送-查询库存明细失败","time":"2026-06-03T13:24:52+08:00"} +{"level":"info","msg":"map[product_ids:[33 34] shop_ids:[2058054283306110978 2026828423056261121] shop_types:[2 5] source:批量推送-入口 user_id:1965254774327533570]","product_ids":[33,34],"shop_ids":[2058054283306110978,2026828423056261121],"shop_types":[2,5],"source":"批量推送-入口","time":"2026-06-03T13:29:12+08:00","user_id":1965254774327533570} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2058054283306110978 shop_type:2 sign:43A8457691E7ECEF33FE89C876D6A145 task_count:2 task_type:7] shop_id:2058054283306110978 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2058054283306110978","shop_type":"2","sign":"43A8457691E7ECEF33FE89C876D6A145","task_count":"2","task_type":"7"},"shop_id":2058054283306110978,"source":"批量推送-发起创建任务请求","time":"2026-06-03T13:29:13+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2062043909817581569","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2062043909817581569 data_type:string msg:成功 shop_id:2058054283306110978 source:批量推送-创建任务响应]","shop_id":2058054283306110978,"source":"批量推送-创建任务响应","time":"2026-06-03T13:29:14+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828423056261121 shop_type:5 sign:BBD1BD765F21199C9FA3943BCE5AAFCA task_count:2 task_type:7] shop_id:2026828423056261121 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828423056261121","shop_type":"5","sign":"BBD1BD765F21199C9FA3943BCE5AAFCA","task_count":"2","task_type":"7"},"shop_id":2026828423056261121,"source":"批量推送-发起创建任务请求","time":"2026-06-03T13:29:14+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2062043911986036738","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2062043911986036738 data_type:string msg:成功 shop_id:2026828423056261121 source:批量推送-创建任务响应]","shop_id":2026828423056261121,"source":"批量推送-创建任务响应","time":"2026-06-03T13:29:14+08:00"} +{"level":"error","msg":"","product_id":33,"source":"批量推送-库存明细不存在","time":"2026-06-03T13:29:15+08:00"} +{"level":"error","msg":"","product_id":34,"source":"批量推送-库存明细不存在","time":"2026-06-03T13:29:15+08:00"} +{"level":"info","msg":"map[product_ids:[33 34] shop_ids:[2058054283306110978 2026828423056261121] shop_types:[2 5] source:批量推送-入口 user_id:1965254774327533570]","product_ids":[33,34],"shop_ids":[2058054283306110978,2026828423056261121],"shop_types":[2,5],"source":"批量推送-入口","time":"2026-06-03T13:34:23+08:00","user_id":1965254774327533570} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2058054283306110978 shop_type:2 sign:43A8457691E7ECEF33FE89C876D6A145 task_count:2 task_type:7] shop_id:2058054283306110978 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2058054283306110978","shop_type":"2","sign":"43A8457691E7ECEF33FE89C876D6A145","task_count":"2","task_type":"7"},"shop_id":2058054283306110978,"source":"批量推送-发起创建任务请求","time":"2026-06-03T13:34:24+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2062045211993784321","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2062045211993784321 data_type:string msg:成功 shop_id:2058054283306110978 source:批量推送-创建任务响应]","shop_id":2058054283306110978,"source":"批量推送-创建任务响应","time":"2026-06-03T13:34:24+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2026828423056261121 shop_type:5 sign:BBD1BD765F21199C9FA3943BCE5AAFCA task_count:2 task_type:7] shop_id:2026828423056261121 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2026828423056261121","shop_type":"5","sign":"BBD1BD765F21199C9FA3943BCE5AAFCA","task_count":"2","task_type":"7"},"shop_id":2026828423056261121,"source":"批量推送-发起创建任务请求","time":"2026-06-03T13:34:24+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2062045214577475585","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2062045214577475585 data_type:string msg:成功 shop_id:2026828423056261121 source:批量推送-创建任务响应]","shop_id":2026828423056261121,"source":"批量推送-创建任务响应","time":"2026-06-03T13:34:25+08:00"} +{"level":"error","msg":"","product_id":33,"source":"批量推送-库存明细不存在","time":"2026-06-03T13:34:25+08:00"} +{"level":"error","msg":"","product_id":34,"source":"批量推送-库存明细不存在","time":"2026-06-03T13:34:25+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Name\":\"\",\"Barcode\":\"\",\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"StockOperator\":\"%3E\",\"StockValue\":10,\"WarehouseID\":12,\"LocationID\":0,\"Appearance\":0,\"StartStockAt\":0,\"EndStockAt\":0}","source":"分销商品列表异常","time":"2026-06-03T14:16:24+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Name\":\"\",\"Barcode\":\"\",\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"StockOperator\":\"%3E\",\"StockValue\":10,\"WarehouseID\":12,\"LocationID\":0,\"Appearance\":0,\"StartStockAt\":0,\"EndStockAt\":0}","source":"分销商品列表异常","time":"2026-06-03T14:16:37+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Name\":\"\",\"Barcode\":\"\",\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"StockOperator\":\"%3E\",\"StockValue\":10,\"WarehouseID\":12,\"LocationID\":0,\"Appearance\":0,\"StartStockAt\":0,\"EndStockAt\":0}","source":"分销商品列表异常","time":"2026-06-03T14:18:36+08:00"} +{"err_msg":"设备与账号不匹配,请使用已绑定的设备登录","level":"error","msg":"","source":"登录异常","time":"2026-06-03T15:50:18+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Name\":\"\",\"Barcode\":\"\",\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"StockOperator\":\"\",\"StockValue\":0,\"SalePriceOperator\":\"%3E%3D\",\"SalePriceValue\":20,\"WarehouseID\":12,\"LocationID\":0,\"Appearance\":0,\"StartStockAt\":0,\"EndStockAt\":0}","source":"分销商品列表异常","time":"2026-06-03T15:55:56+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Name\":\"\",\"Barcode\":\"\",\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"StockOperator\":\"\",\"StockValue\":0,\"SalePriceOperator\":\"%3E%3D\",\"SalePriceValue\":20,\"WarehouseID\":12,\"LocationID\":0,\"Appearance\":0,\"StartStockAt\":0,\"EndStockAt\":0}","source":"分销商品列表异常","time":"2026-06-03T15:56:16+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Name\":\"\",\"Barcode\":\"\",\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"StockOperator\":\"\",\"StockValue\":0,\"SalePriceOperator\":\"%3E\",\"SalePriceValue\":20,\"WarehouseID\":12,\"LocationID\":0,\"Appearance\":0,\"StartStockAt\":0,\"EndStockAt\":0}","source":"分销商品列表异常","time":"2026-06-03T15:56:22+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Name\":\"\",\"Barcode\":\"\",\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"StockOperator\":\"\",\"StockValue\":0,\"SalePriceOperator\":\"%3E%3D\",\"SalePriceValue\":20,\"WarehouseID\":12,\"LocationID\":0,\"Appearance\":0,\"StartStockAt\":0,\"EndStockAt\":0}","source":"分销商品列表异常","time":"2026-06-03T15:56:34+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Name\":\"\",\"Barcode\":\"\",\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"StockOperator\":\"\",\"StockValue\":0,\"SalePriceOperator\":\"%3E%3D\",\"SalePriceValue\":2000,\"WarehouseID\":12,\"LocationID\":0,\"Appearance\":0,\"StartStockAt\":0,\"EndStockAt\":0}","source":"分销商品列表异常","time":"2026-06-03T15:58:55+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Name\":\"\",\"Barcode\":\"\",\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"StockOperator\":\"\",\"StockValue\":0,\"SalePriceOperator\":\"%3E\",\"SalePriceValue\":1000,\"WarehouseID\":12,\"LocationID\":0,\"Appearance\":0,\"StartStockAt\":0,\"EndStockAt\":0}","source":"分销商品列表异常","time":"2026-06-03T16:00:20+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Name\":\"\",\"Barcode\":\"\",\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"StockOperator\":\"\",\"StockValue\":0,\"SalePriceOperator\":\"%3E\",\"SalePriceValue\":100,\"WarehouseID\":12,\"LocationID\":0,\"Appearance\":0,\"StartStockAt\":0,\"EndStockAt\":0}","source":"分销商品列表异常","time":"2026-06-03T16:00:25+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Name\":\"\",\"Barcode\":\"\",\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"StockOperator\":\"%3E\",\"StockValue\":5,\"SalePriceOperator\":\"\",\"SalePriceValue\":0,\"WarehouseID\":13,\"LocationID\":0,\"Appearance\":0,\"StartStockAt\":0,\"EndStockAt\":0}","source":"分销商品列表异常","time":"2026-06-03T16:02:14+08:00"} +{"err_msg":"设备与账号不匹配,请使用已绑定的设备登录","level":"error","msg":"","source":"登录异常","time":"2026-06-03T16:49:29+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-06-03T17:32:23+08:00"} +{"err_msg":"设备与账号不匹配,请使用已绑定的设备登录","level":"error","msg":"","source":"登录异常","time":"2026-06-04T09:34:41+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Name\":\"\",\"Barcode\":\"\",\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"StockOperator\":\"%3E\",\"StockValue\":10,\"SalePriceOperator\":\"\",\"SalePriceValue\":0,\"WarehouseID\":12,\"LocationID\":0,\"Appearance\":0,\"StartStockAt\":0,\"EndStockAt\":0}","source":"分销商品列表异常","time":"2026-06-04T09:35:36+08:00"} +{"err_msg":"查询总数失败","level":"error","msg":"","request_params":"{\"UserID\":1965254774327533570,\"Page\":1,\"PageSize\":10,\"Keyword\":\"\",\"Name\":\"\",\"Barcode\":\"\",\"StartCreatedAt\":0,\"EndCreatedAt\":0,\"MinSalePrice\":0,\"MaxSalePrice\":0,\"MinStock\":0,\"MaxStock\":0,\"StockOperator\":\"%3E\",\"StockValue\":10,\"SalePriceOperator\":\"\",\"SalePriceValue\":0,\"WarehouseID\":12,\"LocationID\":0,\"Appearance\":0,\"StartStockAt\":0,\"EndStockAt\":0}","source":"分销商品列表异常","time":"2026-06-04T09:35:40+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-06-04T11:27:25+08:00"} +{"err_msg":"设备与账号不匹配,请使用已绑定的设备登录","level":"error","msg":"","source":"登录异常","time":"2026-06-04T11:40:40+08:00"} +{"err_msg":"设备与账号不匹配,请使用已绑定的设备登录","level":"error","msg":"","source":"登录异常","time":"2026-06-04T13:03:42+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-06-04T13:11:10+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-06-04T13:11:11+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-06-04T14:09:39+08:00"} +{"err_msg":"未找到可用库存: record not found","level":"error","msg":"","request_params":"{\"SalesOrderID\":1,\"SalesOrderItemID\":1,\"Remark\":\"测测\"}","source":"盘库退货异常","time":"2026-06-04T14:39:22+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-06-04T14:41:55+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-06-04T14:42:25+08:00"} +{"err_msg":"店铺不存在","level":"error","msg":"","request_params":"{\"ShopID\":2026828096496140300}","source":"获取店铺商品详情异常","time":"2026-06-04T15:40:57+08:00"} +{"err_msg":"店铺不存在","level":"error","msg":"","request_params":"{\"ShopID\":2058054283306111000}","source":"获取店铺商品详情异常","time":"2026-06-04T15:41:02+08:00"} +{"err_msg":"设备与账号不匹配,请使用已绑定的设备登录","level":"error","msg":"","source":"登录异常","time":"2026-06-04T15:55:59+08:00"} +{"err_msg":"未找到该商品在同一仓库下的可用库位,请检查库存","level":"error","msg":"","request_params":"{\"OutOrderItemID\":1,\"Remark\":\"\"}","source":"出库单切换库位异常","time":"2026-06-04T17:35:58+08:00"} +{"err_msg":"未找到该商品在同一仓库下的可用库位,请检查库存","level":"error","msg":"","request_params":"{\"OutOrderItemID\":1,\"Remark\":\"\"}","source":"出库单切换库位异常","time":"2026-06-04T17:36:20+08:00"} +{"err_msg":"出库单明细不存在","level":"error","msg":"","request_params":"{\"OutOrderItemID\":162,\"Remark\":\"\"}","source":"出库单切换库位异常","time":"2026-06-04T17:38:16+08:00"} +{"err_msg":"未找到该商品在同一仓库下的可用库位,请检查库存","level":"error","msg":"","request_params":"{\"OutOrderItemID\":1,\"Remark\":\"\"}","source":"出库单切换库位异常","time":"2026-06-04T17:38:21+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-06-04T18:42:44+08:00"} +{"error":"查询失败: Error 1054 (42S22): Unknown column 'otl.id' in 'having clause'","level":"error","msg":"","source":"查询店铺商品详情","time":"2026-06-05T10:39:47+08:00"} +{"err_msg":"查询店铺商品详情失败","level":"error","msg":"","request_params":"{\"ShopID\":2054805126617468929,\"Status\":1,\"Page\":1,\"PageSize\":20}","source":"获取店铺商品详情异常","time":"2026-06-05T10:39:47+08:00"} +{"err_msg":"用户名或密码错误","level":"error","msg":"","source":"登录异常","time":"2026-06-05T13:10:44+08:00"} +{"err_msg":"波次任务状态不正确,当前状态: 拣货中,只有已创建状态才能绑定出库单","level":"error","msg":"","request_params":"{\"WaveNo\":\"WH20260605-00003\",\"Operator\":\"16816816888\",\"OperatorID\":158,\"Remark\":\"列表选择绑定\"}","source":"绑定出库波次异常","time":"2026-06-05T13:50:25+08:00"} +{"err_msg":"仓库不存在","level":"error","msg":"","request_params":"{\"code\":\"A6-3-1\"}","source":"获取库位ID异常","time":"2026-06-05T13:53:21+08:00"} +{"err_msg":"库存不存在: 商品ID=603","level":"error","msg":"","request_params":"{\"OutboundOrderID\":17,\"WaveTaskID\":123,\"Force\":0,\"Items\":[{\"ProductID\":603,\"LocationID\":11,\"BatchNo\":\"TD202606031555402935\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交出库异常","time":"2026-06-05T13:53:40+08:00"} +{"err_msg":"库存不存在: 商品ID=1027","level":"error","msg":"","request_params":"{\"OutboundOrderID\":17,\"WaveTaskID\":123,\"Force\":0,\"Items\":[{\"ProductID\":1027,\"LocationID\":31,\"BatchNo\":\"TD202606031555402935\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交出库异常","time":"2026-06-05T13:54:14+08:00"} +{"err_msg":"库存不存在: 商品ID=1027","level":"error","msg":"","request_params":"{\"OutboundOrderID\":17,\"WaveTaskID\":123,\"Force\":0,\"Items\":[{\"ProductID\":1027,\"LocationID\":31,\"BatchNo\":\"TD202606031555402935\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交出库异常","time":"2026-06-05T14:07:53+08:00"} +{"err_msg":"库存不存在: 商品ID=1027","level":"error","msg":"","request_params":"{\"OutboundOrderID\":17,\"WaveTaskID\":123,\"Force\":0,\"Items\":[{\"ProductID\":1027,\"LocationID\":31,\"BatchNo\":\"TD202606031555402935\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交出库异常","time":"2026-06-05T15:47:28+08:00"} +{"err_msg":"库存不存在: 商品ID=1027","level":"error","msg":"","request_params":"{\"OutboundOrderID\":17,\"WaveTaskID\":123,\"Force\":0,\"Items\":[{\"ProductID\":1027,\"LocationID\":31,\"BatchNo\":\"TD202606031555402935\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交出库异常","time":"2026-06-05T15:50:02+08:00"} +{"err_msg":"库存不存在: 商品ID=1027","level":"error","msg":"","request_params":"{\"OutboundOrderID\":17,\"WaveTaskID\":123,\"Force\":0,\"Items\":[{\"ProductID\":1027,\"LocationID\":31,\"BatchNo\":\"TD202606031555402935\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交出库异常","time":"2026-06-05T15:51:40+08:00"} +{"err_msg":"库存不存在: 商品ID=1027","level":"error","msg":"","request_params":"{\"OutboundOrderID\":17,\"WaveTaskID\":123,\"Force\":0,\"Items\":[{\"ProductID\":1027,\"LocationID\":31,\"BatchNo\":\"TD202606031555402935\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交出库异常","time":"2026-06-05T15:52:22+08:00"} +{"err_msg":"库存明细不存在: 商品ID=1027, 库位ID=31","level":"error","msg":"","request_params":"{\"OutboundOrderID\":17,\"WaveTaskID\":123,\"Force\":0,\"Items\":[{\"ProductID\":1027,\"LocationID\":31,\"BatchNo\":\"TD202606031555402935\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交出库异常","time":"2026-06-05T15:53:16+08:00"} +{"err_msg":"库存明细不存在: 商品ID=1027, 库位ID=31","level":"error","msg":"","request_params":"{\"OutboundOrderID\":17,\"WaveTaskID\":123,\"Force\":0,\"Items\":[{\"ProductID\":1027,\"LocationID\":31,\"BatchNo\":\"TD202606031555402935\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交出库异常","time":"2026-06-05T15:54:04+08:00"} +{"err_msg":"库存明细不存在: 商品ID=1027, 库位ID=31","level":"error","msg":"","request_params":"{\"OutboundOrderID\":17,\"WaveTaskID\":123,\"Force\":0,\"Items\":[{\"ProductID\":1027,\"LocationID\":31,\"BatchNo\":\"TD202606031555402935\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交出库异常","time":"2026-06-05T15:57:10+08:00"} +{"err_msg":"查询库存明细失败: Error 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? AND production_date = ? AND expiry_date = ? AND is_del = 0 ORDER BY `inventory' at line 1","level":"error","msg":"","request_params":"{\"OutboundOrderID\":17,\"WaveTaskID\":123,\"Force\":0,\"Items\":[{\"ProductID\":1027,\"LocationID\":31,\"BatchNo\":\"TD202606031555402935\",\"ProductionDate\":0,\"ExpiryDate\":0,\"Quantity\":1}]}","source":"提交出库异常","time":"2026-06-05T15:58:37+08:00"} +{"err_msg":"波次任务状态不正确,当前状态: 已完成,只有已创建状态才能绑定出库单","level":"error","msg":"","request_params":"{\"WaveNo\":\"WH20260605-00005\",\"Operator\":\"16816816888\",\"OperatorID\":158,\"Remark\":\"列表选择绑定\"}","source":"绑定出库波次异常","time":"2026-06-05T17:13:58+08:00"} +{"err_msg":"波次任务状态不正确,当前状态: 拣货中,只有已创建状态才能绑定出库单","level":"error","msg":"","request_params":"{\"WaveNo\":\"WH20260605-00002\",\"Operator\":\"16816816888\",\"OperatorID\":158,\"Remark\":\"列表选择绑定\"}","source":"绑定出库波次异常","time":"2026-06-05T17:26:28+08:00"} +{"err_msg":"商品不存在","level":"error","msg":"","request_params":"{\"ID\":1}","source":"商品详情异常","time":"2026-06-05T18:32:29+08:00"} +{"err_msg":"商品不存在","level":"error","msg":"","request_params":"{\"ID\":168}","source":"商品详情异常","time":"2026-06-05T18:33:11+08:00"} +{"err_msg":"商品不存在","level":"error","msg":"","request_params":"{\"ID\":168}","source":"商品详情异常","time":"2026-06-05T18:37:51+08:00"} +{"err_msg":"商品不存在","level":"error","msg":"","request_params":"{\"ID\":168}","source":"商品详情异常","time":"2026-06-05T18:38:00+08:00"} +{"err_msg":"商品不存在","level":"error","msg":"","request_params":"{\"ID\":1}","source":"商品详情异常","time":"2026-06-05T18:38:11+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-06-06T11:14:15+08:00"} +{"level":"info","msg":"map[product_ids:[192] shop_ids:[2031685168119377922] shop_types:[2] source:批量推送-入口 user_id:1965254774327533570]","product_ids":[192],"shop_ids":[2031685168119377922],"shop_types":[2],"source":"批量推送-入口","time":"2026-06-06T14:34:04+08:00","user_id":1965254774327533570} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2031685168119377922 shop_type:2 sign:BBD0D1147DDD5FDB536974F90D37333E task_count:1 task_type:7] shop_id:2031685168119377922 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2031685168119377922","shop_type":"2","sign":"BBD0D1147DDD5FDB536974F90D37333E","task_count":"1","task_type":"7"},"shop_id":2031685168119377922,"source":"批量推送-发起创建任务请求","time":"2026-06-06T14:34:21+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: No connection could be made because the target machine actively refused it.","level":"error","msg":"","shop_id":2031685168119377922,"source":"批量推送-创建外部任务失败","time":"2026-06-06T14:34:23+08:00"} +{"level":"error","msg":"","product_ids":[192],"shop_ids":[2031685168119377922],"shop_types":[2],"source":"批量推送-没有成功创建任何任务","task_count":1,"time":"2026-06-06T14:34:23+08:00","user_id":1965254774327533570} +{"err_msg":"没有成功创建任何任务","level":"error","msg":"","request_params":"{\"user_id\":1965254774327533570,\"shop_ids\":[2031685168119377922],\"shop_types\":[2],\"product_ids\":[192]}","source":"批量推送异常","time":"2026-06-06T14:34:23+08:00"} +{"level":"info","msg":"map[product_ids:[192] shop_ids:[2031685168119377922] shop_types:[2] source:批量推送-入口 user_id:1965254774327533570]","product_ids":[192],"shop_ids":[2031685168119377922],"shop_types":[2],"source":"批量推送-入口","time":"2026-06-06T14:35:55+08:00","user_id":1965254774327533570} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2031685168119377922 shop_type:2 sign:BBD0D1147DDD5FDB536974F90D37333E task_count:1 task_type:7] shop_id:2031685168119377922 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2031685168119377922","shop_type":"2","sign":"BBD0D1147DDD5FDB536974F90D37333E","task_count":"1","task_type":"7"},"shop_id":2031685168119377922,"source":"批量推送-发起创建任务请求","time":"2026-06-06T14:35:55+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2063147857819406337","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2063147857819406337 data_type:string msg:成功 shop_id:2031685168119377922 source:批量推送-创建任务响应]","shop_id":2031685168119377922,"source":"批量推送-创建任务响应","time":"2026-06-06T14:35:56+08:00"} +{"level":"info","msg":"map[product_ids:[190] shop_ids:[2031685168119377922] shop_types:[2] source:批量推送-入口 user_id:1965254774327533570]","product_ids":[190],"shop_ids":[2031685168119377922],"shop_types":[2],"source":"批量推送-入口","time":"2026-06-06T14:37:44+08:00","user_id":1965254774327533570} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2031685168119377922 shop_type:2 sign:BBD0D1147DDD5FDB536974F90D37333E task_count:1 task_type:7] shop_id:2031685168119377922 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2031685168119377922","shop_type":"2","sign":"BBD0D1147DDD5FDB536974F90D37333E","task_count":"1","task_type":"7"},"shop_id":2031685168119377922,"source":"批量推送-发起创建任务请求","time":"2026-06-06T14:37:45+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2063148315925483521","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2063148315925483521 data_type:string msg:成功 shop_id:2031685168119377922 source:批量推送-创建任务响应]","shop_id":2031685168119377922,"source":"批量推送-创建任务响应","time":"2026-06-06T14:37:45+08:00"} +{"err_msg":"查询波次任务列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"TaskNo\":\"\",\"TaskType\":0,\"Status\":0,\"AssigneeID\":0,\"WaveNo\":\"\"}","source":"波次任务列表异常","time":"2026-06-07T18:03:28+08:00"} +{"err_msg":"查询波次任务列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"TaskNo\":\"\",\"TaskType\":0,\"Status\":0,\"AssigneeID\":0,\"WaveNo\":\"\"}","source":"波次任务列表异常","time":"2026-06-07T18:03:28+08:00"} +{"err_msg":"查询波次任务列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"TaskNo\":\"\",\"TaskType\":0,\"Status\":0,\"AssigneeID\":0,\"WaveNo\":\"\"}","source":"波次任务列表异常","time":"2026-06-07T18:03:32+08:00"} +{"err_msg":"查询波次任务列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"TaskNo\":\"\",\"TaskType\":0,\"Status\":0,\"AssigneeID\":0,\"WaveNo\":\"\"}","source":"波次任务列表异常","time":"2026-06-07T18:03:57+08:00"} +{"err_msg":"查询波次任务列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"TaskNo\":\"\",\"TaskType\":0,\"Status\":0,\"AssigneeID\":0,\"WaveNo\":\"\"}","source":"波次任务列表异常","time":"2026-06-07T18:03:57+08:00"} +{"err_msg":"查询波次任务列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"TaskNo\":\"\",\"TaskType\":0,\"Status\":0,\"AssigneeID\":0,\"WaveNo\":\"\"}","source":"波次任务列表异常","time":"2026-06-07T18:03:58+08:00"} +{"err_msg":"查询波次任务列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"TaskNo\":\"\",\"TaskType\":0,\"Status\":0,\"AssigneeID\":0,\"WaveNo\":\"\"}","source":"波次任务列表异常","time":"2026-06-07T18:03:58+08:00"} +{"err_msg":"查询波次任务列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"TaskNo\":\"\",\"TaskType\":0,\"Status\":0,\"AssigneeID\":0,\"WaveNo\":\"\"}","source":"波次任务列表异常","time":"2026-06-07T18:03:58+08:00"} +{"err_msg":"查询波次任务列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"TaskNo\":\"\",\"TaskType\":0,\"Status\":0,\"AssigneeID\":0,\"WaveNo\":\"\"}","source":"波次任务列表异常","time":"2026-06-07T18:03:58+08:00"} +{"err_msg":"查询波次任务列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"TaskNo\":\"\",\"TaskType\":0,\"Status\":0,\"AssigneeID\":0,\"WaveNo\":\"\"}","source":"波次任务列表异常","time":"2026-06-07T18:04:30+08:00"} +{"err_msg":"查询波次任务列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"TaskNo\":\"\",\"TaskType\":0,\"Status\":0,\"AssigneeID\":0,\"WaveNo\":\"\"}","source":"波次任务列表异常","time":"2026-06-07T18:04:31+08:00"} +{"err_msg":"查询波次任务列表失败","level":"error","msg":"","request_params":"{\"Page\":1,\"PageSize\":10,\"TaskNo\":\"\",\"TaskType\":0,\"Status\":0,\"AssigneeID\":0,\"WaveNo\":\"\"}","source":"波次任务列表异常","time":"2026-06-07T18:05:09+08:00"} +{"err_msg":"发货单不存在","level":"error","msg":"","request_params":"{\"id\":1}","source":"发货单详情异常","time":"2026-06-07T18:45:44+08:00"} diff --git a/runtime/logs/work/err.log202606090000 b/runtime/logs/work/err.log202606090000 new file mode 100644 index 0000000..0cc858b --- /dev/null +++ b/runtime/logs/work/err.log202606090000 @@ -0,0 +1,32 @@ +{"err_msg":"用户名或密码错误","level":"error","msg":"","source":"登录异常","time":"2026-06-09T13:14:13+08:00"} +{"err_msg":"第4列表头不匹配:期望'货号[新]',实际'ISBN'","level":"error","msg":"","source":"商品导入-解析Excel失败","time":"2026-06-09T13:14:59+08:00"} +{"err_msg":"用户名或密码错误","level":"error","msg":"","source":"登录异常","time":"2026-06-10T11:44:12+08:00"} +{"err_msg":"运送范围数据格式错误","level":"error","msg":"","request_params":"{\"TemplateName\":\"测试创建\",\"DeliveryProvince\":\"辽宁省\",\"DeliveryCity\":\"鞍山市\",\"DeliveryArea\":\"千山区\",\"DeliveryAddress\":\"汤岗子\",\"PricingMethod\":\"2\",\"Shipping\":\"0\",\"FirWbv\":0,\"FirPrice\":1,\"ContinueWbv\":0,\"ContinuePrice\":0,\"Contact\":\"yyy\",\"PhoneNumber\":13434343434,\"FullAddress\":\"详细地址\",\"ShippingRange\":\"{\\\"河北\\\":[1,\\\"\\\",1,\\\"\\\"],\\\"北京、天津\\\":[1,\\\"\\\",1,\\\"\\\"],\\\"上海、江苏、浙江、安徽、江西、山西、山东、内蒙古、湖南、湖北、河南、广东、广西、福建、海南、辽宁、吉林、黑龙江、陕西、重庆、云南、贵州、四川\\\":[1,\\\"\\\",1,\\\"\\\"],\\\"甘肃、宁夏、青海\\\":[1,\\\"\\\",1,\\\"\\\"],\\\"新疆、西藏\\\":[1,\\\"\\\",1,\\\"\\\"],\\\"香港、澳门、台湾、海外\\\":[1,\\\"\\\",1,\\\"\\\"]}\",\"WarehouseId\":0,\"Remark\":\"\",\"Status\":\"0\"}","source":"创建物流模板异常","time":"2026-06-10T14:21:35+08:00"} +{"err_msg":"运送范围数据格式错误","level":"error","msg":"","request_params":"{\"TemplateName\":\"测试创建\",\"DeliveryProvince\":\"辽宁省\",\"DeliveryCity\":\"鞍山市\",\"DeliveryArea\":\"千山区\",\"DeliveryAddress\":\"汤岗子\",\"PricingMethod\":\"2\",\"Shipping\":\"0\",\"FirWbv\":0,\"FirPrice\":1,\"ContinueWbv\":0,\"ContinuePrice\":0,\"Contact\":\"yyy\",\"PhoneNumber\":13434343434,\"FullAddress\":\"详细地址\",\"ShippingRange\":\"{\\\"河北\\\":[1,\\\"\\\",1,\\\"\\\"],\\\"北京、天津\\\":[1,\\\"\\\",1,\\\"\\\"],\\\"上海、江苏、浙江、安徽、江西、山西、山东、内蒙古、湖南、湖北、河南、广东、广西、福建、海南、辽宁、吉林、黑龙江、陕西、重庆、云南、贵州、四川\\\":[1,\\\"\\\",1,\\\"\\\"],\\\"甘肃、宁夏、青海\\\":[1,\\\"\\\",1,\\\"\\\"],\\\"新疆、西藏\\\":[1,\\\"\\\",1,\\\"\\\"],\\\"香港、澳门、台湾、海外\\\":[1,\\\"\\\",1,\\\"\\\"]}\",\"WarehouseId\":0,\"Remark\":\"\",\"Status\":\"0\"}","source":"创建物流模板异常","time":"2026-06-10T14:21:49+08:00"} +{"level":"info","msg":"map[product_ids:[1404] shop_ids:[2057330299266637825 2057339418178461698 2057348311659028482 2057706682434097153 2060899384650850306] shop_types:[2 5 1 1 2] source:批量推送-入口 user_id:2057328211086254081]","product_ids":[1404],"shop_ids":[2057330299266637825,2057339418178461698,2057348311659028482,2057706682434097153,2060899384650850306],"shop_types":[2,5,1,1,2],"source":"批量推送-入口","time":"2026-06-11T15:06:02+08:00","user_id":2057328211086254081} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2057330299266637825 shop_type:2 sign:E32E7FD1F00A374DD157344EC500F490 task_count:1 task_type:7] shop_id:2057330299266637825 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2057330299266637825","shop_type":"2","sign":"E32E7FD1F00A374DD157344EC500F490","task_count":"1","task_type":"7"},"shop_id":2057330299266637825,"source":"批量推送-发起创建任务请求","time":"2026-06-11T15:06:20+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: No connection could be made because the target machine actively refused it.","level":"error","msg":"","shop_id":2057330299266637825,"source":"批量推送-创建外部任务失败","time":"2026-06-11T15:06:22+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2057339418178461698 shop_type:5 sign:66C2823AF875BB144C525BE09EBA092F task_count:1 task_type:7] shop_id:2057339418178461698 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2057339418178461698","shop_type":"5","sign":"66C2823AF875BB144C525BE09EBA092F","task_count":"1","task_type":"7"},"shop_id":2057339418178461698,"source":"批量推送-发起创建任务请求","time":"2026-06-11T15:06:22+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: No connection could be made because the target machine actively refused it.","level":"error","msg":"","shop_id":2057339418178461698,"source":"批量推送-创建外部任务失败","time":"2026-06-11T15:06:24+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2057348311659028482 shop_type:1 sign:827BF121D40E4C13A51B862853B2672D task_count:1 task_type:7] shop_id:2057348311659028482 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2057348311659028482","shop_type":"1","sign":"827BF121D40E4C13A51B862853B2672D","task_count":"1","task_type":"7"},"shop_id":2057348311659028482,"source":"批量推送-发起创建任务请求","time":"2026-06-11T15:06:24+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: No connection could be made because the target machine actively refused it.","level":"error","msg":"","shop_id":2057348311659028482,"source":"批量推送-创建外部任务失败","time":"2026-06-11T15:06:26+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2057706682434097153 shop_type:1 sign:B15C04C60C56C346C4926F2015599C37 task_count:1 task_type:7] shop_id:2057706682434097153 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2057706682434097153","shop_type":"1","sign":"B15C04C60C56C346C4926F2015599C37","task_count":"1","task_type":"7"},"shop_id":2057706682434097153,"source":"批量推送-发起创建任务请求","time":"2026-06-11T15:06:26+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: No connection could be made because the target machine actively refused it.","level":"error","msg":"","shop_id":2057706682434097153,"source":"批量推送-创建外部任务失败","time":"2026-06-11T15:06:28+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2060899384650850306 shop_type:2 sign:2999FF42BCDCD9AF03ED8D0AAD69BEC6 task_count:1 task_type:7] shop_id:2060899384650850306 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2060899384650850306","shop_type":"2","sign":"2999FF42BCDCD9AF03ED8D0AAD69BEC6","task_count":"1","task_type":"7"},"shop_id":2060899384650850306,"source":"批量推送-发起创建任务请求","time":"2026-06-11T15:06:28+08:00","url":"http://192.168.101.156:8080/task/create"} +{"error":"请求失败: send request error: Post \"http://192.168.101.156:8080/task/create\": dial tcp 192.168.101.156:8080: connectex: No connection could be made because the target machine actively refused it.","level":"error","msg":"","shop_id":2060899384650850306,"source":"批量推送-创建外部任务失败","time":"2026-06-11T15:06:30+08:00"} +{"level":"error","msg":"","product_ids":[1404],"shop_ids":[2057330299266637825,2057339418178461698,2057348311659028482,2057706682434097153,2060899384650850306],"shop_types":[2,5,1,1,2],"source":"批量推送-没有成功创建任何任务","task_count":1,"time":"2026-06-11T15:06:30+08:00","user_id":2057328211086254081} +{"err_msg":"没有成功创建任何任务","level":"error","msg":"","request_params":"{\"user_id\":2057328211086254081,\"shop_ids\":[2057330299266637825,2057339418178461698,2057348311659028482,2057706682434097153,2060899384650850306],\"shop_types\":[2,5,1,1,2],\"product_ids\":[1404]}","source":"批量推送异常","time":"2026-06-11T15:06:30+08:00"} +{"level":"info","msg":"map[product_ids:[1404] shop_ids:[2057330299266637825 2057339418178461698 2057348311659028482 2057706682434097153 2060899384650850306] shop_types:[2 5 1 1 2] source:批量推送-入口 user_id:2057328211086254081]","product_ids":[1404],"shop_ids":[2057330299266637825,2057339418178461698,2057348311659028482,2057706682434097153,2060899384650850306],"shop_types":[2,5,1,1,2],"source":"批量推送-入口","time":"2026-06-11T15:07:13+08:00","user_id":2057328211086254081} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2057330299266637825 shop_type:2 sign:E32E7FD1F00A374DD157344EC500F490 task_count:1 task_type:7] shop_id:2057330299266637825 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2057330299266637825","shop_type":"2","sign":"E32E7FD1F00A374DD157344EC500F490","task_count":"1","task_type":"7"},"shop_id":2057330299266637825,"source":"批量推送-发起创建任务请求","time":"2026-06-11T15:08:32+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2064968004511080449","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2064968004511080449 data_type:string msg:成功 shop_id:2057330299266637825 source:批量推送-创建任务响应]","shop_id":2057330299266637825,"source":"批量推送-创建任务响应","time":"2026-06-11T15:08:33+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2057339418178461698 shop_type:5 sign:66C2823AF875BB144C525BE09EBA092F task_count:1 task_type:7] shop_id:2057339418178461698 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2057339418178461698","shop_type":"5","sign":"66C2823AF875BB144C525BE09EBA092F","task_count":"1","task_type":"7"},"shop_id":2057339418178461698,"source":"批量推送-发起创建任务请求","time":"2026-06-11T15:08:33+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2064968005744205826","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2064968005744205826 data_type:string msg:成功 shop_id:2057339418178461698 source:批量推送-创建任务响应]","shop_id":2057339418178461698,"source":"批量推送-创建任务响应","time":"2026-06-11T15:08:33+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2057348311659028482 shop_type:1 sign:827BF121D40E4C13A51B862853B2672D task_count:1 task_type:7] shop_id:2057348311659028482 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2057348311659028482","shop_type":"1","sign":"827BF121D40E4C13A51B862853B2672D","task_count":"1","task_type":"7"},"shop_id":2057348311659028482,"source":"批量推送-发起创建任务请求","time":"2026-06-11T15:08:33+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2064968008030101506","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2064968008030101506 data_type:string msg:成功 shop_id:2057348311659028482 source:批量推送-创建任务响应]","shop_id":2057348311659028482,"source":"批量推送-创建任务响应","time":"2026-06-11T15:08:33+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2057706682434097153 shop_type:1 sign:B15C04C60C56C346C4926F2015599C37 task_count:1 task_type:7] shop_id:2057706682434097153 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2057706682434097153","shop_type":"1","sign":"B15C04C60C56C346C4926F2015599C37","task_count":"1","task_type":"7"},"shop_id":2057706682434097153,"source":"批量推送-发起创建任务请求","time":"2026-06-11T15:08:33+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2064968010391494658","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2064968010391494658 data_type:string msg:成功 shop_id:2057706682434097153 source:批量推送-创建任务响应]","shop_id":2057706682434097153,"source":"批量推送-创建任务响应","time":"2026-06-11T15:08:34+08:00"} +{"level":"info","msg":"map[params:map[img_type:2 shop_id:2060899384650850306 shop_type:2 sign:2999FF42BCDCD9AF03ED8D0AAD69BEC6 task_count:1 task_type:7] shop_id:2060899384650850306 source:批量推送-发起创建任务请求 url:http://192.168.101.156:8080/task/create]","params":{"img_type":"2","shop_id":"2060899384650850306","shop_type":"2","sign":"2999FF42BCDCD9AF03ED8D0AAD69BEC6","task_count":"1","task_type":"7"},"shop_id":2060899384650850306,"source":"批量推送-发起创建任务请求","time":"2026-06-11T15:08:34+08:00","url":"http://192.168.101.156:8080/task/create"} +{"code":"200","data":"2064968011616231425","data_type":"string","fields.msg":"成功","level":"info","msg":"map[code:200 data:2064968011616231425 data_type:string msg:成功 shop_id:2060899384650850306 source:批量推送-创建任务响应]","shop_id":2060899384650850306,"source":"批量推送-创建任务响应","time":"2026-06-11T15:08:34+08:00"} +{"level":"error","msg":"","product_id":1404,"source":"批量推送-仓库未绑定运费模板","time":"2026-06-11T15:09:51+08:00","warehouse":"测试"} +{"err_msg":"波次状态不正确,当前状态: 已完成","level":"error","msg":"","request_params":"{\"WaveID\":57,\"CarID\":0,\"CarCode\":0,\"RelatedOrderID\":215,\"Assignee\":\"\",\"AssigneeId\":0,\"Items\":null}","source":"提交出库波次异常","time":"2026-06-12T15:11:14+08:00"} +{"err_msg":"用户不存在","level":"error","msg":"","source":"登录异常","time":"2026-06-13T11:57:54+08:00"} diff --git a/service/barcode.go b/service/barcode.go new file mode 100644 index 0000000..3768682 --- /dev/null +++ b/service/barcode.go @@ -0,0 +1,185 @@ +package service + +import ( + "bytes" + "encoding/base64" + "fmt" + "image" + "image/color" + "image/draw" + "image/png" + "os" + systemRes "psi/models/response" + "strings" + + "github.com/boombuler/barcode" + "github.com/boombuler/barcode/code128" + "golang.org/x/image/font" + "golang.org/x/image/font/opentype" + "golang.org/x/image/math/fixed" +) + +type BarcodeService struct{} + +// Config 条形码配置 +type Config struct { + BarcodeHeight int + ModuleWidth int + Padding int + FontPath string + FontSize float64 + BgColor color.Color + BarColor color.Color +} + +// GenerateBarcode 根据货号生成条形码图片(Base64) +func (s *BarcodeService) GenerateBarcode(content string) (systemRes.BarcodeResponse, error) { + // 配置参数 + config := &Config{ + BarcodeHeight: 120, + ModuleWidth: 2, + Padding: 20, + FontPath: "fonts/youaimoshouheiti-regular.ttf", + FontSize: 50, + BgColor: color.White, + BarColor: color.Black, + } + + // 若内容包含isbn,则使用较小字号且不加粗 + if strings.Contains(strings.ToLower(content), "9787") { + config.FontSize = 35 + } + + // 生成条形码图片的Base64 + base64Image, err := generateBase64Barcode(content, config) + if err != nil { + return systemRes.BarcodeResponse{}, fmt.Errorf("生成条形码失败: %w", err) + } + + return systemRes.BarcodeResponse{ + ImageBase64: base64Image, + Content: content, + }, nil +} + +func generateBase64Barcode(content string, config *Config) (string, error) { + // 1. 生成条形码图像 + barcodeImg, err := generateBarcodeImage(content, config) + if err != nil { + return "", err + } + + barcodeBounds := barcodeImg.Bounds() + barcodeWidth := barcodeBounds.Dx() + barcodeHeight := barcodeBounds.Dy() + + // 2. 加载字体 + face, err := loadFont(config) + if err != nil { + return "", err + } + defer face.Close() + + // 3. 获取文字度量信息 + metrics := face.Metrics() + ascent := metrics.Ascent.Ceil() + descent := metrics.Descent.Ceil() + textHeight := ascent + descent + + // 计算文字宽度 + drawer := &font.Drawer{Face: face} + advance := drawer.MeasureString(content) + textWidth := advance.Ceil() + + // 4. 计算最终图片尺寸 + gapBetween := 12 + textBottomPadding := 12 + + maxContentWidth := barcodeWidth + if textWidth > maxContentWidth { + maxContentWidth = textWidth + } + finalWidth := maxContentWidth + config.Padding*2 + finalHeight := barcodeHeight + gapBetween + textHeight + config.Padding*2 + textBottomPadding + + // 5. 创建最终图片 + finalImg := image.NewRGBA(image.Rect(0, 0, finalWidth, finalHeight)) + draw.Draw(finalImg, finalImg.Bounds(), &image.Uniform{config.BgColor}, image.Point{}, draw.Src) + + // 6. 绘制条形码(居中) + barcodeStartX := (finalWidth - barcodeWidth) / 2 + barcodeStartY := config.Padding + draw.Draw(finalImg, + image.Rect(barcodeStartX, barcodeStartY, barcodeStartX+barcodeWidth, barcodeStartY+barcodeHeight), + barcodeImg, + image.Point{}, + draw.Over) + + // 7. 绘制货号文字(居中,加粗字体) + textAreaTop := barcodeStartY + barcodeHeight + gapBetween + textAreaHeight := textHeight + textBottomPadding + baselineY := textAreaTop + (textAreaHeight / 2) + (ascent / 2) - 2 + + textX := (finalWidth - textWidth) / 2 + if textX < 0 { + textX = config.Padding + } + + textDrawer := &font.Drawer{ + Dst: finalImg, + Src: image.NewUniform(config.BarColor), + Face: face, + Dot: fixed.Point26_6{ + X: fixed.I(textX), + Y: fixed.I(baselineY), + }, + } + textDrawer.DrawString(content) + + // 8. 转换为Base64 + buf := new(bytes.Buffer) + if err := png.Encode(buf, finalImg); err != nil { + return "", err + } + + return base64.StdEncoding.EncodeToString(buf.Bytes()), nil +} + +// generateBarcodeImage 生成条形码图像 +func generateBarcodeImage(content string, config *Config) (image.Image, error) { + // 使用Code128编码 + code128Barcode, err := code128.Encode(content) + if err != nil { + return nil, fmt.Errorf("编码失败: %w", err) + } + + rawBounds := code128Barcode.Bounds() + rawWidth := rawBounds.Dx() + targetWidth := rawWidth * config.ModuleWidth + targetHeight := config.BarcodeHeight + + return barcode.Scale(code128Barcode, targetWidth, targetHeight) +} + +// loadFont 加载加粗TrueType字体 +func loadFont(config *Config) (font.Face, error) { + fontBytes, err := os.ReadFile(config.FontPath) + if err != nil { + return nil, fmt.Errorf("读取字体文件失败: %w", err) + } + + parsedFont, err := opentype.Parse(fontBytes) + if err != nil { + return nil, fmt.Errorf("解析字体失败: %w", err) + } + + face, err := opentype.NewFace(parsedFont, &opentype.FaceOptions{ + Size: config.FontSize, + DPI: 96, + Hinting: font.HintingFull, + }) + if err != nil { + return nil, fmt.Errorf("创建字体失败: %w", err) + } + return face, nil +} diff --git a/service/book.go b/service/book.go new file mode 100644 index 0000000..11c3830 --- /dev/null +++ b/service/book.go @@ -0,0 +1,190 @@ +package service + +import ( + "crypto/md5" + "encoding/hex" + "encoding/json" + "fmt" + "gorm.io/datatypes" + "io" + "net/http" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "strconv" + "strings" +) + +type BookService struct{} + +// GetBookInfo 获取图书信息 +func (s *BookService) GetBookInfo(req systemReq.BookRequest) (*systemRes.ESBook, error) { + // 调用ES接口 + isbn := req.Isbn + apiURL := fmt.Sprintf("https://book.center.yushutx.com/api/es/searchByISBNtoPsi?isbn=%s", isbn) + resp, err := http.Get(apiURL) + if err != nil { + return nil, fmt.Errorf("[ERROR] 请求 ES 接口失败:%v\n", err) + } + + body, err := io.ReadAll(resp.Body) + resp.Body.Close() + + if err != nil { + return nil, fmt.Errorf("[ERROR] 读取响应失败:%v\n", err) + } + + var esResp systemRes.GetEsBookResponse + if err := json.Unmarshal(body, &esResp); err != nil { + return nil, fmt.Errorf("[ERROR] 解析响应失败:%v\n", err) + } + // 如果ES接口没有返回数据,返回空对象 + if esResp.Data.BookName.Value == "" && esResp.Data.ISBN == "" { + return nil, nil + } + + return &esResp.Data, nil +} + +func (s *BookService) GetSuitBook(req systemReq.BookRequest) (*systemRes.SuitBookResponse, error) { + var books []models.BookInfo + if err := database.DB.Where("isbn = ? AND type IN (2, 3)", req.Isbn).Find(&books).Error; err != nil { + return nil, fmt.Errorf("[ERROR] 查询书籍信息失败:%v\n", err) + } + + if len(books) == 0 { + return nil, nil + } + + response := &systemRes.SuitBookResponse{ + WithFid: make([]models.BookInfo, 0), + WithoutFid: make([]models.BookInfo, 0), + } + + for _, book := range books { + if book.Fid == 0 { + response.WithoutFid = append(response.WithoutFid, book) + } else { + response.WithFid = append(response.WithFid, book) + } + } + + return response, nil +} + +func (s *BookService) GetProCode(req systemReq.GetCodeRequest) (string, error) { + input := req.BookName + req.Author + req.Publisher + hash := md5.Sum([]byte(input)) + hexStr := hex.EncodeToString(hash[:]) + code := hexStr[:19] + return strings.ToUpper(code), nil +} + +func (s *BookService) SyncBook(req systemReq.AddBookRequest) (int64, string, error) { + if req.Fid == 0 { + var existingBook models.BookInfo + err := database.DB.Where("fid = 0 AND isbn = ?", req.Isbn).First(&existingBook).Error + + if err == nil { + return existingBook.ID, fmt.Sprintf("%s-%s", req.Isbn, req.FIsbn), nil + } + } + + bookID, err := s.doBook(req) + if err != nil { + return 0, "", fmt.Errorf("[ERROR] 保存书籍信息失败:%v\n", err) + } + return bookID, fmt.Sprintf("%s-%s", req.Isbn, req.FIsbn), nil +} + +// GetNoIsbnBook 获取无书号书籍 +func (s *BookService) GetNoIsbnBook(req systemReq.GetNoIsbnBookRequest) (*systemRes.NoIsbnBookResponse, error) { + query := database.DB.Model(&models.BookInfo{}).Where("type = ?", 4) + + if req.BookName != "" { + query = query.Where("book_name LIKE ?", "%"+req.BookName+"%") + } + + if req.Author != "" { + query = query.Where("author LIKE ?", "%"+req.Author+"%") + } + + if req.Publisher != "" { + query = query.Where("publishing LIKE ?", "%"+req.Publisher+"%") + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, fmt.Errorf("查询无书号书总数失败: %v", err) + } + + var books []models.BookInfo + if err := query.Order("id DESC").Find(&books).Error; err != nil { + return nil, fmt.Errorf("查询无书号书列表失败: %v", err) + } + + if books == nil { + books = make([]models.BookInfo, 0) + } + + return &systemRes.NoIsbnBookResponse{ + Total: total, + List: books, + }, nil +} + +func (s *BookService) doBook(data systemReq.AddBookRequest) (int64, error) { + var liveImage datatypes.JSON + if len(data.LiveImage) > 0 { + jsonBytes, _ := json.Marshal(data.LiveImage) + liveImage = jsonBytes + } else { + liveImage = datatypes.JSON("[]") + } + catIdByJson := datatypes.JSON(`{"xian_yu_cat_id": "", "kong_fu_zi_cat_id": "", "pin_duo_duo_cat_id": ""}`) + + book := models.BookInfo{ + Fid: data.Fid, + Type: data.Type, + ISBN: data.Isbn, + FISBN: data.FIsbn, + BookName: data.BookName, + FBookName: data.FBookName, + Author: data.Author, + Publishing: data.Publisher, + PublicationTime: data.PublicationTime, + Binding: data.BindingLayout, + PagesCount: data.PageCount, + WordsCount: data.WordCount, + Format: data.BookFormat, + Price: data.FixPrice, + CatID: catIdByJson, + LiveImage: liveImage, + } + bookID, err := s.createBook(book) + if err != nil { + return 0, err + } + return bookID, nil +} + +func (s *BookService) createBook(book models.BookInfo) (int64, error) { + if err := database.DB.Create(&book).Error; err != nil { + return 0, fmt.Errorf("创建书籍信息失败:%w", err) + } + return book.ID, nil +} + +func (s *BookService) parseIntOrString(value string) int { + value = strings.TrimSpace(value) + if value == "" { + return 0 + } + + intVal, err := strconv.Atoi(value) + if err != nil { + return 0 + } + return intVal +} diff --git a/service/cancel_logistics.go b/service/cancel_logistics.go new file mode 100644 index 0000000..0daec8c --- /dev/null +++ b/service/cancel_logistics.go @@ -0,0 +1,76 @@ +package service + +import ( + "bytes" + "encoding/json" + "io" + "mime/multipart" + "net/http" + "psi/database" + "psi/models" + "time" + + "github.com/pkg/errors" +) + +type CancelLogisticsService struct{} + +// CancelLogisticsResponse 取消物流接口返回 +type CancelLogisticsResponse struct { + Msg string `json:"msg"` + Code string `json:"code"` +} + +// CancelLogistics 取消物流单号 +func (s *CancelLogisticsService) CancelLogistics(userID int64, logisticsNo string) (*CancelLogisticsResponse, error) { + // 1. 调用外部接口取消物流单号 + var buf bytes.Buffer + w := multipart.NewWriter(&buf) + if err := w.WriteField("mailNo", logisticsNo); err != nil { + return nil, errors.Wrap(err, "构造请求参数失败") + } + w.Close() + + resp, err := http.Post("http://119.45.237.193:8073/api/print/cancelBmOrderApi", w.FormDataContentType(), &buf) + if err != nil { + return nil, errors.Wrap(err, "调用取消物流接口失败") + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, errors.Wrap(err, "读取响应失败") + } + + var cancelResp CancelLogisticsResponse + if err := json.Unmarshal(body, &cancelResp); err != nil { + return nil, errors.Wrap(err, "解析响应失败") + } + + // 2. code 不是 200 直接返回 + if cancelResp.Code != "200" { + return &cancelResp, nil + } + + // 3. code == 200: 连接租户库,清空对应物流信息 + tenantDB, err := database.GetTenantDB(userID) + if err != nil { + return nil, errors.Wrap(err, "获取租户数据库连接失败") + } + + now := time.Now().Unix() + result := tenantDB.Model(&models.SalesOrderItem{}). + Where("logistics_no = ? AND is_del = ?", logisticsNo, 0). + Updates(map[string]interface{}{ + "logistics_company": "", + "logistics_no": "", + "updated_at": now, + }) + if result.Error != nil { + return nil, errors.Wrap(result.Error, "清空物流信息失败") + } + + _ = result.RowsAffected // 不影响返回,仅用于调试 + + return &cancelResp, nil +} diff --git a/service/car.go b/service/car.go new file mode 100644 index 0000000..4f32b14 --- /dev/null +++ b/service/car.go @@ -0,0 +1,488 @@ +package service + +import ( + "errors" + "fmt" + "gorm.io/gorm" + "psi/constant" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "strconv" + "time" +) + +type CarService struct{} + +func (s *CarService) GetCarList(req systemReq.QueryCarRequest, db ...*gorm.DB) ([]systemRes.CarResponse, int64, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.Car{}).Where("is_del = ?", 0) + + if req.Keyword != "" { + query = query.Where("code like ? OR name like ?", "%"+req.Keyword+"%", "%"+req.Keyword+"%") + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, 0, errors.New("查询小车总数失败") + } + + var cars []models.Car + offset := (req.Page - 1) * req.PageSize + if err := query.Order("id DESC").Offset(offset).Limit(req.PageSize).Find(&cars).Error; err != nil { + return nil, 0, errors.New("查询小车列表失败") + } + + responses := make([]systemRes.CarResponse, 0, len(cars)) + for _, car := range cars { + resp := systemRes.ConvertCarToResponse(car) + + var carShops []models.CarShop + if err := databaseConn.Where("car_id = ? AND is_del = ?", car.ID, 0).Find(&carShops).Error; err == nil { + shops := make([]systemRes.CarShopInfo, 0, len(carShops)) + for _, cs := range carShops { + shops = append(shops, systemRes.CarShopInfo{ + ShopID: strconv.FormatInt(cs.ShopID, 10), + ShopName: cs.ShopName, + ShopType: cs.ShopType, + ShopTypeText: getShopTypeText(cs.ShopType), + }) + } + resp.Shops = shops + } + + responses = append(responses, resp) + } + + return responses, total, nil +} + +func (s *CarService) GetCarByID(id int64, db ...*gorm.DB) (*systemRes.CarResponse, error) { + databaseConn := database.OptionalDB(db...) + + var car models.Car + if err := databaseConn.Where("id = ? AND is_del = ?", id, 0).First(&car).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, errors.New("小车不存在") + } + return nil, errors.New("查询小车失败") + } + + resp := systemRes.ConvertCarToResponse(car) + + var carShops []models.CarShop + if err := databaseConn.Where("car_id = ? AND is_del = ?", car.ID, 0).Find(&carShops).Error; err == nil { + shops := make([]systemRes.CarShopInfo, 0, len(carShops)) + for _, cs := range carShops { + shops = append(shops, systemRes.CarShopInfo{ + ShopID: strconv.FormatInt(cs.ShopID, 10), + ShopName: cs.ShopName, + ShopType: cs.ShopType, + ShopTypeText: getShopTypeText(cs.ShopType), + }) + } + resp.Shops = shops + } + + return &resp, nil +} + +func (s *CarService) CreateCar(req systemReq.CreateCarRequest, id int64, db ...*gorm.DB) (int64, error) { + databaseConn := database.OptionalDB(db...) + + var count int64 + databaseConn.Model(&models.Car{}). + Where("code = ? AND is_del = ?", req.Code, 0). + Count(&count) + if count > 0 { + return 0, errors.New("小车编号已存在") + } + + var warehouse models.Warehouse + if err := databaseConn.Where("id = ? AND is_del = ?", req.WarehouseID, 0).First(&warehouse).Error; err != nil { + return 0, errors.New("仓库不存在") + } + + car := models.Car{ + WarehouseID: req.WarehouseID, + PushType: req.PushType, + ReleaseType: req.ReleaseType, + Code: req.Code, + Name: req.Name, + Capacity: req.Capacity, + Appearance: req.Appearance, + CreatedAt: time.Now().Unix(), + UpdatedAt: time.Now().Unix(), + IsDel: 0, + } + + if err := databaseConn.Create(&car).Error; err != nil { + return 0, errors.New("创建小车失败") + } + + // 处理店铺绑定 + if len(req.ShopInfo) > 0 { + if err := s.bindShopsToCar(car.ID, id, req.ShopInfo, databaseConn); err != nil { + return 0, err + } + } + + return car.ID, nil +} + +func (s *CarService) UpdateCar(req systemReq.UpdateCarRequest, id int64, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + var car models.Car + if err := databaseConn.Where("id = ? AND is_del = ?", req.ID, 0).First(&car).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return errors.New("小车不存在") + } + return errors.New("查询小车失败") + } + + updates := make(map[string]interface{}) + updates["updated_at"] = time.Now().Unix() + + if req.Name != "" { + updates["name"] = req.Name + } + + if req.Capacity != nil { + updates["capacity"] = *req.Capacity + } + + if req.Appearance != nil { + updates["appearance"] = *req.Appearance + } + + if req.PushType != nil { + updates["push_type"] = *req.PushType + } + + if req.ReleaseType != nil { + updates["release_type"] = *req.ReleaseType + } + + if err := databaseConn.Model(&car).Updates(updates).Error; err != nil { + return errors.New("更新小车失败") + } + + // 处理店铺绑定 + if len(req.ShopInfo) > 0 { + if err := s.bindShopsToCar(car.ID, id, req.ShopInfo, databaseConn); err != nil { + return err + } + } + + return nil +} + +func (s *CarService) DeleteCar(id int64, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + if id == 0 { + return errors.New("小车ID不能为空") + } + + var car models.Car + if err := databaseConn.Where("id = ? AND is_del = ?", id, 0).First(&car).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return errors.New("小车不存在") + } + return errors.New("查询小车失败") + } + + var taskCount int64 + if err := databaseConn.Model(&models.WaveTask{}).Where("car_id = ? AND is_del = ? AND status NOT IN (?, ?)", + id, 0, constant.WaveStatusCompleted, constant.WaveStatusCancelled).Count(&taskCount).Error; err != nil { + return errors.New("查询任务状态失败") + } + + if taskCount > 0 { + return errors.New("该小车存在未完成的任务,无法删除") + } + + now := time.Now().Unix() + + tx := databaseConn.Begin() + if tx.Error != nil { + return errors.New("开启事务失败") + } + + if err := tx.Model(&car).Updates(map[string]interface{}{ + "is_del": 1, + "updated_at": now, + }).Error; err != nil { + tx.Rollback() + return errors.New("删除小车失败") + } + + if err := tx.Model(&models.CarShop{}).Where("car_id = ? AND is_del = ?", id, 0).Updates(map[string]interface{}{ + "is_del": 1, + "updated_at": now, + }).Error; err != nil { + tx.Rollback() + return errors.New("删除小车店铺绑定关系失败") + } + + if err := tx.Commit().Error; err != nil { + return errors.New("提交事务失败") + } + + return nil +} + +// bindShopsToCar 处理小车与店铺的绑定关系(新增/更新时调用) +func (s *CarService) bindShopsToCar(carID, id int64, info []map[string]interface{}, db *gorm.DB) error { + // 获取当前已存在的绑定关系 + var existingBindings []models.CarShop + if err := db.Where("car_id = ? AND is_del = ?", carID, 0).Find(&existingBindings).Error; err != nil { + return errors.New("查询现有绑定关系失败") + } + + // 构建已存在店铺ID的集合 + existingShopIDs := make(map[int64]bool) + for _, binding := range existingBindings { + existingShopIDs[binding.ShopID] = true + } + + // 构建传入的店铺ID集合 + newShopIDs := make(map[int64]bool) + currentTime := time.Now().Unix() + + for _, shopInfo := range info { + shopIDStr := getStringFromInfo(shopInfo, "id") + if shopIDStr == "" { + continue + } + + var shopID int64 + fmt.Sscanf(shopIDStr, "%d", &shopID) + if shopID == 0 { + continue + } + newShopIDs[shopID] = true + } + + // 判断是否需要更新:如果两个集合完全相同,则不需要操作 + if len(existingShopIDs) == len(newShopIDs) { + sameCount := 0 + for shopID := range existingShopIDs { + if newShopIDs[shopID] { + sameCount++ + } + } + if sameCount == len(existingShopIDs) { + return nil + } + } + + // 找出需要删除的店铺(在旧列表中但不在新列表中) + var toDeleteShopIDs []int64 + for shopID := range existingShopIDs { + if !newShopIDs[shopID] { + toDeleteShopIDs = append(toDeleteShopIDs, shopID) + } + } + + // 删除不在新列表中的绑定关系 + if len(toDeleteShopIDs) > 0 { + if err := db.Model(&models.CarShop{}). + Where("car_id = ? AND shop_id IN ? AND is_del = ?", carID, toDeleteShopIDs, 0). + Update("is_del", 1).Error; err != nil { + return errors.New("删除店铺绑定关系失败") + } + } + + // 找出需要新增的店铺绑定(在新列表中但不在旧列表中) + var newBindings []models.CarShop + for _, shopInfo := range info { + shopIDStr := getStringFromInfo(shopInfo, "id") + if shopIDStr == "" { + continue + } + + var shopID int64 + fmt.Sscanf(shopIDStr, "%d", &shopID) + if shopID == 0 { + continue + } + + // 如果已经存在,则跳过 + if existingShopIDs[shopID] { + continue + } + + // 获取店铺信息 + var shop models.Shop + err := db.Where("id = ? AND del_flag = ?", shopID, 0).First(&shop).Error + + if err != nil { + // 使用新创建的店铺数据创建绑定关系 + shopTypeStr := getStringFromInfo(shopInfo, "shop_type") + var shopType int8 = 1 + if shopTypeStr != "" { + fmt.Sscanf(shopTypeStr, "%d", &shopType) + } + + shopStatusStr := getStringFromInfo(shopInfo, "status") + var shopStatus int8 = 1 + if shopTypeStr != "" { + fmt.Sscanf(shopStatusStr, "%d", &shopStatus) + } + + shopMallIdStr := getStringFromInfo(shopInfo, "mall_id") + var shopMallId int64 = 1 + if shopMallIdStr != "" { + fmt.Sscanf(shopMallIdStr, "%d", &shopMallId) + } + // 店铺不存在,先同步创建店铺 + newShop := models.Shop{ + ID: shopID, + MallID: shopMallId, + ShopType: shopType, + ShopAliasName: getStringFromInfo(shopInfo, "shop_alias_name"), + Status: shopStatus, + DelFlag: 0, + CreateTime: currentTime, + UpdateTime: currentTime, + CreateBy: id, + UpdateBy: 0, + } + + if err := db.Create(&newShop).Error; err != nil { + return errors.New("同步创建店铺失败") + } + + newBinding := models.CarShop{ + CarID: carID, + ShopID: shopID, + ShopName: getStringFromInfo(shopInfo, "shop_alias_name"), + ShopType: shopType, + CreatedAt: currentTime, + UpdatedAt: currentTime, + IsDel: 0, + } + newBindings = append(newBindings, newBinding) + } else { + // 使用店铺表中的数据创建绑定关系 + newBinding := models.CarShop{ + CarID: carID, + ShopID: shopID, + ShopName: shop.ShopAliasName, + ShopType: shop.ShopType, + CreatedAt: currentTime, + UpdatedAt: currentTime, + IsDel: 0, + } + newBindings = append(newBindings, newBinding) + } + } + + // 批量创建新的绑定关系 + if len(newBindings) > 0 { + if err := db.Create(&newBindings).Error; err != nil { + return errors.New("创建店铺绑定关系失败") + } + } + + return nil +} + +// GetCarCapacityByID 根据小车ID查询容量 +func (s *CarService) GetCarCapacityByID(carID int64, db ...*gorm.DB) (int64, error) { + databaseConn := database.OptionalDB(db...) + + if carID <= 0 { + return 0, errors.New("小车ID无效") + } + + var car models.Car + if err := databaseConn.Where("id = ? AND is_del = ?", carID, 0).Select("capacity").First(&car).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return 0, errors.New("小车不存在或已删除") + } + return 0, errors.New("查询小车容量失败") + } + + if car.Capacity <= 0 { + return 0, errors.New("小车容量配置不正确") + } + + return car.Capacity, nil +} + +// 辅助函数:从 info map 中安全获取 string 类型值 +func getStringFromInfo(info map[string]interface{}, key string) string { + if info == nil { + return "" + } + if val, ok := info[key]; ok { + if str, ok := val.(string); ok { + return str + } + } + return "" +} + +// 辅助函数:从 info map 中安全获取 int64 类型值 +func getInt64FromInfo(info map[string]interface{}, key string) int64 { + if info == nil { + return 0 + } + if val, ok := info[key]; ok { + switch v := val.(type) { + case float64: + return int64(v) + case int64: + return v + case int: + return int64(v) + } + } + return 0 +} + +// 辅助函数:从 info map 中安全获取 int8 类型值 +func getInt8FromInfo(info map[string]interface{}, key string, defaultVal int8) int8 { + if info == nil { + return defaultVal + } + if val, ok := info[key]; ok { + switch v := val.(type) { + case float64: + return int8(v) + case int64: + return int8(v) + case int: + return int8(v) + case int8: + return v + } + } + return defaultVal +} + +// getShopTypeText 获取店铺类型文本描述 +func getShopTypeText(shopType int8) string { + switch shopType { + case 1: + return "拼多多" + case 2: + return "孔夫子" + case 5: + return "闲鱼" + default: + return "未知" + } +} diff --git a/service/config.go b/service/config.go new file mode 100644 index 0000000..55998a3 --- /dev/null +++ b/service/config.go @@ -0,0 +1,152 @@ +package service + +import ( + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + "time" + + "gorm.io/gorm" +) + +type ConfigService struct{} + +// GetConfigList 获取配置列表 +func (s *ConfigService) GetConfigList(req systemReq.GetConfigListRequest, db ...*gorm.DB) (*systemRes.ConfigListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.Config{}).Where("is_del = ?", 0) + + if req.Keyword != "" { + query = query.Where("`key` like ?", "%"+req.Keyword+"%") + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + var configs []models.Config + offset := (req.Page - 1) * req.PageSize + if err := query.Order("created_at DESC").Offset(offset).Limit(req.PageSize).Find(&configs).Error; err != nil { + return nil, utils.NewError("查询配置列表失败") + } + + var configItems []systemRes.ConfigItem + for _, config := range configs { + configItems = append(configItems, systemRes.ConvertConfigToItem(config)) + } + + return &systemRes.ConfigListResponse{ + List: configItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetConfigDetail 获取配置详情 +func (s *ConfigService) GetConfigDetail(id int64, db ...*gorm.DB) (*models.Config, error) { + databaseConn := database.OptionalDB(db...) + + var config models.Config + + result := databaseConn.Where("id = ? AND is_del = ?", id, 0).First(&config) + if result.Error != nil { + return nil, utils.NewError("配置不存在") + } + + return &config, nil +} + +// CreateConfig 创建配置 +func (s *ConfigService) CreateConfig(req systemReq.AddConfigRequest, db ...*gorm.DB) (int64, error) { + databaseConn := database.OptionalDB(db...) + + var count int64 + databaseConn.Model(&models.Config{}).Where("`key` = ? AND is_del = ?", req.Key, 0).Count(&count) + if count > 0 { + return 0, utils.NewError("配置键已存在") + } + + now := time.Now().Unix() + config := models.Config{ + Key: req.Key, + Value: req.Value, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := databaseConn.Create(&config).Error; err != nil { + return 0, utils.NewError("创建配置失败: " + err.Error()) + } + + return config.ID, nil +} + +// UpdateConfig 更新配置 +func (s *ConfigService) UpdateConfig(req systemReq.UpdateConfigRequest, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + var config models.Config + result := databaseConn.Where("id = ? AND is_del = ?", req.ID, 0).First(&config) + if result.Error != nil { + return utils.NewError("配置不存在") + } + + if req.Key != "" && req.Key != config.Key { + var count int64 + databaseConn.Model(&models.Config{}).Where("`key` = ? AND id != ? AND is_del = ?", req.Key, req.ID, 0).Count(&count) + if count > 0 { + return utils.NewError("配置键已存在") + } + } + + updateData := make(map[string]interface{}) + updateData["updated_at"] = time.Now().Unix() + + if req.Key != "" { + updateData["key"] = req.Key + } + if req.Value != "" { + updateData["value"] = req.Value + } + + if err := databaseConn.Model(&config).Updates(updateData).Error; err != nil { + return utils.NewError("更新配置失败: " + err.Error()) + } + + return nil +} + +// DeleteConfig 删除配置(逻辑删除) +func (s *ConfigService) DeleteConfig(req systemReq.DeleteConfigRequest, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + var config models.Config + result := databaseConn.Where("id = ? AND is_del = ?", req.ID, 0).First(&config) + if result.Error != nil { + return utils.NewError("配置不存在") + } + + updateData := map[string]interface{}{ + "is_del": 1, + "updated_at": time.Now().Unix(), + } + + if err := databaseConn.Model(&config).Updates(updateData).Error; err != nil { + return utils.NewError("删除配置失败: " + err.Error()) + } + + return nil +} diff --git a/service/employee.go b/service/employee.go new file mode 100644 index 0000000..25e6f13 --- /dev/null +++ b/service/employee.go @@ -0,0 +1,839 @@ +package service + +import ( + "encoding/json" + "fmt" + "github.com/gin-gonic/gin" + "psi/config" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + "strconv" + "time" +) + +type EmployeeService struct{} + +// Login 管理员登录 +func (s *EmployeeService) Login(req systemReq.LoginRequest, userType string, c *gin.Context) (*systemRes.LoginResponse, error) { + var employee models.Employee + + result := database.DB.Where("username = ? AND deleted_at = ?", req.Username, 0).First(&employee) + if result.Error != nil { + return nil, utils.NewError("用户不存在") + } else if employee.Status != 1 { + return nil, utils.NewError("用户被禁用") + } else if employee.Fid != 0 { + var parentEmployeeLevel models.EmployeeLevel + if err := database.DB.Where("emp_id = ? AND is_del = ?", employee.Fid, 0).First(&parentEmployeeLevel).Error; err != nil { + return nil, utils.NewError("未找到主账号的等级信息") + } + // 检查主账号是否已过期 + now := time.Now().Unix() + if parentEmployeeLevel.ExpireTime < now { + return nil, utils.NewError("主账号已过期,子账号无法登录") + } + if employee.ExpireTime > 0 && employee.ExpireTime < now { + return nil, utils.NewError("子账号已过期,无法登录") + } + } + + if req.Type == 1 { + expectedRole := 255 + if userType == "128" { + expectedRole = 128 + } + + if employee.Role != int64(expectedRole) { + return nil, utils.NewError("账号类型不匹配") + } + } + + if !utils.CheckPasswordHash(req.Password, employee.Password) { + return nil, utils.NewError("用户名或密码错误") + } + + ip := utils.GetClientIP(c) + now := time.Now().Unix() + updates := map[string]interface{}{ + "last_login_at": now, + "last_login_ip": ip, + } + //if req.Type != 1 { + // if employee.Code != "" && employee.Code != req.Code { + // return nil, utils.NewError("设备与账号不匹配,请使用已绑定的设备登录") + // } else if employee.Code == "" && req.Code != "" { + // updates["code"] = req.Code + // } + //} + updates["code"] = req.Code + // 处理租户ID + aboutID := req.AboutID + if aboutID == 0 { + aboutID = employee.AboutId + } + + // 如果有租户ID,确保租户数据库存在 + if aboutID > 0 { + if _, err := database.GetTenantDB(aboutID); err != nil { + return nil, utils.NewError("租户数据库初始化失败: " + err.Error()) + } + } + + token, err := utils.GenerateJWT(employee.ID, employee.Username, employee.Role, aboutID) + if err != nil { + return nil, utils.NewError("生成令牌失败") + } + + database.DB.Model(&employee).Updates(updates) + + // 查询员工等级信息 + var levelInfo *systemRes.EmployeeLevelInfo + var employeeLevel models.EmployeeLevel + levelResult := database.DB.Where("emp_id = ? AND is_del = ?", employee.ID, 0).First(&employeeLevel) + if levelResult.Error == nil { + levelInfo = &systemRes.EmployeeLevelInfo{ + Level: employeeLevel.Level, + MaxNum: employeeLevel.MaxNum, + ExpireTime: employeeLevel.ExpireTime, + PayTime: employeeLevel.PayTime, + } + } + + return &systemRes.LoginResponse{ + ID: employee.ID, + EmployeeID: employee.EmployeeIDStr, + Fid: employee.Fid, + AboutId: strconv.FormatInt(employee.AboutId, 10), + Username: employee.Username, + Name: employee.Name, + Role: employee.Role, + Score: employee.Score, + From: employee.From, + Token: token, + ExpireIn: config.AppConfig.JWT.ExpireHours, + LevelInfo: levelInfo, + }, nil +} + +// GetCurrentUser 获取当前用户信息 +func (s *EmployeeService) GetCurrentUser(adminID int64) (*models.Employee, error) { + var employee models.Employee + + result := database.DB.Where("id = ? AND deleted_at = ?", adminID, 0).First(&employee) + if result.Error != nil { + return nil, utils.NewError("用户不存在") + } + + return &employee, nil +} + +// GetEmployeeList 获取员工列表 +func (s *EmployeeService) GetEmployeeList(req systemReq.GetEmployeeListRequest, id, about_id int64) (*systemRes.EmployeeListResponse, error) { + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + type EmployeeWithRelations struct { + models.Employee + Settings string `gorm:"column:settings"` + LevelID int64 `gorm:"column:level_id"` + LevelLevel int8 `gorm:"column:level_level"` + MaxNum int64 `gorm:"column:max_num"` + LevelPayTime int64 `gorm:"column:level_pay_time"` + LevelExpireTime int64 `gorm:"column:level_expire_time"` + UserTypeID int8 `gorm:"column:user_type_id"` + UserTypeName string `gorm:"column:user_type_name"` + UserTypeIcon string `gorm:"column:user_type_icon"` + } + query := database.DB.Table("employees"). + Select("employees.*, employees_settings.settings, employees_level.id as level_id, employees_level.level as level_level, employees_level.max_num, employees_level.pay_time as level_pay_time, employees_level.expire_time as level_expire_time, user_type.id as user_type_id, user_type.name as user_type_name, user_type.icon as user_type_icon"). + Joins("LEFT JOIN employees_settings ON employees.id = employees_settings.emp_id AND employees_settings.is_del = 0"). + Joins("LEFT JOIN employees_level ON employees.id = employees_level.emp_id AND employees_level.is_del = 0"). + Joins("LEFT JOIN user_type ON employees.type_id = user_type.id AND user_type.deleted_at = 0"). + Where("employees.deleted_at = ?", 0) + + if about_id > 0 { + query = query.Where("employees.fid = ?", id) + } else if req.Fid != 0 { + query = query.Where("employees.fid = ?", req.Fid) + } + if req.Status != "" { + query = query.Where("employees.status = ?", req.Status) + } + if req.Keyword != "" { + query = query.Where("(employees.employee_id_str = ? OR employees.name LIKE ? OR employees.username LIKE ?)", + req.Keyword, "%"+req.Keyword+"%", "%"+req.Keyword+"%") + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + var employeesWithRelations []EmployeeWithRelations + offset := (req.Page - 1) * req.PageSize + if err := query.Order("employees.created_at DESC").Offset(offset).Limit(req.PageSize).Find(&employeesWithRelations).Error; err != nil { + return nil, utils.NewError("查询员工列表失败") + } + + var employeeItems []systemRes.EmployeeItem + for _, emp := range employeesWithRelations { + item := systemRes.ConvertEmployeeToItem(emp.Employee) + + // 添加设置信息 + var settingsConfig models.EmployeeSettingsConfig + if emp.Settings != "" { + if err := json.Unmarshal([]byte(emp.Settings), &settingsConfig); err != nil { + settingsConfig = models.GetDefaultEmployeeSettingsConfig() + } + } else { + settingsConfig = models.GetDefaultEmployeeSettingsConfig() + } + item.Settings = settingsConfig + + // 添加等级信息 + if emp.LevelID > 0 { + item.LevelInfo = &systemRes.EmployeeLevelInfo{ + Level: emp.LevelLevel, + MaxNum: emp.MaxNum, + ExpireTime: emp.LevelExpireTime, + PayTime: emp.LevelPayTime, + } + } + + // 添加账号类型信息 + if emp.UserTypeID > 0 { + item.UserType = &systemRes.UserTypeInfo{ + ID: int64(emp.UserTypeID), + Name: emp.UserTypeName, + Icon: emp.UserTypeIcon, + } + } + + employeeItems = append(employeeItems, item) + } + + return &systemRes.EmployeeListResponse{ + List: employeeItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// AddEmployee 添加员工 +func (s *EmployeeService) AddEmployee(req systemReq.AddEmployeeRequest) (*systemRes.AddEmployeeResponse, error) { + var lastEmployee models.Employee + var newEmployeeID string + seq := 1 + + if err := database.DB.Order("employee_id_str DESC").First(&lastEmployee).Error; err == nil { + if len(lastEmployee.EmployeeIDStr) == 5 { + if parsedSeq, err := strconv.Atoi(lastEmployee.EmployeeIDStr); err == nil { + seq = parsedSeq + 1 + } + } + } + + newEmployeeID = utils.GenerateEmployeeID(seq) + username := utils.GenerateUsername(newEmployeeID) + // 如果用户指定了用户名,直接使用 + if req.UserName != "" { + username = req.UserName + // 检查指定的用户名是否已存在 + var count int64 + database.DB.Model(&models.Employee{}).Where("username = ? AND deleted_at = 0", username).Count(&count) + if count > 0 { + return nil, utils.NewError("用户名已存在") + } + } else { + // 自动生成用户名,确保唯一性 + for i := 0; i < 100; i++ { + var count int64 + database.DB.Model(&models.Employee{}).Where("username = ? AND deleted_at = 0", username).Count(&count) + if count == 0 { + break + } + seq++ + newEmployeeID = utils.GenerateEmployeeID(seq) + username = utils.GenerateUsername(newEmployeeID) + } + + // 最后再检查一次,确保生成的用户名确实不存在 + var finalCount int64 + database.DB.Model(&models.Employee{}).Where("username = ? AND deleted_at = 0", username).Count(&finalCount) + if finalCount > 0 { + return nil, utils.NewError("无法生成唯一的用户名,请稍后重试") + } + } + + // 如果是创建子账号,检查主账号的子账号数量限制 + if req.Fid != 0 { + var parentEmployeeLevel models.EmployeeLevel + if err := database.DB.Where("emp_id = ? AND is_del = ?", req.Fid, 0).First(&parentEmployeeLevel).Error; err != nil { + return nil, utils.NewError("未找到主账号的等级信息") + } + + // 检查主账号是否已过期 + now := time.Now().Unix() + if parentEmployeeLevel.ExpireTime < now { + return nil, utils.NewError("主账号已过期,无法创建子账号") + } + + // 检查max_num限制,如果max_num为0表示没权限 + if parentEmployeeLevel.MaxNum > 0 { + var currentSubCount int64 + database.DB.Model(&models.Employee{}).Where("fid = ? AND deleted_at = 0", req.Fid).Count(¤tSubCount) + + if currentSubCount >= parentEmployeeLevel.MaxNum { + return nil, utils.NewError(fmt.Sprintf("主账号已达到最大子账号数量限制(%d)", parentEmployeeLevel.MaxNum)) + } + } else { + return nil, utils.NewError("主账号无权限创建子账号") + } + + if parentEmployeeLevel.ExpireTime < req.ExpireTime { + return nil, utils.NewError("子账号的到期时间不能超过主账号的到期时间") + } + } + + hashedPassword, err := utils.HashPassword(req.Password) + if err != nil { + return nil, utils.NewError("密码加密失败") + } + + now := time.Now().Unix() + employee := models.Employee{ + EmployeeIDStr: newEmployeeID, + Username: utils.Ternary(req.UserName == "", username, req.UserName), + Password: hashedPassword, + Name: req.Name, + Phone: req.Phone, + Role: int64(utils.Ternary(req.Fid == 0, 255, 128)), + Fid: req.Fid, + AboutId: req.AboutId, + Score: 0, + Status: 1, + From: utils.Ternary(req.From == "", "system", req.From), + CreatedAt: now, + UpdatedAt: now, + DeletedAt: 0, + ExpireTime: req.ExpireTime, + } + + if err := database.DB.Create(&employee).Error; err != nil { + return nil, utils.NewError("创建员工失败: " + err.Error()) + } + + return &systemRes.AddEmployeeResponse{ + EmployeeID: employee.EmployeeIDStr, + Username: employee.Username, + Name: employee.Name, + }, nil +} + +// UpdatePasswordEmployee 修改员工密码 +func (s *EmployeeService) UpdatePasswordEmployee(req systemReq.UpdatePasswordEmployeeRequest) error { + var employee models.Employee + + result := database.DB.Where("id = ? AND deleted_at = ?", req.Id, 0).First(&employee) + if result.Error != nil { + return utils.NewError("用户不存在") + } else if employee.Status != 1 { + return utils.NewError("用户被禁用") + } else if employee.Fid != 0 { + if employee.AboutId != req.AboutId { + return utils.NewError("子账号所属主账户错误") + } + var parentEmployeeLevel models.EmployeeLevel + if err := database.DB.Where("emp_id = ? AND is_del = ?", employee.Fid, 0).First(&parentEmployeeLevel).Error; err != nil { + return utils.NewError("未找到主账号的等级信息") + } + // 检查主账号是否已过期 + now := time.Now().Unix() + if parentEmployeeLevel.ExpireTime < now { + return utils.NewError("主账号已过期,子账号无法修改") + } + } + + hashedPassword, err := utils.HashPassword(req.Password) + if err != nil { + return utils.NewError("密码加密失败") + } + + if err := database.DB.Model(&employee).Updates(map[string]interface{}{ + "password": hashedPassword, + "updated_at": time.Now().Unix(), + }).Error; err != nil { + return utils.NewError("更新员工信息失败: " + err.Error()) + } + + return nil +} + +// UpdateExpireTimeEmployee 修改员工过期时间 +func (s *EmployeeService) UpdateExpireTimeEmployee(req systemReq.UpdateExpireTimeEmployeeRequest) error { + var employee models.Employee + + result := database.DB.Where("id = ? AND deleted_at = ?", req.Id, 0).First(&employee) + if result.Error != nil { + return utils.NewError("用户不存在") + } else if employee.Status != 1 { + return utils.NewError("用户被禁用") + } else if employee.Fid != 0 { + if employee.AboutId != req.AboutId { + return utils.NewError("子账号所属主账户错误") + } + var parentEmployeeLevel models.EmployeeLevel + if err := database.DB.Where("emp_id = ? AND is_del = ?", employee.Fid, 0).First(&parentEmployeeLevel).Error; err != nil { + return utils.NewError("未找到主账号的等级信息") + } + // 检查主账号是否已过期 + now := time.Now().Unix() + if parentEmployeeLevel.ExpireTime < now { + return utils.NewError("主账号已过期,子账号无法修改") + } + if parentEmployeeLevel.ExpireTime < req.ExpireTime { + return utils.NewError("子账号的到期时间不能超过主账号的到期时间") + } + } + + if err := database.DB.Model(&employee).Updates(map[string]interface{}{ + "expire_time": req.ExpireTime, + "updated_at": time.Now().Unix(), + }).Error; err != nil { + return utils.NewError("更新员工信息失败: " + err.Error()) + } + + return nil +} + +// CheckExpireTimeEmployee 校验员工过期时间 +func (s *EmployeeService) CheckExpireTimeEmployee(id int64) error { + var employee models.Employee + + result := database.DB.Where("id = ? AND deleted_at = ?", id, 0).First(&employee) + if result.Error != nil { + return utils.NewError("用户不存在") + } else if employee.Status != 1 { + return utils.NewError("用户被禁用") + } else { + var parentEmployeeLevel models.EmployeeLevel + if err := database.DB.Where("emp_id = ? AND is_del = ?", employee.Fid, 0).First(&parentEmployeeLevel).Error; err != nil { + return utils.NewError("未找到主账号的等级信息") + } + // 检查主账号是否已过期 + now := time.Now().Unix() + if parentEmployeeLevel.ExpireTime < now { + return utils.NewError("主账号已过期") + } + // 检查子账号是否已过期 + if employee.ExpireTime > 0 && employee.ExpireTime < now { + return utils.NewError("子账号已过期,无法登录") + } + } + + return nil +} + +// CheckCodeEmployee 校验员工过期时间 +func (s *EmployeeService) CheckCodeEmployee(req systemReq.CheckCodeEmployeeRequest) (string, error) { + var employee models.Employee + + result := database.DB.Where("username = ? AND deleted_at = ?", req.UserName, 0).First(&employee) + if result.Error != nil { + return "", utils.NewError("用户不存在") + } else if employee.Status != 1 { + return "", utils.NewError("用户被禁用") + } + + return employee.Code, nil +} + +// ClearCodeEmployee 清除员工机械码 +func (s *EmployeeService) ClearCodeEmployee(req systemReq.ClearCodeEmployeeRequest) error { + var employee models.Employee + + result := database.DB.Where("username = ? AND deleted_at = ?", req.UserName, 0).First(&employee) + if result.Error != nil { + return utils.NewError("用户不存在") + } else if employee.Status != 1 { + return utils.NewError("用户被禁用") + } else if employee.Fid != 0 { + var parentEmployeeLevel models.EmployeeLevel + if err := database.DB.Where("emp_id = ? AND is_del = ?", employee.Fid, 0).First(&parentEmployeeLevel).Error; err != nil { + return utils.NewError("未找到主账号的等级信息") + } + // 检查主账号是否已过期 + now := time.Now().Unix() + if parentEmployeeLevel.ExpireTime < now { + return utils.NewError("主账号已过期,子账号无法修改") + } + } + + if err := database.DB.Model(&employee).Updates(map[string]interface{}{ + "code": "", + "updated_at": time.Now().Unix(), + }).Error; err != nil { + return utils.NewError("更新员工信息失败: " + err.Error()) + } + + return nil +} + +// GetLevelConfig 获取等级配置 +func GetLevelConfig(level int8) interface{} { + configs := map[int8]systemRes.EmployeeLevelConfigResponse{ + 1: { + Level: 1, + MaxNum: 5, + Price: 9800, + LevelName: "基础版(5个子账号,98元/30天)", + }, + 2: { + Level: 2, + MaxNum: 10, + Price: 15600, + LevelName: "专业版(10个子账号,156元/30天)", + }, + 3: { + Level: 3, + MaxNum: 15, + Price: 20500, + LevelName: "企业版(15个子账号,205元/30天)", + }, + 4: { + Level: 4, + MaxNum: 20, + Price: 23500, + LevelName: "旗舰版(20个子账号,235元/30天)", + }, + 5: { + Level: 5, + MaxNum: 25, + Price: 24500, + LevelName: "至尊版(25个子账号,245元/30天)", + }, + } + + if level == 0 { + var allConfigs []systemRes.EmployeeLevelConfigResponse + for i := int8(1); i <= 5; i++ { + allConfigs = append(allConfigs, configs[i]) + } + return allConfigs + } + + if config, exists := configs[level]; exists { + return &config + } + return nil +} + +// SetEmployeeLevel 设置员工等级 +func (s *EmployeeService) SetEmployeeLevel(req systemReq.SetEmployeeLevelRequest, operatorID int64, operatorName string) error { + // 验证等级配置 + levelConfigResult := GetLevelConfig(req.Level) + if levelConfigResult == nil { + return utils.NewError("无效的等级配置") + } + + levelConfig := levelConfigResult.(*systemRes.EmployeeLevelConfigResponse) + + // 验证时长 + if req.Duration <= 0 { + return utils.NewError("时长必须大于0") + } + + // 检查是否已存在等级记录 + var employeeLevel models.EmployeeLevel + err := database.DB.Where("emp_id = ? AND is_del = ?", req.EmpId, 0).First(&employeeLevel).Error + + now := time.Now().Unix() + + // 保存旧数据用于日志记录 + var oldLevel int8 + var oldMaxNum int64 + var oldExpireTime int64 + + switch req.OperationType { + case 1: // 开通 + // 如果已存在记录且未过期,则不允许重复开通 + if err == nil && employeeLevel.ExpireTime > now { + return utils.NewError("该员工等级未过期,无需重复开通") + } + + oldLevel = 0 + oldMaxNum = 0 + oldExpireTime = 0 + + // 计算到期时间(按时长*30天计算) + expireTime := req.PayTime + req.Duration*30*24*3600 + + // 如果记录存在但已过期,更新记录;否则创建新记录 + if err == nil { + // 记录存在但已过期,更新记录 + updateData := map[string]interface{}{ + "level": levelConfig.Level, + "max_num": levelConfig.MaxNum, + "pay_time": req.PayTime, + "expire_time": expireTime, + "updated_at": now, + "is_del": 0, + } + + if err := database.DB.Model(&models.EmployeeLevel{}).Where("emp_id = ? AND is_del = ?", req.EmpId, 0).Updates(updateData).Error; err != nil { + return utils.NewError("更新员工等级记录失败: " + err.Error()) + } + } else { + // 记录不存在,创建新记录 + newEmployeeLevel := models.EmployeeLevel{ + EmpId: req.EmpId, + Level: levelConfig.Level, + MaxNum: levelConfig.MaxNum, + PayTime: req.PayTime, + ExpireTime: expireTime, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := database.DB.Create(&newEmployeeLevel).Error; err != nil { + return utils.NewError("创建员工等级记录失败: " + err.Error()) + } + } + + // 记录开通日志 + operationRemark := fmt.Sprintf("开通%s(等级%d),可创建子账号数量上限:%d,价格:%d元,时长:%d个月,到期时间:%s", + levelConfig.LevelName, levelConfig.Level, levelConfig.MaxNum, (levelConfig.Price*req.Duration)/100, req.Duration, + time.Unix(expireTime, 0).Format("2006-01-02")) + if err := s.createEmployeeLevelLog(req.EmpId, 1, oldLevel, levelConfig.Level, oldMaxNum, levelConfig.MaxNum, oldExpireTime, expireTime, levelConfig.Price*req.Duration, req.PayTime, operatorID, operatorName, operationRemark); err != nil { + return err + } + + case 2: // 升级 + if err != nil { + return utils.NewError("该员工未开通等级,无法升级") + } + + // 检查是否已过期 + if employeeLevel.ExpireTime <= now { + return utils.NewError("该员工等级已过期,请先续费或重新开通") + } + + oldLevel = employeeLevel.Level + oldMaxNum = employeeLevel.MaxNum + oldExpireTime = employeeLevel.ExpireTime + + // 验证是否是升级(新等级必须高于旧等级) + if req.Level <= oldLevel { + return utils.NewError("新等级必须高于当前等级") + } + + // 计算到期时间(从当前到期时间或现在起,按时长*30天计算) + var expireTime int64 + if oldExpireTime > now { + expireTime = oldExpireTime + req.Duration*30*24*3600 + } else { + expireTime = req.PayTime + req.Duration*30*24*3600 + } + + // 更新记录 + updateData := map[string]interface{}{ + "level": levelConfig.Level, + "max_num": levelConfig.MaxNum, + "pay_time": req.PayTime, + "expire_time": expireTime, + "updated_at": now, + } + + if err := database.DB.Model(&models.EmployeeLevel{}).Where("emp_id = ? AND is_del = ?", req.EmpId, 0).Updates(updateData).Error; err != nil { + return utils.NewError("更新员工等级记录失败: " + err.Error()) + } + + // 记录升级日志 + operationRemark := fmt.Sprintf("等级从%d升级到%d(%s),子账号数量上限从%d调整为%d,价格:%d元,时长:%d个月,新到期时间:%s", + oldLevel, levelConfig.Level, levelConfig.LevelName, oldMaxNum, levelConfig.MaxNum, (levelConfig.Price*req.Duration)/100, req.Duration, + time.Unix(expireTime, 0).Format("2006-01-02")) + if err := s.createEmployeeLevelLog(req.EmpId, 2, oldLevel, levelConfig.Level, oldMaxNum, levelConfig.MaxNum, oldExpireTime, expireTime, levelConfig.Price*req.Duration, req.PayTime, operatorID, operatorName, operationRemark); err != nil { + return err + } + + case 3: // 续费 + if err != nil { + return utils.NewError("该员工未开通等级,无法续费") + } + + oldLevel = employeeLevel.Level + oldMaxNum = employeeLevel.MaxNum + oldExpireTime = employeeLevel.ExpireTime + + // 验证续费等级必须与当前等级相同 + if req.Level != oldLevel { + // 获取当前等级对应的等级名称 + oldLevelConfigResult := GetLevelConfig(oldLevel) + oldLevelName := "" + if oldLevelConfigResult != nil { + oldLevelConfig := oldLevelConfigResult.(*systemRes.EmployeeLevelConfigResponse) + oldLevelName = oldLevelConfig.LevelName + } + return utils.NewError(fmt.Sprintf("续费等级必须与当前等级相同,当前等级为%s", oldLevelName)) + } + + // 计算新的到期时间(从当前到期时间或现在起,按时长*30天累加) + var expireTime int64 + if oldExpireTime > now { + expireTime = oldExpireTime + req.Duration*30*24*3600 + } else { + expireTime = req.PayTime + req.Duration*30*24*3600 + } + + // 更新记录(只更新到期时间和支付时间) + updateData := map[string]interface{}{ + "pay_time": req.PayTime, + "expire_time": expireTime, + "updated_at": now, + } + + if err := database.DB.Model(&models.EmployeeLevel{}).Where("emp_id = ? AND is_del = ?", req.EmpId, 0).Updates(updateData).Error; err != nil { + return utils.NewError("续费失败: " + err.Error()) + } + + // 记录续费日志 + operationRemark := fmt.Sprintf("续费%s(等级%d),续费时长:%d个月,价格:%d元,原到期时间:%s,新到期时间:%s", + levelConfig.LevelName, levelConfig.Level, req.Duration, (levelConfig.Price*req.Duration)/100, + time.Unix(oldExpireTime, 0).Format("2006-01-02"), + time.Unix(expireTime, 0).Format("2006-01-02")) + if err := s.createEmployeeLevelLog(req.EmpId, 3, oldLevel, levelConfig.Level, oldMaxNum, levelConfig.MaxNum, oldExpireTime, expireTime, levelConfig.Price*req.Duration, req.PayTime, operatorID, operatorName, operationRemark); err != nil { + return err + } + + default: + return utils.NewError("无效的操作类型") + } + + return nil +} + +// GetEmployeeSettings 获取员工设置 +func (s *EmployeeService) GetEmployeeSettings(req systemReq.GetEmployeeSettingsRequest) *systemRes.EmployeeSettingsResponse { + var employeeSettings models.EmployeeSettings + result := database.DB.Where("emp_id = ?", req.EmpId).First(&employeeSettings) + + if result.Error != nil || result.RowsAffected == 0 { + defaultConfig := models.GetDefaultEmployeeSettingsConfig() + return &systemRes.EmployeeSettingsResponse{ + EmpID: req.EmpId, + Settings: defaultConfig, + } + } + + var config models.EmployeeSettingsConfig + if err := json.Unmarshal([]byte(employeeSettings.Settings), &config); err != nil { + config = models.GetDefaultEmployeeSettingsConfig() + } + + response := systemRes.ConvertEmployeeSettingsToResponse(employeeSettings, config) + return &response +} + +// SaveEmployeeSettings 保存员工设置(新增或更新) +func (s *EmployeeService) SaveEmployeeSettings(req systemReq.SaveEmployeeSettingsRequest) error { + now := time.Now().Unix() + + config := models.EmployeeSettingsConfig{ + ShowPrice: req.ShowPrice, + ShowCategory: req.ShowCategory, + ShowCache: req.ShowCache, + CompareCount: req.CompareCount, + CompareCountEditable: req.CompareCountEditable, + PriceCompare: req.PriceCompare, + PriceValue: req.PriceValue, + PriceEditable: req.PriceEditable, + SellCountCompare: req.SellCountCompare, + SellCountValue: req.SellCountValue, + SellCountEditable: req.SellCountEditable, + BuyCountCompare: req.BuyCountCompare, + BuyCountValue: req.BuyCountValue, + BuyCountEditable: req.BuyCountEditable, + Condition: req.Condition, + ConditionEditable: req.ConditionEditable, + JingpinEnabled: req.JingpinEnabled, + JingpinPriceCompare: req.JingpinPriceCompare, + JingpinPriceValue: req.JingpinPriceValue, + JingpinPriceEditable: req.JingpinPriceEditable, + JingpinSellCountCompare: req.JingpinSellCountCompare, + JingpinSellCountValue: req.JingpinSellCountValue, + JingpinSellCountEditable: req.JingpinSellCountEditable, + JingpinBuyCountCompare: req.JingpinBuyCountCompare, + JingpinBuyCountValue: req.JingpinBuyCountValue, + JingpinBuyCountEditable: req.JingpinBuyCountEditable, + } + + settingsJSON, err := json.Marshal(config) + if err != nil { + return utils.NewError("配置序列化失败: " + err.Error()) + } + + var employeeSettings models.EmployeeSettings + result := database.DB.Where("emp_id = ?", req.EmpId).First(&employeeSettings) + + if result.Error == nil && result.RowsAffected > 0 { + updateData := map[string]interface{}{ + "settings": string(settingsJSON), + "updated_at": now, + } + + if err := database.DB.Model(&employeeSettings).Updates(updateData).Error; err != nil { + return utils.NewError("更新员工设置失败: " + err.Error()) + } + } else { + newSettings := models.EmployeeSettings{ + EmpID: req.EmpId, + Settings: string(settingsJSON), + CreatedAt: now, + UpdatedAt: now, + } + + if err := database.DB.Create(&newSettings).Error; err != nil { + return utils.NewError("创建员工设置失败: " + err.Error()) + } + } + + return nil +} + +// createEmployeeLevelLog 创建员工等级变更日志 +func (s *EmployeeService) createEmployeeLevelLog(empId int64, operationType int8, oldLevel, newLevel int8, oldMaxNum, newMaxNum int64, oldExpireTime, newExpireTime int64, price, payTime int64, operatorID int64, operatorName, remark string) error { + now := time.Now().Unix() + + log := models.EmployeeLevelLog{ + EmpId: empId, + OperationType: operationType, + OldLevel: oldLevel, + NewLevel: newLevel, + OldMaxNum: oldMaxNum, + NewMaxNum: newMaxNum, + OldExpireTime: oldExpireTime, + NewExpireTime: newExpireTime, + Price: price, + PayTime: payTime, + OperatorID: operatorID, + OperatorName: operatorName, + Remark: remark, + CreatedAt: now, + IsDel: 0, + } + + if err := database.DB.Create(&log).Error; err != nil { + return utils.NewError("创建等级变更日志失败: " + err.Error()) + } + + return nil +} diff --git a/service/goods_import.go b/service/goods_import.go new file mode 100644 index 0000000..81c0d76 --- /dev/null +++ b/service/goods_import.go @@ -0,0 +1,470 @@ +package service + +import ( + "encoding/json" + "fmt" + "log" + "strconv" + "strings" + "time" + + "github.com/xuri/excelize/v2" + "gorm.io/datatypes" + "gorm.io/gorm" + + "psi/constant" + "psi/database" + "psi/models" + "psi/models/request" + "psi/utils" +) + +// GoodsImportService 商品导入服务(独立模块,不影响原有代码) +type GoodsImportService struct{} + +// EXCEL_COLUMNS 货号批量修改工具导出的17列(前16列为原表,最后一列"货号[新]"为工具追加) +var EXCEL_COLUMNS = []string{ + "商品编号", "商品名称", "货号", "ISBN", "作者", "出版社", + "商品定价", "商品售价", "商品分类", "本店分类", "品相", "库存", "上书时间", + "商品ID", "店铺ID", "商品图片", "货号[新]", +} + +// ParseGoodsImportExcel 解析上传的 Excel 文件为数据行 +func (s *GoodsImportService) ParseGoodsImportExcel(fileBytes []byte) ([]request.GoodsImportRow, error) { + f, err := excelize.OpenReader(strings.NewReader(string(fileBytes))) + if err != nil { + return nil, fmt.Errorf("读取Excel失败: %v", err) + } + defer f.Close() + + sheet := f.GetSheetName(0) + rows, err := f.GetRows(sheet) + if err != nil { + return nil, fmt.Errorf("获取工作表数据失败: %v", err) + } + + if len(rows) < 2 { + return nil, fmt.Errorf("表格至少需要包含表头和数据行") + } + + // 校验表头 + header := rows[0] + if len(header) < 17 { + return nil, fmt.Errorf("表格列数不足,期望17列,实际%d列", len(header)) + } + for i, expected := range EXCEL_COLUMNS { + actual := strings.TrimSpace(header[i]) + if actual != expected { + return nil, fmt.Errorf("第%d列表头不匹配:期望'%s',实际'%s'", i+1, expected, actual) + } + } + + // 补齐数据列数到17列 + expectedColCount := len(header) + if expectedColCount < 17 { + expectedColCount = 17 + } + + // getCol 安全获取指定列的值 + getCol := func(rowData []string, idx int) string { + if idx < len(rowData) { + return strings.TrimSpace(rowData[idx]) + } + return "" + } + + var result []request.GoodsImportRow + for _, row := range rows[1:] { + if len(row) == 0 { + continue + } + + // 补齐列 + for len(row) < expectedColCount { + row = append(row, "") + } + + goodsName := strings.TrimSpace(row[1]) + huohaoNew := getCol(row, 16) // 货号[新] 在第17列(索引16) + + if goodsName == "" && huohaoNew == "" { + continue // 空行跳过 + } + + result = append(result, request.GoodsImportRow{ + GoodsNo: getCol(row, 0), + GoodsName: goodsName, + Huohao: getCol(row, 2), + HuohaoNew: huohaoNew, + ISBN: getCol(row, 3), + Author: getCol(row, 4), + Publisher: getCol(row, 5), + PriceListing: getCol(row, 6), + PriceSale: getCol(row, 7), + Category: getCol(row, 8), + ShopCategory: getCol(row, 9), + Appearance: getCol(row, 10), + Inventory: getCol(row, 11), + ProductID: getCol(row, 13), + ShopID: getCol(row, 14), + LiveImage: getCol(row, 15), + }) + } + + return result, nil +} + +// ImportGoodsFromExcel 从解析后的数据导入商品 +func (s *GoodsImportService) ImportGoodsFromExcel(userID int64, warehouseID int64, rows []request.GoodsImportRow) (*request.GoodsImportResult, error) { + databaseConn, err := database.GetTenantDB(userID) + if err != nil { + return nil, fmt.Errorf("获取数据库连接失败: %v", err) + } + + result := &request.GoodsImportResult{ + SuccessCount: 0, + FailCount: 0, + FailDetails: make([]string, 0), + } + + if len(rows) == 0 { + return result, nil + } + + now := time.Now().Unix() + + // Step 1: 收集所有货号[新],批量查库位 + huohaoNewSet := make(map[string]bool) + for _, row := range rows { + if h := strings.TrimSpace(row.HuohaoNew); h != "" { + huohaoNewSet[h] = true + } + } + + codes := make([]string, 0, len(huohaoNewSet)) + for code := range huohaoNewSet { + codes = append(codes, code) + } + + var existingLocations []models.Location + if err := databaseConn.Where("warehouse_id = ? AND code IN ? AND is_del = ?", + warehouseID, codes, 0).Find(&existingLocations).Error; err != nil { + return nil, fmt.Errorf("查询库位失败: %v", err) + } + + locationMap := make(map[string]models.Location) + for _, loc := range existingLocations { + locationMap[loc.Code] = loc + } + + // Step 2: 开启事务,逐行处理 + tx := databaseConn.Begin() + defer func() { + if r := recover(); r != nil { + tx.Rollback() + } + }() + + // Step 2.1: 创建入库单(Excel导入直接完成) + receivingNo := utils.GenerateReceivingNo() + batchNo := utils.GenerateExcelImportBatchNo() + receivingOrder := models.ReceivingOrder{ + ReceivingNo: receivingNo, + PurchaseOrderID: 0, + WaveTaskID: 0, + WarehouseID: warehouseID, + SupplierID: 0, + ReceivingDate: now, + Status: constant.ReceivingStatusCompleted, + Operator: "", + OperatorID: userID, + Remark: "Excel批量导入", + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + if err := tx.Create(&receivingOrder).Error; err != nil { + tx.Rollback() + return nil, fmt.Errorf("创建入库单失败: %v", err) + } + + for _, row := range rows { + huohaoNew := strings.TrimSpace(row.HuohaoNew) + if huohaoNew == "" { + result.AddFail(fmt.Sprintf("%s: 货号[新]为空", row.GoodsName)) + continue + } + + // 查或建库位 + loc, exists := locationMap[huohaoNew] + if !exists { + // 再查一次(避免 map 中已有 is_del=1 的记录被忽略) + var findLoc models.Location + findErr := tx.Where("warehouse_id = ? AND code = ? AND is_del = ?", + warehouseID, huohaoNew, 0).First(&findLoc).Error + if findErr == nil { + loc = findLoc + locationMap[huohaoNew] = loc + } else if findErr == gorm.ErrRecordNotFound { + // 不存在则创建 + newLoc := models.Location{ + WarehouseID: warehouseID, + Code: huohaoNew, + Type: 1, + Capacity: 255, + Status: 1, + Sort: 0, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + if createErr := tx.Create(&newLoc).Error; createErr != nil { + tx.Rollback() + return nil, fmt.Errorf("创建库位失败(货号=%s): %v", huohaoNew, createErr) + } + loc = newLoc + locationMap[huohaoNew] = loc + } else { + tx.Rollback() + return nil, fmt.Errorf("查询库位异常(货号=%s): %v", huohaoNew, findErr) + } + } + + // Step 3: 创建商品 + product := s.buildProduct(row, now) + if createErr := tx.Create(&product).Error; createErr != nil { + tx.Rollback() + return nil, fmt.Errorf("创建商品失败(%s): %v", row.GoodsName, createErr) + } + + // Step 3.1: 写入任务库 t_shop_goods_published(先删后插,库存为0时仅删不插) + quantity := s.parseIntOrZero(row.Inventory) + + // 先删除旧记录 + if err := database.TaskDB.Exec( + `DELETE FROM t_shop_goods_published WHERE erp_shop_id = ? AND product_id = ? AND trilateral_id = ? AND del_flag = 0`, + row.ShopID, product.ID, row.ProductID, + ).Error; err != nil { + log.Printf("删除t_shop_goods_published旧记录失败(%s): %v", row.GoodsName, err) + } + + // 按库存数量插入(库存为0则跳过) + for i := int64(0); i < quantity; i++ { + if err := database.TaskDB.Exec( + `INSERT INTO t_shop_goods_published (erp_shop_id, product_id, trilateral_id, user_id, is_distribution, del_flag, create_time) VALUES (?, ?, ?, ?, ?, ?, ?)`, + row.ShopID, product.ID, row.ProductID, userID, 0, 0, now, + ).Error; err != nil { + log.Printf("写入t_shop_goods_published失败(%s, 第%d条): %v", row.GoodsName, i+1, err) + } + } + + // Step 4: 创建库存(quantity 已在 Step 3.1 计算过) + if quantity <= 0 { + quantity = 1 // 库存≥1条记录 + } + + inventory := models.Inventory{ + WarehouseID: warehouseID, + ProductID: product.ID, + BatchNo: batchNo, + ProductionDate: 0, + ExpiryDate: 0, + Quantity: quantity, + LockedQuantity: 0, + AvailableQuantity: quantity, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + if createErr := tx.Create(&inventory).Error; createErr != nil { + tx.Rollback() + return nil, fmt.Errorf("创建库存汇总失败(%s): %v", row.GoodsName, createErr) + } + + inventoryDetail := models.InventoryDetail{ + WarehouseID: warehouseID, + LocationID: loc.ID, + ProductID: product.ID, + BatchNo: batchNo, + ProductionDate: 0, + ExpiryDate: 0, + Quantity: quantity, + LockedQuantity: 0, + AvailableQuantity: quantity, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + if createErr := tx.Create(&inventoryDetail).Error; createErr != nil { + tx.Rollback() + return nil, fmt.Errorf("创建库存明细失败(%s): %v", row.GoodsName, createErr) + } + + // Step 4.1: 创建入库单明细 + receivingOrderItem := models.ReceivingOrderItem{ + ReceivingOrderID: receivingOrder.ID, + ProductID: product.ID, + LocationID: loc.ID, + BatchNo: batchNo, + ProductionDate: 0, + ExpiryDate: 0, + Quantity: quantity, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + if err := tx.Create(&receivingOrderItem).Error; err != nil { + tx.Rollback() + return nil, fmt.Errorf("创建入库单明细失败(%s): %v", row.GoodsName, err) + } + + // Step 4.2: 创建库存变动日志 + inventoryLog := models.InventoryLog{ + WarehouseID: warehouseID, + LocationID: loc.ID, + ProductID: product.ID, + BatchNo: batchNo, + ChangeType: constant.InventoryChangeInbound, + ChangeQuantity: quantity, + BeforeQuantity: 0, + AfterQuantity: quantity, + RelatedOrderType: constant.OrderTypeReceiving, + RelatedOrderNo: receivingOrder.ReceivingNo, + Operator: "", + OperatorID: userID, + Remark: "Excel批量导入", + CreatedAt: now, + IsDel: 0, + } + if err := tx.Create(&inventoryLog).Error; err != nil { + tx.Rollback() + return nil, fmt.Errorf("创建库存变动日志失败(%s): %v", row.GoodsName, err) + } + + result.SuccessCount++ + } + + // Step 5: 更新统计表入库次数 + var statist models.Statist + err = tx.Where("create_by = ?", userID).First(&statist).Error + if err == gorm.ErrRecordNotFound { + statist = models.Statist{ + CreateBy: userID, + ReceivingNum: int64(result.SuccessCount), + StatDate: now, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + if createErr := tx.Create(&statist).Error; createErr != nil { + log.Printf("创建统计记录失败: %v", createErr) + } + } else if err == nil { + if updateErr := tx.Model(&models.Statist{}). + Where("create_by = ?", userID). + Update("receiving_num", gorm.Expr("receiving_num + ?", result.SuccessCount)).Error; updateErr != nil { + log.Printf("更新统计记录失败: %v", updateErr) + } + } + + // 提交事务 + if commitErr := tx.Commit().Error; commitErr != nil { + return nil, fmt.Errorf("提交事务失败: %v", commitErr) + } + + result.Message = buildResultMessage(result) + return result, nil +} + +// buildProduct 根据 Excel 行数据构造 Product 模型 +func (s *GoodsImportService) buildProduct(row request.GoodsImportRow, now int64) models.Product { + var liveImage datatypes.JSON + liveURL := strings.TrimSpace(row.LiveImage) + if liveURL != "" { + // 工具导出后图片已是纯URL,包装为JSON数组 + arr := []string{liveURL} + b, _ := json.Marshal(arr) + liveImage = b + } else { + liveImage = datatypes.JSON("[]") + } + + // 品相:尝试转为数字,不支持则留0 + appearance := s.parseAppearance(row.Appearance) + + // 售价:元转分(如果包含小数点则为元,直接整数则为分) + salePrice := s.parsePrice(row.PriceSale) + + return models.Product{ + CategoryID: 1, + StandardProductID: 1, + Name: row.GoodsName, + Appearance: appearance, + Barcode: row.ISBN, + Price: 0, + SalePrice: salePrice, + Cost: 0, + LiveImage: liveImage, + IsBatchManaged: 0, + IsShelfLifeManaged: 0, + Status: 1, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } +} + +// parseAppearance 解析品相字符串为数字 +func (s *GoodsImportService) parseAppearance(appearance string) int64 { + val, err := strconv.ParseInt(appearance, 10, 64) + if err != nil { + // 中文品相映射 + switch strings.TrimSpace(appearance) { + case "全新", "十品": + return 100 + case "九五品", "九五": + return 95 + case "九品": + return 90 + case "八五品", "八五": + return 85 + case "八品": + return 80 + case "七五品", "七五": + return 75 + case "七品": + return 70 + default: + return int64(s.parsePrice(appearance)) + } + } + return val +} + +// parsePrice 解析价格(元→分,表格中价格统一为元,统一乘以100转换为分) +func (s *GoodsImportService) parsePrice(price string) int64 { + p := strings.TrimSpace(price) + if p == "" { + return 0 + } + if f, err := strconv.ParseFloat(p, 64); err == nil { + return int64(f * 100) + } + return 0 +} + +// parseIntOrZero 安全解析整数 +func (s *GoodsImportService) parseIntOrZero(val string) int64 { + if v, err := strconv.ParseInt(strings.TrimSpace(val), 10, 64); err == nil { + return v + } + return 0 +} + +func buildResultMessage(result *request.GoodsImportResult) string { + msg := fmt.Sprintf("导入完成:成功%d个,失败%d个", result.SuccessCount, result.FailCount) + if result.FailCount > 0 { + msg += fmt.Sprintf(",失败详情:%s", strings.Join(result.FailDetails, "; ")) + } + return msg +} diff --git a/service/inventory.go b/service/inventory.go new file mode 100644 index 0000000..4718d9c --- /dev/null +++ b/service/inventory.go @@ -0,0 +1,726 @@ +package service + +import ( + "fmt" + "psi/constant" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + + "gorm.io/gorm" +) + +type InventoryService struct{} + +// GetInventoryList 获取库存汇总列表 +func (s *InventoryService) GetInventoryList(req systemReq.GetInventoryListRequest, db ...*gorm.DB) (*systemRes.InventoryListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Table("inventory"). + Select(` + inventory.product_id, + p.name as product_name, + p.barcode, + p.appearance, + p.price, + inventory.warehouse_id, + w.name as warehouse_name, + w.code as warehouse_code, + l.code as location_code, + i.quantity as total_quantity, + i.locked_quantity as locked_quantity + `). + Joins("LEFT JOIN inventory_detail i ON i.product_id = inventory.product_id"). + Joins("LEFT JOIN location l ON l.id = i.location_id"). + Joins("LEFT JOIN product p ON inventory.product_id = p.id AND p.is_del = 0"). + Joins("LEFT JOIN warehouse w ON inventory.warehouse_id = w.id AND w.is_del = 0"). + Where("inventory.is_del = ?", 0) + + if req.ProductId > 0 { + query = query.Where("inventory.product_id = ?", req.ProductId) + } + if req.WarehouseID > 0 { + query = query.Where("inventory.warehouse_id = ?", req.WarehouseID) + } + if req.ISBN != "" { + query = query.Where("p.barcode LIKE ?", "%"+req.ISBN+"%") + } + if req.Name != "" { + query = query.Where("p.name LIKE ?", "%"+req.Name+"%") + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if total == 0 { + return &systemRes.InventoryListResponse{ + List: []systemRes.InventoryItem{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + type InventorySummary struct { + ProductID int64 `gorm:"column:product_id"` + ProductName string `gorm:"column:product_name"` + Appearance int64 `gorm:"column:appearance"` + Barcode string `gorm:"column:barcode"` + Price int64 `gorm:"column:price"` + WarehouseID int64 `gorm:"column:warehouse_id"` + WarehouseName string `gorm:"column:warehouse_name"` + WarehouseCode string `gorm:"column:warehouse_code"` + LocationCode string `gorm:"column:location_code"` + TotalQuantity int64 `gorm:"column:total_quantity"` + LockedQuantity int64 `gorm:"column:locked_quantity"` + } + + var summaries []InventorySummary + offset := (req.Page - 1) * req.PageSize + if err := query.Order("i.updated_at DESC").Offset(offset).Limit(req.PageSize).Find(&summaries).Error; err != nil { + return nil, utils.NewError("查询库存汇总列表失败") + } + + items := make([]systemRes.InventoryItem, 0, len(summaries)) + for _, summary := range summaries { + items = append(items, systemRes.ConvertInventoryToItem( + summary.ProductID, + summary.ProductName, + summary.Appearance, + summary.Barcode, + summary.Price, + summary.WarehouseID, + summary.WarehouseName, + summary.WarehouseCode, + summary.LocationCode, + summary.TotalQuantity, + summary.LockedQuantity, + )) + } + + return &systemRes.InventoryListResponse{ + List: items, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetInventoryGroupedList 获取按仓库库位分组的库存列表 +func (s *InventoryService) GetInventoryGroupedList(req systemReq.GetInventoryGroupedListRequest, db ...*gorm.DB) (*systemRes.InventoryGroupedListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + // 第一步:查询仓库库位分组统计信息 + groupQuery := databaseConn.Table("inventory_detail"). + Select(` + inventory_detail.warehouse_id, + w.name as warehouse_name, + w.code as warehouse_code, + inventory_detail.location_id, + l.code as location_code, + COALESCE(SUM(inventory_detail.quantity), 0) as total_quantity, + COALESCE(SUM(inventory_detail.locked_quantity), 0) as locked_quantity, + COUNT(DISTINCT inventory_detail.product_id) as item_count + `). + Joins("LEFT JOIN warehouse w ON inventory_detail.warehouse_id = w.id AND w.is_del = 0"). + Joins("LEFT JOIN location l ON inventory_detail.location_id = l.id AND l.is_del = 0"). + Where("inventory_detail.is_del = ?", 0). + Group("inventory_detail.warehouse_id, w.name, w.code, inventory_detail.location_id, l.code") + + if req.WarehouseID > 0 { + groupQuery = groupQuery.Where("inventory_detail.warehouse_id = ?", req.WarehouseID) + } + + var total int64 + if err := groupQuery.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if total == 0 { + return &systemRes.InventoryGroupedListResponse{ + List: []systemRes.InventoryGroupItem{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + type GroupSummary struct { + WarehouseID int64 `gorm:"column:warehouse_id"` + WarehouseName string `gorm:"column:warehouse_name"` + WarehouseCode string `gorm:"column:warehouse_code"` + LocationID int64 `gorm:"column:location_id"` + LocationCode string `gorm:"column:location_code"` + TotalQuantity int64 `gorm:"column:total_quantity"` + LockedQuantity int64 `gorm:"column:locked_quantity"` + ItemCount int `gorm:"column:item_count"` + } + + var groupSummaries []GroupSummary + offset := (req.Page - 1) * req.PageSize + if err := groupQuery.Order("inventory_detail.warehouse_id ASC, inventory_detail.location_id ASC").Offset(offset).Limit(req.PageSize).Find(&groupSummaries).Error; err != nil { + return nil, utils.NewError("查询库存分组列表失败") + } + + // 第二步:为每个分组查询详细的库存记录 + groupList := make([]systemRes.InventoryGroupItem, 0, len(groupSummaries)) + for _, group := range groupSummaries { + // 查询该仓库库位下的所有库存明细 + detailQuery := databaseConn.Table("inventory_detail"). + Select(` + inventory_detail.*, + p.name as product_name, + p.barcode, + p.appearance, + p.sale_price + `). + Joins("LEFT JOIN product p ON inventory_detail.product_id = p.id AND p.is_del = 0"). + Where("inventory_detail.warehouse_id = ? AND inventory_detail.location_id = ? AND inventory_detail.is_del = ?", + group.WarehouseID, group.LocationID, 0) + + if req.ProductId > 0 { + detailQuery = detailQuery.Where("inventory_detail.product_id = ?", req.ProductId) + } + + var details []struct { + models.InventoryDetail + ProductName string `gorm:"column:product_name"` + Barcode string `gorm:"column:barcode"` + Appearance int64 `gorm:"column:appearance"` + SalePrice int64 `gorm:"column:sale_price"` + } + + if err := detailQuery.Order("inventory_detail.updated_at DESC").Find(&details).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "查询库存明细", + "warehouse_id": group.WarehouseID, + "location_id": group.LocationID, + "error": fmt.Sprintf("查询失败: %v", err), + }) + continue + } + + detailItems := make([]systemRes.InventoryDetailItem, 0, len(details)) + for _, detail := range details { + detailItems = append(detailItems, systemRes.InventoryDetailItem{ + ID: detail.ID, + WarehouseID: detail.WarehouseID, + WarehouseName: group.WarehouseName, + LocationID: detail.LocationID, + LocationCode: group.LocationCode, + BatchNo: detail.BatchNo, + ProductionDate: detail.ProductionDate, + ExpiryDate: detail.ExpiryDate, + Quantity: detail.Quantity, + LockedQuantity: detail.LockedQuantity, + CreatedAt: detail.CreatedAt, + UpdatedAt: detail.UpdatedAt, + ProductID: detail.ProductID, + ProductName: detail.ProductName, + Barcode: detail.Barcode, + Appearance: detail.Appearance, + SalePrice: detail.SalePrice, + }) + } + + groupList = append(groupList, systemRes.InventoryGroupItem{ + WarehouseID: group.WarehouseID, + WarehouseName: group.WarehouseName, + WarehouseCode: group.WarehouseCode, + LocationID: group.LocationID, + LocationCode: group.LocationCode, + TotalQuantity: group.TotalQuantity, + LockedQuantity: group.LockedQuantity, + ItemCount: group.ItemCount, + Details: detailItems, + }) + } + + return &systemRes.InventoryGroupedListResponse{ + List: groupList, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetInventorySummary 获取库存统计信息 +func (s *InventoryService) GetInventorySummary(db ...*gorm.DB) (*systemRes.InventorySummaryResponse, error) { + databaseConn := database.OptionalDB(db...) + + response := &systemRes.InventorySummaryResponse{} + + // 1. 查询商品总种类数(同一个barcode算一个) + productTypeQuery := databaseConn.Table("inventory_detail"). + Joins("LEFT JOIN product p ON inventory_detail.product_id = p.id AND p.is_del = ?", 0). + Where("inventory_detail.is_del = ?", 0) + + var productTypeCount int64 + if err := productTypeQuery.Distinct("p.barcode").Count(&productTypeCount).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "查询商品种类数", + "error": fmt.Sprintf("查询失败: %v", err), + }) + return nil, utils.NewError("查询商品种类数失败") + } + response.ProductTypeCount = productTypeCount + + // 2. 查询商品总数(不去重,按库存明细记录数) + productCountQuery := databaseConn.Table("inventory_detail"). + Where("inventory_detail.is_del = ?", 0) + + var productCount int64 + if err := productCountQuery.Count(&productCount).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "查询商品总数", + "error": fmt.Sprintf("查询失败: %v", err), + }) + return nil, utils.NewError("查询商品总数失败") + } + response.ProductCount = productCount + + // 3. 查询库存总量 + totalQuantityQuery := databaseConn.Table("inventory_detail"). + Select("COALESCE(SUM(quantity), 0)"). + Where("inventory_detail.is_del = ?", 0) + + var totalQuantity int64 + if err := totalQuantityQuery.Scan(&totalQuantity).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "查询库存总量", + "error": fmt.Sprintf("查询失败: %v", err), + }) + return nil, utils.NewError("查询库存总量失败") + } + response.TotalQuantity = totalQuantity + + // 4. 查询有货商品数量(库存大于0的商品种类,按barcode去重) + availableProductQuery := databaseConn.Table("inventory_detail"). + Joins("LEFT JOIN product p ON inventory_detail.product_id = p.id AND p.is_del = ?", 0). + Where("inventory_detail.is_del = ?", 0). + Where("inventory_detail.quantity > 0") + + var availableProductCount int64 + if err := availableProductQuery.Distinct("p.barcode").Count(&availableProductCount).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "查询有货商品数量", + "error": fmt.Sprintf("查询失败: %v", err), + }) + return nil, utils.NewError("查询有货商品数量失败") + } + response.AvailableProductCount = availableProductCount + + // 5. 查询库位数(使用过的库位数量) + locationQuery := databaseConn.Table("inventory_detail"). + Select("COUNT(DISTINCT location_id)"). + Where("inventory_detail.is_del = ?", 0) + + var locationCount int64 + if err := locationQuery.Scan(&locationCount).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "查询库位数", + "error": fmt.Sprintf("查询失败: %v", err), + }) + return nil, utils.NewError("查询库位数失败") + } + response.LocationCount = locationCount + + return response, nil +} + +// GetInventoryDetail 获取库存明细 +func (s *InventoryService) GetInventoryDetail(productID int64, db ...*gorm.DB) (*systemRes.InventoryDetailResponse, error) { + databaseConn := database.OptionalDB(db...) + + var product models.Product + if err := databaseConn.Where("id = ? AND is_del = ?", productID, 0).First(&product).Error; err != nil { + return nil, utils.NewError("商品不存在") + } + + query := databaseConn.Model(&models.InventoryDetail{}). + Select("inventory_detail.*, w.name as warehouse_name, l.code as location_code"). + Joins("LEFT JOIN warehouse w ON inventory_detail.warehouse_id = w.id AND w.is_del = 0"). + Joins("LEFT JOIN location l ON inventory_detail.location_id = l.id AND l.is_del = 0"). + Where("inventory_detail.product_id = ? AND inventory_detail.is_del = ?", productID, 0) + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + var details []struct { + models.InventoryDetail + WarehouseName string `gorm:"column:warehouse_name"` + LocationCode string `gorm:"column:location_code"` + } + + if err := query.Order("inventory_detail.updated_at DESC").Find(&details).Error; err != nil { + return nil, utils.NewError("查询库存明细失败") + } + + // 查询该商品关联的任务信息 + type TaskInfo struct { + WaveNo string `gorm:"column:wave_no"` + WaveTaskNo string `gorm:"column:wave_task_no"` + OutTaskNo int64 `gorm:"column:out_task_no"` + SalesOrderNo string `gorm:"column:sales_order_no"` + ShippingNo string `gorm:"column:shipping_no"` + } + var taskInfo TaskInfo + databaseConn.Table("wave_task_detail wtd"). + Select(`COALESCE(wh.wave_no, '') as wave_no, + COALESCE(wt.task_no, '') as wave_task_no, + COALESCE(ot.out_task_id, 0) as out_task_no, + COALESCE(so.so_no, '') as sales_order_no, + COALESCE(sh.shipping_no, '') as shipping_no`). + Joins("JOIN wave_task wt ON wt.id = wtd.wave_task_id AND wt.is_del = 0"). + Joins("JOIN wave_header wh ON wh.id = wt.wave_id AND wh.is_del = 0"). + Joins("LEFT JOIN out_task ot ON ot.wave_task_id = wt.id AND ot.is_del = 0"). + Joins("LEFT JOIN sales_order so ON so.id = wh.related_order_id AND so.is_del = 0"). + Joins("LEFT JOIN outbound_order obo ON obo.wave_task_id = wt.id AND obo.is_del = 0"). + Joins("LEFT JOIN outbound_order_item oboi ON oboi.out_order_id = obo.id AND oboi.product_id = ? AND oboi.is_del = 0", productID). + Joins("LEFT JOIN shipping_order_item soi ON soi.outbound_order_item_id = oboi.id AND soi.is_del = 0"). + Joins("LEFT JOIN shipping_order sh ON sh.id = soi.shipping_order_id AND sh.is_del = 0"). + Where("wtd.product_id = ? AND wtd.is_del = 0", productID). + Order("wt.id DESC"). + Limit(1). + Scan(&taskInfo) + + items := make([]systemRes.InventoryDetailItem, 0, len(details)) + for _, detail := range details { + items = append(items, systemRes.ConvertInventoryDetailToItem( + detail.InventoryDetail, + detail.WarehouseName, + detail.LocationCode, + taskInfo.WaveNo, + taskInfo.WaveTaskNo, + taskInfo.OutTaskNo, + taskInfo.SalesOrderNo, + taskInfo.ShippingNo, + )) + } + + return &systemRes.InventoryDetailResponse{ + ProductID: productID, + ProductName: product.Name, + List: items, + Total: total, + }, nil +} + +// GetInventoryLogList 获取库存流水列表 +func (s *InventoryService) GetInventoryLogList(req systemReq.GetInventoryLogListRequest, db ...*gorm.DB) (*systemRes.InventoryLogListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Table("inventory_log"). + Select(` + inventory_log.*, + w.name as warehouse_name, + l.code as location_code, + p.name as product_name, + p.barcode + `). + Joins("LEFT JOIN warehouse w ON inventory_log.warehouse_id = w.id AND w.is_del = 0"). + Joins("LEFT JOIN location l ON inventory_log.location_id = l.id AND l.is_del = 0"). + Joins("LEFT JOIN product p ON inventory_log.product_id = p.id AND p.is_del = 0"). + Where("inventory_log.is_del = ?", 0) + + if req.ISBN != "" { + query = query.Where("p.barcode LIKE ?", "%"+req.ISBN+"%") + } + if req.BookName != "" { + query = query.Where("p.name LIKE ?", "%"+req.BookName+"%") + } + if req.WarehouseID > 0 { + query = query.Where("inventory_log.warehouse_id = ?", req.WarehouseID) + } + if req.ChangeType > 0 { + query = query.Where("inventory_log.change_type = ?", req.ChangeType) + } + if req.RelatedOrderNo != "" { + query = query.Where("inventory_log.related_order_no LIKE ?", "%"+req.RelatedOrderNo+"%") + } + if req.StartDate > 0 { + query = query.Where("inventory_log.created_at >= ?", req.StartDate) + } + if req.EndDate > 0 { + query = query.Where("inventory_log.created_at <= ?", req.EndDate) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if total == 0 { + return &systemRes.InventoryLogListResponse{ + List: []systemRes.InventoryLogItem{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + var logs []struct { + models.InventoryLog + WarehouseName string `gorm:"column:warehouse_name"` + LocationCode string `gorm:"column:location_code"` + ProductName string `gorm:"column:product_name"` + Barcode string `gorm:"column:barcode"` + } + + offset := (req.Page - 1) * req.PageSize + if err := query.Order("inventory_log.created_at DESC").Offset(offset).Limit(req.PageSize).Find(&logs).Error; err != nil { + return nil, utils.NewError("查询库存流水列表失败") + } + + items := make([]systemRes.InventoryLogItem, 0, len(logs)) + for _, log := range logs { + items = append(items, systemRes.ConvertInventoryLogToItem( + log.InventoryLog, + log.WarehouseName, + log.LocationCode, + log.ProductName, + log.Barcode, + )) + } + + return &systemRes.InventoryLogListResponse{ + List: items, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// InventoryStatist 获取ISBN/品相的库存总数(跨所有商品和仓库) +func (s *InventoryService) InventoryStatist(req systemReq.InventoryStatistRequest, db ...*gorm.DB) (*systemRes.InventoryStatistResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Barcode == "" && req.Appearance <= 0 { + return nil, utils.NewError("条码和品相至少提供一个") + } + + type InventoryTotal struct { + Barcode string `gorm:"column:barcode"` + Appearance int64 `gorm:"column:appearance"` + TotalQuantity int64 `gorm:"column:total_quantity"` + ProductCount int `gorm:"column:product_count"` + } + + query := databaseConn.Table("inventory"). + Select(` + p.barcode, + p.appearance, + SUM(inventory.quantity) as total_quantity, + COUNT(DISTINCT inventory.product_id) as product_count + `). + Joins("LEFT JOIN product p ON inventory.product_id = p.id AND p.is_del = 0"). + Where("inventory.is_del = ?", 0) + + if req.Barcode != "" { + query = query.Where("p.barcode = ?", req.Barcode) + } + if req.Appearance > 0 { + query = query.Where("p.Appearance = ?", req.Appearance) + } + + var total InventoryTotal + if err := query.Group("p.barcode, p.appearance").Limit(1).Scan(&total).Error; err != nil { + return nil, utils.NewError("查询库存总数失败") + } + + return &systemRes.InventoryStatistResponse{ + Barcode: total.Barcode, + Appearance: total.Appearance, + TotalQuantity: total.TotalQuantity, + ProductCount: total.ProductCount, + }, nil +} + +// GetStockCheckList 获取盘库列表(不包含明细) +func (s *InventoryService) GetStockCheckList(req systemReq.GetStockCheckListRequest, db ...*gorm.DB) (*systemRes.StockCheckListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Table("stock_check"). + Select(` + stock_check.*, + w.name as warehouse_name + `). + Joins("LEFT JOIN warehouse w ON stock_check.warehouse_id = w.id AND w.is_del = 0"). + Where("stock_check.is_del = ?", 0) + + if req.WarehouseID > 0 { + query = query.Where("stock_check.warehouse_id = ?", req.WarehouseID) + } + if req.Status > 0 { + query = query.Where("stock_check.status = ?", req.Status) + } + if req.CheckNo != "" { + query = query.Where("stock_check.check_no LIKE ?", "%"+req.CheckNo+"%") + } + if req.StartDate > 0 { + query = query.Where("stock_check.created_at >= ?", req.StartDate) + } + if req.EndDate > 0 { + query = query.Where("stock_check.created_at <= ?", req.EndDate) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if total == 0 { + return &systemRes.StockCheckListResponse{ + List: []systemRes.StockCheckItem{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + type StockCheckWithWarehouse struct { + models.StockCheck + WarehouseName string `gorm:"column:warehouse_name"` + } + + var checks []StockCheckWithWarehouse + offset := (req.Page - 1) * req.PageSize + if err := query.Order("stock_check.created_at DESC").Offset(offset).Limit(req.PageSize).Find(&checks).Error; err != nil { + return nil, utils.NewError("查询盘库列表失败") + } + + items := make([]systemRes.StockCheckItem, 0, len(checks)) + for _, check := range checks { + item := systemRes.ConvertStockCheckToItem(check.StockCheck, check.WarehouseName) + items = append(items, item) + } + + return &systemRes.StockCheckListResponse{ + List: items, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetStockCheckDetail 获取盘库明细列表 +func (s *InventoryService) GetStockCheckDetail(req systemReq.GetStockCheckDetailRequest, db ...*gorm.DB) (*systemRes.StockCheckDetailResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + if req.StockCheckID == 0 { + return nil, utils.NewError("盘库单ID不能为空") + } + + query := databaseConn.Table("stock_check_item"). + Select(` + stock_check_item.*, + p.name as product_name, + p.barcode, + l.code as location_code + `). + Joins("LEFT JOIN product p ON stock_check_item.product_id = p.id AND p.is_del = 0"). + Joins("LEFT JOIN location l ON stock_check_item.location_id = l.id AND l.is_del = 0"). + Where("stock_check_item.stock_check_id = ? AND stock_check_item.is_del = ?", req.StockCheckID, 0) + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if total == 0 { + return &systemRes.StockCheckDetailResponse{ + List: []systemRes.StockCheckDetailItem{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + type StockCheckItemWithInfo struct { + models.StockCheckItem + ProductName string `gorm:"column:product_name"` + Barcode string `gorm:"column:barcode"` + LocationCode string `gorm:"column:location_code"` + } + + var items []StockCheckItemWithInfo + offset := (req.Page - 1) * req.PageSize + if err := query.Order("stock_check_item.created_at ASC").Offset(offset).Limit(req.PageSize).Find(&items).Error; err != nil { + return nil, utils.NewError("查询盘库明细失败") + } + + details := make([]systemRes.StockCheckDetailItem, 0, len(items)) + for _, item := range items { + detail := systemRes.StockCheckDetailItem{ + ID: item.ID, + ProductID: item.ProductID, + ProductName: item.ProductName, + Barcode: item.Barcode, + LocationID: item.LocationID, + LocationCode: item.LocationCode, + BatchNo: item.BatchNo, + ProductionDate: item.ProductionDate, + ExpiryDate: item.ExpiryDate, + SystemQuantity: item.SystemQuantity, + ActualQuantity: item.ActualQuantity, + DifferenceQuantity: item.DifferenceQuantity, + Status: item.Status, + StatusText: systemRes.GetStockCheckItemStatusText(item.Status), + CheckOperator: item.CheckOperator, + CheckOperatorID: item.CheckOperatorID, + CheckTime: item.CheckTime, + Remark: item.Remark, + CreatedAt: item.CreatedAt, + UpdatedAt: item.UpdatedAt, + } + details = append(details, detail) + } + + return &systemRes.StockCheckDetailResponse{ + List: details, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} diff --git a/service/location.go b/service/location.go new file mode 100644 index 0000000..d4edeb3 --- /dev/null +++ b/service/location.go @@ -0,0 +1,1112 @@ +package service + +import ( + "encoding/json" + "fmt" + "gorm.io/datatypes" + "gorm.io/gorm" + "strconv" + "strings" + "time" + + "github.com/pkg/errors" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" +) + +type LocationService struct{} + +func (s *LocationService) GetLocationList(req systemReq.QueryLocationRequest, db ...*gorm.DB) ([]systemRes.LocationResponse, int64, error) { + databaseConn := database.OptionalDB(db...) + + if req.WarehouseID == 0 { + return nil, 0, errors.New("仓库ID不能为空") + } + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.Location{}).Where("warehouse_id = ? AND is_del = ?", req.WarehouseID, 0) + + if req.Code != "" { + query = query.Where("code LIKE ?", "%"+req.Code+"%") + } + + if req.Type != nil { + query = query.Where("type = ?", *req.Type) + } + + if req.Status != nil { + query = query.Where("status = ?", *req.Status) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, 0, errors.New("查询库位总数失败") + } + + var locations []models.Location + offset := (req.Page - 1) * req.PageSize + if err := query.Order("sort ASC,code ASC").Offset(offset).Limit(req.PageSize).Find(&locations).Error; err != nil { + return nil, 0, errors.New("查询库位列表失败") + } + + responses := make([]systemRes.LocationResponse, 0, len(locations)) + for _, loc := range locations { + resp := systemRes.ConvertLocationToResponse(loc) + responses = append(responses, resp) + } + + return responses, total, nil +} + +// GetAllLocationList 查询所有库位列表(仓库ID可选) +func (s *LocationService) GetAllLocationList(req systemReq.QueryAllLocationRequest, db ...*gorm.DB) ([]systemRes.LocationResponse, int64, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.Location{}).Where("is_del = ?", 0) + + if req.WarehouseID != nil && *req.WarehouseID > 0 { + query = query.Where("warehouse_id = ?", *req.WarehouseID) + } + if req.Code != "" { + query = query.Where("code LIKE ?", "%"+req.Code+"%") + } + if req.Type != nil { + query = query.Where("type = ?", *req.Type) + } + if req.Status != nil { + query = query.Where("status = ?", *req.Status) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, 0, errors.New("查询库位总数失败") + } + + var locations []models.Location + offset := (req.Page - 1) * req.PageSize + if err := query.Order("sort ASC,code ASC").Offset(offset).Limit(req.PageSize).Find(&locations).Error; err != nil { + return nil, 0, errors.New("查询库位列表失败") + } + + responses := make([]systemRes.LocationResponse, 0, len(locations)) + for _, loc := range locations { + resp := systemRes.ConvertLocationToResponse(loc) + responses = append(responses, resp) + } + + return responses, total, nil +} + +func (s *LocationService) GetLocationDetail(id int64, db ...*gorm.DB) (*systemRes.LocationResponse, error) { + databaseConn := database.OptionalDB(db...) + + var location models.Location + if err := databaseConn.Where("id = ? AND is_del = ?", id, 0).First(&location).Error; err != nil { + if err == gorm.ErrRecordNotFound { + return nil, errors.New("库位不存在") + } + return nil, errors.New("查询库位失败") + } + + resp := systemRes.ConvertLocationToResponse(location) + return &resp, nil +} + +func (s *LocationService) GetLocationInfo(code, warehouseCode string, db ...*gorm.DB) (*systemRes.LocationResponse, error) { + databaseConn := database.OptionalDB(db...) + + var warehouse models.Warehouse + if err := databaseConn.Where("code = ? AND is_del = ?", warehouseCode, 0).First(&warehouse).Error; err != nil { + if err == gorm.ErrRecordNotFound { + return nil, errors.New("仓库不存在") + } + return nil, errors.New("查询仓库失败") + } + + var location models.Location + if err := databaseConn.Where("code = ? AND warehouse_id = ? AND is_del = ?", code, warehouse.ID, 0).First(&location).Error; err != nil { + if err == gorm.ErrRecordNotFound { + return nil, errors.New("库位不存在") + } + return nil, errors.New("查询库位失败") + } + + resp := systemRes.ConvertLocationToResponse(location) + return &resp, nil +} + +func (s *LocationService) CreateLocation(req systemReq.CreateLocationRequest, db ...*gorm.DB) (int64, error) { + databaseConn := database.OptionalDB(db...) + + var warehouse models.Warehouse + if err := databaseConn.Where("id = ? AND is_del = ?", req.WarehouseID, 0).First(&warehouse).Error; err != nil { + return 0, errors.New("仓库不存在") + } + + if len(req.Code) > 50 { + return 0, errors.New("库位编码长度不能超过50") + } + + var existingLocation models.Location + err := databaseConn.Where("warehouse_id = ? AND code = ?", req.WarehouseID, req.Code).First(&existingLocation).Error + + if err == nil { + if existingLocation.IsDel == 1 { + now := time.Now().Unix() + existingLocation.IsDel = 0 + existingLocation.Type = req.Type + existingLocation.Capacity = req.Capacity + existingLocation.Status = req.Status + existingLocation.UpdatedAt = now + + if updateErr := databaseConn.Save(&existingLocation).Error; updateErr != nil { + return 0, errors.New("恢复库位失败") + } + + return existingLocation.ID, nil + } else { + return 0, errors.New("库位编码已存在") + } + } else if err == gorm.ErrRecordNotFound { + location := models.Location{ + WarehouseID: req.WarehouseID, + Code: req.Code, + Type: req.Type, + Capacity: req.Capacity, + Status: req.Status, + CreatedAt: time.Now().Unix(), + UpdatedAt: time.Now().Unix(), + IsDel: 0, + } + + if createErr := databaseConn.Create(&location).Error; createErr != nil { + return 0, errors.New("创建库位失败") + } + + return location.ID, nil + } else { + return 0, errors.New("查询库位失败") + } +} + +func (s *LocationService) BatchGenerateLocations(req systemReq.BatchGenerateLocationRequest, db ...*gorm.DB) (*systemRes.BatchGenerateResult, error) { + databaseConn := database.OptionalDB(db...) + + result := &systemRes.BatchGenerateResult{ + SuccessIDs: make([]int64, 0), + FailCodes: make([]string, 0), + } + + var warehouse models.Warehouse + if err := databaseConn.Where("id = ? AND is_del = ?", req.WarehouseID, 0).First(&warehouse).Error; err != nil { + return result, errors.New("仓库不存在") + } + + if len(req.Groups) > 5 { + return result, errors.New("最多支持5组") + } + + now := time.Now().Unix() + allCodes := make([]string, 0) + locations := make([]models.Location, 0) + failedCodes := make([]string, 0) + existingCodes := make(map[string]bool) + + groupValues := make([][]string, len(req.Groups)) + for i, group := range req.Groups { + values, err := generateLevelValues(systemReq.GroupConfig{ + FormatType: group.FormatType, + StartValue: group.StartValue, + EndValue: group.EndValue, + PaddingLen: group.PaddingLen, + }) + if err != nil { + return result, errors.Wrapf(err, "第%d组配置错误", i+1) + } + groupValues[i] = values + } + + codes := make([]string, 0) + var generate func(groupIndex int, prefix string) + generate = func(groupIndex int, prefix string) { + if groupIndex == len(groupValues) { + codes = append(codes, prefix) + return + } + + separator := req.Groups[groupIndex].Separator + + for _, value := range groupValues[groupIndex] { + newPrefix := prefix + value + // separator 放在本组值后面,只有下一组存在时才生效 + if groupIndex+1 < len(groupValues) { + newPrefix += separator + } + generate(groupIndex+1, newPrefix) + } + } + + generate(0, "") + + for _, code := range codes { + if existingCodes[code] { + continue + } + + var existingLocation models.Location + err := databaseConn.Where("warehouse_id = ? AND code = ?", req.WarehouseID, code).First(&existingLocation).Error + + if err == nil { + existingCodes[code] = true + if existingLocation.IsDel == 1 { + failedCodes = append(failedCodes, fmt.Sprintf("%s:已删除可恢复", code)) + } else { + failedCodes = append(failedCodes, fmt.Sprintf("%s:已存在", code)) + } + continue + } else if !errors.Is(err, gorm.ErrRecordNotFound) { + return result, errors.New("批量生成库位失败") + } + + existingCodes[code] = true + allCodes = append(allCodes, code) + + location := models.Location{ + WarehouseID: req.WarehouseID, + Code: code, + Type: req.Type, + Capacity: req.Capacity, + Status: req.Status, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + locations = append(locations, location) + } + + result.TotalCount = len(allCodes) + result.GeneratedCode = allCodes + + if len(allCodes) > 10000 { + return result, errors.New(fmt.Sprintf("生成的库位数量过多(%d个),请调整范围", len(allCodes))) + } + + if len(locations) > 0 { + if err := databaseConn.Create(&locations).Error; err != nil { + return result, errors.New("批量创建库位失败") + } + + for _, loc := range locations { + result.SuccessIDs = append(result.SuccessIDs, loc.ID) + } + } + + result.SuccessCount = len(result.SuccessIDs) + result.FailCount = len(failedCodes) + result.FailCodes = failedCodes + + if len(failedCodes) > 0 { + result.Message = fmt.Sprintf("成功创建%d个,失败%d个", result.SuccessCount, result.FailCount) + } else { + result.Message = fmt.Sprintf("成功创建%d个库位", result.SuccessCount) + } + + return result, nil +} + +func (s *LocationService) UpdateLocation(req systemReq.UpdateLocationRequest, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + if len(req.IDs) == 0 { + return errors.New("请选择要更新的库位") + } + + isSingleUpdate := len(req.IDs) == 1 + + updates := make(map[string]interface{}) + updates["updated_at"] = time.Now().Unix() + + if isSingleUpdate && req.Code != "" { + if len(req.Code) > 50 { + return errors.New("库位编码长度不能超过50") + } + + var count int64 + databaseConn.Model(&models.Location{}). + Where("warehouse_id = ? AND code = ? AND id != ? AND is_del = ?", req.WarehouseID, req.Code, req.IDs[0], 0). + Count(&count) + if count > 0 { + return errors.New("库位编码已存在") + } + + updates["code"] = req.Code + } + + if req.Type != nil { + if *req.Type < 1 || *req.Type > 5 { + return errors.New("库位类型无效") + } + updates["type"] = *req.Type + } + + if req.Capacity != nil { + if *req.Capacity < 0 { + return errors.New("库位容量不能为负数") + } + + var totalQuantity int64 + databaseConn.Model(&models.InventoryDetail{}). + Where("location_id IN (?) AND is_del = ?", req.IDs, 0). + Select("COALESCE(SUM(quantity), 0)"). + Scan(&totalQuantity) + + if *req.Capacity < totalQuantity { + return errors.New(fmt.Sprintf("库位容量不能小于当前库存数量(%d)", totalQuantity)) + } + + updates["capacity"] = *req.Capacity + } + + if req.Status != nil { + if *req.Status != 0 && *req.Status != 1 { + return errors.New("库位状态无效") + } + updates["status"] = *req.Status + } + + if req.Sort != nil { + updates["sort"] = *req.Sort + } + + if len(updates) <= 1 { + return errors.New("没有需要更新的字段") + } + + if err := databaseConn.Model(&models.Location{}). + Where("id IN (?) AND is_del = ?", req.IDs, 0). + Updates(updates).Error; err != nil { + return errors.New("更新库位失败") + } + + return nil +} + +func (s *LocationService) DeleteLocation(ids []int64, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + if len(ids) == 0 { + return errors.New("请选择要删除的库位") + } + + var count int64 + databaseConn.Model(&models.InventoryDetail{}). + Where("location_id IN ? AND is_del = 0 AND available_quantity > 0", ids). + Count(&count) + if count > 0 { + return errors.New("库位下仍有库存商品,无法删除") + } + + // 执行真正的物理删除 + if err := databaseConn.Where("id IN ? AND is_del = ?", ids, 0).Delete(&models.Location{}).Error; err != nil { + return errors.New("删除库位失败") + } + + return nil +} + +// SyncLocations 同步库位数据(包含物流模板、仓库、货区) +func (s *LocationService) SyncLocations(req systemReq.SyncLocationRequest) (*systemRes.SyncLocationResponse, error) { + databaseConn, err := database.GetTenantDB(req.UserID) + if err != nil { + return nil, fmt.Errorf("获取数据库连接失败: %v", err) + } + + result := &systemRes.SyncLocationResponse{ + SuccessCodes: make([]string, 0), + FailCodes: make([]string, 0), + } + + if len(req.Data) == 0 { + return result, errors.New("数据不能为空") + } + + now := time.Now().Unix() + tx := databaseConn.Begin() + defer func() { + if r := recover(); r != nil { + tx.Rollback() + } + }() + + successCount := 0 + failCount := 0 + var failMessages []string + + for _, area := range req.Data { + areaCode := area.Code + + if areaCode == "" { + failCount++ + failMessages = append(failMessages, "区域编码为空") + continue + } + + logisticsID, err := s.createOrUpdateLogistics(tx, area.Logistics, req.UserID, now) + if err != nil { + failCount++ + failMessages = append(failMessages, fmt.Sprintf("%s: 创建物流模板失败-%v", areaCode, err)) + continue + } + + warehouseID, err := s.createOrUpdateWarehouse(tx, area, logisticsID, req.UserID, now) + if err != nil { + failCount++ + failMessages = append(failMessages, fmt.Sprintf("%s: 创建仓库失败-%v", areaCode, err)) + continue + } + + locationResult, err := s.batchCreateLocations(tx, warehouseID, area.Data, now) + if err != nil { + failCount++ + failMessages = append(failMessages, fmt.Sprintf("%s: 创建货区失败-%v", areaCode, err)) + continue + } + + successCount += locationResult.SuccessCount + failCount += locationResult.FailCount + if len(locationResult.FailCodes) > 0 { + for _, failCode := range locationResult.FailCodes { + failMessages = append(failMessages, fmt.Sprintf("%s-%s", areaCode, failCode)) + } + } + result.SuccessCodes = append(result.SuccessCodes, locationResult.SuccessCodes...) + } + + if failCount > 0 || len(failMessages) > 0 { + if err := tx.Commit().Error; err != nil { + return nil, fmt.Errorf("提交事务失败: %v", err) + } + result.FailCodes = failMessages + result.SuccessCount = successCount + result.FailCount = failCount + if failCount > 0 { + result.Message = fmt.Sprintf("同步完成:成功%d个,失败%d个", successCount, failCount) + } else { + result.Message = fmt.Sprintf("同步完成:全部成功,共%d个", successCount) + } + } else { + if err := tx.Commit().Error; err != nil { + return nil, fmt.Errorf("提交事务失败: %v", err) + } + result.SuccessCount = successCount + result.FailCount = failCount + result.Message = fmt.Sprintf("同步完成:全部成功,共%d个", successCount) + } + + return result, nil +} + +func (s *LocationService) createOrUpdateLogistics(tx *gorm.DB, logisticsReq systemReq.SyncLogisticsRequest, userID int64, now int64) (int64, error) { + var logistics models.Logistics + + err := tx.Where("id = ?", logisticsReq.Id).First(&logistics).Error + + if err == gorm.ErrRecordNotFound { + createTime, _ := time.Parse(time.RFC3339, logisticsReq.CreateTime) + updateTime, _ := time.Parse(time.RFC3339, logisticsReq.UpdateTime) + + newLogistics := models.Logistics{ + Id: uint64(logisticsReq.Id), + TemplateName: logisticsReq.TemplateName, + DeliveryProvince: logisticsReq.DeliveryProvince, + DeliveryCity: logisticsReq.DeliveryCity, + DeliveryArea: logisticsReq.DeliveryArea, + DeliveryAddress: logisticsReq.DeliveryAddress, + PricingMethod: logisticsReq.PricingMethod, + Shipping: logisticsReq.Shipping, + FirWbv: logisticsReq.FirWbv, + FirPrice: logisticsReq.FirPrice, + ContinueWbv: logisticsReq.ContinueWbv, + ContinuePrice: logisticsReq.ContinuePrice, + CreateBy: uint64(userID), + CreateTime: &createTime, + UpdateBy: uint64(userID), + UpdateTime: &updateTime, + Status: logisticsReq.Status, + DelFlag: "0", + TenantId: logisticsReq.TenantId, + CreateDept: uint64(logisticsReq.CreateDept), + ShippingRange: logisticsReq.ShippingRange, + WarehouseId: 0, + Remark: logisticsReq.Remark, + PhoneNumber: uint64(logisticsReq.PhoneNumber), + Contact: logisticsReq.Contact, + FullAddress: logisticsReq.FullAddress, + } + + if err := tx.Create(&newLogistics).Error; err != nil { + return 0, errors.New("创建物流模板失败") + } + + return int64(newLogistics.Id), nil + } else if err != nil { + return 0, errors.New("查询物流模板失败") + } else { + updateTime, _ := time.Parse(time.RFC3339, logisticsReq.UpdateTime) + + logistics.TemplateName = logisticsReq.TemplateName + logistics.DeliveryProvince = logisticsReq.DeliveryProvince + logistics.DeliveryCity = logisticsReq.DeliveryCity + logistics.DeliveryArea = logisticsReq.DeliveryArea + logistics.DeliveryAddress = logisticsReq.DeliveryAddress + logistics.PricingMethod = logisticsReq.PricingMethod + logistics.Shipping = logisticsReq.Shipping + logistics.FirWbv = logisticsReq.FirWbv + logistics.FirPrice = logisticsReq.FirPrice + logistics.ContinueWbv = logisticsReq.ContinueWbv + logistics.ContinuePrice = logisticsReq.ContinuePrice + logistics.UpdateBy = uint64(userID) + logistics.UpdateTime = &updateTime + logistics.Status = logisticsReq.Status + logistics.ShippingRange = logisticsReq.ShippingRange + logistics.Remark = logisticsReq.Remark + logistics.PhoneNumber = uint64(logisticsReq.PhoneNumber) + logistics.Contact = logisticsReq.Contact + logistics.FullAddress = logisticsReq.FullAddress + + if err := tx.Save(&logistics).Error; err != nil { + return 0, errors.New("更新物流模板失败") + } + + return int64(logistics.Id), nil + } +} + +func (s *LocationService) createOrUpdateWarehouse(tx *gorm.DB, area systemReq.SyncLocationAreaRequest, logisticsID int64, userID int64, now int64) (int64, error) { + var warehouse models.Warehouse + + err := tx.Where("code = ? AND is_del = ?", area.Code, 0).First(&warehouse).Error + + if err == gorm.ErrRecordNotFound { + newWarehouse := models.Warehouse{ + LogisticsID: logisticsID, + Code: area.Code, + Name: area.Name, + Type: 1, + ContactPerson: area.Logistics.Contact, + ContactPhone: fmt.Sprintf("%d", area.Logistics.PhoneNumber), + Province: area.Logistics.DeliveryProvince, + City: area.Logistics.DeliveryCity, + District: area.Logistics.DeliveryArea, + Address: area.Logistics.FullAddress, + Status: 1, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := tx.Create(&newWarehouse).Error; err != nil { + return 0, errors.New("创建仓库失败") + } + + return newWarehouse.ID, nil + } else if err != nil { + return 0, errors.New("查询仓库失败") + } else { + warehouse.LogisticsID = logisticsID + warehouse.Name = area.Name + warehouse.ContactPerson = area.Logistics.Contact + warehouse.ContactPhone = fmt.Sprintf("%d", area.Logistics.PhoneNumber) + warehouse.Province = area.Logistics.DeliveryProvince + warehouse.City = area.Logistics.DeliveryCity + warehouse.District = area.Logistics.DeliveryArea + warehouse.Address = area.Logistics.FullAddress + warehouse.UpdatedAt = now + + if err := tx.Save(&warehouse).Error; err != nil { + return 0, errors.New("更新仓库失败") + } + + return warehouse.ID, nil + } +} + +func (s *LocationService) batchCreateLocations(tx *gorm.DB, warehouseID int64, items []systemReq.SyncLocationItemRequest, now int64) (*systemRes.SyncLocationResponse, error) { + result := &systemRes.SyncLocationResponse{ + SuccessCodes: make([]string, 0), + FailCodes: make([]string, 0), + } + + if len(items) == 0 { + return result, nil + } + + codes := make([]string, 0, len(items)) + codeMap := make(map[string]systemReq.SyncLocationItemRequest) + + for _, item := range items { + if item.Code == "" { + result.FailCodes = append(result.FailCodes, "编码为空") + continue + } + codes = append(codes, item.Code) + codeMap[item.Code] = item + } + + if len(codes) == 0 { + result.SuccessCount = 0 + result.FailCount = len(result.FailCodes) + return result, nil + } + + var existingLocations []models.Location + if err := tx.Where("warehouse_id = ? AND code IN ?", warehouseID, codes).Find(&existingLocations).Error; err != nil { + return result, errors.New("查询库位失败") + } + + existingCodeMap := make(map[string]models.Location) + for _, loc := range existingLocations { + existingCodeMap[loc.Code] = loc + } + + newLocations := make([]models.Location, 0) + updateLocations := make([]models.Location, 0) + successCodes := make([]string, 0) + + for _, code := range codes { + item := codeMap[code] + + if existingLoc, exists := existingCodeMap[code]; exists { + existingLoc.Capacity = item.SheQuantityMax + existingLoc.UpdatedAt = now + updateLocations = append(updateLocations, existingLoc) + successCodes = append(successCodes, code) + } else { + newLocation := models.Location{ + WarehouseID: warehouseID, + Code: item.Code, + Type: 1, + Capacity: item.SheQuantityMax, + Status: 1, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + newLocations = append(newLocations, newLocation) + successCodes = append(successCodes, code) + } + } + + if len(newLocations) > 0 { + if err := tx.Create(&newLocations).Error; err != nil { + return result, errors.New("批量创建库位失败") + } + } + + if len(updateLocations) > 0 { + for i := range updateLocations { + if err := tx.Save(&updateLocations[i]).Error; err != nil { + result.FailCodes = append(result.FailCodes, updateLocations[i].Code+":更新失败") + for j, code := range successCodes { + if code == updateLocations[i].Code { + successCodes = append(successCodes[:j], successCodes[j+1:]...) + break + } + } + } + } + } + + result.SuccessCodes = successCodes + result.SuccessCount = len(successCodes) + result.FailCount = len(result.FailCodes) + + return result, nil +} + +// SyncGoods 同步商品数据并创建库存 +func (s *LocationService) SyncGoods(req systemReq.SyncGoodsRequest) (*systemRes.SyncGoodsResponse, error) { + databaseConn, err := database.GetTenantDB(req.UserID) + if err != nil { + return nil, fmt.Errorf("获取数据库连接失败: %v", err) + } + + result := &systemRes.SyncGoodsResponse{ + SuccessCount: 0, + FailCount: 0, + Message: "", + } + + if len(req.Data) == 0 { + result.Message = "数据为空" + return result, nil + } + + now := time.Now().Unix() + successCount := 0 + failCount := 0 + var failMessages []string + + tx := databaseConn.Begin() + defer func() { + if r := recover(); r != nil { + tx.Rollback() + } + }() + + locationCodes := make([]string, 0, len(req.Data)) + for _, item := range req.Data { + locationCodes = append(locationCodes, item.LocationCode) + } + + var locations []models.Location + if err := tx.Where("code IN ? AND is_del = ?", locationCodes, 0).Find(&locations).Error; err != nil { + tx.Rollback() + return nil, fmt.Errorf("查询库位失败: %v", err) + } + + locationMap := make(map[string]models.Location) + for _, loc := range locations { + locationMap[loc.Code] = loc + } + + newProducts := make([]models.Product, 0, len(req.Data)) + for _, item := range req.Data { + _, exists := locationMap[item.LocationCode] + if !exists { + failCount++ + failMessages = append(failMessages, fmt.Sprintf("%s: 库位%s不存在", item.GoodsName, item.LocationCode)) + continue + } + + var liveImage datatypes.JSON + if len(item.LiveImage) > 0 { + jsonBytes, _ := json.Marshal(item.LiveImage) + liveImage = jsonBytes + } else { + liveImage = datatypes.JSON("[]") + } + + product := models.Product{ + CategoryID: 1, + StandardProductID: 1, + Name: item.GoodsName, + Appearance: s.parseAppearance(item.Appearance), + Barcode: item.ISBN, + Price: 0, + SalePrice: item.Price, + Cost: 0, + LiveImage: liveImage, + IsBatchManaged: 0, + IsShelfLifeManaged: 0, + Status: 1, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + newProducts = append(newProducts, product) + } + + if len(newProducts) > 0 { + if err := tx.Create(&newProducts).Error; err != nil { + tx.Rollback() + return nil, fmt.Errorf("批量创建商品失败: %v", err) + } + } + + newInventories := make([]models.Inventory, 0, len(newProducts)) + newInventoryDetails := make([]models.InventoryDetail, 0, len(newProducts)) + + for i, item := range req.Data { + loc, exists := locationMap[item.LocationCode] + if !exists { + failCount++ + continue + } + + if i >= len(newProducts) { + failCount++ + continue + } + + product := newProducts[i] + quantity := item.Inventory + + inventory := models.Inventory{ + WarehouseID: loc.WarehouseID, + ProductID: product.ID, + BatchNo: "", + ProductionDate: 0, + ExpiryDate: 0, + Quantity: quantity, + LockedQuantity: 0, + AvailableQuantity: quantity, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + newInventories = append(newInventories, inventory) + + inventoryDetail := models.InventoryDetail{ + WarehouseID: loc.WarehouseID, + LocationID: loc.ID, + ProductID: product.ID, + BatchNo: "", + ProductionDate: 0, + ExpiryDate: 0, + Quantity: quantity, + LockedQuantity: 0, + AvailableQuantity: quantity, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + newInventoryDetails = append(newInventoryDetails, inventoryDetail) + + successCount++ + } + + if len(newInventories) > 0 { + if err := tx.Create(&newInventories).Error; err != nil { + tx.Rollback() + return nil, fmt.Errorf("批量创建库存汇总失败: %v", err) + } + } + + if len(newInventoryDetails) > 0 { + if err := tx.Create(&newInventoryDetails).Error; err != nil { + tx.Rollback() + return nil, fmt.Errorf("批量创建库存明细失败: %v", err) + } + } + + if err := tx.Commit().Error; err != nil { + return nil, fmt.Errorf("提交事务失败: %v", err) + } + + result.SuccessCount = successCount + result.FailCount = failCount + + if failCount > 0 { + result.Message = fmt.Sprintf("同步完成:成功%d个,失败%d个", successCount, failCount) + if len(failMessages) <= 5 { + result.Message += fmt.Sprintf(",失败详情:%v", failMessages) + } + } else { + result.Message = fmt.Sprintf("同步完成:全部成功,共%d个", successCount) + } + + return result, nil +} + +// parseAppearance 解析品相字符串为整数 +func (s *LocationService) parseAppearance(appearance string) int64 { + var result int64 + fmt.Sscanf(appearance, "%d", &result) + return result +} + +func generateLevelValues(config systemReq.GroupConfig) ([]string, error) { + values := make([]string, 0) + + switch config.FormatType { + case 1: + startChar := strings.ToUpper(config.StartValue) + endChar := strings.ToUpper(config.EndValue) + + if len(startChar) != 1 || len(endChar) != 1 { + return nil, errors.New("字母格式起始值和结束值必须是单个字母") + } + + startNum := charToNum(startChar[0]) + endNum := charToNum(endChar[0]) + + if startNum == -1 || endNum == -1 { + return nil, errors.New("无效的字母范围") + } + + if startNum > endNum { + return nil, errors.New("起始字母不能大于结束字母") + } + + for i := startNum; i <= endNum; i++ { + val := string(numToChar(i)) + paddingLen := config.PaddingLen + if paddingLen > 0 { + val = fmt.Sprintf("%0"+strconv.Itoa(paddingLen)+"s", val) + } + values = append(values, val) + } + + case 2: + startNum, err := strconv.Atoi(config.StartValue) + if err != nil { + return nil, errors.New("数字格式起始值必须是数字") + } + + endNum, err := strconv.Atoi(config.EndValue) + if err != nil { + return nil, errors.New("数字格式结束值必须是数字") + } + + if startNum > endNum { + return nil, errors.New("起始数字不能大于结束数字") + } + + for i := startNum; i <= endNum; i++ { + val := strconv.Itoa(i) + paddingLen := config.PaddingLen + if paddingLen > 0 { + val = fmt.Sprintf("%0"+strconv.Itoa(paddingLen)+"d", i) + } + values = append(values, val) + } + + case 3: + parts := strings.Split(config.StartValue, ",") + if len(parts) != 2 { + return nil, errors.New("字母+数字格式起始值格式错误,应为:字母,数字") + } + + startChar := strings.ToUpper(strings.TrimSpace(parts[0])) + startNumStr := strings.TrimSpace(parts[1]) + + parts = strings.Split(config.EndValue, ",") + if len(parts) != 2 { + return nil, errors.New("字母+数字格式结束值格式错误,应为:字母,数字") + } + + endChar := strings.ToUpper(strings.TrimSpace(parts[0])) + endNumStr := strings.TrimSpace(parts[1]) + + if len(startChar) != 1 || len(endChar) != 1 { + return nil, errors.New("字母部分必须是单个字母") + } + + startCharNum := charToNum(startChar[0]) + endCharNum := charToNum(endChar[0]) + + if startCharNum == -1 || endCharNum == -1 { + return nil, errors.New("无效的字母") + } + + startNum, err := strconv.Atoi(startNumStr) + if err != nil { + return nil, errors.New("起始数字部分必须是数字") + } + + endNum, err := strconv.Atoi(endNumStr) + if err != nil { + return nil, errors.New("结束数字部分必须是数字") + } + + if startCharNum > endCharNum { + return nil, errors.New("起始字母不能大于结束字母") + } + + for c := startCharNum; c <= endCharNum; c++ { + for n := startNum; n <= endNum; n++ { + charVal := string(numToChar(c)) + numVal := strconv.Itoa(n) + if config.PaddingLen > 0 { + numVal = fmt.Sprintf("%0"+strconv.Itoa(config.PaddingLen)+"d", n) + } + values = append(values, charVal+numVal) + } + } + case 4: + parts := strings.Split(config.StartValue, ",") + if len(parts) != 2 { + return nil, errors.New("数字+字母格式起始值格式错误,应为:数字,字母") + } + + startNumStr := strings.TrimSpace(parts[0]) + startChar := strings.ToUpper(strings.TrimSpace(parts[1])) + + parts = strings.Split(config.EndValue, ",") + if len(parts) != 2 { + return nil, errors.New("数字+字母格式结束值格式错误,应为:数字,字母") + } + + endNumStr := strings.TrimSpace(parts[0]) + endChar := strings.ToUpper(strings.TrimSpace(parts[1])) + + if len(startChar) != 1 || len(endChar) != 1 { + return nil, errors.New("字母部分必须是单个字母") + } + + startNum, err := strconv.Atoi(startNumStr) + if err != nil { + return nil, errors.New("起始数字部分必须是数字") + } + + endNum, err := strconv.Atoi(endNumStr) + if err != nil { + return nil, errors.New("结束数字部分必须是数字") + } + + startCharNum := charToNum(startChar[0]) + endCharNum := charToNum(endChar[0]) + + if startCharNum == -1 || endCharNum == -1 { + return nil, errors.New("无效的字母") + } + + if startNum > endNum { + return nil, errors.New("起始数字不能大于结束数字") + } + + for n := startNum; n <= endNum; n++ { + for c := startCharNum; c <= endCharNum; c++ { + numVal := strconv.Itoa(n) + if config.PaddingLen > 0 { + numVal = fmt.Sprintf("%0"+strconv.Itoa(config.PaddingLen)+"d", n) + } + charVal := string(numToChar(c)) + values = append(values, numVal+charVal) + } + } + + default: + return nil, errors.New("不支持的格式类型") + } + + if len(values) == 0 { + return nil, errors.New("生成的值为空") + } + + return values, nil +} + +func charToNum(c byte) int { + if c >= 'A' && c <= 'Z' { + return int(c - 'A') + } + if c >= 'a' && c <= 'z' { + return int(c - 'a') + } + return -1 +} + +func numToChar(n int) byte { + if n >= 0 && n < 26 { + return byte('A' + n) + } + return 0 +} diff --git a/service/location_import.go b/service/location_import.go new file mode 100644 index 0000000..5f13242 --- /dev/null +++ b/service/location_import.go @@ -0,0 +1,140 @@ +package service + +import ( + "fmt" + "strings" + "time" + + "github.com/xuri/excelize/v2" + "gorm.io/gorm" + + "psi/database" + "psi/models" + "psi/models/request" +) + +// LocationImportService 库位导入服务 +type LocationImportService struct{} + +// LOCATION_IMPORT_COLUMNS 库位导入表格列(仅1列) +var LOCATION_IMPORT_COLUMNS = []string{"库位编码"} + +// LocationImportResult 导入结果 +type LocationImportResult struct { + SuccessCount int + FailCount int + FailList []string + Message string +} + +// AddFail 添加失败记录 +func (r *LocationImportResult) AddFail(reason string) { + r.FailCount++ + r.FailList = append(r.FailList, reason) +} + +// ParseLocationImportExcel 解析Excel文件为库位行数据 +func (s *LocationImportService) ParseLocationImportExcel(fileBytes []byte) ([]request.LocationImportRow, error) { + f, err := excelize.OpenReader(strings.NewReader(string(fileBytes))) + if err != nil { + return nil, fmt.Errorf("无法打开Excel文件: %v", err) + } + defer f.Close() + + rows, err := f.GetRows(f.GetSheetName(0)) + if err != nil { + return nil, fmt.Errorf("读取Sheet失败: %v", err) + } + + if len(rows) < 2 { + return nil, fmt.Errorf("Excel至少需要表头+1行数据") + } + + // 校验表头 + header := rows[0] + if len(header) < len(LOCATION_IMPORT_COLUMNS) { + return nil, fmt.Errorf("表头列数不足,期望%d列(库位编码),实际%d列", len(LOCATION_IMPORT_COLUMNS), len(header)) + } + + var result []request.LocationImportRow + for i := 1; i < len(rows); i++ { + row := rows[i] + code := strings.TrimSpace(getCell(row, 0)) + if code == "" { + continue + } + result = append(result, request.LocationImportRow{Code: code}) + } + + return result, nil +} + +// getCell 安全获取单元格值 +func getCell(row []string, idx int) string { + if idx < len(row) { + return row[idx] + } + return "" +} + +// ImportLocationsFromExcel 从Excel导入库位(事务内批量创建) +func (s *LocationImportService) ImportLocationsFromExcel(userID, warehouseID int64, rows []request.LocationImportRow) (*LocationImportResult, error) { + databaseConn, err := database.GetTenantDB(userID) + if err != nil { + return nil, fmt.Errorf("获取数据库连接失败: %v", err) + } + + result := &LocationImportResult{} + + err = databaseConn.Transaction(func(tx *gorm.DB) error { + now := time.Now().Unix() + + for _, row := range rows { + code := strings.TrimSpace(row.Code) + if code == "" { + result.AddFail("库位编码为空") + continue + } + + // 检查同仓库下是否已存在 + var existing models.Location + if err := tx.Where("warehouse_id = ? AND code = ? AND is_del = ?", warehouseID, code, 0).First(&existing).Error; err == nil { + result.AddFail(fmt.Sprintf("%s: 库位已存在", code)) + continue + } + + loc := models.Location{ + WarehouseID: warehouseID, + Code: code, + Type: 1, // 存储库位 + Capacity: 255, + Sort: 0, + Status: 1, // 启用 + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + if err := tx.Create(&loc).Error; err != nil { + result.AddFail(fmt.Sprintf("%s: 创建失败: %v", code, err)) + continue + } + + result.SuccessCount++ + } + + return nil + }) + + if err != nil { + return nil, fmt.Errorf("导入库位事务失败: %v", err) + } + + if result.FailCount > 0 { + result.Message = fmt.Sprintf("成功 %d 条,失败 %d 条。失败明细: %s", + result.SuccessCount, result.FailCount, strings.Join(result.FailList, "; ")) + } else { + result.Message = fmt.Sprintf("全部成功,共 %d 条", result.SuccessCount) + } + + return result, nil +} diff --git a/service/logistics.go b/service/logistics.go new file mode 100644 index 0000000..4517cc2 --- /dev/null +++ b/service/logistics.go @@ -0,0 +1,255 @@ +package service + +import ( + "encoding/json" + "errors" + "gorm.io/gorm" + "log" + "math" + "psi/database" + "psi/models" + "psi/models/request" + "psi/models/response" + "strconv" + "time" +) + +type LogisticsService struct{} + +func (s *LogisticsService) GetLogisticsList(req request.QueryLogisticsRequest, db ...*gorm.DB) ([]response.LogisticsResponse, int64, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.Logistics{}).Where("del_flag = ?", "0") + + if req.Keyword != "" { + query = query.Where("template_name LIKE ? OR delivery_province LIKE ? OR delivery_city LIKE ?", + "%"+req.Keyword+"%", "%"+req.Keyword+"%", "%"+req.Keyword+"%") + } + + if req.Status != nil { + query = query.Where("status = ?", *req.Status) + } + + // === debug: 打印完整SQL === + log.Printf("[GetLogisticsList] 请求参数 page=%d pageSize=%d keyword=%q", req.Page, req.PageSize, req.Keyword) + // === debug end === + + var total int64 + if err := query.Debug().Count(&total).Error; err != nil { + return nil, 0, errors.New("查询物流模板总数失败") + } + + var logistics []models.Logistics + offset := (req.Page - 1) * req.PageSize + if err := query.Debug().Order("id DESC").Offset(offset).Limit(req.PageSize).Find(&logistics).Error; err != nil { + return nil, 0, errors.New("查询物流模板列表失败") + } + + responses := make([]response.LogisticsResponse, 0, len(logistics)) + for _, item := range logistics { + resp := response.ConvertLogisticsToResponse(item) + responses = append(responses, resp) + } + + return responses, total, nil +} + +func (s *LogisticsService) GetLogisticsByID(id uint64, db ...*gorm.DB) (*response.LogisticsResponse, error) { + databaseConn := database.OptionalDB(db...) + + var logistics models.Logistics + if err := databaseConn.Where("id = ? AND del_flag = ?", id, "0").First(&logistics).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, errors.New("物流模板不存在") + } + return nil, errors.New("查询物流模板失败") + } + + resp := response.ConvertLogisticsToResponse(logistics) + return &resp, nil +} + +// calculateMinFirstFee 从 shipping_range JSON 中计算最小首费 +func (s *LogisticsService) calculateMinFirstFee(shippingRange string) (float64, error) { + if shippingRange == "" { + return 0, errors.New("运送范围不能为空") + } + + var rangeMap map[string][]interface{} + if err := json.Unmarshal([]byte(shippingRange), &rangeMap); err != nil { + return 0, errors.New("运送范围格式错误") + } + + minFee := math.MaxFloat64 + found := false + + for _, values := range rangeMap { + if len(values) < 2 { + continue + } + + // values[1] 是首费,可能是 string 或 float64 + var fee float64 + switch v := values[1].(type) { + case float64: + fee = v + case string: + var err error + fee, err = strconv.ParseFloat(v, 64) + if err != nil { + continue + } + default: + continue + } + + if fee < minFee { + minFee = fee + } + found = true + } + + if !found { + return 0, errors.New("运送范围数据格式错误") + } + + return minFee, nil +} + +func (s *LogisticsService) CreateLogistics(req request.CreateLogisticsRequest, db ...*gorm.DB) (uint64, error) { + databaseConn := database.OptionalDB(db...) + + var count int64 + databaseConn.Model(&models.Logistics{}). + Where("template_name = ? AND del_flag = ?", req.TemplateName, "0"). + Count(&count) + if count > 0 { + return 0, errors.New("物流模板名称已存在") + } + + // 计算最小首费 + minFirPrice, err := s.calculateMinFirstFee(req.ShippingRange) + if err != nil { + return 0, err + } + + now := time.Now() + logistics := models.Logistics{ + TemplateName: req.TemplateName, + DeliveryProvince: req.DeliveryProvince, + DeliveryCity: req.DeliveryCity, + DeliveryArea: req.DeliveryArea, + DeliveryAddress: req.DeliveryAddress, + PricingMethod: req.PricingMethod, + Shipping: req.Shipping, + FirWbv: req.FirWbv, + FirPrice: minFirPrice, + ContinueWbv: req.ContinueWbv, + ContinuePrice: req.ContinuePrice, + Contact: req.Contact, + PhoneNumber: req.PhoneNumber, + FullAddress: req.FullAddress, + ShippingRange: req.ShippingRange, + WarehouseId: req.WarehouseId, + Remark: req.Remark, + Status: req.Status, + DelFlag: "0", + CreateTime: &now, + UpdateTime: &now, + } + + if logistics.Status == "" { + logistics.Status = "0" + } + + if err := databaseConn.Create(&logistics).Error; err != nil { + return 0, errors.New("创建物流模板失败") + } + + return logistics.Id, nil +} + +func (s *LogisticsService) UpdateLogistics(req request.UpdateLogisticsRequest, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + var logistics models.Logistics + if err := databaseConn.Where("id = ? AND del_flag = ?", req.Id, "0").First(&logistics).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return errors.New("物流模板不存在") + } + return errors.New("查询物流模板失败") + } + + var count int64 + databaseConn.Model(&models.Logistics{}). + Where("template_name = ? AND id != ? AND del_flag = ?", req.TemplateName, req.Id, "0"). + Count(&count) + if count > 0 { + return errors.New("物流模板名称已存在") + } + + // 计算最小首费 + minFirPrice, err := s.calculateMinFirstFee(req.ShippingRange) + if err != nil { + return err + } + + now := time.Now() + updates := map[string]interface{}{ + "template_name": req.TemplateName, + "delivery_province": req.DeliveryProvince, + "delivery_city": req.DeliveryCity, + "delivery_area": req.DeliveryArea, + "delivery_address": req.DeliveryAddress, + "pricing_method": req.PricingMethod, + "shipping": req.Shipping, + "fir_wbv": req.FirWbv, + "fir_price": minFirPrice, + "continue_wbv": req.ContinueWbv, + "continue_price": req.ContinuePrice, + "contact": req.Contact, + "phone_number": req.PhoneNumber, + "full_address": req.FullAddress, + "shipping_range": req.ShippingRange, + "warehouse_id": req.WarehouseId, + "remark": req.Remark, + "status": req.Status, + "update_time": &now, + } + + if err := databaseConn.Model(&logistics).Updates(updates).Error; err != nil { + return errors.New("更新物流模板失败") + } + + return nil +} + +func (s *LogisticsService) DeleteLogistics(id uint64, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + if id == 0 { + return errors.New("物流模板ID不能为空") + } + + var logistics models.Logistics + if err := databaseConn.Where("id = ? AND del_flag = ?", id, "0").First(&logistics).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return errors.New("物流模板不存在") + } + return errors.New("查询物流模板失败") + } + + now := time.Now() + if err := databaseConn.Model(&logistics).Update("del_flag", "1").Update("update_time", &now).Error; err != nil { + return errors.New("删除物流模板失败") + } + + return nil +} diff --git a/service/ocr.go b/service/ocr.go new file mode 100644 index 0000000..9231a9a --- /dev/null +++ b/service/ocr.go @@ -0,0 +1,446 @@ +package service + +import ( + "bytes" + "encoding/base64" + "encoding/json" + "fmt" + "io" + "net/http" + "psi/config" + systemRes "psi/models/response" + "regexp" + "strings" + "time" +) + +type OcrService struct{} + +type ocrServiceRequest struct { + ImageBase64 string `json:"image_base64"` +} + +type ocrServiceResponse struct { + Error string `json:"error,omitempty"` + Texts []string `json:"texts,omitempty"` +} + +func (s *OcrService) RecognizeText(imageData []byte) (systemRes.OcrResponse, error) { + base64Data := base64.StdEncoding.EncodeToString(imageData) + + reqBody := ocrServiceRequest{ + ImageBase64: base64Data, + } + + jsonData, err := json.Marshal(reqBody) + if err != nil { + return systemRes.OcrResponse{}, fmt.Errorf("序列化请求数据失败: %v", err) + } + + ocrServiceURL := config.AppConfig.OCR.ServiceUrl + client := &http.Client{Timeout: 60 * time.Second} + resp, err := client.Post(ocrServiceURL, "application/json", bytes.NewReader(jsonData)) + if err != nil { + return systemRes.OcrResponse{}, fmt.Errorf("调用OCR服务失败: %v", err) + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return systemRes.OcrResponse{}, fmt.Errorf("读取OCR响应失败: %v", err) + } + + var ocrResp ocrServiceResponse + if err := json.Unmarshal(body, &ocrResp); err != nil { + return systemRes.OcrResponse{}, fmt.Errorf("解析OCR响应失败: %v", err) + } + + if ocrResp.Error != "" { + return systemRes.OcrResponse{}, fmt.Errorf("OCR识别错误: %s", ocrResp.Error) + } + guessedInfo := s.analyzeBookInfo(ocrResp.Texts) + return systemRes.OcrResponse{ + Success: true, + Texts: ocrResp.Texts, + GuessBookInfo: guessedInfo, + }, nil +} + +type candidate struct { + text string + priority int + index int +} + +func (s *OcrService) analyzeBookInfo(texts []string) systemRes.GuessBookInfo { + var result systemRes.GuessBookInfo + + if len(texts) == 0 { + return result + } + + var bookNameCandidates []candidate + var authorCandidates []candidate + var publisherCandidates []candidate + + for i, text := range texts { + text = strings.TrimSpace(text) + if text == "" { + continue + } + + if s.isBookName(text) { + bookNameCandidates = append(bookNameCandidates, candidate{text, s.calculateBookNameScore(text), i}) + } + + if author := s.extractAuthor(text); author != "" { + authorCandidates = append(authorCandidates, candidate{author, s.calculateAuthorScore(author, text), i}) + } + + if publisher := s.extractPublisher(text); publisher != "" { + publisherCandidates = append(publisherCandidates, candidate{publisher, s.calculatePublisherScore(publisher), i}) + } + } + + if len(bookNameCandidates) > 0 { + bestCandidate := s.selectBestCandidate(bookNameCandidates) + result.BookName = bestCandidate.text + } + + if len(authorCandidates) > 0 { + bestCandidate := s.selectBestCandidate(authorCandidates) + result.Author = bestCandidate.text + } + + if len(publisherCandidates) > 0 { + bestCandidate := s.selectBestCandidate(publisherCandidates) + result.Publisher = bestCandidate.text + } + + return result +} + +func (s *OcrService) isBookName(text string) bool { + if len(text) < 2 || len(text) > 30 { + return false + } + + if s.hasAuthorMarker(text) || s.hasPublisherMarker(text) { + return false + } + + invalidPatterns := []string{ + `^\d+$`, + `^[A-Z]{1,3}$`, + `^[\p{P}]+$`, + `^\d+\.`, + `^第\d+[卷册部辑]`, + } + + for _, pattern := range invalidPatterns { + if matched, _ := regexp.MatchString(pattern, text); matched { + return false + } + } + + descriptionKeywords := []string{ + "版本", "插图", "阅读", "经典", "名家", "开本", + "精装", "平装", "修订版", "增补版", "全集", "选集", + "注释版", "译本", "原版", "引进版", "推荐", "畅销", + "全新", "最新", "权威", "完整版", "简体", "繁体", + "定价", "售价", "元", "ISBN", "书号", "条码", + "出版社", "出版", "发行", "印刷", "印次", "版次", + "字数", "页数", "张", "册", + "丛书", "系列", "文库", "书系", "读本", "教材", + "教辅", "考试", "习题", "练习", "答案", "解析", + "上册", "下册", "上卷", "下卷", "第一卷", "第二卷", + "前言", "序言", "目录", "附录", "后记", "跋", + "简介", "摘要", "概述", "导读", "书评", "推荐语", + "获奖", "荣获", "提名", "榜单", "排行榜", + "扫码", "二维码", "公众号", "微信", "关注", + "配套", "资源", "下载", "音频", "视频", "课件", + "适用", "适合", "读者", "对象", "年龄", "岁", + "教育部", "新课标", "统编", "部编", "人教版", + } + + textLower := strings.ToLower(text) + for _, keyword := range descriptionKeywords { + if strings.Contains(textLower, keyword) { + return false + } + } + + if strings.Count(text, ",") >= 2 || strings.Count(text, ",") >= 2 { + return false + } + + if strings.HasSuffix(text, "。") || strings.HasSuffix(text, ".") { + return false + } + + if regexp.MustCompile(`\d{4,}`).MatchString(text) { + return false + } + + if regexp.MustCompile(`[¥¥\$]\d+`).MatchString(text) { + return false + } + + chineseChars := regexp.MustCompile(`[\p{Han}]`) + chineseCount := len(chineseChars.FindAllString(text, -1)) + if chineseCount < 2 { + return false + } + + if float64(chineseCount) < float64(len([]rune(text)))*0.3 { + return false + } + + if strings.Contains(text, " ") && chineseCount <= 10 { + parts := strings.Fields(text) + if len(parts) >= 2 { + allShortNames := true + for _, part := range parts { + part = strings.TrimSpace(part) + partChars := regexp.MustCompile(`[\p{Han}]`) + partChineseCount := len(partChars.FindAllString(part, -1)) + if partChineseCount < 2 || partChineseCount > 4 { + allShortNames = false + break + } + } + if allShortNames && len(parts) <= 3 { + return false + } + } + } + + return true +} + +func (s *OcrService) extractAuthor(text string) string { + if s.hasAuthorMarker(text) { + cleaned := s.removeAuthorMarker(text) + cleaned = strings.TrimSpace(cleaned) + if cleaned != "" && len(cleaned) >= 2 && len(cleaned) <= 20 { + return cleaned + } + } + + if text == "主编" || text == "副主编" || text == "编著" || text == "编译" { + return "" + } + + chineseChars := regexp.MustCompile(`[\p{Han}]`) + chineseCount := len(chineseChars.FindAllString(text, -1)) + + if chineseCount >= 2 && chineseCount <= 15 { + hasSpace := strings.Contains(text, " ") || strings.Contains(text, " ") + hasDot := strings.Contains(text, "·") + + if hasSpace || hasDot { + parts := regexp.MustCompile(`[\s·]+`).Split(text, -1) + allChinese := true + for _, part := range parts { + part = strings.TrimSpace(part) + if part == "" { + continue + } + partChars := regexp.MustCompile(`[\p{Han}]`) + if len(partChars.FindAllString(part, -1)) != len([]rune(part)) { + allChinese = false + break + } + } + + if allChinese && len(parts) >= 2 { + return text + } + } + + if !hasSpace && !hasDot && chineseCount >= 2 && chineseCount <= 4 { + invalidAuthorWords := []string{"主编", "副主编", "编著", "编译", "责任编辑", "责任校对", "封面设计"} + for _, word := range invalidAuthorWords { + if strings.Contains(text, word) { + return "" + } + } + + return text + } + } + + return "" +} + +func (s *OcrService) extractPublisher(text string) string { + publisherKeywords := []string{ + "出版社", "出版", "press", "Publishing", + } + + textLower := strings.ToLower(text) + for _, keyword := range publisherKeywords { + if strings.Contains(textLower, strings.ToLower(keyword)) { + return text + } + } + return "" +} + +func (s *OcrService) hasAuthorMarker(text string) bool { + markers := []string{"著", "编", "作者", "/", "·"} + for _, marker := range markers { + if strings.Contains(text, marker) { + return true + } + } + return false +} + +func (s *OcrService) hasPublisherMarker(text string) bool { + markers := []string{"出版社", "出版", "press", "Publishing"} + textLower := strings.ToLower(text) + for _, marker := range markers { + if strings.Contains(textLower, strings.ToLower(marker)) { + return true + } + } + + publisherPatterns := []string{ + `^.*人民.*出[版报]`, + `^.*大学.*出版`, + `^.*文艺.*出版`, + `^.*科技.*出版`, + `^.*教育.*出版`, + `^.*美术.*出版`, + `^.*音乐.*出版`, + `^.*古籍.*出版`, + `^.*少年.*儿童.*出版`, + `^.*出版.*集团`, + } + + for _, pattern := range publisherPatterns { + if matched, _ := regexp.MatchString(pattern, text); matched { + return true + } + } + + if strings.Contains(text, "人民") && (strings.Contains(text, "出") || strings.Contains(text, "版")) { + return true + } + + return false +} + +func (s *OcrService) removeAuthorMarker(text string) string { + result := text + + markerPatterns := []string{ + `\s*(?:主编|副主编|编著|编译|编者|译者|著者|作者)[著编译者]*$`, + `\s*[著编译者]+$`, + `/[著编译编著译者作者]+$`, + `/.*$`, + } + + for _, pattern := range markerPatterns { + re := regexp.MustCompile(pattern) + if re.MatchString(result) { + result = re.ReplaceAllString(result, "") + break + } + } + + return strings.TrimSpace(result) +} + +func (s *OcrService) calculateBookNameScore(text string) int { + score := 0 + + chineseChars := regexp.MustCompile(`[\p{Han}]`) + chineseCount := len(chineseChars.FindAllString(text, -1)) + score += chineseCount * 2 + + if len(text) >= 2 && len(text) <= 10 { + score += 10 + } else if len(text) >= 11 && len(text) <= 20 { + score += 5 + } + + if regexp.MustCompile(`[《》]`).MatchString(text) { + score += 15 + } + + if chineseCount >= 4 { + score += 10 + } + + if regexp.MustCompile(`^[A-Z]`).MatchString(text) { + score -= 5 + } + + if chineseCount >= 6 { + score += 5 + } + + return score +} + +func (s *OcrService) calculateAuthorScore(author, originalText string) int { + score := 0 + + if strings.Contains(originalText, "/") { + score += 10 + } + + if strings.Contains(originalText, "著") { + score += 8 + } else if strings.Contains(originalText, "编") { + score += 6 + } else if strings.Contains(originalText, "译") { + score += 5 + } + + chineseChars := regexp.MustCompile(`[\p{Han}]`) + chineseCount := len(chineseChars.FindAllString(author, -1)) + score += chineseCount * 3 + + if len(author) >= 2 && len(author) <= 5 { + score += 10 + } + + if strings.Contains(author, " ") || strings.Contains(author, "·") { + score += 8 + } + + return score +} + +func (s *OcrService) calculatePublisherScore(text string) int { + score := 0 + + if strings.Contains(text, "出版社") { + score += 20 + } else if strings.Contains(text, "出版") { + score += 10 + } + + if strings.Contains(strings.ToLower(text), "press") { + score += 15 + } + + return score +} + +func (s *OcrService) selectBestCandidate(candidates []candidate) candidate { + if len(candidates) == 0 { + return candidate{} + } + + best := candidates[0] + for _, c := range candidates[1:] { + if c.priority > best.priority { + best = c + } + } + return best +} diff --git a/service/out_task.go b/service/out_task.go new file mode 100644 index 0000000..ceaa016 --- /dev/null +++ b/service/out_task.go @@ -0,0 +1,297 @@ +package service + +import ( + "fmt" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + "time" + + "gorm.io/gorm" +) + +type OutTaskService struct{} + +// GetOutTaskList 获取外部任务列表 +func (s *OutTaskService) GetOutTaskList(req systemReq.GetOutTaskListRequest, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.OutTaskListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.OutTask{}).Where("out_task.is_del = ?", 0) + + if req.ShopID > 0 { + query = query.Where("out_task.shop_id = ?", req.ShopID) + } + if req.WaveTaskID > 0 { + query = query.Where("out_task.wave_task_id = ?", req.WaveTaskID) + } + if req.ShopType > 0 { + query = query.Where("out_task.shop_type = ?", req.ShopType) + } + if req.TaskType > 0 { + query = query.Where("out_task.task_type = ?", req.TaskType) + } + if req.StartDate > 0 { + query = query.Where("out_task.created_at >= ?", req.StartDate) + } + if req.EndDate > 0 { + query = query.Where("out_task.created_at <= ?", req.EndDate) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if total == 0 { + return &systemRes.OutTaskListResponse{ + List: []systemRes.OutTaskItem{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + var tasks []models.OutTask + offset := (req.Page - 1) * req.PageSize + if err := query.Order("out_task.created_at DESC"). + Offset(offset). + Limit(req.PageSize). + Find(&tasks).Error; err != nil { + return nil, utils.NewError("查询外部任务列表失败") + } + + taskItems := make([]systemRes.OutTaskItem, 0, len(tasks)) + for _, task := range tasks { + taskItems = append(taskItems, systemRes.ConvertOutTaskToItem(task)) + } + + return &systemRes.OutTaskListResponse{ + List: taskItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetOutTaskLogList 获取外部任务日志列表 +func (s *OutTaskService) GetOutTaskLogList(req systemReq.GetOutTaskLogListRequest, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.OutTaskLogListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.OutTaskLog{}).Where("out_task_log.is_del = ?", 0).Where("out_task_log.out_task_id = ?", req.OutTaskID) + + if req.ShopID > 0 { + query = query.Where("out_task_log.shop_id = ?", req.ShopID) + } + if req.WaveTaskID > 0 { + query = query.Where("out_task_log.wave_task_id = ?", req.WaveTaskID) + } + if req.ProductID > 0 { + query = query.Where("out_task_log.product_id = ?", req.ProductID) + } + if req.Status >= 0 { + query = query.Where("out_task_log.status = ?", req.Status) + } + if req.StartDate > 0 { + query = query.Where("out_task_log.created_at >= ?", req.StartDate) + } + if req.EndDate > 0 { + query = query.Where("out_task_log.created_at <= ?", req.EndDate) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if total == 0 { + return &systemRes.OutTaskLogListResponse{ + List: []systemRes.OutTaskLogItem{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + var logs []models.OutTaskLog + offset := (req.Page - 1) * req.PageSize + if err := query.Order("out_task_log.created_at DESC"). + Offset(offset). + Limit(req.PageSize). + Find(&logs).Error; err != nil { + return nil, utils.NewError("查询外部任务日志列表失败") + } + + logItems := make([]systemRes.OutTaskLogItem, 0, len(logs)) + for _, log := range logs { + logItems = append(logItems, systemRes.ConvertOutTaskLogToItem(log)) + } + + return &systemRes.OutTaskLogListResponse{ + List: logItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetOutTaskByShop 按店铺分组获取外部任务列表 +func (s *OutTaskService) GetOutTaskByShop(req systemReq.GetOutTaskByShopRequest, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.OutTaskByShopResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + // 构建查询条件 + query := databaseConn.Model(&models.OutTask{}).Where("out_task.is_del = ?", 0) + + if req.ShopID > 0 { + query = query.Where("out_task.shop_id = ?", req.ShopID) + } + if req.ShopType > 0 { + query = query.Where("out_task.shop_type = ?", req.ShopType) + } + if req.StartDate > 0 { + query = query.Where("out_task.created_at >= ?", req.StartDate) + } + if req.EndDate > 0 { + query = query.Where("out_task.created_at <= ?", req.EndDate) + } + + // 获取总数 + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if total == 0 { + return &systemRes.OutTaskByShopResponse{ + List: []systemRes.OutTaskShopGroup{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + // 分页查询任务列表 + var tasks []models.OutTask + offset := (req.Page - 1) * req.PageSize + if err := query.Order("out_task.shop_id ASC, out_task.created_at DESC"). + Offset(offset). + Limit(req.PageSize). + Find(&tasks).Error; err != nil { + return nil, utils.NewError("查询外部任务列表失败") + } + + // 按店铺分组 + shopGroupMap := make(map[int64]*systemRes.OutTaskShopGroup) + shopIDs := make([]int64, 0) + + for _, task := range tasks { + if _, exists := shopGroupMap[task.ShopID]; !exists { + shopIDs = append(shopIDs, task.ShopID) + shopGroupMap[task.ShopID] = &systemRes.OutTaskShopGroup{ + ShopID: task.ShopID, + ShopType: task.ShopType, + ShopTypeText: systemRes.GetShopTypeText(task.ShopType), + Tasks: []systemRes.OutTaskDetail{}, + } + } + + taskDetail := systemRes.ConvertOutTaskToDetail(task) + shopGroupMap[task.ShopID].Tasks = append(shopGroupMap[task.ShopID].Tasks, taskDetail) + } + + // 批量查询店铺名称 + shopNameMap := make(map[int64]string) + if len(shopIDs) > 0 { + var shops []models.Shop + if err := databaseConn.Model(&models.Shop{}). + Where("id IN ? AND del_flag = ?", shopIDs, 0). + Find(&shops).Error; err == nil { + for _, shop := range shops { + shopNameMap[shop.ID] = shop.ShopAliasName + } + } + } + + // 为每个任务查询日志明细 + for shopID, shopGroup := range shopGroupMap { + shopGroup.ShopName = shopNameMap[shopID] + + for i := range shopGroup.Tasks { + task := &shopGroup.Tasks[i] + + // 只查询已发送任务的日志 + if task.OutTaskID == 0 { + continue + } + + var logs []models.OutTaskLog + if err := databaseConn.Model(&models.OutTaskLog{}). + Where("out_task_log.out_task_id = ? AND out_task_log.is_del = ?", task.OutTaskID, 0). + Order("out_task_log.created_at DESC"). + Find(&logs).Error; err == nil { + + logItems := make([]systemRes.OutTaskLogItem, 0, len(logs)) + for _, log := range logs { + logItems = append(logItems, systemRes.ConvertOutTaskLogToItem(log)) + } + task.Logs = logItems + } + } + } + + // 转换为列表 + shopGroups := make([]systemRes.OutTaskShopGroup, 0, len(shopGroupMap)) + for _, group := range shopGroupMap { + shopGroups = append(shopGroups, *group) + } + + return &systemRes.OutTaskByShopResponse{ + List: shopGroups, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +func (s *OutTaskService) UpdateOutTaskLog(req systemReq.UpdateOutTaskLogRequest) error { + databaseConn, err := database.GetTenantDB(req.UserID) + if err != nil { + return fmt.Errorf("获取数据库连接失败: %v", err) + } + + var log models.OutTaskLog + if err := databaseConn.Where("out_task_id = ? AND product_id = ?", req.OutTaskID, req.ProductID).First(&log).Error; err != nil { + return fmt.Errorf("查询外部任务日志失败: %v", err) + } + + if err := databaseConn.Model(&log).Updates(map[string]interface{}{ + "status": 2, + "updated_at": time.Now().Unix(), + }).Error; err != nil { + return fmt.Errorf("更新外部任务日志失败: %v", err) + } + + return nil +} diff --git a/service/outbound.go b/service/outbound.go new file mode 100644 index 0000000..b204646 --- /dev/null +++ b/service/outbound.go @@ -0,0 +1,176 @@ +package service + +import ( + "fmt" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + + "gorm.io/gorm" +) + +type OutboundService struct{} + +// GetOutboundOrderList 获取出库单列表 +func (s *OutboundService) GetOutboundOrderList(req systemReq.GetOutboundOrderListRequest, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.OutboundOrderListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.OutboundOrder{}).Where("outbound_order.is_del = ?", 0) + + if req.Status > 0 { + query = query.Where("outbound_order.status = ?", req.Status) + } + if req.CustomerID > 0 { + query = query.Where("outbound_order.customer_id = ?", req.CustomerID) + } + if req.WarehouseID > 0 { + query = query.Where("outbound_order.warehouse_id = ?", req.WarehouseID) + } + if req.OutNo != "" { + query = query.Where("outbound_order.out_no LIKE ?", "%"+req.OutNo+"%") + } + if req.StartDate > 0 { + query = query.Where("outbound_order.created_at >= ?", req.StartDate) + } + if req.EndDate > 0 { + query = query.Where("outbound_order.created_at <= ?", req.EndDate) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if total == 0 { + return &systemRes.OutboundOrderListResponse{ + List: []systemRes.OutboundOrderItem{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + var orders []systemRes.OutboundOrderWithInfo + offset := (req.Page - 1) * req.PageSize + if err := query.Select("outbound_order.*, c.name as customer_name, w.name as warehouse_name"). + Joins("LEFT JOIN customer c ON outbound_order.customer_id = c.id AND c.is_del = 0"). + Joins("LEFT JOIN warehouse w ON outbound_order.warehouse_id = w.id AND w.is_del = 0"). + Order("outbound_order.created_at DESC"). + Offset(offset). + Limit(req.PageSize). + Find(&orders).Error; err != nil { + return nil, utils.NewError("查询出库单列表失败") + } + + orderItems := make([]systemRes.OutboundOrderItem, 0, len(orders)) + for _, order := range orders { + var shopList []systemRes.OutboundShopInfo + + var shops []struct { + ShopName string `gorm:"column:shop_name"` + ShopType int8 `gorm:"column:shop_type"` + } + + databaseConn.Table("outbound_order_item"). + Select("DISTINCT so.sales_person as shop_name, so.shop_type as shop_type"). + Joins("INNER JOIN sales_order so ON outbound_order_item.sales_order_id = so.id AND so.is_del = 0"). + Where("outbound_order_item.out_order_id = ? AND outbound_order_item.is_del = ?", order.ID, 0). + Scan(&shops) + + for _, shop := range shops { + shopList = append(shopList, systemRes.OutboundShopInfo{ + ShopName: shop.ShopName, + ShopType: shop.ShopType, + ShopTypeText: systemRes.GetShopTypeText(shop.ShopType), + }) + } + + orderItems = append(orderItems, systemRes.ConvertOutboundOrderToItem( + order.OutboundOrder, + order.CustomerName, + order.WarehouseName, + shopList, + )) + } + + return &systemRes.OutboundOrderListResponse{ + List: orderItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetOutboundOrderDetail 获取出库单详情 +func (s *OutboundService) GetOutboundOrderDetail(id int64, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.OutboundOrderDetailResponse, error) { + databaseConn := database.OptionalDB(db...) + + query := databaseConn.Model(&models.OutboundOrder{}). + Select("outbound_order.*, c.name as customer_name, w.name as warehouse_name"). + Joins("LEFT JOIN customer c ON outbound_order.customer_id = c.id AND c.is_del = 0"). + Joins("LEFT JOIN warehouse w ON outbound_order.warehouse_id = w.id AND w.is_del = 0"). + Where("outbound_order.id = ? AND outbound_order.is_del = ?", id, 0) + + // 打印SQL调试 + sqlStmt := query.Session(&gorm.Session{DryRun: true}).First(&systemRes.OutboundOrderWithInfo{}).Statement + fmt.Println("Generated SQL:", sqlStmt.SQL.String(), "Vars:", sqlStmt.Vars) + + var order systemRes.OutboundOrderWithInfo + result := query.First(&order) + + if result.Error != nil { + return nil, utils.NewError("出库单不存在") + } + + var items []systemRes.OutboundOrderItemWithProduct + itemQuery := databaseConn.Model(&models.OutboundOrderItem{}). + Select("outbound_order_item.*, p.name as product_name, p.barcode as product_code, p.category_id, c.name as category_name, l.code as location_name, w.name as warehouse_name, w.code as warehouse_code, so.so_no as sales_order_no"). + Joins("LEFT JOIN product p ON outbound_order_item.product_id = p.id AND p.is_del = 0"). + Joins("LEFT JOIN product_category c ON p.category_id = c.id AND c.is_del = 0"). + Joins("LEFT JOIN location l ON outbound_order_item.location_id = l.id AND l.is_del = 0"). + Joins("LEFT JOIN warehouse w ON l.warehouse_id = w.id AND w.is_del = 0"). + Joins("LEFT JOIN sales_order so ON outbound_order_item.sales_order_id = so.id AND so.is_del = 0"). + Where("outbound_order_item.out_order_id = ? AND outbound_order_item.is_del = ?", order.ID, 0) + + // 打印SQL调试 + itemSqlStmt := itemQuery.Session(&gorm.Session{DryRun: true}).Find(&[]systemRes.OutboundOrderItemWithProduct{}).Statement + fmt.Println("Generated SQL:", itemSqlStmt.SQL.String(), "Vars:", itemSqlStmt.Vars) + + itemQuery.Find(&items) + + detailItems := make([]systemRes.OutboundOrderDetailItem, 0, len(items)) + for _, item := range items { + detailItems = append(detailItems, systemRes.OutboundOrderDetailItem{ + ID: item.ID, + OutboundOrderID: item.OutOrderID, + SalesOrderNo: item.SalesOrderNo, + ProductID: item.ProductID, + ProductName: item.ProductName, + ProductCode: item.ProductCode, + CategoryID: item.CategoryID, + CategoryName: item.CategoryName, + LocationID: item.LocationID, + LocationName: item.LocationName, + WarehouseName: item.WarehouseName, + WarehouseCode: item.WarehouseCode, + BatchNo: item.BatchNo, + ProductionDate: item.ProductionDate, + ExpiryDate: item.ExpiryDate, + Quantity: item.Quantity, + CreatedAt: item.CreatedAt, + UpdatedAt: item.UpdatedAt, + }) + } + + detail := systemRes.ConvertOutboundOrderToDetail(order.OutboundOrder, order.CustomerName, order.WarehouseName, detailItems) + return &detail, nil +} diff --git a/service/process.go b/service/process.go new file mode 100644 index 0000000..5d11658 --- /dev/null +++ b/service/process.go @@ -0,0 +1,4381 @@ +package service + +import ( + "encoding/json" + "errors" + "fmt" + "gorm.io/datatypes" + "gorm.io/gorm" + "gorm.io/gorm/clause" + "net/http" + "net/url" + "psi/config" + "psi/constant" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + "strconv" + "strings" + "time" +) + +type ProcessService struct{} + +// WaveItemData 波次商品数据 +type WaveItemData struct { + ProductID int64 // 商品ID + Quantity int64 // 数量 + UnitPrice int64 // 单价 + LocationID int64 // 库位ID(出库时使用,入库时为0) +} + +// inventoryKey 库存键(用于唯一标识库存记录) +type inventoryKey struct { + warehouseID int64 // 仓库ID + productID int64 // 商品ID + batchNo string // 批次号 + productionDate int64 // 生产日期 + expiryDate int64 // 过期日期 +} + +// inventoryOperation 库存操作 +type inventoryOperation struct { + key inventoryKey // 库存键 + locationID int64 // 库位ID + quantity int64 // 数量 +} + +// orderInfo 订单信息 +type orderInfo struct { + orderID int64 // 订单ID + orderNo string // 订单号 + warehouseID int64 // 仓库ID + status int // 订单状态 +} + +// orderItemInfo 订单商品信息 +type orderItemInfo struct { + productID int64 // 商品ID + locationID int64 // 库位ID + batchNo string // 批次号 + productionDate int64 // 生产日期 + expiryDate int64 // 过期日期 + quantity int64 // 数量 +} + +// CreatePurchaseOrderWithWave 创建采购单并生成入库波次 +func (s *ProcessService) CreatePurchaseOrderWithWave(req systemReq.PurchaseOrderCreateRequest, creator string, creatorID int64, carCapacity int, db ...*gorm.DB) (int64, int64, error) { + databaseConn := database.OptionalDB(db...) + + // 检查仓库是否绑定了运费模板 + var warehouse models.Warehouse + if err := databaseConn.Where("id = ? AND is_del = ?", req.WarehouseID, 0).First(&warehouse).Error; err != nil { + return 0, 0, fmt.Errorf("仓库不存在: %v", err) + } + + if warehouse.LogisticsID == 0 { + return 0, 0, fmt.Errorf("该仓库未绑定运费模板,请先绑定运费模板后再创建采购订单") + } + + if len(req.Items) > carCapacity { + return 0, 0, fmt.Errorf("采购订单和波次的明细数量不能超过%d条,当前为%d条", carCapacity, len(req.Items)) + } + now := time.Now().Unix() + poNo := utils.GeneratePoNo() + waveNo, err := s.generateWaveNo(constant.DirectionInbound, databaseConn) + if err != nil { + return 0, 0, fmt.Errorf("生成波次号失败: %v", err) + } + + var totalAmount int64 + for _, item := range req.Items { + totalAmount += item.Quantity * item.UnitPrice + } + + var purchaseOrderID int64 + var waveID int64 + err = executeInTransactionWithDB(databaseConn, func(tx *gorm.DB) error { + purchaseOrder := models.PurchaseOrder{ + PoNo: poNo, + SupplierID: req.SupplierID, + WarehouseID: req.WarehouseID, + OrderDate: now, + ExpectedArrivalDate: req.ExpectedArrivalDate, + TotalAmount: totalAmount, + Status: constant.PurchaseStatusSubmitted, + Creator: creator, + CreatorID: creatorID, + Remark: req.Remark, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := tx.Create(&purchaseOrder).Error; err != nil { + return fmt.Errorf("创建采购订单失败: %v", err) + } + + purchaseOrderID = purchaseOrder.ID + + waveHeader, err := s.createWaveHeader(tx, waveNo, constant.DirectionInbound, req.WarehouseID, purchaseOrder.ID, creator, creatorID) + if err != nil { + return err + } + waveID = waveHeader.ID + + return nil + }) + + if err != nil { + return 0, 0, err + } + + return purchaseOrderID, waveID, nil +} + +// ReleaseWave 提交/追加,生成采购订单明细和波次任务明细 如果波次状态为已创建,则首次提交;如果为已下发,则追加数据 +func (s *ProcessService) ReleaseWave(req systemReq.WaveRequest, carCapacity int64, db ...*gorm.DB) (int64, string, error) { + + databaseConn := database.OptionalDB(db...) + + now := time.Now().Unix() + + var waveID int64 + var waveNo string + + err := executeInTransactionWithDB(databaseConn, func(tx *gorm.DB) error { + var waveHeader models.WaveHeader + if err := tx.Where("id = ? AND is_del = 0", req.WaveID).First(&waveHeader).Error; err != nil { + return fmt.Errorf("波次不存在: %v", err) + } + + if waveHeader.Direction != constant.DirectionInbound { + return fmt.Errorf("该波次不是入库波次,无法提交") + } + + if waveHeader.Status != constant.WaveStatusCreated && waveHeader.Status != constant.WaveStatusReleased { + return fmt.Errorf("波次状态不正确,当前状态: %s,只有已创建或已下发状态才能提交", getWaveStatusText(waveHeader.Status)) + } + + var purchaseOrder models.PurchaseOrder + if err := tx.Where("id = ? AND is_del = 0", req.RelatedOrderID).First(&purchaseOrder).Error; err != nil { + return fmt.Errorf("采购订单不存在: %v", err) + } + + if waveHeader.RelatedOrderID != 0 && waveHeader.RelatedOrderID != purchaseOrder.ID { + return fmt.Errorf("波次与采购订单不匹配") + } + + if purchaseOrder.Status != constant.PurchaseStatusDraft && + purchaseOrder.Status != constant.PurchaseStatusSubmitted && + purchaseOrder.Status != constant.PurchaseStatusApproved { + return fmt.Errorf("采购订单状态不正确,当前状态: %s,无法提交", getPurchaseStatusText(purchaseOrder.Status)) + } + + isAppend := waveHeader.Status == constant.WaveStatusReleased + + var waveTask models.WaveTask + var existingTotalQuantity int64 + var batchNo string + + if isAppend { + if err := tx.Where("wave_id = ? AND is_del = 0", waveHeader.ID).First(&waveTask).Error; err != nil { + return fmt.Errorf("查询波次任务失败: %v", err) + } + + if waveTask.ID == 0 { + return fmt.Errorf("波次下没有任务,请先创建任务") + } + + if waveTask.Status >= constant.WaveStatusPicking { + return fmt.Errorf("波次任务[%s]状态已进入拣货阶段,无法追加数据", waveTask.TaskNo) + } + + var firstDetail models.WaveTaskDetail + if err := tx.Where("wave_task_id = ? AND is_del = 0", waveTask.ID).Order("id ASC").First(&firstDetail).Error; err != nil { + return fmt.Errorf("查询任务[%s]现有批次号失败: %v", waveTask.TaskNo, err) + } + + batchNo = firstDetail.BatchNo + + if err := tx.Model(&models.WaveTaskDetail{}). + Where("wave_task_id = ? AND is_del = 0", waveTask.ID). + Select("COALESCE(SUM(planned_quantity), 0)"). + Scan(&existingTotalQuantity).Error; err != nil { + return fmt.Errorf("查询任务[%s]现有数量失败: %v", waveTask.TaskNo, err) + } + } + + items := make([]WaveItemData, 0, len(req.Items)) + purchaseOrderItems := make([]models.PurchaseOrderItem, 0, len(req.Items)) + var additionalAmount int64 + var newItemsTotalQuantity int64 + + for _, itemReq := range req.Items { + amount := itemReq.Quantity * itemReq.UnitPrice + additionalAmount += amount + newItemsTotalQuantity += itemReq.Quantity + + items = append(items, WaveItemData{ + ProductID: itemReq.ProductID, + Quantity: itemReq.Quantity, + UnitPrice: itemReq.UnitPrice, + LocationID: 0, + }) + + purchaseOrderItems = append(purchaseOrderItems, models.PurchaseOrderItem{ + PurchaseOrderID: req.RelatedOrderID, + ProductID: itemReq.ProductID, + Quantity: itemReq.Quantity, + ReceivedQuantity: 0, + UnitPrice: itemReq.UnitPrice, + Amount: amount, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + }) + } + + if isAppend { + totalAfterAppend := existingTotalQuantity + newItemsTotalQuantity + if totalAfterAppend > carCapacity { + return fmt.Errorf("波次任务[%s]追加后商品总数为%d,超过小车容量限制%d", waveTask.TaskNo, totalAfterAppend, carCapacity) + } + + err := s.createWaveTaskDetails(tx, waveTask.ID, items, batchNo) + if err != nil { + return fmt.Errorf("为任务[%s]追加明细失败: %v", waveTask.TaskNo, err) + } + + newTotalAmount := purchaseOrder.TotalAmount + additionalAmount + if err := tx.Model(&models.PurchaseOrder{}).Where("id = ?", purchaseOrder.ID).Updates(map[string]interface{}{ + "total_amount": newTotalAmount, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新采购订单总金额失败: %v", err) + } + } else { + if newItemsTotalQuantity > carCapacity { + return fmt.Errorf("波次任务商品总数为%d,超过小车容量限制%d", newItemsTotalQuantity, carCapacity) + } + + waveTask, err := s.createWaveTaskAndDetails(tx, req.WaveID, constant.TaskTypePutaway, items, req.Assignee, req.AssigneeId, req.CarID, req.CarCode, carCapacity) + if err != nil { + return err + } + + if err := s.syncTaskToExternal(waveTask.ID, carCapacity, tx); err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "入库任务外部接口", + "error": fmt.Sprintf("同步失败: %v", err), + }) + } + } + + if err := tx.Create(&purchaseOrderItems).Error; err != nil { + return fmt.Errorf("批量创建采购订单明细失败: %v", err) + } + + if waveHeader.Status == constant.WaveStatusCreated { + if err := s.updateWaveStatusToReleased(tx, waveHeader.ID); err != nil { + return fmt.Errorf("更新波次状态失败: %v", err) + } + } + + waveID = waveHeader.ID + waveNo = waveHeader.WaveNo + + return nil + }) + + if err != nil { + return 0, "", err + } + + return waveID, waveNo, nil +} + +// BindWave 绑定波次,创建入库单 +func (s *ProcessService) BindWave(req systemReq.BindWaveRequest, db ...*gorm.DB) (int64, int64, string, error) { + + databaseConn := database.OptionalDB(db...) + + now := time.Now().Unix() + var receivingOrderID int64 + var waveTaskID int64 + var waveTaskBatchNo string + + err := executeInTransactionWithDB(databaseConn, func(tx *gorm.DB) error { + var waveHeader models.WaveHeader + if err := tx.Where("wave_no = ? AND is_del = 0", req.WaveNo).First(&waveHeader).Error; err != nil { + return fmt.Errorf("波次不存在: %v", err) + } + + var waveTask models.WaveTask + if err := tx.Where("wave_id = ? AND is_del = 0", waveHeader.ID).First(&waveTask).Error; err != nil { + return fmt.Errorf("波次任务不存在: %v", err) + } + + waveTaskID = waveTask.ID + + if waveTask.Type != constant.TaskTypePutaway { + return fmt.Errorf("该任务不是入库任务") + } + + if waveTask.Status != constant.WaveStatusReleased && waveTask.Status != constant.WaveStatusCreated { + return fmt.Errorf("波次任务状态不正确,当前状态: %s", getWaveStatusText(waveTask.Status)) + } + + var purchaseOrder models.PurchaseOrder + if err := tx.Where("id = ? AND is_del = 0", waveHeader.RelatedOrderID).First(&purchaseOrder).Error; err != nil { + return fmt.Errorf("采购订单不存在: %v", err) + } + + receivingNo := utils.GenerateReceivingNo() + + receivingOrder := models.ReceivingOrder{ + ReceivingNo: receivingNo, + PurchaseOrderID: purchaseOrder.ID, + WaveTaskID: waveTaskID, + WarehouseID: purchaseOrder.WarehouseID, + SupplierID: purchaseOrder.SupplierID, + ReceivingDate: now, + Status: constant.ReceivingStatusPending, + Operator: req.Operator, + OperatorID: req.OperatorID, + Remark: req.Remark, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := tx.Create(&receivingOrder).Error; err != nil { + return fmt.Errorf("创建入库单失败: %v", err) + } + + receivingOrderID = receivingOrder.ID + + if err := tx.Model(&models.WaveTask{}).Where("id = ?", waveTaskID).Updates(map[string]interface{}{ + "assignee": req.Operator, + "assignee_id": req.OperatorID, + }).Error; err != nil { + return fmt.Errorf("绑定指派人失败: %v", err) + } + + var waveTaskDetails []models.WaveTaskDetail + if err := tx.Where("wave_task_id = ? AND is_del = 0", waveTask.ID).Find(&waveTaskDetails).Error; err != nil { + return fmt.Errorf("查询波次任务明细失败: %v", err) + } + + waveTaskBatchNo = waveTaskDetails[0].BatchNo + + receivingItems := make([]models.ReceivingOrderItem, 0, len(waveTaskDetails)) + for _, detail := range waveTaskDetails { + receivingItems = append(receivingItems, models.ReceivingOrderItem{ + ReceivingOrderID: receivingOrder.ID, + ProductID: detail.ProductID, + LocationID: 0, + BatchNo: detail.BatchNo, + ProductionDate: 0, + ExpiryDate: 0, + Quantity: 0, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + }) + } + + if err := tx.Create(&receivingItems).Error; err != nil { + return fmt.Errorf("批量创建入库单明细失败: %v", err) + } + + if err := s.updateWaveTaskToPicking(tx, waveTask.ID); err != nil { + return fmt.Errorf("更新波次任务状态失败: %v", err) + } + + return nil + }) + + if err != nil { + return 0, 0, "", err + } + + return receivingOrderID, waveTaskID, waveTaskBatchNo, nil +} + +// GetWaveTaskInfo 获取波次任务信息(兼容入库和出库) +func (s *ProcessService) GetWaveTaskInfo(waveTaskID int64, db ...*gorm.DB) (interface{}, error) { + databaseConn := database.OptionalDB(db...) + + var waveTask models.WaveTask + if err := databaseConn.Where("id = ? AND is_del = 0", waveTaskID).First(&waveTask).Error; err != nil { + return nil, fmt.Errorf("波次任务不存在: %v", err) + } + + var waveHeader models.WaveHeader + if err := databaseConn.Where("id = ?", waveTask.WaveID).First(&waveHeader).Error; err != nil { + return nil, fmt.Errorf("波次不存在: %v", err) + } + + var waveTaskDetails []models.WaveTaskDetail + if err := databaseConn.Where("wave_task_id = ? AND is_del = 0", waveTaskID).Find(&waveTaskDetails).Error; err != nil { + return nil, fmt.Errorf("查询波次任务明细失败: %v", err) + } + + productIDs := make([]int64, 0, len(waveTaskDetails)) + locationIDs := make([]int64, 0, len(waveTaskDetails)) + for _, detail := range waveTaskDetails { + productIDs = append(productIDs, detail.ProductID) + if detail.LocationID > 0 { + locationIDs = append(locationIDs, detail.LocationID) + } + } + + var products []models.Product + if len(productIDs) > 0 { + if err := databaseConn.Where("id IN ? AND is_del = 0", productIDs).Find(&products).Error; err != nil { + return nil, fmt.Errorf("查询商品信息失败: %v", err) + } + } + + var locations []models.Location + if len(locationIDs) > 0 { + if err := databaseConn.Where("id IN ? AND is_del = 0", locationIDs).Find(&locations).Error; err != nil { + return nil, fmt.Errorf("查询库位信息失败: %v", err) + } + } + + productMap := make(map[int64]models.Product) + for _, product := range products { + productMap[product.ID] = product + } + + locationMap := make(map[int64]models.Location) + for _, location := range locations { + locationMap[location.ID] = location + } + + items := make([]map[string]interface{}, 0, len(waveTaskDetails)) + for _, detail := range waveTaskDetails { + product, exists := productMap[detail.ProductID] + if !exists { + continue + } + + item := map[string]interface{}{ + "product_id": detail.ProductID, + "product_name": product.Name, + "product_code": product.Barcode, + "planned_quantity": detail.PlannedQuantity, + "actual_quantity": detail.ActualQuantity, + } + + if detail.LocationID > 0 { + if location, exists := locationMap[detail.LocationID]; exists { + item["location_id"] = location.ID + item["location_code"] = location.Code + } + } + + items = append(items, item) + } + + result := map[string]interface{}{ + "wave_task_id": waveTask.ID, + "task_no": waveTask.TaskNo, + "type": waveTask.Type, + "status": waveTask.Status, + "assignee": waveTask.Assignee, + "direction": waveHeader.Direction, + "warehouse_id": waveHeader.WarehouseID, + "items": items, + } + + return result, nil +} + +// SubmitReceiving 提交入库 +func (s *ProcessService) SubmitReceiving(req systemReq.ReceivingSubmitRequest, operator string, operatorID, userID int64, db ...*gorm.DB) error { + items := make([]orderItemInfo, 0, len(req.Items)) + for _, item := range req.Items { + items = append(items, orderItemInfo{ + productID: item.ProductID, + locationID: item.LocationID, + batchNo: item.BatchNo, + productionDate: item.ProductionDate, + expiryDate: item.ExpiryDate, + quantity: item.Quantity, + }) + } + + err := s.submitOrderOperation(req.ReceivingOrderID, req.WaveTaskID, items, operator, operatorID, userID, constant.InventoryChangeInbound, req.Force, db...) + + if err == nil { + s.saveStatist(userID, constant.InventoryChangeInbound, db...) + } + + return err +} + +// SubmitOutbound 提交出库 +func (s *ProcessService) SubmitOutbound(req systemReq.OutboundSubmitRequest, operator string, operatorID int64, db ...*gorm.DB) error { + + items := make([]orderItemInfo, 0, len(req.Items)) + for _, item := range req.Items { + items = append(items, orderItemInfo{ + productID: item.ProductID, + locationID: item.LocationID, + batchNo: item.BatchNo, + productionDate: item.ProductionDate, + expiryDate: item.ExpiryDate, + quantity: item.Quantity, + }) + } + + err := s.submitOrderOperation(req.OutboundOrderID, req.WaveTaskID, items, operator, operatorID, 0, constant.InventoryChangeOutbound, req.Force, db...) + + if err == nil { + s.saveStatist(operatorID, constant.InventoryChangeOutbound, db...) + } + + return err +} + +// submitOrderOperation 统一的订单提交操作(合并入库和出库逻辑) +func (s *ProcessService) submitOrderOperation(orderID, waveTaskID int64, items []orderItemInfo, operator string, operatorID, userID int64, changeType int8, force int8, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + now := time.Now().Unix() + + return executeInTransactionWithDB(databaseConn, func(tx *gorm.DB) error { + if force == 1 { + var waveTask models.WaveTask + if err := tx.Where("id = ? AND is_del = 0", waveTaskID).First(&waveTask).Error; err != nil { + return fmt.Errorf("查询波次任务失败: %v", err) + } + waveTask.Status = constant.WaveStatusCompleted + waveTask.CompletedAt = now + waveTask.UpdatedAt = now + waveTask.IsForce = 1 + if err := tx.Save(&waveTask).Error; err != nil { + return fmt.Errorf("更新波次任务状态失败: %v", err) + } + if err := tx.Model(&models.WaveHeader{}).Where("id = ? AND is_del = 0", waveTask.WaveID).Updates(map[string]interface{}{ + "status": constant.WaveStatusCompleted, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新波次主表状态失败: %v", err) + } + + if changeType == constant.InventoryChangeInbound { + if err := tx.Model(&models.ReceivingOrder{}).Where("id = ?", orderID).Updates(map[string]interface{}{ + "status": constant.ReceivingStatusCompleted, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新入库单状态失败: %v", err) + } + } else { + if err := tx.Model(&models.OutboundOrder{}).Where("id = ?", orderID).Updates(map[string]interface{}{ + "status": constant.OutboundStatusCompleted, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新出库单状态失败: %v", err) + } + } + } else { + orderInfo, err := s.validateAndGetOrderInfo(tx, orderID, waveTaskID, changeType) + if err != nil { + return err + } + + productMap, locationMap, err := s.validateProductsAndLocations(tx, items, orderInfo.warehouseID) + if err != nil { + return err + } + + orderItems, waveTaskDetails, err := s.loadOrderAndWaveDetails(tx, orderID, waveTaskID, changeType) + if err != nil { + return err + } + + if changeType == constant.InventoryChangeOutbound { + if err := s.validateOutboundQuantity(tx, orderID, items); err != nil { + return err + } + } + + inventoryOpMap, inventoryLogs, err := s.processOrderItems(tx, items, orderInfo, productMap, locationMap, orderItems, waveTaskDetails, operator, operatorID, now, changeType) + if err != nil { + return err + } + + if err := s.executeInventoryOperations(tx, inventoryOpMap, inventoryLogs, orderInfo.orderNo, operator, operatorID, now, changeType); err != nil { + return err + } + + if err := s.batchUpdateOrderItems(tx, orderItems, changeType); err != nil { + return err + } + + if err := s.batchUpdateWaveTaskDetails(tx, waveTaskDetails); err != nil { + return err + } + + if err := s.updateOrderAndTaskStatus(tx, orderInfo, waveTaskDetails, waveTaskID, now, changeType); err != nil { + return err + } + + if changeType == constant.InventoryChangeOutbound { + if err := s.updateOutboundOrderSummary(tx, orderID, now); err != nil { + return fmt.Errorf("更新出库单汇总信息失败: %v", err) + } + } + + if changeType == constant.InventoryChangeInbound { + if err := s.updatePurchaseOrderReceivedStatus(tx, orderID, now); err != nil { + return fmt.Errorf("更新采购订单收货状态失败: %v", err) + } + + if err := s.syncProductsToExternal(orderID, waveTaskID, userID, items, tx); err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "入库发送任务体", + "receiving_order_id": orderID, + "wave_task_id": waveTaskID, + "error": fmt.Sprintf("发送失败: %v", err), + }) + } + } + + } + + return nil + }) +} + +// validateAndGetOrderInfo 验证并获取订单信息 +func (s *ProcessService) validateAndGetOrderInfo(tx *gorm.DB, orderID, waveTaskID int64, changeType int8) (*orderInfo, error) { + if changeType == constant.InventoryChangeInbound { + var receivingOrder models.ReceivingOrder + if err := tx.Where("id = ? AND is_del = 0", orderID).First(&receivingOrder).Error; err != nil { + return nil, fmt.Errorf("入库单不存在: %v", err) + } + + if receivingOrder.Status == constant.ReceivingStatusCompleted { + return nil, fmt.Errorf("入库单已完成,无法继续入库") + } + if receivingOrder.Status == constant.ReceivingStatusCancelled { + return nil, fmt.Errorf("入库单已取消") + } + + var waveTask models.WaveTask + if err := tx.Where("id = ? AND is_del = 0", waveTaskID).First(&waveTask).Error; err != nil { + return nil, fmt.Errorf("波次任务不存在: %v", err) + } + + return &orderInfo{ + orderID: receivingOrder.ID, + orderNo: receivingOrder.ReceivingNo, + warehouseID: receivingOrder.WarehouseID, + status: int(receivingOrder.Status), + }, nil + } else { + var outboundOrder models.OutboundOrder + if err := tx.Where("id = ? AND is_del = 0", orderID).First(&outboundOrder).Error; err != nil { + return nil, fmt.Errorf("出库单不存在: %v", err) + } + + if outboundOrder.Status == constant.OutboundStatusCompleted { + return nil, fmt.Errorf("出库单已完成,无法继续出库") + } + if outboundOrder.Status == constant.OutboundStatusCancelled { + return nil, fmt.Errorf("出库单已取消") + } + + var waveTask models.WaveTask + if err := tx.Where("id = ? AND is_del = 0", waveTaskID).First(&waveTask).Error; err != nil { + return nil, fmt.Errorf("波次任务不存在: %v", err) + } + + return &orderInfo{ + orderID: outboundOrder.ID, + orderNo: outboundOrder.OutNo, + warehouseID: outboundOrder.WarehouseID, + status: int(outboundOrder.Status), + }, nil + } +} + +// validateProductsAndLocations 验证商品和库位 +func (s *ProcessService) validateProductsAndLocations(tx *gorm.DB, items []orderItemInfo, warehouseID int64) (map[int64]models.Product, map[int64]models.Location, error) { + productIDs := make([]int64, 0, len(items)) + locationIDs := make([]int64, 0, len(items)) + + for _, item := range items { + if item.quantity <= 0 { + return nil, nil, fmt.Errorf("商品%d的数量必须大于0", item.productID) + } + productIDs = append(productIDs, item.productID) + locationIDs = append(locationIDs, item.locationID) + } + + var products []models.Product + if err := tx.Where("id IN ? AND is_del = 0", productIDs).Find(&products).Error; err != nil { + return nil, nil, fmt.Errorf("查询商品失败: %v", err) + } + + productMap := make(map[int64]models.Product) + for _, p := range products { + if p.Status != 1 { + return nil, nil, fmt.Errorf("商品%s已停用", p.Name) + } + productMap[p.ID] = p + } + + var locations []models.Location + if err := tx.Where("id IN ? AND is_del = 0", locationIDs).Find(&locations).Error; err != nil { + return nil, nil, fmt.Errorf("查询库位失败: %v", err) + } + + locationMap := make(map[int64]models.Location) + for _, l := range locations { + if l.Status != 1 { + return nil, nil, fmt.Errorf("库位%s不可用", l.Code) + } + if l.WarehouseID != warehouseID { + return nil, nil, fmt.Errorf("库位%s不属于该仓库", l.Code) + } + locationMap[l.ID] = l + } + + return productMap, locationMap, nil +} + +// loadOrderAndWaveDetails 加载订单明细和波次任务明细 +func (s *ProcessService) loadOrderAndWaveDetails(tx *gorm.DB, orderID, waveTaskID int64, changeType int8) (map[int64]interface{}, map[int64]*models.WaveTaskDetail, error) { + orderItemMap := make(map[int64]interface{}) + waveTaskDetailMap := make(map[int64]*models.WaveTaskDetail) + + if changeType == constant.InventoryChangeInbound { + var receivingOrderItems []models.ReceivingOrderItem + if err := tx.Where("receiving_order_id = ? AND is_del = 0", orderID).Find(&receivingOrderItems).Error; err != nil { + return nil, nil, fmt.Errorf("查询入库单明细失败: %v", err) + } + for i := range receivingOrderItems { + orderItemMap[receivingOrderItems[i].ProductID] = &receivingOrderItems[i] + } + } else { + var outboundOrderItems []models.OutboundOrderItem + if err := tx.Where("out_order_id = ? AND is_del = 0", orderID).Order("id ASC").Find(&outboundOrderItems).Error; err != nil { + return nil, nil, fmt.Errorf("查询出库单明细失败: %v", err) + } + // 出库使用索引作为key,保持顺序 + for i := range outboundOrderItems { + orderItemMap[int64(i)] = &outboundOrderItems[i] + } + } + + var waveTaskDetails []models.WaveTaskDetail + if err := tx.Where("wave_task_id = ? AND is_del = 0", waveTaskID).Order("id ASC").Find(&waveTaskDetails).Error; err != nil { + return nil, nil, fmt.Errorf("查询波次任务明细失败: %v", err) + } + + if changeType == constant.InventoryChangeInbound { + // 入库使用商品ID作为key + for i := range waveTaskDetails { + waveTaskDetailMap[waveTaskDetails[i].ProductID] = &waveTaskDetails[i] + } + } else { + // 出库使用索引作为key,保持顺序 + for i := range waveTaskDetails { + waveTaskDetailMap[int64(i)] = &waveTaskDetails[i] + } + } + + return orderItemMap, waveTaskDetailMap, nil +} + +// processOrderItems 处理订单明细 +func (s *ProcessService) processOrderItems(tx *gorm.DB, items []orderItemInfo, orderInfo *orderInfo, + productMap map[int64]models.Product, locationMap map[int64]models.Location, + orderItemMap map[int64]interface{}, waveTaskDetailMap map[int64]*models.WaveTaskDetail, + operator string, operatorID int64, now int64, changeType int8) (map[inventoryKey]*inventoryOperation, []models.InventoryLog, error) { + + inventoryOpMap := make(map[inventoryKey]*inventoryOperation) + + if changeType == constant.InventoryChangeInbound { + // 入库逻辑:按商品ID匹配 + for _, itemReq := range items { + if _, exists := productMap[itemReq.productID]; !exists { + return nil, nil, fmt.Errorf("商品不存在: %d", itemReq.productID) + } + + _, exists := locationMap[itemReq.locationID] + if !exists { + return nil, nil, fmt.Errorf("库位不存在: %d", itemReq.locationID) + } + + if orderItem, exists := orderItemMap[itemReq.productID]; exists { + receivingItem := orderItem.(*models.ReceivingOrderItem) + receivingItem.LocationID = itemReq.locationID + receivingItem.BatchNo = itemReq.batchNo + receivingItem.ProductionDate = itemReq.productionDate + receivingItem.ExpiryDate = itemReq.expiryDate + receivingItem.Quantity += itemReq.quantity + receivingItem.UpdatedAt = now + } else { + return nil, nil, fmt.Errorf("订单中不存在该商品: %d", itemReq.productID) + } + + waveTaskDetail, exists := waveTaskDetailMap[itemReq.productID] + if !exists { + return nil, nil, fmt.Errorf("波次任务明细不存在: %d", itemReq.productID) + } + + waveTaskDetail.ActualQuantity += itemReq.quantity + waveTaskDetail.LocationID = itemReq.locationID + waveTaskDetail.BatchNo = itemReq.batchNo + waveTaskDetail.UpdatedAt = now + + if waveTaskDetail.ActualQuantity >= waveTaskDetail.PlannedQuantity { + waveTaskDetail.Status = constant.WaveStatusReleased + } + + key := inventoryKey{ + warehouseID: orderInfo.warehouseID, + productID: itemReq.productID, + batchNo: itemReq.batchNo, + productionDate: itemReq.productionDate, + expiryDate: itemReq.expiryDate, + } + + if op, exists := inventoryOpMap[key]; exists { + op.quantity += itemReq.quantity + } else { + inventoryOpMap[key] = &inventoryOperation{ + key: key, + locationID: itemReq.locationID, + quantity: itemReq.quantity, + } + } + } + } else { + // 出库逻辑:支持两种情况 + // 1. 商品ID都不一样:通过商品ID直接匹配 + // 2. 商品ID有重复:在同一商品ID的记录中按数据库顺序依次匹配 + + // 用于跟踪每个商品ID已使用的索引位置(针对该商品ID的记录列表) + productUsedIndex := make(map[int64]int) + + // 构建商品ID到出库单明细列表的映射(保持数据库顺序) + productToOutboundItems := make(map[int64][]*models.OutboundOrderItem) + for i := int64(0); i < int64(len(orderItemMap)); i++ { + if orderItem, exists := orderItemMap[i]; exists { + item := orderItem.(*models.OutboundOrderItem) + productToOutboundItems[item.ProductID] = append(productToOutboundItems[item.ProductID], item) + } + } + + // 构建商品ID到波次任务明细列表的映射(保持数据库顺序) + productToWaveDetails := make(map[int64][]*models.WaveTaskDetail) + for i := int64(0); i < int64(len(waveTaskDetailMap)); i++ { + if detail, exists := waveTaskDetailMap[i]; exists { + productToWaveDetails[detail.ProductID] = append(productToWaveDetails[detail.ProductID], detail) + } + } + + for _, itemReq := range items { + if _, exists := productMap[itemReq.productID]; !exists { + return nil, nil, fmt.Errorf("商品不存在: %d", itemReq.productID) + } + + _, exists := locationMap[itemReq.locationID] + if !exists { + return nil, nil, fmt.Errorf("库位不存在: %d", itemReq.locationID) + } + + // 获取该商品ID对应的出库单明细列表 + outboundItems := productToOutboundItems[itemReq.productID] + if len(outboundItems) == 0 { + return nil, nil, fmt.Errorf("出库单中不存在商品ID=%d的明细记录", itemReq.productID) + } + + // 获取该商品ID已使用的索引(只在该商品ID的记录范围内使用) + usedIdx := productUsedIndex[itemReq.productID] + + // 如果已使用索引超出范围,说明没有更多可出库的记录 + if usedIdx >= len(outboundItems) { + return nil, nil, fmt.Errorf("商品ID=%d没有更多可出库的明细记录", itemReq.productID) + } + + // 在该商品ID的记录列表中,从上次使用的位置开始查找第一条未出库的记录 + var outboundItem *models.OutboundOrderItem + var foundIdx int + found := false + for i := usedIdx; i < len(outboundItems); i++ { + if outboundItems[i].Quantity == 0 { + outboundItem = outboundItems[i] + foundIdx = i + found = true + break + } + } + + if !found || outboundItem == nil { + return nil, nil, fmt.Errorf("商品ID=%d没有可出库的明细记录(所有记录都已出库)", itemReq.productID) + } + + // 更新该商品ID的已使用索引 + productUsedIndex[itemReq.productID] = foundIdx + 1 + + // 更新找到的出库单明细 + outboundItem.LocationID = itemReq.locationID + outboundItem.BatchNo = itemReq.batchNo + outboundItem.ProductionDate = itemReq.productionDate + outboundItem.ExpiryDate = itemReq.expiryDate + outboundItem.Quantity = itemReq.quantity + outboundItem.UpdatedAt = now + + // 获取该商品ID对应的波次任务明细列表 + waveDetails := productToWaveDetails[itemReq.productID] + if len(waveDetails) == 0 { + return nil, nil, fmt.Errorf("波次任务中不存在商品ID=%d的明细记录", itemReq.productID) + } + + // 在该商品ID的波次记录列表中,从上次使用的位置开始查找第一条未出库的记录 + waveUsedIdx := productUsedIndex[itemReq.productID] - 1 // 使用与出库单相同的索引位置 + var waveTaskDetail *models.WaveTaskDetail + + if waveUsedIdx < len(waveDetails) && waveDetails[waveUsedIdx].ActualQuantity == 0 { + // 直接使用对应位置的波次明细 + waveTaskDetail = waveDetails[waveUsedIdx] + } else { + // 如果对应位置不可用,则从该位置开始查找第一条可用的 + found = false + for i := waveUsedIdx; i < len(waveDetails); i++ { + if waveDetails[i].ActualQuantity == 0 { + waveTaskDetail = waveDetails[i] + found = true + break + } + } + if !found || waveTaskDetail == nil { + return nil, nil, fmt.Errorf("商品ID=%d没有可出库的波次任务明细记录", itemReq.productID) + } + } + + // 更新找到的波次任务明细 + waveTaskDetail.ActualQuantity = itemReq.quantity + waveTaskDetail.LocationID = itemReq.locationID + waveTaskDetail.BatchNo = itemReq.batchNo + waveTaskDetail.UpdatedAt = now + + if waveTaskDetail.ActualQuantity >= waveTaskDetail.PlannedQuantity { + waveTaskDetail.Status = constant.WaveStatusReleased + } + + key := inventoryKey{ + warehouseID: orderInfo.warehouseID, + productID: itemReq.productID, + batchNo: itemReq.batchNo, + productionDate: itemReq.productionDate, + expiryDate: itemReq.expiryDate, + } + + if op, exists := inventoryOpMap[key]; exists { + op.quantity += itemReq.quantity + } else { + inventoryOpMap[key] = &inventoryOperation{ + key: key, + locationID: itemReq.locationID, + quantity: itemReq.quantity, + } + } + } + } + + return inventoryOpMap, nil, nil +} + +// executeInventoryOperations 执行库存操作 +func (s *ProcessService) executeInventoryOperations(tx *gorm.DB, inventoryOpMap map[inventoryKey]*inventoryOperation, + inventoryLogs []models.InventoryLog, orderNo string, operator string, operatorID int64, now int64, changeType int8) error { + + for _, op := range inventoryOpMap { + log, err := s.processInventoryOperation(tx, op.key, op.locationID, op.quantity, changeType, orderNo, operator, operatorID, now) + if err != nil { + return err + } + if log != nil { + inventoryLogs = append(inventoryLogs, *log) + } + + if err := s.processInventoryDetailOperation(tx, op.key, op.locationID, op.quantity, changeType, now); err != nil { + return err + } + } + + if len(inventoryLogs) > 0 { + if err := tx.Create(&inventoryLogs).Error; err != nil { + return fmt.Errorf("批量创建库存日志失败: %v", err) + } + } + + return nil +} + +// batchUpdateOrderItems 批量更新订单明细 +func (s *ProcessService) batchUpdateOrderItems(tx *gorm.DB, orderItemMap map[int64]interface{}, changeType int8) error { + var errs []string + + for _, item := range orderItemMap { + if changeType == constant.InventoryChangeInbound { + receivingItem := item.(*models.ReceivingOrderItem) + // 在更新之前先获取原始数量 + var originalQuantity int64 + if err := tx.Model(&models.ReceivingOrderItem{}). + Where("id = ? AND is_del = 0", receivingItem.ID). + Select("quantity"). + Scan(&originalQuantity).Error; err != nil { + errs = append(errs, fmt.Sprintf("查询入库单明细ID=%d原始数量失败: %v", receivingItem.ID, err)) + continue + } + + // 计算本次实际入库数量 = 累加后的数量 - 原始数量 + actualInboundQuantity := receivingItem.Quantity - originalQuantity + + if err := tx.Model(receivingItem).Updates(map[string]interface{}{ + "location_id": receivingItem.LocationID, + "batch_no": receivingItem.BatchNo, + "production_date": receivingItem.ProductionDate, + "expiry_date": receivingItem.ExpiryDate, + "quantity": receivingItem.Quantity, + "updated_at": receivingItem.UpdatedAt, + }).Error; err != nil { + errs = append(errs, fmt.Sprintf("更新入库单明细ID=%d失败: %v", receivingItem.ID, err)) + } + + if actualInboundQuantity > 0 { + if err := tx.Model(&models.PurchaseOrderItem{}). + Where("purchase_order_id IN (SELECT purchase_order_id FROM receiving_order WHERE id = ?) AND product_id = ? AND is_del = 0", + receivingItem.ReceivingOrderID, receivingItem.ProductID). + Updates(map[string]interface{}{ + "received_quantity": gorm.Expr("received_quantity + ?", actualInboundQuantity), + "updated_at": receivingItem.UpdatedAt, + }).Error; err != nil { + errs = append(errs, fmt.Sprintf("更新采购订单明细商品ID=%d已收货数量失败: %v", receivingItem.ProductID, err)) + } + } + } else { + outboundItem := item.(*models.OutboundOrderItem) + if err := tx.Model(outboundItem).Updates(map[string]interface{}{ + "location_id": outboundItem.LocationID, + "batch_no": outboundItem.BatchNo, + "production_date": outboundItem.ProductionDate, + "expiry_date": outboundItem.ExpiryDate, + "quantity": outboundItem.Quantity, + "updated_at": outboundItem.UpdatedAt, + }).Error; err != nil { + errs = append(errs, fmt.Sprintf("更新出库单明细ID=%d失败: %v", outboundItem.ID, err)) + } + } + } + + if len(errs) > 0 { + return fmt.Errorf("批量更新订单明细失败: %s", strings.Join(errs, "; ")) + } + + return nil +} + +// batchUpdateWaveTaskDetails 批量更新波次任务明细 +func (s *ProcessService) batchUpdateWaveTaskDetails(tx *gorm.DB, waveTaskDetailMap map[int64]*models.WaveTaskDetail) error { + var errs []string + + for _, detail := range waveTaskDetailMap { + if err := tx.Model(detail).Updates(map[string]interface{}{ + "actual_quantity": detail.ActualQuantity, + "location_id": detail.LocationID, + "batch_no": detail.BatchNo, + "status": detail.Status, + "updated_at": detail.UpdatedAt, + }).Error; err != nil { + errs = append(errs, fmt.Sprintf("更新波次任务明细ID=%d失败: %v", detail.ID, err)) + } + } + + if len(errs) > 0 { + return fmt.Errorf("批量更新波次任务明细失败: %s", strings.Join(errs, "; ")) + } + + return nil +} + +// updateOrderAndTaskStatus 更新订单和任务状态 +func (s *ProcessService) updateOrderAndTaskStatus(tx *gorm.DB, orderInfo *orderInfo, waveTaskDetails map[int64]*models.WaveTaskDetail, waveTaskID int64, now int64, changeType int8) error { + allCompleted := true + for _, detail := range waveTaskDetails { + if detail.ActualQuantity < detail.PlannedQuantity { + allCompleted = false + break + } + } + + var waveTask models.WaveTask + if err := tx.Where("id = ? AND is_del = 0", waveTaskID).First(&waveTask).Error; err != nil { + return fmt.Errorf("查询波次任务失败: %v", err) + } + + if allCompleted { + waveTask.Status = constant.WaveStatusCompleted + waveTask.CompletedAt = now + waveTask.UpdatedAt = now + if err := tx.Save(&waveTask).Error; err != nil { + return fmt.Errorf("更新波次任务状态失败: %v", err) + } + + if err := tx.Model(&models.WaveHeader{}).Where("id = ? AND is_del = 0", waveTask.WaveID).Updates(map[string]interface{}{ + "status": constant.WaveStatusCompleted, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新波次主表状态失败: %v", err) + } + + if changeType == constant.InventoryChangeInbound { + if orderInfo.status != constant.ReceivingStatusCompleted { + if err := tx.Model(&models.ReceivingOrder{}).Where("id = ?", orderInfo.orderID).Updates(map[string]interface{}{ + "status": constant.ReceivingStatusCompleted, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新入库单状态失败: %v", err) + } + } + } else { + if orderInfo.status != constant.OutboundStatusCompleted { + if err := tx.Model(&models.OutboundOrder{}).Where("id = ?", orderInfo.orderID).Updates(map[string]interface{}{ + "status": constant.OutboundStatusCompleted, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新出库单状态失败: %v", err) + } + } + } + } else { + if changeType == constant.InventoryChangeInbound { + if orderInfo.status == constant.ReceivingStatusPending { + if err := tx.Model(&models.ReceivingOrder{}).Where("id = ?", orderInfo.orderID).Updates(map[string]interface{}{ + "status": constant.ReceivingStatusChecking, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新入库单状态失败: %v", err) + } + } + } else { + if orderInfo.status == constant.OutboundStatusCreated { + if err := tx.Model(&models.OutboundOrder{}).Where("id = ?", orderInfo.orderID).Updates(map[string]interface{}{ + "status": constant.OutboundStatusPicking, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新出库单状态失败: %v", err) + } + } + } + } + + return nil +} + +// updateOutboundOrderSummary 更新出库单汇总信息(总数量和总金额) +func (s *ProcessService) updateOutboundOrderSummary(tx *gorm.DB, outboundOrderID int64, now int64) error { + var outboundOrderItems []models.OutboundOrderItem + if err := tx.Where("out_order_id = ? AND is_del = 0", outboundOrderID).Find(&outboundOrderItems).Error; err != nil { + return fmt.Errorf("查询出库单明细失败: %v", err) + } + + totalQuantity := int64(0) + totalAmount := int64(0) + + for _, item := range outboundOrderItems { + totalQuantity += item.Quantity + totalAmount += item.Quantity * item.UnitPrice + } + + if err := tx.Model(&models.OutboundOrder{}).Where("id = ?", outboundOrderID).Updates(map[string]interface{}{ + "total_quantity": totalQuantity, + "total_amount": totalAmount, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新出库单汇总信息失败: %v", err) + } + + return nil +} + +// updatePurchaseOrderReceivedStatus 更新采购订单收货状态 +func (s *ProcessService) updatePurchaseOrderReceivedStatus(tx *gorm.DB, receivingOrderID int64, now int64) error { + var receivingOrder models.ReceivingOrder + if err := tx.Where("id = ? AND is_del = 0", receivingOrderID).First(&receivingOrder).Error; err != nil { + return fmt.Errorf("查询入库单失败: %v", err) + } + + if receivingOrder.PurchaseOrderID == 0 { + return nil + } + + var purchaseOrder models.PurchaseOrder + if err := tx.Where("id = ? AND is_del = 0", receivingOrder.PurchaseOrderID).First(&purchaseOrder).Error; err != nil { + return fmt.Errorf("查询采购订单失败: %v", err) + } + + if purchaseOrder.Status == constant.PurchaseStatusCancelled { + return nil + } + + var purchaseOrderItems []models.PurchaseOrderItem + if err := tx.Where("purchase_order_id = ? AND is_del = 0", purchaseOrder.ID).Find(&purchaseOrderItems).Error; err != nil { + return fmt.Errorf("查询采购订单明细失败: %v", err) + } + + totalQuantity := int64(0) + totalReceivedQuantity := int64(0) + + for _, item := range purchaseOrderItems { + totalQuantity += item.Quantity + totalReceivedQuantity += item.ReceivedQuantity + } + + if totalReceivedQuantity == 0 { + return nil + } + + newStatus := constant.PurchaseStatusPartialReceived + if totalReceivedQuantity >= totalQuantity { + newStatus = constant.PurchaseStatusReceived + } + + if purchaseOrder.Status != int8(newStatus) { + if err := tx.Model(&models.PurchaseOrder{}).Where("id = ?", purchaseOrder.ID).Updates(map[string]interface{}{ + "status": newStatus, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新采购订单状态失败: %v", err) + } + } + + return nil +} + +// GetReceivingDetail 获取入库单详情 +func (s *ProcessService) GetReceivingDetail(receivingOrderID int64, db ...*gorm.DB) (interface{}, error) { + databaseConn := database.OptionalDB(db...) + + var receivingOrder models.ReceivingOrder + if err := databaseConn.Where("id = ? AND is_del = 0", receivingOrderID).First(&receivingOrder).Error; err != nil { + return nil, fmt.Errorf("入库单不存在: %v", err) + } + + var receivingItems []models.ReceivingOrderItem + if err := databaseConn.Where("receiving_order_id = ? AND is_del = 0", receivingOrderID).Find(&receivingItems).Error; err != nil { + return nil, fmt.Errorf("查询入库单明细失败: %v", err) + } + + if len(receivingItems) == 0 { + result := map[string]interface{}{ + "receiving_order_id": receivingOrder.ID, + "receiving_no": receivingOrder.ReceivingNo, + "status": receivingOrder.Status, + "warehouse_id": receivingOrder.WarehouseID, + "supplier_id": receivingOrder.SupplierID, + "operator": receivingOrder.Operator, + "remark": receivingOrder.Remark, + "items": []map[string]interface{}{}, + } + return result, nil + } + + productIDs := make([]int64, 0, len(receivingItems)) + locationIDs := make([]int64, 0) + for _, item := range receivingItems { + productIDs = append(productIDs, item.ProductID) + if item.LocationID > 0 { + locationIDs = append(locationIDs, item.LocationID) + } + } + + var products []models.Product + if err := databaseConn.Where("id IN ? AND is_del = 0", productIDs).Find(&products).Error; err != nil { + return nil, fmt.Errorf("查询商品失败: %v", err) + } + + productMap := make(map[int64]models.Product) + for _, p := range products { + productMap[p.ID] = p + } + + locationMap := make(map[int64]models.Location) + if len(locationIDs) > 0 { + var locations []models.Location + if err := databaseConn.Where("id IN ? AND is_del = 0", locationIDs).Find(&locations).Error; err != nil { + return nil, fmt.Errorf("查询库位失败: %v", err) + } + for _, l := range locations { + locationMap[l.ID] = l + } + } + + items := make([]map[string]interface{}, 0, len(receivingItems)) + for _, item := range receivingItems { + product, exists := productMap[item.ProductID] + if !exists { + continue + } + + locationCode := "" + if item.LocationID > 0 { + if location, exists := locationMap[item.LocationID]; exists { + locationCode = location.Code + } + } + + items = append(items, map[string]interface{}{ + "id": item.ID, + "product_id": item.ProductID, + "product_name": product.Name, + "product_code": product.Barcode, + "location_id": item.LocationID, + "location_code": locationCode, + "batch_no": item.BatchNo, + "production_date": item.ProductionDate, + "expiry_date": item.ExpiryDate, + "quantity": item.Quantity, + }) + } + + result := map[string]interface{}{ + "receiving_order_id": receivingOrder.ID, + "receiving_no": receivingOrder.ReceivingNo, + "status": receivingOrder.Status, + "warehouse_id": receivingOrder.WarehouseID, + "supplier_id": receivingOrder.SupplierID, + "operator": receivingOrder.Operator, + "remark": receivingOrder.Remark, + "items": items, + } + + return result, nil +} + +func (s *ProcessService) CreateSalesOrderWithDetail(req systemReq.SalesOrderCreateRequest) (int64, error) { + databaseConn, err := database.GetTenantDB(req.AboutId) + if err != nil { + return 0, fmt.Errorf("获取数据库连接失败: %v", err) + } + if len(req.Items) == 0 { + return 0, fmt.Errorf("销售订单明细不能为空") + } + if len(req.Items) > constant.MaxTaskQuantity { + return 0, fmt.Errorf("销售订单明细数量不能超过200条,当前为%d条", len(req.Items)) + } + now := time.Now().Unix() + + var salesOrderID int64 + var soNo string + + err = executeInTransactionWithDB(databaseConn, func(tx *gorm.DB) error { + if len(req.Items) == 0 { + return fmt.Errorf("销售订单明细不能为空") + } + + // 防重检查:如果 AssociationOrderID 不为0,检查是否已存在相同订单 + if req.AssociationOrderID != 0 { + var existingOrder models.SalesOrder + if err := tx.Where("association_order_id = ? AND is_del = 0", req.AssociationOrderID).First(&existingOrder).Error; err == nil { + // 订单已存在,直接返回已有订单ID(幂等处理) + salesOrderID = existingOrder.ID + return nil + } else if err != gorm.ErrRecordNotFound { + return fmt.Errorf("查询重复订单失败: %v", err) + } + } + + var invWarehouseID int64 + + for i, item := range req.Items { + var inventory models.Inventory + if err := tx.Where("product_id = ? AND quantity > 0 AND is_del = 0", item.ProductID). + First(&inventory).Error; err != nil { + return fmt.Errorf("商品[%d]无可用库存: %v", item.ProductID, err) + } + + if i == 0 { + invWarehouseID = inventory.WarehouseID + } else if inventory.WarehouseID != invWarehouseID { + return fmt.Errorf("所有商品必须属于同一个仓库,商品[%d]与第一个商品仓库不一致", item.ProductID) + } + } + + var warehouse models.Warehouse + if err := tx.Where("id = ? AND is_del = 0", invWarehouseID).First(&warehouse).Error; err != nil { + return fmt.Errorf("仓库不存在或已删除: %v", err) + } + + var totalAmount int64 + for _, item := range req.Items { + totalAmount += item.Quantity * item.UnitPrice + } + + soNo = utils.GenerateSalesNo() + + salesOrder := models.SalesOrder{ + SoNo: soNo, + AssociationOrderId: req.AssociationOrderID, + AssociationOrderNo: req.AssociationOrderNo, + FromType: req.FromType, + ShopType: req.ShopType, + CustomerID: req.CustomerID, + WarehouseID: invWarehouseID, + OrderDate: now, + RequiredDeliveryDate: req.RequiredDeliveryDate, + TotalAmount: totalAmount, + Status: constant.SalesStatusAllocated, + SalesPerson: req.SalesPerson, + SalesPersonID: req.SalesPersonID, + Remark: req.Remark, + IsDistribution: req.IsDistribution, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := tx.Create(&salesOrder).Error; err != nil { + return fmt.Errorf("创建销售订单失败: %v", err) + } + + salesOrderID = salesOrder.ID + + salesOrderItems := make([]models.SalesOrderItem, 0, len(req.Items)) + + for _, itemReq := range req.Items { + amount := itemReq.Quantity * itemReq.UnitPrice + + salesOrderItems = append(salesOrderItems, models.SalesOrderItem{ + SalesOrderID: salesOrderID, + ProductID: itemReq.ProductID, + Quantity: itemReq.Quantity, + AllocatedQuantity: itemReq.Quantity, + ShippedQuantity: 0, + UnitPrice: itemReq.UnitPrice, + Amount: amount, + ReceiverName: req.ReceiverName, + ReceiverPhone: req.ReceiverPhone, + ReceiverAddress: req.ReceiverAddress, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + }) + } + + if err := tx.Create(&salesOrderItems).Error; err != nil { + return fmt.Errorf("批量创建销售订单明细失败: %v", err) + } + + // 锁定库存 + for _, itemReq := range req.Items { + if err := s.lockInventory(tx, invWarehouseID, itemReq.ProductID, itemReq.Quantity, now); err != nil { + return fmt.Errorf("锁定库存失败[商品ID=%d]: %v", itemReq.ProductID, err) + } + } + + return nil + }) + + if err != nil { + return 0, err + } + + return salesOrderID, nil +} + +// CreateOutboundOrder 基于多个销售订单创建出库单 +func (s *ProcessService) CreateOutboundOrder(req systemReq.CreateOutboundOrderRequest, operator string, operatorID int64, db ...*gorm.DB) (int64, string, error) { + databaseConn := database.OptionalDB(db...) + + now := time.Now().Unix() + + var outboundOrderID int64 + var outNo string + + err := executeInTransactionWithDB(databaseConn, func(tx *gorm.DB) error { + if len(req.SalesOrderIDs) == 0 { + return fmt.Errorf("销售订单列表不能为空") + } + + var salesOrders []models.SalesOrder + if err := tx.Where("id IN ? AND is_del = 0", req.SalesOrderIDs).Find(&salesOrders).Error; err != nil { + return fmt.Errorf("查询销售订单失败: %v", err) + } + + if len(salesOrders) != len(req.SalesOrderIDs) { + return fmt.Errorf("部分销售订单不存在") + } + + for _, order := range salesOrders { + if order.Status != constant.SalesStatusAllocated { + return fmt.Errorf("销售订单[%s]状态不正确,当前状态: %s,只有已分配状态的订单才能创建出库单", order.SoNo, getSalesStatusText(order.Status)) + } + } + + warehouseID := salesOrders[0].WarehouseID + customerID := salesOrders[0].CustomerID + + for i, order := range salesOrders[1:] { + if order.WarehouseID != warehouseID { + return fmt.Errorf("所有销售订单必须属于同一个仓库,订单[%s]与第一个订单仓库不一致", salesOrders[i+1].SoNo) + } + if order.CustomerID != customerID { + return fmt.Errorf("所有销售订单必须属于同一个客户,订单[%s]与第一个订单客户不一致", salesOrders[i+1].SoNo) + } + } + + for _, order := range salesOrders { + if order.Status >= constant.SalesStatusPicking { + return fmt.Errorf("销售订单[%s]已存在出库单或正在处理中", order.SoNo) + } + } + + var allSalesItems []models.SalesOrderItem + if err := tx.Where("sales_order_id IN ? AND is_del = 0", req.SalesOrderIDs).Find(&allSalesItems).Error; err != nil { + return fmt.Errorf("查询销售订单明细失败: %v", err) + } + + if len(allSalesItems) == 0 { + return fmt.Errorf("选中的销售订单没有明细数据") + } + + outboundItems := make([]models.OutboundOrderItem, 0, len(allSalesItems)) + for _, item := range allSalesItems { + unshippedQuantity := item.Quantity - item.ShippedQuantity + if unshippedQuantity <= 0 { + continue + } + + var inventoryDetail models.InventoryDetail + locationID := int64(0) + if err := tx.Where("warehouse_id = ? AND product_id = ? AND quantity > 0 AND is_del = 0", warehouseID, item.ProductID). + Order("created_at ASC"). + First(&inventoryDetail).Error; err == nil { + locationID = inventoryDetail.LocationID + } + + fmt.Println() + outboundItems = append(outboundItems, models.OutboundOrderItem{ + SalesOrderID: item.SalesOrderID, + ProductID: item.ProductID, + LocationID: locationID, + BatchNo: "", + Quantity: 0, + UnitPrice: item.UnitPrice, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + }) + } + + if len(outboundItems) == 0 { + return fmt.Errorf("所有商品已全部出库,无法创建出库单") + } + + outNo = utils.GenerateOutNo() + + outboundOrder := models.OutboundOrder{ + OutNo: outNo, + WaveTaskID: 0, + WarehouseID: warehouseID, + CustomerID: customerID, + TotalQuantity: 0, + TotalAmount: 0, + Status: constant.OutboundStatusCreated, + Operator: operator, + OperatorID: operatorID, + Remark: req.Remark, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := tx.Create(&outboundOrder).Error; err != nil { + return fmt.Errorf("创建出库单失败: %v", err) + } + + outboundOrderID = outboundOrder.ID + + for i := range outboundItems { + outboundItems[i].OutOrderID = outboundOrder.ID + } + + if err := tx.Create(&outboundItems).Error; err != nil { + return fmt.Errorf("创建出库单明细失败: %v", err) + } + + for _, order := range salesOrders { + if err := tx.Model(&models.SalesOrder{}).Where("id = ?", order.ID).Updates(map[string]interface{}{ + "status": constant.SalesStatusPicking, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新销售订单[%s]状态失败: %v", order.SoNo, err) + } + } + + return nil + }) + + if err != nil { + return 0, "", err + } + + return outboundOrderID, outNo, nil +} + +// CreateOutboundWave 基于出库单创建出库波次 +func (s *ProcessService) CreateOutboundWave(req systemReq.CreateOutboundWaveRequest, creator string, creatorID int64, db ...*gorm.DB) (int64, error) { + + databaseConn := database.OptionalDB(db...) + + var waveID int64 + + err := executeInTransactionWithDB(databaseConn, func(tx *gorm.DB) error { + if req.OutboundOrderID == 0 { + return fmt.Errorf("出库单ID不能为空") + } + + var outboundOrder models.OutboundOrder + if err := tx.Where("id = ? AND is_del = 0", req.OutboundOrderID).First(&outboundOrder).Error; err != nil { + return fmt.Errorf("查询出库单失败: %v", err) + } + + if outboundOrder.Status != constant.OutboundStatusCreated { + return fmt.Errorf("出库单[%s]状态不正确,当前状态: %s,只有已创建状态的出库单才能创建波次", outboundOrder.OutNo, getOutboundStatusText(outboundOrder.Status)) + } + + if outboundOrder.WaveTaskID > 0 { + var existingWave models.WaveHeader + if err := tx.Where("id = ?", outboundOrder.WaveTaskID).First(&existingWave).Error; err == nil { + return fmt.Errorf("出库单[%s]已存在波次任务,波次号: %s", outboundOrder.OutNo, existingWave.WaveNo) + } + } + + var outboundItems []models.OutboundOrderItem + if err := tx.Where("out_order_id = ? AND is_del = 0", req.OutboundOrderID).Find(&outboundItems).Error; err != nil { + return fmt.Errorf("查询出库单明细失败: %v", err) + } + + if len(outboundItems) == 0 { + return fmt.Errorf("出库单没有明细数据") + } + + waveNo, err := s.generateWaveNo(constant.DirectionOutbound, databaseConn) + if err != nil { + return fmt.Errorf("生成波次号失败: %v", err) + } + + waveHeader, err := s.createWaveHeader(tx, waveNo, constant.DirectionOutbound, outboundOrder.WarehouseID, outboundOrder.ID, creator, creatorID) + if err != nil { + return err + } + waveID = waveHeader.ID + + return nil + }) + + if err != nil { + return 0, err + } + + return waveID, nil +} + +// ReleaseOutboundWave 提交出库波次,生成波次任务明细 +func (s *ProcessService) ReleaseOutboundWave(req systemReq.WaveRequest, db ...*gorm.DB) (int64, string, error) { + + databaseConn := database.OptionalDB(db...) + + var waveID int64 + var waveNo string + + err := executeInTransactionWithDB(databaseConn, func(tx *gorm.DB) error { + var waveHeader models.WaveHeader + if err := tx.Where("id = ? AND is_del = 0", req.WaveID).First(&waveHeader).Error; err != nil { + return fmt.Errorf("波次不存在: %v", err) + } + + if waveHeader.Status != constant.WaveStatusCreated { + return fmt.Errorf("波次状态不正确,当前状态: %s", getWaveStatusText(waveHeader.Status)) + } + + if waveHeader.Direction != constant.DirectionOutbound { + return fmt.Errorf("该波次不是出库波次") + } + + if req.RelatedOrderID == 0 { + return fmt.Errorf("出库单ID不能为空") + } + + var outboundOrder models.OutboundOrder + if err := tx.Where("id = ? AND is_del = 0", req.RelatedOrderID).First(&outboundOrder).Error; err != nil { + return fmt.Errorf("出库单不存在: %v", err) + } + + if outboundOrder.Status != constant.OutboundStatusCreated { + return fmt.Errorf("出库单[%s]状态不正确,当前状态: %s,只有已创建状态的出库单才能生成波次", outboundOrder.OutNo, getOutboundStatusText(outboundOrder.Status)) + } + + if outboundOrder.WaveTaskID > 0 { + return fmt.Errorf("出库单[%s]已存在波次任务", outboundOrder.OutNo) + } + + var outboundItems []models.OutboundOrderItem + if err := tx.Where("out_order_id = ? AND is_del = 0", req.RelatedOrderID).Find(&outboundItems).Error; err != nil { + return fmt.Errorf("查询出库单明细失败: %v", err) + } + + if len(outboundItems) == 0 { + return fmt.Errorf("出库单没有明细数据") + } + + now := time.Now().Unix() + for i := range outboundItems { + item := &outboundItems[i] + + if item.BatchNo != "" && item.ProductionDate > 0 && item.ExpiryDate > 0 { + continue + } + + var inventory models.Inventory + err := tx.Clauses(clause.Locking{Strength: "UPDATE"}). + Where("warehouse_id = ? AND product_id = ? AND is_del = 0 AND quantity > 0 AND locked_quantity > 0", + outboundOrder.WarehouseID, item.ProductID). + Order("expiry_date ASC, created_at ASC"). + First(&inventory).Error + + if err != nil { + if err == gorm.ErrRecordNotFound { + return fmt.Errorf("商品ID=%d在仓库ID=%d中无可用库存,请先入库", item.ProductID, outboundOrder.WarehouseID) + } + return fmt.Errorf("查询库存失败: %v", err) + } + + if item.BatchNo == "" { + item.BatchNo = inventory.BatchNo + } + if item.ProductionDate == 0 { + item.ProductionDate = inventory.ProductionDate + } + if item.ExpiryDate == 0 { + item.ExpiryDate = inventory.ExpiryDate + } + + if err := tx.Model(item).Updates(map[string]interface{}{ + "batch_no": item.BatchNo, + "production_date": item.ProductionDate, + "expiry_date": item.ExpiryDate, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新出库单明细批次信息失败: %v", err) + } + } + + productMap := make(map[int64]*WaveItemData) + for _, item := range outboundItems { + if existing, exists := productMap[item.ProductID]; exists { + existing.Quantity += item.Quantity + } else { + productMap[item.ProductID] = &WaveItemData{ + ProductID: item.ProductID, + Quantity: item.Quantity, + UnitPrice: item.UnitPrice, + LocationID: item.LocationID, + } + } + } + + if len(productMap) == 0 { + return fmt.Errorf("出库单明细数据无效") + } + + items := make([]WaveItemData, 0, len(productMap)) + for _, itemData := range productMap { + items = append(items, *itemData) + } + + waveTask, err := s.createWaveTaskAndDetailsForOutbound(tx, req.WaveID, constant.TaskTypePicking, items, outboundItems, req.Assignee, req.AssigneeId, 0, 0, 0) + if err != nil { + return err + } + + if err := tx.Model(&models.OutboundOrder{}).Where("id = ?", outboundOrder.ID).Updates(map[string]interface{}{ + "wave_task_id": waveTask.ID, + "status": constant.OutboundStatusCreated, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新出库单状态失败: %v", err) + } + + if err := s.updateWaveStatusToReleased(tx, req.WaveID); err != nil { + return fmt.Errorf("更新波次状态失败: %v", err) + } + + waveID = waveHeader.ID + waveNo = waveHeader.WaveNo + + return nil + }) + + if err != nil { + return 0, "", err + } + + return waveID, waveNo, nil +} + +// BindOutboundWave 绑定出库波次 +func (s *ProcessService) BindOutboundWave(req systemReq.BindWaveRequest, db ...*gorm.DB) (int64, int64, string, error) { + + databaseConn := database.OptionalDB(db...) + + now := time.Now().Unix() + var outboundOrderID int64 + var waveTaskID int64 + var waveTaskBatchNo string + + err := executeInTransactionWithDB(databaseConn, func(tx *gorm.DB) error { + var waveHeader models.WaveHeader + if err := tx.Where("wave_no = ? AND is_del = 0", req.WaveNo).First(&waveHeader).Error; err != nil { + return fmt.Errorf("波次不存在: %v", err) + } + + if waveHeader.Direction != constant.DirectionOutbound { + return fmt.Errorf("该波次不是出库波次") + } + + var waveTask models.WaveTask + if err := tx.Where("wave_id = ? AND is_del = 0", waveHeader.ID).First(&waveTask).Error; err != nil { + return fmt.Errorf("波次任务不存在: %v", err) + } + + waveTaskID = waveTask.ID + + if waveTask.Type != constant.TaskTypePicking { + return fmt.Errorf("该任务不是出库拣货任务") + } + + if waveTask.Status != constant.WaveStatusCreated { + return fmt.Errorf("波次任务状态不正确,当前状态: %s,只有已创建状态才能绑定出库单", getWaveStatusText(waveTask.Status)) + } + + if waveHeader.RelatedOrderID == 0 { + return fmt.Errorf("波次未关联出库单") + } + + var outboundOrder models.OutboundOrder + if err := tx.Where("id = ? AND is_del = 0", waveHeader.RelatedOrderID).First(&outboundOrder).Error; err != nil { + return fmt.Errorf("出库单不存在: %v", err) + } + + outboundOrderID = outboundOrder.ID + + if outboundOrder.Status != constant.OutboundStatusCreated { + return fmt.Errorf("出库单[%s]状态不正确,当前状态: %s,只有已创建状态才能绑定", outboundOrder.OutNo, getOutboundStatusText(outboundOrder.Status)) + } + + if err := tx.Model(&models.WaveTask{}).Where("id = ?", waveTaskID).Updates(map[string]interface{}{ + "assignee": req.Operator, + "assignee_id": req.OperatorID, + }).Error; err != nil { + return fmt.Errorf("绑定指派人失败: %v", err) + } + + var waveTaskDetails []models.WaveTaskDetail + if err := tx.Where("wave_task_id = ? AND is_del = 0", waveTask.ID).Find(&waveTaskDetails).Error; err != nil { + return fmt.Errorf("查询波次任务明细失败: %v", err) + } + + if len(waveTaskDetails) == 0 { + return fmt.Errorf("波次任务没有明细数据") + } + + waveTaskBatchNo = waveTaskDetails[0].BatchNo + + if err := tx.Model(&models.OutboundOrder{}).Where("id = ?", outboundOrder.ID).Updates(map[string]interface{}{ + "status": constant.OutboundStatusPicking, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新出库单状态和操作员失败: %v", err) + } + + if err := s.updateWaveTaskToPicking(tx, waveTask.ID); err != nil { + return fmt.Errorf("更新波次任务状态失败: %v", err) + } + + return nil + }) + + if err != nil { + return 0, 0, "", err + } + + return outboundOrderID, waveTaskID, waveTaskBatchNo, nil +} + +// GetOutboundDetail 获取出库单详情 +func (s *ProcessService) GetOutboundDetail(outboundOrderID int64, db ...*gorm.DB) (interface{}, error) { + databaseConn := database.OptionalDB(db...) + + var outboundOrder models.OutboundOrder + if err := databaseConn.Where("id = ? AND is_del = 0", outboundOrderID).First(&outboundOrder).Error; err != nil { + return nil, fmt.Errorf("出库单不存在: %v", err) + } + + var outboundOrderItem []models.OutboundOrderItem + if err := databaseConn.Where("out_order_id = ? AND is_del = 0", outboundOrderID).Find(&outboundOrderItem).Error; err != nil { + return nil, fmt.Errorf("查询出库单明细失败: %v", err) + } + + if len(outboundOrderItem) == 0 { + result := map[string]interface{}{ + "out_order_id": outboundOrder.ID, + "out_no": outboundOrder.OutNo, + "status": outboundOrder.Status, + "warehouse_id": outboundOrder.WarehouseID, + "customer_id": outboundOrder.CustomerID, + "operator": outboundOrder.Operator, + "remark": outboundOrder.Remark, + "items": []map[string]interface{}{}, + } + return result, nil + } + + productIDs := make([]int64, 0, len(outboundOrderItem)) + locationIDs := make([]int64, 0) + for _, item := range outboundOrderItem { + productIDs = append(productIDs, item.ProductID) + if item.LocationID > 0 { + locationIDs = append(locationIDs, item.LocationID) + } + } + + var products []models.Product + if err := databaseConn.Where("id IN ? AND is_del = 0", productIDs).Find(&products).Error; err != nil { + return nil, fmt.Errorf("查询商品失败: %v", err) + } + + productMap := make(map[int64]models.Product) + for _, p := range products { + productMap[p.ID] = p + } + + locationMap := make(map[int64]models.Location) + if len(locationIDs) > 0 { + var locations []models.Location + if err := databaseConn.Where("id IN ? AND is_del = 0", locationIDs).Find(&locations).Error; err != nil { + return nil, fmt.Errorf("查询库位失败: %v", err) + } + for _, l := range locations { + locationMap[l.ID] = l + } + } + + items := make([]map[string]interface{}, 0, len(outboundOrderItem)) + for _, item := range outboundOrderItem { + product, exists := productMap[item.ProductID] + if !exists { + continue + } + + locationCode := "" + if item.LocationID > 0 { + if location, exists := locationMap[item.LocationID]; exists { + locationCode = location.Code + } + } + + items = append(items, map[string]interface{}{ + "id": item.ID, + "product_id": item.ProductID, + "product_name": product.Name, + "product_code": product.Barcode, + "location_id": item.LocationID, + "location_code": locationCode, + "batch_no": item.BatchNo, + "production_date": item.ProductionDate, + "expiry_date": item.ExpiryDate, + "quantity": item.Quantity, + }) + } + + result := map[string]interface{}{ + "out_order_id": outboundOrder.ID, + "out_no": outboundOrder.OutNo, + "status": outboundOrder.Status, + "warehouse_id": outboundOrder.WarehouseID, + "customer_id": outboundOrder.CustomerID, + "operator": outboundOrder.Operator, + "remark": outboundOrder.Remark, + "items": items, + } + + return result, nil +} + +// CreateShippingOrder 基于多个出库单创建发货单 +func (s *ProcessService) CreateShippingOrder(req systemReq.CreateShippingOrderRequest, operator string, operatorID int64, db ...*gorm.DB) (int64, string, error) { + databaseConn := database.OptionalDB(db...) + + now := time.Now().Unix() + + var shippingOrderID int64 + var shippingNo string + + err := executeInTransactionWithDB(databaseConn, func(tx *gorm.DB) error { + if len(req.OutboundOrderIDs) == 0 { + return fmt.Errorf("出库单列表不能为空") + } + + var outboundOrders []models.OutboundOrder + if err := tx.Where("id IN ? AND is_del = 0", req.OutboundOrderIDs).Find(&outboundOrders).Error; err != nil { + return fmt.Errorf("查询出库单失败: %v", err) + } + + if len(outboundOrders) != len(req.OutboundOrderIDs) { + return fmt.Errorf("部分出库单不存在") + } + + for _, order := range outboundOrders { + if order.Status != constant.OutboundStatusCompleted { + return fmt.Errorf("出库单[%s]状态不正确,当前状态: %s,只有已完成状态的出库单才能创建发货单", order.OutNo, getOutboundStatusText(order.Status)) + } + } + + customerID := outboundOrders[0].CustomerID + warehouseID := outboundOrders[0].WarehouseID + + for i, order := range outboundOrders[1:] { + if order.CustomerID != customerID { + return fmt.Errorf("所有出库单必须属于同一个客户,订单[%s]与第一个订单客户不一致", outboundOrders[i+1].OutNo) + } + if order.WarehouseID != warehouseID { + return fmt.Errorf("所有出库单必须属于同一个仓库,订单[%s]与第一个订单仓库不一致", outboundOrders[i+1].OutNo) + } + } + + for _, order := range outboundOrders { + var existingShipping models.ShippingOrder + if err := tx.Joins("JOIN shipping_order_item ON shipping_order_item.shipping_order_id = shipping_order.id"). + Where("shipping_order_item.outbound_order_item_id IN (SELECT id FROM outbound_order_item WHERE out_order_id = ?)", order.ID). + Where("shipping_order.status NOT IN ?", []int8{constant.ShippingStatusCancelled}). + First(&existingShipping).Error; err == nil { + return fmt.Errorf("出库单[%s]已存在未取消的发货单[%s]", order.OutNo, existingShipping.ShippingNo) + } + } + + var allOutboundItems []models.OutboundOrderItem + if err := tx.Where("out_order_id IN ? AND is_del = 0", req.OutboundOrderIDs).Find(&allOutboundItems).Error; err != nil { + return fmt.Errorf("查询出库单明细失败: %v", err) + } + + if len(allOutboundItems) == 0 { + return fmt.Errorf("选中的出库单没有明细数据") + } + + shippingNo = utils.GenerateShippingNo() + + shippingOrder := models.ShippingOrder{ + ShippingNo: shippingNo, + CustomerID: customerID, + Status: constant.ShippingStatusPending, + ExpectedArriveTime: req.ExpectedArriveTime, + Operator: operator, + CreatedAt: now, + UpdatedAt: &now, + Remark: req.Remark, + } + + if err := tx.Create(&shippingOrder).Error; err != nil { + return fmt.Errorf("创建发货单失败: %v", err) + } + + shippingOrderID = shippingOrder.ID + + shippingItems := make([]models.ShippingOrderItem, 0, len(allOutboundItems)) + for _, item := range allOutboundItems { + shippingItems = append(shippingItems, models.ShippingOrderItem{ + ShippingOrderID: shippingOrder.ID, + OutboundOrderItemID: &item.ID, + Quantity: item.Quantity, + CreatedAt: now, + UpdatedAt: now, + }) + } + + if err := tx.Create(&shippingItems).Error; err != nil { + return fmt.Errorf("创建发货单明细失败: %v", err) + } + + for _, order := range outboundOrders { + if err := tx.Model(&models.OutboundOrder{}).Where("id = ?", order.ID).Updates(map[string]interface{}{ + "status": constant.OutboundStatusShipping, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新出库单[%s]状态失败: %v", order.OutNo, err) + } + } + + return nil + }) + + if err != nil { + return 0, "", err + } + + return shippingOrderID, shippingNo, nil +} + +// UpdateShippingLogistics 更新发货单物流信息并回填销售订单明细 +func (s *ProcessService) UpdateShippingLogistics(req systemReq.UpdateShippingLogisticsRequest, operatorID int64, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + now := time.Now().Unix() + + err := executeInTransactionWithDB(databaseConn, func(tx *gorm.DB) error { + if req.SalesOrderItemID <= 0 { + return utils.NewError("销售订单明细ID无效") + } + if req.LogisticsCompany == "" || req.LogisticsNo == "" { + return utils.NewError("物流公司和物流单号不能为空") + } + + updateResult := tx.Model(&models.SalesOrderItem{}). + Where("id = ? AND is_del = ?", req.SalesOrderItemID, 0). + Updates(map[string]interface{}{ + "shipped_quantity": 1, + "logistics_company": req.LogisticsCompany, + "logistics_no": req.LogisticsNo, + "updated_at": now, + }) + + if updateResult.Error != nil { + return utils.NewError("更新销售订单明细物流信息失败") + } + + if updateResult.RowsAffected == 0 { + return utils.NewError("销售订单明细不存在或已删除") + } + + var salesOrderItem models.SalesOrderItem + if err := tx.Where("id = ? AND is_del = ?", req.SalesOrderItemID, 0).First(&salesOrderItem).Error; err != nil { + return utils.NewError("查询销售订单明细失败") + } + + if salesOrderItem.SalesOrderID > 0 { + if err := tx.Model(&models.SalesOrder{}). + Where("id = ? AND is_del = ?", salesOrderItem.SalesOrderID, 0). + Update("status", constant.SalesStatusShipped).Error; err != nil { + return utils.NewError("更新销售订单状态失败") + } + } + + var shippingItems []models.ShippingOrderItem + if err := tx.Where("shipping_order_id = ? AND is_del = 0", req.ShippingOrderID).Find(&shippingItems).Error; err != nil { + return utils.NewError("查询发货单明细失败") + } + + if len(shippingItems) == 0 { + return utils.NewError("发货单明细不存在") + } + + outboundOrderItemIDs := make([]int64, 0, len(shippingItems)) + for _, item := range shippingItems { + if item.OutboundOrderItemID != nil && *item.OutboundOrderItemID > 0 { + outboundOrderItemIDs = append(outboundOrderItemIDs, *item.OutboundOrderItemID) + } + } + + if len(outboundOrderItemIDs) == 0 { + return utils.NewError("发货单未关联出库单明细") + } + + var outboundItems []models.OutboundOrderItem + if err := tx.Where("id IN ? AND is_del = 0", outboundOrderItemIDs).Find(&outboundItems).Error; err != nil { + return utils.NewError("查询出库单明细失败") + } + + salesOrderItemIDs := make([]int64, 0, len(outboundItems)) + for _, item := range outboundItems { + if item.SalesOrderID > 0 { + salesOrderItemIDs = append(salesOrderItemIDs, item.SalesOrderID) + } + } + + if len(salesOrderItemIDs) > 0 { + var salesItems []models.SalesOrderItem + if err := tx.Where("id IN ? AND is_del = 0", salesOrderItemIDs).Find(&salesItems).Error; err != nil { + return utils.NewError("查询销售订单明细失败") + } + + allShipped := true + for _, item := range salesItems { + if item.ShippedQuantity == 0 { + allShipped = false + break + } + } + + if allShipped { + outboundOrderIDs := make([]int64, 0, len(outboundItems)) + for _, item := range outboundItems { + if item.OutOrderID > 0 { + outboundOrderIDs = append(outboundOrderIDs, item.OutOrderID) + } + } + + if len(outboundOrderIDs) > 0 { + if err := tx.Model(&models.OutboundOrder{}). + Where("id IN ? AND is_del = 0", outboundOrderIDs). + Updates(map[string]interface{}{ + "status": constant.OutboundStatusShipped, + "updated_at": now, + }).Error; err != nil { + return utils.NewError("更新出库单状态失败") + } + } + + if err := tx.Model(&models.ShippingOrder{}). + Where("id = ? AND is_del = ?", req.ShippingOrderID, 0). + Updates(map[string]interface{}{ + "status": constant.ShippingStatusShipped, + "operator": operatorID, + "updated_at": now, + }).Error; err != nil { + return utils.NewError("更新发货单状态失败") + } + } + } + + return nil + }) + + if err != nil { + return err + } + + return nil +} + +// AdjustInventory 盘库调整(加库存/减库存) +func (s *ProcessService) AdjustInventory(req systemReq.StockCheckAdjustRequest, operator string, operatorID int64, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + now := time.Now().Unix() + + return executeInTransactionWithDB(databaseConn, func(tx *gorm.DB) error { + var product models.Product + if err := tx.Where("id = ? AND is_del = 0", req.ProductID).First(&product).Error; err != nil { + return fmt.Errorf("商品不存在: %v", err) + } + + if product.Status != 1 { + return fmt.Errorf("商品%s已停用", product.Name) + } + + var warehouse models.Warehouse + if err := tx.Where("id = ? AND is_del = 0", req.WarehouseID).First(&warehouse).Error; err != nil { + return fmt.Errorf("仓库不存在: %v", err) + } + + var location models.Location + if err := tx.Where("id = ? AND is_del = 0", req.LocationID).First(&location).Error; err != nil { + return fmt.Errorf("库位不存在: %v", err) + } + + if location.Status != 1 { + return fmt.Errorf("库位%s不可用", location.Code) + } + + if location.WarehouseID != req.WarehouseID { + return fmt.Errorf("库位%s不属于该仓库", location.Code) + } + + checkNo := utils.GenerateStockCheckNo() + + inventoryKey := inventoryKey{ + warehouseID: req.WarehouseID, + productID: req.ProductID, + batchNo: req.BatchNo, + productionDate: 0, + expiryDate: 0, + } + + var changeQuantity int64 + var remark string + + if req.AdjustType == 1 { + changeQuantity = req.Quantity + remark = fmt.Sprintf("盘库加库存:%s", req.Remark) + } else { + changeQuantity = -req.Quantity + remark = fmt.Sprintf("盘库减库存:%s", req.Remark) + } + + // 获取当前系统库存数量 + var currentInventory models.Inventory + if err := tx.Where("warehouse_id = ? AND product_id = ? AND batch_no = ? AND is_del = 0", + req.WarehouseID, req.ProductID, req.BatchNo).First(¤tInventory).Error; err != nil { + if err != gorm.ErrRecordNotFound { + return fmt.Errorf("查询库存失败: %v", err) + } + } + + systemQuantity := currentInventory.Quantity + + // 创建盘库单主表记录 + stockCheck := models.StockCheck{ + CheckNo: checkNo, + WarehouseID: req.WarehouseID, + CheckType: 2, // 2=抽盘 + Status: constant.InventoryCheckStatusCompleted, // 3=已完成 + TotalItems: 1, + CheckedItems: 1, + TotalQuantity: systemQuantity, + ActualQuantity: systemQuantity + changeQuantity, + Operator: operator, + OperatorID: operatorID, + Remark: req.Remark, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := tx.Create(&stockCheck).Error; err != nil { + return fmt.Errorf("创建盘库单失败: %v", err) + } + + // 创建盘库单明细表记录 + stockCheckItem := models.StockCheckItem{ + StockCheckID: stockCheck.ID, + ProductID: req.ProductID, + LocationID: req.LocationID, + BatchNo: req.BatchNo, + ProductionDate: 0, + ExpiryDate: 0, + SystemQuantity: systemQuantity, + ActualQuantity: systemQuantity + changeQuantity, + DifferenceQuantity: changeQuantity, + Status: 2, // 2=已盘点 + CheckOperator: operator, + CheckOperatorID: operatorID, + CheckTime: now, + Remark: req.Remark, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := tx.Create(&stockCheckItem).Error; err != nil { + return fmt.Errorf("创建盘库单明细失败: %v", err) + } + + log, err := s.processInventoryOperationForAdjustment(tx, inventoryKey, req.LocationID, changeQuantity, checkNo, operator, operatorID, now, remark) + if err != nil { + return fmt.Errorf("处理库存汇总调整失败: %v", err) + } + + if err := s.processInventoryDetailOperationForAdjustment(tx, inventoryKey, req.LocationID, changeQuantity, now); err != nil { + return fmt.Errorf("处理库存明细调整失败: %v", err) + } + + if log != nil { + if err := tx.Create(log).Error; err != nil { + return fmt.Errorf("创建库存流水失败: %v", err) + } + } + + return nil + }) +} + +// ReturnInventory 盘库退货(基于销售订单明细退货) +func (s *ProcessService) ReturnInventory(req systemReq.StockCheckReturnRequest, operator string, operatorID int64, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + now := time.Now().Unix() + + return executeInTransactionWithDB(databaseConn, func(tx *gorm.DB) error { + var salesOrder models.SalesOrder + if err := tx.Where("id = ? AND is_del = 0", req.SalesOrderID).First(&salesOrder).Error; err != nil { + return fmt.Errorf("销售订单不存在: %v", err) + } + + if salesOrder.Status == constant.SalesStatusCancelled { + return fmt.Errorf("销售订单[%s]已取消,无法退货", salesOrder.SoNo) + } + + var salesOrderItem models.SalesOrderItem + if err := tx.Where("id = ? AND sales_order_id = ? AND is_del = 0", req.SalesOrderItemID, req.SalesOrderID).First(&salesOrderItem).Error; err != nil { + return fmt.Errorf("销售订单明细不存在: %v", err) + } + + if salesOrderItem.ShippedQuantity <= 0 { + return fmt.Errorf("销售订单明细没有已发货数量,无法退货") + } + + if salesOrderItem.ShippedQuantity > 1 { + return fmt.Errorf("销售订单明细已发货数量异常,当前为%d,预期为1", salesOrderItem.ShippedQuantity) + } + + productID := salesOrderItem.ProductID + warehouseID := salesOrder.WarehouseID + + var product models.Product + if err := tx.Where("id = ? AND is_del = 0", productID).First(&product).Error; err != nil { + return fmt.Errorf("商品不存在: %v", err) + } + + if product.Status != 1 { + return fmt.Errorf("商品[%s]已停用", product.Name) + } + + var inventoryDetail models.InventoryDetail + if err := tx.Where("warehouse_id = ? AND product_id = ? AND quantity > 0 AND is_del = 0", + warehouseID, productID).Order("created_at ASC").First(&inventoryDetail).Error; err != nil { + return fmt.Errorf("未找到可用库存: %v", err) + } + + locationID := inventoryDetail.LocationID + batchNo := inventoryDetail.BatchNo + + var location models.Location + if err := tx.Where("id = ? AND is_del = 0", locationID).First(&location).Error; err != nil { + return fmt.Errorf("库位不存在: %v", err) + } + + if location.Status != 1 { + return fmt.Errorf("库位[%s]不可用", location.Code) + } + + if location.WarehouseID != warehouseID { + return fmt.Errorf("库位[%s]不属于该仓库", location.Code) + } + + returnNo := utils.GenerateReturnNo() + returnQuantity := int64(1) + + inventoryKey := inventoryKey{ + warehouseID: warehouseID, + productID: productID, + batchNo: batchNo, + productionDate: 0, + expiryDate: 0, + } + + var currentInventory models.Inventory + if err := tx.Where("warehouse_id = ? AND product_id = ? AND batch_no = ? AND is_del = 0", + warehouseID, productID, batchNo).First(¤tInventory).Error; err != nil { + if err != gorm.ErrRecordNotFound { + return fmt.Errorf("查询库存失败: %v", err) + } + } + + systemQuantity := currentInventory.Quantity + actualQuantity := systemQuantity + returnQuantity + + stockCheck := models.StockCheck{ + CheckNo: returnNo, + WarehouseID: warehouseID, + CheckType: 2, + Status: constant.InventoryCheckStatusCompleted, + TotalItems: 1, + CheckedItems: 1, + TotalQuantity: systemQuantity, + ActualQuantity: actualQuantity, + Operator: operator, + OperatorID: operatorID, + Remark: req.Remark, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := tx.Create(&stockCheck).Error; err != nil { + return fmt.Errorf("创建盘库单失败: %v", err) + } + + stockCheckItem := models.StockCheckItem{ + StockCheckID: stockCheck.ID, + ProductID: productID, + LocationID: locationID, + BatchNo: batchNo, + ProductionDate: 0, + ExpiryDate: 0, + SystemQuantity: systemQuantity, + ActualQuantity: actualQuantity, + DifferenceQuantity: returnQuantity, + Status: constant.InventoryCheckStatusInProgress, + CheckOperator: operator, + CheckOperatorID: operatorID, + CheckTime: now, + Remark: req.Remark, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := tx.Create(&stockCheckItem).Error; err != nil { + return fmt.Errorf("创建盘库单明细失败: %v", err) + } + + log, err := s.processInventoryOperationForAdjustment(tx, inventoryKey, locationID, returnQuantity, returnNo, operator, operatorID, now, fmt.Sprintf("盘库退货:%s", req.Remark)) + if err != nil { + return fmt.Errorf("处理库存汇总失败: %v", err) + } + + if err := s.processInventoryDetailOperationForAdjustment(tx, inventoryKey, locationID, returnQuantity, now); err != nil { + return fmt.Errorf("处理库存明细失败: %v", err) + } + + if log != nil { + if err := tx.Create(log).Error; err != nil { + return fmt.Errorf("创建库存流水失败: %v", err) + } + } + + newShippedQuantity := salesOrderItem.ShippedQuantity - returnQuantity + + if err := tx.Model(&models.SalesOrderItem{}).Where("id = ?", salesOrderItem.ID).Updates(map[string]interface{}{ + "shipped_quantity": newShippedQuantity, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新销售订单明细已发货数量失败: %v", err) + } + + if newShippedQuantity == 0 { + var remainingItems []models.SalesOrderItem + if err := tx.Where("sales_order_id = ? AND is_del = 0", req.SalesOrderID).Order("id ASC").Find(&remainingItems).Error; err != nil { + return fmt.Errorf("查询销售订单其他明细失败: %v", err) + } + + allReturned := true + for _, item := range remainingItems { + if item.ShippedQuantity > 0 { + allReturned = false + break + } + } + + if allReturned { + if err := tx.Model(&models.SalesOrder{}).Where("id = ?", req.SalesOrderID).Updates(map[string]interface{}{ + "status": constant.SalesStatusConfirmed, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新销售订单状态失败: %v", err) + } + } + } else { + var allItems []models.SalesOrderItem + if err := tx.Where("sales_order_id = ? AND is_del = 0", req.SalesOrderID).Order("id ASC").Find(&allItems).Error; err != nil { + return fmt.Errorf("查询销售订单所有明细失败: %v", err) + } + + allFullyReturned := true + for _, item := range allItems { + if item.ShippedQuantity > 0 { + allFullyReturned = false + break + } + } + + if !allFullyReturned && salesOrder.Status == constant.SalesStatusShipped { + if err := tx.Model(&models.SalesOrder{}).Where("id = ?", req.SalesOrderID).Updates(map[string]interface{}{ + "status": constant.SalesStatusPicking, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新销售订单状态失败: %v", err) + } + } + } + + return nil + }) +} + +// ChangeLocation 出库单切换库位 +func (s *ProcessService) ChangeLocation(req systemReq.ChangeLocationRequest, operator string, operatorID int64, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + now := time.Now().Unix() + + // 查询出库单明细 + var item models.OutboundOrderItem + if err := databaseConn.Where("id = ? AND is_del = 0", req.OutOrderItemID).First(&item).Error; err != nil { + return utils.NewError("出库单明细不存在") + } + + // 查询出库单获取仓库ID + var outOrder models.OutboundOrder + if err := databaseConn.Where("id = ? AND is_del = 0", item.OutOrderID).First(&outOrder).Error; err != nil { + return utils.NewError("出库单不存在") + } + + oldLocationID := item.LocationID + + // 自动查找同一仓库下、同一商品有可用库存的库位(排除当前库位,按库存量降序优先取库存最多的) + var inventoryDetail models.InventoryDetail + if err := databaseConn.Where("warehouse_id = ? AND product_id = ? AND location_id != ? AND is_del = 0 AND quantity > 0", + outOrder.WarehouseID, item.ProductID, oldLocationID). + Order("quantity DESC"). + First(&inventoryDetail).Error; err != nil { + return utils.ErrNoAvailableLocation + } + + newLocationID := inventoryDetail.LocationID + + // 更新出库单明细的库位 + if err := databaseConn.Model(&item).Updates(map[string]interface{}{ + "location_id": newLocationID, + "updated_at": now, + }).Error; err != nil { + return utils.NewError("更新出库单明细库位失败: " + err.Error()) + } + + // 记录库位变更日志 + log := models.OutboundOrderLocationLog{ + OutOrderID: item.OutOrderID, + OutOrderItemID: item.ID, + ProductID: item.ProductID, + OldLocationID: oldLocationID, + NewLocationID: newLocationID, + BatchNo: item.BatchNo, + Operator: operator, + OperatorID: operatorID, + Remark: req.Remark, + CreatedAt: now, + } + if err := databaseConn.Create(&log).Error; err != nil { + return utils.NewError("记录库位变更日志失败: " + err.Error()) + } + + return nil +} + +// 创建波次 +func (s *ProcessService) createWaveHeader(tx *gorm.DB, waveNo string, direction int8, + warehouseID, relatedOrderID int64, creator string, creatorID int64) (*models.WaveHeader, error) { + now := time.Now().Unix() + waveHeader := models.WaveHeader{ + WaveNo: waveNo, + Direction: direction, + Type: constant.WaveNormal, + WarehouseID: warehouseID, + RelatedOrderID: relatedOrderID, + Status: constant.WaveStatusCreated, + Creator: creator, + CreatorID: creatorID, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := tx.Create(&waveHeader).Error; err != nil { + return nil, fmt.Errorf("创建波次主表失败: %v", err) + } + return &waveHeader, nil +} + +// 创建波次任务明细 +func (s *ProcessService) createWaveTaskDetails(tx *gorm.DB, waveTaskID int64, items []WaveItemData, batchNo string) error { + now := time.Now().Unix() + + details := make([]models.WaveTaskDetail, 0, len(items)) + for _, item := range items { + details = append(details, models.WaveTaskDetail{ + WaveTaskID: waveTaskID, + ProductID: item.ProductID, + LocationID: 0, + BatchNo: batchNo, + PlannedQuantity: item.Quantity, + ActualQuantity: 0, + Status: constant.WaveStatusCreated, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + }) + } + + if err := tx.Create(&details).Error; err != nil { + return fmt.Errorf("创建波次任务明细失败: %v", err) + } + + return nil +} + +// 创建波次任务和明细 +func (s *ProcessService) createWaveTaskAndDetails(tx *gorm.DB, waveID int64, taskType int8, + items []WaveItemData, assignee string, assigneeID, carId, carCode, carCapacity int64) (*models.WaveTask, error) { + now := time.Now().Unix() + taskNo := utils.GenerateTaskNo() + taskTd := utils.GenerateTaskDetailNo() + + waveTask := models.WaveTask{ + WaveID: waveID, + CarId: carId, + CarCode: carCode, + CarCapacity: carCapacity, + TaskNo: taskNo, + Type: taskType, + Assignee: assignee, + AssigneeID: assigneeID, + Status: constant.WaveStatusCreated, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := tx.Create(&waveTask).Error; err != nil { + return nil, fmt.Errorf("创建波次任务失败: %v", err) + } + + details := make([]models.WaveTaskDetail, 0, len(items)) + for _, item := range items { + details = append(details, models.WaveTaskDetail{ + WaveTaskID: waveTask.ID, + ProductID: item.ProductID, + LocationID: item.LocationID, + BatchNo: taskTd, + PlannedQuantity: item.Quantity, + ActualQuantity: 0, + Status: constant.WaveStatusCreated, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + }) + } + + if err := tx.Create(&details).Error; err != nil { + return nil, fmt.Errorf("创建波次任务明细失败: %v", err) + } + + return &waveTask, nil +} + +// createWaveTaskAndDetailsForOutbound 创建出库波次任务和明细(使用入库批次号) +func (s *ProcessService) createWaveTaskAndDetailsForOutbound(tx *gorm.DB, waveID int64, taskType int8, + items []WaveItemData, outboundItems []models.OutboundOrderItem, assignee string, assigneeID, carId, carCode, carCapacity int64) (*models.WaveTask, error) { + now := time.Now().Unix() + taskNo := utils.GenerateTaskNo() + + waveTask := models.WaveTask{ + WaveID: waveID, + CarId: carId, + CarCode: carCode, + CarCapacity: carCapacity, + TaskNo: taskNo, + Type: taskType, + Assignee: assignee, + AssigneeID: assigneeID, + Status: constant.WaveStatusCreated, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := tx.Create(&waveTask).Error; err != nil { + return nil, fmt.Errorf("创建波次任务失败: %v", err) + } + + // 构建出库单明细映射,key为ID,用于快速获取批次号等信息 + outboundItemMap := make(map[int64]models.OutboundOrderItem) + for _, item := range outboundItems { + outboundItemMap[item.ID] = item + } + + details := make([]models.WaveTaskDetail, 0, len(outboundItems)) + for _, outboundItem := range outboundItems { + batchNo := outboundItem.BatchNo + if batchNo == "" { + return nil, fmt.Errorf("出库单明细ID=%d的批次号为空,无法创建出库波次", outboundItem.ID) + } + + // 获取对应的销售订单明细的 allocated_quantity + plannedQuantity := int64(0) + if outboundItem.SalesOrderID > 0 { + var salesOrderItem models.SalesOrderItem + if err := tx.Where("sales_order_id = ? AND product_id = ? AND is_del = 0", + outboundItem.SalesOrderID, outboundItem.ProductID).First(&salesOrderItem).Error; err == nil { + plannedQuantity = salesOrderItem.AllocatedQuantity + } + } + + // 如果plannedQuantity为0,跳过该明细 + if plannedQuantity <= 0 { + continue + } + + details = append(details, models.WaveTaskDetail{ + WaveTaskID: waveTask.ID, + ProductID: outboundItem.ProductID, + LocationID: outboundItem.LocationID, + BatchNo: batchNo, + PlannedQuantity: plannedQuantity, + ActualQuantity: 0, + Status: constant.WaveStatusCreated, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + }) + } + + if len(details) == 0 { + return nil, fmt.Errorf("没有有效的出库明细可以创建波次任务") + } + + if err := tx.Create(&details).Error; err != nil { + return nil, fmt.Errorf("创建波次任务明细失败: %v", err) + } + + return &waveTask, nil +} + +// 修改波次状态并提交 +func (s *ProcessService) updateWaveStatusToReleased(tx *gorm.DB, waveID int64) error { + now := time.Now().Unix() + return tx.Model(&models.WaveHeader{}).Where("id = ?", waveID).Updates(map[string]interface{}{ + "status": constant.WaveStatusReleased, + "updated_at": now, + }).Error +} + +// 修改波次任务状态并开始拣货 +func (s *ProcessService) updateWaveTaskToPicking(tx *gorm.DB, waveTaskID int64) error { + now := time.Now().Unix() + return tx.Model(&models.WaveTask{}).Where("id = ?", waveTaskID).Updates(map[string]interface{}{ + "status": constant.WaveStatusPicking, + "started_at": now, + "updated_at": now, + }).Error +} + +// 处理库存操作(使用原子操作和行级锁保证并发安全) +func (s *ProcessService) processInventoryOperation(tx *gorm.DB, opKey inventoryKey, locationID int64, + quantity int64, changeType int8, orderNo string, operator string, operatorID int64, now int64) (*models.InventoryLog, error) { + + if changeType == constant.InventoryChangeInbound { + var inventory models.Inventory + err := tx.Debug(). + Clauses(clause.Locking{Strength: "UPDATE"}). + Where("warehouse_id = ? AND product_id = ? AND batch_no = ? AND production_date = ? AND expiry_date = ? AND is_del = 0", + opKey.warehouseID, opKey.productID, opKey.batchNo, opKey.productionDate, opKey.expiryDate). + First(&inventory).Error + + if err != nil { + if err == gorm.ErrRecordNotFound { + inventory = models.Inventory{ + WarehouseID: opKey.warehouseID, + ProductID: opKey.productID, + BatchNo: opKey.batchNo, + ProductionDate: opKey.productionDate, + ExpiryDate: opKey.expiryDate, + Quantity: quantity, + LockedQuantity: 0, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + if err := tx.Create(&inventory).Error; err != nil { + return nil, fmt.Errorf("创建库存记录失败: %v", err) + } + return &models.InventoryLog{ + WarehouseID: opKey.warehouseID, + LocationID: locationID, + ProductID: opKey.productID, + BatchNo: opKey.batchNo, + ChangeType: changeType, + ChangeQuantity: quantity, + BeforeQuantity: 0, + AfterQuantity: quantity, + RelatedOrderType: constant.OrderTypeReceiving, + RelatedOrderNo: orderNo, + Operator: operator, + OperatorID: operatorID, + Remark: fmt.Sprintf("入库单%s首次入库", orderNo), + CreatedAt: now, + IsDel: 0, + }, nil + } + return nil, fmt.Errorf("查询库存记录失败: %v", err) + } + + beforeQuantity := inventory.Quantity + + result := tx.Model(&inventory). + UpdateColumn("quantity", gorm.Expr("quantity + ?", quantity)). + UpdateColumn("updated_at", now) + + if result.Error != nil { + return nil, fmt.Errorf("更新库存记录失败: %v", result.Error) + } + + if result.RowsAffected == 0 { + return nil, errors.New("库存更新失败,请重试") + } + + return &models.InventoryLog{ + WarehouseID: opKey.warehouseID, + LocationID: locationID, + ProductID: opKey.productID, + BatchNo: opKey.batchNo, + ChangeType: changeType, + ChangeQuantity: quantity, + BeforeQuantity: beforeQuantity, + AfterQuantity: beforeQuantity + quantity, + RelatedOrderType: constant.OrderTypeReceiving, + RelatedOrderNo: orderNo, + Operator: operator, + OperatorID: operatorID, + Remark: fmt.Sprintf("入库单%s入库", orderNo), + CreatedAt: now, + IsDel: 0, + }, nil + + } else if changeType == constant.InventoryChangeOutbound { + var inventory models.Inventory + err := tx.Clauses(clause.Locking{Strength: "UPDATE"}). + Where("warehouse_id = ? AND product_id = ? AND production_date = ? AND expiry_date = ? AND is_del = 0", + opKey.warehouseID, opKey.productID, opKey.productionDate, opKey.expiryDate). + First(&inventory).Error + + if err != nil { + if err == gorm.ErrRecordNotFound { + return nil, fmt.Errorf("库存不存在: 商品ID=%d", opKey.productID) + } + return nil, fmt.Errorf("查询库存记录失败: %v", err) + } + + beforeQuantity := inventory.Quantity + beforeLocked := inventory.LockedQuantity + + availableQty := inventory.Quantity - inventory.LockedQuantity + if availableQty < 0 { + return nil, fmt.Errorf("库存数据异常,可用数量为负数: %d", availableQty) + } + + if inventory.Quantity < quantity { + return nil, fmt.Errorf("库存不足,当前:%d, 需要:%d", inventory.Quantity, quantity) + } + + actualUnlockQty := quantity + if beforeLocked < quantity { + actualUnlockQty = beforeLocked + } + + result := tx.Model(&inventory). + Where("quantity >= ?", quantity). + UpdateColumns(map[string]interface{}{ + "quantity": gorm.Expr("quantity - ?", quantity), + "locked_quantity": gorm.Expr("GREATEST(locked_quantity - ?, 0)", actualUnlockQty), + "updated_at": now, + }) + + if result.Error != nil { + return nil, fmt.Errorf("更新库存记录失败: %v", result.Error) + } + + if result.RowsAffected == 0 { + return nil, fmt.Errorf("库存不足或已被其他事务修改,请重试") + } + + afterQuantity := beforeQuantity - quantity + afterLocked := beforeLocked - actualUnlockQty + if afterLocked < 0 { + afterLocked = 0 + } + + return &models.InventoryLog{ + WarehouseID: opKey.warehouseID, + LocationID: locationID, + ProductID: opKey.productID, + BatchNo: opKey.batchNo, + ChangeType: changeType, + ChangeQuantity: -quantity, + BeforeQuantity: beforeQuantity, + AfterQuantity: afterQuantity, + RelatedOrderType: constant.OrderTypeSales, + RelatedOrderNo: orderNo, + Operator: operator, + OperatorID: operatorID, + Remark: fmt.Sprintf("出库单%s出库%d件,解锁库存:%d->%d", orderNo, quantity, beforeLocked, afterLocked), + CreatedAt: now, + IsDel: 0, + }, nil + } + + return nil, fmt.Errorf("未知的库存变更类型: %d", changeType) +} + +// 处理库存明细操作(使用原子操作和行级锁保证并发安全) +func (s *ProcessService) processInventoryDetailOperation(tx *gorm.DB, opKey inventoryKey, locationID int64, quantity int64, changeType int8, now int64) error { + + if changeType == constant.InventoryChangeInbound { + var inventoryDetail models.InventoryDetail + err := tx.Clauses(clause.Locking{Strength: "UPDATE"}). + Where("warehouse_id = ? AND location_id = ? AND product_id = ? AND batch_no = ? AND production_date = ? AND expiry_date = ? AND is_del = 0", + opKey.warehouseID, locationID, opKey.productID, opKey.batchNo, opKey.productionDate, opKey.expiryDate). + First(&inventoryDetail).Error + + if err != nil { + if err == gorm.ErrRecordNotFound { + inventoryDetail = models.InventoryDetail{ + WarehouseID: opKey.warehouseID, + LocationID: locationID, + ProductID: opKey.productID, + BatchNo: opKey.batchNo, + ProductionDate: opKey.productionDate, + ExpiryDate: opKey.expiryDate, + Quantity: quantity, + LockedQuantity: 0, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + return tx.Create(&inventoryDetail).Error + } + return fmt.Errorf("查询库存明细失败: %v", err) + } + + result := tx.Model(&inventoryDetail). + UpdateColumn("quantity", gorm.Expr("quantity + ?", quantity)). + UpdateColumn("updated_at", now) + + if result.Error != nil { + return fmt.Errorf("更新库存明细失败: %v", result.Error) + } + + if result.RowsAffected == 0 { + return errors.New("库存明细更新失败,请重试") + } + + return nil + + } else if changeType == constant.InventoryChangeOutbound { + var inventoryDetail models.InventoryDetail + err := tx.Clauses(clause.Locking{Strength: "UPDATE"}). + Where("warehouse_id = ? AND location_id = ? AND product_id = ? AND batch_no = ? AND production_date = ? AND expiry_date = ? AND is_del = 0", + opKey.warehouseID, locationID, opKey.productID, opKey.batchNo, opKey.productionDate, opKey.expiryDate). + First(&inventoryDetail).Error + + if err != nil { + if err == gorm.ErrRecordNotFound { + return fmt.Errorf("库存明细不存在: 商品ID=%d, 库位ID=%d", opKey.productID, locationID) + } + return fmt.Errorf("查询库存明细失败: %v", err) + } + + if inventoryDetail.Quantity < quantity { + return fmt.Errorf("库位库存不足,可用:%d, 需要:%d", inventoryDetail.Quantity, quantity) + } + + beforeLocked := inventoryDetail.LockedQuantity + actualUnlockQty := quantity + if beforeLocked < quantity { + actualUnlockQty = beforeLocked + } + + result := tx.Model(&inventoryDetail). + Where("quantity >= ?", quantity). + UpdateColumns(map[string]interface{}{ + "quantity": gorm.Expr("quantity - ?", quantity), + "locked_quantity": gorm.Expr("GREATEST(locked_quantity - ?, 0)", actualUnlockQty), + "updated_at": now, + }) + + if result.Error != nil { + return fmt.Errorf("更新库存明细失败: %v", result.Error) + } + + if result.RowsAffected == 0 { + return fmt.Errorf("库位库存不足或已被其他事务修改,请重试") + } + + return nil + } + + return fmt.Errorf("未知的库存变更类型: %d", changeType) +} + +// validateOutboundQuantity 验证出库数量是否合理 +func (s *ProcessService) validateOutboundQuantity(tx *gorm.DB, outboundOrderID int64, items []orderItemInfo) error { + var outboundOrder models.OutboundOrder + if err := tx.Where("id = ? AND is_del = 0", outboundOrderID).First(&outboundOrder).Error; err != nil { + return fmt.Errorf("查询出库单失败: %v", err) + } + + // 如果没有关联波次任务,则无法校验 + if outboundOrder.WaveTaskID == 0 { + return fmt.Errorf("出库单未关联波次任务,无法校验出库数量") + } + + // 查询波次任务明细获取计划出库数量 + var waveTaskDetails []models.WaveTaskDetail + if err := tx.Where("wave_task_id = ? AND is_del = 0", outboundOrder.WaveTaskID).Find(&waveTaskDetails).Error; err != nil { + return fmt.Errorf("查询波次任务明细失败: %v", err) + } + + // 构建商品ID到计划数量的映射 + plannedQtyMap := make(map[int64]int64) + for _, detail := range waveTaskDetails { + plannedQtyMap[detail.ProductID] = detail.PlannedQuantity + } + + for _, item := range items { + plannedQty, exists := plannedQtyMap[item.productID] + if !exists { + return fmt.Errorf("商品ID=%d不在出库单中", item.productID) + } + + if item.quantity <= 0 { + return fmt.Errorf("商品ID=%d的出库数量必须大于0", item.productID) + } + + // 检查实际出库数量是否超过计划出库数量 + if item.quantity > plannedQty { + return fmt.Errorf("商品ID=%d的实际出库数量(%d)不能超过计划出库数量(%d)", + item.productID, item.quantity, plannedQty) + } + } + + return nil +} + +// lockInventory 锁定库存(在创建出库波次时调用) +func (s *ProcessService) lockInventory(tx *gorm.DB, warehouseID, productID, quantity int64, now int64) error { + var inventories []models.Inventory + if err := tx.Clauses(clause.Locking{Strength: "UPDATE"}). + Where("warehouse_id = ? AND product_id = ? AND is_del = 0 AND quantity > locked_quantity", + warehouseID, productID). + Order("expiry_date ASC, created_at ASC"). + Find(&inventories).Error; err != nil { + return fmt.Errorf("查询可用库存失败: %v", err) + } + + if len(inventories) == 0 { + return fmt.Errorf("商品ID=%d在仓库ID=%d中无可用库存", productID, warehouseID) + } + + remainingLock := quantity + for i := range inventories { + if remainingLock <= 0 { + break + } + + availableQty := inventories[i].Quantity - inventories[i].LockedQuantity + if availableQty <= 0 { + continue + } + + lockQty := availableQty + if lockQty > remainingLock { + lockQty = remainingLock + } + + result := tx.Model(&inventories[i]). + Where("quantity - locked_quantity >= ?", lockQty). + UpdateColumns(map[string]interface{}{ + "locked_quantity": gorm.Expr("locked_quantity + ?", lockQty), + "updated_at": now, + }) + + if result.Error != nil { + return fmt.Errorf("锁定库存失败: %v", result.Error) + } + + if result.RowsAffected == 0 { + return fmt.Errorf("库存已被其他事务修改,请重试") + } + + var inventoryDetails []models.InventoryDetail + if err := tx.Clauses(clause.Locking{Strength: "UPDATE"}). + Where("warehouse_id = ? AND product_id = ? AND is_del = 0 AND quantity > locked_quantity", + warehouseID, productID). + Order("expiry_date ASC, created_at ASC"). + Find(&inventoryDetails).Error; err != nil { + return fmt.Errorf("查询库存明细失败: %v", err) + } + + detailRemainingLock := lockQty + for j := range inventoryDetails { + if detailRemainingLock <= 0 { + break + } + + detailAvailableQty := inventoryDetails[j].Quantity - inventoryDetails[j].LockedQuantity + if detailAvailableQty <= 0 { + continue + } + + detailLockQty := detailAvailableQty + if detailLockQty > detailRemainingLock { + detailLockQty = detailRemainingLock + } + + detailResult := tx.Model(&inventoryDetails[j]). + Where("quantity - locked_quantity >= ?", detailLockQty). + UpdateColumns(map[string]interface{}{ + "locked_quantity": gorm.Expr("locked_quantity + ?", detailLockQty), + "updated_at": now, + }) + + if detailResult.Error != nil { + return fmt.Errorf("锁定库存明细失败: %v", detailResult.Error) + } + + if detailResult.RowsAffected == 0 { + return fmt.Errorf("库存明细已被其他事务修改,请重试") + } + + detailRemainingLock -= detailLockQty + } + + if detailRemainingLock > 0 { + return fmt.Errorf("库存明细可用数量不足,还需锁定:%d", detailRemainingLock) + } + + remainingLock -= lockQty + } + + if remainingLock > 0 { + return fmt.Errorf("可用库存不足,还需锁定:%d", remainingLock) + } + + return nil +} + +// unlockInventory 解锁库存(在取消订单或波次时调用) +func (s *ProcessService) unlockInventory(tx *gorm.DB, warehouseID, productID, quantity int64, now int64) error { + var inventories []models.Inventory + if err := tx.Clauses(clause.Locking{Strength: "UPDATE"}). + Where("warehouse_id = ? AND product_id = ? AND is_del = 0 AND (locked_quantity > 0 or quality > 0)", + warehouseID, productID). + Order("created_at DESC"). + Find(&inventories).Error; err != nil { + return fmt.Errorf("查询锁定库存失败: %v", err) + } + + if len(inventories) == 0 { + return fmt.Errorf("商品ID=%d在仓库ID=%d中无锁定库存", productID, warehouseID) + } + + remainingUnlock := quantity + for i := range inventories { + if remainingUnlock <= 0 { + break + } + + unlockQty := inventories[i].LockedQuantity + if unlockQty > remainingUnlock { + unlockQty = remainingUnlock + } + + result := tx.Model(&inventories[i]). + Where("locked_quantity >= ?", unlockQty). + UpdateColumns(map[string]interface{}{ + "locked_quantity": gorm.Expr("locked_quantity - ?", unlockQty), + "updated_at": now, + }) + + if result.Error != nil { + return fmt.Errorf("解锁库存失败: %v", result.Error) + } + + if result.RowsAffected == 0 { + return fmt.Errorf("锁定库存已被其他事务修改,请重试") + } + + var inventoryDetails []models.InventoryDetail + if err := tx.Clauses(clause.Locking{Strength: "UPDATE"}). + Where("warehouse_id = ? AND product_id = ? AND is_del = 0 AND locked_quantity > 0", + warehouseID, productID). + Order("created_at DESC"). + Find(&inventoryDetails).Error; err != nil { + return fmt.Errorf("查询库存明细失败: %v", err) + } + + detailRemainingUnlock := unlockQty + for j := range inventoryDetails { + if detailRemainingUnlock <= 0 { + break + } + + detailUnlockQty := inventoryDetails[j].LockedQuantity + if detailUnlockQty > detailRemainingUnlock { + detailUnlockQty = detailRemainingUnlock + } + + detailResult := tx.Model(&inventoryDetails[j]). + Where("locked_quantity >= ?", detailUnlockQty). + UpdateColumns(map[string]interface{}{ + "locked_quantity": gorm.Expr("locked_quantity - ?", detailUnlockQty), + "updated_at": now, + }) + + if detailResult.Error != nil { + return fmt.Errorf("解锁库存明细失败: %v", detailResult.Error) + } + + if detailResult.RowsAffected == 0 { + return fmt.Errorf("库存明细锁定数量已被其他事务修改,请重试") + } + + detailRemainingUnlock -= detailUnlockQty + } + + if detailRemainingUnlock > 0 { + return fmt.Errorf("库存明细锁定数量不足,还需解锁:%d", detailRemainingUnlock) + } + + remainingUnlock -= unlockQty + } + + if remainingUnlock > 0 { + return fmt.Errorf("锁定库存不足,还需解锁:%d", remainingUnlock) + } + + return nil +} + +// CancelOutboundWave 取消出库波次并释放锁定库存 +func (s *ProcessService) CancelOutboundWave(waveID int64, operator string, operatorID int64, db ...*gorm.DB) error { + + databaseConn := database.OptionalDB(db...) + + now := time.Now().Unix() + + return executeInTransactionWithDB(databaseConn, func(tx *gorm.DB) error { + var waveHeader models.WaveHeader + if err := tx.Where("id = ? AND is_del = 0", waveID).First(&waveHeader).Error; err != nil { + return fmt.Errorf("波次不存在: %v", err) + } + + if waveHeader.Direction != constant.DirectionOutbound { + return fmt.Errorf("该波次不是出库波次") + } + + if waveHeader.Status == constant.WaveStatusCompleted || waveHeader.Status == constant.WaveStatusCancelled { + return fmt.Errorf("波次状态不允许取消,当前状态: %s", getWaveStatusText(waveHeader.Status)) + } + + var waveTask models.WaveTask + if err := tx.Where("wave_id = ? AND is_del = 0", waveID).First(&waveTask).Error; err != nil { + return fmt.Errorf("波次任务不存在: %v", err) + } + + var waveTaskDetails []models.WaveTaskDetail + if err := tx.Where("wave_task_id = ? AND is_del = 0", waveTask.ID).Find(&waveTaskDetails).Error; err != nil { + return fmt.Errorf("查询波次任务明细失败: %v", err) + } + + for _, detail := range waveTaskDetails { + if detail.PlannedQuantity > 0 { + if err := s.unlockInventory(tx, waveHeader.WarehouseID, detail.ProductID, detail.PlannedQuantity, now); err != nil { + return fmt.Errorf("解锁库存失败[商品ID=%d]: %v", detail.ProductID, err) + } + } + } + + if err := tx.Model(&models.WaveHeader{}).Where("id = ?", waveID).Updates(map[string]interface{}{ + "status": constant.WaveStatusCancelled, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新波次状态失败: %v", err) + } + + if err := tx.Model(&models.WaveTask{}).Where("wave_id = ?", waveID).Updates(map[string]interface{}{ + "status": constant.WaveStatusCancelled, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新波次任务状态失败: %v", err) + } + + if waveHeader.RelatedOrderID > 0 { + var salesOrder models.SalesOrder + if err := tx.Where("id = ? AND is_del = 0", waveHeader.RelatedOrderID).First(&salesOrder).Error; err == nil { + if err := tx.Model(&models.SalesOrder{}).Where("id = ?", salesOrder.ID).Updates(map[string]interface{}{ + "status": constant.SalesStatusConfirmed, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新销售订单状态失败: %v", err) + } + + if err := tx.Model(&models.SalesOrderItem{}). + Where("sales_order_id = ? AND is_del = 0", salesOrder.ID). + Updates(map[string]interface{}{ + "allocated_quantity": 0, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("重置销售订单明细已分配数量失败: %v", err) + } + } + } + + return nil + }) +} + +// CancelSalesOrder 取消销售订单并释放锁定库存 +func (s *ProcessService) CancelSalesOrder(orderID int64, operator string, operatorID int64, db ...*gorm.DB) error { + + databaseConn := database.OptionalDB(db...) + + now := time.Now().Unix() + + return executeInTransactionWithDB(databaseConn, func(tx *gorm.DB) error { + var salesOrder models.SalesOrder + if err := tx.Where("id = ? AND is_del = 0", orderID).First(&salesOrder).Error; err != nil { + return fmt.Errorf("销售订单不存在: %v", err) + } + + if salesOrder.Status == constant.SalesStatusShipped || salesOrder.Status == constant.SalesStatusCancelled { + return fmt.Errorf("订单状态不允许取消,当前状态: %s", getSalesStatusText(salesOrder.Status)) + } + + var orderItems []models.SalesOrderItem + if err := tx.Where("sales_order_id = ? AND is_del = 0", orderID).Find(&orderItems).Error; err != nil { + return fmt.Errorf("查询订单明细失败: %v", err) + } + + for _, item := range orderItems { + if item.AllocatedQuantity > 0 { + if err := s.unlockInventory(tx, salesOrder.WarehouseID, item.ProductID, item.AllocatedQuantity, now); err != nil { + return fmt.Errorf("解锁库存失败[商品ID=%d]: %v", item.ProductID, err) + } + } + } + + if err := tx.Model(&salesOrder).Updates(map[string]interface{}{ + "status": constant.SalesStatusCancelled, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新销售订单状态失败: %v", err) + } + + if err := tx.Model(&models.SalesOrderItem{}). + Where("sales_order_id = ? AND is_del = 0", orderID). + Updates(map[string]interface{}{ + "allocated_quantity": 0, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("重置订单明细已分配数量失败: %v", err) + } + + if salesOrder.Status == constant.SalesStatusAllocated || salesOrder.Status == constant.SalesStatusPicking { + var waveHeader models.WaveHeader + if err := tx.Where("related_order_id = ? AND direction = ? AND is_del = 0", + orderID, constant.DirectionOutbound).First(&waveHeader).Error; err == nil { + if err := tx.Model(&models.WaveHeader{}).Where("id = ?", waveHeader.ID).Updates(map[string]interface{}{ + "status": constant.WaveStatusCancelled, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新关联波次状态失败: %v", err) + } + + if err := tx.Model(&models.WaveTask{}).Where("wave_id = ?", waveHeader.ID).Updates(map[string]interface{}{ + "status": constant.WaveStatusCancelled, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新关联波次任务状态失败: %v", err) + } + } + } + + return nil + }) +} + +// processInventoryOperationForAdjustment 处理盘库调整的库存汇总操作 +func (s *ProcessService) processInventoryOperationForAdjustment(tx *gorm.DB, opKey inventoryKey, locationID int64, + quantity int64, orderNo string, operator string, operatorID int64, now int64, remark string) (*models.InventoryLog, error) { + + var inventory models.Inventory + err := tx.Clauses(clause.Locking{Strength: "UPDATE"}). + Where("warehouse_id = ? AND product_id = ? AND batch_no = ? AND production_date = ? AND expiry_date = ? AND is_del = 0", + opKey.warehouseID, opKey.productID, opKey.batchNo, opKey.productionDate, opKey.expiryDate). + First(&inventory).Error + + if err != nil { + if err == gorm.ErrRecordNotFound { + if quantity < 0 { + return nil, fmt.Errorf("库存不存在,无法减少库存: 商品ID=%d", opKey.productID) + } + + inventory = models.Inventory{ + WarehouseID: opKey.warehouseID, + ProductID: opKey.productID, + BatchNo: opKey.batchNo, + ProductionDate: opKey.productionDate, + ExpiryDate: opKey.expiryDate, + Quantity: quantity, + LockedQuantity: 0, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + if err := tx.Create(&inventory).Error; err != nil { + return nil, fmt.Errorf("创建库存记录失败: %v", err) + } + return &models.InventoryLog{ + WarehouseID: opKey.warehouseID, + LocationID: locationID, + ProductID: opKey.productID, + BatchNo: opKey.batchNo, + ChangeType: constant.InventoryChangeAdjustment, + ChangeQuantity: quantity, + BeforeQuantity: 0, + AfterQuantity: quantity, + RelatedOrderType: constant.OrderTypeStockCheck, + RelatedOrderNo: orderNo, + Operator: operator, + OperatorID: operatorID, + Remark: remark, + CreatedAt: now, + IsDel: 0, + }, nil + } + return nil, fmt.Errorf("查询库存记录失败: %v", err) + } + + beforeQuantity := inventory.Quantity + beforeLocked := inventory.LockedQuantity + afterQuantity := beforeQuantity + quantity + + if afterQuantity < 0 { + return nil, fmt.Errorf("库存不足,当前:%d, 调整:%d", beforeQuantity, quantity) + } + + if quantity < 0 { + availableQty := beforeQuantity - beforeLocked + if availableQty < -quantity { + return nil, fmt.Errorf("可用库存不足,当前可用:%d(总库存:%d, 已锁定:%d), 需要减少:%d", + availableQty, beforeQuantity, beforeLocked, -quantity) + } + } + + result := tx.Model(&inventory). + UpdateColumn("quantity", gorm.Expr("quantity + ?", quantity)). + UpdateColumn("updated_at", now) + + if result.Error != nil { + return nil, fmt.Errorf("更新库存记录失败: %v", result.Error) + } + + if result.RowsAffected == 0 { + return nil, errors.New("库存更新失败,请重试") + } + + return &models.InventoryLog{ + WarehouseID: opKey.warehouseID, + LocationID: locationID, + ProductID: opKey.productID, + BatchNo: opKey.batchNo, + ChangeType: constant.InventoryChangeAdjustment, + ChangeQuantity: quantity, + BeforeQuantity: beforeQuantity, + AfterQuantity: afterQuantity, + RelatedOrderType: constant.OrderTypeStockCheck, + RelatedOrderNo: orderNo, + Operator: operator, + OperatorID: operatorID, + Remark: remark, + CreatedAt: now, + IsDel: 0, + }, nil +} + +// processInventoryDetailOperationForAdjustment 处理盘库调整的库存明细操作 +func (s *ProcessService) processInventoryDetailOperationForAdjustment(tx *gorm.DB, opKey inventoryKey, locationID int64, + quantity int64, now int64) error { + + var inventoryDetail models.InventoryDetail + err := tx.Clauses(clause.Locking{Strength: "UPDATE"}). + Where("warehouse_id = ? AND location_id = ? AND product_id = ? AND batch_no = ? AND production_date = ? AND expiry_date = ? AND is_del = 0", + opKey.warehouseID, locationID, opKey.productID, opKey.batchNo, opKey.productionDate, opKey.expiryDate). + First(&inventoryDetail).Error + + if err != nil { + if err == gorm.ErrRecordNotFound { + if quantity < 0 { + return fmt.Errorf("库存明细不存在,无法减少库存: 商品ID=%d, 库位ID=%d", opKey.productID, locationID) + } + + inventoryDetail = models.InventoryDetail{ + WarehouseID: opKey.warehouseID, + LocationID: locationID, + ProductID: opKey.productID, + BatchNo: opKey.batchNo, + ProductionDate: opKey.productionDate, + ExpiryDate: opKey.expiryDate, + Quantity: quantity, + LockedQuantity: 0, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + return tx.Create(&inventoryDetail).Error + } + return fmt.Errorf("查询库存明细失败: %v", err) + } + + beforeQuantity := inventoryDetail.Quantity + beforeLocked := inventoryDetail.LockedQuantity + afterQuantity := beforeQuantity + quantity + + if afterQuantity < 0 { + return fmt.Errorf("库位库存不足,当前:%d, 调整:%d", beforeQuantity, quantity) + } + + if quantity < 0 { + availableQty := beforeQuantity - beforeLocked + if availableQty < -quantity { + return fmt.Errorf("库位可用库存不足,当前可用:%d(总库存:%d, 已锁定:%d), 需要减少:%d", + availableQty, beforeQuantity, beforeLocked, -quantity) + } + } + + result := tx.Model(&inventoryDetail). + UpdateColumn("quantity", gorm.Expr("quantity + ?", quantity)). + UpdateColumn("updated_at", now) + + if result.Error != nil { + return fmt.Errorf("更新库存明细失败: %v", result.Error) + } + + if result.RowsAffected == 0 { + return errors.New("库存明细更新失败,请重试") + } + + return nil +} + +// 执行事务(使用指定数据库) +func executeInTransactionWithDB(db *gorm.DB, txFunc func(*gorm.DB) error) error { + tx := db.Begin() + + var err error + defer func() { + if r := recover(); r != nil { + tx.Rollback() + panic(r) + } else if err != nil { + tx.Rollback() + } + }() + + err = txFunc(tx) + if err != nil { + return err + } + + if err = tx.Commit().Error; err != nil { + return err + } + + return nil +} + +// generateWaveNo 生成波次号: +// - 入库: WH + 年月日 + 两位序号(01-99),每天从01开始 +// - 出库: WH + O + 年月日 + 五位序号(00001-99999),每天从00001开始 +func (s *ProcessService) generateWaveNo(direction int8, db ...*gorm.DB) (string, error) { + now := time.Now() + dateStr := now.Format("20060102") + + startOfDay := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()).Unix() + endOfDay := time.Date(now.Year(), now.Month(), now.Day(), 23, 59, 59, 0, now.Location()).Unix() + + var maxWaveNo string + var waveNo string + var nextSeq int + var prefix string + + databaseConn := database.OptionalDB(db...) + + if direction == constant.DirectionInbound { + // 入库波次: WH + 年月日 + 两位序号 + prefix = "WH" + dateStr + "-" + query := "SELECT wave_no FROM wave_header WHERE direction = ? AND created_at >= ? AND created_at <= ? AND wave_no LIKE ? ORDER BY wave_no DESC LIMIT 1 FOR UPDATE" + err := databaseConn.Raw(query, constant.DirectionInbound, startOfDay, endOfDay, prefix+"%").Scan(&maxWaveNo).Error + if err != nil { + return "", fmt.Errorf("查询最大入库波次号失败: %v", err) + } + + nextSeq = 1 + if maxWaveNo != "" && len(maxWaveNo) >= 13 { + seqStr := maxWaveNo[11:] + seq, err := strconv.Atoi(seqStr) + if err == nil { + nextSeq = seq + 1 + } + } + if nextSeq > 99 { + return "", fmt.Errorf("当日入库波次号已达上限99") + } + + waveNo = fmt.Sprintf("WH%s-%02d", dateStr, nextSeq) + } else if direction == constant.DirectionOutbound { + // 出库波次: WH + 年月日 + 五位序号 + prefix = "WH" + dateStr + "-" + query := "SELECT wave_no FROM wave_header WHERE direction = ? AND created_at >= ? AND created_at <= ? AND wave_no LIKE ? ORDER BY wave_no DESC LIMIT 1 FOR UPDATE" + err := databaseConn.Raw(query, constant.DirectionOutbound, startOfDay, endOfDay, prefix+"%").Scan(&maxWaveNo).Error + if err != nil { + return "", fmt.Errorf("查询最大出库波次号失败: %v", err) + } + + nextSeq = 1 + if maxWaveNo != "" && len(maxWaveNo) >= 16 { + seqStr := maxWaveNo[14:] + seq, err := strconv.Atoi(seqStr) + if err == nil { + nextSeq = seq + 1 + } + } + if nextSeq > 99999 { + return "", fmt.Errorf("当日出库波次号已达上限99999") + } + + waveNo = fmt.Sprintf("WH%s-%05d", dateStr, nextSeq) + } else { + return "", fmt.Errorf("不支持的波次方向: %d", direction) + } + + return waveNo, nil +} + +// syncTaskToExternal 同步入库任务到外部接口 +func (s *ProcessService) syncTaskToExternal(waveTaskID int64, carCapacity int64, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + var waveTask models.WaveTask + if err := databaseConn.Where("id = ? AND is_del = 0", waveTaskID).First(&waveTask).Error; err == nil { + if waveTask.CarId > 0 { + var carShops []models.CarShop + if err := databaseConn.Where("car_id = ? AND is_del = 0", waveTask.CarId).Find(&carShops).Error; err == nil { + for _, carShop := range carShops { + shopType := carShop.ShopType + taskType := 7 + imgType := 2 + params := map[string]string{ + "shop_id": strconv.FormatInt(carShop.ShopID, 10), + "shop_type": strconv.Itoa(int(carShop.ShopType)), + "task_count": strconv.FormatInt(carCapacity, 10), + "task_type": strconv.Itoa(taskType), + "img_type": strconv.Itoa(imgType), + } + + sign := utils.SignParams(params) + params["sign"] = sign + //创建任务 + url := config.AppConfig.ExternalAPI.SyncTaskURL + res, err := utils.SubmitFormData(url, params) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "创建外部任务失败", + "shop_id": carShop.ShopID, + "error": fmt.Sprintf("请求失败: %v", err), + }) + continue + } + + var resData systemRes.ExternalAPIResponse + if err := json.Unmarshal([]byte(res), &resData); err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "解析外部接口响应失败", + "shop_id": carShop.ShopID, + "error": fmt.Sprintf("JSON解析失败: %v", err), + "response": res, + }) + continue + } + if resData.Code != "200" { + now := time.Now().Unix() + logRecord := models.OutTaskLog{ + ShopID: carShop.ShopID, + WaveTaskID: waveTaskID, + OutTaskID: 0, + ProductID: 0, + ISBN: "", + LiveImage: datatypes.JSON("[]"), + Stock: 0, + SalePrice: 0, + Status: 0, + Msg: fmt.Sprintf("创建任务接口失败: %v", resData.Msg), + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := databaseConn.Create(&logRecord).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "保存外部任务日志", + "shop_id": carShop.ShopID, + "error": fmt.Sprintf("保存日志失败: %v", err), + }) + } + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "外部接口返回错误", + "shop_id": carShop.ShopID, + "code": resData.Code, + "msg": resData.Msg, + "response": res, + }) + continue + } + + var taskIDInt int64 + switch v := resData.Data.(type) { + case float64: + taskIDInt = int64(v) + case string: + if parsed, err := strconv.ParseInt(v, 10, 64); err == nil { + taskIDInt = parsed + } + default: + taskIDInt = 0 + } + + if taskIDInt > 0 { + now := time.Now().Unix() + outTask := models.OutTask{ + ShopID: carShop.ShopID, + WaveTaskID: waveTaskID, + OutTaskID: taskIDInt, + ShopType: shopType, + TaskType: int8(taskType), + ImgType: int8(imgType), + TaskCount: carCapacity, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := databaseConn.Create(&outTask).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "保存外部任务记录失败", + "shop_id": carShop.ShopID, + "task_id": taskIDInt, + "wave_task_id": waveTaskID, + "error": fmt.Sprintf("数据库插入失败: %v", err), + }) + } + } + } + } + } + } + return nil +} + +// syncProductsToExternal 入库发送任务体 +func (s *ProcessService) syncProductsToExternal(receivingOrderID, waveTaskID, userID int64, orderInfo []orderItemInfo, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + var receivingOrder models.ReceivingOrder + if err := databaseConn.Where("id = ? AND is_del = 0", receivingOrderID).First(&receivingOrder).Error; err != nil { + return fmt.Errorf("查询入库单失败: %v", err) + } + + productIDs := make([]int64, 0, len(orderInfo)) + for _, item := range orderInfo { + productIDs = append(productIDs, item.productID) + } + + var products []models.Product + if err := databaseConn.Where("id IN ? AND is_del = 0", productIDs).Find(&products).Error; err != nil { + return fmt.Errorf("查询商品信息失败: %v", err) + } + + var logistics models.Logistics + err := databaseConn.Table("logistics"). + Select("logistics.fir_price"). + Joins("INNER JOIN warehouse ON warehouse.logistics_id = logistics.id AND warehouse.is_del = ?", "0"). + Joins("INNER JOIN wave_header ON wave_header.warehouse_id = warehouse.id AND wave_header.is_del = 0"). + Joins("INNER JOIN wave_task ON wave_task.wave_id = wave_header.id AND wave_task.is_del = 0"). + Where("wave_task.id = ?", waveTaskID). + First(&logistics).Error + + if err != nil { + return fmt.Errorf("查询物流运费失败: %v", err) + } + + cost := int64(logistics.FirPrice * 100) + + productMap := make(map[int64]models.Product) + for _, p := range products { + productMap[p.ID] = p + } + + var warehouse models.Warehouse + if err := databaseConn.Where("id = ? AND is_del = 0", receivingOrder.WarehouseID).First(&warehouse).Error; err != nil { + return fmt.Errorf("查询仓库信息失败: %v", err) + } + + locationIDs := make([]int64, 0, len(orderInfo)) + for _, item := range orderInfo { + if item.locationID > 0 { + locationIDs = append(locationIDs, item.locationID) + } + } + + var locations []models.Location + if len(locationIDs) > 0 { + if err := databaseConn.Where("id IN ? AND is_del = 0", locationIDs).Find(&locations).Error; err != nil { + return fmt.Errorf("查询库位信息失败: %v", err) + } + } + + locationMap := make(map[int64]models.Location) + for _, loc := range locations { + locationMap[loc.ID] = loc + } + + var waveTask models.WaveTask + if err := databaseConn.Where("id = ? AND is_del = 0", waveTaskID).First(&waveTask).Error; err != nil { + return fmt.Errorf("查询波次任务失败: %v", err) + } + var car models.Car + if err := databaseConn.Where("id = ? AND is_del = 0", waveTask.CarId).First(&car).Error; err != nil { + return fmt.Errorf("查询小车信息失败: %v", err) + } + + var bodyList []string + var data []models.OutTaskLog + if car.ReleaseType == 2 { + // 合并模式:按ISBN合并相同商品的库存 + type isbnGroup struct { + product models.Product + totalQty int64 + skuCode string + imgList []string + } + + isbnMap := make(map[string]*isbnGroup) + + for _, item := range orderInfo { + product, exists := productMap[item.productID] + if !exists { + continue + } + + isbn := product.Barcode + + if group, ok := isbnMap[isbn]; ok { + // 已存在该ISBN,累加数量 + group.totalQty += item.quantity + } else { + // 新建ISBN组 + var imgList []string + if product.LiveImage != nil && len(product.LiveImage) > 0 { + if err := json.Unmarshal(product.LiveImage, &imgList); err != nil { + return fmt.Errorf("解析json失败: %v", err) + } + } + + skuCode := warehouse.Code + if item.locationID > 0 { + if location, exists := locationMap[item.locationID]; exists { + skuCode = fmt.Sprintf("%s##%s", warehouse.Code, location.Code) + } + } + + isbnMap[isbn] = &isbnGroup{ + product: product, + totalQty: item.quantity, + skuCode: skuCode, + imgList: imgList, + } + } + } + + // 根据合并后的数据生成请求体 + for _, group := range isbnMap { + msgData := map[string]interface{}{ + "product_id": group.product.ID, + "user_id": fmt.Sprintf("%d", userID), + } + msgJSON, _ := json.Marshal(msgData) + + bodyData := map[string]interface{}{ + "book_info": map[string]interface{}{ + "isbn": group.product.Barcode, + "image_object": map[string]interface{}{ + "carousel_url_array": group.imgList, + }, + }, + "detail": map[string]interface{}{ + "stock": group.totalQty, + "price": group.product.SalePrice, + "shipping_cost": cost, + "sku_code": group.skuCode, + "msg": string(msgJSON), + "condition": group.product.Appearance, + }, + } + + bodyDataJSON, err := json.Marshal(bodyData) + if err != nil { + return fmt.Errorf("序列化请求体失败: %v", err) + } + + bodyList = append(bodyList, string(bodyDataJSON)) + data = append(data, models.OutTaskLog{ + ProductID: group.product.ID, + ISBN: group.product.Barcode, + LiveImage: group.product.LiveImage, + Stock: group.totalQty, + SalePrice: group.product.SalePrice, + Cost: cost, + SkuCode: group.skuCode, + }) + } + } else { + for _, item := range orderInfo { + product, exists := productMap[item.productID] + if !exists { + continue + } + + isbn := product.Barcode + var imgList []string + if product.LiveImage != nil && len(product.LiveImage) > 0 { + if err := json.Unmarshal(product.LiveImage, &imgList); err != nil { + return fmt.Errorf("解析json失败: %v", err) + } + } + + skuCode := warehouse.Code + if item.locationID > 0 { + if location, exists := locationMap[item.locationID]; exists { + skuCode = fmt.Sprintf("%s##%s", warehouse.Code, location.Code) + } + } + + msgData := map[string]interface{}{ + "product_id": product.ID, + "user_id": fmt.Sprintf("%d", userID), + } + msgJSON, _ := json.Marshal(msgData) + + bodyData := map[string]interface{}{ + "book_info": map[string]interface{}{ + "isbn": isbn, + "image_object": map[string]interface{}{ + "carousel_url_array": imgList, + }, + }, + "detail": map[string]interface{}{ + "stock": item.quantity, + "price": product.SalePrice, + "shipping_cost": cost, + "sku_code": skuCode, + "msg": string(msgJSON), + "condition": product.Appearance, + }, + } + + bodyDataJSON, err := json.Marshal(bodyData) + if err != nil { + return fmt.Errorf("序列化请求体失败: %v", err) + } + + bodyList = append(bodyList, string(bodyDataJSON)) + data = append(data, models.OutTaskLog{ + ProductID: product.ID, + ISBN: isbn, + LiveImage: product.LiveImage, + Stock: item.quantity, + SalePrice: product.SalePrice, + Cost: cost, + SkuCode: skuCode, + }) + } + } + + if receivingOrder.WaveTaskID > 0 && car.PushType == 2 { + var outTask []models.OutTask + if err := databaseConn.Where("wave_task_id = ? AND is_del = 0", waveTaskID).Find(&outTask).Error; err == nil { + for _, task := range outTask { + if task.OutTaskID > 0 { + taskID := fmt.Sprintf("%d", task.OutTaskID) + allBody := strings.Join(bodyList, "") // 直接无缝拼接(和服务端一致) + signParams := map[string]string{ + "task_id": taskID, + "body": allBody, + } + + sign := utils.SignParams(signParams) + // 发送请求 + url := config.AppConfig.ExternalAPI.SyncTaskBodyURL + resp, err := utils.SubmitMultiBody(url, taskID, bodyList, sign) + if err != nil { + s.saveOutTaskLog(task, data, fmt.Sprintf("请求外部接口失败: %v", err), databaseConn) + return fmt.Errorf("请求外部接口失败: %v", err) + } + var resData systemRes.ExternalAPIResponse + if err := json.Unmarshal([]byte(resp), &resData); err != nil { + return fmt.Errorf("解析响应失败: %v", err) + } + + if resData.Code != "200" { + s.saveOutTaskLog(task, data, fmt.Sprintf("外部接口返回错误: code=%s, msg=%s", resData.Code, resData.Msg), databaseConn) + return fmt.Errorf("外部接口返回错误: code=%s, msg=%s", resData.Code, resData.Msg) + } + + s.saveOutTaskLog(task, data, "成功", databaseConn) + } + } + } + } + + return nil +} + +func (s *ProcessService) saveOutTaskLog(outTask models.OutTask, bodyList []models.OutTaskLog, msg string, db *gorm.DB) { + now := time.Now().Unix() + for _, body := range bodyList { + body.ShopID = outTask.ShopID + body.WaveTaskID = outTask.WaveTaskID + body.OutTaskID = outTask.OutTaskID + body.Status = func() int8 { + if msg == "成功" { + return 1 + } else { + return 0 + } + }() + body.Msg = msg + body.CreatedAt = now + body.UpdatedAt = now + + if err := db.Create(&body).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "保存外部任务日志", + "out_task_id": outTask.OutTaskID, + "product_id": body.ProductID, + "error": fmt.Sprintf("保存日志失败: %v", err), + }) + } + } +} + +// sendSyncRequest 发送同步请求到外部接口 +func (s *ProcessService) sendSyncRequest(request systemReq.ExternalProductSyncRequest) error { + apiURL := config.AppConfig.ExternalAPI.SyncProductURL + + // 构造 data 字段的 JSON 字符串 + dataMap := map[string]interface{}{ + "shopIds": request.ShopIDs, + "data": request.Data, + } + + jsonData, err := json.Marshal(dataMap) + if err != nil { + return fmt.Errorf("序列化JSON失败: %v", err) + } + + // 使用 form-data 格式,但 data 字段是 JSON 字符串 + formData := url.Values{} + formData.Set("data", string(jsonData)) + + timeout := time.Duration(config.AppConfig.ExternalAPI.Timeout) * time.Second + client := &http.Client{ + Timeout: timeout, + } + + // 打印编码后的字符串 + encodedData := formData.Encode() + + resp, err := client.Post(apiURL, "application/x-www-form-urlencoded", strings.NewReader(encodedData)) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "外部接口同步", + "error": fmt.Sprintf("发送请求失败: %v", err), + "url": apiURL, + "data": encodedData, + }) + return fmt.Errorf("发送请求失败: %v", err) + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "外部接口同步", + "error": fmt.Sprintf("接口返回错误状态码: %d", resp.StatusCode), + "url": apiURL, + "data": encodedData, + }) + return fmt.Errorf("接口返回错误状态码: %d", resp.StatusCode) + } + + var result systemRes.ExternalAPIResponse + if err := json.NewDecoder(resp.Body).Decode(&result); err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "外部接口同步", + "error": fmt.Sprintf("解析响应失败: %v", err), + "url": apiURL, + }) + return fmt.Errorf("解析响应失败: %v", err) + } + + return nil +} + +// saveStatist 保存统计记录 +func (s *ProcessService) saveStatist(userID int64, changeType int8, db ...*gorm.DB) { + databaseConn := database.OptionalDB(db...) + + now := time.Now() + // 将日期格式化为 YYYYMMDD 字符串,然后转换为时间戳 + dateStr := now.Format("20060102") + var statDate int64 + if _, err := fmt.Sscanf(dateStr, "%d", &statDate); err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "保存统计记录", + "user_id": userID, + "error": fmt.Sprintf("日期格式化失败: %v", err), + }) + return + } + + var statist models.Statist + + // 查询当天是否已有记录 + err := databaseConn.Where("create_by = ? AND stat_date = ? AND is_del = ?", userID, statDate, 0).First(&statist).Error + + if err != nil { + // 记录不存在,创建新记录 + currentTime := now.Unix() + statist = models.Statist{ + CreateBy: userID, + StatDate: statDate, + CreatedAt: currentTime, + UpdatedAt: currentTime, + IsDel: 0, + } + + if changeType == constant.InventoryChangeInbound { + statist.ReceivingNum = 1 + statist.OutboundNum = 0 + } else { + statist.ReceivingNum = 0 + statist.OutboundNum = 1 + } + + if err := databaseConn.Create(&statist).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "保存统计记录", + "user_id": userID, + "change_type": changeType, + "error": fmt.Sprintf("创建统计记录失败: %v", err), + }) + } + } else { + // 记录存在,对应字段+1 + updates := map[string]interface{}{ + "updated_at": now.Unix(), + } + + if changeType == constant.InventoryChangeInbound { + updates["receiving_num"] = gorm.Expr("receiving_num + 1") + } else { + updates["outbound_num"] = gorm.Expr("outbound_num + 1") + } + + if err := databaseConn.Model(&models.Statist{}).Where("id = ?", statist.ID).Updates(updates).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "保存统计记录", + "user_id": userID, + "change_type": changeType, + "error": fmt.Sprintf("更新统计记录失败: %v", err), + }) + } + } +} + +// getWaveStatusText 获取波次状态文本 +func getWaveStatusText(status int8) string { + switch status { + case constant.WaveStatusCreated: + return "已创建" + case constant.WaveStatusReleased: + return "已下发" + case constant.WaveStatusPicking: + return "拣货中" + case constant.WaveStatusCompleted: + return "已完成" + case constant.WaveStatusCancelled: + return "已取消" + default: + return "未知状态" + } +} + +// getPurchaseStatusText 获取采购订单状态文本 +func getPurchaseStatusText(status int8) string { + switch status { + case constant.PurchaseStatusDraft: + return "草稿" + case constant.PurchaseStatusSubmitted: + return "已提交" + case constant.PurchaseStatusApproved: + return "已审核" + case constant.PurchaseStatusPartialReceived: + return "部分收货" + case constant.PurchaseStatusReceived: + return "已收货" + case constant.PurchaseStatusCancelled: + return "已取消" + default: + return "未知状态" + } +} + +// getOutboundStatusText 获取出库单状态文本 +func getOutboundStatusText(status int8) string { + switch status { + case constant.OutboundStatusCreated: + return "已创建" + case constant.OutboundStatusPicking: + return "拣货中" + case constant.OutboundStatusCompleted: + return "已完成" + case constant.OutboundStatusCancelled: + return "已取消" + case constant.OutboundStatusShipping: + return "发货中" + case constant.OutboundStatusShipped: + return "已发货" + default: + return "未知状态" + } +} + +// getSalesStatusText 获取销售订单状态文本 +func getSalesStatusText(status int8) string { + switch status { + case constant.SalesStatusDraft: + return "草稿" + case constant.SalesStatusConfirmed: + return "已确认" + case constant.SalesStatusAllocated: + return "已分配库存" + case constant.SalesStatusPicking: + return "拣货中" + case constant.SalesStatusShipped: + return "已发货" + case constant.SalesStatusCancelled: + return "已取消" + default: + return "未知状态" + } +} diff --git a/service/product.go b/service/product.go new file mode 100644 index 0000000..fbbf499 --- /dev/null +++ b/service/product.go @@ -0,0 +1,2701 @@ +package service + +import ( + "bytes" + "crypto/md5" + "encoding/json" + "errors" + "fmt" + "github.com/xuri/excelize/v2" + "gorm.io/datatypes" + "gorm.io/gorm" + "io" + "net/http" + "psi/config" + "psi/constant" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + "strconv" + "strings" + "time" +) + +type ProductService struct{} + +type OutTaskInfo struct { + ShopList []systemRes.ShopInfo +} + +func (s *ProductService) GetProductList(req systemReq.GetProductListRequest, db ...*gorm.DB) (*systemRes.ProductListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.Product{}).Where("product.is_del = ?", 0) + + if len(req.IDs) > 0 { + query = query.Where("product.id IN ?", req.IDs) + } + if req.Status != "" { + query = query.Where("product.status = ?", req.Status) + } + if req.Keyword != "" { + query = query.Where("product.name LIKE ? OR product.barcode LIKE ?", "%"+req.Keyword+"%", "%"+req.Keyword+"%") + } + if req.StartCreatedAt > 0 { + query = query.Where("product.created_at >= ?", req.StartCreatedAt) + } + if req.EndCreatedAt > 0 { + query = query.Where("product.created_at <= ?", req.EndCreatedAt) + } + if req.MinSalePrice > 0 { + query = query.Where("product.sale_price >= ?", req.MinSalePrice) + } + if req.MaxSalePrice > 0 { + query = query.Where("product.sale_price <= ?", req.MaxSalePrice) + } + if req.WarehouseID > 0 || req.MinStock > 0 || req.MaxStock > 0 || req.LocationID > 0 { + query = query.Joins("LEFT JOIN inventory_detail inv_filter ON inv_filter.product_id = product.id AND inv_filter.is_del = ?", 0) + if req.WarehouseID > 0 { + query = query.Where("inv_filter.warehouse_id = ?", req.WarehouseID) + } + if req.MinStock > 0 { + query = query.Where("COALESCE(inv_filter.quantity, 0) > ?", req.MinStock) + } + if req.MaxStock > 0 { + query = query.Where("COALESCE(inv_filter.quantity, 0) < ?", req.MaxStock) + } + if req.LocationID > 0 { + query = query.Where("inv_filter.location_id = ?", req.LocationID) + } + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + var products []systemRes.ProductWithInfo + offset := (req.Page - 1) * req.PageSize + if err := query.Select("product.*,c.name as category_name,w.id as warehouse_id,w.code as warehouse_code,w.name as warehouse_name,l.id as location_id,l.code as location_code,t.quantity"). + Joins("LEFT JOIN product_category c ON c.id = product.category_id"). + Joins("LEFT JOIN inventory t ON t.product_id = product.id"). + Joins("LEFT JOIN inventory_detail i ON i.product_id = product.id"). + Joins("LEFT JOIN warehouse w ON w.id = i.warehouse_id"). + Joins("LEFT JOIN location l ON l.id = i.location_id"). + Order("created_at DESC").Offset(offset).Limit(req.PageSize).Find(&products).Error; err != nil { + return nil, utils.NewError("查询商品列表失败") + } + + productIDs := make([]int64, 0, len(products)) + for _, product := range products { + productIDs = append(productIDs, product.ID) + } + + outTaskInfoMap, err := s.getProductOutTaskInfo(databaseConn, productIDs) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "查询商品任务信息", + "error": fmt.Sprintf("查询失败: %v", err), + }) + } + + var productItems []systemRes.ProductItem + for _, product := range products { + item := systemRes.ConvertProductWithInfoToItem(product) + + if outTaskInfo, exists := outTaskInfoMap[product.ID]; exists { + item.ShopList = outTaskInfo.ShopList + } + + productItems = append(productItems, item) + } + + return &systemRes.ProductListResponse{ + List: productItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +func (s *ProductService) GetDistributionProductList(req systemReq.GetDistributionProductListRequest) (*systemRes.ProductListResponse, error) { + databaseConn, err := database.GetTenantDB(req.UserID) + if err != nil { + return nil, utils.NewError("获取数据库连接失败") + } + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.Product{}).Where("product.is_del = ?", 0) + + if req.Keyword != "" { + query = query.Where("(product.name LIKE ? OR product.barcode LIKE ?)", "%"+req.Keyword+"%", "%"+req.Keyword+"%") + } + + if req.Name != "" { + query = query.Where("product.name LIKE ?", "%"+req.Name+"%") + } + if req.Barcode != "" { + query = query.Where("product.barcode LIKE ?", "%"+req.Barcode+"%") + } + if req.Appearance > 0 { + query = query.Where("product.appearance = ?", req.Appearance) + } + if req.StartCreatedAt > 0 { + query = query.Where("product.created_at >= ?", req.StartCreatedAt) + } + if req.EndCreatedAt > 0 { + query = query.Where("product.created_at <= ?", req.EndCreatedAt) + } + if req.MinSalePrice > 0 { + query = query.Where("product.sale_price >= ?", req.MinSalePrice) + } + if req.MaxSalePrice > 0 { + query = query.Where("product.sale_price <= ?", req.MaxSalePrice) + } + + subQuery := databaseConn.Table("inventory"). + Select("product_id, SUM(quantity) as total_quantity"). + Where("is_del = ?", 0) + + if req.StartStockAt > 0 { + subQuery = subQuery.Where("created_at >= ?", req.StartStockAt) + } + if req.EndStockAt > 0 { + subQuery = subQuery.Where("created_at <= ?", req.EndStockAt) + } + + if req.WarehouseID > 0 { + subQuery = subQuery.Where("warehouse_id = ?", req.WarehouseID) + } + + subQuery = subQuery.Group("product_id").Having("SUM(quantity) > 0") + + query = query.Joins("INNER JOIN (?) as inv_sum ON inv_sum.product_id = product.id", subQuery) + + if req.LocationID > 0 { + query = query.Joins("INNER JOIN inventory_detail inv_detail ON inv_detail.product_id = product.id AND inv_detail.location_id = ? AND inv_detail.is_del = ?", req.LocationID, 0) + } + + if req.MinStock > 0 { + query = query.Where("inv_sum.total_quantity > ?", req.MinStock) + } + if req.MaxStock > 0 { + query = query.Where("inv_sum.total_quantity < ?", req.MaxStock) + } + if req.StockValue > 0 && req.StockOperator != "" { + query = query.Where("inv_sum.total_quantity "+req.StockOperator+" ?", req.StockValue) + } + if req.SalePriceValue > 0 && req.SalePriceOperator != "" { + query = query.Where("product.sale_price "+req.SalePriceOperator+" ?", req.SalePriceValue) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + var products []systemRes.ProductWithInfo + offset := (req.Page - 1) * req.PageSize + if err := query.Select("product.*, c.name as category_name, w.id as warehouse_id, w.code as warehouse_code, " + + "w.name as warehouse_name, l.id as location_id, l.code as location_code, inv_sum.total_quantity as quantity, " + + "IF(ls.fir_price IS NOT NULL, ls.fir_price * 100, NULL) as fir_price, " + + "FROM_UNIXTIME(i.created_at, '%Y-%m-%d %H:%i:%s') as inbound_time "). + Joins("LEFT JOIN product_category c ON c.id = product.category_id"). + Joins("LEFT JOIN inventory_detail i ON i.product_id = product.id AND i.is_del = 0"). + Joins("LEFT JOIN warehouse w ON w.id = i.warehouse_id"). + Joins("LEFT JOIN location l ON l.id = i.location_id"). + Joins("left join logistics ls ON ls.warehouse_id = w.id and ls.del_flag='0'"). + Order("product.created_at DESC").Offset(offset).Limit(req.PageSize).Find(&products).Error; err != nil { + return nil, utils.NewError("查询商品列表失败") + } + + var productItems []systemRes.ProductItem + for _, product := range products { + item := systemRes.ConvertProductWithInfoToItem(product) + + productItems = append(productItems, item) + } + + return &systemRes.ProductListResponse{ + List: productItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetProductDetail 获取商品详情 +func (s *ProductService) GetProductDetail(req systemReq.GetProductDetailRequest, db ...*gorm.DB) (*systemRes.ProductItem, error) { + databaseConn := database.OptionalDB(db...) + + if req.ID <= 0 { + return nil, utils.NewError("商品ID不能为空") + } + + var product models.Product + if err := databaseConn.Where("id = ? AND is_del = ?", req.ID, 0).First(&product).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, utils.NewError("商品不存在") + } + return nil, utils.NewError("查询商品详情失败") + } + + // 打印SQL + + var liveImage []string + if len(product.LiveImage) > 0 { + err := json.Unmarshal(product.LiveImage, &liveImage) + if err != nil { + return nil, err + } + } + + item := &systemRes.ProductItem{ + ID: product.ID, + CategoryID: product.CategoryID, + StandardProductID: product.StandardProductID, + Name: product.Name, + Appearance: product.Appearance, + Barcode: product.Barcode, + Price: product.Price, + SalePrice: product.SalePrice, + LiveImage: liveImage, + IsBatchManaged: product.IsBatchManaged, + IsShelfLifeManaged: product.IsShelfLifeManaged, + Status: product.Status, + CreatedAt: product.CreatedAt, + UpdatedAt: product.UpdatedAt, + ShopList: []systemRes.ShopInfo{}, + } + + return item, nil +} + +// getProductOutTaskInfo +func (s *ProductService) getProductOutTaskInfo(db *gorm.DB, productIDs []int64) (map[int64]*OutTaskInfo, error) { + resultMap := make(map[int64]*OutTaskInfo) + + if len(productIDs) == 0 { + return resultMap, nil + } + + type OutTaskResult struct { + ProductID int64 `gorm:"column:product_id"` + ShopID int64 `gorm:"column:shop_id"` + ShopAliasName string `gorm:"column:shop_alias_name"` + ShopType int8 `gorm:"column:shop_type"` + IsSent bool `gorm:"column:is_sent"` + OutTaskLogID int64 `gorm:"column:out_task_log_id"` + OutTaskID int64 `gorm:"column:out_task_id"` + LogStatus int8 `gorm:"column:log_status"` + LogMsg string `gorm:"column:log_msg"` + LogCreatedAt int64 `gorm:"column:log_created_at"` + } + + var outTaskResults []OutTaskResult + + err := db.Table("wave_task_detail wtd"). + Select(`wtd.product_id, + s.id as shop_id, + s.shop_alias_name, + s.shop_type, + CASE WHEN ot.id IS NOT NULL THEN 1 ELSE 0 END as is_sent, + otl.id as out_task_log_id, + ot.out_task_id as out_task_id, + otl.status as log_status, + otl.msg as log_msg, + otl.created_at as log_created_at`). + Joins("INNER JOIN wave_task wt ON wt.id = wtd.wave_task_id AND wt.is_del = 0"). + Joins("LEFT JOIN out_task ot ON ot.wave_task_id = wt.id AND ot.is_del = 0"). + Joins("LEFT JOIN shop s ON s.id = ot.shop_id AND s.del_flag = 0"). + Joins("LEFT JOIN out_task_log otl ON otl.out_task_id = ot.out_task_id AND otl.product_id = wtd.product_id AND otl.is_del = 0 AND otl.id = (SELECT MAX(otl2.id) FROM out_task_log otl2 WHERE otl2.out_task_id = ot.out_task_id AND otl2.product_id = wtd.product_id AND otl2.is_del = 0)"). + Where("wtd.product_id IN ? AND wtd.is_del = 0", productIDs). + Order("otl.created_at DESC"). + Scan(&outTaskResults).Error + + if err != nil { + return nil, err + } + + for _, item := range outTaskResults { + if _, exists := resultMap[item.ProductID]; !exists { + resultMap[item.ProductID] = &OutTaskInfo{ + ShopList: []systemRes.ShopInfo{}, + } + } + + outTaskInfo := resultMap[item.ProductID] + + if item.ShopAliasName != "" { + shopInfo := systemRes.ShopInfo{ + ShopID: strconv.FormatInt(item.ShopID, 10), + ShopAliasName: item.ShopAliasName, + ShopType: item.ShopType, + ShopTypeName: s.getShopTypeName(item.ShopType), + IsSent: item.IsSent, + OutTaskLogID: item.OutTaskLogID, + OutTaskID: item.OutTaskID, + LogStatus: item.LogStatus, + LogMsg: item.LogMsg, + LogCreatedAt: item.LogCreatedAt, + } + + exists := false + for _, shop := range outTaskInfo.ShopList { + if shop.ShopAliasName == item.ShopAliasName && shop.ShopType == item.ShopType { + exists = true + break + } + } + + if !exists { + outTaskInfo.ShopList = append(outTaskInfo.ShopList, shopInfo) + } + } + } + + return resultMap, nil +} + +// SaveProduct 保存商品 +func (s *ProductService) SaveProduct(req systemReq.ProductRequest, db ...*gorm.DB) (int64, error) { + databaseConn := database.OptionalDB(db...) + + now := time.Now().Unix() + + if req.ID > 0 { + return s.updateProduct(req, now, databaseConn) + } + return s.createProduct(req, now, databaseConn) +} + +func (s *ProductService) createProduct(req systemReq.ProductRequest, now int64, db *gorm.DB) (int64, error) { + + var liveImage datatypes.JSON + if len(req.LiveImage) > 0 { + jsonBytes, _ := json.Marshal(req.LiveImage) + liveImage = jsonBytes + } else { + liveImage = datatypes.JSON("[]") + } + + product := models.Product{ + CategoryID: req.CategoryID, + StandardProductID: req.StandardProductID, + Name: req.Name, + Appearance: req.Appearance, + Barcode: req.Barcode, + Price: req.Price, + LiveImage: liveImage, + IsBatchManaged: req.IsBatchManaged, + IsShelfLifeManaged: req.IsShelfLifeManaged, + Status: req.Status, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := db.Create(&product).Error; err != nil { + return 0, fmt.Errorf("创建商品失败:%w", err) + } + + return product.ID, nil +} + +func (s *ProductService) updateProduct(req systemReq.ProductRequest, now int64, db *gorm.DB) (int64, error) { + var product models.Product + if err := db.Where("id = ? AND is_del = 0", req.ID).First(&product).Error; err != nil { + return 0, fmt.Errorf("商品不存在:%w", err) + } + + var liveImage datatypes.JSON + if len(req.LiveImage) > 0 { + jsonBytes, _ := json.Marshal(req.LiveImage) + liveImage = jsonBytes + } else { + liveImage = product.LiveImage + } + + updates := map[string]interface{}{ + "category_id": req.CategoryID, + "standard_product_id": req.StandardProductID, + "name": req.Name, + "appearance": req.Appearance, + "barcode": req.Barcode, + "price": req.Price, + "live_image": liveImage, + "is_batch_managed": req.IsBatchManaged, + "is_shelf_life_managed": req.IsShelfLifeManaged, + "status": req.Status, + "updated_at": now, + } + + if err := db.Model(&product).Updates(updates).Error; err != nil { + return 0, fmt.Errorf("更新商品失败:%w", err) + } + + return product.ID, nil +} + +// DeleteProduct 删除商品 +func (s *ProductService) DeleteProduct(req systemReq.DeleteProductRequest, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + var product models.Product + if err := databaseConn.Where("id = ? AND is_del = ?", req.ID, 0).First(&product).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return fmt.Errorf("商品不存在") + } + return fmt.Errorf("查询商品失败: %v", err) + } + + now := time.Now().Unix() + + err := executeInTransactionWithDB(databaseConn, func(tx *gorm.DB) error { + var purchaseOrderItems []models.PurchaseOrderItem + if err := tx.Where("product_id = ? AND is_del = ?", req.ID, 0).Find(&purchaseOrderItems).Error; err != nil { + return fmt.Errorf("查询采购订单明细失败: %v", err) + } + + if len(purchaseOrderItems) > 0 { + purchaseOrderIDs := make([]int64, 0) + for _, item := range purchaseOrderItems { + purchaseOrderIDs = append(purchaseOrderIDs, item.PurchaseOrderID) + } + + if err := tx.Model(&models.PurchaseOrderItem{}). + Where("product_id = ? AND is_del = ?", req.ID, 0). + Updates(map[string]interface{}{ + "is_del": 1, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("删除采购订单明细失败: %v", err) + } + + for _, poID := range purchaseOrderIDs { + var remainingItems int64 + if err := tx.Model(&models.PurchaseOrderItem{}). + Where("purchase_order_id = ? AND is_del = ?", poID, 0). + Count(&remainingItems).Error; err != nil { + return fmt.Errorf("检查采购订单剩余明细失败: %v", err) + } + + if remainingItems == 0 { + if err := tx.Model(&models.PurchaseOrder{}). + Where("id = ? AND is_del = ?", poID, 0). + Updates(map[string]interface{}{ + "is_del": 1, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("删除采购订单失败: %v", err) + } + } + } + } + + var waveHeaders []models.WaveHeader + if err := tx.Where("direction = ? AND status <= ? AND is_del = ?", 1, 2, 0). + Find(&waveHeaders).Error; err != nil { + return fmt.Errorf("查询波次主表失败: %v", err) + } + + for _, waveHeader := range waveHeaders { + var waveTasks []models.WaveTask + if err := tx.Where("wave_id = ? AND is_del = ?", waveHeader.ID, 0). + Find(&waveTasks).Error; err != nil { + return fmt.Errorf("查询波次任务失败: %v", err) + } + + for _, waveTask := range waveTasks { + var taskDetails []models.WaveTaskDetail + if err := tx.Where("wave_task_id = ? AND product_id = ? AND is_del = ?", waveTask.ID, req.ID, 0). + Find(&taskDetails).Error; err != nil { + return fmt.Errorf("查询波次任务明细失败: %v", err) + } + + if len(taskDetails) > 0 { + if err := tx.Model(&models.WaveTaskDetail{}). + Where("wave_task_id = ? AND product_id = ? AND is_del = ?", waveTask.ID, req.ID, 0). + Updates(map[string]interface{}{ + "is_del": 1, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("删除波次任务明细失败: %v", err) + } + + var remainingDetails int64 + if err := tx.Model(&models.WaveTaskDetail{}). + Where("wave_task_id = ? AND is_del = ?", waveTask.ID, 0). + Count(&remainingDetails).Error; err != nil { + return fmt.Errorf("检查波次任务剩余明细失败: %v", err) + } + + if remainingDetails == 0 { + if err := tx.Model(&models.WaveTask{}). + Where("id = ? AND is_del = ?", waveTask.ID, 0). + Updates(map[string]interface{}{ + "is_del": 1, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("删除波次任务失败: %v", err) + } + + var remainingTasks int64 + if err := tx.Model(&models.WaveTask{}). + Where("wave_id = ? AND is_del = ?", waveHeader.ID, 0). + Count(&remainingTasks).Error; err != nil { + return fmt.Errorf("检查波次剩余任务失败: %v", err) + } + + if remainingTasks == 0 { + if err := tx.Model(&models.WaveHeader{}). + Where("id = ? AND is_del = ?", waveHeader.ID, 0). + Updates(map[string]interface{}{ + "is_del": 1, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("删除波次主表失败: %v", err) + } + } + } + } + } + } + + if err := tx.Model(&models.Product{}). + Where("id = ? AND is_del = ?", req.ID, 0). + Updates(map[string]interface{}{ + "is_del": 1, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("删除商品失败: %v", err) + } + + return nil + }) + + if err != nil { + return err + } + + return nil +} + +// UpdatePrice 修改商品售价 +func (s *ProductService) UpdatePrice(req systemReq.UpdatePriceRequest) error { + databaseConn, err := database.GetTenantDB(req.UserID) + if err != nil { + return fmt.Errorf("获取数据库连接失败: %v", err) + } + + now := time.Now().Unix() + + var product models.Product + if err := databaseConn.Where("id = ? AND is_del = 0", req.ProductID).First(&product).Error; err != nil { + return fmt.Errorf("商品不存在: %v", err) + } + + if req.SalePrice < 0 { + return fmt.Errorf("售价不能为负数") + } + + if err := databaseConn.Model(&models.Product{}).Where("id = ?", req.ProductID).Updates(map[string]interface{}{ + "sale_price": req.SalePrice, + "cost": req.Cost, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("更新售价失败: %v", err) + } + + shouldSync := true + + var waveTaskDetail models.WaveTaskDetail + if err := databaseConn.Where("product_id = ? AND is_del = 0", req.ProductID).First(&waveTaskDetail).Error; err == nil && waveTaskDetail.WaveTaskID > 0 { + var waveTask models.WaveTask + if err := databaseConn.Where("id = ? AND is_del = 0", waveTaskDetail.WaveTaskID).First(&waveTask).Error; err == nil && waveTask.CarId > 0 { + var car models.Car + if err := databaseConn.Where("id = ? AND is_del = 0", waveTask.CarId).First(&car).Error; err == nil { + if car.PushType == 2 { + shouldSync = false + } + } + } + } + + if shouldSync { + if err := s.syncPriceToExternal(waveTaskDetail, req.ProductID, req.SalePrice, req.UserID, databaseConn); err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "同步售价到外部接口", + "product_id": req.ProductID, + "sale_price": req.SalePrice, + "cost": req.Cost, + "error": fmt.Sprintf("同步失败: %v", err), + }) + } + } + + return nil +} + +// GetProductInventory 获取商品库存数量 +func (s *ProductService) GetProductInventory(req systemReq.GetProductInventoryRequest) (*systemRes.ProductInventoryResponse, error) { + databaseConn, err := database.GetTenantDB(req.UserID) + if err != nil { + return nil, fmt.Errorf("获取数据库连接失败: %v", err) + } + + var totalQuantity int64 + databaseConn.Table("inventory"). + Select("COALESCE(SUM(quantity), 0)"). + Where("product_id = ? AND is_del = ?", req.ProductID, 0). + Scan(&totalQuantity) + + return &systemRes.ProductInventoryResponse{ + Quantity: totalQuantity, + }, nil +} + +// RetryOutTask 重试失败的外部任务(单条商品) +func (s *ProductService) RetryOutTask(req systemReq.RetryOutTaskRequest, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + // 验证店铺是否存在 + var shop models.Shop + if err := databaseConn.Where("id = ? AND del_flag = ?", req.ShopID, 0).First(&shop).Error; err != nil { + return fmt.Errorf("店铺不存在: %v", err) + } + + // 验证店铺类型是否匹配 + if shop.ShopType != req.ShopType { + return fmt.Errorf("店铺类型不匹配") + } + + // 获取产品信息 + var product models.Product + if err := databaseConn.Where("id = ? AND is_del = ?", req.ProductID, 0).First(&product).Error; err != nil { + return fmt.Errorf("商品不存在: %v", err) + } + + // 查找该商品的波次任务明细(可能不存在,比如从外部同步的商品) + var waveTaskDetail models.WaveTaskDetail + var hasWaveTask bool + if err := databaseConn.Where("product_id = ? AND is_del = ?", req.ProductID, 0).First(&waveTaskDetail).Error; err == nil { + hasWaveTask = true + } else { + hasWaveTask = false + } + + params := map[string]string{ + "shop_id": strconv.FormatInt(req.ShopID, 10), + "shop_type": strconv.Itoa(int(req.ShopType)), + "task_count": "1", + "task_type": "7", + "img_type": "2", + } + + sign := utils.SignParams(params) + params["sign"] = sign + + // 创建任务 + url := config.AppConfig.ExternalAPI.SyncTaskURL + res, err := utils.SubmitFormData(url, params) + if err != nil { + // 创建任务失败,记录日志 + s.saveRetryLog(req.ShopID, 0, req.ProductID, product, waveTaskDetail, hasWaveTask, fmt.Sprintf("创建任务接口请求失败: %v", err), databaseConn) + return fmt.Errorf("创建任务接口请求失败: %v", err) + } + + var resData systemRes.ExternalAPIResponse + if err := json.Unmarshal([]byte(res), &resData); err != nil { + // 解析响应失败,记录日志 + s.saveRetryLog(req.ShopID, 0, req.ProductID, product, waveTaskDetail, hasWaveTask, fmt.Sprintf("解析外部接口响应失败: %v", err), databaseConn) + return fmt.Errorf("解析外部接口响应失败: %v", err) + } + + if resData.Code != "200" { + // 创建任务失败,记录日志 + s.saveRetryLog(req.ShopID, 0, req.ProductID, product, waveTaskDetail, hasWaveTask, fmt.Sprintf("创建任务接口返回错误: %s", resData.Msg), databaseConn) + return fmt.Errorf("创建任务接口返回错误: %s", resData.Msg) + } + + // 解析任务ID + var taskIDInt int64 + switch v := resData.Data.(type) { + case float64: + taskIDInt = int64(v) + case string: + if parsed, err := strconv.ParseInt(v, 10, 64); err == nil { + taskIDInt = parsed + } + default: + taskIDInt = 0 + } + + if taskIDInt == 0 { + s.saveRetryLog(req.ShopID, 0, req.ProductID, product, waveTaskDetail, hasWaveTask, "创建任务接口返回的任务ID无效", databaseConn) + return fmt.Errorf("创建任务接口返回的任务ID无效") + } + + // 创建外部任务记录 + now := time.Now().Unix() + waveTaskID := func() int64 { + if hasWaveTask { + return waveTaskDetail.WaveTaskID + } + return 0 + }() + + outTask := models.OutTask{ + ShopID: req.ShopID, + WaveTaskID: waveTaskID, + OutTaskID: taskIDInt, + ShopType: req.ShopType, + TaskType: 7, + ImgType: 2, + TaskCount: 1, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if createErr := databaseConn.Create(&outTask).Error; createErr != nil { + s.saveRetryLog(req.ShopID, taskIDInt, req.ProductID, product, waveTaskDetail, hasWaveTask, fmt.Sprintf("创建外部任务记录失败: %v", createErr), databaseConn) + return fmt.Errorf("创建外部任务记录失败: %v", createErr) + } + + // 调用外部接口推送任务数据 + salePrice := product.SalePrice + + err = s.syncPriceToExternalTaskWithOptionalWave(outTask, product, waveTaskDetail, hasWaveTask, salePrice, databaseConn) + + if err != nil { + // 推送数据失败,记录日志 + s.saveRetryLog(req.ShopID, taskIDInt, req.ProductID, product, waveTaskDetail, hasWaveTask, fmt.Sprintf("推送任务数据失败: %v", err), databaseConn) + return fmt.Errorf("推送任务数据失败: %v", err) + } + + // 推送成功,更新之前相同 shop_id 和 product_id 的所有日志状态为成功 + if updateErr := databaseConn.Model(&models.OutTaskLog{}). + Where("shop_id = ? AND product_id = ? AND is_del = ?", req.ShopID, req.ProductID, 0). + Updates(map[string]interface{}{ + "status": 1, + "msg": "成功", + "updated_at": now, + }).Error; updateErr != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "更新历史日志状态失败", + "shop_id": req.ShopID, + "product_id": req.ProductID, + "error": fmt.Sprintf("更新失败: %v", updateErr), + }) + } + + return nil +} + +// BatchPushProducts 批量推送商品到多个店铺 +func (s *ProductService) BatchPushProducts(req systemReq.BatchPushProductRequest) error { + fmt.Printf("[DEBUG BatchPushProducts] 入口 user_id=%d shop_ids=%v shop_types=%v product_ids=%v\n", + req.UserID, req.ShopIDs, req.ShopTypes, req.ProductIDs) + utils.InfoLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-入口", + "user_id": req.UserID, + "shop_ids": req.ShopIDs, + "shop_types": req.ShopTypes, + "product_ids": req.ProductIDs, + }) + db, err := database.GetTenantDB(req.UserID) + if err != nil { + fmt.Printf("[DEBUG BatchPushProducts] 获取数据库连接失败 user_id=%d err=%v\n", req.UserID, err) + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-获取数据库连接失败", + "user_id": req.UserID, + "error": err.Error(), + }) + return fmt.Errorf("获取数据库连接失败: %v", err) + } + + if len(req.ShopIDs) != len(req.ShopTypes) { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-参数校验失败", + "shop_ids_count": len(req.ShopIDs), + "shop_types_count": len(req.ShopTypes), + }) + return fmt.Errorf("商家ID数组与商家类型数组长度不一致") + } + + now := time.Now().Unix() + taskCount := int64(len(req.ProductIDs)) + + type shopTask struct { + shopID int64 + shopType int8 + taskID int64 + outTask models.OutTask + } + + var tasks []shopTask + + fmt.Printf("[DEBUG BatchPushProducts] 开始遍历店铺 shop_ids=%v task_count=%d\n", req.ShopIDs, taskCount) + + for i, shopID := range req.ShopIDs { + shopType := req.ShopTypes[i] + + params := map[string]string{ + "shop_id": strconv.FormatInt(shopID, 10), + "shop_type": strconv.Itoa(int(shopType)), + "task_count": strconv.FormatInt(taskCount, 10), + "task_type": "7", + "img_type": "2", + } + + sign := utils.SignParams(params) + params["sign"] = sign + + url := config.AppConfig.ExternalAPI.SyncTaskURL + fmt.Printf("[DEBUG BatchPushProducts] 请求API shop_id=%d url=%s params=%v\n", shopID, url, params) + utils.InfoLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-发起创建任务请求", + "shop_id": shopID, + "url": url, + "params": params, + }) + res, err := utils.SubmitFormData(url, params) + if err != nil { + fmt.Printf("[DEBUG BatchPushProducts] API请求失败 shop_id=%d err=%v\n", shopID, err) + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-创建外部任务失败", + "shop_id": shopID, + "error": fmt.Sprintf("请求失败: %v", err), + }) + continue + } + + var resData systemRes.ExternalAPIResponse + if err := json.Unmarshal([]byte(res), &resData); err != nil { + fmt.Printf("[DEBUG BatchPushProducts] 解析响应失败 shop_id=%d raw=%s err=%v\n", shopID, res, err) + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-解析创建任务响应失败", + "shop_id": shopID, + "raw_response": res, + "error": fmt.Sprintf("解析失败: %v", err), + }) + continue + } + + fmt.Printf("[DEBUG BatchPushProducts] API响应 shop_id=%d code=%s msg=%s data=%v data_type=%T\n", + shopID, resData.Code, resData.Msg, resData.Data, resData.Data) + utils.InfoLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-创建任务响应", + "shop_id": shopID, + "code": resData.Code, + "msg": resData.Msg, + "data": resData.Data, + "data_type": fmt.Sprintf("%T", resData.Data), + }) + + if resData.Code != "200" { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-创建任务返回错误", + "shop_id": shopID, + "code": resData.Code, + "msg": resData.Msg, + }) + continue + } + + var taskIDInt int64 + switch v := resData.Data.(type) { + case float64: + taskIDInt = int64(v) + case string: + if parsed, err := strconv.ParseInt(v, 10, 64); err == nil { + taskIDInt = parsed + } + } + + if taskIDInt == 0 { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-任务ID无效", + "shop_id": shopID, + }) + continue + } + + outTask := models.OutTask{ + ShopID: shopID, + OutTaskID: taskIDInt, + ShopType: shopType, + TaskType: 7, + ImgType: 2, + TaskCount: taskCount, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := db.Create(&outTask).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-保存OutTask记录失败", + "shop_id": shopID, + "out_task_id": taskIDInt, + "error": fmt.Sprintf("保存失败: %v", err), + }) + continue + } + + tasks = append(tasks, shopTask{ + shopID: shopID, + shopType: shopType, + taskID: taskIDInt, + outTask: outTask, + }) + } + + if len(tasks) == 0 { + fmt.Printf("[DEBUG BatchPushProducts] tasks为空! 没有成功创建任何任务 user_id=%d shop_ids=%v shop_types=%v product_ids=%v\n", + req.UserID, req.ShopIDs, req.ShopTypes, req.ProductIDs) + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-没有成功创建任何任务", + "user_id": req.UserID, + "shop_ids": req.ShopIDs, + "shop_types": req.ShopTypes, + "product_ids": req.ProductIDs, + "task_count": taskCount, + }) + return fmt.Errorf("没有成功创建任何任务") + } + + // 批量查询商品 + var products []models.Product + if err := db.Where("id IN ? AND is_del = ?", req.ProductIDs, 0).Find(&products).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-批量查询商品失败", + "product_ids": req.ProductIDs, + "error": err.Error(), + }) + return fmt.Errorf("批量查询商品失败: %v", err) + } + productMap := make(map[int64]models.Product, len(products)) + for _, p := range products { + productMap[p.ID] = p + } + + // 批量查询库存明细(每个product取第一条) + var inventoryDetails []models.InventoryDetail + if err := db.Where("product_id IN ? AND is_del = ?", req.ProductIDs, 0).Find(&inventoryDetails).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-批量查询库存明细失败", + "product_ids": req.ProductIDs, + "error": err.Error(), + }) + return fmt.Errorf("批量查询库存明细失败: %v", err) + } + inventoryMap := make(map[int64]models.InventoryDetail) + warehouseIDSet := make(map[int64]bool) + for _, inv := range inventoryDetails { + if _, exists := inventoryMap[inv.ProductID]; !exists { + inventoryMap[inv.ProductID] = inv + } + warehouseIDSet[inv.WarehouseID] = true + } + warehouseIDs := make([]int64, 0, len(warehouseIDSet)) + for wid := range warehouseIDSet { + warehouseIDs = append(warehouseIDs, wid) + } + + // 批量查询仓库 + warehouseMap := make(map[int64]models.Warehouse) + if len(warehouseIDs) > 0 { + var warehouses []models.Warehouse + if err := db.Where("id IN ? AND is_del = ?", warehouseIDs, 0).Find(&warehouses).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-批量查询仓库失败", + "warehouse_ids": warehouseIDs, + "error": err.Error(), + }) + return fmt.Errorf("批量查询仓库失败: %v", err) + } + for _, w := range warehouses { + warehouseMap[w.ID] = w + } + } + + // 收集所有 logistics_id 并批量查询 + logisticsIDSet := make(map[int64]bool) + for _, w := range warehouseMap { + if w.LogisticsID > 0 { + logisticsIDSet[w.LogisticsID] = true + } + } + logisticsIDs := make([]int64, 0, len(logisticsIDSet)) + for lid := range logisticsIDSet { + logisticsIDs = append(logisticsIDs, lid) + } + logisticsMap := make(map[int64]models.Logistics) + if len(logisticsIDs) > 0 { + var logisticsList []models.Logistics + if err := db.Where("id IN ? AND del_flag = ?", logisticsIDs, "0").Find(&logisticsList).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-批量查询物流失败", + "logistics_ids": logisticsIDs, + "error": err.Error(), + }) + return fmt.Errorf("批量查询物流失败: %v", err) + } + for _, l := range logisticsList { + logisticsMap[int64(l.Id)] = l + } + } + + // 批量查询库位 + locationIDSet := make(map[int64]bool) + for _, inv := range inventoryDetails { + if inv.LocationID > 0 { + locationIDSet[inv.LocationID] = true + } + } + locationIDs := make([]int64, 0, len(locationIDSet)) + for lid := range locationIDSet { + locationIDs = append(locationIDs, lid) + } + locationMap := make(map[int64]models.Location) + if len(locationIDs) > 0 { + var locations []models.Location + if err := db.Where("id IN ? AND is_del = ?", locationIDs, 0).Find(&locations).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-批量查询库位失败", + "location_ids": locationIDs, + "error": err.Error(), + }) + return fmt.Errorf("批量查询库位失败: %v", err) + } + for _, loc := range locations { + locationMap[loc.ID] = loc + } + } + + // 遍历商品推送 + for _, productID := range req.ProductIDs { + product, ok := productMap[productID] + if !ok { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-商品不存在", + "product_id": productID, + }) + continue + } + + inventoryDetail, ok := inventoryMap[productID] + if !ok { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-库存明细不存在", + "product_id": productID, + }) + continue + } + + warehouse, ok := warehouseMap[inventoryDetail.WarehouseID] + if !ok { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-仓库不存在", + "product_id": productID, + "warehouse_id": inventoryDetail.WarehouseID, + }) + continue + } + + if warehouse.LogisticsID == 0 { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-仓库未绑定运费模板", + "product_id": productID, + "warehouse": warehouse.Name, + }) + continue + } + + logistics, ok := logisticsMap[warehouse.LogisticsID] + if !ok { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-物流模板不存在", + "product_id": productID, + "logistics_id": warehouse.LogisticsID, + }) + continue + } + + cost := int64(logistics.FirPrice * 100) + stock := inventoryDetail.Quantity + salePrice := product.SalePrice + + warehouseCode := warehouse.Code + location, ok := locationMap[inventoryDetail.LocationID] + if !ok { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-库位不存在", + "product_id": productID, + "location_id": inventoryDetail.LocationID, + "warehouse_id": inventoryDetail.WarehouseID, + }) + continue + } + locationCode := location.Code + condition := product.Appearance + + for _, st := range tasks { + s.batchPushProductBody(db, st.outTask, product, stock, salePrice, cost, now, req.UserID, warehouseCode, locationCode, condition) + } + } + + return nil +} + +// PushProductToShop 上架商品到商铺:创建商品、库存记录,并推送到商铺 +func (s *ProductService) PushProductToShop(req systemReq.PushProductToShopRequest) (*systemRes.PushProductToShopResponse, error) { + utils.InfoLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "上架到商铺保存数据库-入口", + "user_id": req.UserID, + "location_id": req.LocationID, + "warehouse_id": req.WarehouseID, + "isbn": req.ISBN, + "price": req.Price, + "stock": req.Stock, + "appearance": req.Appearance, + }) + + db, err := database.GetTenantDB(req.UserID) + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "上架到商铺保存数据库-获取数据库连接失败", + "user_id": req.UserID, + "error": err.Error(), + }) + return nil, fmt.Errorf("获取数据库连接失败: %v", err) + } + + // 1. 根据货位ID查找库位 + var location models.Location + if err := db.Where("id = ? AND is_del = ?", req.LocationID, 0).First(&location).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "上架到商铺保存数据库-货位不存在", + "location_id": req.LocationID, + "error": err.Error(), + }) + return nil, fmt.Errorf("货位ID【%d】不存在", req.LocationID) + } + + // 2. 根据仓库ID查找仓库 + var warehouse models.Warehouse + if err := db.Where("id = ? AND is_del = ?", req.WarehouseID, 0).First(&warehouse).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "上架到商铺保存数据库-仓库不存在", + "warehouse_id": req.WarehouseID, + "error": err.Error(), + }) + return nil, fmt.Errorf("仓库ID【%d】不存在", req.WarehouseID) + } + + now := time.Now().Unix() + + // 3. 查找或创建商品 + var product models.Product + err = db.Where("barcode = ? AND is_del = ?", req.ISBN, 0).First(&product).Error + + // 序列化照片为JSON + var liveImageJSON datatypes.JSON + if len(req.Photos) > 0 { + jsonBytes, _ := json.Marshal(req.Photos) + liveImageJSON = jsonBytes + } else { + liveImageJSON = datatypes.JSON("[]") + } + + ///////////////////////////////////////////////////////////////////////// + + // 创建新商品 + productName := req.ISBN // 默认用ISBN作为名称 + // 优先使用传入的图书名称 + if req.ProductName != "" { + productName = req.ProductName + } else { + // 尝试从ES API获取书名 + bookSvc := BookService{} + bookInfo, bookErr := bookSvc.GetBookInfo(systemReq.BookRequest{Isbn: req.ISBN}) + if bookErr == nil && bookInfo != nil && bookInfo.BookName.Value != "" { + productName = bookInfo.BookName.Value + utils.InfoLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "上架到商铺-获取书名成功", + "isbn": req.ISBN, + "product_name": productName, + }) + } + } + + product = models.Product{ + Name: productName, + Barcode: req.ISBN, + Appearance: req.Appearance, + Price: req.Price, + SalePrice: req.Price, + LiveImage: liveImageJSON, + Status: 1, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := db.Create(&product).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "上架到商铺-创建商品失败", + "isbn": req.ISBN, + "error": err.Error(), + }) + return nil, fmt.Errorf("创建商品失败: %v", err) + } + utils.InfoLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "上架到商铺-创建商品成功", + "product_id": product.ID, + "isbn": req.ISBN, + }) + //////////////////////////////////////////////////////////////////////// + + //if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { + // // 创建新商品 + // productName := req.ISBN // 默认用ISBN作为名称 + // // 优先使用传入的图书名称 + // if req.ProductName != "" { + // productName = req.ProductName + // } else { + // // 尝试从ES API获取书名 + // bookSvc := BookService{} + // bookInfo, bookErr := bookSvc.GetBookInfo(systemReq.BookRequest{Isbn: req.ISBN}) + // if bookErr == nil && bookInfo != nil && bookInfo.BookName.Value != "" { + // productName = bookInfo.BookName.Value + // utils.InfoLog(constant.LoggerChannelWork, map[string]interface{}{ + // "source": "上架到商铺-获取书名成功", + // "isbn": req.ISBN, + // "product_name": productName, + // }) + // } + // } + // + // product = models.Product{ + // Name: productName, + // Barcode: req.ISBN, + // Appearance: req.Appearance, + // Price: req.Price, + // SalePrice: req.Price, + // LiveImage: liveImageJSON, + // Status: 1, + // CreatedAt: now, + // UpdatedAt: now, + // IsDel: 0, + // } + // + // if err := db.Create(&product).Error; err != nil { + // utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + // "source": "上架到商铺-创建商品失败", + // "isbn": req.ISBN, + // "error": err.Error(), + // }) + // return nil, fmt.Errorf("创建商品失败: %v", err) + // } + // utils.InfoLog(constant.LoggerChannelWork, map[string]interface{}{ + // "source": "上架到商铺-创建商品成功", + // "product_id": product.ID, + // "isbn": req.ISBN, + // }) + //} else if err != nil { + // utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + // "source": "上架到商铺-查询商品失败", + // "isbn": req.ISBN, + // "error": err.Error(), + // }) + // return nil, fmt.Errorf("查询商品失败: %v", err) + //} else { + // // 更新已有商品 + // updates := map[string]interface{}{ + // "appearance": req.Appearance, + // "price": req.Price, + // "sale_price": req.Price, + // "updated_at": now, + // } + // if req.ProductName != "" { + // updates["name"] = req.ProductName + // } + // if len(req.Photos) > 0 { + // updates["live_image"] = liveImageJSON + // } + // + // if err := db.Model(&product).Updates(updates).Error; err != nil { + // utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + // "source": "上架到商铺-更新商品失败", + // "product_id": product.ID, + // "error": err.Error(), + // }) + // return nil, fmt.Errorf("更新商品失败: %v", err) + // } + // utils.InfoLog(constant.LoggerChannelWork, map[string]interface{}{ + // "source": "上架到商铺-更新商品成功", + // "product_id": product.ID, + // "isbn": req.ISBN, + // }) + //} + + // 4. 创建或更新 InventoryDetail (库位级库存) + var invDetail models.InventoryDetail + err = db.Where("product_id = ? AND location_id = ? AND is_del = ?", product.ID, location.ID, 0).First(&invDetail).Error + if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { + invDetail = models.InventoryDetail{ + WarehouseID: warehouse.ID, + LocationID: location.ID, + ProductID: product.ID, + Quantity: req.Stock, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + if err := db.Create(&invDetail).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "上架到商铺-创建库存明细失败", + "product_id": product.ID, + "location_id": location.ID, + "error": err.Error(), + }) + return nil, fmt.Errorf("创建库存明细失败: %v", err) + } + } else if err == nil { + if err := db.Model(&invDetail).Updates(map[string]interface{}{ + "quantity": req.Stock, + "updated_at": now, + }).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "上架到商铺-更新库存明细失败", + "product_id": product.ID, + "error": err.Error(), + }) + return nil, fmt.Errorf("更新库存明细失败: %v", err) + } + } + + // 5. 创建或更新 Inventory (仓库级库存) + var inv models.Inventory + err = db.Where("warehouse_id = ? AND product_id = ? AND is_del = ?", warehouse.ID, product.ID, 0).First(&inv).Error + if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { + inv = models.Inventory{ + WarehouseID: warehouse.ID, + ProductID: product.ID, + Quantity: req.Stock, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + if err := db.Create(&inv).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "上架到商铺-创建库存失败", + "product_id": product.ID, + "warehouse_id": warehouse.ID, + "error": err.Error(), + }) + return nil, fmt.Errorf("创建库存失败: %v", err) + } + } else if err == nil { + if err := db.Model(&inv).Updates(map[string]interface{}{ + "quantity": req.Stock, + "updated_at": now, + }).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "上架到商铺-更新库存失败", + "product_id": product.ID, + "error": err.Error(), + }) + return nil, fmt.Errorf("更新库存失败: %v", err) + } + } + + utils.InfoLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "上架到商铺-数据保存完成", + "product_id": product.ID, + "warehouse_id": warehouse.ID, + "location_id": location.ID, + "quantity": req.Stock, + }) + + return &systemRes.PushProductToShopResponse{ + UserID: req.UserID, + WarehouseID: warehouse.ID, + ProductID: product.ID, + ISBN: req.ISBN, + }, nil +} + +func (s *ProductService) batchPushProductBody(db *gorm.DB, outTask models.OutTask, product models.Product, stock, salePrice, cost, now, userID int64, warehouseCode string, locationCode string, condition int64) { + isbn := product.Barcode + var imgList []string + if product.LiveImage != nil && len(product.LiveImage) > 0 { + if err := json.Unmarshal(product.LiveImage, &imgList); err != nil { + s.saveOutTaskLogWithStock(outTask, product.ID, isbn, product.LiveImage, stock, salePrice, cost, fmt.Sprintf("解析图片失败: %v", err), db) + return + } + } + + msgData := map[string]interface{}{ + "product_id": product.ID, + "user_id": strconv.FormatInt(userID, 10), + "is_distribution": "1", + } + msgJSON, _ := json.Marshal(msgData) + + bodyData := map[string]interface{}{ + "book_info": map[string]interface{}{ + "isbn": isbn, + "image_object": map[string]interface{}{ + "carousel_url_array": imgList, + }, + }, + "detail": map[string]interface{}{ + "stock": stock, + "price": salePrice, + "shipping_cost": cost, + "msg": string(msgJSON), + "sku_code": warehouseCode + "##" + locationCode, + "condition": condition, + }, + } + + bodyDataJSON, err := json.Marshal(bodyData) + if err != nil { + s.saveOutTaskLogWithStock(outTask, product.ID, isbn, product.LiveImage, stock, salePrice, cost, fmt.Sprintf("序列化请求体失败: %v", err), db) + return + } + + bodyList := []string{string(bodyDataJSON)} + taskID := fmt.Sprintf("%d", outTask.OutTaskID) + allBody := strings.Join(bodyList, "") + + signParams := map[string]string{ + "task_id": taskID, + "body": allBody, + } + + sign := utils.SignParams(signParams) + + url := config.AppConfig.ExternalAPI.SyncTaskBodyURL + resp, err := utils.SubmitMultiBody(url, taskID, bodyList, sign) + if err != nil { + s.saveOutTaskLogWithStock(outTask, product.ID, isbn, product.LiveImage, stock, salePrice, cost, fmt.Sprintf("请求外部接口失败: %v", err), db) + return + } + + var resData systemRes.ExternalAPIResponse + if err := json.Unmarshal([]byte(resp), &resData); err != nil { + s.saveOutTaskLogWithStock(outTask, product.ID, isbn, product.LiveImage, stock, salePrice, cost, fmt.Sprintf("解析响应失败: %v", err), db) + return + } + + if resData.Code != "200" { + s.saveOutTaskLogWithStock(outTask, product.ID, isbn, product.LiveImage, stock, salePrice, cost, fmt.Sprintf("外部接口返回错误: code=%s, msg=%s", resData.Code, resData.Msg), db) + return + } + + if updateErr := db.Model(&models.OutTaskLog{}). + Where("shop_id = ? AND product_id = ? AND is_del = ?", outTask.ShopID, product.ID, 0). + Updates(map[string]interface{}{ + "status": 1, + "msg": "成功", + "updated_at": now, + }).Error; updateErr != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "批量推送-更新历史日志状态失败", + "shop_id": outTask.ShopID, + "product_id": product.ID, + "error": fmt.Sprintf("更新失败: %v", updateErr), + }) + } +} + +// saveRetryLog 保存重试任务日志 +func (s *ProductService) saveRetryLog(shopID, outTaskID, productID int64, product models.Product, waveTaskDetail models.WaveTaskDetail, hasWaveTask bool, msg string, db *gorm.DB) { + now := time.Now().Unix() + + stock := func() int64 { + if hasWaveTask { + return waveTaskDetail.PlannedQuantity + } + return 0 + }() + + logRecord := models.OutTaskLog{ + ShopID: shopID, + OutTaskID: outTaskID, + ProductID: productID, + ISBN: product.Barcode, + LiveImage: product.LiveImage, + Stock: stock, + SalePrice: product.SalePrice, + Cost: product.Cost, + Status: func() int8 { + if msg == "成功" { + return 1 // 成功 + } + return 0 // 失败 + }(), + Msg: msg, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := db.Create(&logRecord).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "保存重试任务日志", + "shop_id": shopID, + "product_id": productID, + "out_task_id": outTaskID, + "error": fmt.Sprintf("保存日志失败: %v", err), + }) + } +} + +// syncPriceToExternalTaskWithOptionalWave 同步售价到单个外部任务(支持无波次明细) +func (s *ProductService) syncPriceToExternalTaskWithOptionalWave(outTask models.OutTask, product models.Product, waveTaskDetail models.WaveTaskDetail, hasWaveTask bool, salePrice int64, db *gorm.DB) error { + isbn := product.Barcode + var imgList []string + if product.LiveImage != nil && len(product.LiveImage) > 0 { + if err := json.Unmarshal(product.LiveImage, &imgList); err != nil { + return fmt.Errorf("解析json失败: %v", err) + } + } + + msgData := map[string]interface{}{ + "product_id": product.ID, + } + msgJSON, _ := json.Marshal(msgData) + + // 获取库存数量 + var stock int64 + + // 获取运费模板首费 + var cost int64 + if hasWaveTask { + // 有波次任务明细:通过波次任务 -> 波次头 -> 仓库 -> 物流模板 + var logistics models.Logistics + err := db.Table("logistics"). + Select("logistics.fir_price"). + Joins("INNER JOIN warehouse ON warehouse.logistics_id = logistics.id AND warehouse.is_del = ?", "0"). + Joins("INNER JOIN wave_header ON wave_header.warehouse_id = warehouse.id AND wave_header.is_del = 0"). + Joins("INNER JOIN wave_task ON wave_task.wave_id = wave_header.id AND wave_task.is_del = 0"). + Where("wave_task.id = ?", waveTaskDetail.WaveTaskID). + First(&logistics).Error + + if err != nil { + return fmt.Errorf("查询物流运费失败: %v", err) + } + cost = int64(logistics.FirPrice * 100) + stock = waveTaskDetail.PlannedQuantity + } else { + // 无波次任务明细(同步商品):通过库存明细 -> 仓库 -> 物流模板 + var inventoryDetail models.InventoryDetail + if err := db.Where("product_id = ? AND is_del = ?", product.ID, 0).First(&inventoryDetail).Error; err != nil { + return fmt.Errorf("查询库存明细失败: %v", err) + } + + var warehouse models.Warehouse + if err := db.Where("id = ? AND is_del = ?", inventoryDetail.WarehouseID, 0).First(&warehouse).Error; err != nil { + return fmt.Errorf("查询仓库信息失败: %v", err) + } + + if warehouse.LogisticsID == 0 { + return fmt.Errorf("仓库未绑定运费模板") + } + + var logistics models.Logistics + if err := db.Where("id = ? AND del_flag = ?", warehouse.LogisticsID, "0").First(&logistics).Error; err != nil { + return fmt.Errorf("查询物流运费失败: %v", err) + } + cost = int64(logistics.FirPrice * 100) + stock = inventoryDetail.Quantity + } + + bodyData := map[string]interface{}{ + "book_info": map[string]interface{}{ + "isbn": isbn, + "image_object": map[string]interface{}{ + "carousel_url_array": imgList, + }, + }, + "detail": map[string]interface{}{ + "stock": stock, + "price": salePrice, + "shipping_cost": cost, + "msg": string(msgJSON), + }, + } + + bodyDataJSON, err := json.Marshal(bodyData) + if err != nil { + return fmt.Errorf("序列化请求体失败: %v", err) + } + + bodyList := []string{ + string(bodyDataJSON), + } + + taskID := fmt.Sprintf("%d", outTask.OutTaskID) + + allBody := strings.Join(bodyList, "") // 直接无缝拼接(和服务端一致) + + signParams := map[string]string{ + "task_id": taskID, + "body": allBody, + } + + sign := utils.SignParams(signParams) + + // 发送请求 + url := config.AppConfig.ExternalAPI.SyncTaskBodyURL + resp, err := utils.SubmitMultiBody(url, taskID, bodyList, sign) + if err != nil { + s.saveOutTaskLogWithStock(outTask, product.ID, isbn, product.LiveImage, stock, salePrice, cost, fmt.Sprintf("请求外部接口失败: %v", err), db) + return fmt.Errorf("请求外部接口失败: %v", err) + } + + var resData systemRes.ExternalAPIResponse + if err := json.Unmarshal([]byte(resp), &resData); err != nil { + return fmt.Errorf("解析响应失败: %v", err) + } + + if resData.Code != "200" { + s.saveOutTaskLogWithStock(outTask, product.ID, isbn, product.LiveImage, stock, salePrice, cost, fmt.Sprintf("外部接口返回错误: code=%s, msg=%s", resData.Code, resData.Msg), db) + return fmt.Errorf("外部接口返回错误: code=%s, msg=%s", resData.Code, resData.Msg) + } + + return nil +} + +// saveOutTaskLogWithStock 保存外部任务日志(支持自定义库存) +func (s *ProductService) saveOutTaskLogWithStock(outTask models.OutTask, productID int64, isbn string, liveImage datatypes.JSON, stock, salePrice, cost int64, msg string, db *gorm.DB) { + now := time.Now().Unix() + + logRecord := models.OutTaskLog{ + ShopID: outTask.ShopID, + OutTaskID: outTask.OutTaskID, + ProductID: productID, + ISBN: isbn, + LiveImage: liveImage, + Stock: stock, + SalePrice: salePrice, + Cost: cost, + Status: 0, + Msg: msg, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := db.Create(&logRecord).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "保存外部任务日志", + "out_task_id": outTask.OutTaskID, + "product_id": productID, + "error": fmt.Sprintf("保存日志失败: %v", err), + }) + } +} + +// syncPriceToExternal 同步售价到外部接口 +func (s *ProductService) syncPriceToExternal(waveTaskDetail models.WaveTaskDetail, productID, salePrice, userId int64, db *gorm.DB) error { + var logistics models.Logistics + err := db.Table("logistics"). + Select("logistics.fir_price"). + Joins("INNER JOIN warehouse ON warehouse.logistics_id = logistics.id AND warehouse.is_del = ?", "0"). + Joins("INNER JOIN wave_header ON wave_header.warehouse_id = warehouse.id AND wave_header.is_del = 0"). + Joins("INNER JOIN wave_task ON wave_task.wave_id = wave_header.id AND wave_task.is_del = 0"). + Where("wave_task.id = ?", waveTaskDetail.WaveTaskID). + First(&logistics).Error + + if err != nil { + return fmt.Errorf("查询物流运费失败: %v", err) + } + + cost := int64(logistics.FirPrice * 100) + + var product models.Product + if err := db.Where("id = ? AND is_del = 0", productID).First(&product).Error; err != nil { + return fmt.Errorf("查询商品信息失败: %v", err) + } + + var outTasks []models.OutTask + if err := db.Where("wave_task_id = ? AND is_del = 0", waveTaskDetail.WaveTaskID).Find(&outTasks).Error; err != nil { + return fmt.Errorf("查询外部任务失败: %v", err) + } + + if len(outTasks) == 0 { + return fmt.Errorf("未找到关联的外部任务") + } + + for _, outTask := range outTasks { + if outTask.OutTaskID > 0 { + if err := s.syncPriceToExternalTask(outTask, product, waveTaskDetail, salePrice, cost, userId, db); err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "同步售价到外部接口", + "product_id": productID, + "task_id": outTask.OutTaskID, + "error": fmt.Sprintf("请求失败: %v", err), + }) + } + } + } + + return nil +} + +// syncPriceToExternalTask 同步售价到单个外部任务 +func (s *ProductService) syncPriceToExternalTask(outTask models.OutTask, product models.Product, waveTaskDetail models.WaveTaskDetail, salePrice, cost, userId int64, db *gorm.DB) error { + isbn := product.Barcode + var imgList []string + if product.LiveImage != nil && len(product.LiveImage) > 0 { + if err := json.Unmarshal(product.LiveImage, &imgList); err != nil { + return fmt.Errorf("解析json失败: %v", err) + } + } + + msgData := map[string]interface{}{ + "product_id": product.ID, + "user_id": fmt.Sprintf("%d", userId), + } + msgJSON, _ := json.Marshal(msgData) + + bodyData := map[string]interface{}{ + "book_info": map[string]interface{}{ + "isbn": isbn, + "image_object": map[string]interface{}{ + "carousel_url_array": imgList, + }, + }, + "detail": map[string]interface{}{ + "stock": waveTaskDetail.PlannedQuantity, + "price": salePrice, + "shipping_cost": cost, + "msg": string(msgJSON), + }, + } + + bodyDataJSON, err := json.Marshal(bodyData) + if err != nil { + return fmt.Errorf("序列化请求体失败: %v", err) + } + + bodyList := []string{ + string(bodyDataJSON), + } + + taskID := fmt.Sprintf("%d", outTask.OutTaskID) + + allBody := strings.Join(bodyList, "") // 直接无缝拼接(和服务端一致) + + signParams := map[string]string{ + "task_id": taskID, + "body": allBody, + } + + sign := utils.SignParams(signParams) + + // 发送请求 + url := config.AppConfig.ExternalAPI.SyncTaskBodyURL + resp, err := utils.SubmitMultiBody(url, taskID, bodyList, sign) + if err != nil { + s.saveOutTaskLog(outTask, product.ID, isbn, product.LiveImage, waveTaskDetail.PlannedQuantity, salePrice, cost, fmt.Sprintf("请求外部接口失败: %v", err), db) + return fmt.Errorf("请求外部接口失败: %v", err) + } + + var resData systemRes.ExternalAPIResponse + if err := json.Unmarshal([]byte(resp), &resData); err != nil { + return fmt.Errorf("解析响应失败: %v", err) + } + + if resData.Code != "200" { + s.saveOutTaskLog(outTask, product.ID, isbn, product.LiveImage, waveTaskDetail.PlannedQuantity, salePrice, cost, fmt.Sprintf("外部接口返回错误: code=%s, msg=%s", resData.Code, resData.Msg), db) + return fmt.Errorf("外部接口返回错误: code=%s, msg=%s", resData.Code, resData.Msg) + } + + s.saveOutTaskLog(outTask, product.ID, isbn, product.LiveImage, waveTaskDetail.PlannedQuantity, salePrice, cost, "成功", db) + + return nil +} + +// saveOutTaskLog 保存外部任务日志 +func (s *ProductService) saveOutTaskLog(outTask models.OutTask, productID int64, isbn string, liveImage []byte, stock, salePrice, cost int64, msg string, db *gorm.DB) { + now := time.Now().Unix() + + logRecord := models.OutTaskLog{ + ShopID: outTask.ShopID, + OutTaskID: outTask.OutTaskID, + ProductID: productID, + ISBN: isbn, + LiveImage: liveImage, + Stock: stock, + SalePrice: salePrice, + Cost: cost, + Status: func() int8 { + if msg == "成功" { + return 1 + } else { + return 0 + } + }(), + Msg: msg, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if err := db.Create(&logRecord).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "保存外部任务日志", + "out_task_id": outTask.OutTaskID, + "product_id": productID, + "error": fmt.Sprintf("保存日志失败: %v", err), + }) + } +} + +// ExportProducts 导出商品到Excel +func (s *ProductService) ExportProducts(req systemReq.ExportProductRequest, db ...*gorm.DB) (*systemRes.ExportProductResponse, error) { + databaseConn := database.OptionalDB(db...) + + query := databaseConn.Table("product"). + Select(`product.barcode, + product.name, + product.sale_price, + product.live_image, + product.created_at, + inventory_detail.location_id, + COALESCE(inventory_detail.quantity, 0) as quantity`). + Joins("LEFT JOIN inventory_detail ON inventory_detail.product_id = product.id AND inventory_detail.is_del = ?", 0). + Where("product.is_del = ?", 0) + + if req.StartCreatedAt > 0 { + query = query.Where("product.created_at >= ?", req.StartCreatedAt) + } + if req.EndCreatedAt > 0 { + query = query.Where("product.created_at <= ?", req.EndCreatedAt) + } + if req.MinSalePrice > 0 { + query = query.Where("product.sale_price >= ?", req.MinSalePrice) + } + if req.MaxSalePrice > 0 { + query = query.Where("product.sale_price <= ?", req.MaxSalePrice) + } + if req.WarehouseID > 0 { + query = query.Where("inventory_detail.warehouse_id = ? OR inventory_detail.warehouse_id IS NULL", req.WarehouseID) + } + if req.MinStock >= 0 { + query = query.Where("COALESCE(inventory_detail.quantity, 0) >= ?", req.MinStock) + } + if req.MaxStock >= 0 { + query = query.Where("COALESCE(inventory_detail.quantity, 0) <= ?", req.MaxStock) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if req.Type == 0 { + return &systemRes.ExportProductResponse{ + Total: total, + }, nil + } + + if total == 0 { + return nil, fmt.Errorf("没有符合条件的商品数据") + } + + type ProductExportData struct { + Barcode string `gorm:"column:barcode"` + Name string `gorm:"column:name"` + SalePrice int64 `gorm:"column:sale_price"` + LiveImage datatypes.JSON `gorm:"column:live_image"` + CreatedAt int64 `gorm:"column:created_at"` + LocationID int64 `gorm:"column:location_id"` + Quantity int64 `gorm:"column:quantity"` + } + + var products []ProductExportData + if err := query.Order("product.created_at DESC").Find(&products).Error; err != nil { + return nil, utils.NewError("查询商品数据失败") + } + + locationIDs := make([]int64, 0) + for _, p := range products { + if p.LocationID > 0 { + locationIDs = append(locationIDs, p.LocationID) + } + } + + locationMap := make(map[int64]string) + if len(locationIDs) > 0 { + var locations []models.Location + if err := databaseConn.Where("id IN ? AND is_del = ?", locationIDs, 0).Find(&locations).Error; err == nil { + for _, loc := range locations { + locationMap[loc.ID] = loc.Code + } + } + } + + f := excelize.NewFile() + defer func() { + if err := f.Close(); err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "关闭Excel文件", + "error": fmt.Sprintf("关闭失败: %v", err), + }) + } + }() + + sheetName := "Sheet1" + f.SetSheetName("Sheet1", sheetName) + + headers := []string{"ISBN", "", "", "商品名称", "库存数量", "创建时间", "价格", "规格编码/货号", "", "商品图片"} + for i, header := range headers { + cell, _ := excelize.CoordinatesToCellName(i+1, 1) + f.SetCellValue(sheetName, cell, header) + } + + headerStyle, _ := f.NewStyle(&excelize.Style{ + Font: &excelize.Font{ + Bold: true, + Size: 12, + }, + Alignment: &excelize.Alignment{ + Horizontal: "center", + Vertical: "center", + }, + Fill: excelize.Fill{ + Type: "pattern", + Color: []string{"#E0E0E0"}, + Pattern: 1, + }, + }) + f.SetCellStyle(sheetName, "A1", "J1", headerStyle) + + for idx, product := range products { + row := idx + 2 + + f.SetCellValue(sheetName, fmt.Sprintf("A%d", row), product.Barcode) + + f.SetCellValue(sheetName, fmt.Sprintf("D%d", row), product.Name) + + f.SetCellValue(sheetName, fmt.Sprintf("E%d", row), product.Quantity) + + createdAtStr := time.Unix(product.CreatedAt, 0).Format("2006-01-02 15:04:05") + f.SetCellValue(sheetName, fmt.Sprintf("F%d", row), createdAtStr) + + f.SetCellValue(sheetName, fmt.Sprintf("G%d", row), float64(product.SalePrice)/100.0) + + locationCode := "" + if product.LocationID > 0 { + if code, exists := locationMap[product.LocationID]; exists { + locationCode = code + } + } + f.SetCellValue(sheetName, fmt.Sprintf("H%d", row), locationCode) + + var imgList []string + if product.LiveImage != nil && len(product.LiveImage) > 0 { + if err := json.Unmarshal(product.LiveImage, &imgList); err == nil && len(imgList) > 0 { + f.SetCellValue(sheetName, fmt.Sprintf("J%d", row), imgList[0]) + } + } + } + + colWidths := map[string]float64{ + "A": 20, + "D": 30, + "E": 12, + "F": 20, + "G": 12, + "H": 15, + "J": 40, + } + for col, width := range colWidths { + f.SetColWidth(sheetName, col, col, width) + } + + now := time.Now() + fileName := fmt.Sprintf("task_template_product_%s.xlsx", now.Format("20060102150405")) + + filePath := fmt.Sprintf("excel/%s", fileName) + + if err := f.SaveAs(filePath); err != nil { + return nil, fmt.Errorf("保存Excel文件失败: %v", err) + } + + return &systemRes.ExportProductResponse{ + Total: total, + FileName: fileName, + FilePath: config.AppConfig.Server.Host + filePath, + }, nil +} + +func (s *ProductService) GetProductLogList(req systemReq.GetProductLogListRequest, aboutID int64) (*systemRes.ProductLogListResponse, error) { + // TODO + //if aboutID != 0 { + // return nil, utils.NewError("只有系统管理员才可以访问") + //} + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := database.DB.Model(&models.ProductLog{}).Where("is_del = ?", 0) + + if req.Barcode != "" { + query = query.Where("barcode = ?", req.Barcode) + } + + if req.Status != nil { + query = query.Where("status = ?", *req.Status) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + var logs []models.ProductLog + offset := (req.Page - 1) * req.PageSize + if err := query.Order("created_at DESC").Offset(offset).Limit(req.PageSize).Find(&logs).Error; err != nil { + return nil, utils.NewError("查询商品日志列表失败") + } + + var logItems []systemRes.ProductLogItem + for _, log := range logs { + item := s.convertProductLogToItem(log) + logItems = append(logItems, item) + } + + return &systemRes.ProductLogListResponse{ + List: logItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +func (s *ProductService) SaveProductLog(req systemReq.ProductLogRequest, id int64) (int64, error) { + + now := time.Now().Unix() + if req.ID > 0 { + return s.updateProductLog(req, now) + } + return s.createProductLog(req, now, id) +} + +func (s *ProductService) createProductLog(req systemReq.ProductLogRequest, now, userId int64) (int64, error) { + var OldliveImage datatypes.JSON + if len(req.OldLiveImage) > 0 { + jsonBytes, _ := json.Marshal(req.OldLiveImage) + OldliveImage = jsonBytes + } else { + OldliveImage = datatypes.JSON("[]") + } + + var NewliveImage datatypes.JSON + if len(req.NewLiveImage) > 0 { + jsonBytes, _ := json.Marshal(req.NewLiveImage) + NewliveImage = jsonBytes + } else { + NewliveImage = datatypes.JSON("[]") + } + + if req.OldName == req.NewName && + req.OldPublisher == req.NewPublisher && + req.OldAuthor == req.NewAuthor && + req.OldPublicationTime == req.NewPublicationTime && + req.OldPrice == req.NewPrice && + req.OldBindingLayout == req.NewBindingLayout && + req.OldPageCount == req.NewPageCount && + req.OldWordCount == req.NewWordCount && + string(OldliveImage) == string(NewliveImage) && + req.OldIsSuit == req.NewIsSuit { + return 0, fmt.Errorf("新旧数据完全一致,无需提交变更") + } + + md5Str := fmt.Sprintf("%x", md5.Sum([]byte(fmt.Sprintf("%s|%s|%s|%d|%d|%d|%s|%d|%d|%d", + req.Barcode, + req.NewName, + req.NewPublisher, + req.NewAuthor, + req.NewPublicationTime, + req.NewPrice, + req.NewBindingLayout, + req.NewPageCount, + req.NewWordCount, + string(NewliveImage), + )))) + + var existingLog models.ProductLog + if err := database.DB.Where("md5_data = ? AND is_del = 0", md5Str).First(&existingLog).Error; err == nil { + return 0, fmt.Errorf("该商品变更日志已存在,无需重复提交") + } else if err != gorm.ErrRecordNotFound { + return 0, fmt.Errorf("查询商品日志失败:%w", err) + } + + product := models.ProductLog{ + Barcode: req.Barcode, + Md5Data: md5Str, + OldName: req.OldName, + NewName: req.NewName, + OldPublisher: req.OldPublisher, + NewPublisher: req.NewPublisher, + OldAuthor: req.OldAuthor, + NewAuthor: req.NewAuthor, + OldPublicationTime: req.OldPublicationTime, + NewPublicationTime: req.NewPublicationTime, + OldPrice: req.OldPrice, + NewPrice: req.NewPrice, + OldBindingLayout: req.OldBindingLayout, + NewBindingLayout: req.NewBindingLayout, + OldPageCount: req.OldPageCount, + NewPageCount: req.NewPageCount, + OldWordCount: req.OldWordCount, + NewWordCount: req.NewWordCount, + OldLiveImage: OldliveImage, + NewLiveImage: NewliveImage, + OldIsSuit: req.OldIsSuit, + NewIsSuit: req.NewIsSuit, + Status: 0, + CreateBy: userId, + CreatedAt: now, + UpdatedAt: now, + } + + if err := database.DB.Create(&product).Error; err != nil { + return 0, fmt.Errorf("创建商品日志失败:%w", err) + } + + return product.ID, nil +} + +func (s *ProductService) updateProductLog(req systemReq.ProductLogRequest, now int64) (int64, error) { + var productLog models.ProductLog + if err := database.DB.Where("id = ? AND is_del = 0", req.ID).First(&productLog).Error; err != nil { + return 0, fmt.Errorf("商品日志不存在:%w", err) + } + + if productLog.Status != 0 { + return 0, fmt.Errorf("商品日志已审核,无法修改") + } + + var OldliveImage datatypes.JSON + if len(req.OldLiveImage) > 0 { + jsonBytes, _ := json.Marshal(req.OldLiveImage) + OldliveImage = jsonBytes + } else { + OldliveImage = datatypes.JSON("[]") + } + + var NewliveImage datatypes.JSON + if len(req.NewLiveImage) > 0 { + jsonBytes, _ := json.Marshal(req.NewLiveImage) + NewliveImage = jsonBytes + } else { + NewliveImage = datatypes.JSON("[]") + } + + md5Str := fmt.Sprintf("%x", md5.Sum([]byte(fmt.Sprintf("%s|%s|%s|%d|%d|%d|%s|%d|%d|%d", + req.Barcode, + req.NewName, + req.NewPublisher, + req.NewAuthor, + req.NewPublicationTime, + req.NewPrice, + req.NewBindingLayout, + req.NewPageCount, + req.NewWordCount, + string(NewliveImage), + )))) + + var existingLog models.ProductLog + if err := database.DB.Where("md5_data = ? AND is_del = 0 AND id != ?", md5Str, req.ID).First(&existingLog).Error; err == nil { + return 0, fmt.Errorf("该商品变更日志已存在,无需重复提交") + } else if err != gorm.ErrRecordNotFound { + return 0, fmt.Errorf("查询商品日志失败:%w", err) + } + + if req.OldName == req.NewName && + req.OldPublisher == req.NewPublisher && + req.OldAuthor == req.NewAuthor && + req.OldPublicationTime == req.NewPublicationTime && + req.OldPrice == req.NewPrice && + req.OldBindingLayout == req.NewBindingLayout && + req.OldPageCount == req.NewPageCount && + req.OldWordCount == req.NewWordCount && + string(OldliveImage) == string(NewliveImage) && + req.OldIsSuit == req.NewIsSuit { + return 0, fmt.Errorf("新旧数据完全一致,无需提交变更") + } + + updates := map[string]interface{}{ + "barcode": req.Barcode, + "md5_data": md5Str, + "old_name": req.OldName, + "new_name": req.NewName, + "old_publisher": req.OldPublisher, + "new_publisher": req.NewPublisher, + "old_author": req.OldAuthor, + "new_author": req.NewAuthor, + "old_publication_time": req.OldPublicationTime, + "new_publication_time": req.NewPublicationTime, + "old_price": req.OldPrice, + "new_price": req.NewPrice, + "old_binding_layout": req.OldBindingLayout, + "new_binding_layout": req.NewBindingLayout, + "old_page_count": req.OldPageCount, + "new_page_count": req.NewPageCount, + "old_word_count": req.OldWordCount, + "new_word_count": req.NewWordCount, + "old_live_image": OldliveImage, + "new_live_image": NewliveImage, + "old_is_suit": req.OldIsSuit, + "new_is_suit": req.NewIsSuit, + "updated_at": now, + } + + if err := database.DB.Model(&productLog).Updates(updates).Error; err != nil { + return 0, fmt.Errorf("更新商品日志失败:%w", err) + } + + return productLog.ID, nil +} + +func (s *ProductService) AuditProductLog(req systemReq.AuditProductLogRequest, userID int64) error { + var log models.ProductLog + if err := database.DB.Where("id = ? AND is_del = 0", req.ID).First(&log).Error; err != nil { + return fmt.Errorf("商品日志不存在:%w", err) + } + + if log.Status != 0 { + return fmt.Errorf("该日志已审核,无法重复审核") + } + + var NewliveImage datatypes.JSON + if len(req.NewLiveImage) > 0 { + jsonBytes, _ := json.Marshal(req.NewLiveImage) + NewliveImage = jsonBytes + } else { + NewliveImage = datatypes.JSON("[]") + } + + now := time.Now().Unix() + updates := map[string]interface{}{ + "new_name": req.NewName, + "new_publisher": req.NewPublisher, + "new_author": req.NewAuthor, + "new_publication_time": req.NewPublicationTime, + "new_price": req.NewPrice, + "new_binding_layout": req.NewBindingLayout, + "new_page_count": req.NewPageCount, + "new_word_count": req.NewWordCount, + "new_live_image": NewliveImage, + "new_is_suit": req.NewIsSuit, + "status": req.Status, + "audit_by": userID, + "updated_at": now, + } + + if err := database.DB.Model(&log).Updates(updates).Error; err != nil { + return fmt.Errorf("审核商品日志失败:%w", err) + } + + // 审核通过时,同步更新 ES 中的商品字段 + if req.Status == 1 { + if err := s.syncApprovedLogToES(log.Barcode, req); err != nil { + // ES 同步失败只记日志,不阻断审核流程 + fmt.Printf("[WARN] 审核后同步 ES 失败 (product_log_id=%d, barcode=%s): %v\r\n", req.ID, log.Barcode, err) + } + } + + return nil +} + +// syncApprovedLogToES 审核通过后将 new_* 字段同步到 ES 商品数据 +func (s *ProductService) syncApprovedLogToES(barcode string, req systemReq.AuditProductLogRequest) error { + esURL := config.AppConfig.ExternalAPI.ESUpdateBookURL + if esURL == "" { + return fmt.Errorf("ES 更新接口地址未配置") + } + + // 构建 data 字段(只传有值的字段) + data := make(map[string]interface{}) + if req.NewName != "" { + data["book_name"] = req.NewName + } + if req.NewAuthor != "" { + data["author"] = req.NewAuthor + } + if req.NewPublisher != "" { + data["publisher"] = req.NewPublisher + } + if req.NewPrice > 0 { + data["fix_price"] = req.NewPrice + } + if req.NewBindingLayout != "" { + data["binding_layout"] = req.NewBindingLayout + } + if req.NewPublicationTime > 0 { + data["publication_time"] = req.NewPublicationTime + } + data["is_suit"] = req.NewIsSuit + + payload := map[string]interface{}{ + "isbn": barcode, + "data": data, + } + + jsonBytes, err := json.Marshal(payload) + if err != nil { + return fmt.Errorf("序列化请求参数失败:%w", err) + } + + resp, err := http.Post(esURL, "application/json", bytes.NewReader(jsonBytes)) + if err != nil { + return fmt.Errorf("调用 ES 更新接口失败:%w", err) + } + defer resp.Body.Close() + + body, _ := io.ReadAll(resp.Body) + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("ES 更新接口返回非200状态码[%d]: %s", resp.StatusCode, string(body)) + } + + return nil +} + +func (s *ProductService) DeleteProductLog(req systemReq.DeleteProductLogRequest) error { + var log models.ProductLog + if err := database.DB.Where("id = ? AND is_del = 0", req.ID).First(&log).Error; err != nil { + return fmt.Errorf("商品日志不存在:%w", err) + } + + now := time.Now().Unix() + if err := database.DB.Model(&log).Updates(map[string]interface{}{ + "is_del": 1, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("删除商品日志失败:%w", err) + } + + return nil +} + +// GetShopProductDetail 获取店铺商品详情(包含商品数据和发送记录) +func (s *ProductService) GetShopProductDetail(req systemReq.GetShopProductDetailRequest, db ...*gorm.DB) (*systemRes.ShopProductDetailResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + // 查询店铺信息 + var shop models.Shop + if err := databaseConn.Where("id = ? AND del_flag = ?", req.ShopID, 0).First(&shop).Error; err != nil { + return nil, utils.NewError("店铺不存在") + } + + // 构建响应 + response := &systemRes.ShopProductDetailResponse{ + ID: shop.ID, + ShopName: shop.ShopAliasName, // 使用别名作为店铺名称 + ShopAliasName: shop.ShopAliasName, + ShopType: shop.ShopType, + ShopTypeName: s.getShopTypeName(shop.ShopType), + CreatedAt: shop.CreateTime, + UpdatedAt: shop.UpdateTime, + Products: []systemRes.ProductInShop{}, + Page: req.Page, + PageSize: req.PageSize, + } + + // 查询该店铺下的商品信息及发送记录 + type ProductShopInfo struct { + ProductID int64 `gorm:"column:product_id"` + ProductName string `gorm:"column:product_name"` + ProductBarcode string `gorm:"column:product_barcode"` + LiveImage datatypes.JSON `gorm:"column:live_image"` + Price int64 `gorm:"column:price"` + SalePrice int64 `gorm:"column:sale_price"` + Quantity int64 `gorm:"column:quantity"` + WarehouseName string `gorm:"column:warehouse_name"` + LocationCode string `gorm:"column:location_code"` + IsBatchManaged int8 `gorm:"column:is_batch_managed"` + IsShelfLifeManaged int8 `gorm:"column:is_shelf_life_managed"` + OutTaskLogID int64 `gorm:"column:out_task_log_id"` + LogStatus int8 `gorm:"column:log_status"` + LogMsg string `gorm:"column:log_msg"` + WaveNo string `gorm:"column:wave_no"` + WaveTaskNo string `gorm:"column:wave_task_no"` + OutTaskNo int64 `gorm:"column:out_task_no"` + SalesOrderNo string `gorm:"column:sales_order_no"` + ShippingNo string `gorm:"column:shipping_no"` + ProductCreatedAt int64 `gorm:"column:product_created_at"` + ProductUpdatedAt int64 `gorm:"column:product_updated_at"` + } + + var productInfos []ProductShopInfo + + // 通过 out_task 和 wave_task_detail 关联查询商品 + baseQuery := databaseConn.Table("out_task ot"). + Select(`p.id as product_id, + p.name as product_name, + p.barcode as product_barcode, + p.live_image, + p.price, + p.sale_price, + COALESCE(inv.quantity, 0) as quantity, + w.name as warehouse_name, + l.code as location_code, + p.is_batch_managed, + p.is_shelf_life_managed, + COALESCE(otl.id, 0) as out_task_log_id, + COALESCE(otl.status, 0) as log_status, + COALESCE(otl.msg, '') as log_msg, + COALESCE(wh.wave_no, '') as wave_no, + COALESCE(wt.task_no, '') as wave_task_no, + ot.out_task_id as out_task_no, + COALESCE(so.so_no, '') as sales_order_no, + COALESCE(sh.shipping_no, '') as shipping_no, + p.created_at as product_created_at, + p.updated_at as product_updated_at`). + Joins("INNER JOIN wave_task wt ON wt.id = ot.wave_task_id AND wt.is_del = 0"). + Joins("INNER JOIN wave_task_detail wtd ON wtd.wave_task_id = wt.id AND wtd.is_del = 0"). + Joins("INNER JOIN product p ON p.id = wtd.product_id AND p.is_del = 0"). + Joins("LEFT JOIN wave_header wh ON wh.id = wt.wave_id AND wh.is_del = 0"). + Joins("LEFT JOIN sales_order so ON so.id = wh.related_order_id AND so.is_del = 0"). + Joins("LEFT JOIN outbound_order obo ON obo.wave_task_id = wt.id AND obo.is_del = 0"). + Joins("LEFT JOIN outbound_order_item oboi ON oboi.out_order_id = obo.id AND oboi.product_id = p.id AND oboi.is_del = 0"). + Joins("LEFT JOIN shipping_order_item soi ON soi.outbound_order_item_id = oboi.id AND soi.is_del = 0"). + Joins("LEFT JOIN shipping_order sh ON sh.id = soi.shipping_order_id AND sh.is_del = 0"). + Joins("LEFT JOIN inventory inv ON inv.product_id = p.id AND inv.is_del = 0"). + Joins("LEFT JOIN inventory_detail idetail ON idetail.product_id = p.id AND idetail.is_del = 0"). + Joins("LEFT JOIN warehouse w ON w.id = inv.warehouse_id"). + Joins("LEFT JOIN location l ON l.id = idetail.location_id"). + Joins("LEFT JOIN out_task_log otl ON otl.out_task_id = ot.out_task_id AND otl.product_id = p.id AND otl.is_del = 0 AND otl.id = (SELECT MAX(otl2.id) FROM out_task_log otl2 WHERE otl2.out_task_id = ot.out_task_id AND otl2.product_id = p.id AND otl2.is_del = 0)"). + Where("ot.shop_id = ? AND ot.is_del = 0", req.ShopID). + Group("p.id, p.name, p.barcode, p.live_image, p.price, p.sale_price, inv.quantity, w.name, l.code, p.is_batch_managed, p.is_shelf_life_managed, out_task_log_id, log_status, log_msg, wh.wave_no, wt.task_no, ot.out_task_id, so.so_no, sh.shipping_no, p.created_at, p.updated_at") + + // 查询总数 + var total int64 + if err := databaseConn.Raw("SELECT COUNT(*) FROM (?) AS sub", baseQuery).Scan(&total).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "查询店铺商品总数", + "error": fmt.Sprintf("查询失败: %v", err), + }) + return nil, utils.NewError("查询店铺商品总数失败") + } + response.Total = total + + // 查询各状态数量(基于全量商品,不受分页影响) + type StatusCount struct { + StatusType string `gorm:"column:status_type"` + Cnt int64 `gorm:"column:cnt"` + } + var statusCounts []StatusCount + if err := databaseConn.Table("(?) AS sub", baseQuery). + Select(`CASE + WHEN COALESCE(sub.out_task_log_id, 0) > 0 AND COALESCE(sub.log_status, 0) = 2 THEN 'success' + WHEN COALESCE(sub.out_task_log_id, 0) = 0 THEN 'not_sent' + ELSE 'failed' + END as status_type, COUNT(*) as cnt`). + Group("status_type"). + Scan(&statusCounts).Error; err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "查询店铺商品状态统计", + "error": fmt.Sprintf("查询失败: %v", err), + }) + } else { + for _, sc := range statusCounts { + switch sc.StatusType { + case "success": + response.SuccessCount = sc.Cnt + case "not_sent": + response.NotSentCount = sc.Cnt + case "failed": + response.FailedCount = sc.Cnt + } + } + } + + // 按状态筛选(不影响上述的全局统计计数) + if req.Status > 0 { + switch req.Status { + case 1: // 成功 + baseQuery = baseQuery.Having("out_task_log_id > 0 AND log_status = 2") + case 2: // 任务已创建未发送到店铺 + baseQuery = baseQuery.Having("out_task_log_id = 0") + case 3: // 发送失败 + baseQuery = baseQuery.Having("out_task_log_id > 0 AND log_status != 2") + } + + // 按筛选条件重新计算 total + var filteredTotal int64 + if err := databaseConn.Raw("SELECT COUNT(*) FROM (?) AS sub", baseQuery).Scan(&filteredTotal).Error; err == nil { + response.Total = filteredTotal + } + } + + // 分页查询 + offset := (req.Page - 1) * req.PageSize + err := baseQuery. + Order("p.created_at DESC"). + Offset(offset). + Limit(req.PageSize). + Scan(&productInfos).Error + + if err != nil { + utils.ErrorLog(constant.LoggerChannelWork, map[string]interface{}{ + "source": "查询店铺商品详情", + "error": fmt.Sprintf("查询失败: %v", err), + }) + return nil, utils.NewError("查询店铺商品详情失败") + } + + // 转换为响应格式 + for _, info := range productInfos { + var liveImage []string + if len(info.LiveImage) > 0 { + json.Unmarshal(info.LiveImage, &liveImage) + } + + // 根据日志状态判断在店铺中的状态和消息 + statusInShop := int8(0) + msg := "任务已创建未发送到店铺" + + if info.OutTaskLogID > 0 { + if info.LogStatus == 2 { + statusInShop = 1 + msg = "发布成功" + } else if info.LogStatus == 0 { + statusInShop = 0 + msg = info.LogMsg + if msg == "" { + msg = "发送到店铺失败" + } + } else if info.LogStatus == 1 { + statusInShop = 0 + msg = "推送成功,待发布" + } + } + + product := systemRes.ProductInShop{ + ID: info.ProductID, + Name: info.ProductName, + Barcode: info.ProductBarcode, + LiveImage: liveImage, + Price: info.Price, + SalePrice: info.SalePrice, + Quantity: info.Quantity, + WarehouseName: info.WarehouseName, + LocationCode: info.LocationCode, + IsBatchManaged: info.IsBatchManaged, + IsShelfLifeManaged: info.IsShelfLifeManaged, + OutTaskLogID: info.OutTaskLogID, + StatusInShop: statusInShop, + Msg: msg, + WaveNo: info.WaveNo, + WaveTaskNo: info.WaveTaskNo, + OutTaskNo: info.OutTaskNo, + SalesOrderNo: info.SalesOrderNo, + ShippingNo: info.ShippingNo, + CreatedAt: info.ProductCreatedAt, + UpdatedAt: info.ProductUpdatedAt, + } + + response.Products = append(response.Products, product) + } + + return response, nil +} + +func (s *ProductService) convertProductLogToItem(log models.ProductLog) systemRes.ProductLogItem { + var oldLiveImage []string + var newLiveImage []string + + if len(log.OldLiveImage) > 0 { + err := json.Unmarshal(log.OldLiveImage, &oldLiveImage) + if err != nil { + return systemRes.ProductLogItem{} + } + } + if len(log.NewLiveImage) > 0 { + err := json.Unmarshal(log.NewLiveImage, &newLiveImage) + if err != nil { + return systemRes.ProductLogItem{} + } + } + + return systemRes.ProductLogItem{ + ID: log.ID, + Barcode: log.Barcode, + Md5Data: log.Md5Data, + OldName: log.OldName, + NewName: log.NewName, + OldPublisher: log.OldPublisher, + NewPublisher: log.NewPublisher, + OldAuthor: log.OldAuthor, + NewAuthor: log.NewAuthor, + OldPublicationTime: log.OldPublicationTime, + NewPublicationTime: log.NewPublicationTime, + OldPrice: log.OldPrice, + NewPrice: log.NewPrice, + OldBindingLayout: log.OldBindingLayout, + NewBindingLayout: log.NewBindingLayout, + OldPageCount: log.OldPageCount, + NewPageCount: log.NewPageCount, + OldWordCount: log.OldWordCount, + NewWordCount: log.NewWordCount, + OldLiveImage: oldLiveImage, + NewLiveImage: newLiveImage, + OldIsSuit: log.OldIsSuit, + NewIsSuit: log.NewIsSuit, + Status: log.Status, + CreateBy: log.CreateBy, + AuditBy: log.AuditBy, + CreatedAt: log.CreatedAt, + UpdatedAt: log.UpdatedAt, + } +} + +func (s *ProductService) getShopTypeName(shopType int8) string { + switch shopType { + case 1: + return "拼多多" + case 2: + return "孔夫子" + case 5: + return "闲鱼" + default: + return "未知" + } +} diff --git a/service/purchase.go b/service/purchase.go new file mode 100644 index 0000000..e9ad70c --- /dev/null +++ b/service/purchase.go @@ -0,0 +1,155 @@ +package service + +import ( + "encoding/json" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + + "gorm.io/gorm" +) + +type PurchaseService struct{} + +// GetPurchaseOrderList 获取采购订单列表 +func (s *PurchaseService) GetPurchaseOrderList(req systemReq.GetPurchaseOrderListRequest, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.PurchaseOrderListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.PurchaseOrder{}).Where("purchase_order.is_del = ?", 0) + if role == 128 { + query = query.Where("purchase_order.creator_id = ?", creatorID) + } + if req.Status > 0 { + query = query.Where("purchase_order.status = ?", req.Status) + } + if req.SupplierID > 0 { + query = query.Where("purchase_order.supplier_id = ?", req.SupplierID) + } + if req.WarehouseID > 0 { + query = query.Where("purchase_order.warehouse_id = ?", req.WarehouseID) + } + if req.PoNo != "" { + query = query.Where("purchase_order.po_no LIKE ?", "%"+req.PoNo+"%") + } + if req.StartDate > 0 { + query = query.Where("purchase_order.created_at >= ?", req.StartDate) + } + if req.EndDate > 0 { + query = query.Where("purchase_order.created_at <= ?", req.EndDate) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if total == 0 { + return &systemRes.PurchaseOrderListResponse{ + List: []systemRes.PurchaseOrderItem{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + var orders []systemRes.OrderWithInfo + offset := (req.Page - 1) * req.PageSize + if err := query.Select("purchase_order.*, s.name as supplier_name, w.name as warehouse_name"). + Joins("LEFT JOIN supplier s ON purchase_order.supplier_id = s.id AND s.is_del = 0"). + Joins("LEFT JOIN warehouse w ON purchase_order.warehouse_id = w.id AND w.is_del = 0"). + Order("purchase_order.created_at DESC"). + Offset(offset). + Limit(req.PageSize). + Find(&orders).Error; err != nil { + return nil, utils.NewError("查询采购订单列表失败") + } + + orderItems := make([]systemRes.PurchaseOrderItem, 0, len(orders)) + for _, order := range orders { + orderItems = append(orderItems, systemRes.ConvertPurchaseOrderToItem( + order.PurchaseOrder, + order.SupplierName, + order.WarehouseName, + )) + } + + return &systemRes.PurchaseOrderListResponse{ + List: orderItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetPurchaseOrderDetail 获取采购订单详情 +func (s *PurchaseService) GetPurchaseOrderDetail(id int64, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.PurchaseOrderDetailResponse, error) { + databaseConn := database.OptionalDB(db...) + + query := databaseConn.Model(&models.PurchaseOrder{}). + Select("purchase_order.*, s.name as supplier_name, w.name as warehouse_name"). + Joins("LEFT JOIN supplier s ON purchase_order.supplier_id = s.id AND s.is_del = 0"). + Joins("LEFT JOIN warehouse w ON purchase_order.warehouse_id = w.id AND w.is_del = 0"). + Where("purchase_order.id = ? AND purchase_order.is_del = ?", id, 0) + + if role == 128 { + query = query.Where("purchase_order.creator_id = ?", creatorID) + } + + var order systemRes.OrderWithInfo + result := query.First(&order) + + if result.Error != nil { + return nil, utils.NewError("采购订单不存在") + } + + var items []systemRes.ItemWithProduct + databaseConn.Model(&models.PurchaseOrderItem{}). + Select("purchase_order_item.*, p.name as product_name, p.barcode as product_code, p.category_id,p.sale_price, c.name as category_name, p.live_image, roi.location_id, l.code as location_code"). + Joins("LEFT JOIN product p ON purchase_order_item.product_id = p.id AND p.is_del = 0"). + Joins("LEFT JOIN product_category c ON p.category_id = c.id AND c.is_del = 0"). + Joins("LEFT JOIN receiving_order ro ON ro.purchase_order_id = purchase_order_item.purchase_order_id AND ro.is_del = 0"). + Joins("LEFT JOIN receiving_order_item roi ON roi.receiving_order_id = ro.id AND roi.product_id = purchase_order_item.product_id AND roi.is_del = 0"). + Joins("LEFT JOIN location l ON roi.location_id = l.id AND l.is_del = 0"). + Where("purchase_order_item.purchase_order_id = ? AND purchase_order_item.is_del = ?", order.ID, 0). + Find(&items) + + detailItems := make([]systemRes.PurchaseOrderDetailItem, 0, len(items)) + for _, item := range items { + var imageList []string + if len(item.LiveImage) > 0 { + json.Unmarshal(item.LiveImage, &imageList) + } + + detailItems = append(detailItems, systemRes.PurchaseOrderDetailItem{ + ID: item.ID, + PurchaseOrderID: item.PurchaseOrderID, + ProductID: item.ProductID, + ProductName: item.ProductName, + ProductCode: item.ProductCode, + SalePrice: item.SalePrice, + CategoryID: item.CategoryID, + CategoryName: item.CategoryName, + LiveImage: imageList, + Quantity: item.Quantity, + ReceivedQuantity: item.ReceivedQuantity, + UnitPrice: item.UnitPrice, + Amount: item.Amount, + LocationID: item.LocationID, + LocationCode: item.LocationCode, + CreatedAt: item.CreatedAt, + UpdatedAt: item.UpdatedAt, + }) + } + + detail := systemRes.ConvertPurchaseOrderToDetail(order.PurchaseOrder, order.SupplierName, order.WarehouseName, detailItems) + return &detail, nil +} diff --git a/service/receiving.go b/service/receiving.go new file mode 100644 index 0000000..5583541 --- /dev/null +++ b/service/receiving.go @@ -0,0 +1,164 @@ +package service + +import ( + "encoding/json" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + + "gorm.io/gorm" +) + +type ReceivingService struct{} + +// GetReceivingOrderList 获取入库单列表 +func (s *ReceivingService) GetReceivingOrderList(req systemReq.GetReceivingOrderListRequest, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.ReceivingOrderListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.ReceivingOrder{}).Where("receiving_order.is_del = ?", 0) + if role == 128 { + query = query.Where("receiving_order.operator_id = ?", creatorID) + } + + if req.Status > 0 { + query = query.Where("receiving_order.status = ?", req.Status) + } + if req.SupplierID > 0 { + query = query.Where("receiving_order.supplier_id = ?", req.SupplierID) + } + if req.WarehouseID > 0 { + query = query.Where("receiving_order.warehouse_id = ?", req.WarehouseID) + } + if req.PurchaseOrderID > 0 { + query = query.Where("receiving_order.purchase_order_id = ?", req.PurchaseOrderID) + } + if req.WaveTaskID > 0 { + query = query.Where("receiving_order.wave_task_id = ?", req.WaveTaskID) + } + if req.ReceivingNo != "" { + query = query.Where("receiving_order.receiving_no LIKE ?", "%"+req.ReceivingNo+"%") + } + if req.StartDate > 0 { + query = query.Where("receiving_order.created_at >= ?", req.StartDate) + } + if req.EndDate > 0 { + query = query.Where("receiving_order.created_at <= ?", req.EndDate) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if total == 0 { + return &systemRes.ReceivingOrderListResponse{ + List: []systemRes.ReceivingOrderItem{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + var orders []systemRes.ReceivingOrderWithInfo + offset := (req.Page - 1) * req.PageSize + if err := query.Select("receiving_order.*, s.name as supplier_name, w.name as warehouse_name, p.po_no,wt.task_no"). + Joins("LEFT JOIN supplier s ON receiving_order.supplier_id = s.id AND s.is_del = 0"). + Joins("LEFT JOIN warehouse w ON receiving_order.warehouse_id = w.id AND w.is_del = 0"). + Joins("LEFT JOIN purchase_order p ON receiving_order.purchase_order_id = p.id AND p.is_del = 0"). + Joins("LEFT JOIN wave_task wt ON receiving_order.wave_task_id = wt.id AND wt.is_del = 0"). + Order("receiving_order.created_at DESC"). + Offset(offset). + Limit(req.PageSize). + Find(&orders).Error; err != nil { + return nil, utils.NewError("查询入库单列表失败") + } + + orderItems := make([]systemRes.ReceivingOrderItem, 0, len(orders)) + for _, order := range orders { + orderItems = append(orderItems, systemRes.ConvertReceivingOrderToItem( + order.ReceivingOrder, + order.SupplierName, + order.WarehouseName, + order.PoNo, + order.TaskNo, + )) + } + + return &systemRes.ReceivingOrderListResponse{ + List: orderItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetReceivingOrderDetail 获取入库单详情 +func (s *ReceivingService) GetReceivingOrderDetail(id int64, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.ReceivingOrderDetailResponse, error) { + databaseConn := database.OptionalDB(db...) + + query := databaseConn.Model(&models.ReceivingOrder{}). + Select("receiving_order.*, s.name as supplier_name, w.name as warehouse_name, p.po_no"). + Joins("LEFT JOIN supplier s ON receiving_order.supplier_id = s.id AND s.is_del = 0"). + Joins("LEFT JOIN warehouse w ON receiving_order.warehouse_id = w.id AND w.is_del = 0"). + Joins("LEFT JOIN purchase_order p ON receiving_order.purchase_order_id = p.id AND p.is_del = 0"). + Where("receiving_order.id = ? AND receiving_order.is_del = ?", id, 0) + + if role == 128 { + query = query.Where("receiving_order.operator_id = ?", creatorID) + } + + var order systemRes.ReceivingOrderWithInfo + result := query.First(&order) + + if result.Error != nil { + return nil, utils.NewError("入库单不存在") + } + + var items []systemRes.ReceivingOrderItemWithProduct + databaseConn.Model(&models.ReceivingOrderItem{}). + Select("receiving_order_item.*, p.name as product_name, p.barcode as product_code, p.category_id, c.name as category_name, p.live_image, l.code as location_code"). + Joins("LEFT JOIN product p ON receiving_order_item.product_id = p.id AND p.is_del = 0"). + Joins("LEFT JOIN product_category c ON p.category_id = c.id AND c.is_del = 0"). + Joins("LEFT JOIN location l ON receiving_order_item.location_id = l.id AND l.is_del = 0"). + Where("receiving_order_item.receiving_order_id = ? AND receiving_order_item.is_del = ?", order.ID, 0). + Find(&items) + + detailItems := make([]systemRes.ReceivingOrderDetailItem, 0, len(items)) + for _, item := range items { + var imageList []string + if len(item.LiveImage) > 0 { + json.Unmarshal(item.LiveImage, &imageList) + } + + detailItems = append(detailItems, systemRes.ReceivingOrderDetailItem{ + ID: item.ID, + ReceivingOrderID: item.ReceivingOrderID, + ProductID: item.ProductID, + ProductName: item.ProductName, + ProductCode: item.ProductCode, + CategoryID: item.CategoryID, + CategoryName: item.CategoryName, + LiveImage: imageList, + LocationID: item.LocationID, + LocationCode: item.LocationCode, + BatchNo: item.BatchNo, + ProductionDate: item.ProductionDate, + ExpiryDate: item.ExpiryDate, + Quantity: item.Quantity, + CreatedAt: item.CreatedAt, + UpdatedAt: item.UpdatedAt, + }) + } + + detail := systemRes.ConvertReceivingOrderToDetail(order.ReceivingOrder, order.SupplierName, order.WarehouseName, order.PoNo, detailItems) + return &detail, nil +} diff --git a/service/sales.go b/service/sales.go new file mode 100644 index 0000000..5cee761 --- /dev/null +++ b/service/sales.go @@ -0,0 +1,289 @@ +package service + +import ( + "encoding/json" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + + "gorm.io/gorm" +) + +type SalesService struct{} + +// GetSalesOrderList 获取销售订单列表 +func (s *SalesService) GetSalesOrderList(req systemReq.GetSalesOrderListRequest, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.SalesOrderListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.SalesOrder{}).Where("sales_order.is_del = ?", 0) + if role == 128 { + query = query.Where("sales_order.sales_person_id = ?", creatorID) + } + + if req.Status > 0 { + query = query.Where("sales_order.status = ?", req.Status) + } + if req.CustomerID > 0 { + query = query.Where("sales_order.customer_id = ?", req.CustomerID) + } + if req.WarehouseID > 0 { + query = query.Where("sales_order.warehouse_id = ?", req.WarehouseID) + } + if req.SoNo != "" { + query = query.Where("sales_order.so_no LIKE ?", "%"+req.SoNo+"%") + } + if req.StartDate > 0 { + query = query.Where("sales_order.created_at >= ?", req.StartDate) + } + if req.EndDate > 0 { + query = query.Where("sales_order.created_at <= ?", req.EndDate) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if total == 0 { + return &systemRes.SalesOrderListResponse{ + List: []systemRes.SalesOrderItem{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + var orders []systemRes.SalesOrderWithInfo + offset := (req.Page - 1) * req.PageSize + if err := query.Select("sales_order.*, c.name as customer_name, w.name as warehouse_name"). + Joins("LEFT JOIN customer c ON sales_order.customer_id = c.id AND c.is_del = 0"). + Joins("LEFT JOIN warehouse w ON sales_order.warehouse_id = w.id AND w.is_del = 0"). + Order("sales_order.created_at DESC"). + Offset(offset). + Limit(req.PageSize). + Find(&orders).Error; err != nil { + return nil, utils.NewError("查询销售订单列表失败") + } + + orderItems := make([]systemRes.SalesOrderItem, 0, len(orders)) + for _, order := range orders { + orderItems = append(orderItems, systemRes.ConvertSalesOrderToItem( + order.SalesOrder, + order.CustomerName, + order.WarehouseName, + )) + } + + return &systemRes.SalesOrderListResponse{ + List: orderItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetSalesOrderDetailList 获取分页的销售订单详情列表(含明细) +func (s *SalesService) GetSalesOrderDetailList(req systemReq.GetSalesOrderDetailListRequest, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.SalesOrderDetailListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.SalesOrder{}).Where("sales_order.is_del = ?", 0) + if role == 128 { + query = query.Where("sales_order.sales_person_id = ?", creatorID) + } + //if req.Status > 0 { + // query = query.Where("sales_order.status = ?", req.Status) + //} + //if req.CustomerID > 0 { + // query = query.Where("sales_order.customer_id = ?", req.CustomerID) + //} + //if req.WarehouseID > 0 { + // query = query.Where("sales_order.warehouse_id = ?", req.WarehouseID) + //} + //if req.SoNo != "" { + // query = query.Where("sales_order.so_no LIKE ?", "%"+req.SoNo+"%") + //} + //if req.StartDate > 0 { + // query = query.Where("sales_order.created_at >= ?", req.StartDate) + //} + //if req.EndDate > 0 { + // query = query.Where("sales_order.created_at <= ?", req.EndDate) + //} + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if total == 0 { + return &systemRes.SalesOrderDetailListResponse{ + List: []systemRes.SalesOrderDetailResponse{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + // 查询分页的销售订单 + var orders []systemRes.SalesOrderWithInfo + offset := (req.Page - 1) * req.PageSize + if err := query.Select("sales_order.*, c.name as customer_name, w.name as warehouse_name"). + Joins("LEFT JOIN customer c ON sales_order.customer_id = c.id AND c.is_del = 0"). + Joins("LEFT JOIN warehouse w ON sales_order.warehouse_id = w.id AND w.is_del = 0"). + Order("sales_order.created_at DESC"). + Offset(offset). + Limit(req.PageSize). + Find(&orders).Error; err != nil { + return nil, utils.NewError("查询销售订单列表失败") + } + + // 提取订单ID列表 + orderIDs := make([]int64, len(orders)) + for i, order := range orders { + orderIDs[i] = order.ID + } + + // 批量查询所有订单的明细项(含商品信息) + var allItems []systemRes.SalesOrderItemWithProduct + if err := databaseConn.Model(&models.SalesOrderItem{}). + Select("sales_order_item.*, p.name as product_name, p.barcode as product_code, p.category_id, p.sale_price as product_sale_price, c.name as category_name, p.live_image ,lt.code as location_code"). + Joins("LEFT JOIN product p ON sales_order_item.product_id = p.id AND p.is_del = 0"). + Joins("LEFT JOIN product_category c ON p.category_id = c.id AND c.is_del = 0"). + Joins("LEFT JOIN inventory_detail de on p.id = de.product_id AND de.is_del = 0"). + Joins("LEFT JOIN location lt on de.location_id = lt.id"). + Where("sales_order_item.sales_order_id IN ? AND sales_order_item.is_del = ?", orderIDs, 0). + Find(&allItems).Error; err != nil { + return nil, utils.NewError("查询订单明细失败") + } + + // 按订单ID分组明细项 + itemMap := make(map[int64][]systemRes.SalesOrderItemWithProduct) + for _, item := range allItems { + itemMap[item.SalesOrderID] = append(itemMap[item.SalesOrderID], item) + } + + // 组装响应 + detailList := make([]systemRes.SalesOrderDetailResponse, 0, len(orders)) + for _, order := range orders { + items := itemMap[order.ID] + detailItems := make([]systemRes.SalesOrderDetailItem, 0, len(items)) + for _, item := range items { + var imageList []string + if len(item.LiveImage) > 0 { + json.Unmarshal(item.LiveImage, &imageList) + } + detailItems = append(detailItems, systemRes.SalesOrderDetailItem{ + ID: item.ID, + SalesOrderID: item.SalesOrderID, + ProductID: item.ProductID, + ProductName: item.ProductName, + ProductCode: item.ProductCode, + ProductSalePrice: item.ProductSalePrice, + CategoryID: item.CategoryID, + CategoryName: item.CategoryName, + LiveImage: imageList, + Quantity: item.Quantity, + AllocatedQuantity: item.AllocatedQuantity, + ShippedQuantity: item.ShippedQuantity, + UnitPrice: item.UnitPrice, + Amount: item.Amount, + ReceiverName: item.ReceiverName, + ReceiverPhone: item.ReceiverPhone, + ReceiverAddress: item.ReceiverAddress, + LocationCode: item.LocationCode, + CreatedAt: item.CreatedAt, + UpdatedAt: item.UpdatedAt, + }) + } + detail := systemRes.ConvertSalesOrderToDetail(order.SalesOrder, order.CustomerName, order.WarehouseName, detailItems) + detailList = append(detailList, detail) + } + + return &systemRes.SalesOrderDetailListResponse{ + List: detailList, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetSalesOrderDetail 获取销售订单详情 +func (s *SalesService) GetSalesOrderDetail(id int64, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.SalesOrderDetailResponse, error) { + databaseConn := database.OptionalDB(db...) + + query := databaseConn.Model(&models.SalesOrder{}). + Select("sales_order.*, c.name as customer_name, w.name as warehouse_name"). + Joins("LEFT JOIN customer c ON sales_order.customer_id = c.id AND c.is_del = 0"). + Joins("LEFT JOIN warehouse w ON sales_order.warehouse_id = w.id AND w.is_del = 0"). + Where("sales_order.id = ? AND sales_order.is_del = ?", id, 0) + + if role == 128 { + query = query.Where("sales_order.sales_person_id = ?", creatorID) + } + + var order systemRes.SalesOrderWithInfo + result := query.First(&order) + + if result.Error != nil { + return nil, utils.NewError("销售订单不存在") + } + + var items []systemRes.SalesOrderItemWithProduct + databaseConn.Model(&models.SalesOrderItem{}). + Select("sales_order_item.*, p.name as product_name, p.barcode as product_code, p.category_id,p.sale_price as product_sale_price, c.name as category_name, p.live_image, lt.code as location_code"). + Joins("LEFT JOIN product p ON sales_order_item.product_id = p.id AND p.is_del = 0"). + Joins("LEFT JOIN product_category c ON p.category_id = c.id AND c.is_del = 0"). + Joins("LEFT JOIN inventory_detail de on p.id = de.product_id AND de.is_del = 0"). + Joins("LEFT JOIN location lt on de.location_id = lt.id"). + Where("sales_order_item.sales_order_id = ? AND sales_order_item.is_del = ?", order.ID, 0). + Find(&items) + + detailItems := make([]systemRes.SalesOrderDetailItem, 0, len(items)) + for _, item := range items { + var imageList []string + if len(item.LiveImage) > 0 { + json.Unmarshal(item.LiveImage, &imageList) + } + + detailItems = append(detailItems, systemRes.SalesOrderDetailItem{ + ID: item.ID, + SalesOrderID: item.SalesOrderID, + ProductID: item.ProductID, + ProductName: item.ProductName, + ProductCode: item.ProductCode, + ProductSalePrice: item.ProductSalePrice, + CategoryID: item.CategoryID, + CategoryName: item.CategoryName, + LiveImage: imageList, + Quantity: item.Quantity, + AllocatedQuantity: item.AllocatedQuantity, + ShippedQuantity: item.ShippedQuantity, + UnitPrice: item.UnitPrice, + Amount: item.Amount, + ReceiverName: item.ReceiverName, + ReceiverPhone: item.ReceiverPhone, + ReceiverAddress: item.ReceiverAddress, + LocationCode: item.LocationCode, + CreatedAt: item.CreatedAt, + UpdatedAt: item.UpdatedAt, + }) + } + + detail := systemRes.ConvertSalesOrderToDetail(order.SalesOrder, order.CustomerName, order.WarehouseName, detailItems) + return &detail, nil +} diff --git a/service/shipping.go b/service/shipping.go new file mode 100644 index 0000000..7bffa90 --- /dev/null +++ b/service/shipping.go @@ -0,0 +1,407 @@ +package service + +import ( + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + + "gorm.io/gorm" +) + +type ShippingService struct{} + +// GetShippingOrderList 获取发货单列表 +func (s *ShippingService) GetShippingOrderList(req systemReq.GetShippingOrderListRequest, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.ShippingOrderListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.ShippingOrder{}).Where("shipping_order.is_del = ?", 0) + + if req.Status > 0 { + query = query.Where("shipping_order.status = ?", req.Status) + } + if req.CustomerID > 0 { + query = query.Where("shipping_order.customer_id = ?", req.CustomerID) + } + if req.ShippingNo != "" { + query = query.Where("shipping_order.shipping_no LIKE ?", "%"+req.ShippingNo+"%") + } + if req.StartDate > 0 { + query = query.Where("shipping_order.created_at >= ?", req.StartDate) + } + if req.EndDate > 0 { + query = query.Where("shipping_order.created_at <= ?", req.EndDate) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if total == 0 { + return &systemRes.ShippingOrderListResponse{ + List: []systemRes.ShippingOrderItem{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + var orders []systemRes.ShippingOrderWithInfo + offset := (req.Page - 1) * req.PageSize + if err := query.Select("shipping_order.*, c.name as customer_name"). + Joins("LEFT JOIN customer c ON shipping_order.customer_id = c.id AND c.is_del = 0"). + Order("shipping_order.created_at DESC"). + Offset(offset). + Limit(req.PageSize). + Find(&orders).Error; err != nil { + return nil, utils.NewError("查询发货单列表失败") + } + + orderItems := make([]systemRes.ShippingOrderItem, 0, len(orders)) + for _, order := range orders { + var shopList []systemRes.OutboundShopInfo + + var shops []struct { + ShopName string `gorm:"column:shop_name"` + ShopType int8 `gorm:"column:shop_type"` + } + + databaseConn.Table("shipping_order_item"). + Select("DISTINCT so.sales_person as shop_name, so.shop_type as shop_type"). + Joins("INNER JOIN outbound_order_item ooi ON shipping_order_item.outbound_order_item_id = ooi.id AND ooi.is_del = 0"). + Joins("INNER JOIN sales_order so ON ooi.sales_order_id = so.id AND so.is_del = 0"). + Where("shipping_order_item.shipping_order_id = ? AND shipping_order_item.is_del = ?", order.ID, 0). + Scan(&shops) + + for _, shop := range shops { + shopList = append(shopList, systemRes.OutboundShopInfo{ + ShopName: shop.ShopName, + ShopType: shop.ShopType, + ShopTypeText: systemRes.GetShopTypeText(shop.ShopType), + }) + } + + orderItems = append(orderItems, systemRes.ConvertShippingOrderToItem( + order.ShippingOrder, + order.CustomerName, + shopList, + )) + } + + return &systemRes.ShippingOrderListResponse{ + List: orderItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetShippingOrderDetail 获取发货单详情 +func (s *ShippingService) GetShippingOrderDetail(id int64, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.ShippingOrderDetailResponse, error) { + databaseConn := database.OptionalDB(db...) + + query := databaseConn.Model(&models.ShippingOrder{}). + Select("shipping_order.*, c.name as customer_name"). + Joins("LEFT JOIN customer c ON shipping_order.customer_id = c.id AND c.is_del = 0"). + Where("shipping_order.id = ? AND shipping_order.is_del = ?", id, 0) + + var order systemRes.ShippingOrderWithInfo + result := query.First(&order) + + if result.Error != nil { + return nil, utils.NewError("发货单不存在") + } + + var items []systemRes.ShippingOrderItemWithProduct + databaseConn.Model(&models.ShippingOrderItem{}). + Select(`shipping_order_item.*, + p.id as product_id, + p.name as product_name, + p.barcode as product_code, + p.category_id, + c.name as category_name, + l.id as location_id, + l.code as location_name, + w.name as warehouse_name, + w.code as warehouse_code, + w.contact_person as warehouse_contact_person, + w.contact_phone as warehouse_contact_phone, + w.province as warehouse_province, + w.city as warehouse_city, + w.district as warehouse_district, + w.address as warehouse_address, + so.so_no as sales_order_no, + oo.out_no as outbound_order_no, + ooi.unit_price, + so.created_at as sales_order_created_at, + so.sales_person_id, + so.association_order_id, + so.association_order_no, + soi.id as sales_order_item_id, + soi.created_at as so_item_created_at, + soi.receiver_name, + soi.receiver_phone, + soi.receiver_address, + soi.logistics_company, + soi.logistics_no`). + Joins("LEFT JOIN outbound_order_item ooi ON shipping_order_item.outbound_order_item_id = ooi.id AND ooi.is_del = 0"). + Joins("LEFT JOIN product p ON ooi.product_id = p.id AND p.is_del = 0"). + Joins("LEFT JOIN product_category c ON p.category_id = c.id AND c.is_del = 0"). + Joins("LEFT JOIN location l ON ooi.location_id = l.id AND l.is_del = 0"). + Joins("LEFT JOIN warehouse w ON l.warehouse_id = w.id AND w.is_del = 0"). + Joins("LEFT JOIN sales_order so ON ooi.sales_order_id = so.id AND so.is_del = 0"). + Joins("LEFT JOIN sales_order_item soi ON ooi.sales_order_id = soi.sales_order_id AND ooi.product_id = soi.product_id AND soi.is_del = 0"). + Joins("LEFT JOIN outbound_order oo ON ooi.out_order_id = oo.id AND oo.is_del = 0"). + Where("shipping_order_item.shipping_order_id = ? AND shipping_order_item.is_del = ?", order.ID, 0). + Order("l.sort ASC, l.id ASC"). + Find(&items) + + detailItems := make([]systemRes.ShippingOrderDetailItem, 0, len(items)) + for _, item := range items { + detailItems = append(detailItems, systemRes.ShippingOrderDetailItem{ + ID: item.ID, + ShippingOrderID: item.ShippingOrderID, + OutboundOrderItemID: item.OutboundOrderItemID, + SalesOrderItemID: item.SalesOrderItemID, + SalesOrderNo: item.SalesOrderNo, + OutboundOrderNo: item.OutboundOrderNo, + ProductID: item.ProductID, + ProductName: item.ProductName, + ProductCode: item.ProductCode, + CategoryID: item.CategoryID, + CategoryName: item.CategoryName, + LocationID: item.LocationID, + LocationName: item.LocationName, + WarehouseName: item.WarehouseName, + WarehouseCode: item.WarehouseCode, + WarehouseContactPerson: item.WarehouseContactPerson, + WarehouseContactPhone: item.WarehouseContactPhone, + WarehouseProvince: item.WarehouseProvince, + WarehouseCity: item.WarehouseCity, + WarehouseDistrict: item.WarehouseDistrict, + WarehouseAddress: item.WarehouseAddress, + Quantity: item.Quantity, + UnitPrice: item.UnitPrice, + SalesOrderCreatedAt: item.SalesOrderCreatedAt, + SalesPersonID: item.SalesPersonID, + AssociationOrderID: item.AssociationOrderID, + AssociationOrderNo: item.AssociationOrderNo, + SoItemCreatedAt: item.SoItemCreatedAt, + ReceiverName: item.ReceiverName, + ReceiverPhone: item.ReceiverPhone, + ReceiverAddress: item.ReceiverAddress, + LogisticsCompany: item.LogisticsCompany, + LogisticsNo: item.LogisticsNo, + }) + } + + detail := systemRes.ConvertShippingOrderToDetail(order.ShippingOrder, order.CustomerName, detailItems) + return &detail, nil +} + +// GetShippingOrderDetailList 获取发货单详情列表(按状态筛选,含全部明细字段) +func (s *ShippingService) GetShippingOrderDetailList(req systemReq.GetShippingOrderDetailListRequest, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.ShippingOrderDetailListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.ShippingOrder{}).Where("shipping_order.is_del = ?", 0) + + if req.Status > 0 { + query = query.Where("shipping_order.status = ?", req.Status) + } + if req.CustomerID > 0 { + query = query.Where("shipping_order.customer_id = ?", req.CustomerID) + } + if req.ShippingNo != "" { + query = query.Where("shipping_order.shipping_no LIKE ?", "%"+req.ShippingNo+"%") + } + if req.StartDate > 0 { + query = query.Where("shipping_order.created_at >= ?", req.StartDate) + } + if req.EndDate > 0 { + query = query.Where("shipping_order.created_at <= ?", req.EndDate) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if total == 0 { + return &systemRes.ShippingOrderDetailListResponse{ + List: []systemRes.ShippingOrderDetailListItem{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + var orders []systemRes.ShippingOrderWithInfo + offset := (req.Page - 1) * req.PageSize + if err := query.Select("shipping_order.*, c.name as customer_name"). + Joins("LEFT JOIN customer c ON shipping_order.customer_id = c.id AND c.is_del = 0"). + Order("shipping_order.created_at DESC"). + Offset(offset). + Limit(req.PageSize). + Find(&orders).Error; err != nil { + return nil, utils.NewError("查询发货单列表失败") + } + + // 收集所有订单ID + orderIDs := make([]int64, 0, len(orders)) + for _, order := range orders { + orderIDs = append(orderIDs, order.ID) + } + + // 批量按订单分组查询店铺信息 + type shopRow struct { + ShippingOrderID int64 + ShopName string `gorm:"column:shop_name"` + ShopType int8 `gorm:"column:shop_type"` + } + var shopRows []shopRow + databaseConn.Table("shipping_order_item"). + Select("DISTINCT shipping_order_item.shipping_order_id, so.sales_person as shop_name, so.shop_type as shop_type"). + Joins("INNER JOIN outbound_order_item ooi ON shipping_order_item.outbound_order_item_id = ooi.id AND ooi.is_del = 0"). + Joins("INNER JOIN sales_order so ON ooi.sales_order_id = so.id AND so.is_del = 0"). + Where("shipping_order_item.shipping_order_id IN ? AND shipping_order_item.is_del = ?", orderIDs, 0). + Scan(&shopRows) + + shopsByOrderID := make(map[int64][]systemRes.OutboundShopInfo, len(orderIDs)) + for _, row := range shopRows { + shopsByOrderID[row.ShippingOrderID] = append(shopsByOrderID[row.ShippingOrderID], systemRes.OutboundShopInfo{ + ShopName: row.ShopName, + ShopType: row.ShopType, + ShopTypeText: systemRes.GetShopTypeText(row.ShopType), + }) + } + + // 批量查询所有订单的明细(一次查询全部JOIN) + var allItems []systemRes.ShippingOrderItemWithProduct + databaseConn.Model(&models.ShippingOrderItem{}). + Select(`shipping_order_item.*, + p.id as product_id, + p.name as product_name, + p.barcode as product_code, + p.category_id, + c.name as category_name, + l.id as location_id, + l.code as location_name, + w.name as warehouse_name, + w.code as warehouse_code, + w.contact_person as warehouse_contact_person, + w.contact_phone as warehouse_contact_phone, + w.province as warehouse_province, + w.city as warehouse_city, + w.district as warehouse_district, + w.address as warehouse_address, + so.so_no as sales_order_no, + oo.out_no as outbound_order_no, + ooi.unit_price, + so.created_at as sales_order_created_at, + so.sales_person_id, + so.association_order_id, + so.association_order_no, + soi.id as sales_order_item_id, + soi.created_at as so_item_created_at, + soi.receiver_name, + soi.receiver_phone, + soi.receiver_address, + soi.logistics_company, + soi.logistics_no`). + Joins("LEFT JOIN outbound_order_item ooi ON shipping_order_item.outbound_order_item_id = ooi.id AND ooi.is_del = 0"). + Joins("LEFT JOIN product p ON ooi.product_id = p.id AND p.is_del = 0"). + Joins("LEFT JOIN product_category c ON p.category_id = c.id AND c.is_del = 0"). + Joins("LEFT JOIN location l ON ooi.location_id = l.id AND l.is_del = 0"). + Joins("LEFT JOIN warehouse w ON l.warehouse_id = w.id AND w.is_del = 0"). + Joins("LEFT JOIN sales_order so ON ooi.sales_order_id = so.id AND so.is_del = 0"). + Joins("LEFT JOIN sales_order_item soi ON ooi.sales_order_id = soi.sales_order_id AND ooi.product_id = soi.product_id AND soi.is_del = 0"). + Joins("LEFT JOIN outbound_order oo ON ooi.out_order_id = oo.id AND oo.is_del = 0"). + Where("shipping_order_item.shipping_order_id IN ? AND shipping_order_item.is_del = ?", orderIDs, 0). + Order("l.sort ASC, l.id ASC"). + Find(&allItems) + + // 按订单ID分组明细 + itemsByOrderID := make(map[int64][]systemRes.ShippingOrderItemWithProduct, len(orderIDs)) + for _, item := range allItems { + itemsByOrderID[item.ShippingOrderID] = append(itemsByOrderID[item.ShippingOrderID], item) + } + + // 组装最终结果 + detailListItems := make([]systemRes.ShippingOrderDetailListItem, 0, len(orders)) + for _, order := range orders { + orderItems := itemsByOrderID[order.ID] + detailItems := make([]systemRes.ShippingOrderDetailItem, 0, len(orderItems)) + for _, item := range orderItems { + detailItems = append(detailItems, systemRes.ShippingOrderDetailItem{ + ID: item.ID, + ShippingOrderID: item.ShippingOrderID, + OutboundOrderItemID: item.OutboundOrderItemID, + SalesOrderItemID: item.SalesOrderItemID, + SalesOrderNo: item.SalesOrderNo, + OutboundOrderNo: item.OutboundOrderNo, + ProductID: item.ProductID, + ProductName: item.ProductName, + ProductCode: item.ProductCode, + CategoryID: item.CategoryID, + CategoryName: item.CategoryName, + LocationID: item.LocationID, + LocationName: item.LocationName, + WarehouseName: item.WarehouseName, + WarehouseCode: item.WarehouseCode, + WarehouseContactPerson: item.WarehouseContactPerson, + WarehouseContactPhone: item.WarehouseContactPhone, + WarehouseProvince: item.WarehouseProvince, + WarehouseCity: item.WarehouseCity, + WarehouseDistrict: item.WarehouseDistrict, + WarehouseAddress: item.WarehouseAddress, + Quantity: item.Quantity, + UnitPrice: item.UnitPrice, + SalesOrderCreatedAt: item.SalesOrderCreatedAt, + SalesPersonID: item.SalesPersonID, + AssociationOrderID: item.AssociationOrderID, + AssociationOrderNo: item.AssociationOrderNo, + SoItemCreatedAt: item.SoItemCreatedAt, + ReceiverName: item.ReceiverName, + ReceiverPhone: item.ReceiverPhone, + ReceiverAddress: item.ReceiverAddress, + LogisticsCompany: item.LogisticsCompany, + LogisticsNo: item.LogisticsNo, + }) + } + + shopList := shopsByOrderID[order.ID] + if shopList == nil { + shopList = []systemRes.OutboundShopInfo{} + } + + detailListItems = append(detailListItems, systemRes.ConvertShippingOrderToDetailListItem( + order.ShippingOrder, + order.CustomerName, + shopList, + detailItems, + )) + } + + return &systemRes.ShippingOrderDetailListResponse{ + List: detailListItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} diff --git a/service/shipping.go.bak b/service/shipping.go.bak new file mode 100644 index 0000000..73dec34 --- /dev/null +++ b/service/shipping.go.bak @@ -0,0 +1,209 @@ +package service + +import ( + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + + "gorm.io/gorm" +) + +type ShippingService struct{} + +// GetShippingOrderList 获取发货单列表 +func (s *ShippingService) GetShippingOrderList(req systemReq.GetShippingOrderListRequest, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.ShippingOrderListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.ShippingOrder{}).Where("shipping_order.is_del = ?", 0) + + if req.Status > 0 { + query = query.Where("shipping_order.status = ?", req.Status) + } + if req.CustomerID > 0 { + query = query.Where("shipping_order.customer_id = ?", req.CustomerID) + } + if req.ShippingNo != "" { + query = query.Where("shipping_order.shipping_no LIKE ?", "%"+req.ShippingNo+"%") + } + if req.StartDate > 0 { + query = query.Where("shipping_order.created_at >= ?", req.StartDate) + } + if req.EndDate > 0 { + query = query.Where("shipping_order.created_at <= ?", req.EndDate) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + if total == 0 { + return &systemRes.ShippingOrderListResponse{ + List: []systemRes.ShippingOrderItem{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + var orders []systemRes.ShippingOrderWithInfo + offset := (req.Page - 1) * req.PageSize + if err := query.Select("shipping_order.*, c.name as customer_name"). + Joins("LEFT JOIN customer c ON shipping_order.customer_id = c.id AND c.is_del = 0"). + Order("shipping_order.created_at DESC"). + Offset(offset). + Limit(req.PageSize). + Find(&orders).Error; err != nil { + return nil, utils.NewError("查询发货单列表失败") + } + + orderItems := make([]systemRes.ShippingOrderItem, 0, len(orders)) + for _, order := range orders { + var shopList []systemRes.OutboundShopInfo + + var shops []struct { + ShopName string `gorm:"column:shop_name"` + ShopType int8 `gorm:"column:shop_type"` + } + + databaseConn.Table("shipping_order_item"). + Select("DISTINCT so.sales_person as shop_name, so.shop_type as shop_type"). + Joins("INNER JOIN outbound_order_item ooi ON shipping_order_item.outbound_order_item_id = ooi.id AND ooi.is_del = 0"). + Joins("INNER JOIN sales_order so ON ooi.sales_order_id = so.id AND so.is_del = 0"). + Where("shipping_order_item.shipping_order_id = ? AND shipping_order_item.is_del = ?", order.ID, 0). + Scan(&shops) + + for _, shop := range shops { + shopList = append(shopList, systemRes.OutboundShopInfo{ + ShopName: shop.ShopName, + ShopType: shop.ShopType, + ShopTypeText: systemRes.GetShopTypeText(shop.ShopType), + }) + } + + orderItems = append(orderItems, systemRes.ConvertShippingOrderToItem( + order.ShippingOrder, + order.CustomerName, + shopList, + )) + } + + return &systemRes.ShippingOrderListResponse{ + List: orderItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetShippingOrderDetail 获取发货单详情 +func (s *ShippingService) GetShippingOrderDetail(id int64, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.ShippingOrderDetailResponse, error) { + databaseConn := database.OptionalDB(db...) + + query := databaseConn.Model(&models.ShippingOrder{}). + Select("shipping_order.*, c.name as customer_name"). + Joins("LEFT JOIN customer c ON shipping_order.customer_id = c.id AND c.is_del = 0"). + Where("shipping_order.id = ? AND shipping_order.is_del = ?", id, 0) + + var order systemRes.ShippingOrderWithInfo + result := query.First(&order) + + if result.Error != nil { + return nil, utils.NewError("发货单不存在") + } + + var items []systemRes.ShippingOrderItemWithProduct + databaseConn.Model(&models.ShippingOrderItem{}). + Select(`shipping_order_item.*, + p.id as product_id, + p.name as product_name, + p.barcode as product_code, + p.category_id, + c.name as category_name, + l.id as location_id, + l.code as location_name, + w.name as warehouse_name, + w.code as warehouse_code, + w.contact_person as warehouse_contact_person, + w.contact_phone as warehouse_contact_phone, + w.province as warehouse_province, + w.city as warehouse_city, + w.district as warehouse_district, + w.address as warehouse_address, + so.so_no as sales_order_no, + oo.out_no as outbound_order_no, + ooi.unit_price, + so.created_at as sales_order_created_at, + so.sales_person_id, + so.association_order_id, + so.association_order_no, + soi.id as sales_order_item_id, + soi.created_at as so_item_created_at, + soi.receiver_name, + soi.receiver_phone, + soi.receiver_address, + soi.logistics_company, + soi.logistics_no`). + Joins("LEFT JOIN outbound_order_item ooi ON shipping_order_item.outbound_order_item_id = ooi.id AND ooi.is_del = 0"). + Joins("LEFT JOIN product p ON ooi.product_id = p.id AND p.is_del = 0"). + Joins("LEFT JOIN product_category c ON p.category_id = c.id AND c.is_del = 0"). + Joins("LEFT JOIN location l ON ooi.location_id = l.id AND l.is_del = 0"). + Joins("LEFT JOIN warehouse w ON l.warehouse_id = w.id AND w.is_del = 0"). + Joins("LEFT JOIN sales_order so ON ooi.sales_order_id = so.id AND so.is_del = 0"). + Joins("LEFT JOIN sales_order_item soi ON ooi.sales_order_id = soi.sales_order_id AND ooi.product_id = soi.product_id AND soi.is_del = 0"). + Joins("LEFT JOIN outbound_order oo ON ooi.out_order_id = oo.id AND oo.is_del = 0"). + Where("shipping_order_item.shipping_order_id = ? AND shipping_order_item.is_del = ?", order.ID, 0). + Order("l.sort ASC, l.id ASC"). + Find(&items) + + detailItems := make([]systemRes.ShippingOrderDetailItem, 0, len(items)) + for _, item := range items { + detailItems = append(detailItems, systemRes.ShippingOrderDetailItem{ + ID: item.ID, + ShippingOrderID: item.ShippingOrderID, + OutboundOrderItemID: item.OutboundOrderItemID, + SalesOrderItemID: item.SalesOrderItemID, + SalesOrderNo: item.SalesOrderNo, + OutboundOrderNo: item.OutboundOrderNo, + ProductID: item.ProductID, + ProductName: item.ProductName, + ProductCode: item.ProductCode, + CategoryID: item.CategoryID, + CategoryName: item.CategoryName, + LocationID: item.LocationID, + LocationName: item.LocationName, + WarehouseName: item.WarehouseName, + WarehouseCode: item.WarehouseCode, + WarehouseContactPerson: item.WarehouseContactPerson, + WarehouseContactPhone: item.WarehouseContactPhone, + WarehouseProvince: item.WarehouseProvince, + WarehouseCity: item.WarehouseCity, + WarehouseDistrict: item.WarehouseDistrict, + WarehouseAddress: item.WarehouseAddress, + Quantity: item.Quantity, + UnitPrice: item.UnitPrice, + SalesOrderCreatedAt: item.SalesOrderCreatedAt, + SalesPersonID: item.SalesPersonID, + AssociationOrderID: item.AssociationOrderID, + AssociationOrderNo: item.AssociationOrderNo, + SoItemCreatedAt: item.SoItemCreatedAt, + ReceiverName: item.ReceiverName, + ReceiverPhone: item.ReceiverPhone, + ReceiverAddress: item.ReceiverAddress, + LogisticsCompany: item.LogisticsCompany, + LogisticsNo: item.LogisticsNo, + }) + } + + detail := systemRes.ConvertShippingOrderToDetail(order.ShippingOrder, order.CustomerName, detailItems) + return &detail, nil +} diff --git a/service/shop.go b/service/shop.go new file mode 100644 index 0000000..08a3f21 --- /dev/null +++ b/service/shop.go @@ -0,0 +1,236 @@ +package service + +import ( + "errors" + "gorm.io/gorm" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "time" +) + +type ShopService struct{} + +func (s *ShopService) GetShopList(req systemReq.QueryShopRequest, db ...*gorm.DB) ([]systemRes.ShopResponse, int64, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.Shop{}).Where("del_flag = ?", 0) + + if req.Keyword != "" { + query = query.Where("shop_name like ? OR shop_alias_name like ? OR shop_nike like ?", + "%"+req.Keyword+"%", "%"+req.Keyword+"%", "%"+req.Keyword+"%") + } + + if req.ShopType != nil { + query = query.Where("shop_type = ?", *req.ShopType) + } + + if req.Status != nil { + query = query.Where("status = ?", *req.Status) + } + + if req.TenantID != "" { + query = query.Where("tenant_id = ?", req.TenantID) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, 0, errors.New("查询店铺总数失败") + } + + var shops []models.Shop + offset := (req.Page - 1) * req.PageSize + if err := query.Order("id DESC").Offset(offset).Limit(req.PageSize).Find(&shops).Error; err != nil { + return nil, 0, errors.New("查询店铺列表失败") + } + + responses := make([]systemRes.ShopResponse, 0, len(shops)) + for _, shop := range shops { + resp := systemRes.ConvertShopToResponse(shop) + responses = append(responses, resp) + } + + return responses, total, nil +} + +func (s *ShopService) GetShopByID(id int64, db ...*gorm.DB) (*systemRes.ShopResponse, error) { + databaseConn := database.OptionalDB(db...) + + var shop models.Shop + if err := databaseConn.Where("id = ? AND del_flag = ?", id, 0).First(&shop).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, errors.New("店铺不存在") + } + return nil, errors.New("查询店铺失败") + } + + resp := systemRes.ConvertShopToResponse(shop) + return &resp, nil +} + +func (s *ShopService) CreateShop(req systemReq.CreateShopRequest, db ...*gorm.DB) (int64, error) { + databaseConn := database.OptionalDB(db...) + + now := time.Now().Unix() + shop := models.Shop{ + MallID: req.MallID, + ShopType: req.ShopType, + ShopAliasName: req.ShopAliasName, + Status: 0, + DelFlag: 0, + CreateTime: now, + } + + if req.ShopType == 0 { + shop.ShopType = 1 + } + + if err := databaseConn.Create(&shop).Error; err != nil { + return 0, errors.New("创建店铺失败") + } + + return shop.ID, nil +} + +func (s *ShopService) UpdateShop(req systemReq.UpdateShopRequest, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + var shop models.Shop + if err := databaseConn.Where("id = ? AND del_flag = ?", req.ID, 0).First(&shop).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return errors.New("店铺不存在") + } + return errors.New("查询店铺失败") + } + + updates := make(map[string]interface{}) + updates["update_time"] = time.Now().Unix() + + if req.MallID != nil { + updates["mall_id"] = *req.MallID + } + + if req.ShopNike != "" { + updates["shop_nike"] = req.ShopNike + } + + if req.ShopType != nil { + updates["shop_type"] = *req.ShopType + } + + if req.ShopGroup != "" { + updates["shop_group"] = req.ShopGroup + } + + if req.ShopName != "" { + updates["shop_name"] = req.ShopName + } + + if req.ShopAliasName != "" { + updates["shop_alias_name"] = req.ShopAliasName + } + + if req.ShopAuthorize != "" { + updates["shop_authorize"] = req.ShopAuthorize + } + + if req.ExpirationTime != nil { + updates["expiration_time"] = *req.ExpirationTime + } + + if req.ShopKey != "" { + updates["shop_key"] = req.ShopKey + } + + if req.Token != "" { + updates["token"] = req.Token + } + + if req.RefreshToken != "" { + updates["refresh_token"] = req.RefreshToken + } + + if req.Status != nil { + updates["status"] = *req.Status + } + + if req.TenantID != "" { + updates["tenant_id"] = req.TenantID + } + + if req.UserID != nil { + updates["user_id"] = *req.UserID + } + + if req.Account != "" { + updates["account"] = req.Account + } + + if req.Password != "" { + updates["password"] = req.Password + } + + if req.IsSynOrder != nil { + updates["is_syn_order"] = *req.IsSynOrder + } + + if req.SkuSpec != "" { + updates["sku_spec"] = req.SkuSpec + } + + if req.ShopExpirationTime != nil { + updates["shop_expiration_time"] = *req.ShopExpirationTime + } + + if req.IsExpiration != nil { + updates["is_expiration"] = *req.IsExpiration + } + + if req.PublishType != nil { + updates["publish_type"] = *req.PublishType + } + + if req.Deregulation != nil { + updates["deregulation"] = *req.Deregulation + } + + if err := databaseConn.Model(&shop).Updates(updates).Error; err != nil { + return errors.New("更新店铺失败") + } + + return nil +} + +func (s *ShopService) DeleteShop(id int64, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + if id == 0 { + return errors.New("店铺ID不能为空") + } + + var shop models.Shop + if err := databaseConn.Where("id = ? AND del_flag = ?", id, 0).First(&shop).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return errors.New("店铺不存在") + } + return errors.New("查询店铺失败") + } + + now := time.Now().Unix() + if err := databaseConn.Model(&shop).Updates(map[string]interface{}{ + "del_flag": 1, + "update_time": now, + }).Error; err != nil { + return errors.New("删除店铺失败") + } + + return nil +} diff --git a/service/sorting_settings.go b/service/sorting_settings.go new file mode 100644 index 0000000..27101a0 --- /dev/null +++ b/service/sorting_settings.go @@ -0,0 +1,81 @@ +package service + +import ( + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + "time" + + "gorm.io/gorm" +) + +type SortingSettingsService struct{} + +// GetSortingSettings 获取分拣设置 +func (s *SortingSettingsService) GetSortingSettings(db ...*gorm.DB) *systemRes.SortingSettingsResponse { + databaseConn := database.OptionalDB(db...) + + var settings models.SortingSettings + + databaseConn.First(&settings) + + response := systemRes.ConvertSortingSettingsToResponse(settings) + return &response +} + +// SaveSortingSettings 保存分拣设置(新增或更新) +func (s *SortingSettingsService) SaveSortingSettings(req systemReq.SaveSortingSettingsRequest, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + now := time.Now().Unix() + + var settings models.SortingSettings + result := databaseConn.First(&settings) + + if result.Error == nil { + updateData := map[string]interface{}{ + "purchase_order_remark": req.PurchaseOrderRemark, + "classify_by_condition": req.ClassifyByCondition, + "wangdiantong_effect": req.WangdiantongEffect, + "warehouse_number": req.WarehouseNumber, + "shelf_store": req.ShelfStore, + "container": req.Container, + "capacity_weight": req.CapacityWeight, + "quick_picking": req.QuickPicking, + "block_hk_macau_taiwan": req.BlockHkMacauTaiwan, + "block_magazine": req.BlockMagazine, + "block_speed_install": req.BlockSpeedInstall, + "take_photo": req.TakePhoto, + "updated_at": now, + } + + if err := databaseConn.Model(&settings).Updates(updateData).Error; err != nil { + return utils.NewError("更新分拣设置失败: " + err.Error()) + } + } else { + settings := models.SortingSettings{ + PurchaseOrderRemark: req.PurchaseOrderRemark, + ClassifyByCondition: *req.ClassifyByCondition, + WangdiantongEffect: req.WangdiantongEffect, + WarehouseNumber: req.WarehouseNumber, + ShelfStore: req.ShelfStore, + Container: req.Container, + CapacityWeight: *req.CapacityWeight, + QuickPicking: *req.QuickPicking, + BlockHkMacauTaiwan: *req.BlockHkMacauTaiwan, + BlockMagazine: *req.BlockMagazine, + BlockSpeedInstall: *req.BlockSpeedInstall, + TakePhoto: *req.TakePhoto, + CreatedAt: now, + UpdatedAt: now, + } + + if err := databaseConn.Create(&settings).Error; err != nil { + return utils.NewError("创建分拣设置失败: " + err.Error()) + } + } + + return nil +} diff --git a/service/split_account_config.go b/service/split_account_config.go new file mode 100644 index 0000000..9d81037 --- /dev/null +++ b/service/split_account_config.go @@ -0,0 +1,173 @@ +package service + +import ( + "encoding/json" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + "time" + + "gorm.io/datatypes" + "gorm.io/gorm" +) + +type SplitAccountConfigService struct{} + +// GetSplitAccountConfigList 获取分账配置列表 +func (s *SplitAccountConfigService) GetSplitAccountConfigList(req systemReq.GetSplitAccountConfigListRequest, db ...*gorm.DB) (*systemRes.SplitAccountConfigListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.SplitAccountConfig{}).Where("deleted_at = ?", 0) + + if req.Status != "" { + query = query.Where("status = ?", req.Status) + } + if req.Keyword != "" { + query = query.Where("rule_name like ?", "%"+req.Keyword+"%") + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + var configs []models.SplitAccountConfig + offset := (req.Page - 1) * req.PageSize + if err := query.Order("created_at DESC").Offset(offset).Limit(req.PageSize).Find(&configs).Error; err != nil { + return nil, utils.NewError("查询分账配置列表失败") + } + + var configItems []systemRes.SplitAccountConfigItem + for _, config := range configs { + configItems = append(configItems, systemRes.ConvertSplitAccountConfigToItem(config)) + } + + return &systemRes.SplitAccountConfigListResponse{ + List: configItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetSplitAccountConfigDetail 获取分账配置详情 +func (s *SplitAccountConfigService) GetSplitAccountConfigDetail(id int64, db ...*gorm.DB) (*models.SplitAccountConfig, error) { + databaseConn := database.OptionalDB(db...) + + var config models.SplitAccountConfig + + result := databaseConn.Where("id = ? AND deleted_at = ?", id, 0).First(&config) + if result.Error != nil { + return nil, utils.NewError("分账配置不存在") + } + + return &config, nil +} + +// CreateSplitAccountConfig 创建分账配置 +func (s *SplitAccountConfigService) CreateSplitAccountConfig(req systemReq.AddSplitAccountConfigRequest, username string, db ...*gorm.DB) (int64, error) { + databaseConn := database.OptionalDB(db...) + + var ruleValue datatypes.JSON + if req.RuleValue != "" { + // 验证是否为合法JSON + var temp interface{} + if err := json.Unmarshal([]byte(req.RuleValue), &temp); err != nil { + return 0, utils.NewError("分账规则配置格式错误,不是合法的JSON") + } + ruleValue, _ = json.Marshal(temp) + } + + now := time.Now().Unix() + config := models.SplitAccountConfig{ + RuleName: req.RuleName, + RuleValue: ruleValue, + Status: req.Status, + Description: req.Description, + CreatedBy: username, + CreatedAt: now, + UpdatedAt: now, + DeletedAt: 0, + } + + if config.Status == 0 { + config.Status = 1 + } + + if err := databaseConn.Create(&config).Error; err != nil { + return 0, utils.NewError("创建分账配置失败: " + err.Error()) + } + + return config.ID, nil +} + +// UpdateSplitAccountConfig 更新分账配置 +func (s *SplitAccountConfigService) UpdateSplitAccountConfig(req systemReq.UpdateSplitAccountConfigRequest, username string, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + var config models.SplitAccountConfig + result := databaseConn.Where("id = ? AND deleted_at = ?", req.ID, 0).First(&config) + if result.Error != nil { + return utils.NewError("分账配置不存在") + } + + updateData := make(map[string]interface{}) + updateData["updated_at"] = time.Now().Unix() + updateData["updated_by"] = username + + if req.RuleName != "" { + updateData["rule_name"] = req.RuleName + } + if req.RuleValue != "" { + var temp interface{} + if err := json.Unmarshal([]byte(req.RuleValue), &temp); err != nil { + return utils.NewError("分账规则配置格式错误,不是合法的JSON") + } + ruleValue, _ := json.Marshal(temp) + updateData["rule_value"] = ruleValue + } + if req.Status >= 0 { + updateData["status"] = req.Status + } + if req.Description != "" { + updateData["description"] = req.Description + } + + if err := databaseConn.Model(&config).Updates(updateData).Error; err != nil { + return utils.NewError("更新分账配置失败: " + err.Error()) + } + + return nil +} + +// DeleteSplitAccountConfig 删除分账配置(软删除) +func (s *SplitAccountConfigService) DeleteSplitAccountConfig(req systemReq.DeleteSplitAccountConfigRequest, username string, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + var config models.SplitAccountConfig + result := databaseConn.Where("id = ? AND deleted_at = ?", req.ID, 0).First(&config) + if result.Error != nil { + return utils.NewError("分账配置不存在") + } + + updateData := map[string]interface{}{ + "deleted_at": time.Now().Unix(), + "updated_at": time.Now().Unix(), + "updated_by": username, + } + + if err := databaseConn.Model(&config).Updates(updateData).Error; err != nil { + return utils.NewError("删除分账配置失败: " + err.Error()) + } + + return nil +} diff --git a/service/split_account_deduction_log.go b/service/split_account_deduction_log.go new file mode 100644 index 0000000..f33877c --- /dev/null +++ b/service/split_account_deduction_log.go @@ -0,0 +1,179 @@ +package service + +import ( + "encoding/json" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + "time" + + "gorm.io/datatypes" + "gorm.io/gorm" +) + +type SplitAccountDeductionLogService struct{} + +// GetSplitAccountDeductionLogList 获取分账扣钱日志列表 +func (s *SplitAccountDeductionLogService) GetSplitAccountDeductionLogList(req systemReq.GetSplitAccountDeductionLogListRequest, db ...*gorm.DB) (*systemRes.SplitAccountDeductionLogListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.SplitAccountDeductionLog{}) + + if req.BusinessNo != "" { + query = query.Where("business_no like ?", "%"+req.BusinessNo+"%") + } + if req.ConfigID != "" { + query = query.Where("config_id = ?", req.ConfigID) + } + if req.StartCreatedAt != "" { + query = query.Where("created_at >= ?", req.StartCreatedAt) + } + if req.EndCreatedAt != "" { + query = query.Where("created_at <= ?", req.EndCreatedAt) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + var logs []models.SplitAccountDeductionLog + offset := (req.Page - 1) * req.PageSize + if err := query.Order("created_at DESC").Offset(offset).Limit(req.PageSize).Find(&logs).Error; err != nil { + return nil, utils.NewError("查询分账扣钱日志列表失败") + } + + var logItems []systemRes.SplitAccountDeductionLogItem + for _, log := range logs { + logItems = append(logItems, systemRes.ConvertSplitAccountDeductionLogToItem(log)) + } + + return &systemRes.SplitAccountDeductionLogListResponse{ + List: logItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetSplitAccountDeductionLogDetail 获取分账扣钱日志详情 +func (s *SplitAccountDeductionLogService) GetSplitAccountDeductionLogDetail(id int64, db ...*gorm.DB) (*models.SplitAccountDeductionLog, error) { + databaseConn := database.OptionalDB(db...) + + var log models.SplitAccountDeductionLog + + result := databaseConn.Where("id = ?", id).First(&log) + if result.Error != nil { + return nil, utils.NewError("分账扣钱日志不存在") + } + + return &log, nil +} + +// CreateSplitAccountDeductionLog 创建分账扣钱日志 +func (s *SplitAccountDeductionLogService) CreateSplitAccountDeductionLog(req systemReq.AddSplitAccountDeductionLogRequest, username string, db ...*gorm.DB) (int64, error) { + databaseConn := database.OptionalDB(db...) + + var deductionDetails datatypes.JSON + if req.DeductionDetails != "" { + var temp interface{} + if err := json.Unmarshal([]byte(req.DeductionDetails), &temp); err != nil { + return 0, utils.NewError("扣款规则格式错误,不是合法的JSON") + } + deductionDetails, _ = json.Marshal(temp) + } + + now := time.Now().Unix() + log := models.SplitAccountDeductionLog{ + BusinessNo: req.BusinessNo, + ConfigID: req.ConfigID, + ConfigName: req.ConfigName, + DeductionDetails: deductionDetails, + TotalAmount: req.TotalAmount, + DeductionAmount: req.DeductionAmount, + RemainingAmount: req.RemainingAmount, + CreatedBy: username, + CreatedAt: now, + UpdatedAt: now, + } + + if err := databaseConn.Create(&log).Error; err != nil { + return 0, utils.NewError("创建分账扣钱日志失败: " + err.Error()) + } + + return log.ID, nil +} + +// UpdateSplitAccountDeductionLog 更新分账扣钱日志 +func (s *SplitAccountDeductionLogService) UpdateSplitAccountDeductionLog(req systemReq.UpdateSplitAccountDeductionLogRequest, username string, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + var log models.SplitAccountDeductionLog + result := databaseConn.Where("id = ?", req.ID).First(&log) + if result.Error != nil { + return utils.NewError("分账扣钱日志不存在") + } + + updateData := make(map[string]interface{}) + updateData["updated_at"] = time.Now().Unix() + updateData["updated_by"] = username + + if req.BusinessNo != "" { + updateData["business_no"] = req.BusinessNo + } + if req.ConfigID > 0 { + updateData["config_id"] = req.ConfigID + } + if req.ConfigName != "" { + updateData["config_name"] = req.ConfigName + } + if req.DeductionDetails != "" { + var temp interface{} + if err := json.Unmarshal([]byte(req.DeductionDetails), &temp); err != nil { + return utils.NewError("扣款规则格式错误,不是合法的JSON") + } + deductionDetails, _ := json.Marshal(temp) + updateData["deduction_details"] = deductionDetails + } + if req.TotalAmount > 0 { + updateData["total_amount"] = req.TotalAmount + } + if req.DeductionAmount > 0 { + updateData["deduction_amount"] = req.DeductionAmount + } + if req.RemainingAmount > 0 { + updateData["remaining_amount"] = req.RemainingAmount + } + + if err := databaseConn.Model(&log).Updates(updateData).Error; err != nil { + return utils.NewError("更新分账扣钱日志失败: " + err.Error()) + } + + return nil +} + +// DeleteSplitAccountDeductionLog 删除分账扣钱日志 +func (s *SplitAccountDeductionLogService) DeleteSplitAccountDeductionLog(req systemReq.DeleteSplitAccountDeductionLogRequest, username string, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + var log models.SplitAccountDeductionLog + result := databaseConn.Where("id = ?", req.ID).First(&log) + if result.Error != nil { + return utils.NewError("分账扣钱日志不存在") + } + + if err := databaseConn.Delete(&log).Error; err != nil { + return utils.NewError("删除分账扣钱日志失败: " + err.Error()) + } + + return nil +} diff --git a/service/statist.go b/service/statist.go new file mode 100644 index 0000000..92e8fbb --- /dev/null +++ b/service/statist.go @@ -0,0 +1,228 @@ +package service + +import ( + "gorm.io/gorm" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + "time" +) + +type StatistService struct{} + +// DashboardStatist 获取仪表盘统计数据 +func (s *StatistService) DashboardStatist(req systemReq.DashboardStatistRequest, db ...*gorm.DB) (*systemRes.DashboardStatistResponse, error) { + databaseConn := database.OptionalDB(db...) + + // 计算今日的时间范围(如果未指定) + now := time.Now() + startOfDay := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()).Unix() + endOfDay := time.Date(now.Year(), now.Month(), now.Day(), 23, 59, 59, 0, now.Location()).Unix() + + if req.StartDate == 0 { + req.StartDate = startOfDay + } + if req.EndDate == 0 { + req.EndDate = endOfDay + } + + // 查询今日销售订单总数 + var totalSaleCount int64 + saleOrderQuery := databaseConn.Model(&models.SalesOrder{}). + Where("created_at >= ? AND created_at <= ? AND is_del = ?", req.StartDate, req.EndDate, 0) + saleOrderQuery.Count(&totalSaleCount) + + // 从 statist 表查询总入库和出库次数 + var totalReceivingCount, totalOutboundCount int64 + statistQuery := databaseConn.Model(&models.Statist{}). + Where("stat_date >= ? AND stat_date <= ? AND is_del = ?", req.StartDate, req.EndDate, 0) + + var statistList []models.Statist + if err := statistQuery.Find(&statistList).Error; err != nil { + return nil, utils.NewError("查询统计数据失败") + } + + if len(statistList) == 0 { + return &systemRes.DashboardStatistResponse{ + TotalReceivingCount: 0, + TotalOutboundCount: 0, + TotalSaleCount: totalSaleCount, + UserStats: []systemRes.UserStatItem{}, + }, nil + } + + for _, stat := range statistList { + totalReceivingCount += stat.ReceivingNum + totalOutboundCount += stat.OutboundNum + } + + // 查询个人统计数据 + var userStats []systemRes.UserStatItem + + // 按用户分组统计 + type UserStatGroup struct { + CreateBy int64 `gorm:"column:create_by"` + TotalReceiving int64 `gorm:"column:total_receiving"` + TotalOutbound int64 `gorm:"column:total_outbound"` + } + + var userStatGroups []UserStatGroup + databaseConn.Model(&models.Statist{}). + Select("create_by, SUM(receiving_num) as total_receiving, SUM(outbound_num) as total_outbound"). + Where("stat_date >= ? AND stat_date <= ? AND is_del = ?", req.StartDate, req.EndDate, 0). + Group("create_by"). + Scan(&userStatGroups) + + // 获取用户信息并构建返回数据 + for _, group := range userStatGroups { + var employee models.Employee + if err := database.DB.Where("id = ?", group.CreateBy).First(&employee).Error; err == nil { + userStats = append(userStats, systemRes.UserStatItem{ + UserID: employee.ID, + UserName: employee.Username, + ReceivingCount: group.TotalReceiving, + OutboundCount: group.TotalOutbound, + }) + } + } + + return &systemRes.DashboardStatistResponse{ + TotalReceivingCount: totalReceivingCount, + TotalOutboundCount: totalOutboundCount, + TotalSaleCount: totalSaleCount, + UserStats: userStats, + }, nil +} + +// GetWarehouseStatist 获取仓库统计数据 +func (s *StatistService) GetWarehouseStatist(req systemReq.WarehouseStatistRequest, db ...*gorm.DB) (*systemRes.WarehouseStatistResponse, error) { + databaseConn := database.OptionalDB(db...) + + now := time.Now() + startOfDay := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()).Unix() + endOfDay := time.Date(now.Year(), now.Month(), now.Day(), 23, 59, 59, 0, now.Location()).Unix() + yesterdayStart := time.Date(now.Year(), now.Month(), now.Day()-1, 0, 0, 0, 0, now.Location()).Unix() + yesterdayEnd := time.Date(now.Year(), now.Month(), now.Day()-1, 23, 59, 59, 0, now.Location()).Unix() + + if req.StartDate == 0 { + req.StartDate = startOfDay + } + if req.EndDate == 0 { + req.EndDate = endOfDay + } + + type WarehouseStat struct { + ProductTotal int64 `gorm:"column:product_total"` + InventoryTotal int64 `gorm:"column:inventory_total"` + } + + var warehouseStat WarehouseStat + databaseConn.Table("(?) as p", databaseConn.Model(&models.Product{}).Where("is_del = ?", 0).Select("COUNT(*) as product_total")). + Select(` + p.product_total, + COALESCE((SELECT SUM(quantity) FROM inventory WHERE is_del = ?), 0) as inventory_total + `, 0). + Scan(&warehouseStat) + + type DailyStat struct { + TodayInbound int64 `gorm:"column:today_inbound"` + TodayOutbound int64 `gorm:"column:today_outbound"` + YesterdayInbound int64 `gorm:"column:yesterday_inbound"` + YesterdayOutbound int64 `gorm:"column:yesterday_outbound"` + } + + var dailyStat DailyStat + databaseConn.Model(&models.Statist{}). + Select(` + COALESCE(SUM(CASE WHEN stat_date >= ? AND stat_date <= ? THEN receiving_num ELSE 0 END), 0) as today_inbound, + COALESCE(SUM(CASE WHEN stat_date >= ? AND stat_date <= ? THEN outbound_num ELSE 0 END), 0) as today_outbound, + COALESCE(SUM(CASE WHEN stat_date >= ? AND stat_date <= ? THEN receiving_num ELSE 0 END), 0) as yesterday_inbound, + COALESCE(SUM(CASE WHEN stat_date >= ? AND stat_date <= ? THEN outbound_num ELSE 0 END), 0) as yesterday_outbound + `, req.StartDate, req.EndDate, req.StartDate, req.EndDate, yesterdayStart, yesterdayEnd, yesterdayStart, yesterdayEnd). + Where("is_del = ?", 0). + Scan(&dailyStat) + + return &systemRes.WarehouseStatistResponse{ + ProductTotal: warehouseStat.ProductTotal, + InventoryTotal: warehouseStat.InventoryTotal, + TodayInbound: dailyStat.TodayInbound, + TodayOutbound: dailyStat.TodayOutbound, + YesterdayInbound: dailyStat.YesterdayInbound, + YesterdayOutbound: dailyStat.YesterdayOutbound, + }, nil +} + +// GetOrderStatist 获取订单统计数据 +func (s *StatistService) GetOrderStatist(req systemReq.OrderStatistRequest, db ...*gorm.DB) (*systemRes.OrderStatistResponse, error) { + databaseConn := database.OptionalDB(db...) + + now := time.Now() + startOfDay := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()).Unix() + endOfDay := time.Date(now.Year(), now.Month(), now.Day(), 23, 59, 59, 0, now.Location()).Unix() + yesterdayStart := time.Date(now.Year(), now.Month(), now.Day()-1, 0, 0, 0, 0, now.Location()).Unix() + yesterdayEnd := time.Date(now.Year(), now.Month(), now.Day()-1, 23, 59, 59, 0, now.Location()).Unix() + + if req.StartDate == 0 { + req.StartDate = startOfDay + } + if req.EndDate == 0 { + req.EndDate = endOfDay + } + + const ( + StatusDraft = 1 + StatusConfirmed = 2 + StatusShipped = 5 + StatusCancelled = 6 + ) + + type OrderDailyStat struct { + TodayQuantity int64 `gorm:"column:today_quantity"` + TodayAmount int64 `gorm:"column:today_amount"` + TodayShipped int64 `gorm:"column:today_shipped"` + TodayUnshipped int64 `gorm:"column:today_unshipped"` + TodayPending int64 `gorm:"column:today_pending"` + YesterdayQuantity int64 `gorm:"column:yesterday_quantity"` + YesterdayAmount int64 `gorm:"column:yesterday_amount"` + YesterdayShipped int64 `gorm:"column:yesterday_shipped"` + YesterdayUnshipped int64 `gorm:"column:yesterday_unshipped"` + YesterdayPending int64 `gorm:"column:yesterday_pending"` + } + + var orderStat OrderDailyStat + databaseConn.Model(&models.SalesOrder{}). + Select(` + COALESCE(SUM(CASE WHEN created_at >= ? AND created_at <= ? THEN 1 ELSE 0 END), 0) as today_quantity, + COALESCE(SUM(CASE WHEN created_at >= ? AND created_at <= ? THEN total_amount ELSE 0 END), 0) as today_amount, + COALESCE(SUM(CASE WHEN created_at >= ? AND created_at <= ? AND status = ? THEN 1 ELSE 0 END), 0) as today_shipped, + COALESCE(SUM(CASE WHEN created_at >= ? AND created_at <= ? AND status NOT IN (?, ?) THEN 1 ELSE 0 END), 0) as today_unshipped, + COALESCE(SUM(CASE WHEN created_at >= ? AND created_at <= ? AND status IN (?, ?) THEN 1 ELSE 0 END), 0) as today_pending, + COALESCE(SUM(CASE WHEN created_at >= ? AND created_at <= ? THEN 1 ELSE 0 END), 0) as yesterday_quantity, + COALESCE(SUM(CASE WHEN created_at >= ? AND created_at <= ? THEN total_amount ELSE 0 END), 0) as yesterday_amount, + COALESCE(SUM(CASE WHEN created_at >= ? AND created_at <= ? AND status = ? THEN 1 ELSE 0 END), 0) as yesterday_shipped, + COALESCE(SUM(CASE WHEN created_at >= ? AND created_at <= ? AND status NOT IN (?, ?) THEN 1 ELSE 0 END), 0) as yesterday_unshipped, + COALESCE(SUM(CASE WHEN created_at >= ? AND created_at <= ? AND status IN (?, ?) THEN 1 ELSE 0 END), 0) as yesterday_pending + `, req.StartDate, req.EndDate, req.StartDate, req.EndDate, req.StartDate, req.EndDate, StatusShipped, req.StartDate, req.EndDate, StatusShipped, StatusCancelled, req.StartDate, req.EndDate, StatusDraft, StatusConfirmed, + yesterdayStart, yesterdayEnd, yesterdayStart, yesterdayEnd, yesterdayStart, yesterdayEnd, StatusShipped, yesterdayStart, yesterdayEnd, StatusShipped, StatusCancelled, yesterdayStart, yesterdayEnd, StatusDraft, StatusConfirmed). + Where("is_del = ?", 0). + Scan(&orderStat) + + return &systemRes.OrderStatistResponse{ + Today: systemRes.OrderStatItem{ + Quantity: orderStat.TodayQuantity, + Amount: orderStat.TodayAmount, + Shipped: orderStat.TodayShipped, + Unshipped: orderStat.TodayUnshipped, + Pending: orderStat.TodayPending, + }, + Yesterday: systemRes.OrderStatItem{ + Quantity: orderStat.YesterdayQuantity, + Amount: orderStat.YesterdayAmount, + Shipped: orderStat.YesterdayShipped, + Unshipped: orderStat.YesterdayUnshipped, + Pending: orderStat.YesterdayPending, + }, + }, nil +} diff --git a/service/supplier.go b/service/supplier.go new file mode 100644 index 0000000..4a4074b --- /dev/null +++ b/service/supplier.go @@ -0,0 +1,175 @@ +package service + +import ( + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + "time" + + "gorm.io/gorm" +) + +type SupplierService struct{} + +// GetSupplierList 获取供应商列表 +func (s *SupplierService) GetSupplierList(req systemReq.GetSupplierListRequest, db ...*gorm.DB) (*systemRes.SupplierListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.Supplier{}).Where("is_del = ?", 0) + + if req.Status != "" { + query = query.Where("status = ?", req.Status) + } + if req.Keyword != "" { + query = query.Where("code like ? OR name like ?", "%"+req.Keyword+"%", "%"+req.Keyword+"%") + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + var suppliers []models.Supplier + offset := (req.Page - 1) * req.PageSize + if err := query.Order("created_at DESC").Offset(offset).Limit(req.PageSize).Find(&suppliers).Error; err != nil { + return nil, utils.NewError("查询供应商列表失败") + } + + var supplierItems []systemRes.SupplierItem + for _, supplier := range suppliers { + supplierItems = append(supplierItems, systemRes.ConvertSupplierToItem(supplier)) + } + + return &systemRes.SupplierListResponse{ + List: supplierItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetSupplierDetail 获取供应商详情 +func (s *SupplierService) GetSupplierDetail(id int64, db ...*gorm.DB) (*models.Supplier, error) { + databaseConn := database.OptionalDB(db...) + + var supplier models.Supplier + + result := databaseConn.Where("id = ? AND is_del = ?", id, 0).First(&supplier) + if result.Error != nil { + return nil, utils.NewError("供应商不存在") + } + + return &supplier, nil +} + +// CreateSupplier 创建供应商 +func (s *SupplierService) CreateSupplier(req systemReq.AddSupplierRequest, db ...*gorm.DB) (int64, error) { + databaseConn := database.OptionalDB(db...) + + var count int64 + databaseConn.Model(&models.Supplier{}).Where("code = ? AND is_del = ?", req.Code, 0).Count(&count) + if count > 0 { + return 0, utils.NewError("供应商编码已存在") + } + + now := time.Now().Unix() + supplier := models.Supplier{ + Code: req.Code, + Name: req.Name, + ContactPerson: req.ContactPerson, + ContactPhone: req.ContactPhone, + Address: req.Address, + Status: req.Status, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if supplier.Status == 0 { + supplier.Status = 1 + } + + if err := databaseConn.Create(&supplier).Error; err != nil { + return 0, utils.NewError("创建供应商失败: " + err.Error()) + } + + return supplier.ID, nil +} + +// UpdateSupplier 更新供应商 +func (s *SupplierService) UpdateSupplier(req systemReq.UpdateSupplierRequest, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + var supplier models.Supplier + result := databaseConn.Where("id = ? AND is_del = ?", req.ID, 0).First(&supplier) + if result.Error != nil { + return utils.NewError("供应商不存在") + } + + if req.Code != "" && req.Code != supplier.Code { + var count int64 + databaseConn.Model(&models.Supplier{}).Where("code = ? AND id != ? AND is_del = ?", req.Code, req.ID, 0).Count(&count) + if count > 0 { + return utils.NewError("供应商编码已存在") + } + } + + updateData := make(map[string]interface{}) + updateData["updated_at"] = time.Now().Unix() + + if req.Code != "" { + updateData["code"] = req.Code + } + if req.Name != "" { + updateData["name"] = req.Name + } + if req.ContactPerson != "" { + updateData["contact_person"] = req.ContactPerson + } + if req.ContactPhone != "" { + updateData["contact_phone"] = req.ContactPhone + } + if req.Address != "" { + updateData["address"] = req.Address + } + if req.Status >= 0 { + updateData["status"] = req.Status + } + + if err := databaseConn.Model(&supplier).Updates(updateData).Error; err != nil { + return utils.NewError("更新供应商失败: " + err.Error()) + } + + return nil +} + +// DeleteSupplier 删除供应商(逻辑删除) +func (s *SupplierService) DeleteSupplier(req systemReq.DeleteSupplierRequest, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + var supplier models.Supplier + result := databaseConn.Where("id = ? AND is_del = ?", req.ID, 0).First(&supplier) + if result.Error != nil { + return utils.NewError("供应商不存在") + } + + updateData := map[string]interface{}{ + "is_del": 1, + "updated_at": time.Now().Unix(), + } + + if err := databaseConn.Model(&supplier).Updates(updateData).Error; err != nil { + return utils.NewError("删除供应商失败: " + err.Error()) + } + + return nil +} diff --git a/service/user_type.go b/service/user_type.go new file mode 100644 index 0000000..ff82283 --- /dev/null +++ b/service/user_type.go @@ -0,0 +1,156 @@ +package service + +import ( + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" + "time" +) + +type UserTypeService struct{} + +// GetUserTypeList 获取用户类型列表 +func (s *UserTypeService) GetUserTypeList(req systemReq.GetUserTypeListRequest) (*systemRes.UserTypeListResponse, error) { + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := database.DB.Model(&models.UserType{}).Where("deleted_at = ?", 0) + + if req.Name != "" { + query = query.Where("name like ?", "%"+req.Name+"%") + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + var userTypes []models.UserType + offset := (req.Page - 1) * req.PageSize + if err := query.Order("created_at DESC").Offset(offset).Limit(req.PageSize).Find(&userTypes).Error; err != nil { + return nil, utils.NewError("查询用户类型列表失败") + } + + var userTypeItems []systemRes.UserTypeItem + for _, userType := range userTypes { + userTypeItems = append(userTypeItems, systemRes.ConvertUserTypeToItem(userType)) + } + + return &systemRes.UserTypeListResponse{ + List: userTypeItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetUserTypeDetail 获取用户类型详情 +func (s *UserTypeService) GetUserTypeDetail(id int64) (*models.UserType, error) { + var userType models.UserType + + result := database.DB.Where("id = ? AND deleted_at = ?", id, 0).First(&userType) + if result.Error != nil { + return nil, utils.NewError("用户类型不存在") + } + + return &userType, nil +} + +// CreateUserType 创建用户类型 +func (s *UserTypeService) CreateUserType(req systemReq.AddUserTypeRequest) (int64, error) { + var count int64 + database.DB.Model(&models.UserType{}).Where("name = ? AND deleted_at = ?", req.Name, 0).Count(&count) + if count > 0 { + return 0, utils.NewError("用户类型名称已存在") + } + + now := time.Now().Unix() + userType := models.UserType{ + CheckStatus: req.CheckStatus, + CheckCode: req.CheckCode, + CheckNum: req.CheckNum, + Name: req.Name, + Icon: req.Icon, + Remark: req.Remark, + CreatedAt: now, + UpdatedAt: now, + DeletedAt: 0, + } + + if err := database.DB.Create(&userType).Error; err != nil { + return 0, utils.NewError("创建用户类型失败: " + err.Error()) + } + + return userType.ID, nil +} + +// UpdateUserType 更新用户类型 +func (s *UserTypeService) UpdateUserType(req systemReq.UpdateUserTypeRequest) error { + var userType models.UserType + result := database.DB.Where("id = ? AND deleted_at = ?", req.ID, 0).First(&userType) + if result.Error != nil { + return utils.NewError("用户类型不存在") + } + + if req.Name != "" && req.Name != userType.Name { + var count int64 + database.DB.Model(&models.UserType{}).Where("name = ? AND id != ? AND deleted_at = ?", req.Name, req.ID, 0).Count(&count) + if count > 0 { + return utils.NewError("用户类型名称已存在") + } + } + + updateData := make(map[string]interface{}) + updateData["updated_at"] = time.Now().Unix() + + if req.CheckStatus != nil { + updateData["check_status"] = *req.CheckStatus + } + if req.CheckCode != nil { + updateData["check_code"] = *req.CheckCode + } + if req.CheckNum != nil { + updateData["check_num"] = *req.CheckNum + } + if req.Name != "" { + updateData["name"] = req.Name + } + if req.Icon != "" { + updateData["icon"] = req.Icon + } + if req.Remark != "" { + updateData["remark"] = req.Remark + } + + if err := database.DB.Model(&userType).Updates(updateData).Error; err != nil { + return utils.NewError("更新用户类型失败: " + err.Error()) + } + + return nil +} + +// DeleteUserType 删除用户类型(逻辑删除) +func (s *UserTypeService) DeleteUserType(req systemReq.DeleteUserTypeRequest) error { + var userType models.UserType + result := database.DB.Where("id = ? AND deleted_at = ?", req.ID, 0).First(&userType) + if result.Error != nil { + return utils.NewError("用户类型不存在") + } + + updateData := map[string]interface{}{ + "deleted_at": time.Now().Unix(), + "updated_at": time.Now().Unix(), + } + + if err := database.DB.Model(&userType).Updates(updateData).Error; err != nil { + return utils.NewError("删除用户类型失败: " + err.Error()) + } + + return nil +} diff --git a/service/warehouse.go b/service/warehouse.go new file mode 100644 index 0000000..9d92260 --- /dev/null +++ b/service/warehouse.go @@ -0,0 +1,711 @@ +package service + +import ( + "errors" + "fmt" + "github.com/xuri/excelize/v2" + "psi/config" + systemRes "psi/models/response" + "psi/utils" + "strconv" + "strings" + "time" + + "gorm.io/gorm" + "psi/database" + "psi/models" + systemReq "psi/models/request" +) + +type WarehouseService struct{} + +// GetWarehouseList 获取仓库列表 +func (s *WarehouseService) GetWarehouseList(req systemReq.QueryWarehouseRequest, db ...*gorm.DB) ([]systemRes.WarehouseResponse, int64, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.Warehouse{}).Where("is_del = ?", 0) + + if len(req.IDs) > 0 { + query = query.Where("id IN ?", req.IDs) + } + + if req.Keyword != "" { + query = query.Where("code like ? OR name like ?", "%"+req.Keyword+"%", "%"+req.Keyword+"%") + } + + if req.Type != nil { + query = query.Where("type = ?", *req.Type) + } + + if req.Status != nil { + query = query.Where("status = ?", *req.Status) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, 0, errors.New("查询仓库总数失败") + } + + var warehouses []models.Warehouse + offset := (req.Page - 1) * req.PageSize + if err := query.Order("id DESC").Offset(offset).Limit(req.PageSize).Find(&warehouses).Error; err != nil { + return nil, 0, errors.New("查询仓库列表失败") + } + + responses := make([]systemRes.WarehouseResponse, 0, len(warehouses)) + for _, wh := range warehouses { + resp := systemRes.ConvertWarehouseToResponse(wh) + responses = append(responses, resp) + } + + return responses, total, nil +} + +// GetWarehouseByID 获取仓库信息 +func (s *WarehouseService) GetWarehouseByID(id int64, db ...*gorm.DB) (*systemRes.WarehouseResponse, error) { + databaseConn := database.OptionalDB(db...) + + var warehouse models.Warehouse + if err := databaseConn.Where("id = ? AND is_del = ?", id, 0).First(&warehouse).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, errors.New("仓库不存在") + } + return nil, errors.New("查询仓库失败") + } + + resp := systemRes.ConvertWarehouseToResponse(warehouse) + return &resp, nil +} + +// CreateWarehouse 创建仓库 +func (s *WarehouseService) CreateWarehouse(req systemReq.CreateWarehouseRequest, aboutId int64, userName string, db ...*gorm.DB) (int64, error) { + databaseConn := database.OptionalDB(db...) + + var count int64 + databaseConn.Model(&models.Warehouse{}). + Where("code = ? AND is_del = ?", req.Code, 0). + Count(&count) + if count > 0 { + return 0, errors.New("仓库编码已存在") + } + + warehouse := models.Warehouse{ + LogisticsID: req.LogisticsID, + Code: req.Code, + Name: req.Name, + Type: req.Type, + ContactPerson: req.ContactPerson, + ContactPhone: req.ContactPhone, + Province: req.Province, + City: req.City, + District: req.District, + Address: req.Address, + Status: req.Status, + CreatedAt: time.Now().Unix(), + UpdatedAt: time.Now().Unix(), + IsDel: 0, + } + + if warehouse.Type == 0 { + warehouse.Type = 1 + } + if warehouse.Status == 0 { + warehouse.Status = 1 + } + + if err := databaseConn.Create(&warehouse).Error; err != nil { + return 0, errors.New("创建仓库失败") + } + + if err := s.SyncUserWarehouseMapping(aboutId, warehouse.ID, userName, req.Code, req.Name, "create"); err != nil { + return 0, errors.New("创建仓库映射关系失败") + } + + return warehouse.ID, nil +} + +// UpdateWarehouse 更新仓库 +func (s *WarehouseService) UpdateWarehouse(req systemReq.UpdateWarehouseRequest, aboutId int64, userName string, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + var warehouse models.Warehouse + if err := databaseConn.Where("id = ? AND is_del = ?", req.ID, 0).First(&warehouse).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return errors.New("仓库不存在") + } + return errors.New("查询仓库失败") + } + + updates := make(map[string]interface{}) + updates["updated_at"] = time.Now().Unix() + + if req.Name != "" { + updates["name"] = req.Name + } + + if req.Type >= 1 && req.Type <= 3 { + updates["type"] = req.Type + } + + if req.ContactPerson != "" { + updates["contact_person"] = req.ContactPerson + } + + if req.ContactPhone != "" { + updates["contact_phone"] = req.ContactPhone + } + if req.Province != "" { + updates["province"] = req.Province + } + + if req.City != "" { + updates["city"] = req.City + } + + if req.District != "" { + updates["district"] = req.District + } + + if req.Address != "" { + updates["address"] = req.Address + } + + if req.Status == 0 || req.Status == 1 { + updates["status"] = req.Status + } + + if req.LogisticsID > 0 { + updates["logistics_id"] = req.LogisticsID + } + + if err := databaseConn.Model(&warehouse).Updates(updates).Error; err != nil { + return errors.New("更新仓库失败") + } + + if err := s.SyncUserWarehouseMapping(aboutId, warehouse.ID, userName, warehouse.Code, utils.Ternary(req.Name == "", warehouse.Name, req.Name), "update"); err != nil { + return errors.New("更新仓库映射关系失败") + } + + return nil +} + +// DeleteWarehouse 删除仓库 +// aboutId: 用户ID +// userName: 用户名称 +// db: 数据库连接 +func (s *WarehouseService) DeleteWarehouse(id, aboutId int64, userName string, db ...*gorm.DB) error { + databaseConn := database.OptionalDB(db...) + + if id == 0 { + return errors.New("仓库ID不能为空") + } + + var warehouse models.Warehouse + if err := databaseConn.Where("id = ? AND is_del = ?", id, 0).First(&warehouse).Error; err != nil { + if err == gorm.ErrRecordNotFound { + return errors.New("仓库不存在") + } + return errors.New("查询仓库失败") + } + + var locationCount int64 + databaseConn.Model(&models.Location{}). + Where("warehouse_id = ? AND is_del = ?", id, 0). + Count(&locationCount) + if locationCount > 0 { + return errors.New("该仓库下存在库位,无法删除") + } + + // 执行真正的物理删除 + if err := databaseConn.Delete(&warehouse).Error; err != nil { + return errors.New("删除仓库失败") + } + + if err := s.SyncUserWarehouseMapping(aboutId, warehouse.ID, userName, warehouse.Code, warehouse.Name, "delete"); err != nil { + return errors.New("删除仓库映射关系失败") + } + + return nil +} + +// SyncUserWarehouseMapping 同步用户仓库映射关系 +// aboutID: 用户关联ID +// code: 仓库编码 +// name: 仓库名称 +// operation: 操作类型 create/update/delete +func (s *WarehouseService) SyncUserWarehouseMapping(aboutID, id int64, userName, code, name, operation string) error { + db := database.DB + + switch operation { + case "create", "update": + return s.upsertUserMapping(db, aboutID, id, userName, code, name) + case "delete": + return s.deleteUserMapping(db, aboutID, id) + default: + return nil + } +} + +// GetUserWarehouseMappings 获取用户的仓库映射列表 +func (s *WarehouseService) GetUserWarehouseMappings() ([]models.UserMapping, error) { + db := database.DB + + var mappings []models.UserMapping + err := db.Where("is_del = ?", 0). + Order("id DESC"). + Find(&mappings).Error + + return mappings, err +} + +// ExportLocations 导出库位数据 +func (s *LocationService) ExportLocations(req systemReq.ExportLocationRequest, db ...*gorm.DB) (*systemRes.ExportLocationResponse, error) { + databaseConn := database.OptionalDB(db...) + + query := databaseConn.Model(&models.Location{}). + Where("is_del = ?", 0) + + if req.WarehouseID > 0 { + query = query.Where("warehouse_id = ?", req.WarehouseID) + } + + if req.Type > 0 { + query = query.Where("type = ?", req.Type) + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询库位总数失败") + } + + if total == 0 { + return nil, fmt.Errorf("没有符合条件的库位数据") + } + + var locations []models.Location + if err := query.Order("warehouse_id ASC, code ASC").Find(&locations).Error; err != nil { + return nil, utils.NewError("查询库位数据失败") + } + + var warehouses []models.Warehouse + warehouseIDs := make([]int64, 0) + for _, loc := range locations { + warehouseIDs = append(warehouseIDs, loc.WarehouseID) + } + if len(warehouseIDs) > 0 { + databaseConn.Where("id IN ? AND is_del = ?", warehouseIDs, 0).Find(&warehouses) + } + + warehouseMap := make(map[int64]string) + for _, wh := range warehouses { + warehouseMap[wh.ID] = wh.Code + } + + f := excelize.NewFile() + defer func() { + if err := f.Close(); err != nil { + fmt.Printf("关闭Excel文件失败: %v\n", err) + } + }() + + sheetName := "库位列表" + index, _ := f.NewSheet(sheetName) + f.SetActiveSheet(index) + err := f.DeleteSheet("Sheet1") + if err != nil { + return nil, err + } + + headers := []string{ + "库位ID", + "仓库ID", + "仓库编码", + "库位编码", + "库位类型", + "容量", + "排序", + "状态", + "创建时间", + "更新时间", + } + + for i, header := range headers { + cell, _ := excelize.CoordinatesToCellName(i+1, 1) + err := f.SetCellValue(sheetName, cell, header) + if err != nil { + return nil, err + } + } + + headerStyle, _ := f.NewStyle(&excelize.Style{ + Font: &excelize.Font{ + Bold: true, + Size: 12, + }, + Alignment: &excelize.Alignment{ + Horizontal: "center", + Vertical: "center", + }, + Fill: excelize.Fill{ + Type: "pattern", + Color: []string{"#E0E0E0"}, + Pattern: 1, + }, + }) + err = f.SetCellStyle(sheetName, "A1", "J1", headerStyle) + if err != nil { + return nil, err + } + + typeMap := map[int8]string{ + 1: "存储库位", + 2: "拣货库位", + 3: "收货库位", + 4: "发货库位", + 5: "退货库位", + } + + statusMap := map[int8]string{ + 0: "禁用", + 1: "启用", + } + + for idx, location := range locations { + row := idx + 2 + + err := f.SetCellValue(sheetName, fmt.Sprintf("A%d", row), location.ID) + if err != nil { + return nil, err + } + err = f.SetCellValue(sheetName, fmt.Sprintf("B%d", row), location.WarehouseID) + if err != nil { + return nil, err + } + + warehouseCode := "" + if code, exists := warehouseMap[location.WarehouseID]; exists { + warehouseCode = code + } + err = f.SetCellValue(sheetName, fmt.Sprintf("C%d", row), warehouseCode) + if err != nil { + return nil, err + } + + err = f.SetCellValue(sheetName, fmt.Sprintf("D%d", row), location.Code) + if err != nil { + return nil, err + } + + typeStr := "未知" + if typeVal, exists := typeMap[location.Type]; exists { + typeStr = typeVal + } + err = f.SetCellValue(sheetName, fmt.Sprintf("E%d", row), typeStr) + if err != nil { + return nil, err + } + + err = f.SetCellValue(sheetName, fmt.Sprintf("F%d", row), location.Capacity) + if err != nil { + return nil, err + } + err = f.SetCellValue(sheetName, fmt.Sprintf("G%d", row), location.Sort) + if err != nil { + return nil, err + } + + statusStr := "未知" + if statusVal, exists := statusMap[location.Status]; exists { + statusStr = statusVal + } + err = f.SetCellValue(sheetName, fmt.Sprintf("H%d", row), statusStr) + if err != nil { + return nil, err + } + + createdAtStr := time.Unix(location.CreatedAt, 0).Format("2006-01-02 15:04:05") + err = f.SetCellValue(sheetName, fmt.Sprintf("I%d", row), createdAtStr) + if err != nil { + return nil, err + } + + updatedAtStr := time.Unix(location.UpdatedAt, 0).Format("2006-01-02 15:04:05") + err = f.SetCellValue(sheetName, fmt.Sprintf("J%d", row), updatedAtStr) + if err != nil { + return nil, err + } + } + + colWidths := map[string]float64{ + "A": 12, + "B": 12, + "C": 15, + "D": 20, + "E": 12, + "F": 12, + "G": 8, + "H": 10, + "I": 20, + "J": 20, + } + for col, width := range colWidths { + err := f.SetColWidth(sheetName, col, col, width) + if err != nil { + return nil, err + } + } + + now := time.Now() + fileName := fmt.Sprintf("location_export_%s.xlsx", now.Format("20060102150405")) + filePath := fmt.Sprintf("excel/%s", fileName) + + if err := f.SaveAs(filePath); err != nil { + return nil, fmt.Errorf("保存Excel文件失败: %v", err) + } + + return &systemRes.ExportLocationResponse{ + Total: total, + FileName: fileName, + FilePath: config.AppConfig.Server.Host + filePath, + }, nil +} + +// ImportLocationsFromCSV 导入库位数据 +func (s *LocationService) ImportLocationsFromCSV(req systemReq.ImportLocationRequest, filePath string, db ...*gorm.DB) (*systemRes.ImportLocationResult, error) { + databaseConn := database.OptionalDB(db...) + + result := &systemRes.ImportLocationResult{ + SuccessCodes: make([]string, 0), + FailCodes: make([]string, 0), + } + + var warehouse models.Warehouse + if err := databaseConn.Where("id = ? AND is_del = ?", req.WarehouseID, 0).First(&warehouse).Error; err != nil { + return result, errors.New("仓库不存在") + } + + f, err := excelize.OpenFile(filePath) + if err != nil { + return result, fmt.Errorf("打开Excel文件失败: %v", err) + } + defer func() { + if err := f.Close(); err != nil { + fmt.Printf("关闭Excel文件失败: %v\n", err) + } + }() + + sheetName := f.GetSheetName(0) + rows, err := f.GetRows(sheetName) + if err != nil { + return result, fmt.Errorf("读取表格数据失败: %v", err) + } + + if len(rows) < 2 { + return result, errors.New("文件中没有数据") + } + + now := time.Now().Unix() + successCount := 0 + failCount := 0 + + for i, row := range rows { + if i == 0 { + continue + } + + if len(row) < 6 { + failCount++ + result.FailCodes = append(result.FailCodes, fmt.Sprintf("第%d行: 列数不足", i+1)) + continue + } + + code := strings.TrimSpace(row[3]) + if code == "" { + failCount++ + result.FailCodes = append(result.FailCodes, fmt.Sprintf("第%d行: 库位编码为空", i+1)) + continue + } + + typeStr := strings.TrimSpace(row[4]) + capacityStr := strings.TrimSpace(row[5]) + sortStr := "" + if len(row) > 6 { + sortStr = strings.TrimSpace(row[6]) + } + statusStr := "" + if len(row) > 7 { + statusStr = strings.TrimSpace(row[7]) + } + + var locType int8 = 1 + if typeStr != "" { + typeMap := map[string]int8{ + "存储库位": 1, + "拣货库位": 2, + "收货库位": 3, + "发货库位": 4, + "退货库位": 5, + "1": 1, + "2": 2, + "3": 3, + "4": 4, + "5": 5, + } + if val, exists := typeMap[typeStr]; exists { + locType = val + } else { + failCount++ + result.FailCodes = append(result.FailCodes, fmt.Sprintf("%s: 库位类型无效", code)) + continue + } + } + + var capacity int64 = 0 + if capacityStr != "" { + if capVal, err := strconv.ParseInt(capacityStr, 10, 64); err == nil { + capacity = capVal + } + } + + var sort int = 0 + if sortStr != "" { + if sortVal, err := strconv.Atoi(sortStr); err == nil { + sort = sortVal + } + } + + var status int8 = 1 + if statusStr != "" { + statusMap := map[string]int8{ + "启用": 1, + "禁用": 0, + "1": 1, + "0": 0, + } + if val, exists := statusMap[statusStr]; exists { + status = val + } + } + + var existingLocation models.Location + err := databaseConn.Where("warehouse_id = ? AND code = ?", req.WarehouseID, code).First(&existingLocation).Error + + if err == nil { + if existingLocation.IsDel == 1 { + existingLocation.IsDel = 0 + existingLocation.Type = locType + existingLocation.Capacity = capacity + existingLocation.Sort = sort + existingLocation.Status = status + existingLocation.UpdatedAt = now + + if updateErr := databaseConn.Save(&existingLocation).Error; updateErr != nil { + failCount++ + result.FailCodes = append(result.FailCodes, fmt.Sprintf("%s: 恢复库位失败", code)) + continue + } + successCount++ + result.SuccessCodes = append(result.SuccessCodes, code) + } else { + failCount++ + result.FailCodes = append(result.FailCodes, fmt.Sprintf("%s: 已存在", code)) + continue + } + } else if err == gorm.ErrRecordNotFound { + location := models.Location{ + WarehouseID: req.WarehouseID, + Code: code, + Type: locType, + Capacity: capacity, + Sort: sort, + Status: status, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + + if createErr := databaseConn.Create(&location).Error; createErr != nil { + failCount++ + result.FailCodes = append(result.FailCodes, fmt.Sprintf("%s: 创建失败", code)) + continue + } + + successCount++ + result.SuccessCodes = append(result.SuccessCodes, code) + } else { + failCount++ + result.FailCodes = append(result.FailCodes, fmt.Sprintf("%s: 查询失败", code)) + continue + } + } + + result.SuccessCount = successCount + result.FailCount = failCount + + if failCount > 0 { + result.Message = fmt.Sprintf("导入完成:成功%d个,失败%d个", successCount, failCount) + } else { + result.Message = fmt.Sprintf("导入完成:全部成功,共%d个", successCount) + } + + return result, nil +} + +// =============== 私有方法 =============== + +// upsertUserMapping 插入或更新用户映射(保证 about_id + code 唯一) +// db: 数据库连接 +// aboutID: 用户关联ID +// id: 仓库ID +// userName: 用户名称 +func (s *WarehouseService) upsertUserMapping(db *gorm.DB, aboutID, id int64, userName, code, name string) error { + now := time.Now().Unix() + + var existing models.UserMapping + err := db.Where("about_id = ? AND warehouse_id = ? AND is_del = ?", aboutID, id, 0).First(&existing).Error + + if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { + return err + } + + if errors.Is(err, gorm.ErrRecordNotFound) { + // 不存在则创建 + mapping := models.UserMapping{ + AboutID: aboutID, + Username: userName, + WarehouseId: id, + WarehouseCode: code, + WarehouseName: name, + CreatedAt: now, + UpdatedAt: now, + IsDel: 0, + } + return db.Create(&mapping).Error + } + + // 存在则更新 + return db.Model(&existing).Updates(map[string]interface{}{ + "warehouse_name": name, + "warehouse_code": code, + "updated_at": now, + }).Error +} + +// deleteUserMapping 删除用户映射(软删除) +func (s *WarehouseService) deleteUserMapping(db *gorm.DB, aboutID, id int64) error { + now := time.Now().Unix() + + return db.Model(&models.UserMapping{}). + Where("about_id = ? AND warehouse_id = ? AND is_del = ?", aboutID, id, 0). + Updates(map[string]interface{}{ + "is_del": 1, + "updated_at": now, + }).Error +} diff --git a/service/wave.go b/service/wave.go new file mode 100644 index 0000000..a068a63 --- /dev/null +++ b/service/wave.go @@ -0,0 +1,193 @@ +package service + +import ( + "encoding/json" + "fmt" + + "gorm.io/gorm" + "psi/database" + "psi/models" + systemReq "psi/models/request" + systemRes "psi/models/response" + "psi/utils" +) + +type WaveService struct{} + +// GetWaveTaskList 获取波次任务列表 +func (s *WaveService) GetWaveTaskList(req systemReq.GetWaveTaskListRequest, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.WaveTaskListResponse, error) { + databaseConn := database.OptionalDB(db...) + + if req.Page < 1 { + req.Page = 1 + } + if req.PageSize < 1 || req.PageSize > 100 { + req.PageSize = 20 + } + + query := databaseConn.Model(&models.WaveTask{}).Where("wave_task.is_del = ?", 0) + + if req.AssigneeID > 0 { + query = query.Joins("INNER JOIN wave_header wh ON wave_task.wave_id = wh.id AND wh.is_del = 0"). + Where("wave_task.assignee_id = ?", creatorID) + } else if req.AssigneeID == 0 { + query = query.Joins("INNER JOIN wave_header wh ON wave_task.wave_id = wh.id AND wh.is_del = 0") + } + //else { + // if req.AssigneeID > 0 { + // query = query.Where("wave_task.assignee_id = ?", req.AssigneeID) + // } + // query = query.Joins("LEFT JOIN wave_header wh ON wave_task.wave_id = wh.id AND wh.is_del = 0") + //} + + if req.TaskNo != "" { + query = query.Where("wave_task.task_no = ?", req.TaskNo) + } + if req.TaskType > 0 { + query = query.Where("wave_task.type = ?", req.TaskType) + } + if req.Status > 0 { + query = query.Where("wave_task.status = ?", req.Status) + } + if req.WaveNo != "" { + query = query.Where("wh.wave_no LIKE ?", "%"+req.WaveNo+"%") + } + + var total int64 + if err := query.Count(&total).Error; err != nil { + return nil, utils.NewError("查询总数失败") + } + + // 打印SQL调试 + sqlStmt := query.Session(&gorm.Session{DryRun: true}).Find(&[]models.WaveTask{}).Statement + fmt.Println("Generated SQL:", sqlStmt.SQL.String(), "Vars:", sqlStmt.Vars) + + // 打印total + fmt.Println("Total:", total) + + if total == 0 { + return &systemRes.WaveTaskListResponse{ + List: []systemRes.WaveTaskItem{}, + Total: 0, + Page: req.Page, + PageSize: req.PageSize, + }, nil + } + + var tasks []systemRes.TaskWithWave + offset := (req.Page - 1) * req.PageSize + + batchSubQuery := databaseConn.Model(&models.WaveTaskDetail{}). + Select("wave_task_id, MAX(batch_no) as wave_task_batch_no"). + Where("is_del = ?", 0). + Group("wave_task_id") + + // 打印组装后的SQL + dryQuery := query.Session(&gorm.Session{DryRun: true}). + Select("wave_task.*, wh.wave_no,wh.related_order_id as out_order_id, r.id as receiving_order_id, d.wave_task_batch_no"). + Joins("LEFT JOIN receiving_order r ON r.wave_task_id = wave_task.id AND r.is_del = 0"). + Joins("LEFT JOIN (?) d ON d.wave_task_id = wave_task.id", batchSubQuery). + Order("wave_task.created_at DESC"). + Offset(offset). + Limit(req.PageSize). + Find(&tasks) + fmt.Printf("[GetWaveTaskList] SQL: %s | Vars: %v\n", dryQuery.Statement.SQL.String(), dryQuery.Statement.Vars) + + if err := query.Select("wave_task.*, wh.wave_no,wh.related_order_id as out_order_id, r.id as receiving_order_id, d.wave_task_batch_no"). + Joins("LEFT JOIN receiving_order r ON r.wave_task_id = wave_task.id AND r.is_del = 0"). + Joins("LEFT JOIN (?) d ON d.wave_task_id = wave_task.id", batchSubQuery). + Order("wave_task.created_at DESC"). + Offset(offset). + Limit(req.PageSize). + Find(&tasks).Error; err != nil { + return nil, utils.NewError("查询波次任务列表失败") + } + + taskItems := make([]systemRes.WaveTaskItem, 0, len(tasks)) + for _, task := range tasks { + taskItems = append(taskItems, systemRes.ConvertWaveTaskToItem(task.WaveTask, task.WaveNo, task.OutOrderId, task.ReceivingOrderId, task.BatchNo)) + } + + return &systemRes.WaveTaskListResponse{ + List: taskItems, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// GetWaveTaskDetail 获取波次任务详情 +func (s *WaveService) GetWaveTaskDetail(id int64, creatorID int64, role int64, db ...*gorm.DB) (*systemRes.WaveTaskDetailResponse, error) { + databaseConn := database.OptionalDB(db...) + + query := databaseConn.Model(&models.WaveTask{}). + Where("wave_task.id = ? AND wave_task.is_del = ?", id, 0) + + if role == 128 { + query = query.Joins("INNER JOIN wave_header wh ON wave_task.wave_id = wh.id AND wh.is_del = 0"). + Where("wh.creator_id = ?", creatorID) + } + + var task models.WaveTask + result := query.First(&task) + if result.Error != nil { + return nil, utils.NewError("波次任务不存在") + } + + var wave models.WaveHeader + databaseConn.Where("id = ? AND is_del = ?", task.WaveID, 0).First(&wave) + + var details []systemRes.DetailWithInfo + detailQuery := databaseConn.Model(&models.WaveTaskDetail{}). + Select("wave_task_detail.*, p.name as product_name, p.barcode as product_code, p.sale_price, p.live_image, l.code as location_code"). + Joins("LEFT JOIN product p ON wave_task_detail.product_id = p.id AND p.is_del = 0"). + Joins("LEFT JOIN location l ON wave_task_detail.location_id = l.id AND l.is_del = 0"). + Where("wave_task_detail.wave_task_id = ? AND wave_task_detail.is_del = ?", task.ID, 0) + + // 打印SQL调试 + sqlStmt := detailQuery.Session(&gorm.Session{DryRun: true}).Find(&[]systemRes.DetailWithInfo{}).Statement + fmt.Println("Generated SQL:", sqlStmt.SQL.String(), "Vars:", sqlStmt.Vars) + + detailQuery.Find(&details) + + detailItems := make([]systemRes.WaveTaskDetailItem, 0, len(details)) + for _, detail := range details { + var liveImage []string + if len(detail.LiveImage) > 0 { + json.Unmarshal(detail.LiveImage, &liveImage) + } + detailItems = append(detailItems, systemRes.WaveTaskDetailItem{ + ID: detail.ID, + WaveTaskID: detail.WaveTaskID, + ProductID: detail.ProductID, + ProductName: detail.ProductName, + ProductCode: detail.ProductCode, + SalePrice: detail.SalePrice, + LiveImage: liveImage, + LocationID: detail.LocationID, + LocationCode: detail.LocationCode, + BatchNo: detail.BatchNo, + PlannedQuantity: detail.PlannedQuantity, + ActualQuantity: detail.ActualQuantity, + Status: detail.Status, + StatusText: systemRes.GetWaveTaskDetailStatusText(detail.Status), + CreatedAt: detail.CreatedAt, + UpdatedAt: detail.UpdatedAt, + }) + } + + detailResponse := systemRes.ConvertWaveTaskToDetail(task, wave.WaveNo, detailItems) + return &detailResponse, nil +} + +// GetWaveStatusById 根据波次ID获取波次任务状态 +func (s *WaveService) GetWaveStatusById(id int64, db ...*gorm.DB) (*models.WaveTask, error) { + databaseConn := database.OptionalDB(db...) + + var waveTask models.WaveTask + if err := databaseConn.Where("wave_id = ? AND is_del = ?", id, 0).First(&waveTask).Error; err != nil { + return nil, utils.NewError("波次任务不存在") + } + + return &waveTask, nil +} diff --git a/sql.txt b/sql.txt new file mode 100644 index 0000000..82f2fcb --- /dev/null +++ b/sql.txt @@ -0,0 +1,58 @@ +-- 创建分账配置表 +CREATE TABLE `split_account_config` ( + `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `rule_name` VARCHAR(200) NOT NULL COMMENT '分账规则配置名称', + `rule_value` JSON NOT NULL COMMENT '分账规则配置(JSON格式)', + `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-启用', + `description` VARCHAR(500) DEFAULT NULL COMMENT '配置描述', + `created_by` VARCHAR(100) DEFAULT NULL COMMENT '创建人', + `updated_by` VARCHAR(100) DEFAULT NULL COMMENT '更新人', + `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted_at` TIMESTAMP NULL DEFAULT NULL COMMENT '软删除时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分账配置表'; +-- 创建分账扣钱日志表 +CREATE TABLE `split_account_deduction_log` ( + `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '日志ID', + `business_no` VARCHAR(64) NOT NULL COMMENT '订单号', + `config_id` BIGINT UNSIGNED NOT NULL COMMENT '分账配置ID', + `config_name` VARCHAR(200) NOT NULL COMMENT '分账配置名称', + `deduction_details` JSON NOT NULL COMMENT '扣款规则(JSON数组)', + `total_amount` DECIMAL(15,2) NOT NULL COMMENT '总金额(分账前)', + `deduction_amount` DECIMAL(15,2) NOT NULL COMMENT '扣款总金额', + `remaining_amount` DECIMAL(15,2) NOT NULL COMMENT '剩余金额(分账后)', + `created_by` VARCHAR(100) NOT NULL COMMENT '创建人/系统', + `updated_by` VARCHAR(100) COMMENT '更新人', + `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci + COMMENT='分账扣钱日志表'; +CREATE TABLE `outbound_order_location_log` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '记录ID', + `out_order_id` BIGINT NOT NULL DEFAULT 0 COMMENT '出库单ID', + `out_order_item_id` BIGINT NOT NULL DEFAULT 0 COMMENT '出库单明细ID', + `product_id` BIGINT NOT NULL DEFAULT 0 COMMENT '商品ID', + `old_location_id` BIGINT NOT NULL DEFAULT 0 COMMENT '原库位ID', + `new_location_id` BIGINT NOT NULL DEFAULT 0 COMMENT '新库位ID', + `batch_no` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '批次号', + `operator` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '操作员', + `operator_id` BIGINT NOT NULL DEFAULT 0 COMMENT '操作员ID', + `remark` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '备注', + `created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间戳(秒)', + PRIMARY KEY (`id`), + INDEX `idx_outbound_order_location_log_out_order_id` (`out_order_id`), + INDEX `idx_outbound_order_location_log_out_order_item_id` (`out_order_item_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='出库单库位变更记录表'; +ALTER TABLE sales_order ADD COLUMN is_distribution TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否分销 0-正常 1-分销'; +CREATE TABLE `config` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '配置ID', + `key` varchar(200) NOT NULL DEFAULT '' COMMENT '配置键', + `value` text COMMENT '配置值', + `created_at` bigint DEFAULT '0' COMMENT '创建时间戳(秒)', + `updated_at` bigint DEFAULT '0' COMMENT '更新时间戳(秒)', + `is_del` tinyint(1) DEFAULT '0' COMMENT '逻辑删除标记(0:未删除,1:已删除)', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_key` (`key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配置表'; diff --git a/template/task_template_product.xlsx b/template/task_template_product.xlsx new file mode 100644 index 0000000..d83b1a1 Binary files /dev/null and b/template/task_template_product.xlsx differ diff --git a/utils/crypto.go b/utils/crypto.go new file mode 100644 index 0000000..61158e7 --- /dev/null +++ b/utils/crypto.go @@ -0,0 +1,21 @@ +package utils + +import ( + "golang.org/x/crypto/bcrypt" +) + +// HashPassword 密码哈希 +func HashPassword(password string) (string, error) { + // 哈希密码 + bytes, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) + // 返回 哈希密码, 错误 + return string(bytes), err +} + +// CheckPasswordHash 验证密码 +func CheckPasswordHash(password, hash string) bool { + // 验证密码 + err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) + // 返回验证结果 + return err == nil +} diff --git a/utils/error.go b/utils/error.go new file mode 100644 index 0000000..66ab5af --- /dev/null +++ b/utils/error.go @@ -0,0 +1,11 @@ +package utils + +import "errors" + +// NewError 创建新的错误 +func NewError(message string) error { + return errors.New(message) +} + +// ErrNoAvailableLocation 无可用库位 +var ErrNoAvailableLocation = errors.New("未找到该商品在同一仓库下的可用库位,请检查库存") diff --git a/utils/helper.go b/utils/helper.go new file mode 100644 index 0000000..a514d29 --- /dev/null +++ b/utils/helper.go @@ -0,0 +1,284 @@ +package utils + +import ( + "bytes" + "crypto/md5" + "encoding/hex" + "fmt" + "github.com/gin-gonic/gin" + "io" + "math/rand" + "mime/multipart" + "net/http" + "sort" + "strings" + "time" +) + +// GenerateEmployeeID 生成工号 (5位数字,不足补零) +func GenerateEmployeeID(seq int) string { + return fmt.Sprintf("%05d", seq) +} + +// GenerateUsername 生成用户名 (init_工号) +func GenerateUsername(employeeID string) string { + return "dl_" + employeeID +} + +// GeneratePoNo 生成采购单号: PO + 年月日时分秒 + 随机数 +func GeneratePoNo() string { + return fmt.Sprintf("PO%s%04d", time.Now().Format("20060102150405"), GenerateRandomNumber(4)) +} + +// GenerateTaskNo 生成任务编号: TK + 年月日时分秒 + 随机数 +func GenerateTaskNo() string { + return fmt.Sprintf("TK%s%04d", time.Now().Format("20060102150405"), GenerateRandomNumber(4)) +} + +// GenerateTaskDetailNo 生成批次号: TD + 年月日时分秒 + 随机数 +func GenerateTaskDetailNo() string { + return fmt.Sprintf("TD%s%04d", time.Now().Format("20060102150405"), GenerateRandomNumber(4)) +} + +// GenerateExcelImportBatchNo 生成Excel表格入库批次号: TE(TableExcel) + 年月日时分秒 + 随机数 +func GenerateExcelImportBatchNo() string { + return fmt.Sprintf("TE%s%04d", time.Now().Format("20060102150405"), GenerateRandomNumber(4)) +} + +// GenerateReceivingNo 生成入库单号: RC + 年月日时分秒 + 随机数 +func GenerateReceivingNo() string { + return fmt.Sprintf("RC%s%04d", time.Now().Format("20060102150405"), GenerateRandomNumber(4)) +} + +// GenerateSalesNo 生成销售单号: SO + 年月日时分秒 + 随机数 +func GenerateSalesNo() string { + return fmt.Sprintf("SO%s%04d", time.Now().Format("20060102150405"), GenerateRandomNumber(4)) +} + +// GenerateShippingNo 生成发货单号: SH + 年月日时分秒 + 随机数 +func GenerateShippingNo() string { + return fmt.Sprintf("SH%s%04d", time.Now().Format("20060102150405"), GenerateRandomNumber(4)) +} + +// GenerateStockCheckNo 生成盘库调整单号: SC + 年月日时分秒 + 随机数 +func GenerateStockCheckNo() string { + return fmt.Sprintf("SC%s%04d", time.Now().Format("20060102150405"), GenerateRandomNumber(4)) +} + +// GenerateReturnNo 生成退货单号: RT + 年月日时分秒 + 随机数 +func GenerateReturnNo() string { + return fmt.Sprintf("RT%s%04d", time.Now().Format("20060102150405"), GenerateRandomNumber(4)) +} + +// GenerateOutNo 生成出库单号: OB + 年月日时分秒 + 随机数 +func GenerateOutNo() string { + return fmt.Sprintf("OB%s%04d", time.Now().Format("20060102150405"), GenerateRandomNumber(4)) +} + +// GenerateRandomNumber 生成指定位数的随机数字 +func GenerateRandomNumber(digits int) int { + if digits <= 0 { + return 0 + } + + end := 1 + for i := 0; i < digits; i++ { + end *= 10 + } + + return rand.Intn(end) +} + +// ParsePublicationTime 支持的格式:"2013-12", "2013", "2013-12-25", "2013 年 12 月" 等 +func ParsePublicationTime(timeStr string) int64 { + if timeStr == "" { + return 0 + } + + // 清理字符串中的空格和特殊字符 + timeStr = strings.TrimSpace(timeStr) + timeStr = strings.ReplaceAll(timeStr, "年", "-") + timeStr = strings.ReplaceAll(timeStr, "月", "") + timeStr = strings.TrimSpace(timeStr) + + // 定义多种可能的日期格式 + formats := []string{ + "2006-1", // "2013-12" + "2006-01", // "2013-12" (补零) + "2006", // "2013" + "2006-1-2", // "2013-12-25" + "2006-01-02", // "2013-12-25" (补零) + } + + var t time.Time + var err error + + for _, format := range formats { + t, err = time.ParseInLocation(format, timeStr, time.Local) + if err == nil { + break + } + } + + // 如果所有格式都失败,返回 0 + if err != nil { + fmt.Printf("出版时间解析失败:%s\n", timeStr) + return 0 + } + + return t.Unix() +} + +// GetClientIP 获取客户端IP +func GetClientIP(c *gin.Context) string { + ip := c.ClientIP() + if ip == "::1" { + ip = "127.0.0.1" + } + return ip +} + +type UserInfo struct { + ID int64 + Role int64 + Username string + AboutID int64 + Fid int64 +} + +func GetUserInfo(c *gin.Context) UserInfo { + return UserInfo{ + ID: c.GetInt64("id"), + Role: c.GetInt64("role"), + Username: c.GetString("username"), + AboutID: c.GetInt64("about_id"), + Fid: c.GetInt64("fid"), + } +} + +func Ternary[T any](condition bool, trueVal, falseVal T) T { + if condition { + return trueVal + } + return falseVal +} + +// SignParams 对请求参数进行MD5签名,用于接口安全校验 +// 参数 params: 待签名的原始参数键值对 +// 返回值: 计算出的签名字符串(大写MD5) +func SignParams(params map[string]string) string { + // 定义签名密钥(实际使用中应从配置或环境变量获取,避免硬编码) + SecretKey := "jRQdCh52Z55Kzh1hADaA2ZtdTKetj2PXk60Tz5Yc0iz9aD8Wafbk7CwAZ8cz69A9zb9caZ3k9dnR3Ys06J5nYFPrZ0xE9p6TY8DCD538ryiRjW81YTPmk41tCEnXizPh" + + // 创建过滤后的参数映射表,用于存放需要参与签名的参数 + filteredParams := make(map[string]string) + // 遍历原始参数,过滤掉空值、sign字段和sign_type字段 + for k, v := range params { + // 如果参数值不为空,且参数名不是sign,且参数名不是sign_type,则保留 + if v != "" && k != "sign" && k != "sign_type" { + filteredParams[k] = v + } + } + + // 提取过滤后参数的所有键名,用于排序 + keys := make([]string, 0, len(filteredParams)) + for k := range filteredParams { + keys = append(keys, k) + } + // 对键名进行字典序排序(保证签名结果的一致性) + sort.Strings(keys) + + // 使用strings.Builder高效拼接字符串 + var builder strings.Builder + // 遍历排序后的键名,按"key=value"格式拼接,并用"&"连接 + for i, k := range keys { + // 从第二个参数开始,前面添加"&"分隔符 + if i > 0 { + builder.WriteString("&") + } + builder.WriteString(k) // 写入参数名 + builder.WriteString("=") // 写入等号 + builder.WriteString(filteredParams[k]) // 写入参数值 + } + + // 将拼接好的参数字符串末尾加上"&key=密钥",形成待签名字符串 + signStr := builder.String() + "&key=" + SecretKey + // 计算待签名字符串的MD5哈希值 + hash := md5.Sum([]byte(signStr)) + // 将哈希结果转换为十六进制字符串,并转为大写形式返回 + return strings.ToUpper(hex.EncodeToString(hash[:])) +} + +// SubmitMultiBody 发送多个 body 字段 +func SubmitMultiBody(url string, taskID string, bodyList []string, sign string) (string, error) { + body := &bytes.Buffer{} + writer := multipart.NewWriter(body) + + // 发送多个独立 body(业务用) + for _, b := range bodyList { + _ = writer.WriteField("body", b) + } + + _ = writer.WriteField("task_id", taskID) + _ = writer.WriteField("sign", sign) + writer.Close() + + req, _ := http.NewRequest("POST", url, body) + req.Header.Set("Content-Type", writer.FormDataContentType()) + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return "", err + } + defer resp.Body.Close() + + respBody, _ := io.ReadAll(resp.Body) + return string(respBody), nil +} + +// SubmitFormData 提交表单数据 +// @param url 请求地址 +// @param params 表单数据 +// @return error 错误信息 +func SubmitFormData(url string, params map[string]string) (string, error) { + // 创建multipart writer + body := &bytes.Buffer{} + writer := multipart.NewWriter(body) + + // 添加文本字段 + for key, value := range params { + err := writer.WriteField(key, value) + if err != nil { + return "", fmt.Errorf("write field error: %v", err) + } + } + + // 关闭writer + writer.Close() + + // 创建请求 + req, err := http.NewRequest("POST", url, body) + if err != nil { + return "", fmt.Errorf("create request error: %v", err) + } + + // 设置Content-Type + req.Header.Set("Content-Type", writer.FormDataContentType()) + + // 发送请求 + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return "", fmt.Errorf("send request error: %v", err) + } + defer resp.Body.Close() + + // 读取响应 + respBody, err := io.ReadAll(resp.Body) + if err != nil { + return "", fmt.Errorf("read response error: %v", err) + } + + return string(respBody), nil +} diff --git a/utils/jwt.go b/utils/jwt.go new file mode 100644 index 0000000..43c9de1 --- /dev/null +++ b/utils/jwt.go @@ -0,0 +1,61 @@ +package utils + +import ( + "errors" + "psi/config" + "time" + + "github.com/golang-jwt/jwt/v5" +) + +type Claims struct { + ID int64 `json:"id"` + Role int64 `json:"role"` + Username string `json:"username"` + AboutID int64 `json:"about_id"` // 租户ID + jwt.RegisteredClaims +} + +// GenerateJWT 生成JWT令牌 +func GenerateJWT(ID int64, username string, role int64, aboutID int64) (string, error) { + // 设置令牌有效期 + expireTime := time.Now().Add(time.Duration(config.AppConfig.JWT.ExpireHours) * time.Hour) + + claims := Claims{ + ID: ID, // 员工ID + Role: role, // 角色 + Username: username, // 用户名 + AboutID: aboutID, // 租户ID + RegisteredClaims: jwt.RegisteredClaims{ + ExpiresAt: jwt.NewNumericDate(expireTime), // 令牌有效期 + IssuedAt: jwt.NewNumericDate(time.Now()), // 令牌签发时间 + NotBefore: jwt.NewNumericDate(time.Now()), // 令牌生效时间 + Issuer: "psi-system", // 令牌签发者 + }, + } + + token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) // 创建令牌 + return token.SignedString([]byte(config.AppConfig.JWT.Secret)) // 签名令牌并返回 +} + +// ParseJWT 解析JWT令牌 +func ParseJWT(tokenString string) (*Claims, error) { + // 解析令牌 + token, err := jwt.ParseWithClaims(tokenString, &Claims{}, func(token *jwt.Token) (interface{}, error) { + // 返回密钥 + return []byte(config.AppConfig.JWT.Secret), nil + }) + + // 处理错误 + if err != nil { + return nil, err + } + + // 检查令牌有效性 + if claims, ok := token.Claims.(*Claims); ok && token.Valid { + return claims, nil + } + + // 返回错误 + return nil, errors.New("无效的令牌") +} diff --git a/utils/log.go b/utils/log.go new file mode 100644 index 0000000..a99d8a6 --- /dev/null +++ b/utils/log.go @@ -0,0 +1,179 @@ +package utils + +import ( + "encoding/json" + "github.com/gin-gonic/gin" + rotateLogs "github.com/lestrrat-go/file-rotatelogs" + "github.com/pkg/errors" + "github.com/sirupsen/logrus" + "os" + "psi/config" + systemRes "psi/models/response" + "sync" + "time" +) + +var loggerFactory map[string]*logrus.Logger + +func InitLogger() error { + var err error + loggerFactory, err = NewLogger() + if err != nil { + return err + } + return nil +} + +// GetLogger 获取日志配置(从 config.yaml 读取) +func GetLogger(conf interface{}) error { + logConfig := config.AppConfig.Log + + switch v := conf.(type) { + case *struct { + Channel map[string]string + MaxAge int + RotateTime int + RootPath string + }: + v.Channel = logConfig.Channel + v.MaxAge = logConfig.MaxAge + v.RotateTime = logConfig.RotateTime + v.RootPath = logConfig.RootPath + default: + return errors.New("不支持的配置类型") + } + + return nil +} + +// NewLogger 初始化日志 +func NewLogger() (map[string]*logrus.Logger, error) { + conf := struct { + Channel map[string]string + MaxAge int + RotateTime int + RootPath string + }{} + + if err := GetLogger(&conf); err != nil { + return nil, errors.Wrap(err, "logger config get fail") + } + + logger := make(map[string]*logrus.Logger, len(conf.Channel)) + + var ( + wg sync.WaitGroup + mLock sync.Mutex + ) + + for k, v := range conf.Channel { + wg.Add(1) + go func(wg *sync.WaitGroup, channel string, path string, mLock sync.Locker) { + defer func() { + wg.Done() + }() + rootPath := conf.RootPath + if rootPath == "" { + rootPath = os.Getenv("run_path") + "/runtime/logs" + } + fullPath := rootPath + path + log := createLogger(fullPath, conf.MaxAge, conf.RotateTime) + mLock.Lock() + logger[channel] = log + mLock.Unlock() + }(&wg, k, v, &mLock) + } + wg.Wait() + + return logger, nil +} + +// 创建日志 +func createLogger(path string, maxAge int, rotateTime int) *logrus.Logger { + // 确保目录存在 + dir := path[:len(path)-len("/err.log")] + if len(path) > 0 { + // 提取目录路径 + lastSlash := -1 + for i := len(path) - 1; i >= 0; i-- { + if path[i] == '/' || path[i] == '\\' { + lastSlash = i + break + } + } + if lastSlash > 0 { + dir = path[:lastSlash] + if err := os.MkdirAll(dir, 0755); err != nil { + logrus.Errorf("创建日志目录失败: %v, path: %s", err, dir) + } + } + } + + writer, err := rotateLogs.New( + path+"%Y%m%d%H%M", + //rotateLogs.WithLinkName(path), + rotateLogs.WithMaxAge(time.Duration(maxAge)*time.Hour), + rotateLogs.WithRotationTime(time.Duration(rotateTime)*time.Hour), + ) + if err != nil { + logrus.Errorf("创建日志文件失败: %v, path: %s", err, path) + // 如果创建失败,使用标准输出作为备选 + return createConsoleLogger() + } + + log := new(logrus.Logger) + log.SetFormatter(&logrus.JSONFormatter{}) + log.SetOutput(writer) + log.SetLevel(logrus.InfoLevel) + log.SetNoLock() + return log +} + +// 创建控制台日志器(备选方案) +func createConsoleLogger() *logrus.Logger { + log := new(logrus.Logger) + log.SetFormatter(&logrus.JSONFormatter{}) + log.SetOutput(os.Stdout) + log.SetLevel(logrus.InfoLevel) + return log +} + +// ErrorLog LEVEL-ERROR +func ErrorLog(channel string, params logrus.Fields) { + if _, ok := loggerFactory[channel]; !ok { + return + } + loggerFactory[channel].WithFields(params).Error() +} + +// InfoLog LEVEL-INFO +func InfoLog(channel string, params logrus.Fields) { + if _, ok := loggerFactory[channel]; !ok { + return + } + loggerFactory[channel].WithFields(params).Info(params) +} + +// FailWithRequestLog 失败时记录请求参数并返回错误响应 +// channel: 日志渠道(如 LoggerChannelWork, LoggerChannelRequest) +// source: 错误来源描述 +// err: 错误对象 +// c: gin上下文 +// req: 请求参数(可选,传入会自动序列化到日志) +func FailWithRequestLog(channel string, source string, err error, c *gin.Context, req interface{}) { + fields := logrus.Fields{ + "source": source, + "err_msg": err.Error(), + } + + if req != nil { + if reqJSON, jsonErr := json.Marshal(req); jsonErr == nil { + fields["request_params"] = string(reqJSON) + } else { + fields["request_params_error"] = jsonErr.Error() + } + } + + ErrorLog(channel, fields) + systemRes.FailWithMessage(err.Error(), c) +} diff --git a/utils/validator.go b/utils/validator.go new file mode 100644 index 0000000..c9a50ff --- /dev/null +++ b/utils/validator.go @@ -0,0 +1,216 @@ +package utils + +import ( + "errors" + "strings" + + "github.com/gin-gonic/gin" + "github.com/go-playground/validator/v10" + "psi/models/response" +) + +// HandleValidationError 处理验证错误并返回自定义JSON响应 +// 将 validator 的验证错误转换为友好的中文提示 +func HandleValidationError(c *gin.Context, err error) { + if err == nil { + return + } + + // 如果是 validator.ValidationErrors 类型 + var validationErrors validator.ValidationErrors + if errors.As(err, &validationErrors) { + // 提取所有验证错误信息 + errorMessages := make([]string, 0, len(validationErrors)) + for _, e := range validationErrors { + errorMessages = append(errorMessages, formatValidationError(e)) + } + + // 返回第一个错误信息(或者可以返回所有错误) + msg := strings.Join(errorMessages, "; ") + response.FailWithValidateMessage(msg, c) + return + } + + // 其他类型的错误,直接返回错误信息 + response.FailWithValidateMessage("参数错误: "+err.Error(), c) +} + +// formatValidationError 格式化单个验证错误为友好的中文提示 +func formatValidationError(e validator.FieldError) string { + field := e.Field() + tag := e.Tag() + param := e.Param() + + switch tag { + case "required": + return getFieldChineseName(field) + "不能为空" + + case "min": + kind := e.Kind().String() + if kind == "slice" || kind == "array" { + return getFieldChineseName(field) + "至少需要" + param + "个元素" + } + return getFieldChineseName(field) + "最小值为" + param + + case "max": + kind := e.Kind().String() + if kind == "slice" || kind == "array" { + return getFieldChineseName(field) + "最多只能有" + param + "个元素" + } + return getFieldChineseName(field) + "最大值为" + param + + case "email": + return getFieldChineseName(field) + "邮箱格式不正确" + + case "url": + return getFieldChineseName(field) + "URL格式不正确" + + case "numeric": + return getFieldChineseName(field) + "必须是数字" + + case "alpha": + return getFieldChineseName(field) + "只能是字母" + + case "alphanum": + return getFieldChineseName(field) + "只能是字母和数字" + + case "oneof": + return getFieldChineseName(field) + "必须是以下值之一: " + param + + case "gt": + return getFieldChineseName(field) + "必须大于" + param + + case "gte": + return getFieldChineseName(field) + "必须大于等于" + param + + case "lt": + return getFieldChineseName(field) + "必须小于" + param + + case "lte": + return getFieldChineseName(field) + "必须小于等于" + param + + case "len": + kind := e.Kind().String() + if kind == "slice" || kind == "array" { + return getFieldChineseName(field) + "必须有" + param + "个元素" + } + return getFieldChineseName(field) + "长度必须为" + param + + case "ne": + return getFieldChineseName(field) + "不能等于" + param + + case "eq": + return getFieldChineseName(field) + "必须等于" + param + + case "contains": + return getFieldChineseName(field) + "必须包含" + param + + case "excludes": + return getFieldChineseName(field) + "不能包含" + param + + case "startswith": + return getFieldChineseName(field) + "必须以" + param + "开头" + + case "endswith": + return getFieldChineseName(field) + "必须以" + param + "结尾" + + default: + return getFieldChineseName(field) + "验证失败" + } +} + +// getFieldChineseName 获取字段的中文名称映射 +func getFieldChineseName(field string) string { + fieldMap := map[string]string{ + //Barcode 相关 + "Content": "条形码内容", + + // Book 相关 + "Isbn": "ISBN", + "BookName": "书名", + "Author": "作者", + "Publisher": "出版社", + "PublicationTime": "出版时间", + "BindingLayout": "装帧方式", + "FixPrice": "定价", + + // Car 相关 + "Appearance": "品相", + "PushType": "推送类型", + + // Employee 相关 + "Username": "账号", + "Password": "密码", + "EmpId": "员工ID", + "Level": "等级", + "PayTime": "支付时间", + "OperationType": "操作类型", + "ExpireTime": "过期时间", + + // Inventory 相关 + "ProductID": "商品ID", + "StockCheckID": "盘库ID", + + // Location 相关 + "WarehouseID": "仓库ID", + "Code": "编码", + "Type": "类型", + "Capacity": "容量", + "Status": "状态", + + // Process 相关 + "CarID": "小车ID", + "CarCode": "小车编号", + "Quantity": "数量", + "UnitPrice": "单价", + "WaveID": "波次ID", + "RelatedOrderID": "关联订单ID", + "WaveNo": "波次号", + "Operator": "操作人", + "OperatorID": "操作人ID", + "ReceivingOrderID": "入库单ID", + "WaveTaskID": "波次任务ID", + "AssociationOrderID": "关联平台订单ID", + "AssociationOrderNo": "关联平台订单号", + "OutboundOrderID": "出库单ID", + "ShippingOrderID": "发货单ID", + "SalesOrderItemID": "销售单明细ID", + "LogisticsCompany": "物流公司", + "LogisticsNo": "物流运单号", + "OrderID": "订单ID", + "LocationID": "货位ID", + "AdjustType": "调整类型", + "SalesOrderID": "销售订单ID", + + // Product 相关 + "CategoryID": "分类ID", + "ProductName": "商品名称", + "Barcode": "条形码", + "Price": "单价", + "UserID": "用户ID", + "SalePrice": "售价", + "OutTaskID": "外部任务ID", + + // Warehouse 相关 + "Name": "名称", + "ContactPerson": "联系人", + "ContactPhone": "联系电话", + "Province": "省份", + "City": "城市", + "District": "区县", + "Address": "详细地址", + + // 通用字段 + "Page": "页码", + "PageSize": "每页数量", + "Keyword": "关键词", + "ID": "ID", + } + + if chineseName, ok := fieldMap[field]; ok { + return chineseName + } + + // 如果没有映射,返回原字段名 + return field +} diff --git a/项目技术分析报告.md b/项目技术分析报告.md new file mode 100644 index 0000000..e4ce820 --- /dev/null +++ b/项目技术分析报告.md @@ -0,0 +1,616 @@ +# PSI 进销存系统 - 技术分析报告 + +## 执行摘要 + +本报告对 PSI 进销存系统进行全面技术分析,涵盖架构设计、代码质量、数据库设计、安全性等多个维度。分析时间:2026年6月5日。 + +--- + +## 1. 技术栈深度分析 + +### 1.1 核心技术选型评估 + +| 组件 | 技术方案 | 版本 | 优势 | 风险 | +|------|---------|------|------|------| +| Web 框架 | Gin | v1.11.0 | 高性能、成熟社区、中间件丰富 | 升级维护依赖 | +| ORM | GORM | v1.31.1 | 自动迁移、预加载、钩子 | 复杂查询性能需优化 | +| 数据库 | MySQL | - | 事务支持、索引优化 | 无主从配置 | +| 认证 | JWT | v5 | 无状态、跨域友好 | Token 刷新机制 | +| 日志 | Logrus + file-rotatelogs | - | 结构化日志、自动轮转 | 缺少日志聚合 | +| Excel处理 | Excelize | v2 | 高性能读写 | 大文件内存占用 | + +### 1.2 依赖包清单与用途 + +**核心依赖(go.mod)**: + +``` +github.com/gin-gonic/gin # Web框架 +gorm.io/gorm # ORM +gorm.io/driver/mysql # MySQL驱动 +github.com/golang-jwt/jwt/v5 # JWT认证 +github.com/sirupsen/logrus # 日志 +github.com/xuri/excelize/v2 # Excel处理 +github.com/boombuler/barcode # 条码生成 +github.com/elastic/go-elasticsearch/v8 # ES搜索(已注释) +``` + +**间接依赖亮点**: +- `github.com/bytedance/sonic` - 极快的JSON处理 +- `github.com/goccy/go-yaml` - YAML配置解析 + +--- + +## 2. 架构设计分析 + +### 2.1 分层架构 + +``` +┌─────────────────────────────────────────────────┐ +│ Controller 层 (controllers/) │ +│ - 请求参数校验 │ +│ - 响应格式化 │ +│ - 中间件处理 │ +└────────────────┬────────────────────────────────┘ + │ +┌────────────────┴────────────────────────────────┐ +│ Service 层 (service/) │ +│ - 业务逻辑实现 │ +│ - 事务管理 │ +│ - 外部API调用 │ +└────────────────┬────────────────────────────────┘ + │ +┌────────────────┴────────────────────────────────┐ +│ Model 层 (models/) │ +│ - 数据模型定义 │ +│ - 数据库操作 │ +│ - 请求/响应结构体 │ +└────────────────┬────────────────────────────────┘ + │ +┌────────────────┴────────────────────────────────┐ +│ 基础设施层 │ +│ - config/: 配置加载 │ +│ - database/: 数据库连接 │ +│ - middleware/: 中间件 │ +│ - utils/: 工具函数 │ +└─────────────────────────────────────────────────┘ +``` + +**架构优点**: +✅ 清晰的分层职责分离 +✅ 代码复用性好 +✅ 便于单元测试 + +**改进建议**: +⚠️ 缺少 Repository 层,Service 直接操作 Model +⚠️ 缺少 DTO 层,Model 和 API 耦合 + +### 2.2 目录结构评估 + +``` +psi/ +├── 优点 +│ ├── controllers/ - 按业务模块组织良好 +│ ├── models/ - 清晰区分 request/response +│ ├── middleware/ - 认证、CORS、签名职责明确 +│ ├── service/ - 业务逻辑独立 +│ └── utils/ - 工具函数集中管理 +│ +└── 可优化 + ├── 缺少 docs/ - API文档存放 + ├── 缺少 tests/ - 单元测试 + ├── 缺少 scripts/ - 部署脚本 + └── 缺少 internal/ - 内部包隔离 +``` + +--- + +## 3. 数据库设计分析 + +### 3.1 表设计概览 + +**表数量**:41张 +**核心表**:15张 +**辅助表**:26张 + +### 3.2 核心表关系分析 + +#### 3.2.1 商品管理链路 + +``` +product_category (商品分类) + ↓ +product (商品) ← product_log (变更日志) + ↓ +product_serial (序列号) + ↓ +product_unit_conversion (单位换算) +``` + +**设计优点**: +✅ 商品变更有日志记录,支持审核 +✅ 支持序列号管理,适合图书行业 + +**改进建议**: +⚠️ `product.category_id` 缺少外键约束 +⚠️ 商品图片使用 JSON 存储,建议单独表 + +#### 3.2.2 库存管理链路 + +``` +warehouse (仓库) ← logistics (物流) + ↓ +location (库位) + ↓ +inventory (库存) ← inventory_detail (明细) + ↓ +inventory_log (流水) +``` + +**设计优点**: +✅ 库存支持批次管理(batch_no) +✅ 库存流水记录完整 +✅ 支持锁定库存(locked_quantity) + +**改进建议**: +⚠️ `inventory_log.location_id` 可以为空,建议明确业务规则 +⚠️ 缺少库存预警配置表 + +#### 3.2.3 采购流程链路 + +``` +supplier (供应商) + ↓ +purchase_order (采购单) ← purchase_order_item (明细) + ↓ +wave_header (波次) ← wave_task (任务) ← wave_task_detail (明细) + ↓ +receiving_order (入库单) ← receiving_order_item (明细) + ↓ +inventory (库存增加) + inventory_log (流水) +``` + +**设计优点**: +✅ 波次设计支持批量作业 +✅ 支持小车容量分配 +✅ 完整的单据链路 + +**改进建议**: +⚠️ `wave_header.related_order_id` 类型是采购单还是销售单不够明确 +⚠️ 建议增加 wave_type 枚举字段 + +#### 3.2.4 销售流程链路 + +``` +customer (客户) + ↓ +sales_order (销售单) ← sales_order_item (明细) + ↓ +wave_header (波次) ← wave_task (任务) + ↓ +outbound_order (出库单) ← outbound_order_item (明细) + ↓ +outbound_order_location_log (库位变更) + ↓ +inventory (库存减少) + inventory_log (流水) + ↓ +shipping_order (发货单) ← shipping_order_item (明细) +``` + +**设计优点**: +✅ 销售单关联店铺(shop) +✅ 支持分销模式(is_distribution) +✅ 库位变更有记录 + +**改进建议**: +⚠️ 发货单缺少物流单号字段 +⚠️ 建议增加发货状态流转记录 + +### 3.3 索引设计评估 + +**已知索引**(从模型推断): +- `product.barcode` - 条码查询 +- `warehouse.code` - 仓库编码唯一 +- `location.warehouse_id + code` - 库位唯一 +- `purchase_order.po_no` - 采购单号 +- `sales_order.so_no` - 销售单号 +- `inventory_log.related_order_no` - 单据关联 +- `inventory.warehouse_id + product_id + batch_no` - 库存唯一 + +**缺失索引建议**: +- `inventory_log.created_at` - 时间范围查询 +- `wave_header.warehouse_id + status + direction` - 波次查询 +- `employee.role` - 权限查询 + +### 3.4 分账模块新增表分析 + +**split_account_config(分账配置)**: +- 支持 JSON 格式的规则配置 +- 状态管理(启用/禁用) +- 创建/更新人追踪 + +**split_account_deduction_log(分账扣钱日志)**: +- 关联业务单号 +- 记录扣款明细(JSON) +- 记录扣款前后金额 + +**设计优点**: +✅ JSON 配置灵活 +✅ 日志完整可追溯 + +--- + +## 4. 代码质量分析 + +### 4.1 中间件设计分析 + +**middleware/auth.go - JWT认证**: +``` +功能: +- Token 验证 +- 员工状态检查 +- 租户数据库连接 + +优点: +✅ 职责单一 +✅ 支持租户隔离 + +改进: +⚠️ Token 过期后缺少刷新机制 +⚠️ 建议增加 Token 黑名单 +``` + +**middleware/sign.go - API签名**: +``` +功能: +- AppKey 验证 +- 时间戳检查(容忍300秒) +- MD5签名验证 + +优点: +✅ 防篡改 +✅ 防重放攻击 + +改进: +⚠️ MD5 安全性较低,建议升级到 HMAC-SHA256 +⚠️ 时间戳容忍度 5 分钟偏长 +``` + +**middleware/cors.go - 跨域处理**: +``` +功能: +- 允许所有来源 +- 允许所有方法 +- 允许所有头 + +优点: +✅ 开发便利 + +改进: +⚠️ 生产环境建议限制 Origin 白名单 +⚠️ 建议增加预检请求缓存 +``` + +### 4.2 模型设计模式 + +**统一模式**: +```go +type Model struct { + ID int64 // 主键 + CreatedAt int64 // Unix时间戳 + UpdatedAt int64 // Unix时间戳 + IsDel int8 // 软删除标记 +} +``` + +**优点**: +✅ 统一的时间戳格式(秒) +✅ 软删除支持 +✅ ID使用int64避免溢出 + +**改进建议**: +⚠️ 缺少 `DeletedAt` 字段(有则有值,无则为0) +⚠️ 建议使用 `gorm.Model` 扩展或自定义基类 + +### 4.3 Service层模式 + +从文件结构看,Service层实现了完整的CRUD: +- `CreateXxx()` +- `UpdateXxx()` +- `DeleteXxx()` +- `GetXxx()` +- `ListXxx()` + +**优点**: +✅ 接口统一 +✅ Controller层简洁 + +**改进建议**: +⚠️ 建议增加事务封装 +⚠️ 建议增加业务校验层 + +--- + +## 5. 安全性分析 + +### 5.1 认证安全 + +| 安全项 | 状态 | 说明 | +|-------|------|------| +| 密码加密 | ❓ | 未知,需检查代码 | +| JWT签名 | ✅ | 使用密钥签名 | +| Token过期 | ✅ | 24小时过期 | +| Token刷新 | ❌ | 未实现 | +| 账号过期 | ✅ | 支持设置 | +| 员工状态 | ✅ | 登录时检查 | + +### 5.2 API安全 + +| 安全项 | 状态 | 说明 | +|-------|------|------| +| API签名 | ✅ | MD5签名 | +| 时间戳验证 | ✅ | 300秒容忍 | +| 防重放 | ⚠️ | 无Nonce机制 | +| 速率限制 | ❌ | 未实现 | +| SQL注入 | ✅ | GORM参数化查询 | +| XSS防护 | ❓ | 未知 | + +### 5.3 数据安全 + +| 安全项 | 状态 | 说明 | +|-------|------|------| +| 敏感字段加密 | ✅ | config中有encrypt_key | +| 软删除 | ✅ | 所有表支持 | +| 操作日志 | ✅ | inventory_log等 | +| 数据备份 | ❌ | 配置中未提及 | + +### 5.4 安全建议优先级 + +**高优先级**: +1. API签名升级为 HMAC-SHA256 +2. 实现速率限制 +3. 增加 Token 刷新机制 +4. 实现防重放的 Nonce 机制 + +**中优先级**: +5. 生产环境 CORS 限制 Origin +6. 敏感操作增加二次验证 +7. 定期数据库备份 + +**低优先级**: +8. 操作审计日志完善 +9. 数据脱敏 + +--- + +## 6. 性能分析 + +### 6.1 潜在性能瓶颈 + +| 场景 | 瓶颈点 | 建议 | +|------|--------|------| +| 库存查询 | 多表关联 | 增加 Redis 缓存 | +| 波次生成 | 批量计算 | 异步处理 + 消息队列 | +| Excel导出 | 大文件内存 | 流式处理 + 分页 | +| 日志写入 | 同步阻塞 | 异步日志写入 | + +### 6.2 数据库性能优化建议 + +1. **索引优化**: + - 增加常用查询组合索引 + - 定期分析索引使用情况 + +2. **查询优化**: + - 避免 N+1 查询(使用 Preload) + - 分页查询限制每页数量 + - 大表考虑分库分表 + +3. **缓存策略**: + - 商品基础信息缓存 + - 仓库/库位信息缓存 + - 库存汇总缓存(带过期时间) + +--- + +## 7. 外部集成分析 + +### 7.1 OCR服务集成 + +**状态**:代码已注释,可启用 + +**架构**: +``` +Gin API → OCR服务 (独立进程) + ↓ + OCRService.exe +``` + +**优点**: +✅ 独立进程,不影响主服务 +✅ 本地处理,数据安全 + +**改进**: +⚠️ 建议增加 OCR 服务健康检查 +⚠️ 建议增加 OCR 结果缓存 + +### 7.2 Elasticsearch集成 + +**状态**:代码已注释,可启用 + +**用途**: +- 商品全文搜索 +- 订单搜索 +- 日志分析 + +**建议**: +⚠️ 增量同步机制 +⚠️ 索引别名管理 + +### 7.3 外部系统API + +**配置**: +```yaml +external_api: + sync_product_url: ... # 商品同步 + sync_task_url: ... # 任务创建 + sync_task_body_url: ... # 任务内容 +``` + +**建议**: +⚠️ 增加重试机制 +⚠️ 增加熔断保护 +⚠️ 增加请求/响应日志 +⚠️ 超时时间可配置(当前30秒) + +--- + +## 8. 业务流程深度分析 + +### 8.1 采购入库流程(波次模式) + +``` +阶段1: 创建采购单 + ↓ POST /api/purchase-order/create-with-wave + ↓ 创建 purchase_order + purchase_order_item + ↓ 创建 wave_header (direction=入库) + +阶段2: 释放波次 + ↓ POST /api/wave/release + ↓ 创建 wave_task + wave_task_detail + ↓ 根据小车容量分配 + +阶段3: PDA收货 + ↓ POST /api/receiving/bind-wave + ↓ 创建 receiving_order + ↓ PDA扫码逐个收货 + +阶段4: 提交入库 + ↓ POST /api/receiving/submit + ↓ 更新 inventory (quantity +=) + ↓ 记录 inventory_log +``` + +**业务亮点**: +✅ 支持波次批量作业 +✅ 小车容量智能分配 +✅ 支持无来源入库 + +**流程改进**: +⚠️ 建议增加入库质检环节 +⚠️ 建议增加异常处理流程 + +### 8.2 销售出库流程 + +``` +阶段1: 创建销售单 + ↓ POST /api/sales-order/create (公开接口) + ↓ 创建 sales_order + sales_order_item + +阶段2: 生成出库波次 + ↓ POST /api/wave/outbound/create + ↓ 创建 wave_header (direction=出库) + +阶段3: 释放波次 + ↓ POST /api/wave/outbound/release + ↓ 创建 wave_task + +阶段4: PDA拣货 + ↓ POST /api/outbound/bind-wave + ↓ 创建 outbound_order + ↓ 记录库位变更 (outbound_order_location_log) + +阶段5: 提交出库 + ↓ POST /api/outbound/submit + ↓ 更新 inventory (quantity -=) + ↓ 记录 inventory_log + +阶段6: 创建发货单 + ↓ POST /api/shipping-order/create + ↓ 创建 shipping_order + shipping_order_item + ↓ 填写物流信息 +``` + +**业务亮点**: +✅ 支持多店铺类型(拼多多、孔夫子、闲鱼) +✅ 支持分销模式 +✅ 库位变更可追溯 + +--- + +## 9. 项目成熟度评估 + +| 维度 | 评分 | 说明 | +|------|------|------| +| 代码组织 | ⭐⭐⭐⭐ | 分层清晰,模块化好 | +| 数据库设计 | ⭐⭐⭐⭐ | 关系完整,考虑周全 | +| 安全性 | ⭐⭐⭐ | 基础安全有,需加强 | +| 性能优化 | ⭐⭐⭐ | 有优化空间,缺少缓存 | +| 测试覆盖 | ⭐⭐ | 无测试目录 | +| 文档完善 | ⭐⭐⭐⭐ | 有项目说明文档 | +| 运维部署 | ⭐⭐⭐ | 有Linux部署包 | +| 监控告警 | ⭐⭐ | 缺少监控 | + +**总体评分**:⭐⭐⭐ (3/5) - 生产可用,有优化空间 + +--- + +## 10. 改进建议 roadmap + +### 短期(1-2周) + +- [ ] 增加单元测试框架 +- [ ] API签名升级 HMAC-SHA256 +- [ ] 实现速率限制中间件 +- [ ] 补充核心业务索引 + +### 中期(1-2月) + +- [ ] 引入 Redis 缓存 +- [ ] 实现 Token 刷新机制 +- [ ] 增加操作审计日志 +- [ ] 数据库分库分表调研 + +### 长期(3-6月) + +- [ ] 引入消息队列(异步处理) +- [ ] 实现微服务拆分 +- [ ] 完善监控告警系统 +- [ ] CI/CD 流程搭建 + +--- + +## 11. 技术债务清单 + +| 项 | 严重程度 | 说明 | +|----|---------|------| +| ES代码注释 | 低 | 已注释,清理或启用 | +| OCR代码注释 | 低 | 已注释,清理或启用 | +| 缺少测试 | 高 | 无测试目录 | +| 硬编码配置 | 中 | 部分配置硬编码 | +| 错误处理 | 中 | 需统一错误码 | +| 日志规范 | 中 | 日志格式需统一 | + +--- + +## 12. 总结 + +PSI 进销存系统是一个架构清晰、功能完整的企业级应用。核心业务流程设计合理,支持波次管理、多店铺、分销等高级特性。数据库设计考虑周全,41张表覆盖了进销存全流程。 + +**主要优点**: +✅ 技术选型成熟稳定 +✅ 分层架构清晰 +✅ 业务流程完整 +✅ 支持波次管理、多店铺 +✅ 数据库设计规范 + +**主要改进方向**: +⚠️ 安全性需加强 +⚠️ 性能优化空间大 +⚠️ 测试覆盖不足 +⚠️ 监控告警缺失 +⚠️ 文档可更完善 + +--- + +**报告生成时间**:2026年6月5日 +**分析工具**:Trae IDE + 人工代码审查 +**报告版本**:v1.0