【新增】后台分销商列表,增加申请分销的用户等级展示及等级筛选功能。

This commit is contained in:
大灰灰
2022-08-03 00:19:52 +08:00
parent c648dd3aad
commit a90e20c1e2
7 changed files with 187 additions and 7 deletions

View File

@@ -5,6 +5,7 @@ using System.Threading.Tasks;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.DTO.Distribution;
using SqlSugar;
namespace CoreCms.Net.IRepository
@@ -34,5 +35,23 @@ namespace CoreCms.Net.IRepository
/// <returns></returns>
Task<IPageList<DistributionRankingDTO>> QueryRankingPageAsync(int pageIndex = 1, int pageSize = 20);
/// <summary>
/// 重写根据条件查询分页数据
/// </summary>
/// <param name="predicate">判断集合</param>
/// <param name="orderByType">排序方式</param>
/// <param name="pageIndex">当前页面索引</param>
/// <param name="pageSize">分布大小</param>
/// <param name="orderByExpression"></param>
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
/// <returns></returns>
new Task<IPageList<CoreCmsDistribution>> QueryPageAsync(
Expression<Func<CoreCmsDistribution, bool>> predicate,
Expression<Func<CoreCmsDistribution, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
int pageSize = 20, bool blUseNoLock = false);
}
}

View File

@@ -8,12 +8,15 @@
* Description: 暂无
***********************************************************************/
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.UI;
using CoreCms.Net.Model.ViewModels.DTO.Distribution;
using CoreCms.Net.Model.ViewModels.UI;
using SqlSugar;
namespace CoreCms.Net.IServices
{
@@ -85,5 +88,24 @@ namespace CoreCms.Net.IServices
/// <param name="pageSize">分布大小</param>
/// <returns></returns>
Task<IPageList<DistributionRankingDTO>> QueryRankingPageAsync(int pageIndex = 1, int pageSize = 20);
#region
/// <summary>
/// 重写根据条件查询分页数据
/// </summary>
/// <param name="predicate">判断集合</param>
/// <param name="orderByType">排序方式</param>
/// <param name="pageIndex">当前页面索引</param>
/// <param name="pageSize">分布大小</param>
/// <param name="orderByExpression"></param>
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
/// <returns></returns>
new Task<IPageList<CoreCmsDistribution>> QueryPageAsync(
Expression<Func<CoreCmsDistribution, bool>> predicate,
Expression<Func<CoreCmsDistribution, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
int pageSize = 20, bool blUseNoLock = false);
#endregion
}
}

View File

@@ -124,5 +124,15 @@ namespace CoreCms.Net.Model.Entities
[Display(Name = "店铺查询交互数据")]
[SugarColumn(IsIgnore = true)]
public string Store { get; set; } = "";
/// <summary>
/// 用户等级
/// </summary>
[Display(Name = "用户等级")]
[SugarColumn(IsIgnore = true)]
public int UserGradeId { get; set; } = 0;
}
}

View File

@@ -117,6 +117,87 @@ namespace CoreCms.Net.Repository
#endregion
#region
/// <summary>
/// 重写根据条件查询分页数据
/// </summary>
/// <param name="predicate">判断集合</param>
/// <param name="orderByType">排序方式</param>
/// <param name="pageIndex">当前页面索引</param>
/// <param name="pageSize">分布大小</param>
/// <param name="orderByExpression"></param>
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
/// <returns></returns>
public new async Task<IPageList<CoreCmsDistribution>> QueryPageAsync(Expression<Func<CoreCmsDistribution, bool>> predicate,
Expression<Func<CoreCmsDistribution, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
int pageSize = 20, bool blUseNoLock = false)
{
RefAsync<int> totalCount = 0;
List<CoreCmsDistribution> page;
if (blUseNoLock)
{
page = await DbClient.Queryable<CoreCmsDistribution>()
.Select(p => new CoreCmsDistribution
{
id = p.id,
userId = p.userId,
name = p.name,
gradeId = p.gradeId,
mobile = p.mobile,
weixin = p.weixin,
qq = p.qq,
storeName = p.storeName,
storeLogo = p.storeLogo,
storeBanner = p.storeBanner,
storeDesc = p.storeDesc,
verifyStatus = p.verifyStatus,
createTime = p.createTime,
updateTime = p.updateTime,
verifyTime = p.verifyTime,
isDelete = p.isDelete,
UserGradeId = SqlFunc.Subqueryable<CoreCmsUser>().Where(o => o.id == p.userId).Select(p => p.grade)
})
.MergeTable()
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
.WhereIF(predicate != null, predicate)
.With(SqlWith.NoLock).ToPageListAsync(pageIndex, pageSize, totalCount);
}
else
{
page = await DbClient.Queryable<CoreCmsDistribution>()
.Select(p => new CoreCmsDistribution
{
id = p.id,
userId = p.userId,
name = p.name,
gradeId = p.gradeId,
mobile = p.mobile,
weixin = p.weixin,
qq = p.qq,
storeName = p.storeName,
storeLogo = p.storeLogo,
storeBanner = p.storeBanner,
storeDesc = p.storeDesc,
verifyStatus = p.verifyStatus,
createTime = p.createTime,
updateTime = p.updateTime,
verifyTime = p.verifyTime,
isDelete = p.isDelete,
UserGradeId = SqlFunc.Subqueryable<CoreCmsUser>().Where(o => o.id == p.userId).Select(p => p.grade)
})
.MergeTable()
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
.WhereIF(predicate != null, predicate)
.ToPageListAsync(pageIndex, pageSize, totalCount);
}
var list = new PageList<CoreCmsDistribution>(page, pageIndex, pageSize, totalCount);
return list;
}
#endregion
}
}

