using System.Linq;
using System.Threading.Tasks;
using System.Collections.Generic;
using WaterCloud.Code;
using WaterCloud.Domain.SystemOrganize;
using Chloe;
using WaterCloud.DataBase;
namespace WaterCloud.Service.SystemOrganize
{
///
/// 创 建:超级管理员
/// 日 期:2020-06-12 13:50
/// 描 述:系统设置服务类
///
public class SystemSetService : DataFilterService, IDenpendency
{
private IDbContext _context;
private string cacheKey = "watercloud_systemsetdata_";
private string cacheKeyOperator = "watercloud_operator_";// +登录者token
private string cacheKeyUser = "watercloud_userdata_";
public SystemSetService(IDbContext context) : base(context)
{
_context = context;
}
#region 获取数据
public async Task> GetList(string keyword = "")
{
var cachedata = await repository.CheckCacheList(cacheKey + "list");
if (!string.IsNullOrEmpty(keyword))
{
//此处需修改
cachedata = cachedata.Where(t => t.F_CompanyName.Contains(keyword) || t.F_ProjectName.Contains(keyword)).ToList();
}
return cachedata.Where(t => t.F_DeleteMark == false).OrderByDescending(t => t.F_CreatorTime).ToList();
}
public async Task> GetLookList(string keyword = "")
{
var query = repository.IQueryable().Where(u => u.F_DeleteMark == false);
if (!string.IsNullOrEmpty(keyword))
{
//此处需修改
query = query.Where(u => u.F_CompanyName.Contains(keyword) || u.F_ProjectName.Contains(keyword));
}
query = GetDataPrivilege("u", "", query);
return query.OrderByDesc(t => t.F_CreatorTime).ToList();
}
public async Task GetFormByHost(string host)
{
var cachedata = await repository.CheckCacheList(cacheKey + "list");
if (!string.IsNullOrEmpty(host))
{
//此处需修改
cachedata = cachedata.Where(t => t.F_HostUrl.Contains(host)).ToList();
}
else
{
cachedata = cachedata.ToList();
}
if (cachedata.Count == 0)
{
cachedata = await repository.CheckCacheList(cacheKey + "list");
cachedata = cachedata.Where(t => t.F_Id == GlobalContext.SystemConfig.SysemMasterProject).ToList();
}
return cachedata.Where(t => t.F_DeleteMark == false).FirstOrDefault();
}
public async Task> GetLookList(Pagination pagination, string keyword = "")
{
var query = repository.IQueryable().Where(u => u.F_DeleteMark == false);
if (!string.IsNullOrEmpty(keyword))
{
//此处需修改
query = query.Where(u => u.F_CompanyName.Contains(keyword) || u.F_ProjectName.Contains(keyword));
}
query = GetDataPrivilege("u", "", query);
return await repository.OrderList(query, pagination);
}
public async Task GetForm(string keyValue)
{
var cachedata = await repository.CheckCache(cacheKey, keyValue);
return cachedata;
}
#endregion
public async Task GetLookForm(string keyValue)
{
var cachedata = await repository.CheckCache(cacheKey, keyValue);
return GetFieldsFilterData(cachedata);
}
#region 提交数据
public async Task SubmitForm(SystemSetEntity entity, string keyValue)
{
IRepositoryBase ibs = new RepositoryBase(_context);
if (!string.IsNullOrEmpty(keyValue))
{
//此处需修改
entity.Modify(keyValue);
if (currentuser.UserId != GlobalContext.SystemConfig.SysemUserId || currentuser.UserId == null)
{
var setentity = await repository.FindEntity(entity.F_Id);
uniwork.BeginTrans();
var user = uniwork.IQueryable(a => a.F_OrganizeId == entity.F_Id && a.F_IsAdmin == true).FirstOrDefault();
var userinfo = uniwork.IQueryable(a => a.F_UserId == user.F_Id).FirstOrDefault();
userinfo.F_UserSecretkey = Md5.md5(Utils.CreateNo(), 16).ToLower();
userinfo.F_UserPassword = Md5.md5(DESEncrypt.Encrypt(Md5.md5(entity.F_AdminPassword, 32).ToLower(), userinfo.F_UserSecretkey).ToLower(), 32).ToLower();
await uniwork.Update(a => a.F_Id == user.F_Id, a => new UserEntity
{
F_Account = entity.F_AdminAccount
});
await CacheHelper.Remove(cacheKeyUser + user.F_Id);
await uniwork.Update(a => a.F_Id == userinfo.F_Id, a => new UserLogOnEntity
{
F_UserPassword = userinfo.F_UserPassword,
F_UserSecretkey = userinfo.F_UserSecretkey
});
await uniwork.Update(entity);
uniwork.Commit();
await CacheHelper.Remove(cacheKeyOperator + "info_" + user.F_Id);
}
else
{
entity.F_AdminAccount = null;
entity.F_AdminPassword = null;
}
await ibs.Update(entity);
await CacheHelper.Remove(cacheKey + keyValue);
await CacheHelper.Remove(cacheKey + "list");
}
}
public async Task DeleteForm(string keyValue)
{
await repository.Delete(t => t.F_Id == keyValue);
await CacheHelper.Remove(cacheKey + keyValue);
await CacheHelper.Remove(cacheKey + "list");
}
#endregion
}
}