2025-11-18 17:43:12 +08:00
|
|
|
|
using Gatedge.K3Cloud.Utils;
|
|
|
|
|
|
using Gatedge.K3Cloud.Utils.Common;
|
|
|
|
|
|
using Gatedge.K3Cloud.Utils.Exceptions;
|
|
|
|
|
|
using Gatedge.K3Cloud.Utils.Model.K3Request;
|
|
|
|
|
|
using Gatedge.K3Cloud.Utils.Model.K3Result;
|
|
|
|
|
|
using Gatedge.K3Cloud.Utils.Option;
|
|
|
|
|
|
using Gatedge.ScanCode.Common;
|
|
|
|
|
|
using Gatedge.ScanCode.Extension;
|
|
|
|
|
|
using Gatedge.ScanCode.Models.Dto;
|
|
|
|
|
|
using Gatedge.ScanCode.Services.IServices;
|
|
|
|
|
|
using Kingdee.CDP.WebApi.SDK;
|
|
|
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
|
|
using System.Data;
|
|
|
|
|
|
using System.Text.Json;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Gatedge.ScanCode.Controllers
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
///
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[Route("api/[controller]")]
|
|
|
|
|
|
[ApiController]
|
|
|
|
|
|
public class AccountController : ControllerBase
|
|
|
|
|
|
{
|
|
|
|
|
|
private readonly IAccountService _accountService;
|
|
|
|
|
|
private readonly List<K3CloudOption> _kingdeeOptions;
|
|
|
|
|
|
private readonly K3CloudApiUtils _utils;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 初始化控制器,加载ICO对象
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="utils"></param>
|
|
|
|
|
|
/// <param name="accountService"></param>
|
|
|
|
|
|
/// <param name="logger"></param>
|
|
|
|
|
|
public AccountController(K3CloudApiUtils utils, IAccountService accountService)
|
|
|
|
|
|
{
|
|
|
|
|
|
_utils = utils;
|
|
|
|
|
|
_accountService = accountService;
|
|
|
|
|
|
_kingdeeOptions = _utils.GetKingdeeOptions();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 登录账号
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="loginInfo"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
[HttpPost("login")]
|
|
|
|
|
|
public AjaxResult Login(LoginInfo loginInfo)
|
|
|
|
|
|
{
|
|
|
|
|
|
var clienter = _utils.CreateDefaultK3CloudApi(loginInfo);
|
|
|
|
|
|
//数据中心DBID修改为由前端传参
|
|
|
|
|
|
var loginValidate = clienter.Login(loginInfo.DBID, loginInfo.UserName, loginInfo.Password, loginInfo.LCId);
|
|
|
|
|
|
if (loginValidate)
|
|
|
|
|
|
{
|
|
|
|
|
|
var token = _accountService.Login(loginInfo);
|
|
|
|
|
|
var ajaxResult = AjaxResult.Success();
|
|
|
|
|
|
ajaxResult.Add("token", token);
|
|
|
|
|
|
return ajaxResult;
|
|
|
|
|
|
}
|
|
|
|
|
|
return AjaxResult.Error(500, "登录失败");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取登录描述信息
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="loginInfo"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
[HttpPost("getDetails")]
|
|
|
|
|
|
[Authorize]
|
|
|
|
|
|
public AjaxResult GetDetails(LoginInfo loginInfo)
|
|
|
|
|
|
{
|
|
|
|
|
|
// 初始化连接对象
|
|
|
|
|
|
_utils.InitCloudApi(loginInfo);
|
|
|
|
|
|
K3CloudApi clienter = _utils.CreateDefaultK3CloudApi(loginInfo);
|
|
|
|
|
|
var loginValidate = clienter.ValidateLogin(
|
|
|
|
|
|
loginInfo.DBID,
|
|
|
|
|
|
loginInfo.UserName,
|
|
|
|
|
|
loginInfo.Password,
|
|
|
|
|
|
loginInfo.LCId
|
|
|
|
|
|
);
|
|
|
|
|
|
var reuslt = JsonSerializer.Deserialize<object>(loginValidate);
|
|
|
|
|
|
return AjaxResult.Success(reuslt);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取账套数据中心信息
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="jModel"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
[HttpPost("GetDataCenterList")]
|
|
|
|
|
|
public AjaxResult GetDataCenterList(DataCenter jModel)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(jModel.ServerUrl))
|
|
|
|
|
|
{
|
|
|
|
|
|
return AjaxResult.Error(500, "ServerUrl为空");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//访问金蝶官方接口获取数据中心
|
|
|
|
|
|
HttpClients httpClient = new HttpClients();
|
|
|
|
|
|
httpClient.Url = jModel.ServerUrl +
|
|
|
|
|
|
"/Kingdee.BOS.ServiceFacade.ServicesStub.Account.AccountService.GetDataCenterList.common.kdsvc";
|
|
|
|
|
|
string result = httpClient.Post();
|
|
|
|
|
|
return AjaxResult.Success(JsonSerializer.Deserialize<List<Dictionary<string, dynamic>>>(result));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 根据用户名返回组织范围
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="dataCenter"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
[HttpPost("SearchOrg")]
|
|
|
|
|
|
public AjaxResult SearchOrg([FromBody] DataCenter dataCenter)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(dataCenter.UserName))
|
|
|
|
|
|
{
|
|
|
|
|
|
return AjaxResult.Error(500, "用户名为空");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(dataCenter.DBID))
|
|
|
|
|
|
{
|
|
|
|
|
|
return AjaxResult.Error(500, "DBID为空");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(dataCenter.ServerUrl))
|
|
|
|
|
|
{
|
|
|
|
|
|
return AjaxResult.Error(500, "ServerUrl为空");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
K3CloudOption? kingdeeOption = _kingdeeOptions
|
|
|
|
|
|
.Where(n => n.AcctID == dataCenter.DBID
|
|
|
|
|
|
&& n.ServerUrl.ToUpperInvariant() == dataCenter.ServerUrl.ToUpperInvariant())
|
|
|
|
|
|
.FirstOrDefault();
|
|
|
|
|
|
|
|
|
|
|
|
if (kingdeeOption == null)
|
|
|
|
|
|
{
|
2025-12-04 14:28:21 +08:00
|
|
|
|
//return AjaxResult.Error(500, "配置文件没有对应的第三方授权登录信息!");
|
|
|
|
|
|
return AjaxResult.Error(500, @$"配置文件没有对应的第三方授权登录信息!
|
|
|
|
|
|
已配置信息:{JsonSerializer.Serialize(_kingdeeOptions)}
|
|
|
|
|
|
请求信息:{JsonSerializer.Serialize(dataCenter)}
|
|
|
|
|
|
");
|
2025-11-18 17:43:12 +08:00
|
|
|
|
}
|
2025-12-02 19:44:09 +08:00
|
|
|
|
_utils.InitCloudApi(new LoginInfo()
|
|
|
|
|
|
{
|
|
|
|
|
|
DBID = kingdeeOption.AcctID,
|
|
|
|
|
|
UserName = kingdeeOption.UserName,
|
|
|
|
|
|
LCId = kingdeeOption.LCID,
|
|
|
|
|
|
OrgNum = kingdeeOption.OrgNumber,
|
|
|
|
|
|
ServerUrl = kingdeeOption.ServerUrl,
|
|
|
|
|
|
});
|
2025-11-18 17:43:12 +08:00
|
|
|
|
Query queryParam = new Query()
|
|
|
|
|
|
{
|
|
|
|
|
|
FormId = "SEC_User",
|
|
|
|
|
|
FieldKeys = "FUserID,FName,FUserAccount,FOrgOrgId,FOrgOrgId.FNumber,FOrgOrgName",
|
|
|
|
|
|
};
|
2025-12-02 19:44:09 +08:00
|
|
|
|
queryParam.FilterString = $"FUserAccount = '{dataCenter.UserName}'";
|
|
|
|
|
|
var resultList = _utils.QueryList(queryParam);
|
|
|
|
|
|
return AjaxResult.Success(resultList.List);
|
2025-11-18 17:43:12 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 退出账号
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
[HttpPost("logout")]
|
|
|
|
|
|
[Authorize]
|
|
|
|
|
|
public AjaxResult Logout()
|
|
|
|
|
|
{
|
|
|
|
|
|
// 初始化连接对象
|
|
|
|
|
|
var loginInfo = User.GetLoginInfoByClaimsPrincipal();
|
|
|
|
|
|
_utils.InitCloudApi(loginInfo);
|
|
|
|
|
|
K3CloudApi clienter = _utils.GetApiClient();
|
|
|
|
|
|
var isLogout = clienter.Logout();
|
|
|
|
|
|
if (isLogout)
|
|
|
|
|
|
{
|
|
|
|
|
|
return AjaxResult.Success();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return AjaxResult.Error("未知错误");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|