From 80696495c066be6a3f4e0b08593a20be872055cb Mon Sep 17 00:00:00 2001 From: weiz Date: Fri, 10 Nov 2023 16:10:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=85=AC=E5=8F=B8=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=A8=A1=E5=9D=97=E5=AF=B9=E5=A4=96=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CompanyController.php | 155 +++++++++++++++++- app/middleapi/controller/GeoController.php | 44 +++++ app/middleapi/service/ApiSignService.php | 2 +- 3 files changed, 194 insertions(+), 7 deletions(-) create mode 100644 app/middleapi/controller/GeoController.php diff --git a/app/middleapi/controller/CompanyController.php b/app/middleapi/controller/CompanyController.php index 595909d80..02908976e 100644 --- a/app/middleapi/controller/CompanyController.php +++ b/app/middleapi/controller/CompanyController.php @@ -3,13 +3,20 @@ namespace app\middleapi\controller; use app\adminapi\logic\auth\AdminLogic; + use app\adminapi\validate\CompanyValidate; + use app\api\controller\JunziqianController; use app\common\controller\BaseLikeAdminController; use app\common\logic\CompanyLogic; + use app\common\logic\contract\ContractLogic; + use app\common\logic\RedisLogic; use app\common\model\auth\Admin; use app\common\model\Company; + use app\common\model\contract\Contract; + use app\common\model\dict\DictData; use app\common\model\task_scheduling\TaskScheduling; use app\common\model\user\User; use think\facade\Db; + use think\facade\Log; use think\response\Json; class CompanyController extends BaseLikeAdminController @@ -79,7 +86,9 @@ $count = Company::where($where)->count(); $result = [ 'lists' => $data, - 'count' => $count + 'count' => $count, + 'page_no' => $pageNo, + 'page_size' => $pageSize ]; return $this->success('请求成功',$result); } @@ -116,18 +125,152 @@ return $this->success('删除成功', [], 1, 1); } - //公司认证 - public function enterpriseCertification() { + //添加公司 + public function create(): Json + { + $params = (new CompanyValidate())->post()->goCheck('add'); + $params['other_contacts'] = json_encode($params['other_contacts']); + $params['qualification'] = json_encode($params['qualification']); + $params['area_manager'] = $this->adminId; + if (isset($params['responsible_area'])) { + $params['responsible_area'] = implode(',', $params['responsible_area']); + } + $result = CompanyLogic::add($params); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(CompanyLogic::getError()); + } + //修改公司 + public function edit(): Json + { + $params = (new CompanyValidate())->post()->goCheck('edit'); + $params['other_contacts'] = json_encode($params['other_contacts']); + $params['qualification'] = json_encode($params['qualification']); + if (isset($params['responsible_area'])) { + $params['responsible_area'] = implode(',', $params['responsible_area']); + } + $result = CompanyLogic::edit($params); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(CompanyLogic::getError()); + } + + //公司认证 + public function enterpriseCertification(): Json + { + if(!$this->request->isPost()){ + return $this->fail('请求方式错误'); + } + $params=$this->request->post(['id']); + if(empty($params['id'])){ + return $this->fail('缺少必要参数'); + } + $company = Db::name('company')->where('id', $params['id'])->find(); + $qualification = json_decode($company['qualification'], true); + if ($company && $qualification['business_license']) { + $data = [ + 'name' => $company['company_name'], + 'organization_code' => $company['organization_code'], + 'business_license' => 'https://lihai001.oss-cn-chengdu.aliyuncs.com/def/561f8202305171526091317.png', //$qualification['business_license'], + 'master_name' => $company['master_name'], + 'master_email' => $company['master_email'], + 'master_phone' => $company['master_phone'], + 'master_id_card' => $company['master_id_card'], + 'id' => $company['id'], + ]; + $res = app(JunziqianController::class)->EnterpriseCertification($data); + Log::info(['企业认证同步结果',$res]); + if ($res->success) { + if ($company['company_type'] == 30) { + // 平台公司不用初始化生成合同 合同签约暂不用人脸识别,预留人脸采集状态为已采集 + Db::name('company')->where('id', $params['id'])->update([ 'is_contract'=>1,'face_create_status'=>1]); + } else { + Db::name('company')->where('id', $params['id'])->update([ 'face_create_status'=>1]); + } + // 加入缓存中,is_callback用于判断是否获取到异步通知 + RedisLogic::getInstance()->set('authentication_company_id_'.$company['id'], json_encode(['company_id'=>$company['id'],'is_callback'=>0, 'timing'=>time()])); + return $this->success('系统认证中,请稍后刷新页面查看', ['email' => $res->data], 1, 1); + } else { + return $this->fail($res->msg); + } + } else { + return $this->fail("公司不存在"); + } } //生成合同 - public function generateContract() { - + public function generateContract(): Json + { + if(!$this->request->isPost()){ + return $this->fail('请求方式错误'); + } + $params=$this->request->post(['id','party_a','contract_type']); + if(empty($params['id']) || empty($params['party_a']) || empty($params['contract_type'])){ + return $this->fail('缺少必要参数'); + } + $area_manager = Company::where('id', $params['party_a'])->value('area_manager'); + $params['area_manager'] = $area_manager; + $params['type'] = 1; + $params['party_b'] = $params['id']; + unset($params['id']); + $result = ContractLogic::initiate_contract($params); + if (!empty($result) && $result['code'] == 1) { + return $this->success($result['msg'], $result['data'], 1, 1); + } + return $this->fail(ContractLogic::getError()); } //下属公司 - public function subsidiaryCompany() { + public function subsidiaryCompany(): Json + { + if(!$this->request->isPost()){ + return $this->fail('请求方式错误'); + } + $params=$this->request->post(['id','page_no','page_size']); + if(empty($params['id'])){ + return $this->fail('缺少必要参数'); + } + $pageNo = !empty($params['page_no']) ? $params['page_no'] : 1; + $pageSize = !empty($params['page_size']) ? $params['page_size'] : 20; + $ids = Contract::where('party_a', $params['id'])->where('status', 1)->where('type', 1)->column('party_b'); + if ($ids) { + $result = Company::where('id', 'in', $ids)->field('company_name,id,company_type,company_type company_type_name,area,area area_name,street,street street_name,is_contract,area_manager,area_manager area_manager_name,master_name,master_phone,is_authentication')->page($pageNo,$pageSize)->select(); + $count = Company::where('id', 'in', $ids)->count(); + } else { + $result = []; + $count = 0; + } + $data = [ + 'lists' => $result, + 'count' => $count, + 'page_no' => $pageNo, + 'page_size' => $pageSize + ]; + return $this->success('success', $data); + } + //公司类型 + public function companyType(): Json + { + $data = DictData::where('type_id',6) + ->append(['status_desc']) + ->order(['sort' => 'desc', 'id' => 'desc']) + ->select() + ->toArray(); + return $this->success('请求成功',$data); + } + + //合同类型 + public function contractType(): Json + { + $data = DictData::where('type_id',7) + ->append(['status_desc']) + ->order(['sort' => 'desc', 'id' => 'desc']) + ->select() + ->toArray(); + return $this->success('请求成功',$data); } } \ No newline at end of file diff --git a/app/middleapi/controller/GeoController.php b/app/middleapi/controller/GeoController.php new file mode 100644 index 000000000..7f6668dd6 --- /dev/null +++ b/app/middleapi/controller/GeoController.php @@ -0,0 +1,44 @@ +where(['switch' => 1])->select(); + return $this->data($data->toArray()); + } //**市列表 */ + public function city($city) + { + $data = Db::name('geo_city')->where(['province_code' => $city])->select(); + return $this->data($data->toArray()); + } + //**区域列表 */ + public function area($area) + { + $data = Db::name('geo_area')->where(['city_code' => $area])->select(); + return $this->data($data->toArray()); + } + //**街道列表 */ + public function street($street) + { + $data = Db::name('geo_street')->where(['area_code' => $street])->select(); + return $this->data($data->toArray()); + } + //**村列表 */ + public function village($village) + { + $data = Db::name('geo_village')->where(['street_code' => $village])->select(); + return $this->data($data->toArray()); + } + //**小队列表 */ + public function brigade() + { + $data = Db::name('geo_brigade')->select(); + return $this->data($data->toArray()); + } + } \ No newline at end of file diff --git a/app/middleapi/service/ApiSignService.php b/app/middleapi/service/ApiSignService.php index 492de7b44..674573c0a 100644 --- a/app/middleapi/service/ApiSignService.php +++ b/app/middleapi/service/ApiSignService.php @@ -24,7 +24,7 @@ class ApiSignService public static function verifySign($data,$appSecret): array { // 验证请求, 2分钟失效 - if (time() - $data['timestamp'] > 120) { + if (time() - $data['timestamp'] > 20) { return ['code' => 0, 'msg' => '签名已失效']; } //比对签名