添加项目文件。

This commit is contained in:
2026-10-12 16:22:04 +08:00
parent 7c68a0ca0a
commit aad11be43d
1000 changed files with 120807 additions and 0 deletions
+131
View File
@@ -0,0 +1,131 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Common;
using Common.CommonModel;
using CommonInfrastructure;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using UserDomain;
using UserDomain.Entity;
using UserDomain.Param;
namespace UserApi.User
{
[ApiController, Route("api/[controller]")]
[Authorize]
public class FeedbackController : BaseController
{
private readonly IUserFeedbackService _feedbackService;
public FeedbackController(IUserFeedbackService feedbackService)
{
_feedbackService = feedbackService;
}
[HttpPost("Submit")]
public async Task<BaseResponse<string>> Submit([FromBody] AddFeedbackParam param)
{
var result = await _feedbackService.Submit(param, loginUser.UserId, loginUser.Number, loginUser.UserName);
if (result)
return this.ToResult("提交成功");
else
return this.ToFailResult<string>("提交失败");
}
[HttpGet("MyList")]
public async Task<PageResponse<FeedbackDto>> GetMyList(int pageIndex = 1, int pageSize = 10)
{
var result = await _feedbackService.GetUserFeedbacks(loginUser.UserId, pageIndex, pageSize);
var dtos = result.list.Select(f => new FeedbackDto
{
Id = f.Id,
Type = f.Type,
Title = f.Title,
Content = f.Content,
Images = string.IsNullOrEmpty(f.Images) ? new List<string>() : f.Images.Split(',').ToList(),
QQ = f.QQ ?? "",
Contact = f.Contact ?? "",
Status = f.Status,
Reply = f.Reply ?? "",
ReplyTime = f.ReplyTime.HasValue ? new DateTimeOffset(f.ReplyTime.Value).ToUnixTimeMilliseconds() : 0,
SubmitTime = new DateTimeOffset(f.SubmitTime).ToUnixTimeMilliseconds()
});
return this.ToPageResult(dtos, (int)result.count);
}
[HttpGet("Detail")]
public async Task<BaseResponse<FeedbackDetailDto>> GetDetail(string id)
{
var feedback = await _feedbackService.GetById(id, loginUser.UserId);
if (feedback == null)
return this.ToFailResult<FeedbackDetailDto>("反馈不存在");
var dto = new FeedbackDetailDto
{
Id = feedback.Id,
Type = feedback.Type,
Title = feedback.Title,
Content = feedback.Content,
Images = string.IsNullOrEmpty(feedback.Images) ? new List<string>() : feedback.Images.Split(',').ToList(),
QQ = feedback.QQ ?? "",
Contact = feedback.Contact ?? "",
Status = feedback.Status,
Reply = feedback.Reply ?? "",
ReplyTime = feedback.ReplyTime.HasValue ? new DateTimeOffset(feedback.ReplyTime.Value).ToUnixTimeMilliseconds() : 0,
SubmitTime = new DateTimeOffset(feedback.SubmitTime).ToUnixTimeMilliseconds()
};
return this.ToResult(dto);
}
}
public class FeedbackDto
{
public string Id { get; set; }
public int Type { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public List<string> Images { get; set; }
public string QQ { get; set; }
public string Contact { get; set; }
public int Status { get; set; }
public string Reply { get; set; }
public long ReplyTime { get; set; }
public long SubmitTime { get; set; }
}
public class FeedbackDetailDto
{
public string Id { get; set; }
public int Type { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public List<string> Images { get; set; }
public string QQ { get; set; }
public string Contact { get; set; }
public int Status { get; set; }
public string Reply { get; set; }
public long ReplyTime { get; set; }
public long SubmitTime { get; set; }
}
}
@@ -0,0 +1,31 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using UserService.ImageUpload;
namespace UserApi.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ImageUploadController : ControllerBase
{
private readonly IImageUploadService _imageUploadService;
public ImageUploadController(IImageUploadService imageUploadService)
{
_imageUploadService = imageUploadService;
}
[HttpPost("upload")]
public async Task<IActionResult> UploadFile(IFormFile file)
{
var result = await _imageUploadService.UploadImageAsync(file);
if (!result.isOk)
{
return BadRequest(result.errorMessage);
}
return Ok(new { path = result.path });
}
}
}
+341
View File
@@ -0,0 +1,341 @@
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<BaseResponse<string>> 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<string>(result.msg);
}
[HttpGet("UpdateUserName")]
[Authorize]
public async Task<BaseResponse<string>> UpdateUserName(string userName)
{
var result = await _userService.UpdateUserName(userName, loginUser);
if (result.isok)
return this.ToResult(result.msg);
else
return this.ToFailResult<string>(result.msg);
}
[HttpGet("BindWX")]
[Authorize]
public async Task<BaseResponse<string>> BindWX(string openId)
{
var result = await _userService.BindWX(openId, loginUser);
if (result.isok)
return this.ToResult(result.msg);
else
return this.ToFailResult<string>(result.msg);
}
[HttpGet("BindMobile")]
[Authorize]
public async Task<BaseResponse<string>> 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<string>(result.msg);
}
[HttpGet("UpdateAvatar")]
[Authorize]
public async Task<BaseResponse<string>> UpdateAvatar(string avatarUrl)
{
var result = await _userService.UpdateAvatar(avatarUrl, loginUser);
if (result.isok)
return this.ToResult(result.msg);
else
return this.ToFailResult<string>(result.msg);
}
[HttpGet("UpdateAvatarFrame")]
[Authorize]
public async Task<BaseResponse<string>> UpdateAvatarFrame(string avatarFrame)
{
var result = await _userService.UpdateAvatarFrame(avatarFrame, loginUser);
if (result.isok)
return this.ToResult(result.msg);
else
return this.ToFailResult<string>(result.msg);
}
[HttpGet("GetUser")]
[Authorize]
public async Task<BaseResponse<UserEntity>> GetUser(string userid)
{
var result = await _userService.GetUser(userid);
if (result == null)
return this.ToFailResult<UserEntity>("用户不存在");
return this.ToResult(result);
}
[HttpGet("GetUserAssets")]
public async Task<BaseResponse<UserAssetsResponse>> 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<PageResponse<UserListItemDto>> 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<BaseResponse<string>> SendEmail(SendEmailParam param)
{
var result = await _userService.SendEmail(param, loginUser);
if (result.isok)
return this.ToResult(result.msg);
else
return this.ToFailResult<string>(result.msg);
}
[HttpGet("GetEmail")]
[Authorize]
public async Task<BaseResponse<EmailDto>> GetEmail(string id)
{
var result = await _userService.GetEmail(id, loginUser);
if (result == null)
return this.ToFailResult<EmailDto>("邮件不存在");
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<BaseResponse<RewardEmailResponse>> 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<RewardEmailResponse>(result.msg);
}
[HttpGet("DeleteEmail")]
[Authorize]
public async Task<BaseResponse<string>> 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<string>(result.msg);
}
[HttpGet("ReadEmailMore")]
[Authorize]
public async Task<BaseResponse<string>> ReadEmailMore()
{
var result = await _userService.ReadEmailMore(loginUser);
if (result.isok)
return this.ToResult(result.msg);
else
return this.ToFailResult<string>(result.msg);
}
[HttpGet("GetNoReadCount")]
[Authorize]
public async Task<BaseResponse<long>> GetNoReadCount()
{
var result = await _userService.GetNoReadCount(loginUser);
return this.ToResult(result);
}
[HttpPost("GetEmailByPage")]
[Authorize]
public async Task<PageResponse<UserEmail>> GetEmailByPage(GetEmailPageParam param)
{
var result = await _userService.GetEmailByPage(param, loginUser);
return this.ToPageResult(result.list, (int)result.count);
}
[HttpGet("GetFishingReturnInfo")]
[Authorize]
public async Task<BaseResponse<FishingReturnDto>> 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<BaseResponse<ClaimFishingReturnDto>> 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<ClaimFishingReturnDto>(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<CommonDomain.BaseModel.BaseProductCount> 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<CommonDomain.BaseModel.BaseProductCount> Props { get; set; }
}
}