lihao před 4 roky
rodič
revize
c732e8ba68

+ 2 - 0
gx_api/GxPress/Model/GxPress.Entity/Notice.cs

@@ -95,5 +95,7 @@ namespace GxPress.Entity
         /// <value></value>
         [DataColumn]
         public bool IsRecall { get; set; }
+
+        
     }
 }

+ 6 - 0
gx_api/GxPress/Model/GxPress.Entity/User.cs

@@ -250,5 +250,11 @@ namespace GxPress.Entity
         /// <value></value>
         [DataColumn]
         public string HistoryAvatarUrl { get; set; }
+        /// <summary>
+        /// 是否删除
+        /// </summary>
+        /// <value></value>
+        [DataColumn]
+        public bool IsDelete { get; set; }
     }
 }

+ 1 - 1
gx_api/GxPress/Model/GxPress.Request/Notice/NoticeInRequest.cs

@@ -5,7 +5,7 @@ using GxPress.EnumConst;
 namespace GxPress.Request.Notice
 {
     /// <summary>
-    /// 添加通知
+    /// 添加收件箱
     /// </summary>
     public class NoticeInRequest
     {

+ 10 - 2
gx_api/GxPress/Repository/GxPress.Repository.Implement/NoticeRepository.cs

@@ -573,7 +573,12 @@ namespace GxPress.Repository.Implement
             foreach (var item in items)
             {
                 if (item.AttributeValue == 3)
-                    item.UReadCount = await _adminVerifyRepository.CountAsync(Q.Where(nameof(Entity.AdminVerify.AdminId), request.UserId).Where(nameof(Entity.AdminVerify.DisposeType), AdminVerifyTypeConst.UDispose.GetHashCode()));
+                {
+                    var query = Q.NewQuery();
+                    query.Where(nameof(Entity.AdminVerify.AdminId), request.UserId);
+                    query.Where(nameof(Entity.AdminVerify.DisposeType), AdminVerifyTypeConst.UDispose.GetHashCode());
+                    item.UReadCount = await _adminVerifyRepository.CountAsync(query);
+                }
             }
             PagedList<NoticeListPageResult> result = new PagedList<NoticeListPageResult>
             {
@@ -608,7 +613,10 @@ namespace GxPress.Repository.Implement
         /// <returns></returns>
         public async Task<List<JobNoticeResult>> ElasticSearchNotice()
         {
-            var sql = "select a.Id,a.UserId,a.GuId,a.CreatedDate,b.Id,b.Title,b.Content,b.CreatedDate,c.Name,c.AvatarUrl from tede_middle a inner join tede_notice b on a.MiddleId=b.Id inner join tede_user c on c.Id=b.UserId where a.FolderType=1  and a.IsUpload=0 order by a.CreatedDate desc limit 0,100";
+            var sql = @"select a.Id,a.UserId,a.GuId,a.CreatedDate,b.Id,b.Title,b.Content,b.CreatedDate,c.Name,c.AvatarUrl from tede_middle a 
+                       inner join tede_notice b on a.MiddleId=b.Id 
+                       inner join tede_user c on c.Id=b.UserId 
+                       where a.FolderType=1  and a.IsUpload=0 order by a.CreatedDate desc limit 0,100";
             var databaseType = StringUtils.ToEnum<DatabaseType>(_databaseTypeStr, DatabaseType.MySql);
             var database = new Database(databaseType, _connectionString);
             var connection = database.GetConnection();

+ 36 - 31
gx_api/GxPress/Repository/GxPress.Repository.Implement/UserRepository.cs

@@ -73,7 +73,7 @@ namespace GxPress.Repository.Implement
         /// <returns></returns>
         public async Task<IEnumerable<User>> UserListInsAsync(List<int> ids)
         {
-            return await _repository.GetAllAsync(Q.WhereIn(nameof(User.Id), ids));
+            return await _repository.GetAllAsync(Q.WhereIn(nameof(User.Id), ids).Where(nameof(User.IsDelete), false));
         }
 
         /// <summary>
@@ -83,14 +83,14 @@ namespace GxPress.Repository.Implement
         /// <returns></returns>
         public async Task<IEnumerable<UserInfoResult>> UserByNameAsync(string name)
         {
-            var result = await _repository.GetAllAsync(Q.WhereLike(nameof(User.Name), $"%{name}%"));
+            var result = await _repository.GetAllAsync(Q.WhereLike(nameof(User.Name), $"%{name}%").Where(nameof(User.IsDelete), false));
             foreach (var item in result)
                 item.AvatarUrl = StringUtils.AddDomainMin(item.AvatarUrl);
             return result.Select(n => _mapper.Map<UserInfoResult>(n));
         }
         public async Task<UserDetail> GetDetailAsync(int id)
         {
-            var user = await _repository.GetAsync(id);
+            var user = await GetAsync(id);
             user.QRCoder = StringUtils.AddDomain(user.QRCoder);
             user.AvatarUrl = StringUtils.AddDomainMin(user.AvatarUrl);
             if (!string.IsNullOrEmpty(user.HistoryAvatarUrl))
@@ -106,21 +106,21 @@ namespace GxPress.Repository.Implement
 
         public async Task<int> GetUserCount(string beginTime, string endTime)
         {
-            return await _repository.CountAsync(Q.WhereDate(nameof(User.CreatedDate), ">=", beginTime).WhereDate(nameof(User.CreatedDate), "<=", endTime));
+            return await _repository.CountAsync(Q.WhereDate(nameof(User.CreatedDate), ">=", beginTime).WhereDate(nameof(User.CreatedDate), "<=", endTime).Where(nameof(User.IsDelete), false));
         }
         public async Task<User> GetAsync(int id)
         {
-            var user = await _repository.GetAsync(id);
+            var user = await _repository.GetAsync(Q.Where(nameof(User.Id), id).Where(nameof(User.IsDelete), false));
             return user;
         }
         public async Task<UserInfoResult> GetUserInfoAsync(int id)
         {
-            var user = await _repository.GetAsync<UserInfoResult>(Q.Where(nameof(User.Id), id));
+            var user = await _repository.GetAsync<UserInfoResult>(Q.Where(nameof(User.Id), id).Where(nameof(User.IsDelete), false));
             return user;
         }
         public async Task<User> GetAsync(SqlKata.Query query)
         {
-            var user = await _repository.GetAsync(query);
+            var user = await _repository.GetAsync(query.Where(nameof(User.IsDelete), false));
             return user;
         }
         public async Task<string> GetNameAsync(int id)
@@ -129,7 +129,7 @@ namespace GxPress.Repository.Implement
 
             return await _repository.GetAsync<string>(Q
                 .Select(nameof(User.Name))
-                .Where(nameof(User.Id), id)
+                .Where(nameof(User.Id), id).Where(nameof(User.IsDelete), false)
             );
         }
 
@@ -139,7 +139,7 @@ namespace GxPress.Repository.Implement
 
             var avatarUrl = await _repository.GetAsync<string>(Q
                 .Select(nameof(User.AvatarUrl))
-                .Where(nameof(User.Id), id)
+                .Where(nameof(User.Id), id).Where(nameof(User.IsDelete), false)
             );
             return StringUtils.AddDomainMin(avatarUrl);
         }
@@ -153,7 +153,7 @@ namespace GxPress.Repository.Implement
 
         public async Task<User> GetByPhoneAsync(string phone)
         {
-            return await _repository.GetAsync(Q.Where(nameof(User.Phone), phone));
+            return await _repository.GetAsync(Q.Where(nameof(User.Phone), phone).Where(nameof(User.IsDelete), false));
         }
         /// <summary>
         /// openId微信认证
@@ -162,7 +162,7 @@ namespace GxPress.Repository.Implement
         /// /// <returns></returns> 
         public async Task<User> GetByOpenIdAsync(string openId)
         {
-            return await _repository.GetAsync(Q.Where(nameof(User.OpenId), openId));
+            return await _repository.GetAsync(Q.Where(nameof(User.OpenId), openId).Where(nameof(User.IsDelete), false));
         }
         /// <summary>
         /// 绑定微信
@@ -185,7 +185,7 @@ namespace GxPress.Repository.Implement
         }
         public async Task<bool> DeleteUsersAsync(IEnumerable<int> userIds)
         {
-            return await _repository.DeleteAsync(Q.WhereIn(nameof(User.Id), userIds)) > 0;
+            return await _repository.UpdateAsync(Q.WhereIn(nameof(User.Id), userIds).Set(nameof(User.IsDelete), true)) > 0;
         }
 
         public async Task<bool> ChangeRoleAsync(IEnumerable<int> userIds, int roleId)
@@ -235,7 +235,7 @@ namespace GxPress.Repository.Implement
                 );
             }
 
