diff --git a/app/adminapi/controller/CompanyController.php b/app/adminapi/controller/CompanyController.php
index 390009a4d..eaa83aa2a 100644
--- a/app/adminapi/controller/CompanyController.php
+++ b/app/adminapi/controller/CompanyController.php
@@ -21,13 +21,16 @@ use app\adminapi\logic\auth\AdminLogic;
use app\common\logic\CompanyLogic;
use app\adminapi\validate\CompanyValidate;
use app\api\controller\JunziqianController;
+use app\common\logic\RedisLogic;
use app\common\model\auth\Admin;
use app\common\model\Company;
+use think\cache\driver\Redis;
use think\facade\Db;
use app\common\logic\contract\ContractLogic;
use app\common\model\contract\Contract;
use app\common\model\task_scheduling\TaskScheduling;
use app\common\model\user\User;
+use think\facade\Log;
/**
* Company控制器
@@ -152,7 +155,7 @@ class CompanyController extends BaseAdminController
unset($params['id']);
$result = ContractLogic::initiate_contract($params);
if (!empty($result) && $result['code'] == 1) {
- return $this->success($result['msg'], $result['data']);
+ return $this->success($result['msg'], $result['data'], 1, 1);
}
return $this->fail(ContractLogic::getError());
}
@@ -198,16 +201,24 @@ class CompanyController extends BaseAdminController
'id' => $company['id'],
];
$res = app(JunziqianController::class)->EnterpriseCertification($data);
+ Log::info(['企业认证同步结果',$res]);
if ($res->success == true) {
- $email = substr(uniqid(),2,5).$res->data;
// 企业人脸上传
// $company['master_email'] = $email; // 法人邮箱
// $faceCreateRe = CompanyLogic::originationFaceCreate($company);
// if ($faceCreateRe !== true) {
// return $this->fail($faceCreateRe);
// }
- // 修改法人邮箱
- Db::name('company')->where('id', $params['id'])->update(['master_email' => $email]);
+ //
+ 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 {
@@ -235,7 +246,7 @@ class CompanyController extends BaseAdminController
];
$res = app(JunziqianController::class)->organizationReapply($data);
if ($res->success == true) {
- Db::name('company')->where('id', $params['id'])->update(['master_email' => $res->data]);
+ 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);
@@ -250,7 +261,7 @@ class CompanyController extends BaseAdminController
$company = Db::name('company')->where('id', $params['id'])->find();
$re = CompanyLogic::originationFaceCreate($company);
if ($re === true) {
- return $this->success('成功',[],1, 1);
+ return $this->success('人脸采集中,请稍后刷新页面查看',[],1, 1);
} else {
return $this->fail($re);
}
diff --git a/app/adminapi/controller/contract/ContractController.php b/app/adminapi/controller/contract/ContractController.php
index dd4ec7e8d..dfa6a1a5b 100644
--- a/app/adminapi/controller/contract/ContractController.php
+++ b/app/adminapi/controller/contract/ContractController.php
@@ -114,14 +114,14 @@ class ContractController extends BaseAdminController
{
$params = Request::param();
$file = $params['file'];
- $res = Contract::where('id', $params['id'])->update(['file' => $file,'check_status'=>2]);
+ $res = Contract::where('id', $params['id'])->update(['file' => $file, 'check_status' => 2]);
if ($res) {
- $find=Contract::where('id', $params['id'])->with(['party_a_info'])->field('type,party_b,party_a')
- ->find()->toArray();
- if($find['type']==1){
- $find['party_b_info'] =Company::where('id', $find['party_b'])->field('company_name name,master_phone phone')->find()->toArray();
- }else{
- $find['party_b_info'] =User::where('id', $find['party_b'])->field('nickname name,mobile phone')->find()->toArray();
+ $find = Contract::where('id', $params['id'])->with(['party_a_info'])->field('type,party_b,party_a')
+ ->find()->toArray();
+ if ($find['type'] == 1) {
+ $find['party_b_info'] = Company::where('id', $find['party_b'])->field('company_name name,master_phone phone')->find()->toArray();
+ } else {
+ $find['party_b_info'] = User::where('id', $find['party_b'])->field('nickname name,mobile phone')->find()->toArray();
}
$a = [
'mobile' => $find['party_a_info']['master_phone'],
@@ -137,45 +137,62 @@ class ContractController extends BaseAdminController
SmsLogic::contractUrl($b);
return $this->success('上传成功', [], 1, 1);
} else {
- if($res==0){
+ if ($res == 0) {
return $this->success('没有更新', [], 1, 1);
}
return $this->fail('上传失败');
}
}
- //**发送短信 */ 接口可能要做调整
-
- public function postsms()
- {
- $params = Request::param();
- $find = Db::name('contract')->where('id', $params['id'])
- ->withAttr('contract_type_name', function ($value, $data) {
- return Db::name('dict_data')->where('id', $data['contract_type'])->value('name');
- })
- ->withAttr('user_info', function ($value, $data) {
- if($data['type']==1){
- return Db::name('admin')->where('id', $data['party_b'])->field('name,phone')->find();
- }else{
- return Db::name('user')->where('id', $data['party_b'])->field('nickname name,mobile phone')->find();
- }
- })
- ->find();
- if ($find && $find['url'] != '') {
- //发送短信
- $sms = [
- 'mobile' => $find['user_info']['phone'],
- 'name' => $find['user_info']['name'],
- 'type' => '《' . $find['contract_type_name'] . '》',
- 'code' => 'api/Hetong/url?id=' . $find['id'],
- 'scene' => 'WQ'
- ];
- $result = SmsLogic::contractUrl($sms);
- if (true === $result) {
- return $this->success('发送成功');
+ //**发送短信 */ 接口可能要做调整
+
+ public function postsms()
+ {
+ $params = Request::param();
+ $find = Db::name('contract')->where('id', $params['id'])
+ ->withAttr('contract_type_name', function ($value, $data) {
+ return Db::name('dict_data')->where('id', $data['contract_type'])->value('name');
+ })
+ ->withAttr('user_info', function ($value, $data) {
+ if ($data['type'] == 1) {
+ return Db::name('admin')->where('id', $data['party_b'])->field('name,phone')->find();
} else {
- return $this->fail(SmsLogic::getError());
+ return Db::name('user')->where('id', $data['party_b'])->field('nickname name,mobile phone')->find();
}
+ })
+ ->find();
+ if ($find && $find['url'] != '') {
+ //发送短信
+ $sms = [
+ 'mobile' => $find['user_info']['phone'],
+ 'name' => $find['user_info']['name'],
+ 'type' => '《' . $find['contract_type_name'] . '》',
+ 'code' => 'api/Hetong/url?id=' . $find['id'],
+ 'scene' => 'WQ'
+ ];
+ $result = SmsLogic::contractUrl($sms);
+ if (true === $result) {
+ return $this->success('发送成功');
+ } else {
+ return $this->fail(SmsLogic::getError());
}
}
+ }
+
+ public function evidence()
+ {
+ $id = Request::param('id');
+ $detail=Contract::where('id',$id)->find();
+ if(!empty($detail['evidence_url'])){
+ return $this->success('获取成功', ['url' => env('url.url_prefix').$detail['evidence_url']]);
+ }
+ $company=Company::where('id',$detail['party_a'])->find();
+ $request = array(
+ "applyNo" => $detail['contract_no'],
+ "fullName" => $company['company_name'],
+ "identityCard" => $company['organization_code'],
+ "identityType" => 12,
+ );
+ return app(JunziqianController::class)->EvidenceDownload($request);
+ }
}
diff --git a/app/adminapi/controller/contract/VehicleContractController.php b/app/adminapi/controller/contract/VehicleContractController.php
index 92cf31c9e..b356fcb2e 100644
--- a/app/adminapi/controller/contract/VehicleContractController.php
+++ b/app/adminapi/controller/contract/VehicleContractController.php
@@ -46,12 +46,6 @@ class VehicleContractController extends BaseAdminController
]);
VehicleContract::where('id', $params['id'])->update(['file' => $params['file'],'cars_info' => $params['cars'],'status'=>1]);
}else{
- //更新物流系统
- curl_post(env('project.logistic_domain').'/api/contractUpdate',[],[
- 'id' => $vehicle_contract['contract_logistic_id'],
- 'file' => $params['file'],
- 'status' => 1,
- ]);
VehicleContract::where('id', $params['id'])->update(['file' => $params['file'],'status'=>1]);
}
@@ -172,6 +166,11 @@ class VehicleContractController extends BaseAdminController
'contract_no' => $signRes->data,
'status' => 2
]);
+ curl_post(env('project.logistic_domain').'/api/contractUpdate',[],[
+ 'id' => $contract['contract_logistic_id'],
+ 'contract_no' => $signRes->data,
+ 'status' => 2,
+ ]);
$this->sendSms($params['id'],'《租赁合同》');
return $this->success('合同发送成功');
} else {
diff --git a/app/adminapi/controller/finance/WithdrawController.php b/app/adminapi/controller/finance/WithdrawController.php
index bb70631a8..ab5743567 100644
--- a/app/adminapi/controller/finance/WithdrawController.php
+++ b/app/adminapi/controller/finance/WithdrawController.php
@@ -3,22 +3,26 @@
namespace app\adminapi\controller\finance;
use app\adminapi\controller\BaseAdminController;
+use app\adminapi\lists\finance\WithdrawLists;
+use app\common\logic\finance\WithdrawLogic;
use app\common\model\user\Withdraw;
+use think\Exception;
class WithdrawController extends BaseAdminController
{
public function index()
{
- [$page, $limit] = $this->getPage();
- $status = $this->request->param('status');
- $query = Withdraw::with('user');
- if ($status !== '') {
- $query->where('status', $status);
- }
- $count = $query->count();
- $list = $query->order('id', 'desc')->page($page)->limit($limit)->select()->toArray();
- return $this->success('success', ['count' => $count, 'data' => $list]);
+ return $this->dataLists(new WithdrawLists());
+// [$page, $limit] = $this->getPage();
+// $status = $this->request->param('status');
+// $query = Withdraw::with('user');
+// if ($status !== '') {
+// $query->where('status', $status);
+// }
+// $count = $query->count();
+// $list = $query->order('id', 'desc')->page($page)->limit($limit)->select()->toArray();
+// return $this->success('success', ['count' => $count, 'data' => $list]);
}
public function update($id)
@@ -37,4 +41,20 @@ class WithdrawController extends BaseAdminController
return $this->success('操作成功', [], 1, 1);
}
+ /**
+ * 提现申请审核
+ */
+ public function audit()
+ {
+ try {
+ $params = $this->request->param();
+ $re = WithdrawLogic::audit($params);
+ if (!$re) {
+ return $this->fail(WithdrawLogic::getError());
+ }
+ return $this->success('操作成功', [], 1, 1);
+ } catch (Exception $exception) {
+ return $this->fail($exception->getMessage());
+ }
+ }
}
\ No newline at end of file
diff --git a/app/adminapi/lists/CompanyLists.php b/app/adminapi/lists/CompanyLists.php
index 8a7835fc9..5cffae93e 100644
--- a/app/adminapi/lists/CompanyLists.php
+++ b/app/adminapi/lists/CompanyLists.php
@@ -88,9 +88,10 @@ class CompanyLists extends BaseAdminDataLists implements ListsSearchInterface
}
return Company::where($this->searchWhere)
->where($where)
- ->field(['is_authentication','id', 'id contract', 'company_name', 'organization_code', 'city', 'area', 'street', 'company_type', 'master_name', 'master_position', 'master_phone', 'master_email', 'area_manager', 'is_contract', 'deposit', 'deposit_time', 'status'])
+ ->field(['is_authentication','id', 'id contract', 'company_name', 'organization_code', 'city', 'area', 'street', 'company_type', 'master_name', 'master_position', 'master_phone', 'master_email', 'area_manager', 'is_contract', 'deposit', 'deposit_time', 'status', 'face_create_status'])
->limit($this->limitOffset, $this->limitLength)
->order(['id' => 'desc'])
+ ->append(['notes'], true)
->withAttr('company_type',function($value,$data){
return Db::name('dict_data')->where('id',$value)->value('name');
})
@@ -103,6 +104,14 @@ class CompanyLists extends BaseAdminDataLists implements ListsSearchInterface
->withAttr('area_manager',function($value,$data){
return Db::name('admin')->where('id',$value)->value('name');
})
+ ->withAttr('notes',function($value,$data){
+ if ($data['is_authentication'] == 1) {
+ return Db::name('company_authentication_fail_log')->where('company_id',$data['id'])->where('log_type', 2)->order(['id'=>'desc'])->limit(1)->value('fail_reason');
+ } else {
+ return Db::name('company_authentication_fail_log')->where('company_id',$data['id'])->where('log_type', 1)->order(['id'=>'desc'])->limit(1)->value('fail_reason');
+ }
+
+ })
->select()
->toArray();
}
diff --git a/app/adminapi/lists/contract/ContractLists.php b/app/adminapi/lists/contract/ContractLists.php
index cebad313d..34ab1bfd7 100644
--- a/app/adminapi/lists/contract/ContractLists.php
+++ b/app/adminapi/lists/contract/ContractLists.php
@@ -90,9 +90,13 @@ class ContractLists extends BaseAdminDataLists implements ListsSearchInterface
}else{
$item->party_b_name=Db::name('user')->where('id',$item->party_b)->value('nickname');
}
- $area_manager_name=Db::name('admin')->where('id',$item->party_a_info->area_manager)->value('name');
- if($area_manager_name){
- $item->area_manager_name=$area_manager_name;
+ if(!empty($item->party_a_info)){
+ $area_manager_name=Db::name('admin')->where('id',$item->party_a_info->area_manager)->value('name');
+ if($area_manager_name){
+ $item->area_manager_name=$area_manager_name;
+ }else{
+ $item->area_manager_name='暂无片区经理';
+ }
}else{
$item->area_manager_name='暂无片区经理';
}
diff --git a/app/adminapi/lists/finance/WithdrawLists.php b/app/adminapi/lists/finance/WithdrawLists.php
new file mode 100644
index 000000000..9c6f44af4
--- /dev/null
+++ b/app/adminapi/lists/finance/WithdrawLists.php
@@ -0,0 +1,71 @@
+ ['order_sn','user_id', 'amount', 'status'],
+ ];
+ }
+
+
+ /**
+ * @notes 搜索条件
+ * @author 段誉
+ * @date 2023/2/24 15:26
+ */
+ public function queryWhere()
+ {
+ $where = [];
+ // 用户余额
+ return $where;
+ }
+
+
+ /**
+ * @notes 获取列表
+ * @return array
+ * @author 段誉
+ * @date 2023/2/24 15:31
+ */
+ public function lists(): array
+ {
+ $lists = Withdraw::where($this->searchWhere)
+ ->with('user')
+ ->where($this->queryWhere())
+ ->order('id', 'desc')
+ ->limit($this->limitOffset, $this->limitLength)
+ ->select()
+ ->toArray();
+ return $lists;
+ }
+
+
+ /**
+ * @notes 获取数量
+ * @return int
+ * @author 段誉
+ * @date 2023/2/24 15:36
+ */
+ public function count(): int
+ {
+ return Withdraw::where($this->queryWhere())
+ ->where($this->searchWhere)
+ ->count();
+ }
+
+}
\ No newline at end of file
diff --git a/app/adminapi/validate/CompanyValidate.php b/app/adminapi/validate/CompanyValidate.php
index 45b96bd90..784348016 100644
--- a/app/adminapi/validate/CompanyValidate.php
+++ b/app/adminapi/validate/CompanyValidate.php
@@ -35,7 +35,7 @@ class CompanyValidate extends BaseValidate
'company_name' => 'require|unique:Company',
'organization_code' => 'require',
'master_name' => 'require',
- 'id_card' => 'require',
+// 'id_card' => 'require',
'master_position' => 'require',
'master_phone' => 'require',
'master_email' => 'require',
@@ -53,7 +53,7 @@ class CompanyValidate extends BaseValidate
'company_name' => '公司名称',
'organization_code' => '组织机构代码',
'master_name' => '主联系人姓名',
- 'id_card' => '主联系人身份证',
+// 'id_card' => '主联系人身份证',
'master_position' => '主联系人职务',
'master_phone' => '主联系人手机',
'master_email' => '主联系人邮箱',
@@ -70,7 +70,7 @@ class CompanyValidate extends BaseValidate
*/
public function sceneAdd()
{
- return $this->only(['company_name','organization_code','master_name','id_card','master_position','master_phone']);
+ return $this->only(['company_name','organization_code','master_name','master_position','master_phone']);
}
@@ -82,7 +82,7 @@ class CompanyValidate extends BaseValidate
*/
public function sceneEdit()
{
- return $this->only(['id','company_name','organization_code','master_name','id_card','master_position','master_phone']);
+ return $this->only(['id','company_name','organization_code','master_name','master_position','master_phone']);
}
diff --git a/app/api/controller/CeshiController.php b/app/api/controller/CeshiController.php
index 92c1fe513..68cb4276c 100644
--- a/app/api/controller/CeshiController.php
+++ b/app/api/controller/CeshiController.php
@@ -1,6 +1,7 @@
where('is_pay',0)->with(['template_info','scheduling'])->select()->toArray();
- foreach($all as $k=>$data){
- // $company = Company::where('id', $data['company_id'])->field('id,deposit,company_money,user_id,day_count,company_type,province,city,area,street,village,brigade')->find(); // 可能要判断预存金是否满足
- $task = Task::where('id', $data['task_id'])->field('director_uid')->where('status', 3)->with('director_info')->find();
- $arr['money'] = $data['template_info']['money'];
- $arr['company_id'] = $data['scheduling']['company_id'];
- $arr['msg'] = '来自任务【' . $data['template_info']['title'] . '】,完成人,的任务结算';
- $arr['proportion_one'] = $data['template_info']['proportion_one'];
- $arr['proportion_two'] = $data['template_info']['proportion_two'];
- $arr['sn'] = $data['sn'];
- $arr['id'] = $data['id'];
- }
- halt($arr);
+ $company = Company::where(['id'=>238])->find();
+ $re = CompanyLogic::originationFaceCreate($company);
+ halt($re);
}
}
\ No newline at end of file
diff --git a/app/api/controller/HetongController.php b/app/api/controller/HetongController.php
index 15f4354a5..074322b5a 100644
--- a/app/api/controller/HetongController.php
+++ b/app/api/controller/HetongController.php
@@ -4,9 +4,11 @@ namespace app\api\controller;
use app\api\logic\IndexLogic;
+use app\common\model\Company;
use app\common\model\contract\VehicleContract;
use app\Request;
use think\facade\Db;
+use think\facade\Log;
use think\response\Json;
@@ -19,7 +21,7 @@ class HetongController extends BaseApiController
{
- public array $notNeedLogin = ['url','info', 'toFaceCreate'];
+ public array $notNeedLogin = ['url','info', 'toFaceCreate', 'notifyOrganizationFaceCreate'];
public function url()
{
@@ -71,4 +73,21 @@ class HetongController extends BaseApiController
}
return '
';
}
+
+ public function notifyOrganizationFaceCreate()
+ {
+ $parmas = Request()->param();
+ Log::info(['人脸识别采集校验回调:',$parmas]);
+ $result = json_decode($parmas['data'], true);
+ $msg = '人脸采集成功';
+ if (isset($result['status']) && $result['status'] == 1) {
+ // 修改人脸采集状态
+ Company::where(['organization_code'=>$result['organizationRegNo']])->update(['face_create_status'=>1]);
+ } else {
+ $msg = '采集失败,原因:'.$result['msg'];
+ // 记录错误日志
+ Db::name('company_authentication_fail_log')->insert(['company_id'=>$result['orderNo'], 'log_type'=>2,'fail_reason'=>$msg, 'create_time'=>time()]);
+ }
+ return ' ';
+ }
}
diff --git a/app/api/controller/IndexController.php b/app/api/controller/IndexController.php
index 175601280..659d174a4 100755
--- a/app/api/controller/IndexController.php
+++ b/app/api/controller/IndexController.php
@@ -14,10 +14,12 @@
namespace app\api\controller;
use app\api\logic\IndexLogic;
+use app\common\logic\RedisLogic;
use app\common\model\Company;
use app\common\model\company\CompanyProperty;
use app\common\model\contract\VehicleContract;
use app\common\model\vehicle\VehicleRent;
+use think\cache\driver\Redis;
use think\facade\Db;
use think\facade\Log;
use think\response\Json;
@@ -30,7 +32,7 @@ use think\response\Json;
*/
class IndexController extends BaseApiController
{
- public array $notNeedLogin = ['index', 'config', 'policy', 'decorate', 'notifyUrl', 'notifyProperty', 'notifyAuthentication', 'notifyVehicleContractUpdate', 'systemCarRent', 'selfCarRent', 'cancelRent'];
+ public array $notNeedLogin = ['index', 'config', 'policy', 'decorate', 'notifyUrl', 'notifyProperty', 'notifyAuthentication', 'notifyVehicleContractUpdate','townCarRent','systemCarRent', 'selfCarRent', 'cancelRent'];
/**
* @notes 首页数据
@@ -47,7 +49,6 @@ class IndexController extends BaseApiController
return $this->data($result);
}
-
/**
* @notes 全局配置
* @return Json
@@ -136,26 +137,63 @@ class IndexController extends BaseApiController
//更新本地合同状态
$updateLocalRes = VehicleContract::where('id',$contract['id'])->update(['signing_timer'=>1]);
//更新远程
- $updateSverRes =curl_post(env('project.logistic_domain').'/api/index/notifyContractUpdate',[],[
+ $updateSverRes =curl_post(env('project.logistic_domain').'/api/contractUpdate',[],[
'id' => $contract['contract_logistic_id'],
'signing_timer' => 1,
]);
if(!$updateLocalRes || $updateSverRes['code']==0){
return json(['success' => false, 'msg' => '更新失败']);
}
+ return json(['success' => true, 'msg' => '成功']);
}else if($contract['signing_timer'] == 1){
+ //获取签约后的合同
+ $signContractFile = app(JunziqianController::class)->downloadVehicleContractFile($contract['contract_no']);
+ $signContractFile = $signContractFile ?? '';
+ //获取签约后的证据
+ $signContractEvidenceToPartyA = app(JunziqianController::class)->downloadVehicleContractEvidence($contract['contract_no'],$contract['company_a_name'],$contract['company_a_code']);
+ $signContractEvidenceToPartyA = $signContractEvidenceToPartyA ?? '';
+ $signContractEvidenceToPartyB = app(JunziqianController::class)->downloadVehicleContractEvidence($contract['contract_no'],$contract['company_b_name'],$contract['company_b_code']);
+ $signContractEvidenceToPartyB = $signContractEvidenceToPartyB ?? '';
+ $contractEvidence = json_encode([
+ 'party_a' => $signContractEvidenceToPartyA,
+ 'party_b' => $signContractEvidenceToPartyB
+ ]);
//更新本地合同状态
- $updateLocalRes = VehicleContract::where('id',$contract['id'])->update(['signing_timer'=>2,'status' => 3]);
+ $updateLocalRes = VehicleContract::where('id',$contract['id'])->update(['signing_timer'=>2,'status' => 3,'contract_url'=>$signContractFile,'contract_evidence'=>$contractEvidence]);
+ //将车辆加入到本地租赁列表
+ $cars = json_decode($contract['cars_info'], true);
+ $data = [];
+ foreach ($cars as $k => $v) {
+ $hasCar = VehicleRent::where('car_id',$v['id'])->findOrEmpty();
+ if($hasCar->isEmpty()){
+ $data[$k]['car_id'] = $v['id'];
+ $data[$k]['car_license'] = $v['license'];
+ $data[$k]['type'] = 0;
+ $data[$k]['status'] = 0;
+ $data[$k]['company_id'] = $contract['company_b_id'];
+ $data[$k]['rent_time'] = 0;
+ $data[$k]['rent_company_id'] = 0;
+ $data[$k]['contract_id'] = $contract['id'];
+ $data[$k]['create_time'] = strtotime($contract['create_time']);
+ }
+ }
+ $vehicleRent = new VehicleRent();
+ $vehicleRent->saveAll($data);
//更新远程
- $updateSverRes =curl_post(env('project.logistic_domain').'/api/index/notifyContractUpdate',[],[
+ $updateSverRes = curl_post(env('project.logistic_domain').'/api/contractUpdate',[],[
'id' => $contract['contract_logistic_id'],
'signing_timer' => 2,
- 'status' => 3
+ 'status' => 3,
+ 'contract_url'=>$signContractFile,
+ 'contract_evidence'=>$contractEvidence
]);
if(!$updateLocalRes || $updateSverRes['code']==0){
return json(['success' => false, 'msg' => '更新失败']);
+ }else{
+ return json(['success' => true, 'msg' => '更新成功']);
}
}
+ return json(['success' => true, 'msg' => '更新成功@']);
}
//系统车辆租赁回来
@@ -189,8 +227,17 @@ class IndexController extends BaseApiController
//获取签约后的合同
$signContractFile = app(JunziqianController::class)->downloadVehicleContractFile($contract['contract_no']);
$signContractFile = $signContractFile ?? '';
+ //获取签约后的证据
+ $signContractEvidenceToPartyA = app(JunziqianController::class)->downloadVehicleContractEvidence($contract['contract_no'],$contract['company_a_name'],$contract['company_a_code']);
+ $signContractEvidenceToPartyA = $signContractEvidenceToPartyA ?? '';
+ $signContractEvidenceToPartyB = app(JunziqianController::class)->downloadVehicleContractEvidence($contract['contract_no'],$contract['company_b_name'],$contract['company_b_code']);
+ $signContractEvidenceToPartyB = $signContractEvidenceToPartyB ?? '';
+ $contractEvidence = json_encode([
+ 'party_a' => $signContractEvidenceToPartyA,
+ 'party_b' => $signContractEvidenceToPartyB
+ ]);
//更改合同状态
- VehicleContract::where('id', $id)->update(['signing_timer' => 2, 'status' => 3,'contract_url'=>$signContractFile]);
+ VehicleContract::where('id', $id)->update(['signing_timer' => 2, 'status' => 3,'contract_url'=>$signContractFile,'contract_evidence'=>$contractEvidence]);
//添加车辆到租赁列表
$vehicle = json_decode($contract['cars_info'], true);
VehicleRent::where('car_id', $vehicle['id'])->update([
@@ -263,7 +310,16 @@ class IndexController extends BaseApiController
//获取签约后的合同
$signContractFile = app(JunziqianController::class)->downloadVehicleContractFile($contract['contract_no']);
$signContractFile = $signContractFile ?? '';
- VehicleContract::where('id', $id)->update(['cars_info'=>$cars_info,'update_time'=>time(),'signing_timer'=>2,'status'=>3,'contract_url'=>$signContractFile]);
+ //获取签约后的证据
+ $signContractEvidenceToPartyA = app(JunziqianController::class)->downloadVehicleContractEvidence($contract['contract_no'],$contract['company_a_name'],$contract['company_a_code']);
+ $signContractEvidenceToPartyA = $signContractEvidenceToPartyA ?? '';
+ $signContractEvidenceToPartyB = app(JunziqianController::class)->downloadVehicleContractEvidence($contract['contract_no'],$contract['company_b_name'],$contract['company_b_code']);
+ $signContractEvidenceToPartyB = $signContractEvidenceToPartyB ?? '';
+ $contractEvidence = json_encode([
+ 'party_a' => $signContractEvidenceToPartyA,
+ 'party_b' => $signContractEvidenceToPartyB
+ ]);
+ VehicleContract::where('id', $id)->update(['cars_info'=>$cars_info,'update_time'=>time(),'signing_timer'=>2,'status'=>3,'contract_url'=>$signContractFile,'contract_evidence'=>$contractEvidence]);
VehicleRent::create([
'car_id' => $curl_res['data']['car_id'],
'contract_id' => $contract['id'],
@@ -326,14 +382,23 @@ class IndexController extends BaseApiController
//获取签约后的合同
$signContractFile = app(JunziqianController::class)->downloadVehicleContractFile($contract['contract_no']);
$signContractFile = $signContractFile ?? '';
+ //获取签约后的证据
+ $signContractEvidenceToPartyA = app(JunziqianController::class)->downloadVehicleContractEvidence($contract['contract_no'],$contract['company_a_name'],$contract['company_a_code']);
+ $signContractEvidenceToPartyA = $signContractEvidenceToPartyA ?? '';
+ $signContractEvidenceToPartyB = app(JunziqianController::class)->downloadVehicleContractEvidence($contract['contract_no'],$contract['company_b_name'],$contract['company_b_code']);
+ $signContractEvidenceToPartyB = $signContractEvidenceToPartyB ?? '';
+ $contractEvidence = json_encode([
+ 'party_a' => $signContractEvidenceToPartyA,
+ 'party_b' => $signContractEvidenceToPartyB
+ ]);
//更改合同状态
- VehicleContract::where('id', $id)->update(['signing_timer'=>2,'status'=>3,'contract_url'=>$signContractFile]);
+ VehicleContract::where('id', $id)->update(['signing_timer'=>2,'status'=>3,'contract_url'=>$signContractFile,'contract_evidence'=>$contractEvidence]);
//更改租赁列表车辆状态
$vehicle = json_decode($contract['cars_info'], true);
//获取租赁车辆信息
$vehicleRentInfo = VehicleRent::where('car_id', $vehicle['id'])->find();
//更新原始合同类型
- VehicleContract::where('id', $vehicleRentInfo['contract_id'])->update(['type' => 2]);
+ VehicleContract::where('id', $vehicleRentInfo['contract_id'])->update(['status' => 6]);
VehicleRent::where('car_id', $vehicle['id'])->update([
'status' => 3,
]);
@@ -367,15 +432,18 @@ class IndexController extends BaseApiController
if ($result && isset($param['status']) && $param['status'] == 3) {
$data = [];
foreach ($cars as $k => $v) {
- $data[$k]['car_id'] = $v['id'];
- $data[$k]['car_license'] = $v['license'];
- $data[$k]['type'] = 0;
- $data[$k]['status'] = 0;
- $data[$k]['company_id'] = $model['company_b_id'];
- $data[$k]['rent_time'] = 0;
- $data[$k]['rent_company_id'] = 0;
- $data[$k]['contract_id'] = $model['id'];
- $data[$k]['create_time'] = strtotime($model['create_time']);
+ $hasCar = VehicleRent::where('car_id',$v['id'])->findOrEmpty();
+ if($hasCar->isEmpty()) {
+ $data[$k]['car_id'] = $v['id'];
+ $data[$k]['car_license'] = $v['license'];
+ $data[$k]['type'] = 0;
+ $data[$k]['status'] = 0;
+ $data[$k]['company_id'] = $model['company_b_id'];
+ $data[$k]['rent_time'] = 0;
+ $data[$k]['rent_company_id'] = 0;
+ $data[$k]['contract_id'] = $model['id'];
+ $data[$k]['create_time'] = strtotime($model['create_time']);
+ }
}
$vehicleRent = new VehicleRent();
$vehicleRent->saveAll($data);
@@ -429,12 +497,21 @@ class IndexController extends BaseApiController
try {
if ($parmas) {
$data=json_decode($parmas['data'],true);
+ // 成功回调标记
+ $redis = RedisLogic::getInstance();
+ $cache = $redis->get('authentication_company_id_'.$parmas['id']);
+ if (!empty($cache)) {
+ $cacheData = json_decode($cache, true);
+ $cacheData['is_callback'] = 1;
+ $redis->set('authentication_company_id_'.$parmas['id'], json_encode($cacheData));
+ }
if($data['status']==1){
Company::where('id', $parmas['id'])->update(['is_authentication' => 1]);
}
if($data['status']==2){
// 记录认证失败原因
- Db::name('company_authentication_fail_log')->insert(['company_id'=>$parmas['id'],'fail_reason'=>$data['msg']]);
+ Db::name('company_authentication_fail_log')->insert(['company_id'=>$parmas['id'],'fail_reason'=>$data['msg'],'create_time'=>time()]);
+ Company::where('id', $parmas['id'])->update([ 'is_contract'=>0]);
}
return json(['success' => true, 'msg' => '成功']);
}
diff --git a/app/api/controller/JunziqianController.php b/app/api/controller/JunziqianController.php
index e8f4a3fcc..b0b0830a4 100644
--- a/app/api/controller/JunziqianController.php
+++ b/app/api/controller/JunziqianController.php
@@ -6,6 +6,7 @@ use app\common\model\contract\VehicleContract;
use app\Request;
use junziqian\sdk\bean\req\sign\ApplySignReq;
use junziqian\sdk\bean\req\user\OrganizationCreateReq;
+use junziqian\sdk\bean\req\user\OrganizationFaceCreateReq;
use junziqian\sdk\util\exception\ResultInfoException;
use junziqian\sdk\util\RequestUtils;
use junziqian\sdk\util\ShaUtils;
@@ -77,13 +78,14 @@ class JunziqianController extends BaseApiController
$request->organizationRegNo = $data['organization_code'];
$request->organizationRegImg = $data['business_license']; //new CURLFile('D:/tmp/test.png',null,"test.png");
$request->legalName = $data["master_name"]; //法人
- $request->legalIdentityCard = $data["master_id_card"]; // 法人身份证 签约时人脸识别需要
- $request->legalMobile = $data["master_phone"]; // 法人手机号 预留 签约时短信验证需要
+ // $request->legalIdentityCard = $data["master_id_card"]; // 法人身份证 签约时人脸识别需要
+ // $request->legalMobile = $data["master_phone"]; // 法人手机号 预留 签约时短信验证需要
+
if (isset($data['master_email'])) {
$request->emailOrMobile = $data['master_email']; //邮箱
}
// $request->notifyUrl = env('url.url_prefix').'/notifyAuthentication?ids=22222';
- $request->notifyUrl = env('url.url_prefix').'/notifyAuthentication?id='.$data['id'];
+ $request->notifyUrl = env('url.url_prefix') . '/notifyAuthentication?id=' . $data['id'];
// halt($request);
//发起创建企业请求
$response = $requestUtils->doPost("/v2/user/organizationCreate", $request);
@@ -101,8 +103,8 @@ class JunziqianController extends BaseApiController
$request->organizationRegNo = $data['organization_code'];
$request->organizationRegImg = $data['business_license']; //new CURLFile('D:/tmp/test.png',null,"test.png");
$request->legalName = $data["master_name"]; //法人
- $request->legalIdentityCard = $data["master_id_card"]; // 法人身份证 签约时人脸识别需要
- $request->legalMobile = $data["master_phone"]; // 法人手机号 预留 短信验证需要
+ // $request->legalIdentityCard = $data["master_id_card"]; // 法人身份证 签约时人脸识别需要
+ // $request->legalMobile = $data["master_phone"]; // 法人手机号 预留 短信验证需要
$request->emailOrMobile = $data['master_email']; //邮箱
//发起创建企业请求
$response = $requestUtils->doPost("/v2/user/organizationReapply", $request);
@@ -140,18 +142,18 @@ class JunziqianController extends BaseApiController
//签约
public function Signing($data, $id, $notify = '')
{
- if($notify==''){
- $notify=env('url.url_prefix').'/notify_url';
+ if ($notify == '') {
+ $notify = env('url.url_prefix') . '/notify_url';
}
$requestUtils = new RequestUtils($this->serviceUrl, $this->appkey, $this->appSecret);
$request = new ApplySignReq();
$request->contractName = $data['name'];
$request->signatories = $data['signatories']; //签约方
- $request->faceThreshold = 79; // 人脸识别阀值:默认等级(1-100之间整数),建议范围(60-79)
+ // $request->faceThreshold = 79; // 人脸识别阀值:默认等级(1-100之间整数),建议范围(60-79)
$request->serverCa = 1; //是否需要服务端云证书
$request->fileType = 1; //合同上传方式 url
$request->url = $data['url'];
- $request->notifyUrl = $notify.'?id='.$id;
+ $request->notifyUrl = $notify . '?id=' . $id;
$request->needQifengSign = 1;
//发起PING请求
// halt($request);
@@ -163,18 +165,19 @@ class JunziqianController extends BaseApiController
public function OrganizationFaceCreate($data)
{
$requestUtils = new RequestUtils($this->serviceUrl, $this->appkey, $this->appSecret);
- $request=new OrganizationCreateReq();
- $request-> orderNo = uniqid();
- $request-> email = $data['master_email'];
- $request-> enterpriseName = $data['company_name'];
- $request-> identityNo = $data['organization_code'];
- $request-> legalPersonName = $data['master_name'];
- $request-> legalIdentityCard = $data['master_id_card'];//法人证件号
- $request-> legalMobile = $data['master_phone'];
- $request-> faceAgantIdenName = $data['master_name'];
- $request-> faceAgantIdenCard = $data['master_id_card'];
- $request-> backUrl = env('url.url_prefix').'/mobile'; // 做完人脸识别后,指定跳转到供销系统mobile首页
- $response = $requestUtils->doPost("/v2/user/organizationFaceCreate",$request);
+ $request = new OrganizationFaceCreateReq();
+ $request->orderNo = $data['id'];
+ $request->email = $data['master_email'];
+ $request->enterpriseName = $data['company_name'];
+ $request->identityNo = $data['organization_code'];
+ // $request-> facePerType = 0;
+ $request->legalPersonName = $data['master_name'];
+ $request->legalIdentityCard = $data['master_id_card']; //法人证件号
+ $request->legalMobile = $data['master_phone'];
+ $request->faceAgantIdenName = $data['master_name'];
+ $request->faceAgantIdenCard = $data['master_id_card'];
+ $request->backUrl = env('url.url_prefix') . '/api/Hetong/notifyOrganizationFaceCreate';
+ $response = $requestUtils->doPost("/v2/user/organizationFaceCreate", $request);
return $response;
}
@@ -187,7 +190,7 @@ class JunziqianController extends BaseApiController
$request->serverCa = 1; //是否需要服务端云证书
$request->fileType = 1; //合同上传方式 url
$request->url = $data['url'];
- $request->notifyUrl = $notify.'?id='.$id;
+ $request->notifyUrl = $notify . '?id=' . $id;
$request->needQifengSign = 1;
//发起PING请求
@@ -196,7 +199,8 @@ class JunziqianController extends BaseApiController
return $response;
}
- public function downloadVehicleContractFile($applyNo) {
+ public function downloadVehicleContractFile($applyNo)
+ {
$requestUtils = new RequestUtils($this->serviceUrl, $this->appkey, $this->appSecret);
$contract_url = VehicleContract::where('contract_no', $applyNo)->value('contract_url');
if ($contract_url && !empty($contract_url)) {
@@ -209,7 +213,28 @@ class JunziqianController extends BaseApiController
$response = $requestUtils->doPost("/v2/sign/linkFile", $request);
if ($response->success) {
$this->getDownload($response->data, root_path() . 'public/uploads/vehicle_contract/' . $applyNo . '.pdf');
- return env('project.website_domain').'/uploads/vehicle_contract/' . $applyNo . '.pdf';
+ return env('project.website_domain') . '/uploads/vehicle_contract/' . $applyNo . '.pdf';
+ } else {
+ return false;
+ }
+ }
+
+ public function downloadVehicleContractEvidence($applyNo, $companyName, $companyCode)
+ {
+ //构建请求工具
+ $requestUtils = new RequestUtils($this->serviceUrl, $this->appkey, $this->appSecret);
+ //初始化合同参数
+ $request = array(
+ "applyNo" => $applyNo,
+ "fullName" => $companyName, //签约人名称(合同发起接口中传入的签署人姓名)
+ "identityCard" => $companyCode, //统一社会信用代码
+ "identityType" => 12, //证件类型 1身份证, 2护照, 3台胞证, 4港澳居民来往内地通行证, 11营业执照, 12统一社会信用代码, 20子账号, 99其他
+ "dealType" => 1
+ );
+ $response = $requestUtils->doPost("/v2/sign/presLinkFile", $request);
+ if ($response->success) {
+ $this->getDownload($response->data, root_path().'public/uploads/vehicle_contract_evidence/'.$applyNo.'_'.$companyCode.'.zip');
+ return env('project.website_domain').'/uploads/vehicle_contract_evidence/'.$applyNo.'_'.$companyCode.'.zip';;
} else {
return false;
}
@@ -252,7 +277,7 @@ class JunziqianController extends BaseApiController
$request->serverCa = 1; //是否需要服务端云证书
$request->fileType = 3;
$request->htmlContent = $data['content'];
- $request->notifyUrl = env('url.url_prefix').'/notify_url?id=' . $id;
+ $request->notifyUrl = env('url.url_prefix') . '/notify_url?id=' . $id;
$request->needQifengSign = 1;
//发起PING请求
@@ -260,6 +285,9 @@ class JunziqianController extends BaseApiController
return $response;
}
+ /**
+ * 下载合同
+ */
public function download_file($applyNo)
{
$requestUtils = new RequestUtils($this->serviceUrl, $this->appkey, $this->appSecret);
@@ -275,7 +303,31 @@ class JunziqianController extends BaseApiController
if ($response->success == true) {
$this->getDownload($response->data, root_path() . 'public/uploads/contract/' . $applyNo . '.pdf');
Db::name('contract')->where('contract_no', $applyNo)->update(['contract_url' => '/uploads/contract/' . $applyNo . '.pdf']);
- return $this->success('获取成功', ['url' => env('url.url_prefix').'/uploads/contract/' . $applyNo . '.pdf']);
+ return $this->success('获取成功', ['url' => env('url.url_prefix') . '/uploads/contract/' . $applyNo . '.pdf']);
+ } else {
+ return $this->fail('获取失败');
+ }
+ }
+ /**
+ * 保全后合同文件及证据包下载
+ */
+ public function EvidenceDownload($param)
+ {
+ //初始化请求参数
+ $requestUtils = new RequestUtils($this->serviceUrl, $this->appkey, $this->appSecret);
+
+ $request = array(
+ "applyNo" => $param['applyNo'],
+ "fullName" => $param['fullName'],
+ "identityCard" => $param['identityCard'],
+ "identityType" => 12,
+ "dealType" => 1,
+ );
+ $response = $requestUtils->doPost("/v2/sign/presLinkFile", $request);
+ if ($response->success == true) {
+ $this->getDownload($response->data, root_path() . 'public/uploads/evidence/' . $param['applyNo'] . '.zip');
+ Db::name('contract')->where('contract_no', $param['applyNo'])->update(['evidence_url' => '/uploads/evidence/' . $param['applyNo'] . '.zip']);
+ return $this->success('获取成功', ['url' => env('url.url_prefix') . '/uploads/evidence/' . $param['applyNo'] . '.zip']);
} else {
return $this->fail('获取失败');
}
diff --git a/app/api/controller/TaskController.php b/app/api/controller/TaskController.php
index a3ed2ffb6..d018544b3 100644
--- a/app/api/controller/TaskController.php
+++ b/app/api/controller/TaskController.php
@@ -63,9 +63,9 @@ class TaskController extends BaseApiController
if($time