development
温天培 1 year ago
parent c17bce3d11
commit 11c423d812

@ -2,6 +2,8 @@
using SqlSugar;
using System.ComponentModel;
using GDZZ.Core.Entity;
using GDZZ.Core;
namespace GDZZ.Application.Entity
{
/// <summary>
@ -23,5 +25,23 @@ namespace GDZZ.Application.Entity
/// 父级
/// </summary>
public long ParentID { get; set; }
/// <summary>
/// 父Ids
/// </summary>
[SugarColumn(ColumnDescription = "父Ids", IsNullable = true)]
public string Pids { get; set; }
/// <summary>
/// 排序
/// </summary>
public int Sort { get; set; }
/// <summary>
/// 状态(字典 0正常 1停用 2删除
/// </summary>
[SugarColumn(ColumnDescription = "状态(字典 0正常 1停用 2删除")]
public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
/// <summary>
/// 唯一编码
/// </summary>
public string Code { get; set; }
}
}

@ -599,6 +599,26 @@
父级
</summary>
</member>
<member name="P:GDZZ.Application.Entity.Position.Pids">
<summary>
父Ids
</summary>
</member>
<member name="P:GDZZ.Application.Entity.Position.Sort">
<summary>
排序
</summary>
</member>
<member name="P:GDZZ.Application.Entity.Position.Status">
<summary>
状态(字典 0正常 1停用 2删除
</summary>
</member>
<member name="P:GDZZ.Application.Entity.Position.Code">
<summary>
唯一编码
</summary>
</member>
<member name="T:GDZZ.Application.Entity.Recommend">
<summary>
推荐表
@ -3345,6 +3365,11 @@
职位管理输入参数
</summary>
</member>
<member name="P:GDZZ.Application.PositionInput.Code">
<summary>
编码
</summary>
</member>
<member name="P:GDZZ.Application.PositionInput.PositionName">
<summary>
职位名称
@ -3360,6 +3385,31 @@
父级
</summary>
</member>
<member name="P:GDZZ.Application.PositionInput.Pids">
<summary>
父Ids
</summary>
</member>
<member name="P:GDZZ.Application.PositionInput.Sort">
<summary>
排序
</summary>
</member>
<member name="P:GDZZ.Application.PositionInput.Status">
<summary>
状态(字典 0正常 1停用 2删除
</summary>
</member>
<member name="P:GDZZ.Application.AddPositionInput.PositionName">
<summary>
职位名称
</summary>
</member>
<member name="P:GDZZ.Application.AddPositionInput.Code">
<summary>
唯一编码
</summary>
</member>
<member name="P:GDZZ.Application.DeletePositionInput.Id">
<summary>
主键Id
@ -3375,6 +3425,36 @@
职位管理输出参数
</summary>
</member>
<member name="P:GDZZ.Application.PositionOutput.PositionName">
<summary>
职位名称
</summary>
</member>
<member name="P:GDZZ.Application.PositionOutput.PositionLevel">
<summary>
职位等级
</summary>
</member>
<member name="P:GDZZ.Application.PositionOutput.ParentID">
<summary>
父级
</summary>
</member>
<member name="P:GDZZ.Application.PositionOutput.Pids">
<summary>
父Ids
</summary>
</member>
<member name="P:GDZZ.Application.PositionOutput.Sort">
<summary>
排序
</summary>
</member>
<member name="P:GDZZ.Application.PositionOutput.Status">
<summary>
状态(字典 0正常 1停用 2删除
</summary>
</member>
<member name="P:GDZZ.Application.PositionOutput.region_id">
<summary>
主键Id
@ -3390,46 +3470,59 @@
职位管理服务
</summary>
</member>
<member name="M:GDZZ.Application.PositionService.Page(GDZZ.Application.PositionInput)">
<member name="M:GDZZ.Application.PositionService.QueryPage(GDZZ.Core.Service.PageOrgInput)">
<summary>
分页查询职位管理
分页查询组织机构
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:GDZZ.Application.PositionService.Add(GDZZ.Application.AddPositionInput)">
<member name="M:GDZZ.Application.PositionService.GetOrgTree(GDZZ.Core.Service.OrgInput)">
<summary>
增加职位管理
获取组织机构树
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:GDZZ.Application.PositionService.Delete(GDZZ.Application.DeletePositionInput)">
<member name="M:GDZZ.Application.PositionService.Delete(GDZZ.Core.Service.DeleteOrgInput)">
<summary>
删除职位管理
删除组织机构
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:GDZZ.Application.PositionService.Update(GDZZ.Application.UpdatePositionInput)">
<member name="M:GDZZ.Application.PositionService.Add(GDZZ.Application.AddPositionInput)">
<summary>
更新职位管理
增加组织机构
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:GDZZ.Application.PositionService.Get(GDZZ.Application.QueryePositionInput)">
<member name="M:GDZZ.Application.PositionService.List(GDZZ.Application.PositionInput)">
<summary>
获取职位管理
获取职位管理列表
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:GDZZ.Application.PositionService.List(GDZZ.Application.PositionInput)">
<member name="M:GDZZ.Application.PositionService.GetChildIdListWithSelfById(System.Int64)">
<summary>
获取职位管理列表
根据节点Id获取所有子节点Id集合包含自己
</summary>
<param name="input"></param>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:GDZZ.Application.PositionService.GetDataScopeList(System.Collections.Generic.List{System.Int64})">
<summary>
(非管理员)获取当前用户数据范围机构Id
</summary>
<param name="dataScopes"></param>
<returns></returns>
</member>
<member name="M:GDZZ.Application.PositionService.FillPids(GDZZ.Application.Entity.Position)">
<summary>
填充父Ids字段
</summary>
<param name="sysOrg"></param>
<returns></returns>
</member>
<member name="T:GDZZ.Application.SysRegionDto">

@ -41,7 +41,7 @@ namespace GDZZ.Application
public async Task<dynamic> Page([FromQuery] AnnexInput input)
{
var entities = await _rep.AsQueryable()
.WhereIF(!string.IsNullOrWhiteSpace(input.FileName), u => u.FileName == input.FileName)
.WhereIF(!string.IsNullOrWhiteSpace(input.FileName), u => u.FileName.Contains(input.FileName))
.WhereIF(!string.IsNullOrWhiteSpace(input.FileSize), u => u.FileSize == input.FileSize)
.WhereIF(!string.IsNullOrWhiteSpace(input.FileUrl), u => u.FileUrl == input.FileUrl)
.ToPagedListAsync(input.PageNo, input.PageSize);

@ -1,4 +1,5 @@
using GDZZ.Core;
using SqlSugar;
using System;
using System.ComponentModel.DataAnnotations;
@ -9,25 +10,57 @@ namespace GDZZ.Application
/// </summary>
public class PositionInput : PageInputBase
{
/// <summary>
/// 编码
/// </summary>
public virtual string Code { get; set; }
/// <summary>
/// 职位名称
/// </summary>
public virtual string PositionName { get; set; }
/// <summary>
/// 职位等级
/// </summary>
public virtual int PositionLevel { get; set; }
public virtual PositionEnum PositionLevel { get; set; }
/// <summary>
/// 父级
/// </summary>
public virtual long ParentID { get; set; }
public long ParentID { get; set; }
/// <summary>
/// 父Ids
/// </summary>
[SugarColumn(ColumnDescription = "父Ids", IsNullable = true)]
public string Pids { get; set; }
/// <summary>
/// 排序
/// </summary>
public int Sort { get; set; }
/// <summary>
/// 状态(字典 0正常 1停用 2删除
/// </summary>
[SugarColumn(ColumnDescription = "状态(字典 0正常 1停用 2删除")]
public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
}
public class AddPositionInput : PositionInput
{
/// <summary>
/// 职位名称
/// </summary>
[Required(ErrorMessage = "机构名称不能为空")]
public override string PositionName { get; set; }
/// <summary>
/// 唯一编码
/// </summary>
public override string Code { get; set; }
}
public class DeletePositionInput

@ -1,4 +1,6 @@
using System;
using GDZZ.Core;
using SqlSugar;
using System;
using System.Collections.Generic;
namespace GDZZ.Application
@ -8,20 +10,53 @@ namespace GDZZ.Application
/// </summary>
public class PositionOutput
{
public string Code { get; set; }
/// <summary>
/// 职位名称
/// </summary>
public string PositionName { get; set; }
/// <summary>
/// 职位等级
/// </summary>
public PositionEnum PositionLevel { get; set; }
/// <summary>
/// 父级
/// </summary>
public long ParentID { get; set; }
/// <summary>
/// 父Ids
/// </summary>
[SugarColumn(ColumnDescription = "父Ids", IsNullable = true)]
public string Pids { get; set; }
/// <summary>
/// 排序
/// </summary>
public int Sort { get; set; }
/// <summary>
/// 状态(字典 0正常 1停用 2删除
/// </summary>
[SugarColumn(ColumnDescription = "状态(字典 0正常 1停用 2删除")]
public CommonStatus Status { get; set; }
/// <summary>
/// 主键Id
/// </summary>
public string region_id { get; set; }
/// <summary>
///
/// </summary>
public long ID { get; set; }
public string Label { get; set; }
public string Value { get; set; }
public List<PositionOutput> Children { get; set; }

@ -3,16 +3,15 @@ using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using GDZZ.Application.Entity;
using System.Collections.Generic;
using GDZZ.Core.Service;
namespace GDZZ.Application
{
public interface IPositionService
{
Task Add(AddPositionInput input);
Task Delete(DeletePositionInput input);
Task<Position> Get([FromQuery] QueryePositionInput input);
Task<List<PositionOutput>> List([FromQuery] PositionInput input);
Task<dynamic> Page([FromQuery] PositionInput input);
Task Update(UpdatePositionInput input);
Task Delete(DeleteOrgInput input);
Task<dynamic> QueryPage([FromQuery] PageOrgInput input);
}
}

@ -9,6 +9,10 @@ using System.Threading.Tasks;
using GDZZ.Application.Entity;
using System.Collections.Generic;
using System;
using GDZZ.Core.Service;
using Furion.FriendlyException;
using GDZZ.Core.Entity;
using Furion;
namespace GDZZ.Application
{
@ -19,73 +23,137 @@ namespace GDZZ.Application
public class PositionService : IPositionService, IDynamicApiController, ITransient
{
private readonly SqlSugarRepository<Position> _rep;
//缓存机制
private readonly ISysCacheService sysCacheService;
public PositionService(SqlSugarRepository<Position> rep,
public PositionService(SqlSugarRepository<Position> rep)
ISysCacheService sysCacheService)
{
_rep = rep;
this._rep = rep;
this.sysCacheService = sysCacheService;
}
/// <summary>
/// 分页查询职位管理
/// 分页查询组织机构
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet("/Position/page")]
public async Task<dynamic> Page([FromQuery] PositionInput input)
public async Task<dynamic> QueryPage([FromQuery] PageOrgInput input)
{
var entities = await _rep.AsQueryable()
.WhereIF(!string.IsNullOrWhiteSpace(input.PositionName), u => u.PositionName == input.PositionName)
var dataScopeList = GetDataScopeList(await DataFilterExtensions.GetDataScopeIdList(FilterType.Org));
var orgs = await this._rep.AsQueryable()
.WhereIF(!string.IsNullOrWhiteSpace(input.Name), u => u.PositionName.Contains(input.Name.Trim()))
.WhereIF(!string.IsNullOrWhiteSpace(input.Id), u => u.Id == long.Parse(input.Id.Trim()))
.WhereIF(!string.IsNullOrWhiteSpace(input.Pid), u => u.Pids.Contains(input.Pid.Trim()) || u.Id == long.Parse(input.Pid.Trim()))
.WhereIF(dataScopeList.Any(), u => dataScopeList.Contains(u.Id)) // 非管理员范围限制
.Where(u => u.Status != CommonStatus.DELETED)
.OrderBy(u => u.Sort)
.Select<PositionOutput>()
.ToPagedListAsync(input.PageNo, input.PageSize);
return entities.XnPagedResult();
return orgs.XnPagedResult();
}
/// <summary>
/// 增加职位管理
/// 获取组织机构树
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("/Position/add")]
public async Task Add(AddPositionInput input)
[HttpGet("/Position/tree")]
public async Task<dynamic> GetOrgTree([FromQuery] OrgInput input)
{
var entity = input.Adapt<Position>();
await _rep.InsertAsync(entity);
var dataScopeList = new List<long>();
//if (!UserManager.IsSuperAdmin && !UserManager.IsTenantAdmin)
//{
// var dataScopes = await DataFilterExtensions.GetDataScopeIdList(FilterType.Org);
// if (dataScopes.Count < 1)
// return dataScopeList;
// dataScopeList = GetDataScopeList(dataScopes);
//}
var orgs = await this._rep.Where(dataScopeList.Any(), u => dataScopeList.Contains(u.Id))
.Where(u => u.Status == (int)CommonStatus.ENABLE).OrderBy(u => u.Sort)
.Select(u => new OrgTreeNode
{
Id = u.Id,
ParentId = u.ParentID,
Title = u.PositionName,
Value = u.Id.ToString(),
Weight = u.Sort
}).ToListAsync();
return new TreeBuildUtil<OrgTreeNode>().DoTreeBuild(orgs);
}
/// <summary>
/// 删除职位管理
/// 删除组织机构
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("/Position/delete")]
public async Task Delete(DeletePositionInput input)
public async Task Delete(DeleteOrgInput input)
{
var entity = await _rep.FirstOrDefaultAsync(u => u.Id == input.Id);
await _rep.DeleteAsync(entity);
var sysOrg = await this._rep.FirstOrDefaultAsync(u => u.Id == long.Parse(input.Id));
// 级联删除子节点
var childIdList = await GetChildIdListWithSelfById(sysOrg.Id);
try
{
_rep.CurrentBeginTran();
// 级联删除该机构及子机构对应的角色-数据范围关联信息
await _rep.Change<SysRoleDataScope>().DeleteAsync(u => childIdList.Contains(u.SysOrgId));
// 级联删除该机构子机构对应的用户-数据范围关联信息
await _rep.Change<SysUserDataScope>().DeleteAsync(u => childIdList.Contains(u.SysOrgId));
await _rep.DeleteAsync(u => childIdList.Contains(u.Id));
_rep.CurrentCommitTran();
}
/// <summary>
/// 更新职位管理
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("/Position/edit")]
public async Task Update(UpdatePositionInput input)
catch (System.Exception)
{
var entity = input.Adapt<Position>();
await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
_rep.CurrentRollbackTran();
throw;
}
await this.sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_DATASCOPE);
await this.sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_USERSDATASCOPE);
}
/// <summary>
/// 获取职位管理
/// 增加组织机构
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet("/Position/detail")]
public async Task<Position> Get([FromQuery] QueryePositionInput input)
[HttpPost("/Position/add")]
public async Task Add (AddPositionInput input)
{
return await _rep.FirstOrDefaultAsync(u => u.Id == input.Id);
var isExist = await this._rep.AnyAsync(u => u.PositionName == input.PositionName || u.Code == input.Code);
if (isExist)
throw Oops.Oh(ErrorCode.D2002);
var sysOrg = input.Adapt<Position>();
await FillPids(sysOrg);
var newOrg = await this._rep.InsertReturnEntityAsync(sysOrg);
//// 当前用户不是超级管理员时,将新增的公司加到用户的数据权限
//if (App.User.FindFirst(ClaimConst.CLAINM_SUPERADMIN)?.Value != ((int)AdminType.SuperAdmin).ToString())
//{
// var userId = App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value;
// await this.sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_DATASCOPE);
// await this.sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_USERSDATASCOPE);
//}
}
/// <summary>
/// 获取职位管理列表
/// </summary>
@ -109,5 +177,70 @@ namespace GDZZ.Application
}
return JobList;
}
#region 私有方法
/// <summary>
/// 根据节点Id获取所有子节点Id集合包含自己
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
private async Task<List<long>> GetChildIdListWithSelfById(long id)
{
var childIdList = await this._rep
.Where(u => u.Pids.Contains(id.ToString()))
.Select(u => u.Id)
.ToListAsync();
childIdList.Add(id);
return childIdList;
}
/// <summary>
/// (非管理员)获取当前用户数据范围机构Id
/// </summary>
/// <param name="dataScopes"></param>
/// <returns></returns>
private List<long> GetDataScopeList(List<long> dataScopes)
{
var dataScopeList = new List<long>();
// 如果是超级管理员则获取所有组织机构,否则只获取其数据范围的机构数据
if (!UserManager.IsSuperAdmin && !UserManager.IsTenantAdmin)
{
if (dataScopes.Count < 1)
return dataScopeList;
// 此处获取所有的上级节点,用于构造完整树
dataScopes.ForEach(u =>
{
var sysOrg = this._rep.FirstOrDefault(c => c.Id == u);
var parentAndChildIdListWithSelf = sysOrg.Pids.TrimEnd(',').Replace("[", "").Replace("]", "")
.Split(",").Select(u => long.Parse(u)).ToList();
parentAndChildIdListWithSelf.Add(sysOrg.Id);
dataScopeList.AddRange(parentAndChildIdListWithSelf);
});
}
return dataScopeList;
}
/// <summary>
/// 填充父Ids字段
/// </summary>
/// <param name="sysOrg"></param>
/// <returns></returns>
private async Task FillPids(Position sysOrg)
{
if (sysOrg.ParentID == 0L)
{
sysOrg.Pids = "[" + 0 + "],";
}
else
{
var t = await this._rep.FirstOrDefaultAsync(u => u.Id == sysOrg.ParentID);
sysOrg.Pids = t.Pids + "[" + t.Id + "],";
}
}
#endregion
}
}

@ -390,7 +390,7 @@ namespace GDZZ.Application.Service.WXPay
refun.TransactionNo = transaction_id;
refun.State = RefundStatusEnum.RESUCCESS;
if (this.refundRep.Update(refun) > 0)
if (await this.refundRep.UpdateAsync(refun) > 0)
{
content.Content = string.Format(@"<xml>
<return_code><![CDATA[{0}]]></return_code>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 785 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 456 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 456 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 456 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 456 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save