SnapshotUserInfoApplication.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using Abp.Extensions;
  2. using DataTransmission.Enum;
  3. using Mapster;
  4. using SnapshotWinFormsApp.Application.Dtos;
  5. using SnapshotWinFormsApp.Application.Interfaces;
  6. using SnapshotWinFormsApp.Entities.NewHotline;
  7. using SnapshotWinFormsApp.Entities.OldHotline;
  8. using SnapshotWinFormsApp.Repository;
  9. using SnapshotWinFormsApp.Repository.Enum;
  10. using SnapshotWinFormsApp.Repository.Interfaces;
  11. using SqlSugar;
  12. using System;
  13. using System.Collections.Generic;
  14. using System.ComponentModel;
  15. using System.Linq;
  16. using System.Reflection;
  17. using System.Text;
  18. using System.Threading.Tasks;
  19. using System.Xml.Linq;
  20. namespace SnapshotWinFormsApp.Application;
  21. [Description("导入用户信息")]
  22. public class SnapshotUserInfoApplication : ImportApplicationBase<WeChatUserEntity, Citizen, int>, IImportApplication
  23. {
  24. private readonly ITargetRepository<ThirdAccount> _thirdAccountRepo;
  25. private readonly ITargetRepository<Citizen> _userRepo;
  26. public SnapshotUserInfoApplication(CreateInstanceInDto inDto) : base(inDto)
  27. {
  28. _thirdAccountRepo = new TargetRepository<ThirdAccount>(inDto);
  29. _userRepo = new TargetRepository<Citizen>(inDto);
  30. }
  31. public override ISugarQueryable<WeChatUserEntity> GetSourceList()
  32. {
  33. return _sourceRepo.Queryable()
  34. .Where(m => m.WUR_UserType == "ssp");
  35. }
  36. public override async Task<bool> HasOldDataAsync(string tableName, WeChatUserEntity item, CancellationToken token)
  37. {
  38. var userId = await _userRepo.Queryable()
  39. .Where(m => m.PhoneNumber == item.WUR_PhoneNum)
  40. .Select(m => m.Id)
  41. .FirstAsync(token);
  42. return userId.IsNullOrEmpty();
  43. }
  44. public override async Task InsertAfterAsync(Action<string> log, WeChatUserEntity item, Citizen target, CancellationToken token)
  45. {
  46. var thirdId = await _thirdAccountRepo.Queryable()
  47. .Where(m => m.OpenId == item.WUR_Openid && m.UnIonId == item.WUR_unionid)
  48. .Select(m => m.Id)
  49. .FirstAsync(token);
  50. if (thirdId.IsNullOrEmpty())
  51. {
  52. var thirdAccount = item.Adapt<ThirdAccount>();
  53. thirdAccount.ExternalId = target.Id;
  54. thirdAccount.Id = await _thirdAccountRepo.InsertAsync(thirdAccount, token);
  55. log($"插入第三方账号信息: {thirdAccount.Id}, {thirdAccount.OpenId}, {thirdAccount.UserName}, {thirdAccount.PhoneNumber}, {thirdAccount.ExternalId}");
  56. }
  57. }
  58. }