1
- using Application . User . ViewModel ;
1
+ using Amazon . Runtime . Internal ;
2
+ using Application . User . RequestModel ;
3
+ using Infrastructure . Extensions ;
2
4
using MongoDB . Bson ;
5
+ using MongoDB . Driver ;
3
6
using Repository . Domain . User ;
4
7
using Repository . Repositories . User ;
5
8
@@ -28,6 +31,31 @@ public async Task<IEnumerable<UserInfo>> GetAllUserInfos()
28
31
return getAllUserInfos ;
29
32
}
30
33
34
+ /// <summary>
35
+ /// 用户分页数据获取
36
+ /// </summary>
37
+ /// <param name="userInfoByPageListReq">userInfoByPageListReq</param>
38
+ /// <returns></returns>
39
+ public async Task < IEnumerable < UserInfo > > GetUserInfoByPageList ( UserInfoByPageListReq request )
40
+ {
41
+ //创建查询条件构造器
42
+ FilterDefinitionBuilder < UserInfo > buildFilter = Builders < UserInfo > . Filter ;
43
+ FilterDefinition < UserInfo > filter = buildFilter . Empty ;
44
+ SortDefinition < UserInfo > sort = Builders < UserInfo > . Sort . Ascending ( m => m . CreateDate ) ;
45
+ if ( ! string . IsNullOrEmpty ( request . NickName ) )
46
+ {
47
+ filter = buildFilter . Eq ( m => m . NickName , request . NickName ) ;
48
+ }
49
+
50
+ if ( ! string . IsNullOrEmpty ( request . Id ) )
51
+ {
52
+ filter = buildFilter . Eq ( m => m . Id , request . Id ) ;
53
+ }
54
+
55
+ var list = await _userRepository . FindListByPageAsync ( filter , request . PageIndex , request . PageSize , Array . Empty < string > ( ) , sort ) ;
56
+ return list ;
57
+ }
58
+
31
59
/// <summary>
32
60
/// 通过用户ID获取对应用户信息
33
61
/// </summary>
@@ -44,15 +72,15 @@ public async Task<UserInfo> GetUserInfoById(string id)
44
72
/// </summary>
45
73
/// <param name="userInfo">userInfo</param>
46
74
/// <returns></returns>
47
- public async Task < UserInfo > AddUserInfo ( UserInfoViewModel userInfo )
75
+ public async Task < UserInfo > AddUserInfo ( UserInfoReq userInfo )
48
76
{
49
77
var addUserInfo = new UserInfo ( )
50
78
{
51
79
Id = ObjectId . GenerateNewId ( ) . ToString ( ) ,
52
80
UserName = userInfo . UserName ,
53
81
Email = userInfo . Email ,
54
82
NickName = userInfo . NickName ,
55
- Password = userInfo . Password ,
83
+ Password = MD5Helper . MDString ( userInfo . Password ) ,
56
84
Status = 1 ,
57
85
HeadPortrait = userInfo . HeadPortrait ,
58
86
CreateDate = DateTime . Now ,
@@ -69,20 +97,64 @@ public async Task<UserInfo> AddUserInfo(UserInfoViewModel userInfo)
69
97
/// <param name="id">id</param>
70
98
/// <param name="userInfo">userInfo</param>
71
99
/// <returns></returns>
72
- public async Task < UserInfo > UpdateUserInfo ( string id , UserInfoViewModel userInfo )
100
+ public async Task < UserInfo > UpdateUserInfo ( string id , UserInfoReq userInfo )
73
101
{
74
- var updateUserInfo = new UserInfo ( )
102
+ #region 指定字段和条件修改
103
+
104
+ //修改条件
105
+ var list = new List < FilterDefinition < UserInfo > >
75
106
{
76
- UserName = userInfo . UserName ,
77
- Email = userInfo . Email ,
78
- NickName = userInfo . NickName ,
79
- Password = userInfo . Password ,
80
- Status = 1 ,
81
- HeadPortrait = userInfo . HeadPortrait ,
82
- CreateDate = DateTime . Now ,
83
- UpdateDate = DateTime . Now ,
107
+ Builders < UserInfo > . Filter . Eq ( "_id" , new ObjectId ( id ) )
84
108
} ;
85
- await _userRepository . UpdateAsync ( updateUserInfo , id ) ;
109
+ var filter = Builders < UserInfo > . Filter . And ( list ) ;
110
+
111
+ //指定要修改的字段内容
112
+ //参考文章:https://chsakell.gitbook.io/mongodb-csharp-docs/crud-basics/update-documents
113
+ var updateDefinition = Builders < UserInfo > . Update .
114
+ Set ( u => u . HeadPortrait , userInfo . HeadPortrait ) .
115
+ Set ( u => u . NickName , userInfo . NickName ) .
116
+ Set ( u => u . Status , userInfo . Status ) ;
117
+
118
+ await _userRepository . UpdateAsync ( filter , updateDefinition ) ;
119
+
120
+ #endregion
121
+
122
+ #region 指定对象异步修改一条数据
123
+
124
+ //var updateUserInfo = new UserInfo
125
+ //{
126
+ // UserName = userInfo.UserName,
127
+ // Password = MD5Helper.MDString(userInfo.Password),
128
+ // Status = 1,
129
+ // HeadPortrait = userInfo.HeadPortrait,
130
+ // Email = userInfo.Email,
131
+ // NickName = userInfo.NickName,
132
+ // UpdateDate = DateTime.Now,
133
+ //};
134
+ //await _userRepository.UpdateAsync(updateUserInfo, id);
135
+
136
+ #endregion
137
+
138
+ #region 数据批量修改示例
139
+
140
+ ////1.批量修改的条件(把创建时间CreateDate为近五日的用户状态更改为0)
141
+ //var time = DateTime.Now;
142
+ //var list = new List<FilterDefinition<UserInfo>>();
143
+ //list.Add(Builders<UserInfo>.Filter.Gt("CreateDate", time));//大于当前时间
144
+ //list.Add(Builders<UserInfo>.Filter.Lt("CreateDate", time.AddDays(5)));//小于当前时间+5day
145
+ //var filter = Builders<UserInfo>.Filter.And(list);
146
+
147
+ ////2.要修改的字段内容
148
+ //var dic = new Dictionary<string, string>
149
+ //{
150
+ // { "Status", "0" }
151
+ //};
152
+
153
+ ////3.批量修改
154
+ //await _userRepository.UpdateManayAsync(dic, filter);
155
+
156
+ #endregion
157
+
86
158
return await _userRepository . GetByIdAsync ( id ) ;
87
159
}
88
160
0 commit comments