From 5ce13e894c35f8f0a9eaa92ac48d1d0d617c3289 Mon Sep 17 00:00:00 2001 From: weiz Date: Mon, 8 Jan 2024 11:45:03 +0800 Subject: [PATCH] update SupplierContacts --- .../supplier/SupplierContactsController.php | 6 +- .../lists/supplier/SupplierContactsLists.php | 24 +++--- .../logic/supplier/SupplierContactsLogic.php | 38 +++++---- .../supplier/SupplierContactsValidate.php | 84 +++++++++++++++---- .../model/supplier/SupplierContacts.php | 40 +++++++-- 5 files changed, 140 insertions(+), 52 deletions(-) diff --git a/app/adminapi/controller/supplier/SupplierContactsController.php b/app/adminapi/controller/supplier/SupplierContactsController.php index 45ae52481..8d716cfb9 100644 --- a/app/adminapi/controller/supplier/SupplierContactsController.php +++ b/app/adminapi/controller/supplier/SupplierContactsController.php @@ -16,9 +16,9 @@ namespace app\adminapi\controller\supplier; -use app\adminapi\controller\BaseAdminController; -use app\adminapi\lists\supplier\SupplierContactsLists; -use app\adminapi\logic\supplier\SupplierContactsLogic; +use app\adminapi\controller\BaseAdminController; +use app\adminapi\lists\supplier\SupplierContactsLists; +use app\adminapi\logic\supplier\SupplierContactsLogic; use app\adminapi\validate\supplier\SupplierContactsValidate; diff --git a/app/adminapi/lists/supplier/SupplierContactsLists.php b/app/adminapi/lists/supplier/SupplierContactsLists.php index 293993c3e..61e55f3cf 100644 --- a/app/adminapi/lists/supplier/SupplierContactsLists.php +++ b/app/adminapi/lists/supplier/SupplierContactsLists.php @@ -16,6 +16,7 @@ namespace app\adminapi\lists\supplier; use app\adminapi\lists\BaseAdminDataLists; +use app\common\model\supplier\Supplier; use app\common\model\supplier\SupplierContacts; use app\common\lists\ListsSearchInterface; use think\facade\Db; @@ -38,7 +39,8 @@ class SupplierContactsLists extends BaseAdminDataLists implements ListsSearchInt public function setSearch(): array { return [ - '=' => ['sc.supplier_id', 'sc.name', 'sc.contacts_type'], + '=' => ['supplier_id','contacts_type','contacts_cate','sex'], + '%like%' => ['name'] ]; } @@ -54,16 +56,18 @@ class SupplierContactsLists extends BaseAdminDataLists implements ListsSearchInt */ public function lists(): array { - return Db::name('SupplierContacts')->alias('sc') - ->where($this->searchWhere) - ->whereNull('sc.delete_time') - ->leftJoin('Supplier s','s.id = sc.supplier_id') - ->field('sc.*, s.supplier_code, s.supplier_name') + return SupplierContacts::where($this->searchWhere) + ->field('id,name,sex,birthday,contacts_type,responsible,contacts_cate,department,duties,work_phone,remark') ->limit($this->limitOffset, $this->limitLength) - ->order(['sc.id' => 'desc']) - ->select()->each(function($item, $key){ - //关联数据后续添加 - return $item; + ->order(['id' => 'desc']) + ->select()->each(function($data){ + $supplier = Supplier::field('supplier_code,supplier_name')->where('id',$data['supplier_id'])->findOrEmpty(); + $data['supplier_code'] = $supplier['supplier_code']; + $data['supplier_name'] = $supplier['supplier_name']; + $data['sex_text'] = $data->sex_text; + $data['contacts_type_text'] = $data->contacts_type_text; + $data['contacts_cate_text'] = $data->contacts_cate_text; + return $data; }) ->toArray(); } diff --git a/app/adminapi/logic/supplier/SupplierContactsLogic.php b/app/adminapi/logic/supplier/SupplierContactsLogic.php index 335a2f508..c591d4fb0 100644 --- a/app/adminapi/logic/supplier/SupplierContactsLogic.php +++ b/app/adminapi/logic/supplier/SupplierContactsLogic.php @@ -15,6 +15,7 @@ namespace app\adminapi\logic\supplier; +use app\common\model\supplier\Supplier; use app\common\model\supplier\SupplierContacts; use app\common\logic\BaseLogic; use think\facade\Db; @@ -41,14 +42,14 @@ class SupplierContactsLogic extends BaseLogic Db::startTrans(); try { SupplierContacts::create([ - 'supplier_id' => $params['supplier_id'] ?? 0, - 'name' => $params['name'] ?? '', + 'supplier_id' => $params['supplier_id'], + 'name' => $params['name'], 'sex' => $params['sex'] ?? 0, - 'birthday' => $params['birthday'] ?? '', + 'birthday' => !empty($params['birthday']) ? strtotime($params['birthday']) : 0, 'contacts_type' => $params['contacts_type'] ?? 0, 'responsible' => $params['responsible'] ?? '', 'title' => $params['title'] ?? '', - 'contacts_cate' => $params['contacts_cate'] ?? '', + 'contacts_cate' => $params['contacts_cate'] ?? 0, 'department' => $params['department'] ?? '', 'duties' => $params['duties'] ?? '', 'work_phone' => $params['work_phone'] ?? '', @@ -60,9 +61,8 @@ class SupplierContactsLogic extends BaseLogic 'id_type' => $params['id_type'] ?? 0, 'idcard' => $params['idcard'] ?? '', 'remark' => $params['remark'] ?? '', - 'annex' => $params['annex'] ?? '', + 'annex' => !empty($params['annex']) ? $params['annex'] : null, ]); - Db::commit(); return true; } catch (\Exception $e) { @@ -85,14 +85,14 @@ class SupplierContactsLogic extends BaseLogic Db::startTrans(); try { SupplierContacts::where('id', $params['id'])->update([ - 'supplier_id' => $params['supplier_id'] ?? 0, - 'name' => $params['name'] ?? '', - 'sex' => $params['sex'] ?? 0, - 'birthday' => $params['birthday'] ?? '', + 'supplier_id' => $params['supplier_id'], + 'name' => $params['name'], + 'sex' => $params['sex'] ?? 0, + 'birthday' => !empty($params['birthday']) ? strtotime($params['birthday']) : 0, 'contacts_type' => $params['contacts_type'] ?? 0, 'responsible' => $params['responsible'] ?? '', 'title' => $params['title'] ?? '', - 'contacts_cate' => $params['contacts_cate'] ?? '', + 'contacts_cate' => $params['contacts_cate'] ?? 0, 'department' => $params['department'] ?? '', 'duties' => $params['duties'] ?? '', 'work_phone' => $params['work_phone'] ?? '', @@ -104,9 +104,9 @@ class SupplierContactsLogic extends BaseLogic 'id_type' => $params['id_type'] ?? 0, 'idcard' => $params['idcard'] ?? '', 'remark' => $params['remark'] ?? '', - 'annex' => $params['annex'] ?? '', + 'annex' => !empty($params['annex']) ? $params['annex'] : null, + 'update_time' => time(), ]); - Db::commit(); return true; } catch (\Exception $e) { @@ -139,8 +139,14 @@ class SupplierContactsLogic extends BaseLogic */ public static function detail($params): array { - $supplierContacts = SupplierContacts::findOrEmpty($params['id']); - $supplierContacts->supplier; - return $supplierContacts->toArray(); + $data = SupplierContacts::findOrEmpty($params['id']); + $supplier = Supplier::field('supplier_code,supplier_name')->where('id',$data['supplier_id'])->findOrEmpty(); + $data['supplier_code'] = $supplier['supplier_code']; + $data['supplier_name'] = $supplier['supplier_name']; + $data['sex_text'] = $data->sex_text; + $data['contacts_type_text'] = $data->contacts_type_text; + $data['contacts_cate_text'] = $data->contacts_cate_text; + $data['id_type_text'] = $data->id_type_text; + return $data->toArray(); } } \ No newline at end of file diff --git a/app/adminapi/validate/supplier/SupplierContactsValidate.php b/app/adminapi/validate/supplier/SupplierContactsValidate.php index ec8535f20..28348595a 100644 --- a/app/adminapi/validate/supplier/SupplierContactsValidate.php +++ b/app/adminapi/validate/supplier/SupplierContactsValidate.php @@ -15,6 +15,8 @@ namespace app\adminapi\validate\supplier; +use app\common\model\dict\DictData; +use app\common\model\supplier\Supplier; use app\common\validate\BaseValidate; @@ -31,22 +33,23 @@ class SupplierContactsValidate extends BaseValidate * @var string[] */ protected $rule = [ - 'id' => 'require', - 'supplier_id' => 'require', - 'name' => 'require', - 'contacts_type' => 'require', + 'id' => 'require', + 'supplier_id' => 'require|checkSupplier', + 'name' => 'require', + 'sex' => 'in:0,1', + 'birthday' => 'dateFormat:Y-m-d', + 'contacts_type' => 'checkContactsType', + 'contacts_cate' => 'checkContactsCate', + 'id_type' => 'checkIdType', + 'annex' => 'checkAnnex' ]; - - /** - * 参数描述 - * @var string[] - */ - protected $field = [ - 'id' => 'id', - 'supplier_id' => '供应商id', - 'name' => '姓名', - 'contacts_type' => '联系人分类', + protected $message = [ + 'id.require' => '缺少必要参数', + 'supplier_id.require' => '请选择供应商', + 'name.require' => '请填写姓名', + 'sex.in' => '性别值无效', + 'birthday.dateFormat' => '出生日期数据格式错误', ]; @@ -58,7 +61,7 @@ class SupplierContactsValidate extends BaseValidate */ public function sceneAdd() { - return $this->only(['supplier_id','name','contacts_type']); + return $this->remove('id',true); } @@ -69,9 +72,7 @@ class SupplierContactsValidate extends BaseValidate * @date 2023/12/26 13:47 */ public function sceneEdit() - { - return $this->only(['id','supplier_id','name','contacts_type']); - } + {} /** @@ -96,5 +97,52 @@ class SupplierContactsValidate extends BaseValidate { return $this->only(['id']); } + + public function checkSupplier($value): bool|string + { + $supplier = Supplier::where('id',$value)->findOrEmpty(); + if($supplier->isEmpty()){ + return '供应商信息不存在'; + } + return true; + } + + public function checkContactsType($value): bool|string + { + $dict = DictData::where('type_value','contacts_type')->column('value'); + if(!in_array($value,$dict)){ + return '联系人分类无效'; + } + return true; + } + + public function checkContactsCate($value): bool|string + { + $dict = DictData::where('type_value','contacts_cate')->column('value'); + if(!in_array($value,$dict)){ + return '联系人类型无效'; + } + return true; + } + + public function checkIdType($value): bool|string + { + $dict = DictData::where('type_value','id_type')->column('value'); + if(!in_array($value,$dict)){ + return '证件类型无效'; + } + return true; + } + + public function checkAnnex($value): bool|string + { + if(!empty($value) && $value != ''){ + $annex = json_decode($value,true); + if(empty($annex) || !is_array($annex)){ + return '附件格式错误'; + } + } + return true; + } } \ No newline at end of file diff --git a/app/common/model/supplier/SupplierContacts.php b/app/common/model/supplier/SupplierContacts.php index a0b773f36..a38aa59ac 100644 --- a/app/common/model/supplier/SupplierContacts.php +++ b/app/common/model/supplier/SupplierContacts.php @@ -16,6 +16,7 @@ namespace app\common\model\supplier; use app\common\model\BaseModel; +use app\common\model\dict\DictData; use think\model\concern\SoftDelete; @@ -29,10 +30,39 @@ class SupplierContacts extends BaseModel use SoftDelete; protected $name = 'supplier_contacts'; protected $deleteTime = 'delete_time'; - - public function supplier() - { - return $this->belongsTo(\app\common\model\supplier\Supplier::class, 'supplier_id'); - } + + public function getAnnexAttr($value) + { + return empty($value) ? null : json_decode($value,true); + } + + public function getBirthdayAttr($value): string + { + return !empty($value) ? date('Y-m-d',$value) : ''; + } + + public function getSexTextAttr($value,$data): string + { + $sex = [0=>'男',1=>'女']; + return $sex[$data['sex']]; + } + + public function getContactsTypeTextAttr($value,$data): string + { + $dict = DictData::where('type_value','contacts_type')->column('name','value'); + return $dict[$data['contacts_type']]; + } + + public function getContactsCateTextAttr($value,$data): string + { + $dict = DictData::where('type_value','contacts_cate')->column('name','value'); + return $dict[$data['contacts_cate']]; + } + + public function getIdTypeTextAttr($value,$data): string + { + $dict = DictData::where('type_value','id_type')->column('name','value'); + return $dict[$data['id_type']]; + } } \ No newline at end of file