-            return await _repository.CountAsync(query);
+            return await _repository.CountAsync(query.Where(nameof(User.IsDelete), false));
         }
 
         /// <summary>
@@ -271,7 +271,7 @@ namespace GxPress.Repository.Implement
                 );
             }
 
-            return await _repository.GetAllAsync(query);
+            return await _repository.GetAllAsync(query.Where(nameof(User.IsDelete), false));
         }
 
         public async Task<IEnumerable<User>> GetListAsync(int departmentId, int roleId, string keyword)
@@ -296,7 +296,7 @@ namespace GxPress.Repository.Implement
                 );
             }
 
-            return await _repository.GetAllAsync(query);
+            return await _repository.GetAllAsync(query.Where(nameof(User.IsDelete), false));
         }
 
         /// <summary>
@@ -381,7 +381,7 @@ namespace GxPress.Repository.Implement
         /// <returns></returns>
         public async Task<bool> DeleteAsync(List<int> ids)
         {
-            return await _repository.DeleteAsync(Q.WhereIn(nameof(User.Id), ids)) > 0;
+            return await _repository.UpdateAsync(Q.WhereIn(nameof(User.Id), ids).Set(nameof(User.IsDelete), true)) > 0;
         }
         /// <summary>
         /// 更新用户信息
@@ -667,7 +667,7 @@ namespace GxPress.Repository.Implement
         public async Task<IEnumerable<User>> GetUserByDepartmentIdAsync(int departmentId)
         {
             var userIds = await departmentUserRepository.GetUserIdsByDepartmentIdsAsync(new List<int>() { departmentId });
-            return await _repository.GetAllAsync(Q.WhereIn(nameof(User.Id), userIds));
+            return await _repository.GetAllAsync(Q.WhereIn(nameof(User.Id), userIds).Where(nameof(User.IsDelete), false));
         }
 
         public async Task<IEnumerable<int>> GetUserIdListByDepartmentIdAsync(int departmentId)
