|
@@ -4,6 +4,9 @@ namespace App\Service;
|
|
|
|
|
|
|
|
use App\Model\DailyPwOrder;
|
|
use App\Model\DailyPwOrder;
|
|
|
use App\Model\DailyPwOrderDetails;
|
|
use App\Model\DailyPwOrderDetails;
|
|
|
|
|
+use App\Model\Depart;
|
|
|
|
|
+use App\Model\Employee;
|
|
|
|
|
+use App\Model\EmployeeDepartPermission;
|
|
|
use App\Model\ExpenseClaims;
|
|
use App\Model\ExpenseClaims;
|
|
|
use App\Model\ExpenseClaimsDetails;
|
|
use App\Model\ExpenseClaimsDetails;
|
|
|
use App\Model\Fee;
|
|
use App\Model\Fee;
|
|
@@ -14,7 +17,9 @@ use App\Model\MonthlyPsOrder;
|
|
|
use App\Model\MonthlyPsOrderDetails;
|
|
use App\Model\MonthlyPsOrderDetails;
|
|
|
use App\Model\PLeaveOverOrder;
|
|
use App\Model\PLeaveOverOrder;
|
|
|
use App\Model\PLeaveOverOrderDetails;
|
|
use App\Model\PLeaveOverOrderDetails;
|
|
|
|
|
+use App\Model\WorkRangeDetails;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
|
+use Illuminate\Support\Facades\Hash;
|
|
|
|
|
|
|
|
class BIService extends Service
|
|
class BIService extends Service
|
|
|
{
|
|
{
|
|
@@ -356,4 +361,101 @@ class BIService extends Service
|
|
|
|
|
|
|
|
return $return;
|
|
return $return;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ public function initializationCompany($data, $user){
|
|
|
|
|
+ if(empty($data['title'])) return [false, '公司名称不能为空'];
|
|
|
|
|
+ if(empty($data['code'])) return [false, '公司代码不能为空'];
|
|
|
|
|
+
|
|
|
|
|
+ // ^[A-Za-z]+$ 表示从头到尾只能是英文字母(不区分大小写)
|
|
|
|
|
+ if (!preg_match('/^[A-Za-z]+$/', $data['code']) || mb_strlen($data['code']) < 4) return [false, "公司代码必须全为英文且长度需大于等于 4 位"];
|
|
|
|
|
+
|
|
|
|
|
+ $exists = Depart::where('parent_id', 0)
|
|
|
|
|
+ ->where('del_time', 0)
|
|
|
|
|
+ ->where(function($query) use ($data) {
|
|
|
|
|
+ $query->where('title', $data['title'])
|
|
|
|
|
+ ->orWhere('code', $data['code']);
|
|
|
|
|
+ })
|
|
|
|
|
+ ->exists();
|
|
|
|
|
+ if($exists) return [false, '公司名称或公司代码已存在,新增失败'];
|
|
|
|
|
+
|
|
|
|
|
+ $account = $data['code'] . "_" . 'admin';
|
|
|
|
|
+ $exists = Employee::where('del_time', 0)
|
|
|
|
|
+ ->where('account', $account)
|
|
|
|
|
+ ->exists();
|
|
|
|
|
+ if($exists) return [false, '创建账号已存在,新增失败'];
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ DB::beginTransaction();
|
|
|
|
|
+
|
|
|
|
|
+ //创建公司
|
|
|
|
|
+ $model = new Depart();
|
|
|
|
|
+ $model->parent_id = 0;
|
|
|
|
|
+ $model->title = $data['title'];
|
|
|
|
|
+ $model->code = $data['code'];
|
|
|
|
|
+ $model->top_depart_id = 0;
|
|
|
|
|
+ $model->save();
|
|
|
|
|
+ //公司ID
|
|
|
|
|
+ $top_depart_id = $model->id;
|
|
|
|
|
+
|
|
|
|
|
+ $password = $this->generateAt8CharPassword();
|
|
|
|
|
+ //创建账号
|
|
|
|
|
+ $model_2 = new Employee();
|
|
|
|
|
+ $model_2->title = $data['title'];
|
|
|
|
|
+ $model_2->code = $data['code'];
|
|
|
|
|
+ $model_2->account = $account;
|
|
|
|
|
+ $model_2->password = Hash::make($password);
|
|
|
|
|
+ $model_2->is_admin = Employee::IS_ADMIN_TWO;
|
|
|
|
|
+ $model_2->top_depart_id = $top_depart_id;
|
|
|
|
|
+ $model_2->state = Employee::TYPE_ONE;
|
|
|
|
|
+ $model_2->save();
|
|
|
|
|
+ $employee_id = $model_2->id;
|
|
|
|
|
+
|
|
|
|
|
+ //关联人员的部门初始信息
|
|
|
|
|
+ $model_3 = new EmployeeDepartPermission();
|
|
|
|
|
+ $model_3->employee_id = $employee_id;
|
|
|
|
|
+ $model_3->depart_id = 0;
|
|
|
|
|
+ $model_3->top_depart_id = $top_depart_id;
|
|
|
|
|
+ $model_3->save();
|
|
|
|
|
+
|
|
|
|
|
+ //公司上班时段
|
|
|
|
|
+ $work_range[] = [
|
|
|
|
|
+ 'top_depart_id' => $top_depart_id,
|
|
|
|
|
+ 'start_time_hour' => 9,
|
|
|
|
|
+ 'start_time_min' => 0,
|
|
|
|
|
+ 'end_time_hour' => 12,
|
|
|
|
|
+ 'end_time_min' => 0,
|
|
|
|
|
+ 'total_work_min' => 180,
|
|
|
|
|
+ ];
|
|
|
|
|
+ $work_range[] = [
|
|
|
|
|
+ 'top_depart_id' => $top_depart_id,
|
|
|
|
|
+ 'start_time_hour' => 13,
|
|
|
|
|
+ 'start_time_min' => 0,
|
|
|
|
|
+ 'end_time_hour' => 18,
|
|
|
|
|
+ 'end_time_min' => 0,
|
|
|
|
|
+ 'total_work_min' => 300,
|
|
|
|
|
+ ];
|
|
|
|
|
+ WorkRangeDetails::insert($work_range);
|
|
|
|
|
+
|
|
|
|
|
+ DB::commit();
|
|
|
|
|
+ }catch (\Throwable $exception){
|
|
|
|
|
+ DB::rollBack();
|
|
|
|
|
+ return [false, $exception->getMessage()];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return [true, ['account' => $account, 'password' => $password]];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function generateAt8CharPassword() {
|
|
|
|
|
+ $lettersNumbers = 'abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789';
|
|
|
|
|
+
|
|
|
|
|
+ $password = '@'; // 1. 先把固定的 @ 放进去
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 随机抽取 7 位英文或数字
|
|
|
|
|
+ for ($i = 0; $i < 7; $i++) {
|
|
|
|
|
+ $password .= $lettersNumbers[random_int(0, strlen($lettersNumbers) - 1)];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 3. 打乱顺序,让 @ 的位置不固定
|
|
|
|
|
+ return str_shuffle($password);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|