From f8d4a28d530878c005e00a0c7abaebb24b1734d3 Mon Sep 17 00:00:00 2001 From: Putoo <290555932@qq.com> Date: Sat, 30 May 2026 17:32:27 +0800 Subject: [PATCH] 121 --- .gitignore | 1 + Kx.SeaTime.sln.DotSettings.user | 1 + .../game/game/game_chat.cs | 5 + .../game/user/unit_user.cs | 2 +- .../game/user/unit_user_config.cs | 39 ++++ .../game/user/unit_user_enemy.cs | 33 ++++ .../model/UserModel.cs | 2 + .../resource/game/game_ack.cs | 45 +++++ .../resource/game/game_area.cs | 8 +- .../Application.Domain/Config/GameConfig.cs | 4 + Service/Application.Domain/Enum/UserEnum.cs | 8 + .../Handle/MessageHandle.cs | 10 +- .../Interface/Chat/IGameChatService.cs | 3 +- .../Services/Interface/Pub/IAreaService.cs | 8 + .../Interface/Pub/IGameMaxNameService.cs | 6 + .../User/IUnitUserRelationService.cs | 9 + .../Interface/User/IUnitUserService.cs | 17 +- .../Services/Service/Chat/GameChatService.cs | 16 +- .../Services/Service/Pub/AreaService.cs | 21 +++ .../Service/Pub/GameMaxNameService.cs | 6 + .../Service/User/UnitUserAccService.cs | 18 +- .../Service/User/UnitUserRelationService.cs | 59 +++++- .../Services/Service/User/UnitUserService.cs | 170 +++++++++++++++--- .../Tool/ModelTool/UserModelTool.cs | 3 + .../Controllers/Chat/ChatController.cs | 93 +++++++++- .../Controllers/Login/LoginController.cs | 44 ++++- .../Controllers/Map/MapController.cs | 2 +- .../Controllers/Pub/PubController.cs | 24 ++- .../Controllers/User/RelationController.cs | 131 +++++++++++++- .../Controllers/User/UserController.cs | 165 +++++++++++++++-- .../RequestParms/Login/RegisterInfoParms.cs | 1 + .../RequestParms/User/UpdateNickParms.cs | 7 + .../Model/RequestParms/User/UpdateSexParms.cs | 6 + .../RequestParms/User/UpdateSignParms.cs | 6 + .../Properties/launchSettings.json | 2 +- Web/nuxt.config.ts | 7 +- Web/src/components/Base/Aimage.vue | 13 ++ Web/src/components/Business/GameChat.vue | 26 ++- Web/src/components/Business/GameUser.vue | 8 +- Web/src/components/Page/MapMenu.vue | 4 +- Web/src/config/BaseConfig.ts | 4 +- .../pages/{home/index.vue => bag/give.vue} | 0 Web/src/pages/chat/index.vue | 50 ++++-- Web/src/pages/group/index.vue | 3 + Web/src/pages/login/register.vue | 26 ++- Web/src/pages/map/index.vue | 2 +- Web/src/pages/{ => map}/npc/index.vue | 0 Web/src/pages/map/user.vue | 4 +- Web/src/pages/privilege/index.vue | 1 + Web/src/pages/privilege/liang/index.vue | 1 + .../pages/{team/index.vue => trade/my.vue} | 0 Web/src/pages/trade/user.vue | 1 + Web/src/pages/user/attr.vue | 1 + Web/src/pages/user/badge/index.vue | 3 + Web/src/pages/user/equ/index.vue | 1 + Web/src/pages/{ => user}/friend/index.vue | 30 +++- Web/src/pages/{ => user}/friend/search.vue | 0 Web/src/pages/user/gift/give.vue | 1 + Web/src/pages/user/gift/index.vue | 3 + Web/src/pages/user/home/index.vue | 1 + Web/src/pages/user/home/study/index.vue | 1 + Web/src/pages/user/honnor/index.vue | 1 + Web/src/pages/user/index.vue | 36 ++-- Web/src/pages/user/interact/dou.vue | 1 + Web/src/pages/user/master/add.vue | 1 + Web/src/pages/user/maxname/index.vue | 1 + Web/src/pages/user/nick.vue | 63 +++++++ Web/src/pages/user/setting/index.vue | 1 + Web/src/pages/user/sex.vue | 66 +++++++ Web/src/pages/user/ship/index.vue | 1 + Web/src/pages/user/sign.vue | 62 +++++++ Web/src/pages/user/skill/index.vue | 1 + Web/src/pages/user/team/index.vue | 1 + Web/src/pages/user/user.vue | 27 ++- Web/src/services/Index/ChatService.ts | 7 + Web/src/services/Index/PubService.ts | 8 + Web/src/services/login/LoginService.ts | 15 +- Web/src/services/user/RelationService.ts | 18 +- Web/src/services/user/UserService.ts | 27 +++ 79 files changed, 1369 insertions(+), 134 deletions(-) create mode 100644 Service/Application.Domain.Entity/game/user/unit_user_config.cs create mode 100644 Service/Application.Domain.Entity/game/user/unit_user_enemy.cs create mode 100644 Service/Application.Domain.Entity/resource/game/game_ack.cs create mode 100644 Service/Application.Domain/Services/Interface/Pub/IGameMaxNameService.cs create mode 100644 Service/Application.Domain/Services/Service/Pub/GameMaxNameService.cs create mode 100644 Service/Application.Web/Model/RequestParms/User/UpdateNickParms.cs create mode 100644 Service/Application.Web/Model/RequestParms/User/UpdateSexParms.cs create mode 100644 Service/Application.Web/Model/RequestParms/User/UpdateSignParms.cs create mode 100644 Web/src/components/Base/Aimage.vue rename Web/src/pages/{home/index.vue => bag/give.vue} (100%) create mode 100644 Web/src/pages/group/index.vue rename Web/src/pages/{ => map}/npc/index.vue (100%) create mode 100644 Web/src/pages/privilege/index.vue create mode 100644 Web/src/pages/privilege/liang/index.vue rename Web/src/pages/{team/index.vue => trade/my.vue} (100%) create mode 100644 Web/src/pages/trade/user.vue create mode 100644 Web/src/pages/user/attr.vue create mode 100644 Web/src/pages/user/badge/index.vue create mode 100644 Web/src/pages/user/equ/index.vue rename Web/src/pages/{ => user}/friend/index.vue (77%) rename Web/src/pages/{ => user}/friend/search.vue (100%) create mode 100644 Web/src/pages/user/gift/give.vue create mode 100644 Web/src/pages/user/gift/index.vue create mode 100644 Web/src/pages/user/home/index.vue create mode 100644 Web/src/pages/user/home/study/index.vue create mode 100644 Web/src/pages/user/honnor/index.vue create mode 100644 Web/src/pages/user/interact/dou.vue create mode 100644 Web/src/pages/user/master/add.vue create mode 100644 Web/src/pages/user/maxname/index.vue create mode 100644 Web/src/pages/user/nick.vue create mode 100644 Web/src/pages/user/setting/index.vue create mode 100644 Web/src/pages/user/sex.vue create mode 100644 Web/src/pages/user/ship/index.vue create mode 100644 Web/src/pages/user/sign.vue create mode 100644 Web/src/pages/user/skill/index.vue create mode 100644 Web/src/pages/user/team/index.vue diff --git a/.gitignore b/.gitignore index 393697f..0c1c6a3 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ node_modules .nuxt .output .vs +.output [Bb]in [Oo]bj [Ll]og/ diff --git a/Kx.SeaTime.sln.DotSettings.user b/Kx.SeaTime.sln.DotSettings.user index c53c730..a34a065 100644 --- a/Kx.SeaTime.sln.DotSettings.user +++ b/Kx.SeaTime.sln.DotSettings.user @@ -8,6 +8,7 @@ ForceIncluded ForceIncluded ForceIncluded + ForceIncluded ForceIncluded ForceIncluded ForceIncluded \ No newline at end of file diff --git a/Service/Application.Domain.Entity/game/game/game_chat.cs b/Service/Application.Domain.Entity/game/game/game_chat.cs index 18eacb4..5b0257a 100644 --- a/Service/Application.Domain.Entity/game/game/game_chat.cs +++ b/Service/Application.Domain.Entity/game/game/game_chat.cs @@ -65,5 +65,10 @@ namespace Application.Domain.Entity /// [SugarColumn(IsNullable = true)] public int? state { get; set; } + /// + /// opUser + /// + [SugarColumn(Length = 50, IsNullable = true)] + public string? opUser { get; set; } } } \ No newline at end of file diff --git a/Service/Application.Domain.Entity/game/user/unit_user.cs b/Service/Application.Domain.Entity/game/user/unit_user.cs index 0d71309..610c84f 100644 --- a/Service/Application.Domain.Entity/game/user/unit_user.cs +++ b/Service/Application.Domain.Entity/game/user/unit_user.cs @@ -84,4 +84,4 @@ namespace Application.Domain.Entity [SugarColumn(IsNullable = true)] public DateTime? addTime { get; set; } } -} +} \ No newline at end of file diff --git a/Service/Application.Domain.Entity/game/user/unit_user_config.cs b/Service/Application.Domain.Entity/game/user/unit_user_config.cs new file mode 100644 index 0000000..dce56a9 --- /dev/null +++ b/Service/Application.Domain.Entity/game/user/unit_user_config.cs @@ -0,0 +1,39 @@ +using SqlSugar; +using System; + +namespace Application.Domain.Entity +{ + [Tenant("Kg.SeaTime.Game")] + public class unit_user_config + { + /// + /// userId + /// + [SugarColumn(IsPrimaryKey = true, Length = 50)] + public string userId { get; set; } + + /// + /// 加好友权限:1默认 0禁止加好友 2不限制 + /// + [SugarColumn(IsNullable = true)] + public int? friendRole { get; set; } + + /// + /// 频道管理权限:0无 1区域 2全部 + /// + [SugarColumn(IsNullable = true)] + public int? chatRole { get; set; } + + /// + /// 自动拾取物品:-1未开通,1开通,0禁止 + /// + [SugarColumn(IsNullable = true)] + public int? autoBag { get; set; } + + /// + /// 自动使用药品:-1未开通,1开通,0禁止 + /// + [SugarColumn(IsNullable = true)] + public int? autoDrug { get; set; } + } +} \ No newline at end of file diff --git a/Service/Application.Domain.Entity/game/user/unit_user_enemy.cs b/Service/Application.Domain.Entity/game/user/unit_user_enemy.cs new file mode 100644 index 0000000..af1beb5 --- /dev/null +++ b/Service/Application.Domain.Entity/game/user/unit_user_enemy.cs @@ -0,0 +1,33 @@ +using SqlSugar; +using System; + +namespace Application.Domain.Entity +{ + [Tenant("Kg.SeaTime.Game")] + public class unit_user_enemy + { + /// + /// euId + /// + [SugarColumn(IsPrimaryKey = true, Length = 100)] + public string euId { get; set; } + + /// + /// userId + /// + [SugarColumn(Length = 50, IsNullable = true)] + public string? userId { get; set; } + + /// + /// eId + /// + [SugarColumn(Length = 50, IsNullable = true)] + public string? eId { get; set; } + + /// + /// addTime + /// + [SugarColumn(IsNullable = true)] + public DateTime? addTime { get; set; } + } +} \ No newline at end of file diff --git a/Service/Application.Domain.Entity/model/UserModel.cs b/Service/Application.Domain.Entity/model/UserModel.cs index a62c186..0a76783 100644 --- a/Service/Application.Domain.Entity/model/UserModel.cs +++ b/Service/Application.Domain.Entity/model/UserModel.cs @@ -5,7 +5,9 @@ public class UserModel public string userNo { get; set; } public string nick { get; set; } public string sex { get; set; } + public string sign { get; set; } public string headImg { get; set; } + public int area { get; set; } public string icon { get; set; } public int lev { get; set; } diff --git a/Service/Application.Domain.Entity/resource/game/game_ack.cs b/Service/Application.Domain.Entity/resource/game/game_ack.cs new file mode 100644 index 0000000..20959d0 --- /dev/null +++ b/Service/Application.Domain.Entity/resource/game/game_ack.cs @@ -0,0 +1,45 @@ +using SqlSugar; +using System; + +namespace Application.Domain.Entity +{ + [Tenant("Kg.SeaTime.Resource")] + public class game_ack + { + /// + /// ackCode + /// + [SugarColumn(IsPrimaryKey = true, Length = 50)] + public string ackCode { get; set; } + + /// + /// areaId + /// + [SugarColumn(IsNullable = true)] + public int? areaId { get; set; } + + /// + /// status + /// + [SugarColumn(IsNullable = true)] + public int? status { get; set; } + + /// + /// addTime + /// + [SugarColumn(IsNullable = true)] + public DateTime? addTime { get; set; } + + /// + /// useTime + /// + [SugarColumn(IsNullable = true)] + public DateTime? useTime { get; set; } + + /// + /// useUser + /// + [SugarColumn(Length = 50, IsNullable = true)] + public string? useUser { get; set; } + } +} \ No newline at end of file diff --git a/Service/Application.Domain.Entity/resource/game/game_area.cs b/Service/Application.Domain.Entity/resource/game/game_area.cs index 603519b..54e7cfa 100644 --- a/Service/Application.Domain.Entity/resource/game/game_area.cs +++ b/Service/Application.Domain.Entity/resource/game/game_area.cs @@ -30,10 +30,16 @@ namespace Application.Domain.Entity [SugarColumn(IsNullable = true)] public DateTime? opTime { get; set; } + /// + /// 是否需要激活码 + /// + [SugarColumn(IsNullable = true)] + public int? isNeedCode { get; set; } + /// /// 添加时间 /// [SugarColumn(IsNullable = true)] public DateTime? addTime { get; set; } } -} +} \ No newline at end of file diff --git a/Service/Application.Domain/Config/GameConfig.cs b/Service/Application.Domain/Config/GameConfig.cs index 93fc949..47505a0 100644 --- a/Service/Application.Domain/Config/GameConfig.cs +++ b/Service/Application.Domain/Config/GameConfig.cs @@ -9,4 +9,8 @@ public static class GameConfig public const int SendChatGoodsService = 10002;//金海螺 public const int UpLevAddWeight = 10;//升级增加负重 public const int GameBaseVigour = 50;//初始活力 + public const int GameRelationEnemyNeedGold = 50;//添加仇人所需金元 + public const int GameUpdateNickNeedGoods = 10001;//更新昵称所需道具 + public const int GameUpdateSexNeedGoods = 10001;//更新性别所需道具 + public const int GameUserFriendMaxCount = 50;//好友最大上限人数 } \ No newline at end of file diff --git a/Service/Application.Domain/Enum/UserEnum.cs b/Service/Application.Domain/Enum/UserEnum.cs index f3596d2..f211f58 100644 --- a/Service/Application.Domain/Enum/UserEnum.cs +++ b/Service/Application.Domain/Enum/UserEnum.cs @@ -6,4 +6,12 @@ public static class UserEnum { Person } + + public enum ConfigCode + { + FriendRole, + ChatRole, + AutoBag, + AutoDrug, + } } \ No newline at end of file diff --git a/Service/Application.Domain/Handle/MessageHandle.cs b/Service/Application.Domain/Handle/MessageHandle.cs index 47924b3..75758fe 100644 --- a/Service/Application.Domain/Handle/MessageHandle.cs +++ b/Service/Application.Domain/Handle/MessageHandle.cs @@ -15,7 +15,13 @@ public class MessageHandle if (state == 1) { - if (await relationService.AddFriend(events.userId, events.pars)) + var friendCount = await relationService.GetUserFriendCount(events.pars); + if (friendCount >= GameConfig.GameUserFriendMaxCount) + { + return new MessageHandleResult() { success = false, msg = "Ta的好友人数已达上限!" }; + } + + if (await relationService.AddFriend(events.pars,events.userId )) { var chatService = App.GetService(); var userService = App.GetService(); @@ -39,7 +45,7 @@ public class MessageHandle return new MessageHandleResult() { success = true, msg = "已拒绝该好友申请!" }; } } - else if (events.code == nameof(MessageEnum.EventCode.Friend)) + else if (events.code == nameof(MessageEnum.EventCode.Trade)) { return new MessageHandleResult() { success = true, msg = "消息通知已处理!" }; } diff --git a/Service/Application.Domain/Services/Interface/Chat/IGameChatService.cs b/Service/Application.Domain/Services/Interface/Chat/IGameChatService.cs index c9f8fed..8f55047 100644 --- a/Service/Application.Domain/Services/Interface/Chat/IGameChatService.cs +++ b/Service/Application.Domain/Services/Interface/Chat/IGameChatService.cs @@ -10,5 +10,6 @@ public interface IGameChatService Task SendChat(string userId, int areaId, string code, string sign, string par = ""); Task SendChat(string userId, string code, string sign, string par = ""); - Task DeleteChat(string chatId); + Task GetChatInfo(string chatId); + Task DeleteChat(string chatId, string opUser); } \ No newline at end of file diff --git a/Service/Application.Domain/Services/Interface/Pub/IAreaService.cs b/Service/Application.Domain/Services/Interface/Pub/IAreaService.cs index 0d55e4b..a2a89e5 100644 --- a/Service/Application.Domain/Services/Interface/Pub/IAreaService.cs +++ b/Service/Application.Domain/Services/Interface/Pub/IAreaService.cs @@ -13,4 +13,12 @@ public interface IAreaService /// /// Task GetAreaInfo(int areaId); + + #region 激活码 + + Task GetAckInfo(string code); + Task UseAck(string code, string userId); + + + #endregion } \ No newline at end of file diff --git a/Service/Application.Domain/Services/Interface/Pub/IGameMaxNameService.cs b/Service/Application.Domain/Services/Interface/Pub/IGameMaxNameService.cs new file mode 100644 index 0000000..54cf695 --- /dev/null +++ b/Service/Application.Domain/Services/Interface/Pub/IGameMaxNameService.cs @@ -0,0 +1,6 @@ +namespace Application.Domain; + +public interface IGameMaxNameService +{ + +} \ No newline at end of file diff --git a/Service/Application.Domain/Services/Interface/User/IUnitUserRelationService.cs b/Service/Application.Domain/Services/Interface/User/IUnitUserRelationService.cs index a1a04ee..da99832 100644 --- a/Service/Application.Domain/Services/Interface/User/IUnitUserRelationService.cs +++ b/Service/Application.Domain/Services/Interface/User/IUnitUserRelationService.cs @@ -11,4 +11,13 @@ public interface IUnitUserRelationService Task DeleteFriend(string userId, string toId); #endregion + + #region 仇人 + + Task> GetUserEnemyData(string userId); + Task CheckUserEnemy(string userId, string eId); + Task AddUserEnemy(string userId, string eId); + Task DeleteUserEnemy(string userId, string eId); + + #endregion } \ No newline at end of file diff --git a/Service/Application.Domain/Services/Interface/User/IUnitUserService.cs b/Service/Application.Domain/Services/Interface/User/IUnitUserService.cs index cca336c..b89b2a2 100644 --- a/Service/Application.Domain/Services/Interface/User/IUnitUserService.cs +++ b/Service/Application.Domain/Services/Interface/User/IUnitUserService.cs @@ -8,8 +8,10 @@ public interface IUnitUserService Task GetUserInfoByUserId(string userId); Task GetUserInfoByUserNo(string userNo); Task GetUserInfoByToken(string token); - - + Task CheckUserNickIsAt(string nick); + Task UpdateUserNick(string userId, string nick); + Task UpdateUserSex(string userId, string sex); + Task UpdateUserSign(string userId, string sign); #endregion #region 用户注册 @@ -31,5 +33,16 @@ public interface IUnitUserService Task GetOnlineCount(); + #endregion + + #region 权限配置 + + Task GetUserConfigInfo(string userId); + Task GetUserConfigInfo(string userId, string code); + Task UpdateUserConfigInfo(string userId, string code, int state); + + + + #endregion } \ No newline at end of file diff --git a/Service/Application.Domain/Services/Service/Chat/GameChatService.cs b/Service/Application.Domain/Services/Service/Chat/GameChatService.cs index 4146701..49e6e9e 100644 --- a/Service/Application.Domain/Services/Service/Chat/GameChatService.cs +++ b/Service/Application.Domain/Services/Service/Chat/GameChatService.cs @@ -123,6 +123,7 @@ public class GameChatService : IGameChatService, ITransient chat.addTime = DateTime.Now; chat.sort = TimeExtend.GetTimeStampSeconds; chat.delTime = TimeExtend.GetTimeStampBySeconds(DateTime.Now.AddDays(3)); + chat.opUser = ""; switch (code) { case "Region": @@ -146,7 +147,7 @@ public class GameChatService : IGameChatService, ITransient var db = _dbClient.AsTenant().GetConnectionWithAttr(); return await db.Insertable(chat).ExecuteCommandAsync() > 0; } - + public async Task SendChat(string userId, string code, string sign, string par = "") { var userService = App.GetService(); @@ -156,15 +157,24 @@ public class GameChatService : IGameChatService, ITransient return await SendChat(userId, (int)userInfo.areaId, code, sign, par); } + public async Task GetChatInfo(string chatId) + { + var db = _dbClient.AsTenant().GetConnectionWithAttr(); + return await db.Queryable().Where(it => it.chatId == chatId).SingleAsync(); + } + /// /// 删除聊天 /// /// + /// /// - public async Task DeleteChat(string chatId) + public async Task DeleteChat(string chatId, string opUser) { var db = _dbClient.AsTenant().GetConnectionWithAttr(); - return await db.Updateable().SetColumns(it => it.state == 0).Where(it => it.chatId == chatId) + return await db.Updateable().SetColumns(it => it.state == 0) + .SetColumns(it => it.opUser == opUser) + .Where(it => it.chatId == chatId) .ExecuteCommandAsync() > 0; } } \ No newline at end of file diff --git a/Service/Application.Domain/Services/Service/Pub/AreaService.cs b/Service/Application.Domain/Services/Service/Pub/AreaService.cs index ac970f0..91d1a69 100644 --- a/Service/Application.Domain/Services/Service/Pub/AreaService.cs +++ b/Service/Application.Domain/Services/Service/Pub/AreaService.cs @@ -57,4 +57,25 @@ public class AreaService : IAreaService, ITransient await _redisClient.DelAsync(key); } } + + #region 激活码 + + public async Task GetAckInfo(string code) + { + var db = _dbClient.AsTenant().GetConnectionWithAttr(); + return await db.Queryable().Where(it => it.ackCode == code).SingleAsync(); + } + + public async Task UseAck(string code, string userId) + { + DateTime time = DateTime.Now; + var db = _dbClient.AsTenant().GetConnectionWithAttr(); + return await db.Updateable().SetColumns(it => it.status == 1) + .SetColumns(it => it.useTime == time) + .SetColumns(it => it.useUser == userId) + .Where(it => it.ackCode == code) + .ExecuteCommandAsync() > 0; + } + + #endregion } \ No newline at end of file diff --git a/Service/Application.Domain/Services/Service/Pub/GameMaxNameService.cs b/Service/Application.Domain/Services/Service/Pub/GameMaxNameService.cs new file mode 100644 index 0000000..94314da --- /dev/null +++ b/Service/Application.Domain/Services/Service/Pub/GameMaxNameService.cs @@ -0,0 +1,6 @@ +namespace Application.Domain; + +public class GameMaxNameService(ISqlSugarClient DbClient, IRedisCache redis) : IGameMaxNameService, ITransient +{ + +} \ No newline at end of file diff --git a/Service/Application.Domain/Services/Service/User/UnitUserAccService.cs b/Service/Application.Domain/Services/Service/User/UnitUserAccService.cs index cd74126..0da8637 100644 --- a/Service/Application.Domain/Services/Service/User/UnitUserAccService.cs +++ b/Service/Application.Domain/Services/Service/User/UnitUserAccService.cs @@ -5,27 +5,27 @@ public class UnitUserAccService(ISqlSugarClient DbClient, IRedisCache redis) : I public async Task GetUserAccInfo(string userId, string accType) { long result = 0; - if (accType == AccEnum.AccType.copper.ToString()) + if (accType == nameof(AccEnum.AccType.copper)) { var info = await GetUserCopperInfo(userId); result = (long)info.copper; } - else if (accType == AccEnum.AccType.cowry.ToString()) + else if (accType == nameof(AccEnum.AccType.cowry)) { var info = await GetUserAccInfo(userId); result = (long)info.cowry; } - else if (accType == AccEnum.AccType.gold.ToString()) + else if (accType == nameof(AccEnum.AccType.gold)) { var info = await GetUserAccInfo(userId); result = (long)info.gold; } - else if (accType == AccEnum.AccType.teach.ToString()) + else if (accType == nameof(AccEnum.AccType.teach)) { var info = await GetUserAccInfo(userId); result = (long)info.teach; } - else if (accType == AccEnum.AccType.renown.ToString()) + else if (accType == nameof(AccEnum.AccType.renown)) { var info = await GetUserAccInfo(userId); result = (long)info.renown; @@ -53,10 +53,10 @@ public class UnitUserAccService(ISqlSugarClient DbClient, IRedisCache redis) : I var db = DbClient.AsTenant().GetConnectionWithAttr(); await DbClient.AsTenant().BeginTranAsync(); isOk = await db.Updateable() - .SetColumnsIF(accType.Equals(AccEnum.AccType.cowry.ToString()), it => it.cowry == it.cowry + opCount) - .SetColumnsIF(accType.Equals(AccEnum.AccType.gold.ToString()), it => it.gold == it.gold + opCount) - .SetColumnsIF(accType.Equals(AccEnum.AccType.teach.ToString()), it => it.teach == it.teach + opCount) - .SetColumnsIF(accType.Equals(AccEnum.AccType.renown.ToString()), it => it.renown == it.renown + opCount) + .SetColumnsIF(accType.Equals(nameof(AccEnum.AccType.cowry)), it => it.cowry == it.cowry + opCount) + .SetColumnsIF(accType.Equals(nameof(AccEnum.AccType.gold)), it => it.gold == it.gold + opCount) + .SetColumnsIF(accType.Equals(nameof(AccEnum.AccType.teach)), it => it.teach == it.teach + opCount) + .SetColumnsIF(accType.Equals(nameof(AccEnum.AccType.renown)), it => it.renown == it.renown + opCount) .Where(it => it.userId == userId).ExecuteCommandAsync() > 0; //生成日志 if (isOk) diff --git a/Service/Application.Domain/Services/Service/User/UnitUserRelationService.cs b/Service/Application.Domain/Services/Service/User/UnitUserRelationService.cs index 204bdca..8f55546 100644 --- a/Service/Application.Domain/Services/Service/User/UnitUserRelationService.cs +++ b/Service/Application.Domain/Services/Service/User/UnitUserRelationService.cs @@ -59,7 +59,64 @@ public class UnitUserRelationService(ISqlSugarClient DbClient, IRedisCache redis { string frId = StringAssist.GetSortKey(userId, toId); var db = DbClient.AsTenant().GetConnectionWithAttr(); - return await db.Deleteable().Where(it => it.frId == frId).ExecuteCommandAsync()>0; + return await db.Deleteable().Where(it => it.frId == frId).ExecuteCommandAsync() > 0; + } + + #endregion + + #region 仇人 + + public async Task> GetUserEnemyData(string userId) + { + var db = DbClient.AsTenant().GetConnectionWithAttr(); + var data = await db.Queryable().Where(it => it.userId == userId) + .OrderByDescending(it => it.addTime) + .ToListAsync(); + List result = new List(); + foreach (var item in data) + { + RelationView temp = new RelationView(); + temp.user = await UserModelTool.GetUserView(item.eId); + temp.near = 0; + + var mapService = App.GetService(); + var onMap = await mapService.GetUserOnMapInfo(item.eId); + temp.mapName = onMap.mapName; + temp.cityName = onMap.cityName; + temp.sort = TimeExtend.GetTimeStampBySeconds((DateTime)item.addTime); + temp.isOnline = onMap.isOnline; + result.Add(temp); + } + + return result; + } + + public async Task CheckUserEnemy(string userId, string eId) + { + string euId = $"{userId}_{eId}"; + var db = DbClient.AsTenant().GetConnectionWithAttr(); + return await db.Queryable().Where(it => it.euId == euId).AnyAsync(); + } + + public async Task AddUserEnemy(string userId, string eId) + { + string euId = $"{userId}_{eId}"; + unit_user_enemy enemy = new unit_user_enemy() + { + euId = euId, + userId = userId, + eId = eId, + addTime = DateTime.Now + }; + var db = DbClient.AsTenant().GetConnectionWithAttr(); + return await db.Insertable(enemy).ExecuteCommandAsync() > 0; + } + + public async Task DeleteUserEnemy(string userId, string eId) + { + string euId = $"{userId}_{eId}"; + var db = DbClient.AsTenant().GetConnectionWithAttr(); + return await db.Deleteable().Where(it => it.euId == euId).ExecuteCommandAsync() > 0; } #endregion diff --git a/Service/Application.Domain/Services/Service/User/UnitUserService.cs b/Service/Application.Domain/Services/Service/User/UnitUserService.cs index 471637a..48be7cf 100644 --- a/Service/Application.Domain/Services/Service/User/UnitUserService.cs +++ b/Service/Application.Domain/Services/Service/User/UnitUserService.cs @@ -2,36 +2,28 @@ namespace Application.Domain; -public class UnitUserService : IUnitUserService, ITransient +public class UnitUserService(ISqlSugarClient DbClient, IRedisCache redis) : IUnitUserService, ITransient { - private readonly ISqlSugarClient _dbClient; - private readonly IRedisCache _redisClient; - - public UnitUserService(ISqlSugarClient dbClient, IRedisCache redisClient) - { - _dbClient = dbClient; - _redisClient = redisClient; - } #region 用户信息 public async Task> GetUserDataByAccId(string accId) { - var db = _dbClient.AsTenant().GetConnectionWithAttr(); + var db = DbClient.AsTenant().GetConnectionWithAttr(); return await db.Queryable().Where(it => it.accId == accId).ToListAsync(); } public async Task GetUserInfoByUserId(string userId) { string key = string.Format(UserCache.BaseCacheKeys, "UserInfo", "UserId"); - var data = await _redisClient.GetHashAsync(key, userId); + var data = await redis.GetHashAsync(key, userId); if (data == null) { - var db = _dbClient.AsTenant().GetConnectionWithAttr(); + var db = DbClient.AsTenant().GetConnectionWithAttr(); data = await db.Queryable().Where(it => it.userId == userId).SingleAsync(); if (data != null) { - await _redisClient.AddHashAsync(key, userId, data); + await redis.AddHashAsync(key, userId, data); } } @@ -41,14 +33,14 @@ public class UnitUserService : IUnitUserService, ITransient public async Task GetUserInfoByUserNo(string userNo) { string key = string.Format(UserCache.BaseCacheKeys, "UserInfo", "UserNo"); - var data = await _redisClient.GetHashAsync(key, userNo); + var data = await redis.GetHashAsync(key, userNo); if (data == null) { - var db = _dbClient.AsTenant().GetConnectionWithAttr(); + var db = DbClient.AsTenant().GetConnectionWithAttr(); data = await db.Queryable().Where(it => it.userNo == userNo).SingleAsync(); if (data != null) { - await _redisClient.AddHashAsync(key, userNo, data); + await redis.AddHashAsync(key, userNo, data); } } @@ -58,14 +50,14 @@ public class UnitUserService : IUnitUserService, ITransient public async Task GetUserInfoByToken(string token) { string key = string.Format(UserCache.BaseCacheKeys, "UserInfo", "token"); - var data = await _redisClient.GetHashAsync(key, token); + var data = await redis.GetHashAsync(key, token); if (data == null) { - var db = _dbClient.AsTenant().GetConnectionWithAttr(); + var db = DbClient.AsTenant().GetConnectionWithAttr(); data = await db.Queryable().Where(it => it.token == token).SingleAsync(); if (data != null) { - await _redisClient.AddHashAsync(key, token, data); + await redis.AddHashAsync(key, token, data); } } @@ -86,9 +78,52 @@ public class UnitUserService : IUnitUserService, ITransient break; } - await _redisClient.DelHashAsync(string.Format(UserCache.BaseCacheKeys, "UserInfo", "UserId"), result.userId); - await _redisClient.DelHashAsync(string.Format(UserCache.BaseCacheKeys, "UserInfo", "UserNo"), result.userNo); - await _redisClient.DelHashAsync(string.Format(UserCache.BaseCacheKeys, "UserInfo", "Sid"), result.token); + await redis.DelHashAsync(string.Format(UserCache.BaseCacheKeys, "UserInfo", "UserId"), result.userId); + await redis.DelHashAsync(string.Format(UserCache.BaseCacheKeys, "UserInfo", "UserNo"), result.userNo); + await redis.DelHashAsync(string.Format(UserCache.BaseCacheKeys, "UserInfo", "Sid"), result.token); + } + + public async Task CheckUserNickIsAt(string nick) + { + var db = DbClient.AsTenant().GetConnectionWithAttr(); + return await db.Queryable().Where(it => it.nick.Contains(nick)).AnyAsync(); + } + + public async Task UpdateUserNick(string userId, string nick) + { + var db = DbClient.AsTenant().GetConnectionWithAttr(); + bool result = await db.Updateable().SetColumns(it => it.nick == nick) + .Where(it => it.userId == userId).ExecuteCommandAsync() > 0; + if (result) + { + await ClearUserInfo(0, userId); + } + + return result; + } + public async Task UpdateUserSex(string userId, string sex) + { + var db = DbClient.AsTenant().GetConnectionWithAttr(); + bool result = await db.Updateable().SetColumns(it => it.sex == sex) + .Where(it => it.userId == userId).ExecuteCommandAsync() > 0; + if (result) + { + await ClearUserInfo(0, userId); + } + + return result; + } + public async Task UpdateUserSign(string userId, string sign) + { + var db = DbClient.AsTenant().GetConnectionWithAttr(); + bool result = await db.Updateable().SetColumns(it => it.sign == sign) + .Where(it => it.userId == userId).ExecuteCommandAsync() > 0; + if (result) + { + await ClearUserInfo(0, userId); + } + + return result; } #endregion @@ -100,8 +135,8 @@ public class UnitUserService : IUnitUserService, ITransient unit_user result = new unit_user(); try { - var db = _dbClient.AsTenant().GetConnectionWithAttr(); - await _dbClient.AsTenant().BeginTranAsync(); + var db = DbClient.AsTenant().GetConnectionWithAttr(); + await DbClient.AsTenant().BeginTranAsync(); string userId = StringAssist.NewGuid; result.userId = userId; result.areaId = areaId; @@ -123,12 +158,12 @@ public class UnitUserService : IUnitUserService, ITransient result = null; } - await _dbClient.AsTenant().CommitTranAsync(); + await DbClient.AsTenant().CommitTranAsync(); } catch { result = null; - await _dbClient.AsTenant().RollbackTranAsync(); + await DbClient.AsTenant().RollbackTranAsync(); } return result; @@ -136,7 +171,7 @@ public class UnitUserService : IUnitUserService, ITransient public async Task RegisterUserInfo(string userId, string nick, string sex) { - var db = _dbClient.AsTenant().GetConnectionWithAttr(); + var db = DbClient.AsTenant().GetConnectionWithAttr(); bool result = await db.Updateable().SetColumns(it => it.nick == nick) .SetColumns(it => it.sex == sex) .SetColumns(it => it.regOk == 1) @@ -163,6 +198,15 @@ public class UnitUserService : IUnitUserService, ITransient unit_user_attr userAttr = GameTool.GetAttrData(1); userAttr.userId = userId; db.Insertable(userAttr).AddQueue(); + + //注册配置 + unit_user_config config = new unit_user_config(); + config.userId = userId; + config.friendRole = 1; + config.chatRole = 0; + config.autoBag = -1; + config.autoDrug = -1; + db.Insertable(config).AddQueue(); //注册个人血量 unit_user_blood blood = new unit_user_blood(); @@ -248,10 +292,78 @@ public class UnitUserService : IUnitUserService, ITransient public async Task GetOnlineCount() { - long time = TimeExtend.GetTimeStampBySeconds(DateTime.Now.AddMinutes(0-GameConfig.OnLineTime)); - var db = _dbClient.AsTenant().GetConnectionWithAttr(); + long time = TimeExtend.GetTimeStampBySeconds(DateTime.Now.AddMinutes(0 - GameConfig.OnLineTime)); + var db = DbClient.AsTenant().GetConnectionWithAttr(); return await db.Queryable().Where(it => it.upTime > time).CountAsync(); } + #endregion + + #region 权限配置 + + public async Task GetUserConfigInfo(string userId) + { + string key = string.Format(UserCache.BaseCacheKeys, "UserInfo", "Config"); + var data = await redis.GetHashAsync(key, userId); + if (data == null) + { + var db = DbClient.AsTenant().GetConnectionWithAttr(); + data = await db.Queryable().Where(it => it.userId == userId).SingleAsync(); + if (data != null) + { + await redis.AddHashAsync(key, userId, data); + } + } + + return data; + } + + public async Task GetUserConfigInfo(string userId, string code) + { + int result = 0; + var config = await GetUserConfigInfo(userId); + switch (code) + { + case "FriendRole": + result = (int)config.friendRole; + break; + case "ChatRole": + result = (int)config.chatRole; + break; + case "AutoBag": + result = (int)config.autoBag; + break; + case "AutoDrug": + result = (int)config.autoDrug; + break; + + } + return result; + } + + private async Task ClearUserConfig(string userId) + { + string key = string.Format(UserCache.BaseCacheKeys, "UserInfo", "Config"); + await redis.DelHashAsync(key, userId); + } + + public async Task UpdateUserConfigInfo(string userId, string code, int state) + { + var db = DbClient.AsTenant().GetConnectionWithAttr(); + bool result = await db.Updateable() + .SetColumnsIF(code == "FriendRole", it => it.friendRole == state) + .SetColumnsIF(code == "ChatRole", it => it.chatRole == state) + .SetColumnsIF(code == "AutoBag", it => it.autoBag == state) + .SetColumnsIF(code == "AutoDrug", it => it.autoDrug == state) + .Where(it => it.userId == userId).ExecuteCommandAsync() > 0; + if (result) + { + await ClearUserConfig(userId); + } + + return result; + } + + #endregion } \ No newline at end of file diff --git a/Service/Application.Domain/Tool/ModelTool/UserModelTool.cs b/Service/Application.Domain/Tool/ModelTool/UserModelTool.cs index 59e5fbd..bcb9cbb 100644 --- a/Service/Application.Domain/Tool/ModelTool/UserModelTool.cs +++ b/Service/Application.Domain/Tool/ModelTool/UserModelTool.cs @@ -19,6 +19,7 @@ public class UserModelTool result.headImg = ""; result.area = 0; result.icon = ""; + result.sign = "会陪你在航海的世界里浪迹天涯~"; result.lev = 999; } else @@ -31,6 +32,7 @@ public class UserModelTool result.userNo = userInfo.userNo; result.nick = userInfo.nick; result.sex = userInfo.sex; + result.sign = userInfo.sign; result.headImg = userInfo.headImg; result.area = (int)userInfo.areaId; result.icon = ""; @@ -38,6 +40,7 @@ public class UserModelTool { result.icon = ""; } + result.lev = await attrService.GetUserLev(userId); } } diff --git a/Service/Application.Web/Controllers/Chat/ChatController.cs b/Service/Application.Web/Controllers/Chat/ChatController.cs index a40c024..cbf80e6 100644 --- a/Service/Application.Web/Controllers/Chat/ChatController.cs +++ b/Service/Application.Web/Controllers/Chat/ChatController.cs @@ -12,11 +12,13 @@ public class ChatController : ControllerBase { private readonly IGameChatService _chatService; private readonly IGameGoodsService _goodsService; + private readonly IUnitUserService _userService; - public ChatController(IGameChatService chatService, IGameGoodsService goodsService) + public ChatController(IGameChatService chatService, IGameGoodsService goodsService, IUnitUserService userService) { _chatService = chatService; _goodsService = goodsService; + _userService = userService; } /// @@ -53,8 +55,10 @@ public class ChatController : ControllerBase break; } + int chatRole = await _userService.GetUserConfigInfo(userId, nameof(UserEnum.ConfigCode.ChatRole)); //获取聊天权限 - return PoAction.Ok(new { data, total = Total.Value, sendGoodsCount, sendGoodsName }); + + return PoAction.Ok(new { data, total = Total.Value, sendGoodsCount, sendGoodsName, chatRole }); } /// @@ -73,7 +77,7 @@ public class ChatController : ControllerBase string userId = StateHelper.userId; int areaId = StateHelper.areaId; string par = string.Empty; - string code = GameChatEnum.Code.Public.ToString(); + string code = nameof(GameChatEnum.Code.Public); int goodsId = 0; bool isSend = false; switch (pars.type) @@ -110,12 +114,35 @@ public class ChatController : ControllerBase return PoAction.Message("无法发言!"); } + int chatRole = await _userService.GetUserConfigInfo(userId, nameof(UserEnum.ConfigCode.ChatRole)); + if (chatRole < 0) + { + return PoAction.Message("发言权限已被系统限制!"); + } + + bool upGoods = true; if (goodsId != 0) { - var myCount = await _goodsService.GetUserGoodsCount(userId, goodsId); - if (myCount < 1) + bool checkGoods = true; + + if ((nameof(GameChatEnum.Code.Region) == code || nameof(GameChatEnum.Code.Public) == code) && chatRole > 0) { - return PoAction.Message("暂无发言道具,去商城购买海螺才可以发言哦!"); + checkGoods = false; + upGoods = false; + } + else if (nameof(GameChatEnum.Code.Dress) == code && chatRole > 1) + { + checkGoods = false; + upGoods = false; + } + + if (checkGoods) + { + var myCount = await _goodsService.GetUserGoodsCount(userId, goodsId); + if (myCount < 1) + { + return PoAction.Message("暂无发言道具,去商城购买海螺才可以发言哦!"); + } } } @@ -123,7 +150,7 @@ public class ChatController : ControllerBase bool result = await _chatService.SendChat(userId, areaId, code, sign, par); if (result) { - if (goodsId != 0) //扣除道具 + if (goodsId != 0 && upGoods) //扣除道具 { await _goodsService.UpdateUserGoods(userId, 0, goodsId, 1, "发言"); } @@ -135,4 +162,56 @@ public class ChatController : ControllerBase return PoAction.Message("发送失败,请稍后尝试!"); } } + + /// + /// 删除聊天记录 + /// + /// + /// + [HttpGet] + public async Task DeleteChat(string chatId) + { + var chatInfo = await _chatService.GetChatInfo(chatId); + if (chatInfo == null) + { + return PoAction.Message("发言不存在!"); + } + + if (chatInfo.state != 1) + { + return PoAction.Message("发言不存在!"); + } + + if (chatInfo.areaId != StateHelper.areaId) + { + return PoAction.Message("发言不存在!"); + } + + bool IsOp = false; + string userId = StateHelper.userId; + int chatRole = await _userService.GetUserConfigInfo(userId, nameof(UserEnum.ConfigCode.ChatRole)); + if ((chatInfo.code == nameof(GameChatEnum.Code.Public) || chatInfo.code == nameof(GameChatEnum.Code.Region)) && + chatRole > 0) + { + IsOp = true; + } + else if (chatRole > 1 && chatInfo.code == nameof(GameChatEnum.Code.Dress)) + { + IsOp = true; + } + + if (IsOp == false) + { + return PoAction.Message("无权限!"); + } + + if (await _chatService.DeleteChat(chatId, userId)) + { + return PoAction.Ok(true); + } + else + { + return PoAction.Message("操作失败,请稍后尝试!"); + } + } } \ No newline at end of file diff --git a/Service/Application.Web/Controllers/Login/LoginController.cs b/Service/Application.Web/Controllers/Login/LoginController.cs index 95084ef..5273dde 100644 --- a/Service/Application.Web/Controllers/Login/LoginController.cs +++ b/Service/Application.Web/Controllers/Login/LoginController.cs @@ -158,7 +158,7 @@ namespace Application.Web.Controllers.Login { return PoAction.Message("暂未开放本区服!"); } - + //判断是否已经注册 var userData = await _userService.GetUserDataByAccId(accInfo.accId); if (userData.Any(it => it.areaId == area)) @@ -247,7 +247,7 @@ namespace Application.Web.Controllers.Login string Key = App.Configuration["JwtTokenOptions:SecurityKey"].ToString(); string Issuer = App.Configuration["JwtTokenOptions:Issuer"].ToString(); string Audience = App.Configuration["JwtTokenOptions:Audience"].ToString(); - + string accId = string.Empty; var tokenData = await JwtTool.GetJwtData(parms.token, Key, "accId"); if (tokenData != null) @@ -297,13 +297,53 @@ namespace Application.Web.Controllers.Login string sex = parms.sex == 0 ? "女" : "男"; string userId = StateHelper.userId; var userInfo = await _userService.GetUserInfoByUserId(userId); + if (userInfo == null) + { + return PoAction.Message("角色不存在!"); + } + if (userInfo.regOk == 1) { return PoAction.Ok(true); } + var areaInfo = await _areaService.GetAreaInfo((int)userInfo.areaId); + if (areaInfo.isNeedCode == 1) //需要激活码 + { + if (string.IsNullOrEmpty(parms.code)) + { + return PoAction.Message("请输入激活码!"); + } + + var ackInfo = await _areaService.GetAckInfo(parms.code); + if (ackInfo == null) + { + return PoAction.Message("激活码过期!"); + } + + if (ackInfo.status != 0) + { + return PoAction.Message("激活码过期!"); + } + + if (ackInfo.areaId != 0 && ackInfo.areaId != areaInfo.areaId) + { + return PoAction.Message($"当前激活码可用于{ackInfo.areaId}区激活!"); + } + } + + if (await _userService.CheckUserNickIsAt(parms.nick)) + { + return PoAction.Message("昵称已存在!"); + } + if (await _userService.RegisterUserInfo(userId, parms.nick, sex)) { + if (areaInfo.isNeedCode == 1) + { + await _areaService.UseAck(parms.code, userId); + } + return PoAction.Ok(true); } else diff --git a/Service/Application.Web/Controllers/Map/MapController.cs b/Service/Application.Web/Controllers/Map/MapController.cs index d0d4e26..8bae3a3 100644 --- a/Service/Application.Web/Controllers/Map/MapController.cs +++ b/Service/Application.Web/Controllers/Map/MapController.cs @@ -119,7 +119,7 @@ public class MapController : ControllerBase page, 10, Total); - return PoAction.Ok(new { data, total = Total.Value }); + return PoAction.Ok(new { data, total = Total.Value, map = mapInfo }); } /// diff --git a/Service/Application.Web/Controllers/Pub/PubController.cs b/Service/Application.Web/Controllers/Pub/PubController.cs index d7da309..fb0fcaa 100644 --- a/Service/Application.Web/Controllers/Pub/PubController.cs +++ b/Service/Application.Web/Controllers/Pub/PubController.cs @@ -106,6 +106,28 @@ namespace Application.Web.Controllers.Pub } return PoAction.Ok(userData); } - + + /// + /// 获取区服信息 + /// + /// + [HttpGet] + public async Task GetOnAreaInfo() + { + int areaId = StateHelper.areaId; + var areaInfo = await _areaService.GetAreaInfo(areaId); + if (areaInfo == null) + { + return PoAction.Message("区服不存在!"); + } + + if (areaInfo.status != 1) + { + return PoAction.Message("当前区服繁忙!"); + } + + return PoAction.Ok(areaInfo); + } + } } \ No newline at end of file diff --git a/Service/Application.Web/Controllers/User/RelationController.cs b/Service/Application.Web/Controllers/User/RelationController.cs index e8fa7d0..5146947 100644 --- a/Service/Application.Web/Controllers/User/RelationController.cs +++ b/Service/Application.Web/Controllers/User/RelationController.cs @@ -14,13 +14,15 @@ public class RelationController : ControllerBase private readonly IUnitUserRelationService _relationService; private readonly IUnitUserService _userService; private readonly IMessageService _messageService; + private readonly IUnitUserAccService _accService; public RelationController(IUnitUserRelationService relationService, IUnitUserService userService, - IMessageService messageService) + IMessageService messageService, IUnitUserAccService accService) { _relationService = relationService; _userService = userService; _messageService = messageService; + _accService = accService; } /// @@ -51,10 +53,23 @@ public class RelationController : ControllerBase .ThenByDescending(it => it.sort).ToList(); result = PageExtend.GetPageList(data, page, 10); } + else if (type == 3) + { + var data = await _relationService.GetUserEnemyData(userId); + total = data.Count; + data = data.OrderByDescending(it => it.isOnline) + .ThenByDescending(it => it.sort).ToList(); + result = PageExtend.GetPageList(data, page, 10); + } return PoAction.Ok(new { data = result, total = total.Value, online = result.Count(it => it.isOnline == 1) }); } + /// + /// 好友处理 + /// + /// + /// [HttpGet] public async Task FriendHandle(string no) { @@ -76,8 +91,33 @@ public class RelationController : ControllerBase } bool IsFriend = await _relationService.CheckIsFriend(userId, userInfo.userId); - if (IsFriend == false) + if (IsFriend == false) //添加好友 { + var friendRole = + await _userService.GetUserConfigInfo(userInfo.userId, nameof(UserEnum.ConfigCode.FriendRole)); + if (friendRole == 0) + { + return PoAction.Message("该玩家拒绝任何人添加好友!"); + } + + var friendCount = await _relationService.GetUserFriendCount(userId); + if (friendCount >= GameConfig.GameUserFriendMaxCount) + { + return PoAction.Message("好友人数已达上限!"); + } + + if (friendRole == 2)//不限制加好友 + { + if (await _relationService.AddFriend(userId, userInfo.userId)) + { + return PoAction.Ok(true, "添加好友成功!"); + } + else + { + return PoAction.Ok(true, "添加好友失败,请稍后尝试!"); + } + } + string token = $"{nameof(MessageEnum.EventCode.Friend)}_{userId}_{userInfo.userId}"; if (await _messageService.CheckAtEventMsg(token)) { @@ -114,4 +154,91 @@ public class RelationController : ControllerBase } } } + + /// + /// 删除仇人 + /// + /// + /// + [HttpGet] + public async Task DeleteEnemy(string no) + { + string userId = StateHelper.userId; + var userInfo = await _userService.GetUserInfoByUserNo(no); //基础资料 + if (userInfo == null) + { + return PoAction.Message("玩家不存在!"); + } + + bool IsEnemy = await _relationService.CheckUserEnemy(userId, userInfo.userId); + if (IsEnemy == false) + { + return PoAction.Message("不是仇人,无需删除哦"); + } + + bool result = await _relationService.DeleteUserEnemy(userId, userInfo.userId); + if (result) + { + return PoAction.Ok(true, "删除成功!"); + } + else + { + return PoAction.Message("删除失败,请稍后尝试."); + } + } + + /// + /// 添加仇人 + /// + /// + /// + [HttpGet] + public async Task AddEnemy(string no) + { + string userId = StateHelper.userId; + var userInfo = await _userService.GetUserInfoByUserNo(no); //基础资料 + if (userInfo == null) + { + return PoAction.Message("玩家不存在!"); + } + + if (userInfo.userId == userId) + { + return PoAction.Message("不能加自己为仇人!"); + } + + if (userInfo.areaId != StateHelper.areaId) + { + return PoAction.Message("玩家不存在!"); + } + + bool IsEnemy = await _relationService.CheckUserEnemy(userId, userInfo.userId); + if (IsEnemy == true) + { + return PoAction.Message("已经是仇人啦,无需重复添加!"); + } + + var myAcc = await _accService.GetUserAccInfo(userId, nameof(AccEnum.AccType.gold)); + if (myAcc < GameConfig.GameRelationEnemyNeedGold) + { + return PoAction.Message("您的金元不足!"); + } + + if (await _accService.UpdateUserAcc(userId, 0, nameof(AccEnum.AccType.gold), + GameConfig.GameRelationEnemyNeedGold, nameof(AccEnum.Name.其他), "添加仇人")) + { + if (await _relationService.AddUserEnemy(userId, userInfo.userId)) + { + return PoAction.Ok(true, "仇人添加成功!"); + } + else + { + return PoAction.Message("添加失败,请稍后尝试."); + } + } + else + { + return PoAction.Message("添加失败,请稍后尝试."); + } + } } \ No newline at end of file diff --git a/Service/Application.Web/Controllers/User/UserController.cs b/Service/Application.Web/Controllers/User/UserController.cs index ae4723c..7af45e7 100644 --- a/Service/Application.Web/Controllers/User/UserController.cs +++ b/Service/Application.Web/Controllers/User/UserController.cs @@ -13,18 +13,22 @@ public class UserController : ControllerBase private readonly IUnitUserAccService _accService; private readonly IGameMapService _mapService; private readonly IUnitUserRelationService _relationService; + private readonly IGameGoodsService _goodsService; + private readonly IGameChatService _chatService; public UserController(IUnitUserService userService, IUnitUserAttrService attrService, - IUnitUserAccService accService, IGameMapService mapService,IUnitUserRelationService relationService) + IUnitUserAccService accService, IGameMapService mapService, IUnitUserRelationService relationService, + IGameGoodsService goodsService, IGameChatService chatService) { _userService = userService; _attrService = attrService; _accService = accService; _mapService = mapService; _relationService = relationService; + _goodsService = goodsService; + _chatService = chatService; } - /// /// 获取个人资料信息 @@ -53,27 +57,34 @@ public class UserController : ControllerBase /// /// [HttpGet] - public async Task GetUserBaseInfo(string no) + public async Task GetUserBaseInfo(string? no) { string userId = StateHelper.userId; - var userInfo = await _userService.GetUserInfoByUserNo(no); //基础资料 - if (userInfo == null) + if (!string.IsNullOrEmpty(no)) { - return PoAction.Message("玩家不存在!", 102); + var userInfo = await _userService.GetUserInfoByUserNo(no); //基础资料 + if (userInfo == null) + { + return PoAction.Message("玩家不存在!", 102); + } + + if (userInfo.userId == userId) + { + return PoAction.Message("用户本身!", 101); + } + + if (userInfo.areaId != StateHelper.areaId) + { + return PoAction.Message("玩家不存在!", 102); + } + + userId = userInfo.userId; } - if (userInfo.userId == userId) - { - return PoAction.Message("用户本身!", 101); - } - if (userInfo.areaId != StateHelper.areaId) - { - return PoAction.Message("玩家不存在!", 102); - } - - var model = await UserModelTool.GetUserView(userInfo.userId); + var model = await UserModelTool.GetUserView(userId); return PoAction.Ok(model); } + /// /// 获取用户资料 /// @@ -93,6 +104,7 @@ public class UserController : ControllerBase { return PoAction.Message("用户本身!", 101); } + if (userInfo.areaId != StateHelper.areaId) { return PoAction.Message("玩家不存在!", 102); @@ -112,7 +124,126 @@ public class UserController : ControllerBase var onCity = await _mapService.GetCityInfo((int)onMapInfo.cityId); string onMapName = $"{onCity.cityName}-{onMapInfo.mapName}"; bool isFriend = await _relationService.CheckIsFriend(userId, userInfo.userId); - object result = new { user, attr = new { attrInfo.lev }, acc, isOnline, onMapName ,isFriend}; + bool isEnemy = await _relationService.CheckUserEnemy(userId, userInfo.userId); + object result = new { user, attr = new { attrInfo.lev }, acc, isOnline, onMapName, isFriend, isEnemy }; return PoAction.Ok(result); } + + /// + /// 更新昵称 + /// + /// + /// + [HttpPost] + public async Task UpdateUserNick([FromBody] UpdateNickParms parms) + { + parms.nick = StringAssist.NoHTML(parms.nick); + if (string.IsNullOrEmpty(parms.nick)) + { + return PoAction.Message("昵称不能为空!"); + } + + string userId = StateHelper.userId; + var userInfo = await _userService.GetUserInfoByUserId(userId); + if (userInfo.nick == parms.nick) + { + return PoAction.Message("昵称无变化,无需修改!"); + } + + if (await _userService.CheckUserNickIsAt(parms.nick)) + { + return PoAction.Message("昵称已存在!"); + } + + + var myGoods = await _goodsService.GetUserGoodsCount(userId, GameConfig.GameUpdateNickNeedGoods); + if (myGoods < 1) + { + return PoAction.Message("暂无改名道具!"); + } + + if (await _goodsService.UpdateUserGoods(userId, 0, GameConfig.GameUpdateNickNeedGoods, 1, "改名使用")) + { + if (await _userService.UpdateUserNick(userId, parms.nick)) + { + string sign = $"玩家注意:【{UbbTool.HomeUbb(userInfo.userNo, userInfo.nick)}】已将昵称修改为【{parms.nick}】"; + await _chatService.SendChat("0", StateHelper.areaId, nameof(GameChatEnum.Code.Region), sign); + return PoAction.Ok(true); + } + else + { + return PoAction.Message("操作失败,请稍后尝试!"); + } + } + else + { + return PoAction.Message("操作失败,请稍后尝试!"); + } + } + + /// + /// 变更性别 + /// + /// + /// + [HttpPost] + public async Task UpdateUserSex([FromBody] UpdateSexParms parms) + { + parms.sex = parms.sex == "男" ? "男" : "女"; + + string userId = StateHelper.userId; + var userInfo = await _userService.GetUserInfoByUserId(userId); + if (userInfo.sex == parms.sex) + { + return PoAction.Message("已是当前性别,无需修改!"); + } + + var myGoods = await _goodsService.GetUserGoodsCount(userId, GameConfig.GameUpdateSexNeedGoods); + if (myGoods < 1) + { + return PoAction.Message("暂无性别变更道具!"); + } + + if (await _goodsService.UpdateUserGoods(userId, 0, GameConfig.GameUpdateSexNeedGoods, 1, "变更性别使用")) + { + if (await _userService.UpdateUserSex(userId, parms.sex)) + { + return PoAction.Ok(true); + } + else + { + return PoAction.Message("操作失败,请稍后尝试!"); + } + } + else + { + return PoAction.Message("操作失败,请稍后尝试!"); + } + } + + /// + /// 更新签名 + /// + /// + /// + [HttpPost] + public async Task UpdateUserSign([FromBody] UpdateSignParms parms) + { + if (parms.sign.Length > 80) + { + return PoAction.Message("签名不能超过80个字符!"); + } + + parms.sign = StringAssist.NoHTML(parms.sign); + string userId = StateHelper.userId; + + if (await _userService.UpdateUserSign(userId, parms.sign)) + { + return PoAction.Ok(true); + } + else + { + return PoAction.Message("操作失败,请稍后尝试!"); + } + } } \ No newline at end of file diff --git a/Service/Application.Web/Model/RequestParms/Login/RegisterInfoParms.cs b/Service/Application.Web/Model/RequestParms/Login/RegisterInfoParms.cs index 2a2f8ea..1409ab4 100644 --- a/Service/Application.Web/Model/RequestParms/Login/RegisterInfoParms.cs +++ b/Service/Application.Web/Model/RequestParms/Login/RegisterInfoParms.cs @@ -4,4 +4,5 @@ public class RegisterInfoParms { public string nick { get; set; } = string.Empty; public int sex { get; set; } + public string code { get; set; } } \ No newline at end of file diff --git a/Service/Application.Web/Model/RequestParms/User/UpdateNickParms.cs b/Service/Application.Web/Model/RequestParms/User/UpdateNickParms.cs new file mode 100644 index 0000000..93304a8 --- /dev/null +++ b/Service/Application.Web/Model/RequestParms/User/UpdateNickParms.cs @@ -0,0 +1,7 @@ +namespace Application.Web; + +public class UpdateNickParms +{ + public string nick { get; set; } + +} \ No newline at end of file diff --git a/Service/Application.Web/Model/RequestParms/User/UpdateSexParms.cs b/Service/Application.Web/Model/RequestParms/User/UpdateSexParms.cs new file mode 100644 index 0000000..a7c5ce4 --- /dev/null +++ b/Service/Application.Web/Model/RequestParms/User/UpdateSexParms.cs @@ -0,0 +1,6 @@ +namespace Application.Web; + +public class UpdateSexParms +{ + public string sex { get; set; } +} \ No newline at end of file diff --git a/Service/Application.Web/Model/RequestParms/User/UpdateSignParms.cs b/Service/Application.Web/Model/RequestParms/User/UpdateSignParms.cs new file mode 100644 index 0000000..aca7154 --- /dev/null +++ b/Service/Application.Web/Model/RequestParms/User/UpdateSignParms.cs @@ -0,0 +1,6 @@ +namespace Application.Web; + +public class UpdateSignParms +{ + public string sign { get; set; } +} \ No newline at end of file diff --git a/Service/Application.Web/Properties/launchSettings.json b/Service/Application.Web/Properties/launchSettings.json index 49188e6..2ab4651 100644 --- a/Service/Application.Web/Properties/launchSettings.json +++ b/Service/Application.Web/Properties/launchSettings.json @@ -5,7 +5,7 @@ "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": false, - "applicationUrl": "http://localhost:5031", + "applicationUrl": "http://localhost:5031;http://192.168.0.110:5032", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/Web/nuxt.config.ts b/Web/nuxt.config.ts index d35e6a9..e07a871 100644 --- a/Web/nuxt.config.ts +++ b/Web/nuxt.config.ts @@ -1,5 +1,6 @@ // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ + ssr: false, srcDir: 'src/', components: { dirs: [ @@ -23,7 +24,7 @@ export default defineNuxtConfig({ // 自动导入配置 - 使用完整路径 imports: { - dirs: ['stores', 'composables', 'extends','utility‌', 'services/**', 'model/**'], + dirs: ['stores', 'composables', 'extends', 'utility‌', 'services/**', 'model/**'], }, pinia: { @@ -55,10 +56,10 @@ export default defineNuxtConfig({ type: 'image/x-icon' } ] - }, + }, }, - css: ['~/assets/css/style.css','~/assets/css/home.css'], + css: ['~/assets/css/style.css', '~/assets/css/home.css'], compatibilityDate: '2024-04-03', }) diff --git a/Web/src/components/Base/Aimage.vue b/Web/src/components/Base/Aimage.vue new file mode 100644 index 0000000..087fa08 --- /dev/null +++ b/Web/src/components/Base/Aimage.vue @@ -0,0 +1,13 @@ + + \ No newline at end of file diff --git a/Web/src/components/Business/GameChat.vue b/Web/src/components/Business/GameChat.vue index 9607f75..7cb7319 100644 --- a/Web/src/components/Business/GameChat.vue +++ b/Web/src/components/Business/GameChat.vue @@ -9,12 +9,15 @@ : - + ({{ TimeExtend.StrToFormat(item.chat.addTime, "dd日HH:mm") }}) + + [删除] + @@ -24,7 +27,8 @@ const props = defineProps({ data: Array, showTime: Number, page: Number, - limit: Number + limit: Number, + role: Number }) const GetChatType = (type: string) => { @@ -52,4 +56,22 @@ const GetChatType = (type: string) => { } return result; } + +const CheckRole = (type: string): boolean => { + if ((type == 'Public' || type == 'Region') && (props.role ?? 0) > 0) { + return true; + } + else if (type == 'Dress' && (props.role ?? 0) > 1) { + return true; + } + return false +} + +// 1. 声明要触发的事件 +const emit = defineEmits(['delChat']) + +const DelChat = async (chatId: string) => { + emit('delChat', { chatId: chatId }); +} + \ No newline at end of file diff --git a/Web/src/components/Business/GameUser.vue b/Web/src/components/Business/GameUser.vue index 4205d0a..d8b0cc5 100644 --- a/Web/src/components/Business/GameUser.vue +++ b/Web/src/components/Business/GameUser.vue @@ -1,13 +1,17 @@ \ No newline at end of file diff --git a/Web/src/components/Page/MapMenu.vue b/Web/src/components/Page/MapMenu.vue index 8bd3074..3cc6736 100644 --- a/Web/src/components/Page/MapMenu.vue +++ b/Web/src/components/Page/MapMenu.vue @@ -5,9 +5,9 @@ 聊天
- 好友. + 好友. 交易. - 队伍 + 队伍
商城. diff --git a/Web/src/config/BaseConfig.ts b/Web/src/config/BaseConfig.ts index e51ac56..fdde357 100644 --- a/Web/src/config/BaseConfig.ts +++ b/Web/src/config/BaseConfig.ts @@ -2,5 +2,7 @@ 统一配置中心 */ export class BaseConfig { -public static BaseUrl:string="https://localhost:7198"; +//public static BaseUrl:string="https://localhost:7198"; +public static BaseUrl:string="http://192.168.0.110:5032"; +public static BaseMediaUrl:string="https://localhost:7198"; } \ No newline at end of file diff --git a/Web/src/pages/home/index.vue b/Web/src/pages/bag/give.vue similarity index 100% rename from Web/src/pages/home/index.vue rename to Web/src/pages/bag/give.vue diff --git a/Web/src/pages/chat/index.vue b/Web/src/pages/chat/index.vue index 978e097..6801f0d 100644 --- a/Web/src/pages/chat/index.vue +++ b/Web/src/pages/chat/index.vue @@ -9,28 +9,34 @@ 帮派. 全区. 全服. - 系统 + 系统
- + 暂无发言.
- 请输入聊天信息:
-
- {{ goodsName }}:{{ goodsCount }} (每次发言需要1个哦) +
+ *发言权限已封禁!
-
- -
-
- . - 刷新 +
+ 请输入聊天信息:
+
+ {{ goodsName }}:{{ goodsCount }} (每次发言需要1个哦) +
+
+ +
+
+ . + 刷新 +
+
*公聊频道发言规范
@@ -51,6 +57,7 @@ const data = ref>([]); const goodsCount = ref(0); const goodsName = ref(''); const sign = ref(''); +const chatRole = ref(0); onMounted(async () => { try { @@ -68,6 +75,7 @@ const BindData = async (): Promise => { goodsCount.value = result.data.sendGoodsCount goodsName.value = result.data.sendGoodsName total.value = result.data.total; + chatRole.value = result.data.chatRole; } else { MessageExtend.ShowDialog("提示", result.msg); @@ -121,4 +129,22 @@ const ChangeChat = async (typeid: string): Promise => { await BindData(); }; +//删除记录 +const DelChat = async (data: any) => { + MessageExtend.ShowConfirmDialogAsyc("频道管理", `您确定要删除该发言吗?`, async () => { + MessageExtend.LoadingToast("删除中..."); + let result = await ChatService.DeleteChat(data.chatId); + MessageExtend.LoadingClose(); + if (result.code == 0) { + await BindData(); + MessageExtend.Notify("删除成功!", "success"); + } + else { + MessageExtend.ShowDialog("删除操作", result.msg); + } + + return true; + }); +} + \ No newline at end of file diff --git a/Web/src/pages/group/index.vue b/Web/src/pages/group/index.vue new file mode 100644 index 0000000..a64f41c --- /dev/null +++ b/Web/src/pages/group/index.vue @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/Web/src/pages/login/register.vue b/Web/src/pages/login/register.vue index a90d11e..b511487 100644 --- a/Web/src/pages/login/register.vue +++ b/Web/src/pages/login/register.vue @@ -14,6 +14,9 @@
+
+ 激活码: +
. 返回首页 @@ -29,6 +32,9 @@ definePageMeta({ const nick = ref(''); const sex = ref(0); +const code = ref(''); +const isNeedCode = ref(false); +const data = ref({}); const SubRegInfo = async (): Promise => { if (nick.value == null || nick.value == '') { @@ -36,9 +42,9 @@ const SubRegInfo = async (): Promise => { return; } MessageExtend.LoadingToast("注册中..."); - let result = await LoginService.RegisterInfo(nick.value, sex.value); + let result = await LoginService.RegisterInfo(nick.value, sex.value, code.value); MessageExtend.LoadingClose(); - if (result.code == 0) { + if (result.code == 0) { PageExtend.Redirect("/map"); } else { @@ -49,10 +55,24 @@ const SubRegInfo = async (): Promise => { onMounted(async () => { try { - + await BindData(); } finally { PageLoading.Close(); } }) + +const BindData = async () => { + let result = await PubService.GetOnAreaInfo(); + if (result.code == 0) { + data.value = result.data; + isNeedCode.value = result.data.isNeedCode == 1; + } + else { + MessageExtend.ShowDialogEvent("提示", result.msg, () => { + PageExtend.RedirectTo('/'); + }); + } + +} \ No newline at end of file diff --git a/Web/src/pages/map/index.vue b/Web/src/pages/map/index.vue index 0dcc58e..5f7b1c6 100644 --- a/Web/src/pages/map/index.vue +++ b/Web/src/pages/map/index.vue @@ -20,7 +20,7 @@
- {{ item.npcName }}{{ item.tips }} + {{ item.npcName }}{{ item.tips }}
diff --git a/Web/src/pages/npc/index.vue b/Web/src/pages/map/npc/index.vue similarity index 100% rename from Web/src/pages/npc/index.vue rename to Web/src/pages/map/npc/index.vue diff --git a/Web/src/pages/map/user.vue b/Web/src/pages/map/user.vue index 25b163d..f7ca3d5 100644 --- a/Web/src/pages/map/user.vue +++ b/Web/src/pages/map/user.vue @@ -4,7 +4,7 @@
- {{ index + 1 }}. + {{ index + 1 }}.
暂无玩家.
@@ -22,6 +22,7 @@ definePageMeta({ const currentPage = ref(1); const total = ref(0); const data = ref>([]); +const mapInfo = ref({}); onMounted(async () => { try { @@ -37,6 +38,7 @@ const BindData = async (): Promise => { if (result.code == 0) { data.value = result.data.data; total.value = result.data.total; + mapInfo.value = result.data.map; } else { MessageExtend.ShowDialog("提示", result.msg); diff --git a/Web/src/pages/privilege/index.vue b/Web/src/pages/privilege/index.vue new file mode 100644 index 0000000..c99d0a9 --- /dev/null +++ b/Web/src/pages/privilege/index.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Web/src/pages/privilege/liang/index.vue b/Web/src/pages/privilege/liang/index.vue new file mode 100644 index 0000000..1b9e1b5 --- /dev/null +++ b/Web/src/pages/privilege/liang/index.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Web/src/pages/team/index.vue b/Web/src/pages/trade/my.vue similarity index 100% rename from Web/src/pages/team/index.vue rename to Web/src/pages/trade/my.vue diff --git a/Web/src/pages/trade/user.vue b/Web/src/pages/trade/user.vue new file mode 100644 index 0000000..41a40c8 --- /dev/null +++ b/Web/src/pages/trade/user.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Web/src/pages/user/attr.vue b/Web/src/pages/user/attr.vue new file mode 100644 index 0000000..41a40c8 --- /dev/null +++ b/Web/src/pages/user/attr.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Web/src/pages/user/badge/index.vue b/Web/src/pages/user/badge/index.vue new file mode 100644 index 0000000..c93c264 --- /dev/null +++ b/Web/src/pages/user/badge/index.vue @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/Web/src/pages/user/equ/index.vue b/Web/src/pages/user/equ/index.vue new file mode 100644 index 0000000..41a40c8 --- /dev/null +++ b/Web/src/pages/user/equ/index.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Web/src/pages/friend/index.vue b/Web/src/pages/user/friend/index.vue similarity index 77% rename from Web/src/pages/friend/index.vue rename to Web/src/pages/user/friend/index.vue index a872455..4981a21 100644 --- a/Web/src/pages/friend/index.vue +++ b/Web/src/pages/user/friend/index.vue @@ -30,6 +30,15 @@ 暂无师徒.
+
+ {{ PageExtend.GetPageIndex(currentPage, 10, index + 1) }}. + {{ item.isOnline == 1 ? "[在线]" : "[离线]" }} + + + ({{ item.user.lev }}级,{{ item.cityName }}{{ item.mapName }}) + [×] + +
暂无仇人.
@@ -37,7 +46,7 @@
- ➢添加好友 + ➢添加好友
\ No newline at end of file diff --git a/Web/src/pages/friend/search.vue b/Web/src/pages/user/friend/search.vue similarity index 100% rename from Web/src/pages/friend/search.vue rename to Web/src/pages/user/friend/search.vue diff --git a/Web/src/pages/user/gift/give.vue b/Web/src/pages/user/gift/give.vue new file mode 100644 index 0000000..41a40c8 --- /dev/null +++ b/Web/src/pages/user/gift/give.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Web/src/pages/user/gift/index.vue b/Web/src/pages/user/gift/index.vue new file mode 100644 index 0000000..c93c264 --- /dev/null +++ b/Web/src/pages/user/gift/index.vue @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/Web/src/pages/user/home/index.vue b/Web/src/pages/user/home/index.vue new file mode 100644 index 0000000..41a40c8 --- /dev/null +++ b/Web/src/pages/user/home/index.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Web/src/pages/user/home/study/index.vue b/Web/src/pages/user/home/study/index.vue new file mode 100644 index 0000000..41a40c8 --- /dev/null +++ b/Web/src/pages/user/home/study/index.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Web/src/pages/user/honnor/index.vue b/Web/src/pages/user/honnor/index.vue new file mode 100644 index 0000000..8f6b8f3 --- /dev/null +++ b/Web/src/pages/user/honnor/index.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Web/src/pages/user/index.vue b/Web/src/pages/user/index.vue index 1192255..c47d08c 100644 --- a/Web/src/pages/user/index.vue +++ b/Web/src/pages/user/index.vue @@ -1,17 +1,17 @@ diff --git a/Web/src/pages/user/interact/dou.vue b/Web/src/pages/user/interact/dou.vue new file mode 100644 index 0000000..41a40c8 --- /dev/null +++ b/Web/src/pages/user/interact/dou.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Web/src/pages/user/master/add.vue b/Web/src/pages/user/master/add.vue new file mode 100644 index 0000000..41a40c8 --- /dev/null +++ b/Web/src/pages/user/master/add.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Web/src/pages/user/maxname/index.vue b/Web/src/pages/user/maxname/index.vue new file mode 100644 index 0000000..c99d0a9 --- /dev/null +++ b/Web/src/pages/user/maxname/index.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Web/src/pages/user/nick.vue b/Web/src/pages/user/nick.vue new file mode 100644 index 0000000..9eb054f --- /dev/null +++ b/Web/src/pages/user/nick.vue @@ -0,0 +1,63 @@ + + \ No newline at end of file diff --git a/Web/src/pages/user/setting/index.vue b/Web/src/pages/user/setting/index.vue new file mode 100644 index 0000000..41a40c8 --- /dev/null +++ b/Web/src/pages/user/setting/index.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Web/src/pages/user/sex.vue b/Web/src/pages/user/sex.vue new file mode 100644 index 0000000..e047db2 --- /dev/null +++ b/Web/src/pages/user/sex.vue @@ -0,0 +1,66 @@ + + \ No newline at end of file diff --git a/Web/src/pages/user/ship/index.vue b/Web/src/pages/user/ship/index.vue new file mode 100644 index 0000000..41a40c8 --- /dev/null +++ b/Web/src/pages/user/ship/index.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Web/src/pages/user/sign.vue b/Web/src/pages/user/sign.vue new file mode 100644 index 0000000..d177052 --- /dev/null +++ b/Web/src/pages/user/sign.vue @@ -0,0 +1,62 @@ + + \ No newline at end of file diff --git a/Web/src/pages/user/skill/index.vue b/Web/src/pages/user/skill/index.vue new file mode 100644 index 0000000..41a40c8 --- /dev/null +++ b/Web/src/pages/user/skill/index.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Web/src/pages/user/team/index.vue b/Web/src/pages/user/team/index.vue new file mode 100644 index 0000000..41a40c8 --- /dev/null +++ b/Web/src/pages/user/team/index.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Web/src/pages/user/user.vue b/Web/src/pages/user/user.vue index 57c62f4..3aa079a 100644 --- a/Web/src/pages/user/user.vue +++ b/Web/src/pages/user/user.vue @@ -1,8 +1,11 @@