@@ -682,7 +682,7 @@ namespace GxPress.Repository.Implement
         {
             return await _repository.GetAllAsync<int>(Q
                 .Select(nameof(User.Id))
-                .Where(nameof(User.RoleId), roleId)
+                .Where(nameof(User.RoleId), roleId).Where(nameof(User.IsDelete), false)
             );
         }
 
@@ -749,9 +749,11 @@ namespace GxPress.Repository.Implement
                     notInUserIds += ")";
                 }
             }
-            var sql = $"select * from tede_user  where  (Name like '%{request.Key}%' or Phone like '%{request.Key}%' or Email like '%{request.Key}%') {notInUserIds}";
+            var sql = $"select * from tede_user  where 1=1 and IsDelete=0  (Name like '%{request.Key}%' or Phone like '%{request.Key}%' or Email like '%{request.Key}%') {notInUserIds}";
             if (request.SearchType == 2 && !string.IsNullOrWhiteSpace(request.Key) && request.DepartmentId > 0)
-                sql = $"select a.* from tede_user a inner join tede_address_book_group_user c on a.Id=c.UserId where c.AddressBookGroupId={request.DepartmentId} and (a.Name like '%{request.Key}%' or a.Phone like '%{request.Key}%' or a.Email like '%{request.Key}%') {notInUserIds}";
+                sql = $@"select a.* from tede_user a inner join tede_address_book_group_user c on a.Id=c.UserId 
+                where 1=1 and a.IsDelete=0 and c.AddressBookGroupId={request.DepartmentId} 
+                and (a.Name like '%{request.Key}%' or a.Phone like '%{request.Key}%' or a.Email like '%{request.Key}%') {notInUserIds}";
             if (request.SearchType == 1 && !string.IsNullOrWhiteSpace(request.Key) && request.DepartmentId > 0)
             {
                 //递归获取部门Id
@@ -761,7 +763,7 @@ namespace GxPress.Repository.Implement
                     departmentValue += $"{item.Id},";
                 departmentValue = departmentValue.Remove(departmentValue.Length - 1, 1);
                 departmentValue += ")";
-                sql = $"select * from tede_user where DepartmentId in {departmentValue} and (Name like '%{request.Key}%' or Phone like '%{request.Key}%' or Email like '%{request.Key}%') {notInUserIds}";
+                sql = $"select * from tede_user where 1=1 and IsDelete=0 and DepartmentId in {departmentValue} and (Name like '%{request.Key}%' or Phone like '%{request.Key}%' or Email like '%{request.Key}%') {notInUserIds}";
             }
             var databaseType = StringUtils.ToEnum<DatabaseType>(_databaseTypeStr, DatabaseType.MySql);
             var database = new Database(databaseType, _connectionString);
