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.

148 lines
4.3 KiB
C#

9 months ago
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Nancy;
using Nancy.Json;
using POSV.Common.Transport;
using POSV.Common.Util;
using POSV.Entity;
using POSV.Service.Utils;
namespace POSV.Service.Module
{
public class SaleClearModule : NancyModule
{
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
public SaleClearModule():base("/api/v1")
{
StaticConfiguration.DisableErrorTraces = true;
//请求沽清列表数据用于POS系统启动后初始化
Post["/sale/clear"] = r =>
{
return AvailableSaleClear();
};
Post["/sale/clear/list"] = r =>
{
//解析JSON请求参数
var body = Context.Request.Body;
int length = (int)body.Length;
byte[] array = new byte[length];
body.Read(array , 0 , length);
var json = System.Text.Encoding.UTF8.GetString(array);
var obj = JSON.Deserialize<Dictionary<string , string>>(json);
var dateTimer = obj["date"];
return GetSaleClearList(dateTimer);
};
Post["/sale/clear/change"] = r => {
//解析JSON请求参数
var body = Context.Request.Body;
int length = (int)body.Length;
byte[] array = new byte[length];
body.Read(array , 0 , length);
var json = System.Text.Encoding.UTF8.GetString(array);
return ChangeSaleClear(json);
};
}
private Response ChangeSaleClear(string json)
{
var transport = new TransportResponse<SaleClear>();
transport.Status = 0;
transport.Message = "执行失败";
transport.Data = null;
try
{
//收到收银端请求变更对象
var saleClear = JSON.Deserialize<SaleClear>(json);
//变更服务中心缓存数据
SaleClearUtils.Instance.Maps[saleClear.ProductId] = saleClear;
transport.Status = 1;
transport.Message = "执行成功";
transport.Data = saleClear;
}
catch (Exception ex)
{
logger.Error(ex , "获取沽清数据异常");
}
//logger.Info(JSON.Serialize(transport));
return Response.AsJson(transport);
}
private Response GetSaleClearList(string dateTimer = null)
{
var transport = new TransportResponse<List<SaleClear>>();
transport.Status = 0;
transport.Message = "执行失败";
transport.Data = new List<SaleClear>();
try
{
var result = SaleClearUtils.Instance.GetSaleClearList(dateTimer);
if (result.Item1)
{
transport.Status = 1;
transport.Message = "执行成功";
transport.Data = result.Item3;
}
}
catch (Exception ex)
{
logger.Error(ex , "获取沽清数据异常");
}
//logger.Info(JSON.Serialize(transport));
return Response.AsJson(transport);
}
/// <summary>
/// 获取当日及未来的可用沽清
/// </summary>
/// <param name="r"></param>
/// <returns></returns>
private Response AvailableSaleClear()
{
var result = new TransportResponse<List<SaleClear>>();
result.Status = 0;
result.Message = "执行异常";
result.Data = new List<SaleClear>();
try
{
result.Status = 1;
result.Message = "执行成功";
result.Data = SaleClearUtils.Instance.Maps.Values.ToList();
}
catch (Exception ex)
{
logger.Error(ex , "获取沽清数据异常");
}
//logger.Info(JSON.Serialize(result));
return Response.AsJson(result);
}
}
}