12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <?php
- namespace app\common\model;
- use app\hander\HelpHander;
- use think\Db;
- use think\Exception;
- use think\Model;
- class UserRoles extends Model
- {
- public function addRoles($uid,$roles,$orgId){
- $roles = $roles?explode(',',$roles):[];
- $oldroles = Db::name('user_roles')
- ->alias('ur')
- ->join('roles r','r.id = ur.roles_id')
- ->where('ur.user_id',$uid)
- ->where('r.org_id',$orgId)
- ->where('r.type',0)
- ->column('ur.roles_id');
- $oldroles = $oldroles?$oldroles:[];
- $delroles = array_diff($oldroles,$roles);
- $addroles = array_diff($roles,$oldroles);
- Db::startTrans();
- try{
- if($delroles){
- $res = Db::name('user_roles')->where('user_id',$uid)->where('roles_id','in',$delroles)->delete();
- if($res != count($delroles)){
- \exception('操作失败');
- }
- }
- if($addroles){
- $data = [];
- foreach ($addroles as $k=>$v){
- $data[] = [
- 'user_id' => $uid,
- 'roles_id' => $v,
- ];
- }
- $ret = Db::name('user_roles')->insertAll($data);
- if($ret != count($addroles)){
- \exception('操作失败');
- }
- }
- Db::commit();
- }catch (Exception $e){
- Db::rollback();
- HelpHander::error('操作失败');
- }
- return true;
- }
- }
|