TaskSystem/app/common/logic/CompanyLogic.php

272 lines
10 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;
2023-08-19 11:50:56 +08:00
use app\adminapi\logic\auth\AdminLogic;
2023-08-03 11:27:03 +08:00
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-12 10:38:39 +08:00
use app\common\model\task_scheduling\TaskScheduling;
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('该账号已经注册过企业');
// }
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'],
2023-08-17 16:58:20 +08:00
'village' => $params['village'],
'brigade' => $params['brigade'],
2023-08-03 11:27:03 +08:00
'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'],
2023-08-12 17:46:01 +08:00
'responsible_area' => $params['responsible_area'],
2023-08-09 14:43:30 +08:00
'admin_id' => 0,
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'];
2023-08-12 10:38:39 +08:00
$admin['area_manager']=$params['area_manager'] ?? 0;
2023-08-07 15:13:34 +08:00
$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);
2023-08-19 11:50:56 +08:00
if($params['company_type']==16){
AdminLogic::insertRole($admin_id, [3]);
}
2023-08-07 15:13:34 +08:00
$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'];
2023-08-09 14:43:30 +08:00
$user_id=User::strict(false)->insertGetId($admin);
Company::where('id',$data['id'])->update(['admin_id'=>$admin_id,'user_id'=>$user_id]);
2023-08-12 10:38:39 +08:00
$scheduling=[
'create_user_id'=>$params['area_manager'] ?? 0,
'company_id'=>$data['id'],
'company_type'=>$params['company_type'],
];
TaskScheduling::create($scheduling);
2023-08-07 15:13:34 +08:00
// 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 {
2023-08-07 22:37:45 +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'],
2023-08-07 22:37:45 +08:00
'village' => $params['village'],
'brigade' => $params['brigade'],
2023-08-03 11:27:03 +08:00
'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'],
2023-08-14 09:12:55 +08:00
'responsible_area' => $params['responsible_area'],
2023-08-07 22:37:45 +08:00
];
$defaultAvatar = config('project.default_image.admin_avatar');
$admin=$arr;
$account=$params['master_phone'];
$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::strict(false)->where('account',$account)->update($admin);
$admin_id=Admin::where('account',$account)->value('id');
2023-08-19 11:50:56 +08:00
if($params['company_type']==16){
AdminLogic::insertRole($admin_id, [3]);
}
2023-08-09 14:43:30 +08:00
$user_id=User::where('account',$account)->value('id');
2023-08-07 22:37:45 +08:00
$arr['admin_id']=$admin_id;
2023-08-09 14:43:30 +08:00
$arr['user_id']=$user_id;
2023-08-07 22:37:45 +08:00
Company::where('id', $params['id'])->update($arr);
$admin['admin_id']=$admin_id;
$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)->where('account',$account)->update($admin);
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-07 22:37:45 +08:00
$find= Admin::where('id', $data['admin_id'])->field('avatar,id_card')->find();
2023-08-07 23:44:23 +08:00
if($find){
$data['avatar']=$find['avatar'];
$data['id_card']=$find['id_card'];
}else{
$data['avatar']='';
$data['id_card']='';
}
2023-08-03 11:27:03 +08:00
$data['area_manager_name'] = Db::name('admin')->where('id', $data['area_manager'])->value('name');
2023-08-14 09:12:55 +08:00
$data['responsible_area'] = explode(',', $data['responsible_area']);
2023-08-07 22:37:45 +08:00
$data['contract'] = Contract::where(['party_b' => $data['id']])->with(['party_a_info', '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);
}
}