// +---------------------------------------------------------------------- declare (strict_types=1); namespace app\store\model\goods; use think\Paginator; use think\Collection; use app\common\model\goods\GoodsPrice as GoodsPriceModel; use app\common\model\Category as CategoryModel; /** * 商品价格配比 * Class Service */ class GoodsPrice extends GoodsPriceModel { /** * 获取全部记录 * @param array $param * @return Collection * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function getAll($params) { $catFids = CategoryModel::where(['parent_id' => 0])->column('category_id'); $catList = CategoryModel::with(['price'])->whereIn('parent_id', $catFids)->select()->toArray(); $all = []; foreach ($catList as $k => $v) { $temp = []; if (!empty($v['price'])) { foreach ($v['price'] as $pk => $pv) { if (!empty($params['type'])) { if ($pv['type'] == $params['type']) { $temp[] = $pv; } } else { if ($pv['type'] == 1) { $temp[] = $pv; } } } } $all[] = [ 'category_id' => $v['category_id'], 'name' => $v['name'], 'price' => $temp ]; } return $all; } /** * 获取列表记录 * @param array $param * @return Paginator * @throws \think\db\exception\DbException */ public function getList(array $param = []): Paginator { return $this->where($this->getFilter($param)) ->where('is_delete', '=', 0) ->order(['sort', $this->getPk()]) ->paginate(); } /** * 获取查询条件 * @param array $param * @return array */ private function getFilter(array $param = []): array { // 默认查询参数 $params = $this->setQueryDefaultValue($param, ['search' => '']); // 检索查询条件 $filter = []; !empty($params['search']) && $filter[] = ['name', 'like', "%{$params['search']}%"]; return $filter; } /** * 新增记录 * @param array $data * @return bool|false */ public function add(array $data): bool { $data['store_id'] = self::$storeId; return $this->save($data); } /** * 更新记录 * @param array $data * @return bool */ public function edit(array $data): bool { return $this->save($data) !== false; } /** * 删除记录(软删除) * @return bool * @throws \Exception */ public function remove(): bool { // 判断该服务是否被商品引用 $goodsCount = ServiceRelModel::getCountByServiceId($this['service_id']); if ($goodsCount > 0) { $this->error = "该记录被{$goodsCount}个商品引用,不允许删除"; return false; } return $this->save(['is_delete' => 1]) !== false; } }