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);
|
|
|
|
|
}
|
|
|
|
|
}
|