using AutoMapper; using Common.Utils; using CommonDomain; using DotNetCore.CAP; using Microsoft.Extensions.Logging; using MongoRepository; using UserDomain.Entity; using UserService.Param; using UserService.Tasks; using UserService.Tasks.Param; namespace UserService.User { public class UserMQService : IUserMQService, ICapSubscribe { private readonly IUserService _userService; private readonly ITaskService _taskService; private readonly IMongoBaseRepository _killLog; private readonly IMapper _mapper; public UserMQService(IUserService userService, ITaskService taskService, IMongoBaseRepository killLog, IMapper mapper) { _userService = userService; _taskService = taskService; _killLog = killLog; _mapper = mapper; } [CapSubscribe("test")] public async Task Test(string txt) { } [CapSubscribe(TopicKeys.任务完成)] public async Task CompletedTask(CompletedTaskParam param) { _taskService.CompletedTask(param); } [CapSubscribe(TopicKeys.用户资产变更)] public async Task UserAssetChange(UserAssetParam param) { await _userService.UpdateAssets(param); } [CapSubscribe(TopicKeys.游戏金币结算)] public async Task GameCoinsSettlement(GameCoinsSettlementParam param) { await _userService.GameCoinsSettlement(param); } [CapSubscribe(TopicKeys.击杀鱼日志)] public async Task KillFishLog(AddKillFishLogCapParam param) { var model = _mapper.Map(param); model.Id = Guid.NewGuid().ToString(); model.CreateTime = DateTime.Now.ToTimeStamp(); await _killLog.InsertOneAsync(model); } } }