TaskSystem/app/adminapi/logic/CompanyLogic.php

190 lines
6.8 KiB
PHP
Raw Normal View History

2023-07-15 14:46:25 +08:00
<?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\adminapi\logic;
use app\common\model\Company;
use app\common\logic\BaseLogic;
2023-07-20 17:56:39 +08:00
use app\common\model\contract\Contract;
use think\exception\ValidateException;
2023-07-15 14:46:25 +08:00
use think\facade\Db;
/**
* 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 {
2023-07-21 08:57:46 +08:00
// $exist = Company::where('admin_id', $params['admin_id'])->find();
// if (!empty($exist)) {
// throw new ValidateException('该账号已经注册过企业');
// }
2023-07-17 00:09:53 +08:00
$data=Company::create([
// 'level_two' => $params['level_two'],
// 'level_one' => $params['level_one'],
2023-07-15 14:46:25 +08:00
'company_name' => $params['company_name'],
'organization_code' => $params['organization_code'],
2023-07-17 00:09:53 +08:00
'province' => $params['province'],
2023-07-15 14:46:25 +08:00
'city' => $params['city'],
2023-07-15 15:45:54 +08:00
'area' => $params['area'],
'street' => $params['street'],
2023-07-17 00:09:53 +08:00
'address' => $params['address'],
2023-07-15 14:46:25 +08:00
'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'],
2023-07-17 00:09:53 +08:00
// 'area_manager' => $params['area_manager'],
// 'is_contract' => $params['is_contract'],
// 'account' => $params['account'],
// 'password' => $params['password'],
// 'deposit' => $params['deposit'],
// 'deposit_time' => $params['deposit_time'],
2023-07-15 14:46:25 +08:00
'qualification' => $params['qualification'],
2023-07-20 17:56:39 +08:00
'admin_id' => $params['admin_id'] ?? 0,
2023-07-21 10:08:58 +08:00
'level_one' => $params['contract']['party_a'] ?? 0,
2023-07-17 00:09:53 +08:00
// 'status' => $params['status']
2023-07-15 14:46:25 +08:00
]);
2023-07-20 17:56:39 +08:00
self::contract($data['id'], $params);
2023-07-15 14:46:25 +08:00
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([
2023-07-17 00:09:53 +08:00
// 'level_two' => $params['level_two'],
// 'level_one' => $params['level_one'],
2023-07-15 14:46:25 +08:00
'company_name' => $params['company_name'],
'organization_code' => $params['organization_code'],
2023-07-17 00:09:53 +08:00
'province' => $params['province'],
2023-07-15 14:46:25 +08:00
'city' => $params['city'],
2023-07-15 15:45:54 +08:00
'area' => $params['area'],
'street' => $params['street'],
2023-07-17 00:09:53 +08:00
'address' => $params['address'],
2023-07-15 14:46:25 +08:00
'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'],
2023-07-17 00:09:53 +08:00
// 'area_manager' => $params['area_manager'],
// 'is_contract' => $params['is_contract'],
// 'account' => $params['account'],
// 'password' => $params['password'],
// 'deposit' => $params['deposit'],
// 'deposit_time' => $params['deposit_time'],
2023-07-15 14:46:25 +08:00
'qualification' => $params['qualification'],
2023-07-21 10:08:58 +08:00
'admin_id' => $params['admin_id'] ?? 0,
'level_one' => $params['contract']['party_a'] ?? 0,
2023-07-17 00:09:53 +08:00
// 'status' => $params['status']
2023-07-15 14:46:25 +08:00
]);
2023-07-20 17:56:39 +08:00
self::contract($params['id'], $params);
2023-07-15 14:46:25 +08:00
Db::commit();
return true;
} catch (\Exception $e) {
Db::rollback();
2023-07-17 00:09:53 +08:00
self::setError($e->getMessage(), $e->getFile());
2023-07-15 14:46:25 +08:00
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
{
2023-07-17 00:09:53 +08:00
$data=Company::findOrEmpty($params['id'])->toArray();
if($data){
$data['other_contacts']=json_decode($data['other_contacts'],true);
$data['qualification']=json_decode($data['qualification'],true);
2023-07-21 08:57:46 +08:00
$data['contract']=Db::name('contract')->where('party_b',$data['id'])
2023-07-17 00:09:53 +08:00
->withAttr('party_a_name',function($value,$data){
return Db::name('company')->where('id',$data['party_a'])->value('company_name');
})
2023-07-20 16:30:00 +08:00
// ->withAttr('contract_file_url',function($value,$data){
// return Db::name('dict_data')->where('id',$data['contract_type_two'])->value('value');
// })
2023-07-17 00:09:53 +08:00
->find();
}
return $data;
2023-07-15 14:46:25 +08:00
}
2023-07-20 17:56:39 +08:00
public static function contract($companyId, $params)
{
2023-07-21 08:57:46 +08:00
$model = Contract::where(['party_b'=>$companyId])->find();
2023-07-20 17:56:39 +08:00
if (empty($model)) {
$model = new Contract();
$model->party_b = $companyId;
$model->contract_no = time();
$model->create_time = time();
$model->type = 1;
}
$model->update_time = time();
2023-07-21 08:57:46 +08:00
$model->setAttrs($params['contract']);
2023-07-20 17:56:39 +08:00
$model->save();
}
2023-07-15 14:46:25 +08:00
}