account.service.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import {Injectable, Inject} from '@angular/core';
  2. import {ConfigService, RequsetData} from "./config.service";
  3. import {Router} from "@angular/router";
  4. import {AccountApi} from "../api/account";
  5. import {UsemodularService} from "./usemodular.service";
  6. import {AlertModal} from "../comm/modal/alert";
  7. import {UserService} from "./user.service";
  8. import {splitRouterUrl} from "../utils/urlUtils";
  9. @Injectable({providedIn: 'root'})
  10. export class AccountService {
  11. constructor(private router: Router, private userService: UserService,
  12. private configService: ConfigService, private accountApi: AccountApi, private usemodularService: UsemodularService, private alertModal: AlertModal) {
  13. }
  14. /**
  15. * 根据微信用户id登录系统,如果未绑定则跳转到登陆页面
  16. * @param wxUserId 企业微信用户id
  17. * @param currentUrl 登录成功后跳转路由,可未空,默认首页路由
  18. */
  19. loginByWxUserId(wxUserId: string, currentUrl: string) {
  20. if (!wxUserId) {
  21. this.alertModal.alert('微信用户ID为空,不能使用微信用户登录,请输入账号密码登录');
  22. this.router.navigate(['/login']);
  23. }
  24. this.alertModal.loading('验证微信用户中,请稍等...').then(loading => {
  25. this.accountApi.loginByWxUserId(wxUserId).subscribe(res => {
  26. if (res.success) {
  27. try {
  28. this.loginSuccessBack(res);
  29. } catch (ex) {
  30. } finally {
  31. loading.dismiss();
  32. }
  33. const routerUrl = splitRouterUrl(currentUrl);
  34. this.router.navigate([routerUrl.routerUrl || '/tapp/tabs/tabMain'], {
  35. queryParams: {random: Math.random(), ...routerUrl.params}
  36. });
  37. } else {
  38. loading.dismiss();
  39. this.alertModal.alert('微信用户未绑定或验证失败,请输入账号密码登录');
  40. this.router.navigate(['/login']);
  41. }
  42. }, () => {
  43. loading.dismiss();
  44. this.alertModal.alert('微信用户未绑定或验证失败,请输入账号密码登录');
  45. this.router.navigate(['/login']);
  46. });
  47. });
  48. };
  49. loginSuccessBack(data: any) {
  50. data.item.curRoleId = data.extdata.userRoles[0].roleid;
  51. this.userService.SetUser(data.item);
  52. this.userService.SetExt(data.extdata);
  53. this.userService.setToken(data.item.logintoken);
  54. this.userService.ReadUserDataScope(data.item.curRoleId, this.configService);
  55. this.usemodularService.getButtonList();
  56. }
  57. }