TaskSystem/app/common/logic/CompanyLogic.php

239 lines
9.6 KiB
PHP
Raw Normal View History

2023-08-03 11:27:03 +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\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;
2023-08-07 17:11:33 +08:00
use app\common\service\FileService;
use think\facade\Config;
2023-08-03 11:27:03 +08:00
/**
2023-08-03 12:47:20 +08:00
* 公司逻辑
2023-08-03 11:27:03 +08:00
* Class CompanyLogic
* @package app\adminapi\logic
*/
class CompanyLogic extends BaseLogic
{
2023-08-07 15:13:34 +08:00
/**
2023-08-03 11:27:03 +08:00
* @notes 添加
* @param array $params
* @return bool
* @author likeadmin
* @date 2023/07/15 14:43
*/
public static function add(array $params): bool
{
2023-08-07 15:13:34 +08:00
unset($params['id']);
2023-08-03 11:27:03 +08:00
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;
2023-08-07 15:13:34 +08:00
$arr=[
2023-08-03 11:27:03 +08:00
'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,
'qualification' => $params['qualification'],
'admin_id' => $params['admin_id'] ?? 0,
'level_one' => $level_one,
2023-08-07 15:13:34 +08:00
];
$data = Company::create($arr);
$passwordSalt = Config::get('project.unique_identification');
$defaultAvatar = config('project.default_image.admin_avatar');
$admin=$arr;
$admin['id_card']=$params['id_card'];
$admin['area_manager']=$params['area_manager'];
$admin['sex']=$params['sex'];
$admin['name']=$params['master_name'];
$admin['account']=$params['master_phone'];
$admin['avatar'] = !empty($params['avatar']) ? FileService::setFileUrl($params['avatar']) : $defaultAvatar;
$admin['phone']=$params['master_phone'];
$admin['password'] = create_password(123456, $passwordSalt);
$admin_id=Admin::strict(false)->insertGetId($admin);
$userSn = User::createUserSn();
$admin['admin_id']=$admin_id;
$admin['sn']=$userSn;
$admin['sechannel']=4;
$admin['company_id']=$data['id'];
$admin['real_name']=$params['master_name'];
$admin['nickname']=$params['master_name'];
$admin['mobile']=$params['master_phone'];
$admin['phone']=$params['master_phone'];
User::strict(false)->insert($admin);
// if ($level_one > 0) {
// $contractId = self::contract($data['id'], $params);
// }
2023-08-03 11:27:03 +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([
// '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']]);
}
2023-08-07 15:13:34 +08:00
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]);
2023-08-03 11:27:03 +08:00
}
}
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);
2023-08-07 15:13:34 +08:00
if($data['qualification'] && isset($data['qualification']['other_qualifications'])){
$data['qualification']['other_qualifications']=json_decode($data['qualification']['other_qualifications'],true);
}
2023-08-03 11:27:03 +08:00
$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');
2023-08-07 15:13:34 +08:00
$data['contract'] = Contract::where(['party_b' => $data['id']])->with(['partyAInfo', 'contractType'])->find();
2023-08-03 11:27:03 +08:00
}
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);
}
}