12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?php
- declare (strict_types=1);
- namespace app\command;
- use think\console\Command;
- use think\console\Input;
- use think\console\input\Argument;
- use think\console\input\Option;
- use think\console\Output;
- use think\facade\Db;
- use think\facade\Log;
- use app\common\api\TalentState;
- use app\enterprise\model\Talent;
- use app\common\api\MenuApi;
- use app\admin\model\SysRelation;
- use app\admin\model\User;
- /**
- * 人才认定部门审核检查
- */
- class DeptVerifyChecker extends Command {
- protected function configure() {
- // 指令配置
- $this->setName('DeptVerifyChecker')
- ->setDescription('Dept Verify Checker');
- }
- protected function execute(Input $input, Output $output) {
- $where[] = ["e.type", "=", 1];
- $where[] = ["ti.checkState", "=", TalentState::FST_VERIFY_PASS];
- $where[] = ["ti.pass_dept_check", "=", 0];
- $jjrc_list = Talent::alias("ti")
- ->leftJoin("new_talent_condition tc", "tc.id=ti.talent_condition")
- ->leftJoin("un_enterprise e", "e.id=ti.enterprise_id")
- ->leftJoin("(select description,mainId,last_state,new_state,state,createTime from new_talent_checklog where md5(concat(createTime,mainId,`type`)) in (select md5(concat(max(createTime),mainId,`type`)) from `new_talent_checklog` where `type`=1 and `step` is null and active=1 and typeFileId is null group by mainId,`type`)) tl", "`tl`.`mainId`=ti.id")
- ->where($where)->column("companyIds");
- $jjrc_counts = [];
- for ($i = 0; $i < count($jjrc_list); $i++) {
- $companys = array_filter(explode(",", $jjrc_list[$i]));
- for ($n = 0; $n < count($companys); $n++) {
- $jjrc_counts[$companys[$n]] += 1;
- }
- }
- $codes = ["talentInfo_dep"];
- $menuIds = MenuApi::getMenuIdsByCodes($codes);
- $where = [];
- $where[] = ["menuid", "in", $menuIds];
- $roleIds = SysRelation::where($where)->group("roleid")->having("count(*)=" . count($codes))->column("roleid");
- foreach ($jjrc_counts as $companyId => $count) {
- $where = [];
- $where[] = ["type", "=", 1];
- $where[] = ["status", "=", 1];
- $where[] = ["roleid", "<>", 1];
- $where[] = ["companyId", "=", $companyId];
- $regstr = ",(" . implode("|", $roleIds) . "),";
- $whereRaw = "concat(',',roleid,',') REGEXP '$regstr'";
- $users = User::where($where)->whereRaw($whereRaw)->select()->toArray();
- foreach ($users as $user) {
- if ($user["phone"]) {
- queue("app\job\Messenger", ["type" => 3, "userId" => $user["id"], "name" => $user["name"], "phone" => $user["phone"], "count" => $count]);
- }
- }
- }
- }
- }
|