using System.Linq;
using Common;
using CommonDomain.BaseModel;
using CommonInfrastructure;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using UserApi;
using UserDomain;
using UserDomain.Entity;
using UserService;
using UserService.Response;
using UserService.Param;
using UserService.Tasks;
using UserService.Tasks.Param;
using UserService.User;
using UserService.BattleOrder;
using UserService.GameConfigs;
namespace UserApi.Hall
{
[ApiController, Route("api/[controller]")]
[Authorize]
public class HallController : BaseController
{
private readonly IUserService _userService;
private readonly ITaskService _taskService;
private readonly IBattleOrderService _battleOrderService;
private readonly IActivityConfigService _activityConfigService;
public HallController(IUserService userService, ITaskService taskService, IBattleOrderService battleOrderService, IActivityConfigService activityConfigService)
{
_userService = userService;
_taskService = taskService;
_battleOrderService = battleOrderService;
_activityConfigService = activityConfigService;
}
///
/// 存入保险箱
///
[HttpGet("SaveSafeBox")]
public async Task> SaveSafeBox(int gold)
{
var res = await _userService.SaveSafeBox(gold, loginUser);
if (res.isok)
return this.ToResult(res.msg);
else
return this.ToFailResult(res.msg);
}
///
/// 取出保险箱
///
[HttpGet("GetSafeBox")]
public async Task> GetSafeBox(long gold, string password)
{
var res = await _userService.GetSafeBox(gold, password, loginUser);
if (res.isok)
return this.ToResult(res.msg);
else
return this.ToFailResult(res.msg);
}
///
/// 设置保险箱密码
///
[HttpGet("SetSafeBoxPassword")]
public async Task> SetSafeBoxPassword(string password)
{
var res = await _userService.SetSafeBoxPassword(password, loginUser);
if (res.isok)
return this.ToResult(res.msg);
else
return this.ToFailResult(res.msg);
}
///
/// 重设保险箱密码 - 通过短信验证码重置
///
[HttpGet("ResetSafeBoxPassword")]
public async Task> ResetSafeBoxPassword(string password, string code)
{
var res = await _userService.ResetSafeBoxPassword(password, code, loginUser);
if (res.isok)
return this.ToResult(res.msg);
else
return this.ToFailResult(res.msg);
}
///
/// 领取救济金
///
[HttpGet("GetRelief")]
public async Task> GetRelief()
{
var res = await _userService.GetReliefGold(loginUser);
if (res.isok)
return this.ToResult(res.msg);
else
return this.ToFailResult(res.msg);
}
///
/// 合成碎片
///
[HttpGet("SynthesisFragment")]
public async Task> SynthesisFragment(string propNumber)
{
var res = await _userService.SyntheticFragments(propNumber, loginUser);
if (res.isok)
return this.ToResult(res.model);
else
return this.ToFailResult(res.msg);
}
///
/// 购买道具
///
[HttpGet("BuyProp")]
public async Task> BuyProp(string propNumber, int count = 1)
{
var res = await _userService.BuyProps(propNumber, count, loginUser);
if (res.isok)
return this.ToResult(res.msg);
else
return this.ToFailResult(res.msg);
}
///
/// 使用VIP经验包
///
[HttpGet("UseVipExp")]
public async Task> UseVipExp(int count = 1)
{
var res = await _userService.UseVipExp(count, loginUser);
if (res.isok)
return this.ToResult(res.msg);
else
return this.ToFailResult(res.msg);
}
///
/// 购买金币
///
[HttpGet("BuyGold")]
public async Task> BuyGold(string number, int count = 1)
{
var res = await _userService.BuyGold(number, count, loginUser);
if (res.isok)
return this.ToResult(res.msg);
else
return this.ToFailResult(res.msg);
}
///
/// 购买钻石
///
[HttpGet("BuyDiamond")]
public async Task> BuyDiamond(string number, int count = 1)
{
var res = await _userService.BuyDiamond(number, count, loginUser);
if (res.isok)
return this.ToResult(res.url);
else
return this.ToFailResult(res.msg);
}
///
/// 签到
///
[HttpGet("SignIn")]
public async Task> SignIn()
{
var res = await _userService.Sign(loginUser);
if (res.isok)
return this.ToResult(res.result);
else
return this.ToFailResult(res.msg);
}
///
/// 获取签到状态 - 返回当前签到进度与可领取状态
///
[HttpGet("GetSignStatus")]
public async Task> GetSignStatus()
{
var res = await _userService.GetSignStatus(loginUser);
return this.ToResult(res);
}
///
/// 切换使用的炮台
///
[HttpGet("ChangeCannon")]
public async Task> ChangeCannon(string number)
{
var res = await _userService.ChangeCannon(number, loginUser);
if (res.isok)
return this.ToResult(res.msg);
else
return this.ToFailResult(res.msg);
}
///
/// 切换使用的翅膀
///
[HttpGet("ChangeWing")]
public async Task> ChangeWing(string number)
{
var res = await _userService.ChangeWing(number, loginUser);
if (res.isok)
return this.ToResult(res.msg);
else
return this.ToFailResult(res.msg);
}
///
/// 切换使用的战神
///
[HttpGet("ChangeGodWar")]
public async Task> ChangeGodWar(string number)
{
var res = await _userService.ChangeGodWar(number, loginUser);
if (res.isok)
return this.ToResult(res.msg);
else
return this.ToFailResult(res.msg);
}
///
/// 卸载当前使用的炮台并切换为默认基础炮台(不会删除已拥有的炮台)
///
[HttpGet("UnloadCannon")]
public async Task> UnloadCannon(string number)
{
var res = await _userService.UnloadCannon(number, loginUser);
if (res.isok)
return this.ToResult(res.msg);
else
return this.ToFailResult(res.msg);
}
///
/// 卸载当前使用的翅膀(不会删除已拥有的翅膀)
///
[HttpGet("UnloadWing")]
public async Task> UnloadWing(string number)
{
var res = await _userService.UnloadWing(number, loginUser);
if (res.isok)
return this.ToResult(res.msg);
else
return this.ToFailResult(res.msg);
}
///
/// 卸载当前使用的战神(不会删除已拥有的战神)
///
[HttpGet("UnloadGodWar")]
public async Task> UnloadGodWar(string number)
{
var res = await _userService.UnloadGodWar(number, loginUser);
if (res.isok)
return this.ToResult(res.msg);
else
return this.ToFailResult(res.msg);
}
///
/// 领取Vip每日礼包
///
[HttpGet("GetVipDayGift")]
public async Task> GetVipDayGift()
{
var res = await _userService.GetVipDayGift(loginUser);
if (res.isok)
return this.ToResult(res.model);
else
return this.ToFailResult(res.msg);
}
///
/// 领取Vip权益
///
[HttpGet("GetVipGift")]
public async Task> GetVipGift(int vipLevel)
{
var res = await _userService.GetVipGift(vipLevel, loginUser);
if (res.isok)
return this.ToResult(res.model);
else
return this.ToFailResult(res.msg);
}
///
/// 获取用户任务列表
///
[HttpGet("GetUserTaskList")]
[Authorize]
public async Task> GetUserTaskList(int taskType)
{
var result = await _taskService.GetUserTaskList(new GetUserTaskListParam() { TaskType = taskType }, loginUser.UserId);
var dtos = result.Select(MapToUserTaskDto).ToList();
return this.ToListResult(dtos);
}
private static UserTaskDto MapToUserTaskDto(UserTask entity)
{
if (entity == null) return new UserTaskDto();
return new UserTaskDto
{
Id = entity.Id ?? "",
UserId = entity.UserId ?? "",
Number = entity.Number ?? "",
Remark = entity.Remark ?? "",
TaskType = (int)entity.TaskType,
TaskEvent = (int)entity.TaskEvent,
TaskCount = entity.TaskCount,
Count = entity.Count,
IsFinish = entity.IsFinish,
OtherId = entity.OtherId ?? "",
IsGet = entity.IsGet,
TaskAddTime = entity.TaskAddTime,
TaskEndTime = entity.TaskEndTime,
TaskFinishTime = entity.TaskFinishTime,
Exp = entity.Exp
};
}
///
/// 领取任务奖励
///
[HttpGet("DistributeRewards")]
public async Task> DistributeRewards(string id)
{
var result = await _taskService.DistributeRewards(id, loginUser.UserId);
if (result.isok)
return this.ToResult(result.msg);
else
return this.ToFailResult(result.msg);
}
///
/// 获取资产变动记录
///
[HttpPost("GetUserRewardList")]
public async Task> GetUserRewardList(GetUserRewardListParam param)
{
param.UserId = loginUser.UserId;
var res = await _userService.GetUserRewardList(param);
if(res.list==null || res.list.Count()==0)
return this.ToPageResult(null, res.count);
var dtos = res.list.Select(MapToUserRewardDto).ToList();
return this.ToPageResult(dtos, res.count);
}
private static UserRewardDto MapToUserRewardDto(UserReward entity)
{
if (entity == null) return new UserRewardDto();
return new UserRewardDto
{
Id = entity.Id ?? "",
UserId = entity.UserId ?? "",
Type = entity.Type,
Source = (int)entity.Source,
CurrencyType = entity.CurrencyType,
BeforeCount = entity.BeforeCount,
ChangeCount = entity.ChangeCount,
AfterCount = entity.AfterCount,
OtherId = entity.OtherId ?? "",
OtherUserId = entity.OtherUserId ?? "",
Remark = entity.Remark ?? "",
RoomName = entity.RoomName ?? "",
RoomInfo = entity.RoomInfo ?? "",
Tax = entity.Tax,
CreateTime = entity.CreateTime
};
}
public class UserTaskDto
{
public string Id { get; set; }
public string UserId { get; set; }
public string Number { get; set; }
public string Remark { get; set; }
public int TaskType { get; set; }
public int TaskEvent { get; set; }
public int TaskCount { get; set; }
public double Count { get; set; }
public bool IsFinish { get; set; }
public string OtherId { get; set; }
public bool IsGet { get; set; }
public long TaskAddTime { get; set; }
public long TaskEndTime { get; set; }
public long TaskFinishTime { get; set; }
public long Exp { get; set; }
}
public class UserRewardDto
{
public string Id { get; set; }
public string UserId { get; set; }
public int Type { get; set; }
public int Source { get; set; }
public int CurrencyType { get; set; }
public long BeforeCount { get; set; }
public long ChangeCount { get; set; }
public long AfterCount { get; set; }
public string OtherId { get; set; }
public string OtherUserId { get; set; }
public string Remark { get; set; }
public string RoomName { get; set; }
public string RoomInfo { get; set; }
public int Tax { get; set; }
public long CreateTime { get; set; }
}
///
/// 获取用户战令信息
///
[HttpGet("GetBattleOrder")]
public async Task> GetBattleOrder()
{
var result = await _battleOrderService.GetUserBattleOrderWithConfigAsync(loginUser.UserId);
return this.ToResult(result);
}
///
/// 获取各等级奖励领取状态
///
[HttpGet("GetBattleOrderLevelStatus")]
public async Task> GetBattleOrderLevelStatus()
{
var result = await _battleOrderService.GetLevelRewardStatusAsync(loginUser.UserId);
return this.ToResult(result);
}
///
/// 一键领取战令奖励
///
[HttpGet("ReceiveAllBattleOrderRewards")]
public async Task> ReceiveAllBattleOrderRewards()
{
var result = await _battleOrderService.ReceiveAllRewardsAsync(loginUser.UserId);
if (result.success)
return this.ToListResult(result.rewards);
else
return this.ToListFailResult(result.message);
}
///
/// 领取指定等级战令奖励
///
[HttpGet("ReceiveBattleOrderLevelReward")]
public async Task> ReceiveBattleOrderLevelReward( int level)
{
var result = await _battleOrderService.ReceiveLevelRewardAsync(loginUser.UserId, level);
if (result.success)
return this.ToListResult(result.rewards);
else
return this.ToListFailResult(result.message);
}
///
/// 购买战令等级
///
[HttpGet("BuyBattleOrderLevel")]
public async Task> BuyBattleOrderLevel(int levelCount)
{
var result = await _battleOrderService.BuyLevelsAsync(loginUser.UserId, levelCount);
if (result.success)
return this.ToResult(new BuyBattleOrderLevelResponse
{
NewLevel = result.newLevel,
Cost = result.cost
});
else
return this.ToFailResult(result.message);
}
///
/// 购买战令进阶
///
[HttpGet("BuyBattleOrderAdvance")]
public async Task> BuyBattleOrderAdvance(int type)
{
var result = await _battleOrderService.BuyAdvanceAsync(loginUser.UserId, type);
if (result.success)
return this.ToResult(new BuyBattleOrderAdvanceResponse
{
Success = true,
Message = result.message,
PurchasedAdvances = result.purchasedAdvances
});
else
return this.ToFailResult(result.message);
}
///
/// 一键领取所有任务奖励
///
[HttpGet("ReceiveAllTaskRewards")]
public async Task> ReceiveAllTaskRewards()
{
var result = await _taskService.ReceiveAllTaskRewardsAsync(loginUser.UserId);
if (result.success)
return this.ToResult