SmsLogRepository.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading.Tasks;
  4. using AutoMapper;
  5. using Dapper;
  6. using Datory;
  7. using GxPress.Common.AppOptions;
  8. using GxPress.Common.Tools;
  9. using GxPress.Repository.Interface.SmsLog;
  10. using Microsoft.Extensions.Options;
  11. namespace GxPress.Repository.Implement.SmsLog
  12. {
  13. public class SmsLogRepository : ISmsLogRepository
  14. {
  15. private readonly Repository<Entity.SmsLog> _repository;
  16. private readonly IMapper _mapper;
  17. private readonly string _connectionString;
  18. private readonly string _databaseTypeStr;
  19. public SmsLogRepository(IOptionsMonitor<DatabaseOptions> dbOptionsAccessor, IMapper mapper)
  20. {
  21. _databaseTypeStr = dbOptionsAccessor.CurrentValue.DatabaseType;
  22. _connectionString = dbOptionsAccessor.CurrentValue.ConnectionString;
  23. var databaseType = StringUtils.ToEnum<DatabaseType>(dbOptionsAccessor.CurrentValue.DatabaseType, DatabaseType.MySql);
  24. var database = new Database(databaseType, dbOptionsAccessor.CurrentValue.ConnectionString);
  25. _repository = new Repository<Entity.SmsLog>(database);
  26. _mapper = mapper;
  27. }
  28. public IDatabase Database => _repository.Database;
  29. public string TableName => _repository.TableName;
  30. public List<TableColumn> TableColumns => _repository.TableColumns;
  31. public async Task<bool> InsertAsync(IEnumerable<Entity.SmsLog> smsLogs)
  32. {
  33. var guId = System.Guid.NewGuid().ToString();
  34. var nowTime = DateTime.Now.ToString();
  35. string sql = $@"INSERT INTO `ccpph`.`tede_sms_log`
  36. (`Guid`,
  37. `CreatedDate`,
  38. `LastModifiedDate`,
  39. `Phone`,
  40. `SourceId`,
  41. `SourceType`,
  42. `IsSend`,
  43. `Message`)
  44. VALUES";
  45. foreach (var item in smsLogs)
  46. {
  47. var isSend = item.IsSend ? 1 : 0;
  48. sql += $@"(
  49. '{guId}',
  50. '{nowTime}',
  51. '{nowTime}',
  52. '{item.Phone}',
  53. {item.SourceId},
  54. {item.SourceType},
  55. {isSend},
  56. '{item.Message}'),";
  57. }
  58. sql = sql.Remove(sql.Length - 1, 1);
  59. var databaseType = StringUtils.ToEnum<DatabaseType>(_databaseTypeStr, DatabaseType.MySql);
  60. var database = new Database(databaseType, _connectionString);
  61. var connection = database.GetConnection();
  62. return await connection.ExecuteAsync(sql) > 0;
  63. }
  64. }
  65. }