find(); // if (!empty($exist)) { // throw new ValidateException('该账号已经注册过企业'); // } $level_one = $params['contract']['party_a'] ?? 0; $data = Company::create([ // 'level_two' => $params['level_two'], // 'level_one' => $params['level_one'], 'company_name' => $params['company_name'], 'organization_code' => $params['organization_code'], 'province' => $params['province'], 'city' => $params['city'], 'area' => $params['area'], 'street' => $params['street'], 'address' => $params['address'], 'company_type' => $params['company_type'], 'master_name' => $params['master_name'], 'master_position' => $params['master_position'], 'master_phone' => $params['master_phone'], 'master_email' => $params['master_email'], 'other_contacts' => $params['other_contacts'], 'area_manager' => $params['area_manager'] ?? 0, // 'is_contract' => $params['is_contract'], // 'account' => $params['account'], // 'password' => $params['password'], // 'deposit' => $params['deposit'], // 'deposit_time' => $params['deposit_time'], 'qualification' => $params['qualification'], 'admin_id' => $params['admin_id'] ?? 0, 'level_one' => $level_one, // 'status' => $params['status'] ]); if ($level_one > 0) { $contractId = self::contract($data['id'], $params); } Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } /** * @notes 编辑 * @param array $params * @return bool * @author likeadmin * @date 2023/07/15 14:43 */ public static function edit(array $params): bool { Db::startTrans(); try { Company::where('id', $params['id'])->update([ // 'level_two' => $params['level_two'], // 'level_one' => $params['level_one'], 'company_name' => $params['company_name'], 'organization_code' => $params['organization_code'], 'province' => $params['province'], 'city' => $params['city'], 'area' => $params['area'], 'street' => $params['street'], 'address' => $params['address'], 'company_type' => $params['company_type'], 'master_name' => $params['master_name'], 'master_position' => $params['master_position'], 'master_phone' => $params['master_phone'], 'master_email' => $params['master_email'], 'other_contacts' => $params['other_contacts'], 'area_manager' => $params['area_manager'] ?? 0, // 'is_contract' => $params['is_contract'], // 'account' => $params['account'], // 'password' => $params['password'], // 'deposit' => $params['deposit'], // 'deposit_time' => $params['deposit_time'], 'qualification' => $params['qualification'], 'admin_id' => $params['admin_id'] ?? 0, 'level_one' => $params['contract']['party_a'] ?? 0, // 'status' => $params['status'] ]); if ($params['contract']) { $contractId = self::contract($params['id'], $params); Company::update(['contract_id' => $contractId], ['id' => $params['id']]); } if ($params['admin_id']) { $admin = Admin::where('company_id', $params['id'])->find(); Admin::where('id', $params['admin_id'])->update(['company_id' => $params['id']]); User::where('admin_id', $params['admin_id'])->update(['company_id' => $params['id'], 'qualification' => $params['qualification'], 'province' => $params['province'], 'city' => $params['city'], 'area' => $params['area'], 'street' => $params['street'], 'address' => $params['address'], 'is_contract' => $admin['is_contract'], 'mobile' => $admin['phone']]); if ($admin['id'] != $params['admin_id']) { Admin::where('id', $admin['id'])->update(['company_id' => 0]); User::where('admin_id', $admin['id'])->update(['company_id' => 0]); } } Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage(), $e->getFile()); return false; } } /** * @notes 删除 * @param array $params * @return bool * @author likeadmin * @date 2023/07/15 14:43 */ public static function delete(array $params): bool { return Company::destroy($params['id']); } /** * @notes 获取详情 * @param $params * @return array * @author likeadmin * @date 2023/07/15 14:43 */ public static function detail($params): array { $data = Company::findOrEmpty($params['id'])->toArray(); if ($data) { $data['other_contacts'] = json_decode($data['other_contacts'], true); $data['qualification'] = json_decode($data['qualification'], true); $data['admin_name'] = Db::name('admin')->where('id', $data['admin_id'])->value('name'); $data['area_manager_name'] = Db::name('admin')->where('id', $data['area_manager'])->value('name'); $data['contract'] = Db::name('contract')->where('party_b', $data['id']) ->withAttr('party_a_name', function ($value, $data) { return Db::name('company')->where('id', $data['party_a'])->value('company_name'); }) ->find(); } return $data; } public static function contract($companyId, $params) { $model = Contract::where(['party_b' => $companyId])->find(); if (empty($model)) { $model = new Contract(); $model->contract_no = time(); $model->create_time = time(); $model->type = 1; } $model->update_time = time(); $model->party_a = $params['contract']['party_a'] ?? 0; $model->contract_type = $params['contract']['contract_type'] ?? 0; $model->file = $params['contract']['file'] ?? ''; $model->party_b = $companyId; $model->save(); return $model->id; } public static function getAllCompanyIds() { $companyId = request()->adminInfo['company_id'] ?? 0; $companyIds[] = $companyId; $companies = loopGetChild(Company::class, $companyId, 'level_one', 'id,level_one'); if (!empty($companies)) { $companyIds = array_merge(array_column($companies, 'id'), $companyIds); } return array_filter($companyIds); } //**发起合同 */ public static function initiate_contract($params) { $find = Db::name('company')->where('id', $params['party_b'])->value('is_contract'); if ($find == 1) { return self::setError('该公司已签约无法发起合同'); } $params['check_status'] = 1; $res = Contract::Initiate_contract($params); if (true === $res) { return true; } return self::setError('发起失败'); } // /**生成合同 */ public static function Draftingcontracts($params) { $result = self::detail($params); if ($result && $result['contract'] && $result['contract']['file'] != '') { $data = [ 'name' => $result['company_name'] . '合同', 'signatories' => [['fullName' => $result['company_name'], 'identityType' => 12, 'identityCard' => $result['organization_code'], 'email' => $result['master_email'], 'noNeedVerify' => 1, 'signLevel' => 1]], 'url' => $result['contract']['file'] ]; $res = app(JunziqianController::class)->Signing($data, $result['contract']['id']); if ($res->success == true) { Db::name('contract')->where('id', $result['contract']['id'])->update(['contract_no' => $res->data, 'check_status' => 3]); $company = Db::name('company')->where('id', $params['id'])->find(); if ($company) { $find = Db::name('contract')->where('party_b', $company['id']) ->withAttr('contract_type_name', function ($value, $data) { return Db::name('dict_data')->where('id', $data['contract_type'])->value('name'); })->find(); if ($find) { $data = array( "applyNo" => $find['contract_no'], //TODO * "fullName" => $company['company_name'], //TODO * "identityCard" => $company['organization_code'], //TODO * "identityType" => 12, //TODO * ); $res = app(JunziqianController::class)->SigningLink($data); if ($res->success == true) { Db::name('contract')->where('id', $find['id'])->update(['url' => $res->data]); //发送短信 $sms = [ 'mobile' => $company['master_phone'], 'name' => $company['company_name'], 'type' => '《' . $find['contract_type_name'] . '》', 'code' => 'api/Hetong/url?id=' . $find['id'], 'scene' => 'WQ' ]; $result = SmsLogic::contractUrl($sms); if (true === $result) { return true; } else { return self::setError(SmsLogic::getError()); } } else { return self::setError($res->msg); } } } return true; } else { return self::setError($res->msg); } } else { return self::setError('生成合同成功失败,联系管理员'); } } }