123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- <?php
- namespace addons\csmadmin\library;
- use addons\csmadmin\library\service\AdminService;
- use addons\csmadmin\library\service\CsmAdminService;
- use think\Request;
- class CsmadminUtils
- {
- public static function getSessionKey($mobile, $event)
- {
- return "csmadmin_ccode_{$event}_{$mobile}";
- }
-
- /**
- * 根据ID获取带有父组织的部门名称
- */
- public static function getDepartWithParentname($ids){
- $srlist = [];
- $llidtoname = [];
-
- $dao = new \app\admin\model\csmadmin\Depart();
- //先查出row的list
- $readyqueryids = [];
- $ll = $dao->where("id","in",$ids)->select();
-
- //var_dump($ll);
- //一次性读取出所有的根节点和父节点的row
- $llrow = [];
- foreach ($ll as $value) {
- $readyqueryids[] = $value->parent_id;
- $readyqueryids[] = $value->root_id;
- $llrow['ID#'.$value->id] = $value;
- $llidtoname['ID#'.$value->id] = $value->name;
- }
- $ll = $dao->where("id","in",$readyqueryids)->select();
-
-
- foreach($ll as $ii){
- $llidtoname['ID#'.$ii->id] = $ii->name;
- }
- //如果根节点显示名称、第三层节点 xxx\..\xxx
- foreach ($ids as $id) {
- if(isset($llrow['ID#'.$id])){
- $name = "";
- $row = $llrow['ID#'.$id];
- if($row->parent_id==0){
- $name = $row->name;
- }else{
- if($row->root_id==$row->parent_id){
- $name = $llidtoname['ID#'.$row->root_id] . ' \\ ' . $row->name;
- }else{
- $name = $llidtoname['ID#'.$row->root_id] . ' \\ .. \\ ' . $llidtoname['ID#'.$row->parent_id] . ' \\ ' . $row->name;
- }
-
- }
- $srlist['ID#'.$id] = $name;
- }
- }
- return $srlist;
- }
- /**
- * 注册后创建帐号
- *
- * @return boolean
- */
- public static function createAdminByApply($id, $sessionuser, $neednotify = true)
- {
- $dao = new \app\admin\model\csmadmin\Adminapply();
- $row = $dao->where("id", "=", $id)->find();
- if (! $row) {
- CsmUtils::error("id不存在:" . $id);
- }
- // 检测帐号是否存在
- $service = new AdminService();
- //$dao = new \app\admin\model\csmadmin\Adminapply();
- $row2 = $dao->where("id", "=", $id)->find();
- $rowkey = '';
- $faadminmodel = [
- 'updatepsdtime' => time(), // 自己注册的帐号,认为首次密码不需要强制
- 'createtime' => time()
- ];
- switch ($row2->applytype) {
- case 'email':
- $row2 = $service->getRowByEmail($row->email);
- $rowkey = $row->email;
- $faadminmodel['emailactive'] = 'Y';
- break;
- case 'mobile':
- $row2 = $service->getRowByMobile($row->mobile);
- $rowkey = $row->mobile;
- $faadminmodel['mobile'] = $row->mobile;
- $faadminmodel['mobileactive'] = 'Y';
- break;
- case 'wx':
- $row2 = $service->getRowByWx($row->wxuserid);
- $rowkey = $row->wxuserid;
- $wxuser = WxUtils::getInfoByOpenID($row->wxuserid);
- $faadminmodel['wxuserid'] = $row->wxuserid;
- $faadminmodel['wxusername'] = $wxuser['nickname'];
- $faadminmodel['wxsex'] = $wxuser['sex'];
- $faadminmodel['wxcountry'] = $wxuser['country'];
- $faadminmodel['wxprovince'] = $wxuser['province'];
- $faadminmodel['wxcity'] = $wxuser['city'];
- $faadminmodel['wxheadimgurl'] = $wxuser['headimgurl'];
- break;
- }
- if ($row2) {
- CsmUtils::error("帐号已经存在,无法审核通过:.{$rowkey}");
- }
- // 创建管理员帐号
- $username = ($row->username!=null&&$row->username!='')?$row->username:time();
- $params = [
- 'username' => $username,
- 'nickname' => $row->nickname,
- 'salt' => $row->salt,
- 'password' => $row->password,
- 'email' => $rowkey, // 如果邮箱为空,则认为是手机号码或微信id
- 'loginfailure' => 0,
- 'avatar' => '/assets/img/avatar.png',
- 'mobile' => $row->mobile,//v2.1.3 适配fa.1.3.4增加手机号码调整
- ];
- $admindao = new \app\admin\model\Admin();
- $admindao->save($params);
- $adminid = $admindao->getLastInsID();
- // insert fa_csmadmin_admin
- $service = new CsmAdminService();
- $faadminmodel['faadmin_id'] = $adminid;
- $service->insertOrUpdateByByAdminId($faadminmodel, $adminid);
- // 分配角色组
- $config = get_addon_config(CsmContants::$ADDONS);
- //$request = Request::instance();
- $auth_group_ids = $row->auth_group_ids;//$config["registeradmindefaultroles"];
- //var_dump($auth_group_ids);die();
- $canadmindepratmng = $config["canadmindepratmng"];
- $auth_group_idarray = explode(",", $auth_group_ids);
- if($canadmindepratmng=='Y'){
- //如果部门管理,则按角色授权表
- $dataset = [];
- foreach ($auth_group_idarray as $value) {
- $dataset[] = [
- 'faadmin_id' => $adminid,
- 'auth_group_id' => $value
- ];
- }
- $dao = new \app\admin\model\csmadmin\Group2admin();
- $dao->saveAll($dataset);
- }else{
- //按照fa的授权模式
- $dataset = [];
- foreach ($auth_group_idarray as $value) {
- $dataset[] = [
- 'uid' => $adminid,
- 'group_id' => $value
- ];
- }
- $dao = new \app\admin\model\AuthGroupAccess();
- $dao->saveAll($dataset);
- }
- // 更新审核状态
- $params = [
- "faadmin_id" => $adminid,
- "auditstatus" => "1",
- "audittime" => time(),
- "auditreturn" => "",
- "audituser_id" => $sessionuser ? $sessionuser->id : null,
- "audituser" => $sessionuser ? $sessionuser->username : null,
- "auth_group_ids" => $auth_group_ids,
- "auditreturn" => '',
- "updatetime" => time()
- ];
- $row->allowField(true)->save($params);
- // 通过发送邮件或短信
- if ($neednotify === true) {
- CsmNotify::notifyToAdminapplyid($id, '注册审核通过', '注册审核通过', []);
- }
- return true;
- }
- }
|