Browse Source

短信

master
DESKTOP-G961P6V\Zhh 1 year ago
parent
commit
a73fe7682b
  1. 77
      src/Shentun.WebPeis.Application/Persons/PersonAppService.cs
  2. 1
      src/Shentun.WebPeis.Application/Shentun.WebPeis.Application.csproj
  3. 11
      src/Shentun.WebPeis.Application/WebPeisApplicationModule.cs
  4. 4
      src/Shentun.WebPeis.HttpApi.Host/appsettings.json

77
src/Shentun.WebPeis.Application/Persons/PersonAppService.cs

@ -71,7 +71,7 @@ namespace Shentun.WebPeis.Persons
IRepository<PatientRegister> patientRegisterRepository,
IRepository<Patient> patientRepository,
CacheService cacheService,
//IHttpContextAccessor httpContextAccessor,
IHttpContextAccessor httpContextAccessor,
IRepository<CustomerOrg> customerOrgRepository)
{
_repository = repository;
@ -85,7 +85,7 @@ namespace Shentun.WebPeis.Persons
_patientRegisterRepository = patientRegisterRepository;
_patientRepository = patientRepository;
_cacheService = cacheService;
//_httpContextAccessor = httpContextAccessor;
_httpContextAccessor = httpContextAccessor;
_customerOrgRepository = customerOrgRepository;
}
@ -130,11 +130,14 @@ namespace Shentun.WebPeis.Persons
var dicStr = dic.Select(m => m.Key + "=" + m.Value).DefaultIfEmpty().Aggregate((m, n) => m + "&" + n);
var token = await GetTokenAsync(dicStr);
var options = new DistributedCacheEntryOptions()
.SetAbsoluteExpiration(TimeSpan.FromDays(3));
var sessionKey = CacheKeys.SessionKey + Guid.NewGuid().ToString();
var sessionKeyValue = Guid.NewGuid().ToString();
_cache.Set(sessionKey, sessionKeyValue);
_cache.Set(sessionKey, sessionKeyValue, options);
token.SessionKey = sessionKey;
token.SessionKeyValue = sessionKeyValue;
return token;
}
@ -187,7 +190,7 @@ namespace Shentun.WebPeis.Persons
{
throw new UserFriendlyException("该身份证号已注册,但手机号码不一致");
}
if(!string.IsNullOrWhiteSpace(person.WechatOpenId))
if (!string.IsNullOrWhiteSpace(person.WechatOpenId))
{
throw new UserFriendlyException("该微信号已注册");
}
@ -240,7 +243,7 @@ namespace Shentun.WebPeis.Persons
}
/// <summary>
/// 创建亲属
/// </summary>
@ -267,12 +270,12 @@ namespace Shentun.WebPeis.Persons
throw new UserFriendlyException("无效的短信校验码或已过期");
}
var person = await _repository.FindAsync(o=>o.IdNo == input.IdNo);
var person = await _repository.FindAsync(o => o.IdNo == input.IdNo);
if (person != null)
{
var user = (await _identityUserRepository.GetQueryableAsync()).Where(o =>o.Id == person.PersonId &&
o.PhoneNumber == input.MobileTelephone).FirstOrDefault();
if(user == null)
var user = (await _identityUserRepository.GetQueryableAsync()).Where(o => o.Id == person.PersonId &&
o.PhoneNumber == input.MobileTelephone).FirstOrDefault();
if (user == null)
{
throw new UserFriendlyException("该身份证号已注册,但手机号码不一致");
}
@ -285,9 +288,9 @@ namespace Shentun.WebPeis.Persons
await _personKinshipRepository.InsertAsync(personKinshipExist);
return;
}
var userWithPerson = await _personManager.CreateAsync(entity, input.PersonName,
input.Email, input.MobileTelephone);
@ -306,15 +309,15 @@ namespace Shentun.WebPeis.Persons
(await _userManager.RemovePasswordAsync(userWithPerson.User)).CheckErrors();
(await _userManager.AddPasswordAsync(userWithPerson.User, Shentun.Utilities.
Encrypt.RandomHelper.CreateRandom(Utilities.Enums.RandomType.NumAndChar, 10) + "0Cz*")).CheckErrors();
}
/// <summary>
/// 获取体检次数列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <summary>
/// 获取体检次数列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/Person/GetMedicalTimesListByPersonId")]
public async Task<List<PersonMedicalTimesDto>> GetMedicalTimesListByPersonIdAsync(PersonIdInputDto input)
{
@ -323,11 +326,11 @@ namespace Shentun.WebPeis.Persons
join person in await _repository.GetQueryableAsync()
on user.Id equals person.PersonId
join patient in await _patientRepository.GetQueryableAsync()
on new { idNo = person.IdNo ,phone = user.PhoneNumber} equals new { idNo = patient.IdNo, phone = patient.MobileTelephone }
on new { idNo = person.IdNo, phone = user.PhoneNumber } equals new { idNo = patient.IdNo, phone = patient.MobileTelephone }
join patientRegister in await _patientRegisterRepository.GetQueryableAsync()
on patient.PatientId equals patientRegister.PatientId
where user.Id == input.PersonId &&
( patientRegister.CompleteFlag == PatientRegisterCompleteFlag.Audit)
where user.Id == input.PersonId &&
(patientRegister.CompleteFlag == PatientRegisterCompleteFlag.Audit)
orderby patientRegister.MedicalStartDate
select new PersonMedicalTimesDto()
{
@ -365,10 +368,10 @@ namespace Shentun.WebPeis.Persons
MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(person.MaritalStatusId).Result,
IdNo = person.IdNo,
MobileTelephone = user.PhoneNumber
}).ToList();
for(var i = 0; i<personList.Count;i++)
for (var i = 0; i < personList.Count; i++)
{
personList[i].DisplayOrder = i + 1;
if (personList[i].PersonId == CurrentUser.Id)
@ -376,7 +379,7 @@ namespace Shentun.WebPeis.Persons
personList[i].DisplayOrder = 0; //本人强行排第一个
}
}
personList = personList.OrderBy(o=>o.DisplayOrder).ToList();
personList = personList.OrderBy(o => o.DisplayOrder).ToList();
return personList;
}
/// <summary>
@ -388,19 +391,19 @@ namespace Shentun.WebPeis.Persons
[HttpPost("api/app/Person/GetMedicalReportByPatientRegisterId")]
public async Task<MedicalReportDto> GetMedicalReportByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
{
var entity = await _patientRegisterRepository.GetAsync(o=>o.PatientRegisterId == input.PatientRegisterId);
if(string.IsNullOrWhiteSpace(entity.ReportFile))
var entity = await _patientRegisterRepository.GetAsync(o => o.PatientRegisterId == input.PatientRegisterId);
if (string.IsNullOrWhiteSpace(entity.ReportFile))
{
throw new UserFriendlyException("没有报告单");
}
var Host = $"{_httpContextAccessor.HttpContext.Request.Scheme}://{_httpContextAccessor.HttpContext.Request.Host.Host}:{ _httpContextAccessor.HttpContext.Request.Host.Port}";
var Host = $"{_httpContextAccessor.HttpContext.Request.Scheme}://{_httpContextAccessor.HttpContext.Request.Host.Host}:{_httpContextAccessor.HttpContext.Request.Host.Port}";
var returnValue = new MedicalReportDto()
{
FilePath = entity.ReportFile,
FileBase64 = Shentun.Utilities.FileHelper.ToBase64(Host + entity.ReportFile)
};
};
return returnValue;
}
/// <summary>
/// 获取校验码
@ -412,7 +415,7 @@ namespace Shentun.WebPeis.Persons
[HttpPost("api/app/Person/GetSmsVerifyCode")]
public async Task<SmsVerifyCodeDto> GetSmsVerifyCodeAsync(SmsVerifyCodeInputDto input)
{
if(input == null)
if (input == null)
{
throw new UserFriendlyException("input不能为空");
}
@ -463,7 +466,7 @@ namespace Shentun.WebPeis.Persons
if (person != null)
{
var user = (await _identityUserRepository.GetQueryableAsync()).Where(o => o.Id == person.PersonId &&
o.PhoneNumber == input.MobileTelephone).FirstOrDefault();
o.PhoneNumber == input.MobileTelephone).FirstOrDefault();
if (user == null)
{
throw new UserFriendlyException("该身份证号已注册,但手机号码不一致");
@ -517,7 +520,7 @@ namespace Shentun.WebPeis.Persons
OpenId = wechatUserDto.OpenId
};
var options = new DistributedCacheEntryOptions()
.SetAbsoluteExpiration(TimeSpan.FromMinutes(720));
.SetAbsoluteExpiration(TimeSpan.FromDays(3));
_cache.Set(CacheKeys.OpenIdKey + wechatUserDto.OpenId,
wechatUserDto.OpenId, options);
@ -557,7 +560,7 @@ namespace Shentun.WebPeis.Persons
public async Task<string> SendVerifySms(CreateSmsTaskDto createSmsTaskDto)
{
if(createSmsTaskDto == null)
if (createSmsTaskDto == null)
{
throw new UserFriendlyException("createSmsTaskDto参数不能为空");
}
@ -571,20 +574,20 @@ namespace Shentun.WebPeis.Persons
throw new Exception("解析校验短信有效时间错误");
}
createSmsTaskDto.Content = message+"|" + verifySmsValidTime.ToString();
createSmsTaskDto.Content = message + "|" + verifySmsValidTime.ToString();
//发送短信
createSmsTaskDto.TaskCycleType = '0';
await SmsClientHelper.CreateVerifySmsTask(createSmsTaskDto);
//存储短信校验码
var options = new DistributedCacheEntryOptions()
.SetAbsoluteExpiration(TimeSpan.FromMinutes(verifySmsValidTime));
var smsVerifyCodeKey = CacheKeys.SmsKey + createSmsTaskDto.MobileTelephone + Guid.NewGuid().ToString();
var smsVerifyCodeKey = CacheKeys.SmsKey + createSmsTaskDto.MobileTelephone + Guid.NewGuid().ToString();
_cache.Set(smsVerifyCodeKey, message, options);
return smsVerifyCodeKey;
}
}
}

