488 lines
16 KiB
C#
488 lines
16 KiB
C#
|
using Common.DbExtends;
|
|||
|
using Common.DbExtends.Extends;
|
|||
|
using Common.Models;
|
|||
|
using Common.Models.Enums;
|
|||
|
using Common.Models.JsonModels;
|
|||
|
using Common.Models.UnqTables;
|
|||
|
using Common.Utils;
|
|||
|
using Newtonsoft.Json;
|
|||
|
using Server.Utils;
|
|||
|
using SqlSugar;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Collections.Specialized;
|
|||
|
using System.IO;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Text.RegularExpressions;
|
|||
|
using System.Threading;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using System.Web.Http;
|
|||
|
namespace Server.Controllers.FunctionSetting
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 全局设置
|
|||
|
/// </summary>
|
|||
|
public class PubController : DefaultController
|
|||
|
{
|
|||
|
#region 配置存储相关
|
|||
|
[HttpPost, ErrorFilter]
|
|||
|
public WebResult GetConfig()
|
|||
|
{
|
|||
|
var pubConfig = Db.GetPubConfig();
|
|||
|
if (pubConfig == null) pubConfig = new PublicConfig();
|
|||
|
return PutData(pubConfig);
|
|||
|
}
|
|||
|
|
|||
|
[HttpPost, ErrorFilter]
|
|||
|
public WebResult SaveConfig()
|
|||
|
{
|
|||
|
//var pubConfig = Db.GetPubConfig();
|
|||
|
|
|||
|
//if (pubConfig == null) pubConfig = new PublicConfig();
|
|||
|
|
|||
|
//Util.CopyToObj(this.Param, pubConfig);
|
|||
|
var ConfigStr = GetString("Cfg", true);
|
|||
|
var PubConfig = JsonConvert.DeserializeObject<PublicConfig>(ConfigStr);
|
|||
|
if (PubConfig == null) return PutData("保存失败,未能识别到您的数据");
|
|||
|
if (PubConfig.CashNewPrevious < 0.3 || PubConfig.CashNewNext < 0.3) return PutData("保存失败,提现金额不能低于0.3元");
|
|||
|
|
|||
|
if (PubConfig.UserStatus == UserStatus.未知 || PubConfig.KeywordStatus == UserStatus.未知 || PubConfig.RefundStatus == UserStatus.未知 || PubConfig.SameSellStatus == UserStatus.未知)
|
|||
|
return PutData("保存失败,用户状态未设置");
|
|||
|
|
|||
|
if (!PubConfig.ShDefault && PubConfig.ShId == 0) return PutData("保存失败,您尚未选择支付的商户号");
|
|||
|
|
|||
|
var config = Db.Queryable<ConfigData>().Where(f => f.Type == ConfigType.全局).First();
|
|||
|
if (config == null) config = new ConfigData() { Type = ConfigType.全局, Name = "" };
|
|||
|
|
|||
|
config.JsonContent = ConfigStr;
|
|||
|
Db.Save(config);
|
|||
|
|
|||
|
var RobotIds = Db.Queryable<Robot>().Select(f => f.Id).ToList();
|
|||
|
if (RobotIds.Count == 0)
|
|||
|
return PutData("添加失败,暂未发现有任何可用的机器人");
|
|||
|
|
|||
|
foreach (var RobotId in RobotIds)
|
|||
|
Client.SendClientMsg(RobotId, DeviceMessageType.全局配置修改, new { });
|
|||
|
|
|||
|
return PutSuccess;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 通知API相关
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 查询机器人通知接口
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpPost, ErrorFilter]
|
|||
|
public WebResult GetRobotNotify()
|
|||
|
{
|
|||
|
var PageIndex = GetInt("PageIndex");
|
|||
|
var PageSize = GetInt("PageSize");
|
|||
|
var tNumber = 0;
|
|||
|
|
|||
|
var Keyword = GetString("Keyword");
|
|||
|
|
|||
|
var exp = Expressionable.Create<RobotNotify>();
|
|||
|
|
|||
|
if (!string.IsNullOrEmpty(Keyword))
|
|||
|
{
|
|||
|
exp.And(f => f.Name.Contains(Keyword));
|
|||
|
}
|
|||
|
var DataList = Db.Queryable<RobotNotify>().Where(exp.ToExpression())
|
|||
|
.ToPageList(PageIndex, PageSize, ref tNumber);
|
|||
|
|
|||
|
var res = new PageResult<RobotNotify>(DataList, tNumber, PageSize, PageIndex);
|
|||
|
return PutData(res);
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 编辑通知接口
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpPost, ErrorFilter]
|
|||
|
public WebResult UpdRobotNotify()
|
|||
|
{
|
|||
|
var Id = GetInt("Id", true);
|
|||
|
var notify = Db.Queryable<RobotNotify>()
|
|||
|
.Single(f => f.Id == Id);
|
|||
|
|
|||
|
if (notify == null)
|
|||
|
return PutData("编辑失败,此通知接口不存在");
|
|||
|
|
|||
|
var Name = GetString("Name", true);
|
|||
|
if (notify.Name == Name)
|
|||
|
return PutData("编辑失败,此名称已存在");
|
|||
|
|
|||
|
notify.Name = Name;
|
|||
|
|
|||
|
var ApiLocation = GetString("ApiLocation", true);
|
|||
|
notify.ApiLocation = ApiLocation;
|
|||
|
|
|||
|
var Appsecret = GetString("Appsecret");
|
|||
|
notify.Appsecret = Appsecret;
|
|||
|
|
|||
|
if (ApiLocation.Contains("weixin"))
|
|||
|
notify.NoticeApiType = NoticeApiType.企业微信机器人API;
|
|||
|
|
|||
|
else if (ApiLocation.Contains("dingding"))
|
|||
|
notify.NoticeApiType = NoticeApiType.企业钉钉机器人API;
|
|||
|
|
|||
|
else if (ApiLocation.Contains("feishu"))
|
|||
|
notify.NoticeApiType = NoticeApiType.飞书机器人API;
|
|||
|
|
|||
|
else return PutData("编辑失败,无法识别链接类型");
|
|||
|
|
|||
|
var res = Db.Updateable(notify).ExecuteCommand();
|
|||
|
|
|||
|
if (res > 0)
|
|||
|
return PutSuccess;
|
|||
|
|
|||
|
else return PutError;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 删除通知接口
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpPost, ErrorFilter]
|
|||
|
public WebResult DeleteNotify()
|
|||
|
{
|
|||
|
var Id = GetInt("Id", true);
|
|||
|
|
|||
|
var res = Db.Deleteable<RobotNotify>()
|
|||
|
.Where(f => f.Id == Id).ExecuteCommand();
|
|||
|
|
|||
|
if (res > 0)
|
|||
|
return PutSuccess;
|
|||
|
|
|||
|
return PutData("删除失败,此通知接口不存在");
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 新增通知接口
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpPost, ErrorFilter]
|
|||
|
public WebResult AddNotify()
|
|||
|
{
|
|||
|
var Name = GetString("Name", true);
|
|||
|
//var NoticeApiType = GetEnum<NoticeApiType>("NoticeApiType", true);//通知接口类型 : 企业钉钉机器人API =1, 企业微信机器人API = 2, 飞书机器人API = 3
|
|||
|
|
|||
|
var ApiLocation = GetString("ApiLocation", true);
|
|||
|
|
|||
|
var Appsecret = GetString("Appsecret");
|
|||
|
|
|||
|
var notify = Db.Queryable<RobotNotify>().Where(f => f.Name == Name).First();
|
|||
|
|
|||
|
if (notify != null)
|
|||
|
return PutData("新增失败,此名称已存在");
|
|||
|
|
|||
|
notify = new RobotNotify()
|
|||
|
{
|
|||
|
Name = Name,
|
|||
|
Appsecret = Appsecret,
|
|||
|
ApiLocation = ApiLocation
|
|||
|
};
|
|||
|
|
|||
|
if (ApiLocation.Contains("weixin"))
|
|||
|
notify.NoticeApiType = NoticeApiType.企业微信机器人API;
|
|||
|
|
|||
|
else if (ApiLocation.Contains("dingding"))
|
|||
|
notify.NoticeApiType = NoticeApiType.企业钉钉机器人API;
|
|||
|
|
|||
|
else if (ApiLocation.Contains("feishu"))
|
|||
|
notify.NoticeApiType = NoticeApiType.飞书机器人API;
|
|||
|
|
|||
|
else return PutData("编辑失败,无法识别链接类型");
|
|||
|
|
|||
|
|
|||
|
var res = Db.Insertable(notify).ExecuteCommand();
|
|||
|
|
|||
|
if (res > 0) return PutSuccess;
|
|||
|
|
|||
|
return PutError;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 测试通知接口
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpPost, ErrorFilter]
|
|||
|
public WebResult TestNotify()
|
|||
|
{
|
|||
|
var Message = GetString("Message", true);
|
|||
|
var ApiLocation = GetString("ApiLocation", true);
|
|||
|
var Appsecret = GetString("Appsecret");
|
|||
|
|
|||
|
var noticeApiType = NoticeApiType.其他;
|
|||
|
|
|||
|
if (ApiLocation.Contains("weixin"))
|
|||
|
noticeApiType = NoticeApiType.企业微信机器人API;
|
|||
|
|
|||
|
else if (ApiLocation.Contains("dingding"))
|
|||
|
noticeApiType = NoticeApiType.企业钉钉机器人API;
|
|||
|
|
|||
|
else if (ApiLocation.Contains("feishu"))
|
|||
|
noticeApiType = NoticeApiType.飞书机器人API;
|
|||
|
|
|||
|
else return PutData("编辑失败,无法识别链接类型");
|
|||
|
|
|||
|
var result = Util.RobotNotify(Message, ApiLocation, noticeApiType, Appsecret);
|
|||
|
if (!string.IsNullOrEmpty(result))
|
|||
|
return PutData(result);
|
|||
|
|
|||
|
else
|
|||
|
return PutSuccess;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#region 商户配置相关
|
|||
|
/// <summary>
|
|||
|
/// 获取商户信息信息
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpPost, ErrorFilter]
|
|||
|
public WebResult GetShops()
|
|||
|
{
|
|||
|
var PageIndex = GetInt("PageIndex");
|
|||
|
var PageSize = GetInt("PageSize");
|
|||
|
var tNumber = 0;
|
|||
|
|
|||
|
var Keyword = GetString("Keyword");
|
|||
|
|
|||
|
var exp = Expressionable.Create<Shop>();
|
|||
|
|
|||
|
if (!string.IsNullOrEmpty(Keyword))
|
|||
|
{
|
|||
|
exp.And(f => f.Remark.Contains(Keyword));
|
|||
|
}
|
|||
|
var DataList = Db.Queryable<Shop>().Where(exp.ToExpression())
|
|||
|
.ToPageList(PageIndex, PageSize, ref tNumber);
|
|||
|
|
|||
|
var res = new PageResult<Shop>(DataList, tNumber, PageSize, PageIndex);
|
|||
|
return PutData(res);
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 新增商户
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpPost, ErrorFilter]
|
|||
|
public WebResult AddShop()
|
|||
|
{
|
|||
|
var Remark = GetString("Remark");
|
|||
|
var AppId = GetString("AppId", true);
|
|||
|
var AppSecret = GetString("AppSecret", true);
|
|||
|
var PartnerId = "";//GetString("PartnerId", true);
|
|||
|
var PartnerKey = GetString("PartnerKey", true);
|
|||
|
var FootTxt = GetString("FootTxt");
|
|||
|
var CertPath = GetString("CertPath", true);
|
|||
|
var shopType = GetEnum<ShopType>("ShopType", true);
|
|||
|
bool isExist = false;
|
|||
|
if (shopType == ShopType.微信商户)
|
|||
|
{
|
|||
|
PartnerId = GetString("PartnerId", true);
|
|||
|
isExist = Db.Queryable<Shop>().Any(x => x.PartnerId == PartnerId);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
isExist = Db.Queryable<Shop>().Any(x => x.AppId == AppId);
|
|||
|
}
|
|||
|
if (isExist)
|
|||
|
{
|
|||
|
return PutData("当前商户ID已存在");
|
|||
|
}
|
|||
|
|
|||
|
var shop = new Shop()
|
|||
|
{
|
|||
|
AppId = AppId,
|
|||
|
AppSecret = AppSecret,
|
|||
|
PartnerId = PartnerId,
|
|||
|
PartnerKey = PartnerKey,
|
|||
|
FootTxt = FootTxt,
|
|||
|
CertPaths = CertPath,
|
|||
|
Remark = Remark,
|
|||
|
ShopType = shopType
|
|||
|
};
|
|||
|
Db.Insertable(shop).ExecuteCommand();
|
|||
|
|
|||
|
return PutSuccess;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 编辑商户
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpPost, ErrorFilter]
|
|||
|
public WebResult SaveShop()
|
|||
|
{
|
|||
|
var Id = GetInt("Id", true);
|
|||
|
var Remark = GetString("Remark");
|
|||
|
var AppId = GetString("AppId", true);
|
|||
|
var AppSecret = GetString("AppSecret", true);
|
|||
|
//var PartnerId = GetString("PartnerId", true);
|
|||
|
var PartnerKey = GetString("PartnerKey", true);
|
|||
|
var FootTxt = GetString("FootTxt");
|
|||
|
var CertPath = GetString("CertPath", true);
|
|||
|
//var shopType = GetEnum<ShopType>("ShopType", true);
|
|||
|
var shop = Db.Queryable<Shop>().First(x => x.Id == Id);
|
|||
|
if (shop == null)
|
|||
|
{
|
|||
|
return PutData("目标商户ID不存在");
|
|||
|
}
|
|||
|
if (shop.ShopType == ShopType.微信商户)
|
|||
|
{
|
|||
|
shop.PartnerId = GetString("PartnerId", true);
|
|||
|
}
|
|||
|
|
|||
|
shop.AppId = AppId;
|
|||
|
shop.AppSecret = AppSecret;
|
|||
|
//shop.PartnerId = PartnerId;
|
|||
|
shop.PartnerKey = PartnerKey;
|
|||
|
shop.FootTxt = FootTxt;
|
|||
|
shop.CertPaths = CertPath;
|
|||
|
shop.Remark = Remark;
|
|||
|
Db.Storageable(shop).ExecuteCommand();
|
|||
|
return PutSuccess;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 删除商户
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpPost, ErrorFilter]
|
|||
|
public WebResult DelShop()
|
|||
|
{
|
|||
|
var Id = GetInt("Id", true);
|
|||
|
var shop = Db.Queryable<Shop>().First(x => x.Id == Id);
|
|||
|
if (shop == null)
|
|||
|
{
|
|||
|
return PutData("目标商户ID不存在");
|
|||
|
}
|
|||
|
Db.Deleteable(shop).ExecuteCommand();
|
|||
|
return PutSuccess;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 新增全局变量
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpPost, ErrorFilter]
|
|||
|
public WebResult AddGlobalVariable()
|
|||
|
{
|
|||
|
var name = GetString("Name", true);
|
|||
|
var value = GetString("Value", true);
|
|||
|
var item = this.Db.Queryable<GlobalVariable>().Where(w => w.Name == name).First();
|
|||
|
if (item == null)
|
|||
|
{
|
|||
|
item = new GlobalVariable();
|
|||
|
item.Name = name;
|
|||
|
item.Value = value;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return PutData("数据已经存在");
|
|||
|
}
|
|||
|
this.Db.Storageable(item).ExecuteCommand();
|
|||
|
return PutSuccess;
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// 编辑全局变量
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpPost, ErrorFilter]
|
|||
|
public WebResult EditGlobalVariable()
|
|||
|
{
|
|||
|
var id = GetInt("Id", true);
|
|||
|
var name = GetString("Name", true);
|
|||
|
var value = GetString("Value", true);
|
|||
|
var item = this.Db.Queryable<GlobalVariable>().Where(w => w.Id == id).First();
|
|||
|
if (item == null)
|
|||
|
{
|
|||
|
return PutData("数据不存在");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
item.Name = name;
|
|||
|
item.Value = value;
|
|||
|
}
|
|||
|
this.Db.Storageable(item).ExecuteCommand();
|
|||
|
return PutSuccess;
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// 分页获取全局变量
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpPost, ErrorFilter]
|
|||
|
public WebResult GetGlobalVariableList()
|
|||
|
{
|
|||
|
var Keyword = GetString("Keyword");
|
|||
|
var PageIndex = GetInt("PageIndex", true);
|
|||
|
var PageSize = GetInt("PageSize", true);
|
|||
|
|
|||
|
if (PageSize > 100) PageSize = 100;
|
|||
|
var tNumber = 0;
|
|||
|
var exp = Expressionable.Create<GlobalVariable>();
|
|||
|
if (!string.IsNullOrEmpty(Keyword))
|
|||
|
{
|
|||
|
exp.And(f => f.Name.Contains(Keyword));
|
|||
|
}
|
|||
|
var DataList = Db.Queryable<GlobalVariable>().Where(exp.ToExpression()).ToPageList(PageIndex, PageSize, ref tNumber);
|
|||
|
var res = new PageResult<GlobalVariable>(DataList, tNumber, PageSize, PageIndex);
|
|||
|
return PutData(res);
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// 删除全局变量
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpPost, ErrorFilter]
|
|||
|
public WebResult RemoveGlobalVariable()
|
|||
|
{
|
|||
|
var name = GetString("Name", true);
|
|||
|
var item = this.Db.Queryable<GlobalVariable>().Where(w => w.Name == name).First();
|
|||
|
if (item != null)
|
|||
|
{
|
|||
|
this.Db.Deleteable(item).ExecuteCommand();
|
|||
|
}
|
|||
|
return PutSuccess;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 设置网站信息
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpPost, ErrorFilter]
|
|||
|
public WebResult SetWebInfo()
|
|||
|
{
|
|||
|
//如果是网站上登录,但是不是创建者
|
|||
|
if (this.Session != null && !this.Session.IsCreator)
|
|||
|
{
|
|||
|
return PutData("无权操作");
|
|||
|
}
|
|||
|
var logo = GetString("Logo", true);
|
|||
|
var webColorType = GetString("WebColorType", true);
|
|||
|
var webName = GetString("WebName", true);
|
|||
|
var webNaviType = GetString("WebNaviType", true);
|
|||
|
var webThemeColor = GetString("WebThemeColor");
|
|||
|
var copyright = GetString("Copyright");
|
|||
|
var data = new WebInfo()
|
|||
|
{
|
|||
|
Logo = logo,
|
|||
|
WebColorType = webColorType,
|
|||
|
WebName = webName,
|
|||
|
WebNaviType = webNaviType,
|
|||
|
WebThemeColor = webThemeColor,
|
|||
|
Copyright = copyright
|
|||
|
};
|
|||
|
Db.Save(data);
|
|||
|
return PutSuccess;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|