• 新建商品开多规格开关(specType=true)但不传规格列表时,validateSkuList
    收集到的 propertyIds 为空集合,getPropertyList 走 selectByIds 生成
    IN() 非法 SQL 直接 500(A33)。
    
    补空集合短路:propertyIds 为空时抛新增业务错误 SKU_PROPERTIES_EMPTY
    (1_008_006_005) 明确拒绝,不再崩到 SQL 层。
    dadiyang authored
     
    Browse Dir »
  • 商品/SKU 允许填负价格并保存成功(A19):ProductSkuSaveReqVO 的
    price/marketPrice/costPrice/firstBrokeragePrice/secondBrokeragePrice
    均无下限校验,管理端前端 el-input-number min=0 恰好掩盖后端缺口,
    绕过前端(直接接口/H5/第三方)即可写入负价。
    
    给五个价格字段补 @Min(0),后端校验层统一拒绝非正价格(SPU 创建/
    更新经 skus 的 @Valid 级联一并生效)。
    dadiyang authored
     
    Browse Dir »
  • 更新类目时把 parentId 设成分类自身的 id 可保存成功(一级类目自身
    通过'父分类不能是二级分类'校验后放行),形成循环层级(A53);
    创建路径父级必须是已存在分类,天然挡死。
    
    updateCategory 补环检测:parentId==id 时抛新增业务错误
    CATEGORY_PARENT_IS_SELF (1_008_001_006)。
    dadiyang authored
     
    Browse Dir »
  • GET /app-api/product/spu/page 只带 sortField、缺 sortAsc(合法但参数
    不完整)时,getSortAsc()(Boolean)在 orderBy/三目拆箱处 null 直接
    NPE 500(A52),旧版 App/第三方/爬虫都会踩空。
    
    排序逻辑处统一取空安全默认(缺省按升序),三个排序分支共用,
    缺参/显式 null 均不再崩。
    dadiyang authored
     
    Browse Dir »





  • DeliveryPickUpStoreRespVO 加 areaName 字段;DeliveryPickUpStoreConvert 加 convert01(@Mapping areaId→areaName,复用 convertAreaIdToAreaName/AreaUtils.format);/get 改用 convert01 返回 areaName。convertPage/convertList 间接复用 convert01,故 /page、/list 也会带出 areaName
    YunaiV authored
     
    Browse Dir »

  • - 后端售后申请接口启用请求体参数校验
    - 前端申请售后提交前校验售后类型
    - 修正售后类型 radio 选中态绑定字段
    YunaiV authored
     
    Browse Dir »
  • - 调整 MyBatisUtils.findInSet 使用 MyBatis-Plus 参数绑定
    - 增加 columnName 白名单校验,避免列名被注入
    - 补充 H2 兼容实现,恢复相关单测覆盖
    - 替换各模块动态 FIND_IN_SET 字符串拼接写法
    - 补充单参数、多参数绑定场景单测
    YunaiV authored
     
    Browse Dir »