using Znyc.CloudCar.IRepository.Currency; using Znyc.CloudCar.IRepository.User; using Znyc.CloudCar.IServices.CaChe; using Znyc.CloudCar.IServices.User; using Znyc.CloudCar.Model.Dtos.User; using Znyc.CloudCar.Model.Entities; using Znyc.CloudCar.Utility.Extensions; using Znyc.CloudCar.Utility.Helper; namespace Znyc.CloudCar.Services.User { /// <summary> /// 用户服务 /// </summary> public class WxUnifyUserService : IWxUnifyUserService { private readonly IWxUnifyUserRepository _wxUnifyUserRepository; private readonly ICurrencyRecordRepository _currencyRecordRepository; private readonly IUserRepository _userRepository; private readonly ICacheService _cacheService; public WxUnifyUserService( IWxUnifyUserRepository wxUnifyUserRepository, ICurrencyRecordRepository currencyRecordRepository, IUserRepository userRepository, ICacheService cacheService ) { _wxUnifyUserRepository = wxUnifyUserRepository; _currencyRecordRepository = currencyRecordRepository; _userRepository = userRepository; _cacheService = cacheService; } public async Task AddOrUpdateAsync(WxUnifyUserAddInput wxUnifyUser, string unionId) { var wxUser = await _wxUnifyUserRepository.GetAsync(x => x.UnionId == unionId && x.IsDeleted == false); ; if (wxUser == null) { WxUnifyUserEntity entity = new WxUnifyUserEntity { UnionId = unionId, NickName = wxUnifyUser.NickName, AvatarUrl = wxUnifyUser.AvatarUrl, Phone = wxUnifyUser.Phone.NotNull() ? wxUnifyUser.Phone : "", Gender = wxUnifyUser.Gender, Country = wxUnifyUser.City.NotNull() ? wxUnifyUser.City : "", Province = wxUnifyUser.Province.NotNull() ? wxUnifyUser.Province : "", City = wxUnifyUser.City.NotNull() ? wxUnifyUser.City : "", Language = wxUnifyUser.Language }; await _wxUnifyUserRepository.InsertAsync(entity); WxUnifyUserOutput wxUnifyUserOutput = new WxUnifyUserOutput() { UnionId = unionId, NickName = wxUnifyUser.NickName, CreatedTime = DateTime.Now }; //新用户信息添加进Redis缓存 await _cacheService.SetRegistUserListAsync(wxUnifyUser.NickName, DateTime.Now.ToTimestamp()); } else { wxUser.NickName = wxUnifyUser.NickName; wxUser.AvatarUrl = wxUnifyUser.AvatarUrl; wxUser.Phone = wxUnifyUser.Phone.NotNull() ? wxUnifyUser.Phone : ""; wxUser.Gender = wxUnifyUser.Gender; wxUser.Country = wxUnifyUser.City.NotNull() ? wxUnifyUser.City : ""; wxUser.Province = wxUnifyUser.Province.NotNull() ? wxUnifyUser.Province : ""; wxUser.City = wxUnifyUser.City.NotNull() ? wxUnifyUser.City : ""; await _wxUnifyUserRepository.UpdateAsync(wxUser); } } } }