@@ -816,7 +818,7 @@ namespace GxPress.Repository.Implement
         /// <returns></returns>
         public async Task<IEnumerable<User>> FindAllUserAsync(SqlKata.Query query)
         {
-            return await _repository.GetAllAsync(query);
+            return await _repository.GetAllAsync(query.Where(nameof(User.IsDelete), false));
         }
 
         /// <summary>
@@ -834,17 +836,17 @@ namespace GxPress.Repository.Implement
 
         public async Task<int> CountAsync(Query query)
         {
-            return await _repository.CountAsync(query);
+            return await _repository.CountAsync(query.Where(nameof(User.IsDelete), false));
         }
 
         public async Task<IEnumerable<User>> GetAllAsync(Query query)
         {
-            return await _repository.GetAllAsync(query);
+            return await _repository.GetAllAsync(query.Where(nameof(User.IsDelete), false));
         }
 
         public async Task<IEnumerable<int>> GetAllIntsAsync(Query query)
         {
-            return await _repository.GetAllAsync<int>(query);
+            return await _repository.GetAllAsync<int>(query.Where(nameof(User.IsDelete), false));
         }
 
         public Task<IEnumerable<User>> FindAllUserAsync()
@@ -862,7 +864,9 @@ namespace GxPress.Repository.Implement
             var noticeConstValue = AllTypeConst.Notice.GetHashCode();
             var missiveConstValue = AllTypeConst.Missive.GetHashCode();
             var anonymityConstValue = AllTypeConst.Anonymity.GetHashCode();
-            string sql = $"select count(1) from tede_middle where FolderType={AllTypeConst.Inbox.GetHashCode()} and UserId={userId} and IsDelete=0 and MiddleId in (select SourceId from tede_addressee where UserId={userId} and IsRead=0 and IsDelete=0 and SourceType in({noticeConstValue},{missiveConstValue},{anonymityConstValue}))";
+            string sql = $@"select count(1) from tede_middle where FolderType={AllTypeConst.Inbox.GetHashCode()} 
+            and UserId={userId} and IsDelete=0 and 
+            MiddleId in (select SourceId from tede_addressee where UserId={userId} and IsRead=0 and IsDelete=0 and SourceType in({noticeConstValue},{missiveConstValue},{anonymityConstValue}))";
             var databaseType = StringUtils.ToEnum<DatabaseType>(_databaseTypeStr, DatabaseType.MySql);
             var database = new Database(databaseType, _connectionString);
             var connection = database.GetConnection();
@@ -894,7 +898,7 @@ namespace GxPress.Repository.Implement
                 strSql = strSql.Remove(strSql.Length - 1, 1);
                 strSql += ")";
             }
-            string sql = $" select * from tede_user where Id in( SELECT UserId FROM tede_flow_todo where FlowId={flowId} and Type='{type}' {strSql})";
+            string sql = $" select * from tede_user where 1=1 and IsDelete=0 and Id in( SELECT UserId FROM tede_flow_todo where FlowId={flowId} and Type='{type}' {strSql})";
             var databaseType = StringUtils.ToEnum<DatabaseType>(_databaseTypeStr, DatabaseType.MySql);
             var database = new Database(databaseType, _connectionString);
             var connection = database.GetConnection();
