public async Task <GroupRes> Run(string msg, string account, string groupNo, Lazy <string> getLoginAccount) { var key = CacheConst.GetMemberOptKey(account, groupNo, CacheConst.AddPet); var cache = await _database.StringGetAsync(key); if (int.TryParse(cache, out var petId)) { await _database.KeyDeleteAsync(key); var arr = msg.Split('@'); // 格式错误直接跳过 if (arr.Length != 2 || arr[1].Length != 1 || string.IsNullOrWhiteSpace(arr[0])) { return(null); } var pet = await PetService.GetAsync(petId); Gender sex; if ("男".Equals(arr[1])) { sex = Gender.MALE; } else if ("女".Equals(arr[1])) { sex = Gender.FAMALE; } else { return("性别错误!"); } if (pet == null) { return("宠物已下架!"); } // 记录流水 await BillFlowService.AddBillAsync(groupNo, account, pet.Price, pet.Price, BillTypes.Consume, "领养宠物"); // 修正账户 await MemberInfoService.ChangeAmountAsync(groupNo, account, -pet.Price); // 添加宠物 var userPet = await UserPetService.AddPetAsync(pet, groupNo, account, sex, arr[0]); return(GroupRes.GetSuccess(new GroupItemRes() { AtTa = true, Msg = $"恭喜您获得一只{userPet.Quality}品质的{pet.Name}" })); } return(null); }
public async Task <GroupRes> Run(string msg, string account, string groupNo, Lazy <string> getLoginAccount) { if ("宠物系统".Equals(msg)) { return(@"当前宠物系统支持: [宠物商店] [宠物道具商店] [查看宠物] [放养宠物] "); } if ("宠物商店".Equals(msg)) { var list = await PetService.GetAll().OrderByDescending(u => u.Id).ToListAsync(); if (list.Count == 0) { return("宠物商店还没有入驻的宠物呢,请联系管理员添加吧!"); } StringBuilder builder = new StringBuilder(); builder.AppendLine(" [宠物介绍图] [宠物名称] [宠物描述] [宠物价格]"); for (int i = 0; i < list.Count; i++) { builder.AppendLine( $"{(i + 1).ToString()}. {list[i].Face} {list[i].Name} [{list[i].Description}] {list[i].Price}$"); } builder.AppendLine(); builder.AppendLine(" 试试对我说 [领养宠物] [宠物名称] 吧~"); builder.AppendLine(" 示例: 领养宠物 小白"); return(builder.ToString()); } Match match; if ((match = Regex.Match(msg, @"^领养宠物([\s|\S]*)")).Success) { if (UserPetService.IsExists(groupNo, account)) { return(GroupRes.GetSingleSuccess(new GroupItemRes() { AtTa = true, Msg = "你已经拥有宠物了,请勿重复领养!" })); } var petName = match.Groups[1].Value.Trim(); if (string.IsNullOrWhiteSpace(petName)) { return("宠物名称不能为空!"); } var pet = await PetService.GetInfoByNameAsync(petName); if (pet == null) { return($"宠物-{petName} 不存在!"); } var memberInfo = await MemberInfoService.GetInfoAsync(groupNo, account); if (pet.Price > memberInfo.Amount) { return($"宠物-{petName}的价格为{pet.Price} , 而您的余额为{memberInfo.Amount} , 不足以支付!"); } // 添加添加宠物标识 await _database.StringSetAsync(CacheConst.GetMemberOptKey(account, groupNo, CacheConst.AddPet), pet.Id, TimeSpan.FromSeconds(30)); return(GroupRes.GetSingleSuccess(new GroupItemRes() { AtTa = true, Msg = @"请输入[宠物姓名]@[宠物性别{男/女}] 示例: 小白@女" })); } return(null); }