You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

174 lines
6.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using POSV.Entity;
using POSV.HttpResponse;
using POSV.Utils;
namespace POSV.HttpApi
{
/// <summary>
/// POS在线登录
/// </summary>
public class LoginApi : BaseApi
{
protected static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
/// <summary>
/// 门店计费检测
/// </summary>
/// <param name="storeId"></param>
/// <param name="posNo"></param>
/// <param name="no"></param>
/// <param name="passwd"></param>
/// <returns></returns>
public static Tuple<bool, string, PosAuth> PosAuth(string storeId, string posNo)
{
try
{
//连接开放平台
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
//构建请求参数
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "pos.auth");
parameters.Add("storeId", storeId);
parameters.Add("posNo", posNo);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<EntityResponse<PosAuth>>(response);
//成功
if (result.Status == 1)
{
var posAuth = result.Data;
return new Tuple<bool, string, PosAuth>(true, result.Message, posAuth);
}
else
{
return new Tuple<bool, string, PosAuth>(false, result.Message, null);
}
}
else
{
string errMessage = PaserErrors(response);
return new Tuple<bool, string, PosAuth>(false, errMessage, null);
}
}
catch (Exception ex)
{
logger.Error(ex, ex.Message);
return new Tuple<bool, string, PosAuth>(false, "门店授权信息校验异常", null);
}
}
/// <summary>
/// 收银员登录
/// </summary>
/// <param name="storeId"></param>
/// <param name="posNo"></param>
/// <param name="no"></param>
/// <param name="passwd"></param>
/// <returns></returns>
public static Tuple<bool , string , Worker> ValidateWorker(string storeId,string posNo,string no , string passwd)
{
try
{
//连接开放平台
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
//构建请求参数
SortedList<string , string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method" , "worker.login");
parameters.Add("storeId" , storeId);
parameters.Add("posNo" , posNo);
parameters.Add("userName" , no);
parameters.Add("password" , DesUtils.Encrypt(passwd));
var ignore = new List<string>();
ignore.Add("password");
parameters.Add("sign" , OpenApiUtils.Instance.Sign(api , parameters , ignore));
string response = HttpClientUtils.PostAsync(api , api.Url , parameters);
//logger.Info("登录返回结果:{0}", response);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<EntityResponse<Worker>>(response);
//成功
if (result.Status == 1)
{
var worker = result.Data;
if(worker.TenantId == null)
{
worker.TenantId = Global.Instance.Authc.TenantId;
}
return new Tuple<bool , string , Worker>(true , result.Message , worker);
}
else
{
return new Tuple<bool , string , Worker>(false , result.Message , null);
}
}
else
{
string errMessage = PaserErrors(response);
return new Tuple<bool , string , Worker>(false , errMessage , null);
}
}
catch (Exception ex)
{
logger.Error(ex , ex.Message);
return new Tuple<bool , string , Worker>(false , "网络有点不稳定,请再次点击登录按钮" , null);
}
}
public static Tuple<bool , string , Worker> DatabaseLogin(string workerNo , string passwd)
{
try
{
Worker worker = null;
using (var db = Global.Instance.OpenDataBase)
{
worker = db.FirstOrDefault<Worker>("where no = @0" , workerNo);
}
if (worker != null)
{
if (BCrypt.Verify(passwd , worker.Passwd))
{
return new Tuple<bool , string , Worker>(true , "脱机登录认证通过" , worker);
}
else
{
return new Tuple<bool , string , Worker>(false , "脱机工号或者密码错误" , null);
}
}
else
{
return new Tuple<bool , string , Worker>(false , "脱机登录认证未通过" , null);
}
}
catch (Exception ex)
{
logger.Error(ex , "脱机登录验证异常");
return new Tuple<bool , string , Worker>(false , "脱机登录验证异常" , null);
}
}
}
}