yz_server/Server/Controllers/MemberManagement/UserController.cs

401 lines
14 KiB
C#
Raw Normal View History

2022-04-16 07:48:12 +00:00
using Common.DbExtends.Extends;
using Common.DbExtends.Others;
using Common.Models.SubCountTables;
using Common.Models.UnqTables;
using Common.Utils;
using Server.MyClass.Views;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
using Common.Models.Enums;
using Common.Models.SubTables;
using Server.Services;
namespace Server.Controllers.MemberManagement
{
public class UserController : DefaultController
{
/// <summary>
/// 获取机器人信息
/// </summary>
/// <returns></returns>
[HttpPost, ErrorFilter]
public WebResult GetRobotInfo()
{
var Keyword = GetString("Keyword");
var exp = Expressionable.Create<Robot>();
if (!string.IsNullOrEmpty(Keyword))
{
exp.And(f => f.Nickname.Contains(Keyword));
}
var robotInfos = Db.Queryable<Robot>().Where(exp.ToExpression())
.Select(m => new RobotInfo { RobotId = m.Id, RobotName = m.Nickname, RobotType = m.UserType }).Take(20).ToList();
return PutData(robotInfos);
}
/// <summary>
/// 获取用户组信息
/// </summary>
/// <returns></returns>
[HttpPost, ErrorFilter]
public WebResult GetUserGrouInfo()
{
var Keyword = GetString("Keyword");
var exp = Expressionable.Create<UserGroup>();
if (!string.IsNullOrEmpty(Keyword))
{
exp.And(f => f.Name.Contains(Keyword));
}
var usergroup = Db.Queryable<UserGroup>().Where(exp.ToExpression())
.Select(a => new UserGroupInfo
{
Id = a.Id,
Name = a.Name,
}).Take(20).ToList();
return PutData(usergroup);
}
[HttpPost, ErrorFilter]
public WebResult GetData()
{
var db = Db;
db.CurrentConnectionConfig.ConfigureExternalServices.SplitTableService = new MySplitService(MySplitService.MySplitType.);
var PageIndex = GetInt("PageIndex", true);
var PageSize = GetInt("PageSize", true);
if (PageSize > 100) PageSize = 100;
var tNumber = 0;
var RobotId = GetInt("RobotId");//机器人Id
var GroupId = GetInt("GroupId");//分组ID
var userExp = Expressionable.Create<User>();
var exp = Expressionable.Create<User, UserData, UserGroup, User, Robot>();
var Keyword = GetString("Keyword");
if (!string.IsNullOrEmpty(Keyword))
{
var KeywordType = GetInt("KeywordType");
switch (KeywordType)
{
case 1://昵称搜索
userExp.And(u => u.NickName.Contains(Keyword));
exp.And((u1, d, g, u2, r) => u1.NickName.Contains(Keyword));
break;
case 2://账号搜索
userExp.And(u1 => u1.Username.Contains(Keyword));
exp.And((u1, d, g, u2, r) => u1.Username.Contains(Keyword));
break;
//case 3://账号ID搜索
// exp.And((d, g, u1, u2, r) => d.UserId == Convert.ToInt32(Keyword));
// break;
//case 4://上级昵称搜索
// exp.And((d, g, u1, u2, r) => u2.NickName == Keyword);
// break;
//case 5://上级账号搜索
// exp.And((d, g, u1, u2, r) => u2.Username == Keyword);
// break;
//case 6://上级账号ID搜索
// exp.And((d, g, u1, u2, r) => u2.Id == Convert.ToInt32(Keyword));
// break;
default:
return PutData("查询失败,暂不支持该搜索条件");
}
}
if (RobotId > 0)
exp.And((u1, d, g, u2, r) => r.Id == RobotId);
if (GroupId > 0)
exp.And((u1, d, g, u2, r) => g.Id == GroupId);
var ids = db.Queryable<User>()
.Where(userExp.ToExpression())
.OrderBy(o => o.Id)
.Select(s => s.Id)
.ToPageList(PageIndex, PageSize);
if (ids.Count <= 0)
{
return PutData(new PageResult<UserShow>(new List<UserShow>(), tNumber, PageSize, PageIndex));
}
//var idmax = db.Queryable<User>()
// .Where(userExp.ToExpression())
// .OrderBy(o => o.Id)
// .Select(s => s.Id)
// .Skip(PageIndex)
// .Take(PageSize)
// .Max<int>("Id");
//根据最大ID选择分页的表
var rightQuery = db.Queryable<UserData>().SplitTableById(ids.Max(s => s));
var dataList = db.Queryable<User>()
.LeftJoin<UserData>(rightQuery, (u1, d) => d.UserId == u1.Id)//获取分组
.LeftJoin<UserGroup>((u1, d, g) => d.GroupId == g.Id)//获取分组
.LeftJoin<User>((u1, d, g, u2) => d.RecommendId == u2.Id)//获取用户的邀请人信息
.LeftJoin<Robot>((u1, d, g, u2, r) => u1.RobotId == r.Id)//获取机器人信息
.LeftJoin<UserBlack>((u1,d,g,u2,r,black)=> u1.Username == black.Username && u1.UserType == black.UserType)
.Where(exp.ToExpression())
.OrderBy(u1 => u1.Id, OrderByType.Desc)
.Select((u1, d, g, u2, r, black) => new UserShow
{
Id = u1.Id,
UserId = d.UserId,
Nickname = u1.NickName,
Username = u1.Username,
RecommendId = d.RecommendId,
InviterNickname = u2.NickName,
InviterHeadurl = u2.Headurl,
InviterUsername = u2.Username,
InviterId = u2.Id,
RobotName = r.Username,
TixianAmount = d.TixianAmount,
CurPoint = d.CurPoint,
EstimateCoupon = d.EstimateCoupon,
EstimateRebate = d.EstimateRebate,
GroupId = d.GroupId,
GroupName = g.Name,
PayOrderCount = d.PayOrderCount,
QueryCount = d.QueryCount,
RecommendCount = d.RecommendCount,
TixianCount = d.TixianCount,
UserStatus = d.UserStatus,
BlackInfo = black,
Headurl = u1.Headurl,
UserType = u1.UserType
})
.ToPageList(PageIndex, PageSize, ref tNumber);
foreach (var item in dataList)
{
if (item.BlackInfo != null && item.BlackInfo.Id != 0)
{
if (!item.BlackInfo.IsDel)
{
if (item.BlackInfo.IsCloud)
item.UserStatus = UserStatus.;
else
item.UserStatus = UserStatus.;
}
}
else
{
item.BlackInfo = null;
}
}
var res = new PageResult<UserShow>(dataList, tNumber, PageSize, PageIndex);
return PutData(res);
}
/// <summary>
/// 添加微信用户
/// </summary>
/// <returns></returns>
//[HttpPost, ErrorFilter]
//public WebResult AddWechatUser()
//{
// var Wxid = GetString("Wxid");
// var user = Db.Queryable<User>().Where(f => f.Username == Wxid).First();
// if (user != null) return PutData("该微信用户已存在,请勿重复添加");
// user = new User();
// Util.CopyToObj(this.Param, user);
// Db.Insertable(user).ExecuteCommand();
// return PutSuccess;
//}
/// <summary>
/// 编辑微信用户
/// </summary>
/// <returns></returns>
[HttpPost, ErrorFilter]
public WebResult UpdWechatUser()
{
var Id = GetInt("Id", true);
var wechatuser = Db.Queryable<User>().Where(f => f.Id == Id).First();
if (wechatuser == null)
{
return PutData("编辑失败,没有此用户");
}
Util.CopyToObj(this.Param, wechatuser);
//TODO:
Db.Updateable(wechatuser)
.IgnoreColumns(it => new { it.Id, it.IsFriend, it.CreateTime, })
.ExecuteCommand();
return PutSuccess;
}
/// <summary>
/// 删除微信用户
/// </summary>
/// <returns></returns>
//[HttpPost, ErrorFilter]
//public WebResult DelWechatUser()
//{
// var Id = GetInt("Id", true);
// var wechatuser = Db.Queryable<WechatUser>().Where(f => f.Id == Id).First();
// if (wechatuser == null)
// {
// return PutData("删除失败,没有此微信用户");
// }
// Db.Deleteable(wechatuser).ExecuteCommand();
// return PutSuccess;
//}
/// <summary>
/// 加用户黑名单
/// </summary>
/// <returns></returns>
[HttpPost, ErrorFilter]
public WebResult AddBlack()
{
//加黑类型
var id = GetLong("Id");
var isCloud = GetBoolean("IsCloud");
var blackType = GetEnum<BlackType>("BlackType", true);
var remark = GetString("Remark", true);
var user = Db.Queryable<User>().Where(w => w.Id == id).First();
if (user == null)
{
return PutData("用户不存在");
}
var userData = Db.GetUserData(user.Id);
//如果用户在白名单,需要恢复到正常名单
if (userData.UserStatus == UserStatus.)
{
userData.UserStatus = UserStatus.;
Db.Save(userData);
}
var blacklistService = new BlacklistService();
var result = blacklistService.AddUserBlack(user.UserType, user.Username, user.NickName, blackType, user.Headurl, remark, isCloud);
if (string.IsNullOrWhiteSpace(result))
{
return PutSuccess;
}
return PutData(result);
}
/// <summary>
/// 删除用户黑名单
/// </summary>
/// <returns></returns>
[HttpPost, ErrorFilter]
public WebResult DelBlack()
{
var id = GetLong("Id");
var user = Db.Queryable<User>().Where(w => w.Id == id).First();
if (user == null)
{
return PutData("删除失败,用户不存在");
}
var blacklistService = new BlacklistService();
var result = blacklistService.RemoveUserBlack(user.Username, user.UserType, true);
if (string.IsNullOrWhiteSpace(result))
{
return PutSuccess;
}
return PutError;
}
/// <summary>
/// 加白名单
/// </summary>
/// <returns></returns>
public WebResult AddWhite()
{
var Id = GetLong("Id",true);
var user = Db.Queryable<User>().Where(f => f.Id == Id).First();
if (user == null) return PutData("操作失败,用户数据不存在");
var userData = Db.GetUserData(user.Id);
if (userData.UserStatus == UserStatus.) return PutData("操作失败,用户已在白名单中");
userData.UserStatus = UserStatus.;
Db.Save(userData);
//尝试删除云端的黑名单,防止用户故意拉黑后,又把自己的用户变白名单
var blacklistService = new BlacklistService();
var result = blacklistService.RemoveUserBlack(user.Username, user.UserType, true);
return PutSuccess;
}
/// <summary>
/// 删白名单
/// </summary>
/// <returns></returns>
public WebResult DelWhite()
{
var Id = GetLong("Id", true);
var user = Db.Queryable<User>().Where(f => f.Id == Id).First();
if (user == null) return PutData("操作失败,用户数据不存在");
var userData = Db.GetUserData(user.Id);
if (userData.UserStatus != UserStatus.) return PutData("操作失败,用户不在白名单中");
userData.UserStatus = UserStatus.;
Db.Save(userData);
return PutSuccess;
}
/// <summary>
/// 修改用户积分
/// </summary>
/// <returns></returns>
[HttpPost, ErrorFilter]
public WebResult ChangeUserPoint()
{
var userid = GetInt("UserId", true);
var point = GetDouble("Point", true);
var remark = GetString("Remark", true);
var ResIds = GetIntList("ResIds");
//var voucherUrlArr = voucherUrls.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
Db.ChangePoint(userid, point, PointType., remark, 0, Session==null?0:Session.Uid, ResIds.ToArray());
return PutSuccess;
}
}
}