Merge pull request '更新公司移动段api签定' (#14) from mkm into master
Reviewed-on: http://git.excellentkk.cn/mkm/TaskSystem/pulls/14
This commit is contained in:
commit
906cf3dfb9
@ -10,6 +10,7 @@ use app\common\model\contract\Contract;
|
|||||||
use app\common\model\user\User;
|
use app\common\model\user\User;
|
||||||
use app\common\model\user\UserAccountLog;
|
use app\common\model\user\UserAccountLog;
|
||||||
use think\facade\Db;
|
use think\facade\Db;
|
||||||
|
use app\common\logic\CompanyLogic as CommonCompanyLogic;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class CompanyController
|
* Class CompanyController
|
||||||
@ -125,4 +126,27 @@ class CompanyController extends BaseApiController
|
|||||||
unset($user['role_id'], $user['dept_id'], $user['jobs_id']);
|
unset($user['role_id'], $user['dept_id'], $user['jobs_id']);
|
||||||
return $this->success('success', $user);
|
return $this->success('success', $user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//**发起合同 */
|
||||||
|
public function initiate_contract()
|
||||||
|
{
|
||||||
|
$params = $this->request->param();
|
||||||
|
$params['party_a']=$this->userInfo['company_id'];
|
||||||
|
$params['type']=1;
|
||||||
|
$result = CommonCompanyLogic::initiate_contract($params);
|
||||||
|
if($result==true){
|
||||||
|
return $this->success('发起成功,等待平台风控部上传合同');
|
||||||
|
}
|
||||||
|
return $this->fail(CommonCompanyLogic::getError());
|
||||||
|
}
|
||||||
|
// /**生成合同 */
|
||||||
|
public function Draftingcontracts()
|
||||||
|
{
|
||||||
|
$params = $this->request->param();
|
||||||
|
$result = CommonCompanyLogic::Draftingcontracts($params);
|
||||||
|
if($result==true){
|
||||||
|
return $this->success('生成合同成功');
|
||||||
|
}
|
||||||
|
return $this->fail(CommonCompanyLogic::getError());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
292
app/common/logic/CompanyLogic.php
Normal file
292
app/common/logic/CompanyLogic.php
Normal file
@ -0,0 +1,292 @@
|
|||||||
|
<?php
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | likeadmin快速开发前后端分离管理后台(PHP版)
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
|
||||||
|
// | 开源版本可自由商用,可去除界面版权logo
|
||||||
|
// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
|
||||||
|
// | github下载:https://github.com/likeshop-github/likeadmin
|
||||||
|
// | 访问官网:https://www.likeadmin.cn
|
||||||
|
// | likeadmin团队 版权所有 拥有最终解释权
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | author: likeadminTeam
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace app\common\logic;
|
||||||
|
|
||||||
|
|
||||||
|
use app\common\model\Company;
|
||||||
|
use app\common\logic\BaseLogic;
|
||||||
|
use app\common\model\auth\Admin;
|
||||||
|
use app\common\model\contract\Contract;
|
||||||
|
use app\common\model\user\User;
|
||||||
|
use think\exception\ValidateException;
|
||||||
|
use think\facade\Db;
|
||||||
|
use app\adminapi\validate\CompanyValidate;
|
||||||
|
use app\api\controller\JunziqianController;
|
||||||
|
use app\api\logic\SmsLogic;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Company逻辑
|
||||||
|
* Class CompanyLogic
|
||||||
|
* @package app\adminapi\logic
|
||||||
|
*/
|
||||||
|
class CompanyLogic extends BaseLogic
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @notes 添加
|
||||||
|
* @param array $params
|
||||||
|
* @return bool
|
||||||
|
* @author likeadmin
|
||||||
|
* @date 2023/07/15 14:43
|
||||||
|
*/
|
||||||
|
public static function add(array $params): bool
|
||||||
|
{
|
||||||
|
Db::startTrans();
|
||||||
|
try {
|
||||||
|
// $exist = Company::where('admin_id', $params['admin_id'])->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('生成合同成功失败,联系管理员');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -153,7 +153,7 @@ class UserLogic extends BaseLogic
|
|||||||
];
|
];
|
||||||
$res = app(JunziqianController::class)->Signing($data, $result['contract']['id']);
|
$res = app(JunziqianController::class)->Signing($data, $result['contract']['id']);
|
||||||
if ($res->success == true) {
|
if ($res->success == true) {
|
||||||
Db::name('contract')->where('id', $result['contract']['id'])->update(['contract_no' => $res->data]);
|
Db::name('contract')->where('id', $result['contract']['id'])->update(['contract_no' => $res->data,'check_status'=>3]);
|
||||||
$data = array(
|
$data = array(
|
||||||
"applyNo" => $res->data, //TODO *
|
"applyNo" => $res->data, //TODO *
|
||||||
"fullName" => $result['nickname'], //TODO *
|
"fullName" => $result['nickname'], //TODO *
|
||||||
|
Loading…
x
Reference in New Issue
Block a user