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