@@ -906,7 +910,7 @@ namespace GxPress.Repository.Implement
 
         public async Task<List<JobUserResult>> ElasticSearchUser()
         {
-            var sql = "select * from tede_user where IsUpload=0 limit 0,100";
+            var sql = "select * from tede_user where IsUpload=0  limit 0,100";
             var databaseType = StringUtils.ToEnum<DatabaseType>(_databaseTypeStr, DatabaseType.MySql);
             var database = new Database(databaseType, _connectionString);
             var connection = database.GetConnection();
@@ -944,6 +948,7 @@ namespace GxPress.Repository.Implement
         {
             var result = new PagedList<UserDetail>();
             var query = Q.NewQuery();
+            query.Where(nameof(User.IsDelete), false);
             if (!string.IsNullOrEmpty(request.KeyWord))
                 query.WhereLike(nameof(User.Name), $"%{request.KeyWord}%");
             if (request.VipPort > 0)
@@ -986,7 +991,7 @@ namespace GxPress.Repository.Implement
             foreach (var item in userIds)
                 sqlStr += $"{item},";
             sqlStr = sqlStr.Remove(sqlStr.Length - 1, 1);
-            var sql = $@"select * from tede_user where id in({sqlStr})";
+            var sql = $@"select * from tede_user where 1=1 and IsDelete=0 and id in({sqlStr})";
             if (!string.IsNullOrEmpty(keyWord))
                 sql += $@" and (Name like '%{keyWord}%' or phone like '%{keyWord}%' or Email like '%{keyWord}%')";
             var databaseType = StringUtils.ToEnum<DatabaseType>(_databaseTypeStr, DatabaseType.MySql);
@@ -1010,7 +1015,7 @@ namespace GxPress.Repository.Implement
             foreach (var item in userIds)
                 sqlStr += $"{item},";
             sqlStr = !string.IsNullOrEmpty(sqlStr) ? sqlStr.Remove(sqlStr.Length - 1, 1) : "";
-            var sql = $@"select * from tede_user where 1=1 ";
+            var sql = $@"select * from tede_user where 1=1 and IsDelete=0 ";
             if (!string.IsNullOrEmpty(sqlStr))
                 sql += $@" and id not in({sqlStr})";
             if (!string.IsNullOrEmpty(keyword))
@@ -1037,7 +1042,7 @@ namespace GxPress.Repository.Implement
             foreach (var item in userIds)
                 sqlStr += $"{item},";
             sqlStr = string.IsNullOrEmpty(sqlStr) ? "" : sqlStr.Remove(sqlStr.Length - 1, 1);
-            var sql = $@"select * from tede_user where 1=1 ";
+            var sql = $@"select * from tede_user where 1=1 and IsDelete=0 ";
             if (!string.IsNullOrEmpty(sqlStr))
                 sql += $@" and id in({sqlStr})";
             if (!string.IsNullOrEmpty(keyword))

+ 8 - 1
gx_api/GxPress/Service/GxPress.Service.Implement/Note/NoteService.cs

@@ -58,7 +58,14 @@ namespace GxPress.Service.Implement.Note
             IMiddleRepository middleRepository, IMapper mapper, IUserRepository userRepository,
             IArticleRepository articleRepository, INoticeRepository noticeRepository,
             IMissiveRepository missiveRepository, ITopicRepository topicRepository, IGroupRepository groupRepository,
-            ICollectionRepository collectionRepository, ICommentRepository commentRepository, IVisitRepository visitRepository, IVisitService visitService, IFolderUserRepository folderUserRepository, IAnalyzeService analyzeService, IUserMiddleService userMiddleService, IRecordFolderRepository recordFolderRepository, IMediaRepository mediaRepository)
+            ICollectionRepository collectionRepository, ICommentRepository commentRepository, 
+            IVisitRepository visitRepository, 
+            IVisitService visitService, 
+            IFolderUserRepository folderUserRepository, 
+            IAnalyzeService analyzeService, 
+            IUserMiddleService userMiddleService, 
+            IRecordFolderRepository recordFolderRepository, 
+            IMediaRepository mediaRepository)
         {
             _middleService = middleService;
             _noteRepository = noteRepository;