/***********************************************************************
* Project: CoreCms
* ProjectName: 百分兵法管理系统
* Web: hhtp://chuanyin.com
* Author:
* Email:
* CreateTime: 202403/02
* Description: 暂无
***********************************************************************/
using System;
using System.ComponentModel;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
using CoreCms.Net.Configuration;
using CoreCms.Net.Filter;
using CoreCms.Net.IServices;
using CoreCms.Net.Loging;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.Entities.Expression;
using CoreCms.Net.Model.FromBody;
using CoreCms.Net.Model.ViewModels.UI;
using CoreCms.Net.Utility.Extensions;
using CoreCms.Net.Web.Admin.Infrastructure;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
namespace CoreCms.Net.Web.Admin.Controllers
{
///
/// 用户等级表
///
[Description("用户等级表")]
[Route("api/[controller]/[action]")]
[ApiController]
[RequiredErrorForAdmin]
[Authorize(Permissions.Name)]
public class CoreCmsUserGradeController : ControllerBase
{
private readonly ICoreCmsUserGradeServices _coreCmsUserGradeServices;
private readonly ICoreCmsUserServices _userServices;
private readonly IWebHostEnvironment _webHostEnvironment;
///
/// 构造函数
///
public CoreCmsUserGradeController(IWebHostEnvironment webHostEnvironment,
ICoreCmsUserGradeServices coreCmsUserGradeServices, ICoreCmsUserServices userServices)
{
_webHostEnvironment = webHostEnvironment;
_coreCmsUserGradeServices = coreCmsUserGradeServices;
_userServices = userServices;
}
#region 获取列表============================================================
// POST: Api/CoreCmsUserGrade/GetPageList
///
/// 获取列表
///
///
[HttpPost]
[Description("获取列表")]
public async Task GetPageList()
{
var jm = new AdminUiCallBack();
var pageCurrent = Request.Form["page"].FirstOrDefault().ObjectToInt(1);
var pageSize = Request.Form["limit"].FirstOrDefault().ObjectToInt(30);
var where = PredicateBuilder.True();
//获取排序字段
var orderField = Request.Form["orderField"].FirstOrDefault();
Expression> orderEx = orderField switch
{
"id" => p => p.id,
"title" => p => p.title,
"isDefault" => p => p.isDefault,
"isOpenUpgrade" => p => p.isOpenUpgrade,
"developNum" => p => p.developNum,
"expenditureMoney" => p => p.expenditureMoney,
"rechargeAmount" => p => p.rechargeAmount,
"prioritySortId" => p => p.prioritySortId,
_ => p => p.prioritySortId
};
//设置排序方式
var orderDirection = Request.Form["orderDirection"].FirstOrDefault();
var orderBy = orderDirection switch
{
"asc" => OrderByType.Asc,
"desc" => OrderByType.Desc,
_ => OrderByType.Desc
};
//查询筛选
//id int
var id = Request.Form["id"].FirstOrDefault().ObjectToInt(0);
if (id > 0)
{
where = where.And(p => p.id == id);
}
//标题 nvarchar
var title = Request.Form["title"].FirstOrDefault();
if (!string.IsNullOrEmpty(title))
{
where = where.And(p => p.title.Contains(title));
}
//是否默认 bit
var isDefault = Request.Form["isDefault"].FirstOrDefault();
if (!string.IsNullOrEmpty(isDefault) && isDefault.ToLowerInvariant() == "true")
{
where = where.And(p => p.isDefault == true);
}
else if (!string.IsNullOrEmpty(isDefault) && isDefault.ToLowerInvariant() == "false")
{
where = where.And(p => p.isDefault == false);
}
//开启自动升级 bit
var isOpenUpgrade = Request.Form["isOpenUpgrade"].FirstOrDefault();
if (!string.IsNullOrEmpty(isOpenUpgrade) && isOpenUpgrade.ToLowerInvariant() == "true")
{
where = where.And(p => p.isOpenUpgrade == true);
}
else if (!string.IsNullOrEmpty(isOpenUpgrade) && isOpenUpgrade.ToLowerInvariant() == "false")
{
where = where.And(p => p.isOpenUpgrade == false);
}
//发展用户数量 int
var developNum = Request.Form["developNum"].FirstOrDefault().ObjectToInt(0);
if (developNum > 0)
{
where = where.And(p => p.developNum == developNum);
}
//订单消费金额 int
var expenditureMoney = Request.Form["expenditureMoney"].FirstOrDefault().ObjectToInt(0);
if (expenditureMoney > 0)
{
where = where.And(p => p.expenditureMoney == expenditureMoney);
}
//充值总金额 int
var rechargeAmount = Request.Form["rechargeAmount"].FirstOrDefault().ObjectToInt(0);
if (rechargeAmount > 0)
{
where = where.And(p => p.rechargeAmount == rechargeAmount);
}
//权重优先级 int
var prioritySortId = Request.Form["prioritySortId"].FirstOrDefault().ObjectToInt(0);
if (prioritySortId > 0)
{
where = where.And(p => p.prioritySortId == prioritySortId);
}
//获取数据
var list = await _coreCmsUserGradeServices.QueryPageAsync(where, orderEx, orderBy, pageCurrent, pageSize, false, true);
//返回数据
jm.data = list;
jm.code = 0;
jm.count = list.TotalCount;
jm.msg = "数据调用成功!";
return jm;
}
#endregion
#region 首页数据============================================================
// POST: Api/CoreCmsUserGrade/GetIndex
///
/// 首页数据
///
///
[HttpPost]
[Description("首页数据")]
public AdminUiCallBack GetIndex()
{
//返回数据
var jm = new AdminUiCallBack
{
code = 0
};
return jm;
}
#endregion
#region 创建数据============================================================
// POST: Api/CoreCmsUserGrade/GetCreate
///
/// 创建数据
///
///
[HttpPost]
[Description("创建数据")]
public AdminUiCallBack GetCreate()
{
//返回数据
var jm = new AdminUiCallBack
{
code = 0
};
return jm;
}
#endregion
#region 创建提交============================================================
// POST: Api/CoreCmsUserGrade/DoCreate
///
/// 创建提交
///
///
///
[HttpPost]
[Description("创建提交")]
public async Task DoCreate([FromBody] CoreCmsUserGrade entity)
{
var jm = new AdminUiCallBack();
var id = await _coreCmsUserGradeServices.InsertAsync(entity, true);
var bl = id > 0;
jm.code = bl ? 0 : 1;
jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure;
//其他处理
if (bl && entity.isDefault)
{
await _coreCmsUserGradeServices.UpdateAsync(it => new CoreCmsUserGrade { isDefault = false }, p => p.id != id);
}
return jm;
}
#endregion
#region 编辑数据============================================================
// POST: Api/CoreCmsUserGrade/GetEdit
///
/// 编辑数据
///
///
///
[HttpPost]
[Description("编辑数据")]
public async Task GetEdit([FromBody] FMIntId entity)
{
var jm = new AdminUiCallBack();
var model = await _coreCmsUserGradeServices.QueryByIdAsync(entity.id);
if (model == null)
{
jm.msg = "不存在此信息";
return jm;
}
jm.code = 0;
jm.data = model;
return jm;
}
#endregion
#region 编辑提交============================================================
// POST: Admins/CoreCmsUserGrade/Edit
///
/// 编辑提交
///
///
///
[HttpPost]
[Description("编辑提交")]
public async Task DoEdit([FromBody] CoreCmsUserGrade entity)
{
var jm = new AdminUiCallBack();
var oldModel = await _coreCmsUserGradeServices.QueryByIdAsync(entity.id);
if (oldModel == null)
{
jm.msg = "不存在此信息";
return jm;
}
var oldDf = oldModel.isDefault;
if (oldDf && entity.isDefault == false)
{
jm.msg = "请保留一个为默认等级";
return jm;
}
//事物处理过程开始
//oldModel.id = entity.id;
oldModel.title = entity.title;
oldModel.isDefault = entity.isDefault;
oldModel.isOpenUpgrade = entity.isOpenUpgrade;
oldModel.developNum = entity.developNum;
oldModel.expenditureMoney = entity.expenditureMoney;
oldModel.rechargeAmount = entity.rechargeAmount;
oldModel.prioritySortId = entity.prioritySortId;
oldModel.valueKey= entity.valueKey;
//事物处理过程结束
var bl = await _coreCmsUserGradeServices.UpdateAsync(oldModel, true);
jm.code = bl ? 0 : 1;
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
//其他处理
if (bl && entity.isDefault)
{
await _coreCmsUserGradeServices.UpdateAsync(it => new CoreCmsUserGrade { isDefault = false }, p => p.id != entity.id);
}
return jm;
}
#endregion
#region 删除数据============================================================
// POST: Api/CoreCmsUserGrade/DoDelete/10
///
/// 单选删除
///
///
///
[HttpPost]
[Description("单选删除")]
public async Task DoDelete([FromBody] FMIntId entity)
{
var jm = new AdminUiCallBack();
var model = await _coreCmsUserGradeServices.QueryByIdAsync(entity.id);
if (model == null)
{
jm.msg = GlobalConstVars.DataisNo;
return jm;
}
var isHave = await _userServices.ExistsAsync(p => p.grade == model.id);
if (isHave)
{
jm.msg = "存在下级关联数据,禁止删除";
return jm;
}
var isDefault = await _coreCmsUserGradeServices.ExistsAsync(p => p.isDefault && p.id != entity.id);
if (isDefault == false)
{
jm.msg = "请先设置其他选项为默认";
return jm;
}
var bl = await _coreCmsUserGradeServices.DeleteByIdAsync(entity.id, true);
jm.code = bl ? 0 : 1;
jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;
return jm;
}
#endregion
#region 预览数据============================================================
// POST: Api/CoreCmsUserGrade/GetDetails/10
///
/// 预览数据
///
///
///
[HttpPost]
[Description("预览数据")]
public async Task GetDetails([FromBody] FMIntId entity)
{
var jm = new AdminUiCallBack();
var model = await _coreCmsUserGradeServices.QueryByIdAsync(entity.id);
if (model == null)
{
jm.msg = "不存在此信息";
return jm;
}
jm.code = 0;
jm.data = model;
return jm;
}
#endregion
#region 设置是否默认============================================================
// POST: Api/CoreCmsUserGrade/DoSetisDefault/10
///
/// 设置是否默认
///
///
///
[HttpPost]
[Description("设置是否默认")]
public async Task DoSetIsDefault([FromBody] FMUpdateBoolDataByIntId entity)
{
var jm = new AdminUiCallBack();
var oldModel = await _coreCmsUserGradeServices.QueryByIdAsync(entity.id);
if (oldModel == null)
{
jm.msg = "不存在此信息";
return jm;
}
oldModel.isDefault = entity.data;
if (entity.data == false)
{
var isHave = await _coreCmsUserGradeServices.ExistsAsync(p => p.isDefault && p.id != entity.id);
if (isHave == false)
{
jm.msg = "请保持一个默认设置";
return jm;
}
}
var bl = await _coreCmsUserGradeServices.UpdateAsync(oldModel, true);
jm.code = bl ? 0 : 1;
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
//其他处理
if (bl && oldModel.isDefault)
{
await _coreCmsUserGradeServices.UpdateAsync(it => new CoreCmsUserGrade { isDefault = false }, p => p.id != entity.id);
}
return jm;
}
#endregion
#region 设置开启自动升级============================================================
// POST: Api/CoreCmsUserGrade/DoSetisOpenUpgrade/10
///
/// 设置开启自动升级
///
///
///
[HttpPost]
[Description("设置开启自动升级")]
public async Task DoSetIsOpenUpgrade([FromBody] FMUpdateBoolDataByIntId entity)
{
var jm = new AdminUiCallBack();
var oldModel = await _coreCmsUserGradeServices.QueryByIdAsync(entity.id);
if (oldModel == null)
{
jm.msg = "不存在此信息";
return jm;
}
oldModel.isOpenUpgrade = (bool)entity.data;
var bl = await _coreCmsUserGradeServices.UpdateAsync(p => new CoreCmsUserGrade() { isOpenUpgrade = oldModel.isOpenUpgrade }, p => p.id == oldModel.id);
jm.code = bl ? 0 : 1;
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
return jm;
}
#endregion
}
}