using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Common; using Common.CommonModel; using CommonInfrastructure; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using UserDomain.Entity; using UserService.Param; using UserService.User; using UserService.User.Response; namespace UserApi.User { [ApiController, Route("api/[controller]")] [Authorize] public class UserController : BaseController { private readonly IUserService _userService; public UserController(IUserService userService) { _userService = userService; } /// /// 实名认证 /// [HttpGet("RealNameAuth")] [Authorize] public async Task> RealNameAuth(string realName, string idCard) { var result = await _userService.RealNameAuth(idCard, realName, loginUser); if (result.isok) return this.ToResult(result.msg); else return this.ToFailResult(result.msg); } /// /// 修改名称 /// [HttpGet("UpdateUserName")] [Authorize] public async Task> UpdateUserName(string userName) { var result = await _userService.UpdateUserName(userName, loginUser); if (result.isok) return this.ToResult(result.msg); else return this.ToFailResult(result.msg); } /// /// 绑定微信 /// [HttpGet("BindWX")] [Authorize] public async Task> BindWX(string openId) { var result = await _userService.BindWX(openId, loginUser); if (result.isok) return this.ToResult(result.msg); else return this.ToFailResult(result.msg); } /// /// 绑定手机号 /// [HttpGet("BindMobile")] [Authorize] public async Task> BindMobile(string mobile, string code) { var result = await _userService.BindMobile(mobile, code, loginUser); if (result.isok) return this.ToResult(result.msg); else return this.ToFailResult(result.msg); } /// /// 更新头像 /// [HttpGet("UpdateAvatar")] [Authorize] public async Task> UpdateAvatar(string avatarUrl) { var result = await _userService.UpdateAvatar(avatarUrl, loginUser); if (result.isok) return this.ToResult(result.msg); else return this.ToFailResult(result.msg); } /// /// 修改头像框 /// [HttpGet("UpdateAvatarFrame")] [Authorize] public async Task> UpdateAvatarFrame(string avatarFrame) { var result = await _userService.UpdateAvatarFrame(avatarFrame, loginUser); if (result.isok) return this.ToResult(result.msg); else return this.ToFailResult(result.msg); } /// /// 获取用户信息 /// [HttpGet("GetUser")] [Authorize] public async Task> GetUser(string userid) { var result = await _userService.GetUser(userid); if (result == null) return this.ToFailResult("用户不存在"); return this.ToResult(result); } /// /// 获取当前用户资产和背包 /// [HttpGet("GetUserAssets")] public async Task> GetUserAssets() { var user = await _userService.GetUser(loginUser.UserId); return this.ToResult(new UserAssetsResponse { Gold = user.Assets.Gold, Diamond = user.Assets.Diamond, Props = user.Props }); } /// /// 获取用户列表(分页查询) /// [HttpPost("GetUserList")] [Authorize] public async Task> GetUserList(BaseListPageParam param) { var result = await _userService.GetUserList(param); var dtos = result.list.Select(u => new UserListItemDto { Id = u.Id, Number = u.BaseInfo?.Number ?? "", UserName = u.BaseInfo?.UserName ?? "", AvatarUrl = u.BaseInfo?.AvatarUrl ?? "", Mobile = u.BaseInfo?.Mobile ?? "", CreateTime = u.CreateTime }); return this.ToPageResult(dtos, (int)result.count); } /// /// 发送邮件 /// [HttpPost("SendEmail")] [Authorize] public async Task> SendEmail(SendEmailParam param) { var result = await _userService.SendEmail(param, loginUser); if (result.isok) return this.ToResult(result.msg); else return this.ToFailResult(result.msg); } /// /// 获取邮件详情(未读会变为已读) /// [HttpGet("GetEmail")] [Authorize] public async Task> GetEmail(string id) { var result = await _userService.GetEmail(id, loginUser); if (result == null) return this.ToFailResult("邮件不存在"); var dto = new EmailDto { Id = result.Id, Title = result.Title, Content = result.Content, SendTime = result.SendTime, ReadTime = result.ReadTime, IsRead = result.IsRead, IsReward = result.IsReward, RewardDiamond = result.RewardDiamond, RewardGold = result.RewardGold, RewardItems = result.RewardItems, ExpireTime = result.ExpireTime }; return this.ToResult(dto); } /// /// 领取邮件奖励 /// [HttpGet("RewardEmail")] [Authorize] public async Task> RewardEmail(int type, string? id = "") { var result = await _userService.RewardEmail(type, id, loginUser); if (result.isok) return this.ToResult(result.model); else return this.ToFailResult(result.msg); } /// /// 删除邮件 /// [HttpGet("DeleteEmail")] [Authorize] public async Task> DeleteEmail(int type, string? id = "") { var result = await _userService.DeleteEmail(type, id, loginUser); if (result.isok) return this.ToResult(result.msg); else return this.ToFailResult(result.msg); } /// /// 一键阅读 - 把所有未读邮件标记为已读 /// [HttpGet("ReadEmailMore")] [Authorize] public async Task> ReadEmailMore() { var result = await _userService.ReadEmailMore(loginUser); if (result.isok) return this.ToResult(result.msg); else return this.ToFailResult(result.msg); } /// /// 获取未读邮件数量 /// [HttpGet("GetNoReadCount")] [Authorize] public async Task> GetNoReadCount() { var result = await _userService.GetNoReadCount(loginUser); return this.ToResult(result); } /// /// 获取邮件列表(分页) /// [HttpPost("GetEmailByPage")] [Authorize] public async Task> GetEmailByPage(GetEmailPageParam param) { var result = await _userService.GetEmailByPage(param, loginUser); return this.ToPageResult(result.list, (int)result.count); } /// /// 获取捕鱼返利信息 /// [HttpGet("GetFishingReturnInfo")] [Authorize] public async Task> GetFishingReturnInfo() { var result = await _userService.GetFishingReturnInfo(loginUser); var dto = new FishingReturnDto { TodayConsume = result.TodayConsume, YesterdayConsume = result.YesterdayConsume, IsClaimed = result.IsClaimed, CanClaimGold = result.CanClaimGold }; return this.ToResult(dto); } /// /// 领取捕鱼返利金币 /// [HttpGet("ClaimFishingReturn")] [Authorize] public async Task> ClaimFishingReturn() { var result = await _userService.ClaimFishingReturn(loginUser); if (result.isok) { return this.ToResult(new ClaimFishingReturnDto { Gold = result.gold, Message = result.msg }); } else { return this.ToFailResult(result.msg); } } } public class UserDto { public string Id { get; set; } public string Number { get; set; } public string UserName { get; set; } public string AvatarUrl { get; set; } public string Mobile { get; set; } public int Diamond { get; set; } public long Gold { get; set; } public int VipLevel { get; set; } public long CreateTime { get; set; } } public class UserListItemDto { public string Id { get; set; } public string Number { get; set; } public string UserName { get; set; } public string AvatarUrl { get; set; } public string Mobile { get; set; } public long CreateTime { get; set; } } public class EmailDto { public string Id { get; set; } public string Title { get; set; } public string Content { get; set; } public long SendTime { get; set; } public long ReadTime { get; set; } public bool IsRead { get; set; } public bool IsReward { get; set; } public int RewardDiamond { get; set; } public long RewardGold { get; set; } public List RewardItems { get; set; } public long ExpireTime { get; set; } } public class FishingReturnDto { public long TodayConsume { get; set; } public long YesterdayConsume { get; set; } public bool IsClaimed { get; set; } public long CanClaimGold { get; set; } } public class ClaimFishingReturnDto { public long Gold { get; set; } public string Message { get; set; } } public class UserAssetsResponse { public long Gold { get; set; } public int Diamond { get; set; } public List Props { get; set; } } }