request->param("status/d", 0);//1未开始 2生效中 3已过期 $type = $this->request->param("type/d", 0);//素材类型 1图片2音频3视频4字体 $limit = $this->request->param("limit/d", 10); $material_name = $this->request->param("material_name/s", ""); // $where[] = ['d.seller_id', "=", $this->admin['seller_id']]; if ($type > 0) { $where[] = ["d.type", "=", $type]; } $time = date("Y-m-d"); if ($status == 1) { $where[] = ["c.begin_time", ">", $time]; } elseif ($status == 2) { $where[] = ["c.begin_time", "<=", $time]; $where[] = ["c.end_time", ">=", $time]; } elseif ($status == 3) { $where[] = ["c.end_time", "<", $time]; } if(!empty($material_name)){ $where[] = ["d.material_name", "like", "%{$material_name}%"]; } $AssetsCopyrightDetailModel = new AssetsCopyrightDetail(); $list = $AssetsCopyrightDetailModel->getListWithCopyright($where, $limit); return json(pageReturn($list)); } /** * 添加版权管理 * @return \think\response\Json * @throws ModelException */ public function add() { $param = $this->request->post(['type', 'subject', 'supplier_name', 'begin_time', 'end_time', 'price', 'doc_no', 'files', 'use_range', 'material_type', 'material_detail']); $this->validateData($param, "add"); $param['end_time'] = !empty($param['end_time']) ? $param['end_time'] : "2999-12-31"; $detail = $this->checkMaterialDetail($param, $this->admin['seller_id']); $param['files'] = !empty($param['files'])?(is_array($param['files']) ? implode(",", $param['files']) : $param['files']):""; unset($param['material_detail']); $model = new AssetsCopyright(); Db::startTrans(); try { $param['seller_id'] = $this->admin['seller_id']; $param['apply_id'] = $this->admin['uid']; $param['apply_user'] = $this->admin['name']; $res = $model->add($param); foreach ($detail as $k => $v) { $detail[$k]['copyright_id'] = $res['data']; } (new AssetsCopyrightDetail())->insertAll($detail); Db::commit(); } catch (\Exception $e) { Db::rollback(); return jsonReturn(-1, $e->getMessage()); } return json($res); } /** * 详情 * @throws ModelException */ public function getInfo() { $copyright_id = $this->request->param("copyright_id/d", 0); //版权的id $model = new AssetsCopyright(); $info = $model->getInfo(['id' => $copyright_id, 'seller_id' => $this->admin['seller_id']])['data']; if (empty($info)) { return jsonReturn(-1, lang("内容不存在")); } $time = date("Y-m-d"); if ($info['begin_time'] > $time) { $info['status_text'] = lang("未开始"); } elseif ($info['end_time'] < $time) { $info['status_text'] = lang("已过期"); } else { $info['status_text'] = lang("生效中"); } $info["files"] = !empty($info['files'])?explode(",",$info['files']):[]; $AssetsCopyrightDetailModel = new AssetsCopyrightDetail(); $detail = $AssetsCopyrightDetailModel->getListNoLimit(['copyright_id' => $copyright_id], '', 'detail_id desc')['data']; return jsonReturn(0, lang('查询成功'), ['info' => $info, "detail" => $detail]); } /** * @return \think\response\Json * @throws ModelException */ public function edit() { $param = $this->request->post(['id', 'type', 'subject', 'supplier_name', 'begin_time', 'end_time', 'price', 'doc_no', 'files', 'use_range', 'material_type', 'material_detail']); $this->validateData($param, "update"); $param['end_time'] = !empty($param['end_time']) ? $param['end_time'] : "2999-12-31"; $detail = $this->checkMaterialDetail($param, $this->admin['seller_id']); $param['files'] = !empty($param['files'])?(is_array($param['files']) ? implode(",", $param['files']) : $param['files']):""; unset($param['material_detail']); //验证内容存不存在 $model = new AssetsCopyright(); $where['id'] = $param['id']; $where['seller_id'] = $this->admin['seller_id']; $info = $model->getInfo($where, "", "id")['data']; if (empty($info)) { return jsonReturn(-2, lang("内容不存在")); } $AssetsCopyrightDetailModel = new AssetsCopyrightDetail(); Db::startTrans(); try { $model->edit($where, $param); $AssetsCopyrightDetailModel->where(['copyright_id' => $param['id']])->delete(); $AssetsCopyrightDetailModel->insertAll($detail); Db::commit(); } catch (\Exception $e) { Db::rollback(); return jsonReturn(-3, $e->getMessage()); } return jsonReturn(0, lang('操作成功')); } public function del() { $param = $this->request->only(['detail_id']); if (empty($param['detail_id'])) { return jsonReturn(-1, lang("参数错误")); } $detailId = []; foreach ($param['detail_id'] as $k => $v) { $detailId[] = intval($v); } $AssetsCopyrightDetailModel = new AssetsCopyrightDetail(); $res = $AssetsCopyrightDetailModel->where([['detail_id', "in", $detailId], ['seller_id', '=', $this->admin['seller_id']]])->delete(); if ($res) { return jsonReturn(0, lang('删除成功')); } return jsonReturn(-1, lang('删除失败')); } /** * 验证字段的内容 * @param $param * @param string $scene * @throws ModelException */ private function validateData($param, $scene = "") { try { validate(AssetsCopyrightValidate::class)->scene($scene)->check($param); } catch (ValidateException $e) { throw new ModelException($e->getMessage(), $e->getCode() > 0 ? $e->getCode() : -1); } } /** * 验证素材信息的内容 * @param $param * @param $sellerId * @return array * @throws ModelException */ private function checkMaterialDetail($param, $sellerId) { $materialDetail = is_string($param['material_detail']) ? json_decode($param['material_detail'], true) : $param['material_detail']; if (empty($materialDetail)) { throw new ModelException(lang("素材内容错误"), -2); } $detail = []; foreach ($materialDetail as $k => $v) { $detail[$k]['material_type'] = $v['material_type'] = $param['material_type']; $detail[$k]['type'] = $v['type'] = $param['type']; $detail[$k]['category'] = $v['category'] = 1; $detail[$k]['copyright_id'] = !empty($param['id']) ? $param['id'] : 0; $this->validateData($v, "purchase"); $detail[$k]['material_no'] = !empty($v['material_no'])?$v['material_no']:""; $detail[$k]['material_name'] = $v['material_name']; $detail[$k]['material_link'] = $v['material_link']; $detail[$k]['material_cover'] = !empty($v['material_cover'])?$v['material_cover']:""; $detail[$k]['material_url'] = $v['material_url']; $detail[$k]['seller_id'] = $sellerId; $detail[$k]['create_time'] = date("Y-m-d H:i:s"); } return $detail; } }