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.

9552 lines
381 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using POSV.Entity;
using POSV.HttpResponse;
using POSV.Utils;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using POSV.Entity.Pormotion;
using POSV.ShoppingCart;
namespace POSV.HttpApi
{
public class FastDownloadApi : BaseApi
{
protected static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
private static object _lock = new object();
private static FastDownloadApi _instance = null;
private ConcurrentQueue<DownloadSqlCache> _cache = null;
private static bool IS_Visitor = true;
private static Dictionary<string, Object> visitorMap = new Dictionary<string, Object>();
private static Dictionary<string, Object> addressMap = new Dictionary<string, Object>();
public static FastDownloadApi Instance
{
get
{
if (_instance == null)
{
lock (_lock)
{
_instance = new FastDownloadApi();
_instance.InitCache();
}
}
return _instance;
}
}
public void InitCache()
{
this._cache = new ConcurrentQueue<DownloadSqlCache>();
}
private void AddCache(DownloadSqlCache data)
{
this._cache.Enqueue(data);
}
public ConcurrentQueue<DownloadSqlCache> Cache()
{
return this._cache;
}
#region 操作员数据下载
public static DownloadNotify DownloadWorker()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.Worker;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "门店操作员";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "worker.list");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<Worker>>(response);
if (result.Status == 1)
{
if (CacheWorker(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
private static bool CacheWorker(string cacheName, List<Worker> lists)
{
bool result = false;
string tips = "门店操作员";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_worker];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "insert into [pos_worker] ([id],[tenantId],[storeId],[departmentId],[no],[passwd],[name],[sex],[birthday],[email],[mobile],[session],[lastDate],[memo],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.StoreId, entity.DepartmentId, entity.No, entity.Passwd, entity.Name, entity.Sex, entity.Birthday, entity.Email, entity.Mobile, entity.Session, entity.LastDate, entity.Memo, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 员工角色(折扣免单权限)列表下载
/// <summary>
/// 员工角色(折扣免单权限)列表
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadWorkerRole(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerRole;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "员工角色";
try
{
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "worker.posrole");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<WorkerRole>>(response);
if (result.Status == 1)
{
if (CacheWorkerRole(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerRoleError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerRoleError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerRoleError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerRoleException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadWorkerRoleNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerRole;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "员工角色";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "worker.posrole");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<WorkerRole>>(response);
if (result.Status == 1)
{
if (CacheWorkerRole(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerRoleError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerRoleError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerRoleError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerRoleException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
private static bool CacheWorkerRole(string cacheName, List<WorkerRole> lists, bool firstPager = true)
{
bool result = false;
string tips = "员工角色";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_worker_role];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_worker_role] ([id],[tenantId],[storeId],[workerId],[roleId],[discount],[free],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}');";
foreach (var entity in lists)
{
if (string.IsNullOrEmpty(entity.Id))
{
entity.Id = IdWorkerUtils.Instance.NextId();
}
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.StoreId, entity.WorkerId, entity.RoleId, entity.Discount, entity.Free, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 模块权限列表
/// <summary>
/// 模块权限列表
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadWorkerPermissions(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerPermissions;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "模块权限";
try
{
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "worker.posmodule");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<WorkerPermissions>>(response);
if (result.Status == 1)
{
if (CacheWorkerPermissions(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerPermissionsError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerPermissionsError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerPermissionsError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerPermissionsException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadWorkerPermissionsNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerPermissions;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "模块权限";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "worker.posmodule");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<WorkerPermissions>>(response);
if (result.Status == 1)
{
if (CacheWorkerPermissions(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerPermissionsError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerPermissionsError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerPermissionsError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.WorkerPermissionsException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheWorkerPermissions(string cacheName, List<WorkerPermissions> lists, bool firstPager = true)
{
bool result = false;
string tips = "模块权限";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_worker_permissions];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_worker_permissions] ([id],[tenantId],[storeId],[workerId],[moduleNo],[ext1],[ext2],[ext3],[createUser],[createDate])values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}');";
foreach (var entity in lists)
{
if (string.IsNullOrEmpty(entity.Id))
{
entity.Id = IdWorkerUtils.Instance.NextId();
}
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.StoreId, entity.WorkerId, entity.ModuleNo, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 获取门店营业方案
/// <summary>
/// 门店营业方案数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadBusinessPlan()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.BusinessPlan;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "门店营业方案";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.businessplan");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
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<BusinessPlan>>(response);
if (result.Status == 1)
{
if (CacheBusinessPlan(notify.CacheName, result.Data))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.BusinessPlanError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.BusinessPlanError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.BusinessPlanError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.BusinessPlanException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的门店营业方案
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheBusinessPlan(string cacheName, BusinessPlan entity)
{
bool result = false;
string tips = "门店营业方案";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_business_plan];", CacheName = cacheName });
string template = "insert into [pos_business_plan] ([id],[tenantId],[no],[name],[startType],[startTime],[endType],[endTime],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}');";
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.No, entity.Name, entity.StartType, entity.StartTime, entity.EndType, entity.EndTime, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 获取商品类别信息
/// <summary>
/// 菜品类别数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadProductType(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductType;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "商品类别信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.type");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductType>>(response);
if (result.Status == 1)
{
if (CacheProductType(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductTypeError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductTypeError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductTypeError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductTypeException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadProductTypeNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductType;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "商品分类信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.type");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductType>>(response);
if (result.Status == 1)
{
if (CacheProductType(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductTypeError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductTypeError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductTypeError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductTypeException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的菜品类别信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheProductType(string cacheName, List<ProductType> lists, bool firstPager = true)
{
bool result = false;
string tips = "菜品类别信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_type];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_product_type] ([id],[tenantId],[parentId],[no],[name],[path],[color],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.ParentId, entity.No, entity.Name, entity.Path, entity.Color, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 商品信息下载
/// <summary>
/// 菜品资料数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadProduct(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.Product;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "商品信息";
try
{
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.list");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<Product>>(response);
if (result.Status == 1)
{
if (CacheProduct(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadProductNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.Product;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "商品信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.list");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<Product>>(response);
if (result.Status == 1)
{
if (CacheProduct(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的商品信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheProduct(string cacheName, List<Product> lists, bool firstPager = true)
{
bool result = false;
string tips = "商品信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_product] ([id],[tenantId],[brandId],[typeId],[typePath],[no],[name],[shortName],[spell],[assistNo],[otherNo],[barCode],[english],[unitId],[price],[memberPrice],[memo],[commissionType],[commissionValue],[discountFlag],[suitFlag],[tapleFlag],[weighFlag],[currentFlag],[labelPrintFlag],[stopFlag],[groupName],[picture],[mebDiscountFlag],[giveFlag],[promotionFlag],[type],[stockFlag],[pointType],[pointValue],[purchaseTax],[saleTax],[lyRate],[costPrice],[purchasePrice],[dispatchPrice],[otherPrice],[specCount],[minPrice],[kdsFlag],[ext1],[ext3],[ext2],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}','{23}','{24}','{25}','{26}','{27}','{28}','{29}','{30}','{31}','{32}','{33}','{34}','{35}','{36}','{37}','{38}','{39}','{40}','{41}','{42}','{43}','{44}','{45}','{46}','{47}','{48}','{49}');";
foreach (var entity in lists)
{
string sql = string.Empty;
try
{
sql = string.Format(template, entity.Id, entity.TenantId, entity.BrandId, entity.TypeId, entity.TypePath, entity.No, entity.Name, entity.ShortName, entity.Spell, entity.AssistNo, entity.OtherNo, entity.BarCode, entity.English, entity.UnitId, entity.Price, entity.MemberPrice, entity.Memo, entity.CommissionType, entity.CommissionValue, entity.DiscountFlag, entity.SuitFlag, entity.TapleFlag, entity.WeighFlag, entity.CurrentFlag, entity.LabelPrintFlag, entity.StopFlag, entity.GroupName, entity.Picture, entity.MebDiscountFlag, entity.GiveFlag, entity.PromotionFlag, entity.Type, entity.StockFlag, entity.PointType, entity.PointValue, entity.PurchaseTax, entity.SaleTax, entity.LyRate, entity.CostPrice, entity.PurchasePrice, entity.DispatchPrice, entity.OtherPrice, entity.SpecCount, entity.MinPrice, entity.KdsFlag, entity.Ext1, entity.Ext3, entity.Ext2, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
catch (Exception ex)
{
logger.Info(sql);
logger.Info(ex);
}
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 获取商品单位信息
/// <summary>
/// 菜品类别数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadProductUnit(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductUnit;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "商品单位信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.unit");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductUnit>>(response);
if (result.Status == 1)
{
if (CacheProductUnit(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductUnitError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductUnitError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductUnitError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductUnitException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadProductUnitNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductUnit;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "商品单位信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.unit");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductUnit>>(response);
if (result.Status == 1)
{
if (CacheProductUnit(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductUnitError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductUnitError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductUnitError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductUnitException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的菜品单位信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheProductUnit(string cacheName, List<ProductUnit> lists, bool firstPager = true)
{
bool result = false;
string tips = "商品单位信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_unit];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_product_unit] ([id],[tenantId],[no],[name],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.No, entity.Name, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 获取商品图片信息
/// <summary>
/// 菜品类别数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadProductImage(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductImage;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "商品图片信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.image");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductImage>>(response);
if (result.Status == 1)
{
if (CacheProductImage(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductImageError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductImageError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductImageError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductImageException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadProductImageNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductImage;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "商品图片信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.image");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductImage>>(response);
if (result.Status == 1)
{
if (CacheProductImage(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductImageError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductImageError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductImageError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductImageException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的菜品类别信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheProductImage(string cacheName, List<ProductImage> lists, bool firstPager = true)
{
bool result = false;
string tips = "商品图片信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_image];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_product_image] ([id],[tenantId],[productId],[width],[height],[groupName],[storageFileName],[dfsAccessDomain],[length],[mimeType],[orderNo],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.ProductId, entity.Width, entity.Height, entity.GroupName, entity.StorageFileName, entity.DfsAccessDomain, entity.Length, entity.MimeType, entity.OrderNo, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 门店仓库
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadStoreStorage()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.StoreStorage;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "门店仓库";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.storage");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<StoreStorage>>(response);
if (result.Status == 1)
{
if (CacheStoreStorage(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.StoreStorageError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.StoreStorageError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.StoreStorageError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.StoreStorageException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheStoreStorage(string cacheName, List<StoreStorage> lists)
{
bool result = false;
string tips = "付款类型";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_store_storage];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "insert into [pos_store_storage] ([id],[tenantId],[no],[name],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}');";
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, entity.TenantId, entity.No, entity.Name, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 获取商品库存系数信息
/// <summary>
/// 商品库存系数数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadProductRatio(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductRatio;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "商品库存系数信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.ratio");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductRatio>>(response);
if (result.Status == 1)
{
if (CacheProductRatio(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductRatioError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductRatioError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductRatioError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductRatioException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadProductRatioNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductRatio;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "商品库存系数信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.ratio");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductRatio>>(response);
if (result.Status == 1)
{
if (CacheProductRatio(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductRatioError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductRatioError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductRatioError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductRatioException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的商品库存系数信息
/// </summary>
/// <returns></returns>
public static bool CacheProductRatio(string cacheName, List<ProductRatio> lists, bool firstPager = true)
{
bool result = false;
string tips = "商品库存系数信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_ratio];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_product_ratio] ([id],[tenantId],[productId],[dispatchUnitId],[purchaseUnitId],[pdScale],[packUnitId],[dpScale],[salesUnitId],[psScale],[maxStock],[minStock],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.ProductId, entity.DispatchUnitId, entity.PurchaseUnitId, entity.PdScale, entity.PackUnitId, entity.DpScale, entity.SalesUnitId, entity.PsScale, entity.MaxStock, entity.MinStock, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 获取门店商品库存信息
/// <summary>
/// 商品库存数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadProductStock(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductStock;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "商品库存信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.product.stock");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductStock>>(response);
if (result.Status == 1)
{
if (CacheProductStock(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductStockError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductStockError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductStockError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductStockException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadProductStockNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductStock;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "商品库存信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.product.stock");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductStock>>(response);
if (result.Status == 1)
{
if (CacheProductStock(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductStockError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductStockError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductStockError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductStockException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的商品库存信息
/// </summary>
/// <returns></returns>
public static bool CacheProductStock(string cacheName, List<ProductStock> lists, bool firstPager = true)
{
bool result = false;
string tips = "商品库存信息";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_stock];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "insert into [pos_product_stock] ([id],[tenantId],[storeId],[storageId],[storageName],[productId],[productNo],[productName],[specId],[specName],[productDescription],[dispatchUnitId],[dispatchUnitName],[packUnitId],[packUnitName],[stockAmount],[stockCost],[type],[typeId],[typeName],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.StoreId, entity.StorageId, entity.StorageName, entity.ProductId, entity.ProductNo, entity.ProductName, entity.SpecId, entity.SpecName, entity.ProductDescription, entity.DispatchUnitId, entity.DispatchUnitName, entity.PackUnitId, entity.PackUnitName, entity.StockAmount, entity.StockCost, entity.Type, entity.TypeId, entity.TypeName, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 营业日方案班次下载
/// <summary>
/// 操作员数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadBusinessPlanDetail()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.BusinessPlanDetail;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "门店班次";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.businessplan.detail");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<BusinessPlanDetail>>(response);
if (result.Status == 1)
{
if (CacheBusinessPlanDetail(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.BusinessPlanDetailError;
notify.Message = string.Format("缓存操作员数据发生错误");
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.BusinessPlanDetailError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.BusinessPlanDetailError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.BusinessPlanDetailException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheBusinessPlanDetail(string cacheName, List<BusinessPlanDetail> lists)
{
bool result = false;
string tips = "门店班次";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_business_plandetail];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "insert into [pos_business_plandetail] ([id],[tenantId],[planId],[name],[startType],[startTime],[endType],[endTime],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.PlanId, entity.Name, entity.StartType, entity.StartTime, entity.EndType, entity.EndTime, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 获取商品规格信息
/// <summary>
/// 菜品类别数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadProductSpec(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSpec;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "商品规格信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.spec");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductSpec>>(response);
if (result.Status == 1)
{
if (CacheProductSpec(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSpecError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSpecError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSpecError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSpecException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadProductSpecNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSpec;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "商品规格信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.spec");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductSpec>>(response);
if (result.Status == 1)
{
if (CacheProductSpec(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSpecError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSpecError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSpecError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSpecException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的菜品类别信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheProductSpec(string cacheName, List<ProductSpec> lists, bool firstPager = true)
{
bool result = false;
string tips = "商品规格信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_spec];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_product_spec] ([id],[tenantId],[productId],[no],[name],[price],[memberPrice],[otherPrice],[costPrice],[purchasePrice],[dispatchPrice],[materialRate],[isDefault],[minPrice],[deleteFlag],[thUseLevel],[realThUseLevel],[cost],[ext1],[ext3],[ext2],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.ProductId, entity.No, entity.Name, entity.Price, entity.MemberPrice, entity.OtherPrice, entity.CostPrice, entity.PurchasePrice, entity.DispatchPrice, entity.MaterialRate, entity.IsDefault, entity.MinPrice, entity.DeleteFlag, entity.ThUseLevel, entity.RealThUseLevel, entity.Cost, entity.Ext1, entity.Ext3, entity.Ext2, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 付款类型下载
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadPayType()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.PayType;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "付款类型";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.paytype");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<PayType>>(response);
if (result.Status == 1)
{
if (CachePayType(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.PayTypeError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.PayTypeError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.PayTypeError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.PayTypeException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CachePayType(string cacheName, List<PayType> lists)
{
bool result = false;
string tips = "付款类型";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_paytype];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "insert into [pos_paytype] ([id],[tenantId],[name],[no],[sign],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.Name, entity.No, entity.Sign, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 收银方式下载
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadPayMode()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.PayMode;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "收银方式";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
//zhangy 2020-02-18 Edit 注释了该代码启用新的store.period.discount.paymode相比旧方法多了periodDiscount字段解决不同支付方式扣率问题
///parameters.Add("method", "store.paymode");
///zhangy 2020-02-18 Add 启用新方法
parameters.Add("method", "store.period.discount.paymode");
//#if DEBUG
// if ("571022".Equals(Global.Instance.Authc.TenantId))
// {
// parameters.Add("method", "store.paymode");
// }
// else
// {
// parameters.Add("method", "store.period.discount.paymode");
// }
//#else
// parameters.Add("method", "store.period.discount.paymode");
//#endif
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<PayMode>>(response);
if (result.Status == 1)
{
if (CachePayMode(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.PayModeError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.PayModeError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.PayModeError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.PayModeException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CachePayMode(string cacheName, List<PayMode> lists)
{
bool result = false;
string tips = "收银方式";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_paymode];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "insert into [pos_paymode] ([id],[tenantId],[name],[no],[typeId],[shortcut],[pointFlag],[frontFlag],[rechargeFlag],[discount],[fixeAmount],[pbody],[certText],[incomeFlag],[otherRateType],[otherRateValue],[periodDiscount],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.Name, entity.No, entity.TypeId, entity.Shortcut, entity.PointFlag, entity.FrontFlag, entity.RechargeFlag, entity.Discount, entity.FixeAmount, JsonUtils.Serialize(entity.Body), entity.CertText, entity.IncomeFlag, entity.OtherRateType, entity.OtherRateValue, JsonUtils.Serialize(entity.Settlement), entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 餐桌区域下载
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadTableArea()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.TableArea;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "餐桌区域";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.table.area");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<TableArea>>(response);
if (result.Status == 1)
{
if (CacheTableArea(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.TableAreaError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.TableAreaError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.TableAreaError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.TableAreaException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheTableArea(string cacheName, List<TableArea> lists)
{
bool result = false;
string tips = "餐桌区域";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_tablearea];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "insert into [pos_tablearea] ([id],[tenantId],[name],[no],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.Name, entity.No, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 餐桌类型下载
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadTableType()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.TableType;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "餐桌类型";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.table.type");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<TableType>>(response);
if (result.Status == 1)
{
if (CacheTableType(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.TableTypeError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.TableTypeError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.TableTypeError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.TableTypeException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
private static bool CacheTableType(string cacheName, List<TableType> lists)
{
bool result = false;
string tips = "餐桌类型";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_tabletype];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "insert into [pos_tabletype] ([id],[tenantId],[name],[no],[color],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.Name, entity.No, entity.Color, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 餐桌信息下载
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadTable()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.Table;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "餐桌信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.table");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<Table>>(response);
if (result.Status == 1)
{
if (CacheTable(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.TableError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.TableError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.TableError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.TableException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheTable(string cacheName, List<Table> lists)
{
bool result = false;
string tips = "餐桌信息";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_table];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "insert into [pos_table] ([id],[tenantId],[name],[no],[storeId],[areaId],[typeId],[number],[ext1],[ext2],[ext3],[createUser],[createDate])values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.Name, entity.No, entity.StoreId, entity.AreaId, entity.TypeId, entity.Number, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 门店品牌下载
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadBrand()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.Brand;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "门店品牌";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.brand");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<Brand>>(response);
if (result.Status == 1)
{
if (CacheBrand(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.BrandError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.BrandError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.BrandError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.BrandException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
private static bool CacheBrand(string cacheName, List<Brand> lists)
{
bool result = false;
string tips = "门店品牌";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_brand];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "insert into [pos_brand] ([id],[tenantId],[name],[no],[memo],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.Name, entity.No, entity.Memo, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 做法类型数据下载
/// <summary>
/// 操作员数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadProductMakeType()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeType;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "做法类型";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.maketype");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<ProductMakeType>>(response);
if (result.Status == 1)
{
if (CacheProductMakeType(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeTypeError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeTypeError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeTypeError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeTypeException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的做法类型数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
private static bool CacheProductMakeType(string cacheName, List<ProductMakeType> lists)
{
bool result = false;
string tips = "做法类型";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_maketype];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "insert into [pos_product_maketype] ([id],[tenantId],[no],[name],[type],[isRadio],[seqNo],[color],[ext1],[ext3],[ext2],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.No, entity.Name, entity.Type, entity.IsRadio, entity.SeqNo, entity.Color, entity.Ext1, entity.Ext3, entity.Ext2, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 做法信息数据下载
/// <summary>
/// 操作员数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadProductMakeDetail()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeDetail;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "做法信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.makedetail");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<ProductMakeDetail>>(response);
if (result.Status == 1)
{
if (CacheProductMakeDetail(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeDetailError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeDetailError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeDetailError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeDetailException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的做法类型数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheProductMakeDetail(string cacheName, List<ProductMakeDetail> lists)
{
bool result = false;
string tips = "做法信息";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_makedetail];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "insert into [pos_product_makedetail] ([id],[tenantId],[no],[spell],[typeId],[addPrice],[qtyFlag],[memo],[orderNo],[color],[prvFlag],[ext1],[ext3],[ext2],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.No, entity.Spell, entity.TypeId, entity.AddPrice, entity.QtyFlag, entity.Memo, entity.OrderNo, entity.Color, entity.PrvFlag, entity.Ext1, entity.Ext3, entity.Ext2, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 商品私有做法信息下载
/// <summary>
/// 商品私有做法数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadProductMakeDetailPrivate(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeDetailPrivate;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "商品私有做法信息";
try
{
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.private.makedetail");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductMakeDetailPrivate>>(response);
if (result.Status == 1)
{
if (CacheProductMakeDetailPrivate(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeDetailPrivateError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeDetailPrivateError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeDetailPrivateError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeDetailPrivateException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadProductMakeDetailPrivateNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeDetailPrivate;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "商品私有做法信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.private.makedetail");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductMakeDetailPrivate>>(response);
if (result.Status == 1)
{
if (CacheProductMakeDetailPrivate(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeDetailPrivateError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeDetailPrivateError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeDetailPrivateError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductMakeDetailPrivateException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的商品私有做法信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheProductMakeDetailPrivate(string cacheName, List<ProductMakeDetailPrivate> lists, bool firstPager = true)
{
bool result = false;
string tips = "商品私有做法信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_makedetail_private];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "INSERT INTO [pos_product_makedetail_private] ([id], [tenantId], [productId], [makeId], [no], [spell], [typeId], [addPrice], [qtyFlag], [memo], [orderNo], [color], [ext1], [ext3], [ext2], [createUser], [createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
if (string.IsNullOrEmpty(entity.Id))
{
entity.Id = IdWorkerUtils.Instance.NextId();
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.ProductId, entity.MakeId, entity.No, entity.Spell, entity.TypeId, entity.AddPrice, entity.QtyFlag, entity.Memo, entity.OrderNo, entity.Color, entity.Ext1, entity.Ext3, entity.Ext2, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 获取套菜资料信息
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadProductSuit(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuit;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "套菜资料";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.suit");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductSuit>>(response);
if (result.Status == 1)
{
if (CacheProductSuit(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadProductSuitNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuit;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "套菜资料";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.suit");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductSuit>>(response);
if (result.Status == 1)
{
if (CacheProductSuit(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的菜品类别信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheProductSuit(string cacheName, List<ProductSuit> lists, bool firstPager = true)
{
bool result = false;
string tips = "套菜资料";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_suit];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_product_suit] ([id],[tenantId],[no],[productId],[name],[ext1],[ext3],[ext2],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.No, entity.ProductId, entity.Name, entity.Ext1, entity.Ext3, entity.Ext2, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 获取套菜明细信息
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadProductSuitDetail(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitDetail;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "套菜明细";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.suit.detail");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductSuitDetail>>(response);
if (result.Status == 1)
{
if (CacheProductSuitDetail(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitDetailError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitDetailError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitDetailError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitDetailException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadProductSuitDetailNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitDetail;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "套菜资料";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "product.suit.detail");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductSuitDetail>>(response);
if (result.Status == 1)
{
if (CacheProductSuitDetail(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitDetailError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitDetailError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitDetailError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductSuitDetailException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的菜品类别信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheProductSuitDetail(string cacheName, List<ProductSuitDetail> lists, bool firstPager = true)
{
bool result = false;
string tips = "套菜资料";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_suitdetail];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_product_suitdetail] ([id],[tenantId],[suitId],[suitProductId],[productId],[specId],[quantity],[addPrice],[defaultFlag],[ext1],[ext3],[ext2],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.SuitId, entity.SuitProductId, entity.ProductId, entity.SpecId, entity.Quantity, entity.AddPrice, entity.DefaultFlag, entity.Ext1, entity.Ext3, entity.Ext2, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 厨打方案下载
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadKitPlan()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.KitPlan;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "厨打方案";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "kit.plan");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<KitPlan>>(response);
if (result.Status == 1)
{
if (CacheKitPlan(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.KitPlanError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.KitPlanError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.KitPlanError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.KitPlanException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheKitPlan(string cacheName, List<KitPlan> lists)
{
bool result = false;
string tips = "厨打方案";
try
{
//清理数据
//list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId() , Priority = 0 , Sql = "delete from [pos_kit_plan];" , CacheName = notify.CacheName });
List<KitPlan> kits = null;
using (var db = Global.Instance.OpenDataBase)
{
kits = db.Query<KitPlan>().ToList();
}
if (kits == null)
{
kits = new List<KitPlan>();
}
if (lists.Count() > 0)
{
string template = "replace into [pos_kit_plan] ([id],[tenantId],[name],[no],[type],[memo],[keys],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}');";
foreach (var entity in lists)
{
string typeName = "一菜一单";
switch (entity.Type)
{
case "1":
{
typeName = "一小类一单";
}
break;
case "2":
{
typeName = "一桌一单";
}
break;
case "0":
default:
{
typeName = "一菜一单";
}
break;
}
KitPlan oldValue = null;
if (kits.Exists(x => x.Id == entity.Id))
{
oldValue = kits.Find(x => x.Id.Equals(entity.Id));
var keys = string.Format("{0}-{1}({2})", entity.No, entity.Name, typeName);
entity.Keys = string.IsNullOrEmpty(oldValue.Keys) ? keys : oldValue.Keys;
}
else
{
var keys = string.Format("{0}-{1}({2})", entity.No, entity.Name, typeName);
entity.Keys = keys;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.Name, entity.No, entity.Type, entity.Memo, entity.Keys, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 获取厨打商品信息
/// <summary>
/// 厨打商品数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadKitProduct(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.KitProduct;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "厨打商品信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "kit.product");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<KitProduct>>(response);
if (result.Status == 1)
{
if (CacheKitProduct(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.KitProductError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.KitProductError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.KitProductError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.KitProductException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadKitProductNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.KitProduct;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "厨打商品信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "kit.product");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<KitProduct>>(response);
if (result.Status == 1)
{
if (CacheKitProduct(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.KitProductError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.KitProductError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.KitProductError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.KitProductException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheKitProduct(string cacheName, List<KitProduct> lists, bool firstPager = true)
{
bool result = false;
string tips = "厨打商品信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_kit_product];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_kit_product] ([id],[tenantId],[storeId],[productId],[chudaFlag],[chuda],[chupinFlag],[chupin],[labelFlag],[labelValue],[ext1],[ext3],[ext2],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.StoreId, entity.ProductId, entity.ChudaFlag, entity.Chuda, entity.ChupinFlag, entity.Chupin, entity.LabelFlag, entity.LabelValue, entity.Ext1, entity.Ext3, entity.Ext2, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 厨显方案下载
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadKdsPlan()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.KdsPlan;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "厨显方案";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "kds.plan");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<KdsPlan>>(response);
if (result.Status == 1)
{
if (CacheKdsPlan(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.KdsPlanError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.KdsPlanError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.KdsPlanError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.KdsPlanException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheKdsPlan(string cacheName, List<KdsPlan> lists)
{
bool result = false;
string tips = "厨显方案";
try
{
//清理数据
//list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId() , Priority = 0 , Sql = "delete from [pos_kit_plan];" , CacheName = notify.CacheName });
if (lists.Count() > 0)
{
string template = "replace into [pos_kds_plan] ([id], [tenantId], [name], [no], [memo], [keys], [ext1], [ext2], [ext3], [createUser], [createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
var keys = string.Format("{0}-{1}", entity.No, entity.Name);
entity.Keys = keys;
string sql = string.Format(template, entity.Id, entity.TenantId, entity.Name, entity.No, entity.Memo, entity.Keys, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 获取厨显商品信息
/// <summary>
/// 厨显商品数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadKdsProduct(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.KdsProduct;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "厨显商品信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "kds.product");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<KdsProduct>>(response);
if (result.Status == 1)
{
if (CacheKdsProduct(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.KdsProductError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.KdsProductError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.KdsProductError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.KdsProductException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadKdsProductNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.KdsProduct;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "厨显商品信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "kds.product");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<KdsProduct>>(response);
if (result.Status == 1)
{
if (CacheKdsProduct(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.KdsProductError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.KdsProductError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.KdsProductError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.KdsProductException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheKdsProduct(string cacheName, List<KdsProduct> lists, bool firstPager = true)
{
bool result = false;
string tips = "厨显商品信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_kds_product];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_kds_product] ([id], [tenantId], [storeId], [productId], [chuxianFlag], [chuxian], [chuxianTime], [chupinFlag], [chupin], [chupinTime], [ext1], [ext2], [ext3], [createUser], [createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.StoreId, entity.ProductId, entity.ChuxianFlag, entity.Chuxian, entity.ChuxianTime, entity.ChupinFlag, entity.Chupin, entity.ChupinTime, entity.Ext1, entity.Ext3, entity.Ext2, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 打印机下载
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadPrinter()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.Printer;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "打印机";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "peripheral.printer.info");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<POSV.Entity.Printer>>(response);
if (result.Status == 1)
{
if (CachePrinter(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.PrinterError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.PrinterError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.PrinterError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.PrinterException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CachePrinter(string cacheName, List<POSV.Entity.Printer> lists)
{
bool result = false;
string tips = "打印机";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_printer] where [userDefined] = 0;", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "insert into [pos_printer] ([id],[tenantId],[name],[type],[dynamic],[port],[pageWidth],[baudRate],[dataNum],[checkNum],[stopNum],[pid],[vid],[initCode],[zbkCode],[cutCode],[ztbgCode],[ptztCode],[bkbgCode],[moneyCode],[userDefined],[memo],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}','{23}','{24}','{25}','{26}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.Name, entity.Type, entity.DynamicLibrary, entity.Port, entity.PageWidth, entity.BaudRate, entity.DataBit, entity.CheckBit, entity.StopBit, entity.Pid, entity.Vid, entity.InitCommand, entity.DoubleWidthCommand, entity.CutPageCommand, entity.DoubleHeightCommand, entity.NormalCommand, entity.DoubleWidthHeightCommand, entity.CashboxCommand, "0", entity.Memo, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 读卡器下载
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadCarder()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.Carder;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "读卡器";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "peripheral.card.reader.info");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<Carder>>(response);
if (result.Status == 1)
{
if (CacheCarder(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.TableError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.CarderError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.CarderError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.CarderException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
private static bool CacheCarder(string cacheName, List<Carder> lists)
{
bool result = false;
string tips = "读卡器";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_carder] where [userDefined] = 0;", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "insert into [pos_carder] ([id],[tenantId],[name],[cardType],[port],[baudRate],[userDefined],[memo],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.Name, entity.CardType, entity.Port, entity.BaudRate, "0", entity.Memo, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 门店信息下载
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadStoreInfo()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.StoreInfo;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "门店信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.message");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
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<StoreInfo>>(response);
if (result.Status == 1)
{
if (CacheStoreInfo(notify.CacheName, result.Data))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.StoreInfoError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.StoreInfoError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.StoreInfoError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.StoreInfoException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheStoreInfo(string cacheName, StoreInfo entity)
{
bool result = false;
string tips = "门店信息";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_store_info];", CacheName = cacheName });
string template = "insert into pos_store_info (id,tenantId,name,[no],manager,telphone,mobile,orderTel,printName,address,mail,stapleFlag,width,height,groupName,storageFileName,dfsAccessDomain,maxOffLine,costMode,dueDate,ext1,ext2,ext3,createUser,createDate,storeTaxRateFlag,saleTax,lyRate,storeRate,pbody) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}','{23}','{24}','{25}','{26}','{27}','{28}','{29}');";
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.Name, entity.No, entity.Manager, entity.Telphone, entity.Mobile, entity.OrderTel, entity.PrintName, entity.Address, entity.Mail, entity.StapleFlag, entity.Width, entity.Height, entity.GroupName, entity.StorageFileName, entity.DfsAccessDomain, entity.MaxOffLine, entity.CostMode, entity.DueDate, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate, entity.StoreTaxRateFlag, entity.SaleTax, entity.LyRate, entity.StoreRate, JsonUtils.Serialize(entity.Body));
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 门店图片信息下载
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadStorePrintImage()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.StorePrintImage;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "门店图片信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.print.image");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<StorePrintImage>>(response);
if (result.Status == 1)
{
if (CacheStorePrintImage(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.StorePrintImageError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.StorePrintImageError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.StorePrintImageError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.StorePrintImageException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheStorePrintImage(string cacheName, List<StorePrintImage> lists)
{
bool result = false;
string tips = "门店图片信息";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_store_print_image];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "insert into [pos_store_print_image] (id,tenantId,name,type,width,height,groupName,storageFileName,dfsAccessDomain,description,ext1,ext2,ext3,createUser,createDate)values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.Name, entity.Type, entity.Width, entity.Height, entity.GroupName, entity.StorageFileName, entity.DfsAccessDomain, entity.Description, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 门店双屏图片
/// <summary>
/// 数据下载 门店双屏图片
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadStoreAdvertPicture()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.AdvertPicture;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "门店双屏图片信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.advert.picture");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<AdvertPictures>>(response);
if (result.Status == 1)
{
if (CacheStoreAdvertPicture(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.AdvertPictureError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.AdvertPictureError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.AdvertPictureError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.AdvertPictureException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheStoreAdvertPicture(string cacheName, List<AdvertPictures> lists)
{
bool result = false;
string tips = "门店双屏图片信息";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_advert_pictures];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "INSERT INTO [pos_advert_pictures] ([id], [tenantId], [name], [width], [height], [dfsAccessDomain], [groupName], [storageFileName], [orderNo], [createUser], [createDate])values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.Name, entity.Width, entity.Height, entity.DfsAccessDomain, entity.GroupName, entity.StorageFileName, entity.OrderNo, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 门店双屏字幕
/// <summary>
/// 数据下载 门店双屏字幕
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadStoreAdvertCaption()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.AdvertCaption;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "门店双屏字幕信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.advert.caption");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<AdvertCaption>>(response);
if (result.Status == 1)
{
if (CacheStoreAdvertCaption(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.AdvertCaptionError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.AdvertCaptionError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.AdvertCaptionError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.AdvertCaptionException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheStoreAdvertCaption(string cacheName, List<AdvertCaption> lists)
{
bool result = false;
string tips = "门店双屏字幕信息";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_advert_caption];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "INSERT INTO [pos_advert_caption] ([id], [tenantId], [name], [content], [createUser], [createDate])values('{0}','{1}','{2}','{3}','{4}','{5}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.Name, entity.Content, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 饿了么菜品映射
/// <summary>
/// 数据下载 饿了么菜品映射
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadMappingDishEleMe()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.MappingDishEleMe;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "饿了么菜品映射信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.WaiMai);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "eleme.mapping.dish");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<MappingDishEleMe>>(response);
if (result.Status == 1)
{
if (CacheMappingDishEleMe(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.MappingDishEleMeError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.MappingDishEleMeError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.MappingDishEleMeError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.MappingDishEleMeException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheMappingDishEleMe(string cacheName, List<MappingDishEleMe> lists)
{
bool result = false;
string tips = "饿了么映射信息";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_mapping_product_eleme];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "INSERT INTO [pos_mapping_product_eleme] ([id],[tenantId], [foodId], [specId], [erpProductId], [erpSpecId], [createUser], [createDate])values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.FoodId, entity.SpecId, entity.ErpProductId, entity.ErpSpecId, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 美团菜品映射
/// <summary>
/// 数据下载 美团菜品映射
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadMeituanMappingDish()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.MappingDishMeiTuan;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "美团菜品映射信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.WaiMai);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "meituan.mapping.dish");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<MappingDishMeiTuan>>(response);
if (result.Status == 1)
{
if (CacheMeituanMappingDish(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.MappingDishMeiTuanError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.MappingDishMeiTuanError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.MappingDishMeiTuanError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.MappingDishMeiTuanException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheMeituanMappingDish(string cacheName, List<MappingDishMeiTuan> lists)
{
bool result = false;
string tips = "美团映射信息";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_mapping_product_meituan];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "INSERT INTO [pos_mapping_product_meituan] ([id],[tenantId], [dishId], [dishSkuId], [erpProductId], [erpSpecId], [createUser], [createDate])values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.DishId, entity.DishSkuId, entity.ErpProductId, entity.ErpSpecId, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 百度菜品映射
/// <summary>
/// 数据下载 百度菜品映射
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadBaiDuMappingDish()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.MappingDishBaiDu;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "百度菜品映射信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.WaiMai);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "baidu.mapping.dish");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<MappingDishBaiDu>>(response);
if (result.Status == 1)
{
if (CacheBaiDuMappingDish(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.MappingDishBaiDuError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.MappingDishBaiDuError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.MappingDishBaiDuError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.MappingDishBaiDuException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheBaiDuMappingDish(string cacheName, List<MappingDishBaiDu> lists)
{
bool result = false;
string tips = "百度映射信息";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_mapping_product_baidu];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "INSERT INTO [pos_mapping_product_baidu] ([id],[tenantId], [dishId], [dishSkuId], [erpProductId], [erpSpecId], [createUser], [createDate])values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.DishId, entity.DishSkuId, entity.ErpProductId, entity.ErpSpecId, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 费用项目
/// <summary>
/// 数据下载 费用项目
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadFeeitem()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.Feeitem;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "费用项目";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.feeitem.list");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<Feeitem>>(response);
if (result.Status == 1)
{
if (CacheFeeitem(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.FeeitemError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.FeeitemError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.FeeitemError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.FeeitemException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheFeeitem(string cacheName, List<Feeitem> lists)
{
bool result = false;
string tips = "费用项目";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_feeitem];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "INSERT INTO [pos_feeitem] ([id],[tenantId], [name], [type], [enabled], [orderNo], [createUser], [createDate])values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.Name, entity.Type, entity.Enabled, entity.OrderNo, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 获取门店熟客信息
public static DownloadNotify DownloadVisitor(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.Visitor;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "门店熟客信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "visitor.list");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
if (IS_Visitor)
{
parameters.Add("createDate", GetDownloadDateTime());
}
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
ignore.Add("createDate");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<Visitor>>(response);
if (result.Status == 1)
{
if (CacheVisitor(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadVisitorNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.Visitor;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "门店熟客信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "visitor.list");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
if (IS_Visitor)
{
parameters.Add("createDate", GetDownloadDateTime());
}
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
ignore.Add("createDate");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<Visitor>>(response);
if (result.Status == 1)
{
if (CacheVisitor(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheVisitor(string cacheName, List<Visitor> lists, bool firstPager = true)
{
bool result = false;
string tips = "门店熟客信息";
try
{
//清理数据
if (firstPager)
{
if (IS_Visitor)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_visitor] where [upload] = 1 and createDate > '" + GetDownloadDateTime() + "';", CacheName = cacheName });
}
else
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_visitor] where [upload] = 1 ;", CacheName = cacheName });
}
}
if (lists.Count() > 0)
{
string template = "insert into pos_visitor (id,tenantId,storeId,[no],name,tel,spell,sex,title,position,fphone,sphone,description,upload,ext1,ext2,ext3,createUser,createDate)values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}',1,'{13}','{14}','{15}','{16}','{17}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
if (!visitorMap.ContainsKey(entity.Id))
{
string sql = string.Format(template, entity.Id, entity.TenantId, entity.StoreId, entity.No, entity.Name, entity.Tel, entity.Spell, entity.Sex, entity.Title, entity.Position, entity.Phone1, entity.Phone2, entity.Description, entity.Ext1, entity.Ext3, entity.Ext2, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
visitorMap.Add(entity.Id, entity.Id);
}
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
/// <summary>
/// 获取请求时间
/// </summary>
/// <returns></returns>
public static string GetDownloadDateTime()
{
DateTime _datetime = new DateTime();
using (var db = Global.Instance.OpenDataBase)
{
string _sql = "select count(1) from pos_visitor";
int count = db.FirstOrDefault<int>(_sql);
if (count > 500)
{
_datetime = DateTime.Now.AddDays(-30);
return _datetime.ToString("yyyy-MM-dd HH:mm:ss");
}
}
return "";
}
#endregion
#region 获取门店熟客标签信息
public static DownloadNotify DownloadVisitorTag(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorTag;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "门店熟客标签信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "visitor.tag.list");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<VisitorTag>>(response);
if (result.Status == 1)
{
if (CacheVisitorTag(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorTagError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorTagError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorTagError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorTagException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadVisitorTagNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorTag;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "门店熟客标签信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "visitor.tag.list");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<VisitorTag>>(response);
if (result.Status == 1)
{
if (CacheVisitorTag(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorTagError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorTagError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorTagError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorTagException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheVisitorTag(string cacheName, List<VisitorTag> lists, bool firstPager = true)
{
bool result = false;
string tips = "门店熟客标签信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_visitor_tag] where [upload] = 1;", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into pos_visitor_tag (id,tenantId,visitorId,name,upload,ext1,ext2,ext3,createUser,createDate)values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.VisitorId, entity.Name, 1, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 获取门店熟客地址信息
public static DownloadNotify DownloadVisitorAddress(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorAddress;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "门店熟客地址信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "visitor.address.list");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
if (IS_Visitor)
{
parameters.Add("createDate", GetDownloadDateTime());
}
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
ignore.Add("createDate");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<VisitorAddress>>(response);
if (result.Status == 1)
{
if (CacheVisitorAddress(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorAddressError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorAddressError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorAddressError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorAddressException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadVisitorAddressNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorAddress;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "门店熟客地址信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "visitor.address.list");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
if (IS_Visitor)
{
parameters.Add("createDate", GetDownloadDateTime());
}
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
ignore.Add("createDate");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<VisitorAddress>>(response);
if (result.Status == 1)
{
if (CacheVisitorAddress(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorAddressError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorAddressError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorAddressError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.VisitorAddressException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheVisitorAddress(string cacheName, List<VisitorAddress> lists, bool firstPager = true)
{
bool result = false;
string tips = "门店熟客标签信息";
try
{
//清理数据
if (firstPager)
{
if (IS_Visitor)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_visitor_address] where [upload] = 1 and createDate > '" + GetDownloadDateTime() + "';", CacheName = cacheName });
}
else
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_visitor_address] where [upload] = 1 ;", CacheName = cacheName });
}
}
if (lists.Count() > 0)
{
string template = "insert into pos_visitor_address (id,tenantId,name,visitorId,telephone,areaName,address,description,upload,ext1,ext2,ext3,createUser,createDate)values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
if (!addressMap.ContainsKey(entity.Id))
{
string sql = string.Format(template, entity.Id, entity.TenantId, entity.Name, entity.VisitorId, entity.Telephone, entity.AreaName, entity.Address, entity.Description, 1, entity.Ext1, entity.Ext3, entity.Ext2, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
addressMap.Add(entity.Id, entity.Id);
}
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 促销下载
#region 卡友日
/// <summary>
/// 数据下载 卡友日
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadCardProDay()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.CardProDay;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "会员促销";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Card);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "card.pro.day.detail");
parameters.Add("shopNo", Global.Instance.Authc.StoreNo);
parameters.Add("posNo", Global.Instance.Authc.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<CardProDay>>(response);
if (result.Status == 1)
{
CardPromotion pro = null;
if (!string.IsNullOrEmpty(result.Data.Id))//排除没有设置卡友日的情况
{
var data = result.Data;
pro = new CardPromotion();
pro.Id = data.Id;
pro.TenantId = data.TenantId;
pro.Type = PromotionType..ToString();
pro.Content = JsonUtils.Serialize(data);
}
if (CacheCardProDay(notify.CacheName, pro))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.CardProDayError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.CardProDayError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.CardProDayError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.CardProDayException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheCardProDay(string cacheName, CardPromotion entity)
{
bool result = false;
string tips = "会员促销";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_card_promotion];", CacheName = cacheName });
//为空对象,没有设置卡友日或取消卡友日
if (entity != null)
{
string template = "INSERT INTO [pos_card_promotion] ([id], [tenantId], [type], [content], [createUser], [createDate])values('{0}','{1}','{2}','{3}','{4}','{5}');";
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.Type, entity.Content, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 后台促销
/// <summary>
/// 门店促销数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadStoreTask(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreTask;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "门店促销信息";
try
{
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "promotion.store.task");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("startDate", DateTime.Now.ToString("yyyy-MM-dd"));
parameters.Add("day", "3");
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("day");
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<PromotionTask>>(response);
if (result.Status == 1)
{
if (CachePromotionStoreTask(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreTaskError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreTaskError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreTaskError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreTaskException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadStoreTaskNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreTask;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "门店促销信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "promotion.store.task");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("startDate", DateTime.Now.ToString("yyyy-MM-dd"));
parameters.Add("day", "3");
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("day");
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<PromotionTask>>(response);
if (result.Status == 1)
{
if (CachePromotionStoreTask(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreTaskError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreTaskError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreTaskError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreTaskException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的门店促销信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
private static bool CachePromotionStoreTask(string cacheName, List<PromotionTask> lists, bool firstPager = true)
{
bool result = false;
string tips = "门店促销信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_promotion_task];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "INSERT INTO [pos_promotion_task] ([id], [tenantId], [storeId], [sn], [scheduleId], [scheduleSn], [promotionId], [promotionSn], [promotionType], [valueType], [valueId], [valueNo], [valueName], [valueExt1], [valueExt2], [schemeId], [schemeSn], [startDate], [endDate], [startTime], [endTime], [validWeek],[validMonth], [isRepeatDiscount], [isAll], [goodsBlackList], [discountType], [discountValue], [rule], [status], [setMan], [setTime], [isOnlyMember], [createUser], [createDate])values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}','{23}','{24}','{25}','{26}','{27}','{28}','{29}','{30}','{31}','{32}','{33}','{34}');";
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.StoreId, entity.Sn, entity.ScheduleId, entity.ScheduleSn, entity.PromotionId, entity.PromotionSn, entity.PromotionType, entity.ValueType, entity.ValueId, entity.ValueNo, entity.ValueName, entity.ValueExt1, entity.ValueExt2, entity.SchemeId, entity.SchemeSn, entity.StartDate, entity.EndDate, entity.StartTime, entity.EndTime, entity.ValidWeek, entity.ValidMonth, entity.IsRepeatDiscount, entity.IsAll, entity.GoodsBlackList, entity.DiscountType, entity.DiscountValue, entity.Rule, entity.Status, entity.SetMan, entity.SetTime, entity.IsOnlyMember, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 门店优惠券
/// <summary>
/// 门店优惠券数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadStoreCoupon(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreCoupon;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "门店优惠券信息";
try
{
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.coupon.list");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<StoreCoupon>>(response);
if (result.Status == 1)
{
if (CacheStoreCoupon(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreCouponError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreCouponError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreCouponError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreCouponException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadStoreCouponNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreCoupon;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "门店优惠券信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.coupon.list");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<StoreCoupon>>(response);
if (result.Status == 1)
{
if (CacheStoreCoupon(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreCouponError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreCouponError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreCouponError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.PromotionStoreCouponException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的门店优惠券信息
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
private static bool CacheStoreCoupon(string cacheName, List<StoreCoupon> lists, bool firstPager = true)
{
bool result = false;
string tips = "门店促销信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_store_coupon];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "INSERT INTO pos_store_coupon (id, tenantId, name, startDate, endDate, startTime, endTime, weekDays, validMonth, description, type, rule, status,voucherFlag, createDate, createUser)values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}');";
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.Name, entity.StartDate, entity.EndDate, entity.StartTime, entity.EndTime, entity.WeekDays, entity.ValidMonth, entity.Description, entity.Type, entity.Rule, entity.Status, entity.VoucherFlag, entity.CreateDate, entity.CreateUser);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#endregion
#region 总部支付参数下载
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadRechargeParameter()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.RechargeParameter;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "总部支付参数";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.recharge.parameter.list");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListResponse<RechargeParameter>>(response);
if (result.Status == 1)
{
if (CacheRechargeParameter(notify.CacheName, result.List))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.RechargeParameterError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.RechargeParameterError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.RechargeParameterError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.RechargeParameterException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheRechargeParameter(string cacheName, List<RechargeParameter> lists)
{
bool result = false;
string tips = "总部支付参数";
try
{
//清理数据
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_recharge_parameter];", CacheName = cacheName });
if (lists.Count() > 0)
{
string template = "insert into [pos_recharge_parameter] ([id],[tenantId],[no],[name],[sign],[pbody],[certText],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}');";
foreach (var entity in lists)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.No, entity.Name, entity.Sign, JsonUtils.Serialize(entity.Body), entity.CertText, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region POS设置信息下载
/// <summary>
/// 数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadSetPlan()
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.SetPlan;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "总部支付参数";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "pos.setplan.down");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("terminalType", "x86");
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<SetPlan>>(response);
if (result.Status == 1)
{
if (CacheSetPlan(notify.CacheName, result.Data))
{
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.SetPlanError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.SetPlanError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.SetPlanError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.SetPlanException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheSetPlan(string cacheName, SetPlan setPlan)
{
bool result = false;
string tips = "总部支付参数";
try
{
List<Entity.Resources> resourcesList = setPlan.Resources;
if (resourcesList != null && resourcesList.Count() > 0)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_resources];", CacheName = cacheName });
string template = "insert into [pos_resources] ([id],[tenantId],[group],[name],[keycode],[keydata],[enable],[permission],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}');";
foreach (var entity in resourcesList)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.Group, entity.Name, entity.KeyCode, entity.KeyData, entity.Enable, entity.PermissionCode, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
List<ShortcutMenu> shortcutList = setPlan.Shortcut;
if (shortcutList != null && shortcutList.Count() > 0)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_shortcut];", CacheName = cacheName });
string template = "insert into [pos_shortcut] ([id],[tenantId],[area],[parentId],[name],[alias],[keycode],[keydata],[color1],[color2],[color3],[fontSize],[shortcut],[orderNo],[icon],[enable],[resourceId],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}');";
foreach (var entity in shortcutList)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
string sql = string.Format(template, entity.Id, entity.TenantId, entity.Area, entity.ParentId, entity.Name, entity.Alias, entity.KeyCode, entity.KeyData, entity.Color1, entity.Color2, entity.Color3, entity.FontSize, entity.Shortcut, entity.OrderNo, entity.Icon, entity.Enable, entity.ResourceId, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
List<ModuleMenu> moduleList = setPlan.Module;
if (moduleList != null && moduleList.Count() > 0)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_module];", CacheName = cacheName });
string template = "insert into [pos_module] ([id],[tenantId],[area],[parentId],[name],[alias],[keycode],[keydata],[color1],[color2],[color3],[fontSize],[shortcut],[orderNo],[icon],[enable],[resourceId],[layout],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}');";
foreach (var entity in moduleList)
{
if (Global.Instance.Authc != null && entity.TenantId == null)
{
entity.TenantId = Global.Instance.Authc.TenantId;
}
if (!"云参数上传".Equals(entity.KeyCode))
{
string sql = string.Format(template, entity.Id, entity.TenantId, entity.Area, entity.ParentId, entity.Name, entity.Alias, entity.KeyCode, entity.KeyData, entity.Color1, entity.Color2, entity.Color3, entity.FontSize, entity.Shortcut, entity.OrderNo, entity.Icon, entity.Enable, entity.ResourceId, entity.Layout, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 商品耗料配方信息下载
/// <summary>
/// 商品耗料配方数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadProductBurden(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductBurden;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "商品耗料配方";
try
{
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.product.burden");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductBurden>>(response);
if (result.Status == 1)
{
if (CacheProductBurden(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductBurdenError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductBurdenError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductBurdenError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductBurdenException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadProductBurdenNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.ProductBurden;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "商品信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.product.burden");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<ProductBurden>>(response);
if (result.Status == 1)
{
if (CacheProductBurden(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductBurdenError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductBurdenError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.ProductBurdenError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.ProductBurdenException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的商品耗料配方
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheProductBurden(string cacheName, List<ProductBurden> lists, bool firstPager = true)
{
bool result = false;
string tips = "商品耗料配方信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_burden];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_product_burden] ([id],[tenantId],[productId],[specId],[burdenProductId],[burdenSpecId],[salesUnitId],[salesAmount],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}');";
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, entity.TenantId, entity.ProductId, entity.SpecId, entity.BurdenProductId, entity.BurdenSpecId, entity.SalesUnitId, entity.SalesAmount, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 做法耗料配方信息下载
/// <summary>
/// 做法耗料配方数据下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadMakeBurden(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.MakeBurden;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "做法耗料配方";
try
{
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.make.burden");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<MakeBurden>>(response);
if (result.Status == 1)
{
if (CacheMakeBurden(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.MakeBurdenError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.MakeBurdenError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.MakeBurdenError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.MakeBurdenException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadMakeBurdenNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.MakeBurden;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "商品信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.make.burden");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<MakeBurden>>(response);
if (result.Status == 1)
{
if (CacheMakeBurden(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.MakeBurdenError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.MakeBurdenError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.MakeBurdenError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.MakeBurdenException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的做法耗料配方
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheMakeBurden(string cacheName, List<MakeBurden> lists, bool firstPager = true)
{
bool result = false;
string tips = "商品耗料配方信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_make_burden];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_make_burden] ([id],[tenantId],[makeId],[burdenProductId],[burdenSpecId],[salesUnitId],[salesAmount],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}');";
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, entity.TenantId, entity.MakeId, entity.BurdenProductId, entity.BurdenSpecId, entity.SalesUnitId, entity.SalesAmount, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 门店商品优惠券信息下载
/// <summary>
/// 门店商品优惠券信息下载
/// </summary>
/// <returns></returns>
public static DownloadNotify DownloadStoreProductCoupon(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.StoreProductCoupon;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
notify.PageSize = pageSize;
string tips = "门店商品优惠券";
try
{
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.product.coupon.list");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<StoreProductCoupon>>(response);
if (result.Status == 1)
{
if (CacheStoreProductCoupon(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.StoreProductCouponError;
notify.Message = string.Format("缓存{0}发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.StoreProductCouponError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}......", tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.StoreProductCouponError;
notify.Message = errorMessage;
logger.Info(string.Format("{0}报文解析出错:{1}", tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.StoreProductCouponException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadStoreProductCouponNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.StoreProductCoupon;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "商品优惠券信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "store.product.coupon.list");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<StoreProductCoupon>>(response);
if (result.Status == 1)
{
if (CacheStoreProductCoupon(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.StoreProductCouponError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.StoreProductCouponError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.StoreProductCouponError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.StoreProductCouponException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的商品优惠券
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheStoreProductCoupon(string cacheName, List<StoreProductCoupon> lists, bool firstPager = true)
{
bool result = false;
string tips = "商品优惠券信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_store_product_coupon];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_store_product_coupon] ([id],[tenantId],[storeId],[ticketId],[ticketNo],[description],[productId],[specId],[couponPrice],[startDate],[startTime],[endDate],[endTime],[weekDays],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}',{8},'{9}','{10}','{11}','{12}','{13}','{14}','{15}');";
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, entity.TenantId, entity.StoreId, entity.TicketId, entity.TicketNo, entity.Description, entity.ProductId, entity.SpecId, entity.CouponPrice, entity.StartDate, entity.StartTime, entity.EndDate, entity.EndTime, entity.WeekDays, entity.CreateUser, entity.CreateDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region subin 2023-07-09 add 分店账号信息、菜品分户账户关联信息
#region 分店账号信息下载
/// <summary>
/// 分店账号信息下载
/// </summary>
/// <param name="pageSize"></param>
/// <returns></returns>
public static DownloadNotify DownloadSplitShopAccount(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.SplitShopAccount;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "分店账号信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "splitShopAccount.list");
//parameters.Add("method", "sale.business.splitshops");
parameters.Add("pageNumber", Convert.ToString(notify.PageNumber));
parameters.Add("pageSize", Convert.ToString(pageSize));
parameters.Add("storeId", Global.Instance.Authc.StoreId);
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<SplitShopAccount>>(response);
if (result.Status == 1)
{
if (CacheSplitShopAccount(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.StoreInfoError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.StoreInfoError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.StoreInfoException;
notify.Message = string.Format("{0}下载发生异常", tips);
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.StoreInfoException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadSplitShopAccountNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.SplitShopAccount;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "分店账号信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "splitShopAccount.list");
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
parameters.Add("storeId", Global.Instance.Authc.StoreId);
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<SplitShopAccount>>(response);
if (result.Status == 1)
{
if (CacheSplitShopAccount(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.SplitShopAccountError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.SplitShopAccountError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.SplitShopAccountError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.SplitShopAccountException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的分店账号信息
/// </summary>
/// <param name="cacheName"></param>
/// <param name="lists"></param>
/// <param name="firstPager"></param>
/// <returns></returns>
public static bool CacheSplitShopAccount(string cacheName, List<SplitShopAccount> lists, bool firstPager = true)
{
bool result = false;
string tips = "分店账号信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_split_shop_account];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_split_shop_account] ([id],[tenantId],[bizUserId],[shopId],[companyName],[createUser],[createDate],[modifyUser],[modifyDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}');";
foreach (var entity in lists)
{
string sql = string.Empty;
try
{
sql = string.Format(template, entity.Id, entity.TenantId, entity.BizUserId.Trim(), entity.ShopId.Trim(), entity.CompanyName, entity.CreateUser, entity.CreateDate, entity.ModifyUser, entity.ModifyDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
catch (Exception ex)
{
logger.Info(sql);
logger.Info(ex);
}
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#region 菜品分户账户关联表下载
/// <summary>
/// 分店账号信息下载
/// </summary>
/// <param name="pageSize"></param>
/// <returns></returns>
public static DownloadNotify DownloadSplitFoodAccount(int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.SplitFoodAccount;
notify.IsPager = false;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "菜品分户账户关联信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "splitFoodAccount.list");
parameters.Add("storeId", Global.Instance.Authc.StoreId);
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<SplitFoodAccount>>(response);
if (result.Status == 1)
{
if (CacheSplitFoodAccount(notify.CacheName, result.List, true))
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
notify.Success = true;
if (result.PageCount > 1)
{
notify.Message = string.Format("第" + notify.PageNumber + "页{0}下载成功......", tips);
}
else
{
notify.Message = string.Format("{0}下载成功......", tips);
}
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.SplitFoodAccountError;
notify.Message = string.Format("缓存{0}数据发生错误", tips);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.SplitFoodAccountError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("{0}下载出错:{1}", tips, notify.Message));
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.SplitFoodAccountException;
notify.Message = string.Format("{0}下载发生异常", tips);
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.SplitFoodAccountException;
notify.Message = string.Format("{0}下载发生异常", tips);
logger.Error(ex, notify.Message);
}
return notify;
}
public static DownloadNotify DownloadSplitFoodAccountNextPage(int pageNum, int pageSize)
{
DownloadNotify notify = new DownloadNotify();
notify.Success = false;
notify.Operate = DownloadCacheName.SplitFoodAccount;
notify.IsPager = true;
notify.PageNumber = 1;
notify.PageCount = 1;
string tips = "菜品分户账户关联信息";
try
{
logger.Info(string.Format("下载{0}......", tips));
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "splitFoodAccount.list");
parameters.Add("pageNumber", Convert.ToString(pageNum));
parameters.Add("pageSize", Convert.ToString(pageSize));
parameters.Add("storeId", Global.Instance.Authc.StoreId);
var ignore = new List<string>();
ignore.Add("pageNumber");
ignore.Add("pageSize");
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize<ListPagerResponse<SplitFoodAccount>>(response);
if (result.Status == 1)
{
if (CacheSplitFoodAccount(notify.CacheName, result.List, false))
{
notify.Success = true;
notify.Message = string.Format("第{0}页{1}下载成功......", pageNum, tips);
logger.Info(result.Message);
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.SplitFoodAccountError;
notify.Message = string.Format("缓存{0}第{1}页发生错误", tips, pageNum);
logger.Info(notify.Message);
}
}
else
{
notify.Success = false;
notify.Operate = DownloadCacheName.SplitFoodAccountError;
notify.Message = string.Format("<{0}>-{1}", result.ErrCode, result.ErrMessage);
logger.Info(string.Format("第{0}页{1}下载出错:{2}......", pageNum, tips, notify.Message));
}
}
else
{
string errorMessage = PaserErrors(response);
notify.Success = false;
notify.Operate = DownloadCacheName.SplitFoodAccountError;
notify.Message = errorMessage;
logger.Info(string.Format("第{0}页{1}报文解析出错:{1}", pageNum, tips, errorMessage));
}
}
catch (Exception ex)
{
notify.Success = false;
notify.Operate = DownloadCacheName.SplitShopAccountException;
notify.Message = string.Format("第{0}页{1}下载发生异常", pageNum, tips);
logger.Error(ex, notify.Message);
}
return notify;
}
/// <summary>
/// 处理下载的菜品分户账户关联信息
/// </summary>
/// <param name="cacheName"></param>
/// <param name="lists"></param>
/// <param name="firstPager"></param>
/// <returns></returns>
public static bool CacheSplitFoodAccount(string cacheName, List<SplitFoodAccount> lists, bool firstPager = true)
{
bool result = false;
string tips = "菜品分户账户关联信息";
try
{
//清理数据
if (firstPager)
{
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_split_food_account];", CacheName = cacheName });
}
if (lists.Count() > 0)
{
string template = "insert into [pos_split_food_account] ([id],[tenantId],[shopId],[goodId],[accountId],[type],[status],[detail],[createUser],[createDate],[modifyUser],[modifyDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}');";
foreach (var entity in lists)
{
string sql = string.Empty;
try
{
//sql = string.Format(template, entity.splitFoodAccount.Id, entity.splitFoodAccount.TenantId, entity.splitFoodAccount.ShopId, entity.splitFoodAccount.ProductId, entity.splitFoodAccount.AccountId, entity.splitFoodAccount.Type, entity.splitFoodAccount.Status, entity.splitFoodAccount.Detail);
sql = string.Format(template, entity.Id, entity.TenantId.Trim(), entity.ShopId.Trim(), entity.ProductId.Trim(), entity.AccountId, entity.Type, entity.Status, entity.Detail, entity.CreateUser, entity.CreateDate, entity.ModifyUser, entity.ModifyDate);
FastDownloadApi.Instance.AddCache(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = cacheName });
}
catch (Exception ex)
{
logger.Info(sql);
logger.Info(ex);
}
}
}
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#endregion
}
}