['require', 'checkLists'], ]; protected $message = [ 'lists.require' => '上传文件不能为空', ]; function checkLists($lists, $rule, $data) { $nums = count($lists) - 1; if ($nums < 1) { return '导入的文件商品规格价格信息为空'; } if ($nums > 2000) { return '单次最多导入2000条商品规格价格信息'; } foreach ($lists as $key => $info) { // 跳过表头 if ($key == 1) { continue; } // 检查必填字段:商品ID(A列)和规格ID(D列) if (empty(trim($info['A'])) || empty(trim($info['D']))) { return '商品规格价格信息:第' . ($key) . '行存在未填写的商品ID或规格ID'; } // 验证商品ID是否为数字 if (!is_numeric(trim($info['A']))) { return '商品规格价格信息:第' . ($key) . '行商品ID必须为数字'; } // 验证规格ID是否为数字 if (!is_numeric(trim($info['D']))) { return '商品规格价格信息:第' . ($key) . '行规格ID必须为数字'; } // 验证销售价格(F列) if (!empty(trim($info['F'])) && !is_numeric(trim($info['F']))) { return '商品规格价格信息:第' . ($key) . '行销售价格必须为数字'; } // 验证划线价格(G列) if (!empty(trim($info['G'])) && !is_numeric(trim($info['G']))) { return '商品规格价格信息:第' . ($key) . '行划线价格必须为数字'; } // 验证成本价格(H列) if (!empty(trim($info['H'])) && !is_numeric(trim($info['H']))) { return '商品规格价格信息:第' . ($key) . '行成本价格必须为数字'; } // 验证库存数量(I列) if (!empty(trim($info['I'])) && (!is_numeric(trim($info['I'])) || trim($info['I']) < 0)) { return '商品规格价格信息:第' . ($key) . '行库存数量必须为非负整数'; } // 验证重量(J列) if (!empty(trim($info['J'])) && (!is_numeric(trim($info['J'])) || trim($info['J']) < 0)) { return '商品规格价格信息:第' . ($key) . '行重量必须为非负数'; } // 验证体积(K列) if (!empty(trim($info['K'])) && (!is_numeric(trim($info['K'])) || trim($info['K']) < 0)) { return '商品规格价格信息:第' . ($key) . '行体积必须为非负数'; } } return true; } }