InviteLogApplication.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using Abp.Collections.Extensions;
  2. using Hotline.Snapshot;
  3. using Mapster;
  4. using Newtonsoft.Json.Linq;
  5. using SnapshotWinFormsApp.Application.Dtos;
  6. using SnapshotWinFormsApp.Application.Interfaces;
  7. using SnapshotWinFormsApp.Entities.NewHotline;
  8. using SnapshotWinFormsApp.Entities.OldHotline;
  9. using SnapshotWinFormsApp.Repository;
  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.Linq.Dynamic.Core.Tokenizer;
  17. using System.Text;
  18. using System.Threading.Tasks;
  19. namespace SnapshotWinFormsApp.Application;
  20. [Description("邀请码记录")]
  21. public class InviteLogApplication : ImportApplicationBase<SSP_InviteLogEntity, InviteCodeRecord, string, OldInviteLogEntity>, IImportApplication
  22. {
  23. private readonly ITargetRepository<InviteCode> _newInviteCodeRepo;
  24. private readonly ITargetRepository<Citizen> _userInfoRepo;
  25. private readonly ITargetRepository<ThirdAccount> _thirdAccountRepo;
  26. private IList<InviteCode> invities;
  27. private IList<ThirdAccount> thirdAccounts;
  28. public IList<InviteCodeRecord> InviteCodeRecords;
  29. public InviteLogApplication(CreateInstanceInDto inDto) : base(inDto)
  30. {
  31. _newInviteCodeRepo = new TargetRepository<InviteCode>(inDto);
  32. _thirdAccountRepo = new TargetRepository<ThirdAccount>(inDto);
  33. invities = _newInviteCodeRepo.GetAll();
  34. thirdAccounts = _thirdAccountRepo.GetAll();
  35. InviteCodeRecords = _targetRepo.GetAll();
  36. }
  37. public override ISugarQueryable<OldInviteLogEntity> GetSourceList()
  38. {
  39. return _sourceRepo.Queryable()
  40. .LeftJoin<SSP_InviteEntity>((log, invite) => log.SSPI_CodeID == invite.Id)
  41. .LeftJoin<WeChatUserEntity>((log, invite, user) => user.WUR_Openid == log.SSPI_Openid)
  42. .Select((log, invite, user) => new OldInviteLogEntity
  43. {
  44. Id = log.Id,
  45. Name = user.WUR_WebUserName,
  46. OrgName = invite.SIC_BMName,
  47. InviteCode = log.SSPI_Code,
  48. WXOpenId = log.SSPI_Openid,
  49. PhoneNumber = user.WUR_PhoneNum,
  50. CreationTime = log.SSPI_AddTime
  51. });
  52. }
  53. public override async Task<bool> HasOldDataAsync(OldInviteLogEntity item, CancellationToken token)
  54. {
  55. return InviteCodeRecords.Any(m => m.OldId == item.Id);
  56. }
  57. public override async Task<InviteCodeRecord> GetTargetAsync(OldInviteLogEntity source, CancellationToken token)
  58. {
  59. var target = source.Adapt<InviteCodeRecord>();
  60. target.OrgId = invities.FirstOrDefault(m => m.OrgName == source.OrgName)?.Id ?? string.Empty;
  61. return await Task.FromResult(target);
  62. }
  63. }