dataLists(new CompanyLists()); } public function list_two() { return $this->success('ok', (new CompanyLists())->list_two()); } /** * @notes 添加 * @return \think\response\Json * @author likeadmin * @date 2023/07/15 14:43 */ public function add() { $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()); } /** * @notes 编辑 * @return \think\response\Json * @author likeadmin * @date 2023/07/15 14:43 */ public function edit() { $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()); } /** * @notes 删除 * @return \think\response\Json * @author likeadmin * @date 2023/07/15 14:43 */ public function delete() { $params = (new CompanyValidate())->post()->goCheck('delete'); $admin_id = Company::where('id', $params['id'])->value('admin_id'); User::where('company_id', $params['id'])->update(['delete_time' => time()]); TaskScheduling::where('company_id', $params['id'])->update(['delete_time' => time()]); AdminLogic::delete(['id' => $admin_id]); CompanyLogic::delete($params); return $this->success('删除成功', [], 1, 1); } /** * @notes 获取详情 * @return \think\response\Json * @author likeadmin * @date 2023/07/15 14:43 */ public function detail() { $params = (new CompanyValidate())->goCheck('detail'); $result = CompanyLogic::detail($params); return $this->data($result); } //**发起合同 */ public function initiate_contract() { $params = $this->request->param(); if (isset($params['party_a']) && $params['party_a'] > 0) { $params['party_a'] = $params['party_a']; } else { $params['party_a'] = $this->adminInfo['company_id']; } //判断是否是租赁合同 //如果是租赁合同则必须传递租赁数量参数 // if($params['contract_type'] == 29) { // if(empty($params['num'])){ // 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 Draftingcontracts() { $params = $this->request->param(); $result = ContractLogic::Draftingcontracts($params); if ($result == true) { return $this->success('发送合同成功', [], 1, 1); } return $this->fail(ContractLogic::getError()); } //**发送短信 */ public function postsms() { $params = (new CompanyValidate())->goCheck('detail'); $id = Contract::where('party_b', $params['id'])->value('id'); $res = ContractLogic::postsms(['id' => $id]); if ($res == true) { return $this->success('发送成功', [], 1, 1); } else { return $this->fail(ContractLogic::getError()); } } //企业认证 public function authentication() { $params = (new CompanyValidate())->goCheck('detail'); $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 == true) { // 企业人脸上传 // $company['master_email'] = $email; // 法人邮箱 // $faceCreateRe = CompanyLogic::originationFaceCreate($company); // if ($faceCreateRe !== true) { // return $this->fail($faceCreateRe); // } // 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('认证成功',[],1, 1); return $this->success('系统认证中,请稍后刷新页面查看', ['email' => $res->data], 1, 1); } else { return $this->fail($res->msg); } } else { return $this->fail("公司不存在"); } } //重新认证 public function organizationReapply() { $params = (new CompanyValidate())->goCheck('detail'); $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'], ]; $res = app(JunziqianController::class)->organizationReapply($data); if ($res->success == true) { Db::name('company')->where('id', $params['id'])->update(['master_email' => $res->data, 'face_create_status'=>1]); //todo 上人脸采集功能时 return $this->success('系统认证中,请稍后刷新页面查看', ['email' => $res->data], 1, 1); } else { return $this->fail($res->msg); } } } // 企业人脸校验上传 public function organizationFaceCreate() { $params = (new CompanyValidate())->goCheck('detail'); $company = Db::name('company')->where('id', $params['id'])->find(); $re = CompanyLogic::originationFaceCreate($company); if ($re === true) { return $this->success('人脸采集中,请稍后刷新页面查看',[],1, 1); } else { return $this->fail($re); } } private function companyCheck($company) { if (empty($company)) { return $this->fail("公司不存在"); } if(empty($company['master_id_card'])) { return $this->fail("主联系人证件号为空,无法上传企业人脸"); } if(empty($company['master_email'])) { return $this->fail("主联系人邮箱为空,无法上传企业人脸"); } } public function userList() { $existUsers = Company::where('status', '<>', -1)->column('admin_id'); $existUsers = array_unique($existUsers); $users = Admin::whereNotIn('id', $existUsers)->field('id,name,avatar')->select()->toArray(); return $this->success('success', $users); } /** * 所有成员公司 * @param $id * @return \think\response\Json * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function subordinate($company_id) { $ids = Contract::where('party_a', $company_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')->select(); } else { $result = []; } $data['lists'] = $result; return $this->success('success', $data); } public function responsible_area() { $parmas = $this->request->param(); if (!isset($parmas['key']) && isset($parmas['key']) == '' || !isset($parmas['value']) && isset($parmas['value']) == '') { return $this->fail('参数错误'); } if ($parmas['key'] == 'city') { $where[] = ['area', '=', 0]; } if ($parmas['value'] == '') { return $this->fail('参数不能为空'); } $where[] = [$parmas['key'], '=', $parmas['value']]; $where[] = ['company_type', '=', $parmas['company_type']]; switch ($parmas['key']) { case 'city': // $geo_area=Db::name('geo_area')->where('city_code', '=', $parmas['value'])->column('area_code'); // $where[] = ['area', 'in', $geo_area]; break; case 'area': $street_code = Db::name('geo_street')->where('area_code', '=', $parmas['value'])->column('street_code'); $where[] = ['street', 'in', $street_code]; $where[] = ['village', '=', 0]; break; case 'street': $street_code = Db::name('geo_village')->where('street_code', '=', $parmas['value'])->column('village_code'); $where[] = ['village', 'in', $street_code]; $where[] = ['brigade', '=', 0]; break; case 'village': // $street_code = Db::name('geo_brigade')->where('street_code', '=', $parmas['value'])->column('village_code'); $where[] = ['village', '=', $parmas['value']]; // $where[] = ['brigade', '=', 0]; break; } $res = Company::where($where)->column('responsible_area'); foreach ($res as $k => $v) { $res[$k] = explode(',', $v); } $data = []; foreach ($res as $k => $v) { foreach ($v as $kk => $vv) { if ($vv != '') { $data[] = $vv; } } } return $this->success('success', array_unique($data)); } public function createShopMerchant() { try { $params = $this->request->param(); Log::info(['商户入驻申请-请求参数', $params]); // if (empty($params['company_name'])) { // throw new Exception('商户名称不能为空'); // } // if (empty($params['organization_code'])) { // throw new Exception('社会统一信用代码不能为空'); // } // if (empty($params['master_name'])) { // throw new Exception('商户法人名称不能为空'); // } // $master_email=Db::name('company_form')->where('organization_code',$params['organization_code'])->value('master_email'); // // $isQueryStatus = false; // 需要进一步查询是否已做过企业认证 // // $master_email为空表示没有做过认证 // if($master_email){ // $isQueryStatus = true;asdasd,fsdfdf // }else{ // $master_email=substr(md5(uniqid()),rand(0, 22),10)."@lihai.com"; // } // 市级供应链直接和海之农签约 if (isset($params['type_id']) && $params['type_id'] == 12) { $company = Company::where(['company_name' => '泸州市海之农科技有限公司'])->find(); } else { // 根据street码查询所属镇农科公司 $company_select=Db::query("select * from la_company where company_type=:company_type and FIND_IN_SET(:street,responsible_area)", ['company_type' => 41,'street'=>$params['street']], true); if(empty($company_select)) { throw new Exception('当前区域无镇农科公司'); } $company=$company_select[0]; } $data = [ 'mer_intention_id' => $params['mer_intention_id']??'', // 商城商户入驻申请id,签约完成后回调使用 'company_name' => $params['company_name']??'', 'mer_name' => $params['mer_name']??'', // 店铺名称 'organization_code' => $params['organization_code']??'', 'city' => $params['city']??'', 'area' => $params['area']??'', 'street' => $params['street']??'', 'address' => $params['address']??'', 'master_name' => $params['master_name']??'', 'master_phone' => $params['master_phone']??'', 'master_email' => $master_email??'', 'type_name' => $params['type_name'] ?? '', //店铺类型 'category_name' => $params['category_name'] ?? '', //商户分类 'qualification' => !empty($params['images'])?$params['images']:json_encode([]) ]; $approveModel = new Approve(); $shopApproveType = $params['type']; // 商户申请类型 1入驻 2开通交易 // 插入审批流 $approveModel->type = $shopApproveType == 1? 2: 3; // 审批类型,后台配置 1 其他任务 2商户入驻 3开通交易 $approveModel->flow_id = 2; $approveModel->name = $shopApproveType == 1? '商户入驻审批': '开通交易审批'; $approveModel->admin_id = 0; // 后台发起人id 暂时为0 $approveModel->department_id = '0'; $approveModel->check_admin_ids = $company['admin_id']; // 当前审批人ID 镇农科公司负责人 $approveModel->check_status = 1; // 状态 0待审核,1审核中,2审核通过,3审核不通过,4撤销审核 $approveModel->other_type = 6; $approveModel->extend = json_encode(array_merge($params, $data)); $approveModel->create_time = time(); $approveModel->update_time = time(); $approveModel->save(); // $shopMerchantModel = ShopMerchant::create($data); // 如果是通滩镇的商户,查询一下企业认证状态,通过的情况,则直接发起生成合同 // if ($params['street'] == '510502106' && $isQueryStatus) { // $statusRe = app(JunziqianController::class)->shopMerchantStatusQuery($master_email); // Log::info(['商户入驻请求-通滩镇商户-认证状态查询结果', $statusRe]); // if($statusRe->success == true) { // $statusData = json_decode($statusRe->data, true); // if ($statusData['status'] == 1) { // // 生成合同 // $createContractData = [ // 'id' => $shopMerchantModel->id, // 'party_a' => 1, // 'party_a_name' => '泸州市海之农科技有限公司', // 'party_b' => $shopMerchantModel->id, // 'party_b_name' => $params['company_name'], // 'contract_type' => 22, // ]; // $shopContractModel = new ShopContract(); // $shopContractModel->contract_no = time(); // $shopContractModel->create_time = time(); // $shopContractModel->check_status = 1; // $shopContractModel->update_time = time(); // $shopContractModel->setAttrs($createContractData); // $shopContractModel->save($createContractData); // return $this->success('已做过企业认证,直接生成合同成功', [], 1, 1); // } // } // // } // if (!$shopMerchantModel->isEmpty()) { // // 自动发起企业认证 // $shopMerchantCertificationData = [ // 'name' => $shopMerchantModel->company_name, // 'organization_code' => $shopMerchantModel->organization_code, // 'business_license' => 'https://lihai001.oss-cn-chengdu.aliyuncs.com/def/561f8202305171526091317.png', // 'master_name' => $shopMerchantModel->master_name, // 'master_email' => $shopMerchantModel->master_email, // 'master_phone' => $shopMerchantModel->master_phone, // 'id' => $shopMerchantModel->id, // ]; // app(JunziqianController::class)->ShopMerchantCertification($shopMerchantCertificationData); // } else { // throw new Exception('商户创建失败'); // } return $this->success('审批创建成功', [], 1, 1); } catch (Exception $exception) { Log::error(['商户入驻审批失败', $exception->getMessage()]); return $this->fail($exception->getMessage()); } } // 押金凭证录入,并将押金写入公司押金账户,新增一条押金充值流水 public function depositRechargeTransferVoucher() { try { $param = $this->request->param(); Db::startTrans(); $data = [ 'company_id' => $param['company_id'], 'deposit' => $param['deposit'], 'voucher' => $param['voucher'], 'create_admin_id' => $this->adminId, 'create_time' => time(), 'update_time' => time() ]; $result = (new CompanyDepositVoucher())->save($data); $companyModel = Company::where(['id' => $param['company_id']])->find(); $left_amount = bcadd($companyModel['deposit'], $param['deposit'], 2); // 添加流水记录 $datas = [ 'sn' => generate_sn(CompanyAccountLog::class, 'sn', 20), 'user_id' => 0, 'company_id' => $param['company_id'], 'change_type' => CompanyAccountLog::COMPANY_DEPOSIT, 'change_object' => CompanyAccountLog::DEPOSIT, 'action' => 1, 'change_amount' => $param['deposit'], 'left_amount' =>$left_amount, 'remark' => '后台押金转账凭证充值', 'status' => 1, ]; CompanyAccountLog::create($datas); // 更新公司押金金额 $companyModel->deposit = $left_amount; $companyModel->save(); Db::commit(); return $this->success('成功'); } catch (Exception $exception) { Db::rollback(); return $this->fail($exception->getMessage()); } } public function getPartyA() { $companyId = $this->request->param('company_id'); $re = CompanyLogic::getPartyA($companyId); if ($re === false) { return $this->fail(CompanyLogic::getError()); } return $this->success('成功', $re); } public function getDepositRechargeTransferVoucherList() { $companyId = $this->request->param('company_id'); $re = (new CompanyLists())->list_three($companyId); return $this->success('成功', $re); } public function depositRechargeTransferVoucherDetail() { $param = $this->request->param(); $companyDepositVoucher = CompanyDepositVoucher::where(['id' => $param['id']])->findOrEmpty()->toArray(); if (empty($companyDepositVoucher)) { return $this->fail('数据不存在'); } $contract = Contract::where(['party_b'=>$companyDepositVoucher['company_id']])->with(['partyA', 'partyB'])->findOrEmpty()->toArray(); return $this->success('成功', array_merge($companyDepositVoucher, $contract)); } }