View File

@@ -11,6 +11,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
using CoreCms.Net.Configuration;
using CoreCms.Net.IRepository;
@@ -19,12 +20,13 @@ using CoreCms.Net.IServices;
using CoreCms.Net.Loging;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.UI;
using CoreCms.Net.Model.ViewModels.DTO;
using CoreCms.Net.Model.ViewModels.DTO.Distribution;
using CoreCms.Net.Model.ViewModels.UI;
using CoreCms.Net.Utility.Extensions;
using CoreCms.Net.Utility.Helper;
using Newtonsoft.Json.Linq;
using SqlSugar;
namespace CoreCms.Net.Services
@@ -93,6 +95,7 @@ namespace CoreCms.Net.Services
//本月第一天时间
DateTime dtFirst = dt.AddDays(1 - (dt.Day));
dtFirst = new DateTime(dtFirst.Year, dtFirst.Month, dtFirst.Day, 0, 0, 0);
//获得某年某月的天数
int year = dt.Year;
int month = dt.Month;
@@ -510,7 +513,7 @@ namespace CoreCms.Net.Services
var jm = new AdminUiCallBack();
var info = await _dal.QueryByClauseAsync(p => p.userId == userId);
if (info != null && info.gradeId > 0)
if (info is { gradeId: > 0 })
{
//找下有没有可以升级的分销商等级
var grade = await _distributionGradeRepository.QueryByClauseAsync(p => p.id > info.gradeId && p.isAutoUpGrade == true);
@@ -554,5 +557,26 @@ namespace CoreCms.Net.Services
return await _dal.QueryRankingPageAsync(pageIndex, pageSize);
}
#region
/// <summary>
/// 重写根据条件查询分页数据
/// </summary>
/// <param name="predicate">判断集合</param>
/// <param name="orderByType">排序方式</param>
/// <param name="pageIndex">当前页面索引</param>
/// <param name="pageSize">分布大小</param>
/// <param name="orderByExpression"></param>
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
/// <returns></returns>
public new async Task<IPageList<CoreCmsDistribution>> QueryPageAsync(Expression<Func<CoreCmsDistribution, bool>> predicate,
Expression<Func<CoreCmsDistribution, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
int pageSize = 20, bool blUseNoLock = false)
{
return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
}
#endregion
}
}

View File

@@ -117,6 +117,9 @@ namespace CoreCms.Net.Web.Admin.Controllers
//分销等级 int
var gradeId = Request.Form["gradeId"].FirstOrDefault().ObjectToInt(0);
if (gradeId > 0) where = where.And(p => p.gradeId == gradeId);
//用户等级 int
var userGradeId = Request.Form["userGradeId"].FirstOrDefault().ObjectToInt(0);
if (userGradeId > 0) where = where.And(p => p.UserGradeId == userGradeId);
//手机号 nvarchar
var mobile = Request.Form["mobile"].FirstOrDefault();
if (!string.IsNullOrEmpty(mobile)) where = where.And(p => p.mobile.Contains(mobile));
@@ -232,10 +235,12 @@ namespace CoreCms.Net.Web.Admin.Controllers
var jm = new AdminUiCallBack { code = 0 };
var distributionVerifyStatus = EnumHelper.EnumToList<GlobalEnumVars.DistributionVerifyStatus>();
var grades = await _distributionGradeServices.GetCaChe();
var userGrades = await _userGradeServices.QueryAsync();
jm.data = new
{
distributionVerifyStatus,
grades
grades,
userGrades
};
return jm;

View File

@@ -68,6 +68,16 @@
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="userGradeId">
<option value="">请选择用户等级</option>
{{# layui.each(indexData.userGrades, function(index, item){ }}
<option value="{{ item.id }}">{{ item.title }}</option>
{{# }); }}
</select>
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-CoreCmsDistribution-search"><i class="layui-icon layui-icon-search"></i></button>
@@ -135,9 +145,18 @@
//{ type: "checkbox", fixed: "left" },
{ field: 'id', title: '序列', width: 60, sort: false },
{ field: 'userId', title: '用户序列', sort: false, width: 65 },
{
field: 'userGradeId', title: '用户等级', sort: false, width: 90, templet: function (data) {
for (var i = 0; i < d.data.grades.length; i++) {
if (d.data.userGrades[i].id == data.userGradeId) {
return d.data.userGrades[i].title;
}
}
}
},
{ field: 'name', title: '分销商名称', sort: false, width: 105 },
{
field: 'gradeId', title: '分销等级', sort: false, width: 65, templet: function (data) {
field: 'gradeId', title: '分销等级', sort: false, width: 90, templet: function (data) {
for (var i = 0; i < d.data.grades.length; i++) {
if (d.data.grades[i].id == data.gradeId) {
return d.data.grades[i].name;
@@ -146,8 +165,8 @@
}
},
//{ field: 'gradeId', title: '分销等级', sort: false, width: 105 },
{ field: 'mobile', title: '手机号', sort: false, width: 90 },
{ field: 'weixin', title: '微信号', sort: false, width: 90 },
{ field: 'mobile', title: '手机号', sort: false, width: 100 },
{ field: 'weixin', title: '微信号', sort: false, width: 100 },
{ field: 'qq', title: 'qq号', sort: false, width: 90 },
{ field: 'storeName', title: '店铺名称', sort: false },
{