1
src/Shentun.WebPeis.Application/Shentun.WebPeis.Application.csproj

@ -21,6 +21,7 @@
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="7.6.0" />
<PackageReference Include="Volo.Abp.Account.Application" Version="8.1.3" />
<PackageReference Include="Volo.Abp.Caching.StackExchangeRedis" Version="8.1.3" />
<PackageReference Include="Volo.Abp.Identity.Application" Version="8.1.3" />
<PackageReference Include="Volo.Abp.PermissionManagement.Application" Version="8.1.3" />
<PackageReference Include="Volo.Abp.TenantManagement.Application" Version="8.1.3" />

11
src/Shentun.WebPeis.Application/WebPeisApplicationModule.cs

@ -3,6 +3,8 @@ using Shentun.Peis.OrganizationUnits;
using Shentun.WebPeis.Users;
using Volo.Abp.Account;
using Volo.Abp.AutoMapper;
using Volo.Abp.Caching;
using Volo.Abp.Caching.StackExchangeRedis;
using Volo.Abp.FeatureManagement;
using Volo.Abp.Identity;
using Volo.Abp.Modularity;
@ -20,7 +22,8 @@ namespace Shentun.WebPeis;
typeof(AbpPermissionManagementApplicationModule),
typeof(AbpTenantManagementApplicationModule),
typeof(AbpFeatureManagementApplicationModule),
typeof(AbpSettingManagementApplicationModule)
typeof(AbpSettingManagementApplicationModule),
typeof(AbpCachingStackExchangeRedisModule)
)]
public class WebPeisApplicationModule : AbpModule
{
@ -32,5 +35,11 @@ public class WebPeisApplicationModule : AbpModule
});
context.Services.AddTransient<OrganizationUnitsAppService>();
context.Services.AddTransient<UserAppService>();
Configure<AbpDistributedCacheOptions>(options =>
{
options.KeyPrefix = "WebPeis";
options.HideErrors = false;
});
}
}

4
src/Shentun.WebPeis.HttpApi.Host/appsettings.json

@ -55,5 +55,9 @@
"VerifySmsTypeId": "3a12e09d-438a-1d08-d4f0-712aef13708d",
"VerifySmsValidTime": "1",
"SmsAppId": "3a12e09f-8534-ec43-8c46-e61af0964ab6"
},
"Redis": {
"IsEnabled": "true",
"Configuration": "127.0.0.1"
}
}
Loading…
Cancel
Save