多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 导入商品信息生成唯一码 **位置:** Common\Lib\GoodsLib.class.php **参数:** * @param $skuID int SKU的ID值 * @return $goodsNo mix 成功返回:生成不重复的唯一码,失败返回:false **调用:** * $GoodsLib = new GoodsLib; * $GoodsLib->createNewGoodsNo($skuID) ; **完整代码:** ~~~ /** * 导入商品信息生成唯一码 * whz 2018-05-17 * @param $skuID int SKU的ID值 * @return $goodsNo mix 成功返回:生成不重复的唯一码,失败返回:false */ public function createNewGoodsNo($skuID) { $where = [ 'sku_id' => $skuID ]; $num = M('goods_item')->where($where)->count(); // 通过SKU的ID获取SKU码 $skuNo = M('goods_sku')->where("id = '{$skuID}'")->getField('goods_sku'); if ($num == 0) { return $skuNo.'0001'; } // 以下代码为老逻辑的生成规则,第二唯一码从0401开始 Lanson 2018-03-22 $numA = $num + 400; $len = strlen($numA); if ($len < 4) { for ($i=0; $i<(4-$len); $i++) { $numA = '0'.$numA; } } $goodsNo = $skuNo.$numA; // 进行验证是否有与唯一码表有重复数据 $res = M('goods_item')->where("item_no = '{$goodsNo}'")->find(); if (!empty($res)) { // 说明有重复的唯一码 $numC = $num + 400; $numB = $numC + 10000; // 最多测试10000次加1操作,得出不重复的唯一码 for ($i = $numC; $i<= $numB; $i++) { if (strlen($i) < 4) { $goodsNo = $skuNo.'0'.$i; } else { $goodsNo = $skuNo.$i; } $res = M('goods_item')->where("item_no = '{$goodsNo}'")->find(); if (empty($res)) { break; } if ($i == $numB) { return false; } } } return $goodsNo; } ~~~