yz_server/Server/Controllers/MemberManagement/UserController.cs

401 lines
14 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}
}