toArray(); if ($info) { if ($info["talent_type"]) { $info["talentTypeName"] = DictApi::selectByParentCode("talent_type")[$info["talent_type"]]; } if ($info["nationality"]) { $info["nationalityName"] = DictApi::selectByParentCode("nationality")[$info["nationality"]]; } if ($info["nation"]) { $info["nationName"] = DictApi::selectByParentCode("nation")[$info["nation"]]; } if ($info["politics"]) { $info["politicsName"] = DictApi::selectByParentCode("politics")[$info["politics"]]; } if ($info["province"]) { $info["provinceName"] = Db::table("un_common_location")->where("code", "=", $info["province"])->findOrEmpty()["name"]; } if ($info["city"]) { $info["cityName"] = Db::table("un_common_location")->where("code", "=", $info["city"])->findOrEmpty()["name"]; } if ($info["county"]) { $info["countyName"] = Db::table("un_common_location")->where("code", "=", $info["county"])->findOrEmpty()["name"]; } $enterprise = Enterprise::findOrEmpty($info["enterprise_id"])->toArray(); $info["enterpriseName"] = $enterprise["name"]; $info["enterpriseTag"] = $enterprise["enterpriseTag"]; if ($enterprise["street"]) { $info["street"] = $enterprise["street"]; $info["streetName"] = DictApi::selectByParentCode("street")[$enterprise["street"]]; } if ($enterprise["industryFieldNew"]) { $info["industryFieldName"] = DictApi::selectByParentCode("industry_field")[$enterprise["industryFieldNew"]]; } if ($enterprise["enterpriseTag"]) { $info["enterpriseTagName"] = DictApi::selectByParentCode("enterprise_tag")[$enterprise["enterpriseTag"]]; } if ($info["headimgurl"]) { $info["headimgurl"] = "/storage/" . $info["headimgurl"]; } if ($info["talent_arrange"]) { $info["talentArrangeName"] = DictApi::selectByParentCode("talent_arrange")[$info["talent_arrange"]]; } if ($info["import_way"]) { $info["importWayName"] = DictApi::selectByParentCode("import_way")[$info["import_way"]]; } if ($info["source"]) { $info["sourceName"] = DictApi::selectByParentCode("source")[$info["source"]]; } if ($info["source_city"]) { $info["sourceCityName"] = Db::table("un_common_location")->where("code", "=", $info["source_city"])->findOrEmpty()["name"]; } if ($info["source_county"]) { $info["sourceCountyName"] = Db::table("un_common_location")->where("code", "=", $info["source_county"])->findOrEmpty()["name"]; } if ($info["highest_degree"]) { $info["highestDegreeName"] = DictApi::selectByParentCode("highest_degree")[$info["highest_degree"]]; } if ($info["talent_condition"]) { $talent_condition = \app\common\model\TalentCondition::findOrEmpty($info["talent_condition"]); $info["talentConditionName"] = $talent_condition["name"]; $info["talent_arrange_category"] = $talent_condition["talentLevelCat"]; $info["talentArrangeCatName"] = DictApi::selectByParentCode("talent_condition_cats")[$talent_condition["talentLevelCat"]]; } } return $info; } public static function getOne($id) { return Talent::findOrEmpty($id); } public static function getDeptList($request) { $where = []; $order = trim($request->param("order")) ?: "desc"; $offset = trim($request->param("offset")) ?: 0; $limit = trim($request->param("limit")) ?: 10; $where[] = ["ti.checkState", "=", 7]; $where[] = ["ti.pass_dept_check", "=", 0]; $companyId = session("user")["companyId"]; $enterprise_tag_kvs = DictApi::selectByParentCode("enterprise_tag"); $count = Talent::alias("ti") ->leftJoin("new_talent_condition tc", "tc.id=ti.talent_condition") ->leftJoin("new_enterprise e", "e.id=ti.enterprise_id") ->where($where) ->whereRaw("find_in_set(:companyId,companyIds)", ["companyId" => $companyId])->count(); $list = Talent::alias("ti") ->leftJoin("new_talent_condition tc", "tc.id=ti.talent_condition") ->leftJoin("new_enterprise e", "e.id=ti.enterprise_id") ->where($where) ->whereRaw("find_in_set(:companyId,companyIds)", ["companyId" => $companyId]) ->field("ti.*,e.name as enterprise_name,e.type as enterprise_type,enterpriseTag") ->limit($offset, $limit)->order("ti.createTime " . $order) ->select()->toArray(); foreach ($list as &$item) { $item["talent_type"] = $item["enterprise_type"] == 1 ? "晋江优秀人才" : "集成电路优秀人才"; $item["enterprise_tag"] = $enterprise_tag_kvs[$item["enterpriseTag"]]; }unset($item); return ["total" => $count, "rows" => $list]; } public static function getPublicList($params) { $order = $params["order"]; $offset = $params["offset"]; $limit = $params["limit"]; $where = []; if ($params["name"]) { $where[] = ["ti.name", "like", "%" . $params["name"] . "%"]; } if ($params["sex"]) { $where[] = ["ti.sex", "=", $params["sex"]]; } if ($params["checkState"]) { $where[] = ["ti.checkState", "=", $params["checkState"]]; } $type = $params["type"]; switch ($type) { case 1: case 2: $where[] = ["ti.checkState", "=", TalentState::REVERIFY_PASS]; break; case 3: //公示 case 7: //公示预览 $where[] = ["ti.checkState", "=", TalentState::ZX_PASS]; break; case 4: //公示通过 $where[] = ["ti.checkState", "=", TalentState::ANNOUNCED]; break; case 5: case 8: //公布预览 $where[] = ["ti.checkState", "=", TalentState::ANNOUNCED_REVERIFY_PASS]; break; case 6: $where[] = ["ti.checkState", "=", TalentState::PUBLISH_PASS]; break; } $enterprise_tag_kvs = DictApi::selectByParentCode("enterprise_tag"); $count = Talent::alias("ti")->leftJoin("new_enterprise e", "e.id=ti.enterprise_id")->where($where)->count(); $list = Talent::alias("ti")->leftJoin("new_enterprise e", "e.id=ti.enterprise_id") ->where($where) ->limit($offset, $limit) ->order("ti.createTime " . $order)->field("ti.*,e.name as enterpriseName,e.type as enterprise_type,enterpriseTag")->select()->toArray(); foreach ($list as &$item) { $item["talent_type"] = $item["enterprise_type"] == 1 ? "晋江优秀人才" : "集成电路优秀人才"; $item["enterprise_tag"] = $enterprise_tag_kvs[$item["enterpriseTag"]]; }unset($item); return ["total" => $count, "rows" => $list]; } public static function getListByIds($ids) { $where[] = ["id", "in", $ids]; return Talent::where($where)->select()->toArray(); } public static function getList($request) { $where = []; $order = trim($request->param("order")) ?: "desc"; $offset = trim($request->param("offset")) ?: 0; $limit = trim($request->param("limit")) ?: 10; $process = $request->param("process"); if ($process == 3) { return self::getDeptList($request); } if ($process == 4) { $where = sprintf("(ti.checkState in (11,12,13)) or (ti.checkState=9 and ti.pass_dept_check=0) or (ti.checkState=7 and ti.pass_dept_check=1) or (ti.checkState=7 and (tc.companyIds is null or tc.companyIds = ''))"); $count = Talent::alias("ti") ->leftJoin("new_enterprise e", "e.id=ti.enterprise_id") ->leftJoin("new_talent_condition tc", "tc.id=ti.talent_condition") ->whereRaw($where)->count(); $list = Talent::alias("ti") ->leftJoin("new_enterprise e", "e.id=ti.enterprise_id") ->leftJoin("new_talent_condition tc", "tc.id=ti.talent_condition") ->whereRaw($where) ->limit($offset, $limit) ->order("ti.createTime " . $order) ->field("ti.*,e.name as enterprise_name,e.type as enterprise_type,enterpriseTag") ->select()->toArray(); } else { switch ($process) { case 1: $where[] = ["ti.checkState", "in", [2, -1]]; break; case 2: $where[] = ["ti.checkState", "in", [6, -2]]; break; case 5: $where[] = ["ti.checkState", ">=", 11]; break; } $count = Talent::alias("ti")->leftJoin("new_enterprise e", "e.id=ti.enterprise_id")->where($where)->count(); $list = Talent::alias("ti")->leftJoin("new_enterprise e", "e.id=ti.enterprise_id") ->where($where)->limit($offset, $limit)->order("ti.createTime " . $order)->field("ti.*,e.name as enterprise_name,e.type as enterprise_type,enterpriseTag")->select()->toArray(); } $talent_arrange_kvs = DictApi::selectByParentCode("talent_arrange"); $enterprise_tag_kvs = DictApi::selectByParentCode("enterprise_tag"); foreach ($list as &$item) { $item["talent_type"] = $item["enterprise_type"] == 1 ? "晋江优秀人才" : "集成电路优秀人才"; $item["enterprise_tag"] = $enterprise_tag_kvs[$item["enterpriseTag"]]; $item["talentArrangeName"] = $talent_arrange_kvs[$item["talent_arrange"]]; $item["talentConditionName"] = TalentCondition::findOrEmpty($item["talent_condition"])["name"]; $last_log = TalentLogApi::getLastLog($item["id"], 1, 0, ["step", "=", null]); $item["lastState"] = $last_log["last_state"]; $item["realState"] = $last_log["state"]; }unset($item); return ["total" => $count, "rows" => $list]; } public static function getExportDatas($params) { $where[] = []; //特殊字段处理 $fields = []; foreach ($params as $param) { if (!in_array($param, ["industryFieldNew", "enterpriseName", "enterpriseTag", "street"])) { $fields[] = "ti." . $param; } } $fields[] = "e.name as enterpriseName"; $fields[] = "e.industryFieldNew"; $fields[] = "e.enterpriseTag"; $fields[] = "e.street"; if (in_array("card_type", $params)) { $cardTypes = DictApi::selectByParentCode("card_type"); } if (in_array("industryFieldNew", $params)) { $industry_fields = DictApi::selectByParentCode("industry_field"); } if (in_array("enterpriseTag", $params)) { $enterpriseTags = DictApi::selectByParentCode("enterprise_tag"); } if (in_array("street", $params)) { $streets = DictApi::selectByParentCode("street"); } if (in_array("nation", $params)) { $nations = DictApi::selectByParentCode("nation"); } if (in_array("nationality", $params)) { $nationalitys = DictApi::selectByParentCode("nationality"); } if (in_array("politics", $params)) { $politics = DictApi::selectByParentCode("politics"); } if (in_array("talent_type", $params)) { $talentTypes = DictApi::selectByParentCode("talent_type"); } $sex = [1 => "男", 2 => "女"]; $list = Talent::alias("ti")->field($fields)->leftJoin("new_enterprise e", "e.id=ti.enterprise_id")->select()->toArray(); foreach ($list as &$item) { $item["card_type"] = $cardTypes[$item["card_type"]]; $item["industryFieldNew"] = $industry_fields[$item["industryFieldNew"]]; $item["enterpriseTag"] = $enterpriseTags[$item["enterpriseTag"]]; $item["street"] = $streets[$item["street"]]; $item["nation"] = $nations[$item["nation"]]; $item["nationality"] = $nationalitys[$item["nationality"]]; $item["politics"] = $politics[$item["politics"]]; $item["talent_type"] = $talentTypes[$item["talent_type"]]; $item["sex"] = $sex[$item["sex"]]; if (in_array("province", $params)) { $item["province"] = Db::table("un_common_location")->where("code", "=", $item["province"])->findOrEmpty()["name"]; } if (in_array("city", $params)) { $item["city"] = Db::table("un_common_location")->where("code", "=", $item["city"])->findOrEmpty()["name"]; } if (in_array("county", $params)) { $item["county"] = Db::table("un_common_location")->where("code", "=", $item["county"])->findOrEmpty()["name"]; } }unset($item); return $list; } public static function getListByProcess($process) { switch ($process) { case 1: $where[] = ["ti.checkState", "in", [2, -1]]; break; case 2: $where[] = ["ti.checkState", "in", [6, -2]]; break; default: return null; } return Talent::alias("ti")->leftJoin("new_enterprise e", "e.id=ti.enterprise_id")->where($where)->field("ti.*,e.agentName,e.agentPhone")->select()->toArray(); } public static function setPublic($mainId, $state, $msg, $batch = null, $type = 1) { $data["id"] = $mainId; $data["checkState"] = $state; switch ($state) { case TalentState::ZX_PASS: case TalentState::ZX_FAIL: $data["isPublic"] = 2; break; case TalentState::ANNOUNCED: $data["isPublic"] = 3; $data["publicBatch"] = $batch; break; case TalentState::ANNOUNCED_REVERIFY_PASS: case TalentState::ANNOUNCED_REVERIFY_FAIL: $data["isPublic"] = 3; break; case TalentState::PUBLISH_PASS: $data["isPublic"] = 4; $data["certificateGetTime"] = $batch; $data["certificateExpireTime"] = date("Y-m-d", strtotime(sprintf("%s +6 years", $batch))); break; case TalentState::PUBLISH_FAIL: $data["isPublic"] = 4; break; } if (Talent::update($data)) { TalentLogApi::write($type, $mainId, $state, $msg, 1); return true; } return false; } }