UserRoles.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace app\common\model;
  3. use app\hander\HelpHander;
  4. use think\Db;
  5. use think\Exception;
  6. use think\Model;
  7. class UserRoles extends Model
  8. {
  9. public function addRoles($uid,$roles,$orgId){
  10. $roles = $roles?explode(',',$roles):[];
  11. $oldroles = Db::name('user_roles')
  12. ->alias('ur')
  13. ->join('roles r','r.id = ur.roles_id')
  14. ->where('ur.user_id',$uid)
  15. ->where('r.org_id',$orgId)
  16. ->where('r.type',0)
  17. ->column('ur.roles_id');
  18. $oldroles = $oldroles?$oldroles:[];
  19. $delroles = array_diff($oldroles,$roles);
  20. $addroles = array_diff($roles,$oldroles);
  21. Db::startTrans();
  22. try{
  23. if($delroles){
  24. $res = Db::name('user_roles')->where('user_id',$uid)->where('roles_id','in',$delroles)->delete();
  25. if($res != count($delroles)){
  26. \exception('操作失败');
  27. }
  28. }
  29. if($addroles){
  30. $data = [];
  31. foreach ($addroles as $k=>$v){
  32. $data[] = [
  33. 'user_id' => $uid,
  34. 'roles_id' => $v,
  35. ];
  36. }
  37. $ret = Db::name('user_roles')->insertAll($data);
  38. if($ret != count($addroles)){
  39. \exception('操作失败');
  40. }
  41. }
  42. Db::commit();
  43. }catch (Exception $e){
  44. Db::rollback();
  45. HelpHander::error('操作失败');
  46. }
  47. return true;
  48. }
  49. }