EmployeeService.php 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416
  1. <?php
  2. namespace App\Service;
  3. use App\Model\BasicType;
  4. use App\Model\Depart;
  5. use App\Model\DepartIndex;
  6. use App\Model\DepartWithDHF;
  7. use App\Model\Employee;
  8. use App\Model\EmployeeDepartPermission;
  9. use App\Model\EmployeeFile;
  10. use App\Model\EmployeeManagerDepart;
  11. use App\Model\EmployeeMenuPermission;
  12. use App\Model\EmployeeRole;
  13. use App\Model\EmployeeTeamPermission;
  14. use App\Model\ProductCategory;
  15. use App\Model\ProductInventory;
  16. use App\Model\ProductInventorySet;
  17. use App\Model\Role;
  18. use App\Model\RoleMenu;
  19. use App\Model\RoleMenuButton;
  20. use App\Model\Storehouse;
  21. use App\Model\SysMenu;
  22. use App\Model\SysMenuButton;
  23. use App\Model\Team;
  24. use App\Model\WxEmployeeOfficial;
  25. use App\Service\Weixin\WeixinService;
  26. use Illuminate\Support\Facades\DB;
  27. use Illuminate\Support\Facades\Hash;
  28. use Mockery\Exception;
  29. /**
  30. * 人员相关
  31. * @package App\Models
  32. */
  33. class EmployeeService extends Service
  34. {
  35. public function employeeEditImg($data, $user){
  36. $time = time();
  37. try {
  38. DB::beginTransaction();
  39. $old = EmployeeFile::where('del_time',0)
  40. ->where('employee_id',$user['id'])
  41. ->select('file')
  42. ->get()->toArray();
  43. $old = array_column($old,'file');
  44. EmployeeFile::where('del_time',0)
  45. ->where('employee_id',$user['id'])
  46. ->update(['del_time' => $time]);
  47. $new = [];
  48. $insert = [];
  49. if(! empty($data['img_url'])){
  50. $insert[] = [
  51. 'employee_id' => $user['id'],
  52. 'file' => $data['img_url'],
  53. 'crt_time' => $time,
  54. ];
  55. EmployeeFile::insert($insert);
  56. $new[] = $data['img_url'];
  57. }
  58. DB::commit();
  59. }catch (\Throwable $exception){
  60. DB::rollBack();
  61. return [false, $exception->getMessage()];
  62. }
  63. return [true, ['file' => ['new' => $new, 'old' => $old]]];
  64. }
  65. public function getEmployeeImg($user){
  66. $file = EmployeeFile::where('del_time',0)
  67. ->where('employee_id',$user['id'])
  68. ->select('file')
  69. ->get()->toArray();
  70. $file = array_column($file,'file');
  71. $file = $file[0] ?? "";
  72. $img_str = "";
  73. $timpstamp = 86400;
  74. if(! empty($file)){
  75. $fileUploadService = new FileUploadService();
  76. $img_str = $fileUploadService->getFileShow($file, $timpstamp);
  77. }
  78. return [true, ['img_url' => $img_str]];
  79. }
  80. public function employeeEditOther($data,$user){
  81. list($status,$msg) = $this->employeeOtherRule($data,$user);
  82. if(!$status) return [$status,$msg];
  83. try {
  84. DB::beginTransaction();
  85. $model = new Employee();
  86. $model = $model->where('id',$user['id'])->first();
  87. $model->password = Hash::make($data['new_password']);
  88. $model->save();
  89. DB::commit();
  90. }catch (\Exception $exception){
  91. DB::rollBack();
  92. return [false, $exception->getMessage()];
  93. }
  94. return [true,''];
  95. }
  96. public function employeeOtherRule($data,$user){
  97. if(! isset($data['old_password'])) return [false,'请输入原密码'];
  98. if($data['old_password'] == "") return [false,'原密码不能为空'];
  99. if(! isset($data['new_password'])) return [false,'请输入新密码'];
  100. if($data['new_password'] == "") return [false,'新密码不能为空'];
  101. if(! isset($data['re_password'])) return [false,'请输入确认密码'];
  102. if($data['re_password'] == "") return [false,'确认密码不能为空'];
  103. if(! Hash::check($data['old_password'], $user['password'])) return [false,'原密码错误'];
  104. if($data['new_password'] == $data['old_password']) return [false,'原密码与新密码一致'];
  105. if($data['new_password'] !== $data['re_password']) return [false,'新密码与确认密码不一致'];
  106. return [true,''];
  107. }
  108. /**
  109. * 用户编辑
  110. * @param $data
  111. * @param $user
  112. * @return array
  113. */
  114. public function employeeEdit($data,$user){
  115. list($status,$msg) = $this->employeeRule($data,false);
  116. if(!$status) return [$status,$msg];
  117. try {
  118. DB::beginTransaction();
  119. $model = new Employee();
  120. $model = $model->where('id',$data['id'])->first();
  121. $model->number = $data['number'];
  122. $model->emp_name = $data['emp_name'];
  123. $model->mobile = $data['mobile'] ?? '';
  124. $model->leave_time = $data['leave_time'] ?? '';
  125. $model->entry_time = $data['entry_time'] ?? '';
  126. $model->state = empty($data['leave_time']) ? Employee::USE : Employee::NOT_USE;
  127. $model->is_admin = $data['is_admin'];
  128. $model->account = $data['number'];
  129. if($model->is_admin == 1){
  130. if($data['password'] !== '******'){
  131. $model->password = Hash::make($data['password']);
  132. }
  133. }
  134. $model->save();
  135. EmployeeDepartPermission::where('employee_id',$data['id'])->delete();
  136. if(isset($data['depart'])){
  137. $insert = [];
  138. foreach ($data['depart'] as $value){
  139. $insert[] = [
  140. 'employee_id' => $model->id,
  141. 'depart_id' => $value,
  142. ];
  143. }
  144. EmployeeDepartPermission::insert($insert);
  145. }
  146. EmployeeRole::where('employee_id',$data['id'])->update([
  147. 'del_time' => time()
  148. ]);
  149. if(isset($data['role'])){
  150. $insert = [];
  151. foreach ($data['role'] as $value){
  152. $insert[] = [
  153. 'employee_id' => $model->id,
  154. 'role_id' => $value,
  155. 'crt_time' => time(),
  156. 'upd_time' => time(),
  157. ];
  158. }
  159. EmployeeRole::insert($insert);
  160. }
  161. DB::commit();
  162. }catch (\Exception $exception){
  163. DB::rollBack();
  164. return [false, $exception->getMessage()];
  165. }
  166. return [true,''];
  167. }
  168. /**
  169. * 用户新增
  170. * @param $data
  171. * @param $user
  172. * @return array
  173. */
  174. public function employeeAdd($data,$user){
  175. list($status,$msg) = $this->employeeRule($data);
  176. if(!$status) return [$status,$msg];
  177. try{
  178. DB::beginTransaction();
  179. $model = new Employee();
  180. $model->number = $data['number'];
  181. $model->emp_name = $data['emp_name'];
  182. $model->mobile = $data['mobile'] ?? '';
  183. $model->leave_time = $data['leave_time'] ?? '';
  184. $model->entry_time = $data['entry_time'] ?? '';
  185. $model->state = empty($data['leave_time']) ? Employee::USE : Employee::NOT_USE;
  186. $model->crt_id = $user['id'];
  187. $model->is_admin = $data['is_admin'];
  188. $model->account = $data['number'];
  189. if($model->is_admin == 1){
  190. if($data['password'] !== '********'){
  191. $model->password = Hash::make($data['password']);
  192. }
  193. }
  194. $model->save();
  195. if(isset($data['depart'])){
  196. $insert = [];
  197. foreach ($data['depart'] as $value){
  198. $insert[] = [
  199. 'employee_id' => $model->id,
  200. 'depart_id' => $value,
  201. ];
  202. }
  203. EmployeeDepartPermission::insert($insert);
  204. }
  205. if(isset($data['role'])){
  206. $insert = [];
  207. foreach ($data['role'] as $value){
  208. $insert[] = [
  209. 'employee_id' => $model->id,
  210. 'role_id' => $value,
  211. 'crt_time' => time(),
  212. 'upd_time' => time(),
  213. ];
  214. }
  215. EmployeeRole::insert($insert);
  216. }
  217. DB::commit();
  218. }catch (Exception $e){
  219. DB::rollBack();
  220. return [false, $e->getMessage()];
  221. }
  222. return [true,''];
  223. }
  224. /**
  225. * 用户删除
  226. * @param $data
  227. * @return array
  228. */
  229. public function employeeDel($data){
  230. if($this->isEmpty($data,'id')) return [false,'请选择删除的数据!'];
  231. Employee::whereIn('id',$data['id'])->update([
  232. 'del_time'=>time()
  233. ]);
  234. EmployeeRole::where('del_time',0)->whereIn('employee_id',$data['id'])->update([
  235. 'del_time'=>time()
  236. ]);
  237. EmployeeDepartPermission::whereIn('employee_id',$data['id'])->delete();
  238. return [true,'删除成功'];
  239. }
  240. /**
  241. * 用户列表
  242. * @param $data
  243. * @param $user
  244. * @return array
  245. */
  246. public function employeeList($data,$user){
  247. $model = Employee::where('del_time',0)
  248. ->select('number','mobile','emp_name','id','entry_time','leave_time','is_admin','state')
  249. ->orderBy('id','desc');
  250. if(! empty($data['depart'])) {
  251. $depart = Depart::where('del_time',0)
  252. ->select('id','parent_id')
  253. ->get()->toArray();
  254. $result = array_merge($this->getAllDescendants($depart,$data['depart']),[$data['depart']]);
  255. $employee_id = DB::table('employee_depart_permission')
  256. ->whereIn("depart_id", $result)
  257. ->select("employee_id")
  258. ->get()->toArray();
  259. $employee_id = array_column($employee_id,'employee_id');
  260. $model->whereIn("id", $employee_id);
  261. }
  262. if(! empty($data['number'])) $model->where('number', 'LIKE', '%'.$data['number'].'%');
  263. if(! empty($data['emp_name'])) $model->where('emp_name', 'LIKE', '%'.$data['emp_name'].'%');
  264. if(! empty($data['state'])) $model->where('state',$data['state']);
  265. if(! empty($data['mobile'])) $model->where('mobile', 'LIKE', '%'.$data['mobile'].'%');
  266. if(! isset($data['all_emp'])) $model->where('id','<>',Employee::SPECIAL_ADMIN);
  267. if(! empty($data['role'])) {
  268. $emp = EmployeeRole::where('role_id',$data['role'])
  269. ->where('del_time',0)
  270. ->select('employee_id')->get()->toArray();
  271. $model->whereIn('id',array_column($emp,'employee_id'));
  272. }
  273. if($user['id'] != Employee::SPECIAL_ADMIN) $model->where('is_manager',0);
  274. $list = $this->limit($model,'',$data);
  275. //组织数据
  276. $list = $this->organizationEmployeeData($list);
  277. return [true , $list];
  278. }
  279. /**
  280. * 用户数据组装
  281. * @param $data
  282. * @return array
  283. */
  284. public function organizationEmployeeData($data) {
  285. if (empty($data['data'])) return $data;
  286. $res = DB::table('employee_role as a')
  287. ->leftJoin('role as b','a.role_id','=','b.id')
  288. ->where('a.del_time',0)
  289. ->where('b.del_time',0)
  290. ->whereIn("a.employee_id",array_column($data['data'],'id'))
  291. ->select('a.employee_id','b.title','b.id')
  292. ->get()->toArray();
  293. $role = $role2 = [];
  294. foreach ($res as $value){
  295. if(isset($role[$value->employee_id])){
  296. $role[$value->employee_id] .= ',' . $value->title;
  297. }else{
  298. $role[$value->employee_id] = $value->title;
  299. }
  300. $role2[$value->employee_id][] = $value->id;
  301. }
  302. $map = $this->getTopDepartSon();
  303. $res = DB::table('employee_depart_permission as a')
  304. ->select('a.employee_id','b.title','b.id')
  305. ->join('depart as b','a.depart_id','=','b.id')
  306. ->whereIn("a.employee_id",array_column($data['data'],'id'))
  307. ->orderBy('b.id')
  308. ->get()->toArray();
  309. $depart_title = $depart_id = $man_top_depart = [];
  310. foreach ($res as $value){
  311. if(isset($depart_title[$value->employee_id])){
  312. $depart_title[$value->employee_id] .= ',' . $value->title;
  313. }else{
  314. $depart_title[$value->employee_id] = $value->title;
  315. }
  316. $depart_id[$value->employee_id][] = $value->id;
  317. $tmp = $map[$value->id] ?? [];
  318. if(empty($tmp)) continue;
  319. $key = $tmp['id'] . $tmp['title'];
  320. if(! isset($man_top_depart[$value->employee_id][$key])) {
  321. $man_top_depart[$value->employee_id][$key] = $map[$value->id];
  322. }
  323. }
  324. foreach ($man_top_depart as $key => $value){
  325. $man_top_depart[$key] = array_values($value);
  326. }
  327. foreach ($data['data'] as $key => $value){
  328. $data['data'][$key]['role'] = $role2[$value['id']] ?? [];
  329. $data['data'][$key]['role_name'] = $role[$value['id']] ?? '';
  330. $data['data'][$key]['depart'] = $depart_id[$value['id']] ?? [];
  331. $data['data'][$key]['depart_title'] = $depart_title[$value['id']] ?? '';
  332. $data['data'][$key]['my_top'] = $man_top_depart[$value['id']] ?? [];
  333. }
  334. return $data;
  335. }
  336. //门店下所有子集
  337. public function getTopDepartSon(){
  338. $departList = Depart::where('del_time',0)
  339. ->select('id','parent_id','title')
  340. ->get()->toArray();
  341. $map = [];
  342. foreach ($departList as $value){
  343. if($value['parent_id'] == 0){
  344. $result = array_merge($this->getAllDescendants($departList,$value['id']),[$value['id']]);
  345. foreach ($result as $val){
  346. $map[$val] = [
  347. 'id' => $value['id'],
  348. 'title' => $value['title'],
  349. ];
  350. }
  351. }
  352. }
  353. return $map;
  354. }
  355. //获取当前顶级部门下人员id
  356. public function getEmployee($user){
  357. $top_depart_id = $user['depart_top'][0] ?? [];
  358. $top_depart_id = $top_depart_id['depart_id'] ?? 0;
  359. $list = Depart::where('del_time',0)->select('id','parent_id')->get()->toArray();
  360. // 查找所有子级id
  361. $childIds = $this->findChildIds($top_depart_id, $list);
  362. $childIds[] = $top_depart_id;
  363. $employee_id = EmployeeDepartPermission::whereIn('depart_id',$childIds)
  364. ->select("employee_id")
  365. ->get()->toArray();
  366. return array_unique(array_column($employee_id,'employee_id'));
  367. }
  368. /**
  369. * 用户参数规则
  370. * @param $data
  371. * @param $is_add
  372. * @return array
  373. */
  374. public function employeeRule($data,$is_add = true){
  375. if($this->isEmpty($data,'number')) return [false,'工号不存在!'];
  376. if($this->isEmpty($data,'emp_name')) return [false,'姓名不存在!'];
  377. if(empty($data['depart'])) return [false,'部门不能为空'];
  378. $mobile = $data['mobile'] ?? "";
  379. $number = $data['number'] ?? "";
  380. if(! $is_add){
  381. if($this->isEmpty($data,'id')) return [false,'ID不能为空!'];
  382. $bool = Employee::where('del_time',0)
  383. ->where('id','<>',$data['id'])
  384. ->where(function ($query) use ($mobile, $number){
  385. $query->where('number', $number);
  386. $query->when(! empty($mobile), function ($query) use ($mobile) {
  387. return $query->orWhere('mobile', $mobile);
  388. });
  389. })->exists();
  390. }else{
  391. $bool = Employee::where('del_time',0)
  392. ->where(function ($query) use ($mobile, $number){
  393. $query->where('number', $number);
  394. $query->when(! empty($mobile), function ($query) use ($mobile) {
  395. return $query->orWhere('mobile', $mobile);
  396. });
  397. })->exists();
  398. }
  399. if($bool) return [false,'工号或手机号码已存在!'];
  400. return [true,''];
  401. }
  402. /**
  403. * 角色编辑
  404. * @param $data
  405. * @return array
  406. */
  407. public function roleEdit($data,$user){
  408. list($status,$msg) = $this->roleRule($data,$user, false);
  409. if(!$status) return [$status,$msg];
  410. $model = new Role();
  411. $model = $model->where('id',$data['id'])->first();
  412. $model->title = $data['title'];
  413. $model->save();
  414. return [true,''];
  415. }
  416. /**
  417. * 角色新增
  418. * @param $data
  419. * @param $user
  420. * @return array
  421. */
  422. public function roleAdd($data,$user){
  423. list($status,$msg) = $this->roleRule($data,$user);
  424. if(!$status) return [$status,$msg];
  425. $model = new Role();
  426. $model->title = $data['title'] ;
  427. $model->save();
  428. return [true,''];
  429. }
  430. /**
  431. * 角色删除
  432. * @param $data
  433. * @return array
  434. */
  435. public function roleDel($data){
  436. if($this->isEmpty($data,'id')) return [false,'ID必须!'];
  437. $bool = EmployeeRole::where('del_time',0)
  438. ->whereIn('role_id',$data['id'])
  439. ->exists();
  440. if($bool) return [false,'角色已绑定人员!'];
  441. Role::where('id',$data['id'])->update([
  442. 'del_time' => time()
  443. ]);
  444. RoleMenu::where('del_time',0)->where('role_id',$data['id'])->update([
  445. 'del_time' => time()
  446. ]);
  447. RoleMenuButton::where('del_time',0)->where('role_id',$data['id'])->update([
  448. 'del_time' => time()
  449. ]);
  450. return [true, ''];
  451. }
  452. /**
  453. * 角色列表
  454. * @param $data
  455. * @return array
  456. */
  457. public function roleList($data,$user){
  458. $model = Role::where('del_time',0)
  459. ->select('title','crt_time','id','upd_time')
  460. ->orderBy('id','desc');
  461. if(! empty($data['title'])) $model->where('title', 'LIKE', '%' . $data['title'] . '%');
  462. $list = $this->limit($model,'',$data);
  463. return [true, $list];
  464. }
  465. /**
  466. * 角色参数规则
  467. * @param $data
  468. * @param $is_check
  469. * @return array
  470. */
  471. public function roleRule(&$data,$user, $is_check = true){
  472. if($this->isEmpty($data,'title')) return [false,'名称不能为空!'];
  473. if($is_check){
  474. $bool = Role::where('title',$data['title'])
  475. ->where('del_time',0)
  476. ->exists();
  477. if($bool) return [false,'角色名称已存在!'];
  478. }else{
  479. if($this->isEmpty($data,'id')) return [false,'ID不能为空!'];
  480. $bool = Role::where('title',$data['title'])
  481. ->where('id','<>',$data['id'])
  482. ->where('del_time',0)
  483. ->exists();
  484. if($bool) return [false,'角色名称已存在!'];
  485. }
  486. return [true, ''];
  487. }
  488. /**
  489. * 角色菜单更新
  490. * @param $data
  491. * @return array
  492. */
  493. public function roleMenu($data){
  494. if(empty($data['role_id'])) return [false,'角色不能为空!'];
  495. if(empty($data['menu'])) return [false,'菜单数据不能为空!'];
  496. DB::beginTransaction();
  497. try {
  498. RoleMenu::where('del_time',0)->where('role_id',$data['role_id'])->update(['del_time' => time()]);
  499. RoleMenuButton::where('del_time',0)->where('role_id',$data['role_id'])->update(['del_time' => time()]);
  500. $insert = $insert2 = [];
  501. foreach ($data['menu'] as $t){
  502. $insert[] = [
  503. 'role_id' => $data['role_id'],
  504. 'menu_id' => $t['menu_id'],
  505. 'type' => $t['type'],
  506. 'crt_time' => time()
  507. ];
  508. if(! empty($t['button'])){
  509. foreach ($t['button'] as $b){
  510. $insert2[] = [
  511. 'role_id' => $data['role_id'],
  512. 'menu_id' => $t['menu_id'],
  513. 'button_id' => $b,
  514. 'crt_time' => time()
  515. ];
  516. }
  517. RoleMenuButton::insert($insert2);
  518. }
  519. }
  520. RoleMenu::insert($insert);
  521. DB::commit();
  522. }catch (\Throwable $exception){
  523. DB::rollBack();
  524. return [false,$exception->getMessage()];
  525. }
  526. return [true, ''];
  527. }
  528. /**
  529. * 角色详情
  530. * @param $data
  531. * @return array
  532. */
  533. public function roleDetail($data){
  534. if(empty($data['role_id'])) return [false,'请选择角色'];
  535. $role = Role::where('id',$data['role_id'])
  536. ->where('del_time',0)
  537. ->select('id','title')
  538. ->first();
  539. if(empty($role)) return [false,'角色不存在或已被删除'];
  540. $role = $role->toArray();
  541. $menu = RoleMenu::where('role_id',$data['role_id'])
  542. ->where('del_time',0)
  543. ->select('menu_id','type')
  544. ->get()->toArray();
  545. $button = $this->fillRoleButton([$data['role_id']]);
  546. foreach ($menu as $key => $value){
  547. $menu[$key]['button'] = $button[$value['menu_id']] ?? [];
  548. }
  549. $role['menu'] = $menu;
  550. return [true, $role];
  551. }
  552. /**
  553. * 部门编辑
  554. * @param $data
  555. * @return array
  556. */
  557. public function departEdit($data, $user){
  558. list($status,$msg) = $this->departRule($data,$user,false);
  559. if(!$status) return [$status,$msg];
  560. $update = $msg['data'][0];
  561. $model = new Depart();
  562. $model->where('id',$data['id'])->update($update);
  563. return [true, ''];
  564. }
  565. /**
  566. * 部门新增
  567. * @param $data
  568. * @param $user
  569. * @return array
  570. */
  571. public function departAdd($data,$user){
  572. list($status,$msg) = $this->departRule($data,$user);
  573. if(!$status) return [$status,$msg];
  574. try {
  575. DB::beginTransaction();
  576. foreach ($msg['data'] as $value){
  577. $model = new Depart();
  578. $model->parent_id = $value['parent_id'];
  579. $model->title = $value['title'];
  580. $model->code = $value['code'];
  581. $model->is_main = $value['is_main'];
  582. $model->save();
  583. $depart_id = $model->id;
  584. if(empty($depart_id)) {
  585. DB::rollBack();
  586. return [false,'部门新建失败'];
  587. }
  588. }
  589. DB::commit();
  590. }catch (\Exception $exception){
  591. DB::rollBack();
  592. return [false,$exception->getMessage()];
  593. }
  594. return [true,'保存成功!'];
  595. }
  596. /**
  597. * 部门删除
  598. * @param $data
  599. * @return array
  600. */
  601. public function departDel($data){
  602. list($status,$msg) = $this->checkDepartDel($data);
  603. if(! $status) return [false, $msg];
  604. Depart::whereIn('id',$data['id'])->update([
  605. 'del_time'=>time()
  606. ]);
  607. return [true,'删除成功'];
  608. }
  609. /**
  610. * 判断部门是否可以删除
  611. * @param $data
  612. * @return array
  613. */
  614. public function checkDepartDel($data){
  615. if($this->isEmpty($data,'id')) return [false,'ID必须!'];
  616. $bool = Depart::whereIn('parent_id',$data['id'])->where('del_time',0)->exists();
  617. if($bool) return [false,'部门下有子部门!'];
  618. if($this->checkDepartHasPerson($data['id'])) return [false,'部门下有人员档案!'];
  619. return [true, ''];
  620. }
  621. /**
  622. * 部门列表
  623. * @param $data
  624. * @param $user
  625. * @return array
  626. */
  627. public function departList($data,$user){
  628. $model = Depart::where('del_time',0)
  629. ->select('title','id','code','parent_id')
  630. ->orderby('id', 'asc');
  631. if(isset($data['parent_id'])) $model->where('parent_id', $data['parent_id']);
  632. if(! empty($data['title'])) $model->where('title', 'LIKE', '%'.$data['title'].'%');
  633. if(! empty($data['code'])) $model->where('code', 'LIKE', '%'.$data['code'].'%');
  634. $list = $model->get()->toArray();
  635. $list = $this->fillDepartList($list, $user);
  636. $list_tree = $list;
  637. if(! empty($list_tree)) {
  638. $list_tree = $this->makeTree(0,$list_tree);
  639. $list_tree = $this->set_sort_circle($list_tree);
  640. }
  641. return [200,['data' => $list,'tree' => $list_tree]];
  642. }
  643. public function fillDepartList($list,$user){
  644. if(empty($list)) return $list;
  645. return $list;
  646. }
  647. //获取可见的部门范围
  648. public function getDepartIdList($user){
  649. $list = Depart::where('del_time',0)->select('id','parent_id')->get()->toArray();
  650. $result = [];
  651. foreach ($user['depart_range'] as $v){
  652. // 查找所有父级id
  653. $parentIds = $this->findParentIds($v, $list);
  654. // 查找所有子级id
  655. $childIds = $this->findChildIds($v, $list);
  656. // 合并父级和子级id
  657. $tmp = array_merge($parentIds, $childIds, [$v]);
  658. $result = array_merge($result,$tmp);
  659. }
  660. return array_unique($result);
  661. }
  662. /**
  663. * 部门参数规则
  664. * @param $data
  665. * @param $is_check
  666. * @return array
  667. */
  668. public function departRule($data,$user, $is_check = true){
  669. if($this->isEmpty($data,'data')) return [false,'数据不能为空!'];
  670. $code = array_column($data['data'],'code');
  671. $title = array_column($data['data'],'title');
  672. $code = array_map(function($val) {
  673. return $val !== null ? $val : 0;
  674. }, $code);
  675. $title = array_map(function($val) {
  676. return $val !== null ? $val : 0;
  677. }, $title);
  678. $code_count = array_count_values($code);
  679. $title_count = array_count_values($title);
  680. foreach ($code as $value){
  681. if(empty($value)) return [false,'编码不能为空!'];
  682. if($code_count[$value] > 1) return [false,'编码不能重复'];
  683. }
  684. foreach ($title as $value){
  685. if(empty($value)) return [false,'名称不能为空!'];
  686. if($title_count[$value] > 1) return [false,'名称不能重复'];
  687. }
  688. foreach ($data['data'] as $key => $value){
  689. if(empty($value['parent_id'])) $data['data'][$key]['parent_id'] = 0;
  690. $data['data'][$key]['upd_time'] = time();
  691. if($is_check){
  692. $data['data'][$key]['crt_time'] = time();
  693. $bool = Depart::whereRaw("binary code = '{$value['code']}'")
  694. ->where('del_time',0)
  695. ->exists();
  696. }else{
  697. if($this->isEmpty($data,'id')) return [false,'id不能为空!'];
  698. $bool = Depart::whereRaw("binary code = '{$value['code']}'")
  699. ->where('id','<>',$data['id'])
  700. ->where('del_time',0)
  701. ->exists();
  702. }
  703. if($bool) return [false,'编码不能重复'];
  704. }
  705. return [true, $data];
  706. }
  707. /**
  708. * 检测部门下是否存在人员
  709. * @param $depart_id
  710. * @return false
  711. */
  712. public function checkDepartHasPerson($depart_id = []){
  713. if(empty($depart_id)) return false;
  714. $bool = EmployeeDepartPermission::from('employee_depart_permission as a')
  715. ->leftJoin('employee as b','b.id','a.employee_id')
  716. ->where('b.del_time',0)
  717. ->whereIn('a.depart_id',$depart_id)
  718. ->exists();
  719. return $bool;
  720. }
  721. /**
  722. * 班组编辑
  723. * @param $data
  724. * @return array
  725. */
  726. public function teamEdit($data){
  727. list($status,$msg) = $this->teamRule($data,false);
  728. if(!$status) return [$status,$msg];
  729. $model = new Team();
  730. $model = $model->where('id',$data['id'])->first();
  731. $model->title = $data['title'];
  732. $model->code = $data['code'];
  733. $model->save();
  734. return [true,'保存成功!'];
  735. }
  736. /**
  737. * 班组新增
  738. * @param $data
  739. * @param $user
  740. * @return array
  741. */
  742. public function teamAdd($data,$user){
  743. list($status,$msg) = $this->teamRule($data);
  744. if(!$status) return [$status,$msg];
  745. $model = new Team();
  746. $model->title = $data['title'] ;
  747. $model->code = $data['code'];
  748. $model->save();
  749. return [true,'保存成功!'];
  750. }
  751. /**
  752. * 班组删除
  753. * @param $data
  754. * @return array
  755. */
  756. public function teamDel($data){
  757. if($this->isEmpty($data,'id')) return [false,'ID必须!'];
  758. Team::where('id',$data['id'])->update([
  759. 'del_time'=>time()
  760. ]);
  761. return [true,'删除成功'];
  762. }
  763. /**
  764. * 班组列表
  765. * @param $data
  766. * @return array
  767. */
  768. public function teamList($data){
  769. $list = Team::where('del_time',0)
  770. ->select('title','id','crt_time','upd_time','code')
  771. ->orderBy('id','desc');
  772. $list = $this->limit($list,'',$data);
  773. return [200,$list];
  774. }
  775. /**
  776. * 班组参数规则
  777. * @param $data
  778. * @param $is_add
  779. * @return array
  780. */
  781. public function teamRule($data,$is_add = true){
  782. if($this->isEmpty($data,'title')) return [false,'名称不存在!'];
  783. if($this->isEmpty($data,'code')) return [false,'编码不存在'];
  784. $model = Team::where('title',$data['title'])
  785. ->where('code',$data['code'])
  786. ->where('del_time',0);
  787. if(! $is_add){
  788. if($this->isEmpty($data,'id')) return [false,'ID不能为空'];
  789. $model->where('id','<>',$data['id']);
  790. }
  791. $bool = $model->exists();
  792. if($bool) return [false,'名称和编码已存在!'];
  793. return [true,''];
  794. }
  795. /**
  796. * 班组详情
  797. * @param $data
  798. * @return array
  799. */
  800. public function teamDetail($data){
  801. if($this->isEmpty($data,'id')) return [false,'ID不能为空!'];
  802. $result = EmployeeTeamPermission::from('employee_team_permission as a')
  803. ->leftJoin('employee as b','b.id','a.employee_id')
  804. ->where('team_id',$data['id'])
  805. ->select('b.id','b.emp_name','b.number as code')
  806. ->get()->toArray();
  807. return [true,$result];
  808. }
  809. /**
  810. * 人员权限
  811. * @param $data
  812. * @return array
  813. */
  814. public function employeeRole($data){
  815. $role_ids = [];
  816. $employee_ids = [];
  817. foreach ($data as $v){
  818. if(isset($v['role_id'])){
  819. if(!in_array($v['role_id'],$role_ids)){
  820. $role_ids[] = $v['role_id'];
  821. }
  822. }
  823. if(isset($v['employee_id'])){
  824. if(!in_array($v['employee_id'],$employee_ids)){
  825. $employee_ids[] = $v['employee_id'];
  826. }
  827. }
  828. }
  829. EmployeeMenuPermission::wherein('role_id',$role_ids)->delete();
  830. EmployeeMenuPermission::wherein('employee_id',$employee_ids)->delete();
  831. EmployeeMenuPermission::insert($data);
  832. return [200,'保存成功!'];
  833. }
  834. /**
  835. * 人员部门关系更新
  836. * @param $data
  837. * @return array
  838. */
  839. public function employeeDepart($data){
  840. if($this->isEmpty($data,'insert')) return [false,'数据不能为空!'];
  841. DB::beginTransaction();
  842. try {
  843. if($data['type'] == 1){
  844. EmployeeDepartPermission::whereIn('depart_id',$data['insert']['depart_id'])->delete();
  845. }else{
  846. EmployeeDepartPermission::whereIn('employee_id',$data['insert']['employee_id'])->delete();
  847. }
  848. $insert = [];
  849. foreach ($data['insert']['depart_id'] as $t){
  850. foreach ($data['insert']['employee_id'] as $e){
  851. $insert[] = [
  852. 'depart_id' => $t,
  853. 'employee_id' => $e
  854. ];
  855. }
  856. }
  857. EmployeeDepartPermission::insert($insert);
  858. DB::commit();
  859. }catch (\Throwable $exception){
  860. DB::rollBack();
  861. return [false,$exception->getMessage()];
  862. }
  863. return [true,'保存成功!'];
  864. }
  865. /**
  866. * 人员班组关系更新
  867. * @param $data
  868. * @return array
  869. */
  870. public function employeeTeam($data){
  871. if($this->isEmpty($data,'insert')) return [false,'数据不能为空!'];
  872. DB::beginTransaction();
  873. try {
  874. if($data['type'] == 1){
  875. EmployeeTeamPermission::whereIn('team_id',$data['insert']['team_id'])->delete();
  876. }else{
  877. EmployeeTeamPermission::whereIn('employee_id',$data['insert']['employee_id'])->delete();
  878. }
  879. $insert = [];
  880. foreach ($data['insert']['team_id'] as $t){
  881. foreach ($data['insert']['employee_id'] as $e){
  882. $insert[] = [
  883. 'team_id' => $t,
  884. 'employee_id' => $e
  885. ];
  886. }
  887. }
  888. EmployeeTeamPermission::insert($insert);
  889. DB::commit();
  890. }catch (\Throwable $exception){
  891. DB::rollBack();
  892. return [false,$exception->getMessage()];
  893. }
  894. return [true,'保存成功!'];
  895. }
  896. /**
  897. * 登陆参数规则
  898. * @param $data
  899. * @return array
  900. */
  901. public function loginRule($data){
  902. if($this->isEmpty($data,'account')) return [false,'账号不能为空!'];
  903. if($this->isEmpty($data,'password')) return [false,'密码不存在!'];
  904. $account = $data['account'];
  905. $res = Employee::where('del_time',0)
  906. ->where(function ($query)use($account) {
  907. $query->where('account', $account)
  908. ->orWhere('mobile', $account);
  909. })
  910. ->get()->toArray();
  911. if(empty($res)) return [false,'账号不存在或已被删除'];
  912. if(count($res) > 1) return [false,'该手机号检测出多个账户,请联系后台管理员'];
  913. $res = reset($res);
  914. if(! Hash::check($data['password'], $res['password'])) return [false,'密码错误'];
  915. if($res['is_admin'] != Employee::IS_ADMIN) return [false,'账号限制登录'];
  916. if($res['state'] == Employee::NOT_USE) return [false,'账号已停用'];
  917. return [true, ['id'=>$res['id'],'name'=>$res['emp_name'], 'number' => $res['number']]];
  918. }
  919. /**
  920. * 检查人员信息
  921. * @param $userId
  922. * @return array
  923. */
  924. public static function checkUser($userId){
  925. $res = Employee::where('id', $userId)
  926. ->where('del_time',0)
  927. ->where('is_admin',Employee::IS_ADMIN)
  928. ->where('state',Employee::USE)->get()->first();
  929. if(empty($res)) return [false, '该账号无法登录,请联系管理员!'];
  930. return [true, $res];
  931. }
  932. /**
  933. * 获取登录账号的角色
  934. * @param $employee_id
  935. * @return array
  936. */
  937. public static function getPersonRole($employee_id){
  938. if(empty($employee_id) || $employee_id == Employee::SPECIAL_ADMIN) return [];
  939. $role = EmployeeRole::where('del_time',0)
  940. ->where('employee_id',$employee_id)
  941. ->select('role_id')
  942. ->get()->toArray();
  943. //组织
  944. $role_id = array_unique(array_column($role,'role_id'));
  945. asort($role_id);
  946. return array_values($role_id);
  947. }
  948. public static function getPersonRoleQx($role_id = []){
  949. if(empty($role_id)) return [];
  950. $role = RoleMenu::where('del_time',0)
  951. ->whereIn('role_id',$role_id)
  952. ->select('menu_id','type')
  953. ->get()->toArray();
  954. $sysmenu = SysMenu::where('del_time',0)
  955. ->where('is_authority','>',0)
  956. ->select('id')
  957. ->get()->toArray();
  958. $sysmenu = array_column($sysmenu,'id');
  959. $return = [];
  960. foreach ($role as $value){
  961. if(! in_array($value['menu_id'],$sysmenu)) continue;
  962. if(isset($return[$value['menu_id']])){
  963. if($return[$value['menu_id']] < $value['type']) $return[$value['menu_id']] = $value['type'];
  964. }else{
  965. $return[$value['menu_id']] = $value['type'];
  966. }
  967. }
  968. return $return;
  969. }
  970. public static function getSpecialButton($role_id,$user){
  971. $return = [];
  972. $special_button = config('specialButton');
  973. if($user == Employee::SPECIAL_ADMIN) {
  974. foreach ($special_button as $value){
  975. $return[] = $value['id'];
  976. }
  977. return $return;
  978. }
  979. $role_button = RoleMenuButton::where('del_time',0)
  980. ->where('button_id','<',0)
  981. ->whereIn('role_id',$role_id)
  982. ->select('menu_id','button_id')
  983. ->get()->toArray();
  984. foreach ($role_button as $value){
  985. $return[] = $value['button_id'];
  986. }
  987. return $return;
  988. }
  989. //通过角色获取菜单
  990. public function getMenuByRoleInList($user){
  991. $role_id = $user['role'] ?? [];
  992. $menu = SysMenu::where('del_time',0)->select('id')->get()->toArray();
  993. if($user['id'] == Employee::SPECIAL_ADMIN) return array_column($menu,'id');
  994. //没绑定角色
  995. if(empty($role_id)) return [];
  996. $role_menu = RoleMenu::whereIn('role_id',$role_id)
  997. ->where('del_time',0)
  998. ->select('menu_id')
  999. ->get()->toArray();
  1000. return array_column($role_menu,'menu_id');
  1001. }
  1002. //通过角色获取菜单以及按钮
  1003. public function getMenuByRole($user){
  1004. $role_id = $user['role'] ?? [];
  1005. $menu = SysMenu::where('del_time',0)->select('id','uri')->get()->toArray();
  1006. $button = SysMenuButton::where('del_time',0)->select('id','title','sort','func','menu_id')->get()->toArray();
  1007. $button_map = [];
  1008. foreach ($button as $value){
  1009. $button_map[$value['menu_id']][] = $value;
  1010. }
  1011. $special_button = config('specialButton');
  1012. foreach ($special_button as $value){
  1013. $button_map[$value['menu_id']][] = $value;
  1014. }
  1015. $object = [];
  1016. //超级管理员
  1017. if($user['id'] == Employee::SPECIAL_ADMIN){
  1018. foreach ($menu as $value){
  1019. $object[] = [
  1020. 'id' => $value['id'],
  1021. // 'type' => 0,//所有权限
  1022. 'uri' => $value['uri'],
  1023. 'button' => $button_map[$value['id']] ?? [],
  1024. ];
  1025. }
  1026. }else{
  1027. //没绑定角色
  1028. if(empty($role_id)) return [];
  1029. $search = RoleMenu::whereIn('role_id',$role_id)
  1030. ->where('del_time',0)
  1031. ->select('menu_id','type')
  1032. ->get()->toArray();
  1033. $menu_map = array_column($menu,'uri','id');
  1034. //该角色下 菜单里所有按钮
  1035. $button_menu = $this->fillRoleButton($role_id);
  1036. foreach ($search as $value){
  1037. $bt = $button_menu[$value['menu_id']] ?? [];
  1038. $new = [];
  1039. $button_tmp = $button_map[$value['menu_id']] ?? [];
  1040. $button_tmp = array_column($button_tmp,null,'id');
  1041. foreach ($bt as $b){
  1042. if(! empty($button_tmp[$b])) $new[] = $button_tmp[$b];
  1043. }
  1044. $object[] = [
  1045. 'id' => $value['menu_id'],
  1046. 'uri' => $menu_map[$value['menu_id']] ?? '',
  1047. // 'type' => $value['type'],
  1048. 'button' => $new,
  1049. ];
  1050. }
  1051. }
  1052. return $object;
  1053. }
  1054. /**
  1055. * 人员直接绑定部门
  1056. * @param $data
  1057. * @param $user
  1058. * @return array
  1059. */
  1060. public function employeeManagerDepart($data,$user){
  1061. if($user['id'] != Employee::SPECIAL_ADMIN) return [false,'非ADMIN账号不能操作'];
  1062. if($this->isEmpty($data,'employee_id')) return [false,'请选择操作人员'];
  1063. if($this->isEmpty($data,'depart_id')) return [false,'请选择部门'];
  1064. EmployeeManagerDepart::where('employee_id',$data['employee_id'])->update([
  1065. 'del_time' => time()
  1066. ]);
  1067. $insert = [];
  1068. foreach ($data['depart_id'] as $value){
  1069. $insert[] = [
  1070. 'employee_id' => $data['employee_id'],
  1071. 'depart_id' => $value,
  1072. 'crt_time' => time(),
  1073. 'upd_time' => time(),
  1074. ];
  1075. }
  1076. EmployeeManagerDepart::insert($insert);
  1077. return [true,''];
  1078. }
  1079. /**
  1080. * 填充角色下的按钮
  1081. * @param $role_id
  1082. * @return array
  1083. */
  1084. public function fillRoleButton($role_id){
  1085. $button = RoleMenuButton::whereIn('role_id',$role_id)
  1086. ->where('del_time',0)
  1087. ->select('menu_id','button_id')
  1088. ->get()->toArray();
  1089. $button_map = [];
  1090. foreach ($button as $value){
  1091. if(! isset($button_map[$value['menu_id']])){
  1092. $button_map[$value['menu_id']][] = $value['button_id'];
  1093. }else{
  1094. if(! in_array($value['button_id'], $button_map[$value['menu_id']])) $button_map[$value['menu_id']][] = $value['button_id'];
  1095. }
  1096. }
  1097. return $button_map;
  1098. }
  1099. /**
  1100. * 获取登录账号的部门
  1101. * @param $employee_id
  1102. * @return array|string[]
  1103. */
  1104. public static function getLoginDepart($employee_id){
  1105. if(empty($employee_id)) return [];
  1106. //自己绑定的部门 且 启用的部门
  1107. $depart = EmployeeDepartPermission::from('employee_depart_permission as a')
  1108. ->join('depart as b','b.id','a.depart_id')
  1109. ->where('a.employee_id',$employee_id)
  1110. ->where('b.is_use',Depart::IS_UES)
  1111. ->select('a.depart_id','b.title')
  1112. ->orderBy('b.parent_id','asc')
  1113. ->orderBy('a.depart_id','asc')
  1114. ->get()->toArray();
  1115. return $depart;
  1116. }
  1117. /**
  1118. * 获取顶级id
  1119. * @param $id
  1120. * @param $data
  1121. * @return int
  1122. */
  1123. public static function getTopParentId($id, $data) {
  1124. foreach ($data as $item) {
  1125. if ($item['id'] == $id) {
  1126. if ($item['parent_id'] == 0) {
  1127. // 找到最顶级的id
  1128. return $item['id'];
  1129. } else {
  1130. // 继续递归查找父级
  1131. return self::getTopParentId($item['parent_id'], $data);
  1132. }
  1133. }
  1134. }
  1135. // 如果没有找到匹配的id,则返回null或者其他你希望的默认值
  1136. return 0;
  1137. }
  1138. /**
  1139. * 递归获取所有id
  1140. * @param $data
  1141. * @param $id
  1142. * @return array
  1143. */
  1144. public static function getAllIds($data, $id) {
  1145. $result = array(); // 存储结果的数组
  1146. foreach ($data as $node) {
  1147. if ($node['parent_id'] == $id) { // 如果当前节点的父 ID 等于指定 ID,则将该节点添加到结果中
  1148. $result[] = $node['id'];
  1149. // 递归查询该节点的所有子孙节点,并将结果合并到结果数组中
  1150. $result = array_merge($result, self::getAllIds($data, $node['id']));
  1151. }
  1152. }
  1153. return $result;
  1154. }
  1155. public static function checkWxUser($userId){
  1156. $res = Employee::where('id', $userId)
  1157. ->where('del_time',0)
  1158. ->where('state',Employee::USE)->get()->first();
  1159. if(empty($res)) return [false, '该账号无法登录,请联系管理员!'];
  1160. return [true, $res];
  1161. }
  1162. public function getTopMessage($data,$user){
  1163. $top = $user['depart_top'] ?? [];
  1164. return [true, ['top' => $top]];
  1165. }
  1166. public function searchByEmpName($emp_name){
  1167. $emp = Employee::where('del_time',0)
  1168. ->where('emp_name', 'LIKE', '%'.$emp_name.'%')
  1169. ->select('id')
  1170. ->get()->toArray();
  1171. return array_column($emp,'id');
  1172. }
  1173. public function departSetDaHuangFengID($data,$user){
  1174. if(empty($data['top_depart_id'])) return [false, '请选择门店'];
  1175. if(! isset($data['clueSourceId'])) return [false, 'clueSourceId不存在'];
  1176. $dhf_map = DepartWithDHF::where('del_time',0)
  1177. ->whereIn('clueSourceId',$data['clueSourceId'])
  1178. ->pluck('top_depart_id','clueSourceId')->toArray();
  1179. $depart_map = Depart::where('del_time',0)
  1180. ->whereIn('id',array_values($dhf_map))
  1181. ->pluck('title','id')->toArray();
  1182. $time = time();
  1183. $insert = [];
  1184. $msg = "";
  1185. foreach ($data['clueSourceId'] as $value){
  1186. $top_depart_id_tmp = $dhf_map[$value] ?? 0;
  1187. if(! empty($top_depart_id_tmp) && $top_depart_id_tmp != $data['top_depart_id']){
  1188. $title = $depart_map[$top_depart_id_tmp] ?? "";
  1189. $msg .= "大黄蜂clueSourceId($value)已绑定门店($title),";
  1190. }else{
  1191. $insert[] = [
  1192. 'top_depart_id' => $data['top_depart_id'],
  1193. 'clueSourceId' => $value,
  1194. 'crt_time' => $time
  1195. ];
  1196. }
  1197. }
  1198. if(! empty($msg)) return [false, rtrim($msg,',')];
  1199. //删除
  1200. DepartWithDHF::where('del_time',0)
  1201. ->where('top_depart_id',$data['top_depart_id'])
  1202. ->update(['del_time' => $time]);
  1203. //写入
  1204. if(! empty($insert)) DepartWithDHF::insert($insert);
  1205. return [true, ''];
  1206. }
  1207. public function getDepartDaHuangFengID($data,$user){
  1208. if(empty($data['top_depart_id'])) return [false, '门店ID不能为空'];
  1209. $clueSourceId = DepartWithDHF::where('del_time',0)
  1210. ->where('top_depart_id',$data['top_depart_id'])
  1211. ->pluck('clueSourceId')->toArray();
  1212. return [true, $clueSourceId];
  1213. }
  1214. }