// +---------------------------------------------------------------------- declare (strict_types=1); namespace app\store\model; use app\common\library\helper; use app\common\model\PartnersGoods as PartnersGoodsModel; use cores\exception\BaseException; /** * 合作商商品关系模型 * Class PartnersGoods * @package app\store\model */ class PartnersGoods extends PartnersGoodsModel { /** * 验证商品是否合法 * @param array $goodsList * @throws BaseException */ public static function checkGoodsData(array $goodsList) { $values = helper::getArrayColumn($goodsList, 'goods_id'); if (count($goodsList) != count(array_unique($values))) { throwError('很抱歉,不能存在重复的商品 请检查您的选择'); } foreach ($goodsList as &$item) { if($item['allot_num'] < 0 && abs($item['allot_num']) > $item['stock_num']){ throwError('很抱歉,分配数量减少不能低于库存数量 请检查您的输入'); }elseif($item['allot_num'] > 100){ throwError('很抱歉,分配数量不能大于100 请检查您的输入'); } $item['before_num'] = $item['stock_num']; $item['stock_num'] += $item['allot_num']; $item['after_num'] = $item['stock_num']; $item['change_type'] = $item['allot_num'] < 0 ? 2 : 1; } unset($item); return $goodsList; } /** * 批量写入合作商与商品关系记录 * @param int $partnersId * @param array $goodsList * @return array|false */ public static function increased(int $partnersId, array $goodsList) { $dataset = []; foreach ($goodsList as $item) { $dataset[] = [ 'partners_id' => $partnersId, 'goods_id' => $item['goods_id'], 'stock_num' => $item['stock_num'], 'store_id' => self::$storeId ]; } return (new static)->addAll($dataset); } /** * 批量更新合作商和商品关系记录 * @param int $partnersId * @param array $goodsList * @return array|false */ public static function updates(int $partnersId, array $goodsList) { // 删除所有的记录 static::deleteAll(['partners_id' => $partnersId]); // 批量新增记录 return static::increased($partnersId, $goodsList); } }