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.

8403 lines
335 KiB
C#

9 months ago
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using POSV.Entity;
using POSV.HttpResponse;
using POSV.Utils;
using POSV.Entity.Pormotion;
using POSV.ShoppingCart;
namespace POSV.HttpApi
{
public class DownloadApi : BaseApi
{
protected static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
#region 操作员数据下载>>>>
/// <summary>
/// 操作员数据下载
/// </summary>
/// <returns></returns>
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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;
}
/// <summary>
/// 处理下载的操作员数据
/// </summary>
/// <param name="notify"></param>
/// <returns></returns>
public static bool CacheWorker(DownloadNotify notify)
{
bool result = false;
string tips = "门店操作员";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_worker];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<Worker>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (string.IsNullOrEmpty(o.Id))
{
o.Id = IdWorkerUtils.Instance.NextId();
}
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (string.IsNullOrEmpty(o.Id))
{
o.Id = IdWorkerUtils.Instance.NextId();
}
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}", 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>
public static bool CacheWorkerRole(DownloadNotify notify)
{
bool result = false;
string tips = "员工角色";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_worker_role];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<WorkerRole>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (string.IsNullOrEmpty(o.Id))
{
o.Id = IdWorkerUtils.Instance.NextId();
}
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (string.IsNullOrEmpty(o.Id))
{
o.Id = IdWorkerUtils.Instance.NextId();
}
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}", 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(DownloadNotify notify)
{
bool result = false;
string tips = "员工角色";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_worker_permissions];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<WorkerPermissions>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
if (Global.Instance.Authc != null && result.Data.TenantId == null)
{
result.Data.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(result.Data);
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "门店营业方案";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_business_plan];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<BusinessPlan>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}", 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(DownloadNotify notify)
{
bool result = false;
string tips = "菜品类别信息";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_type];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<ProductType>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}", 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(DownloadNotify notify)
{
bool result = false;
string tips = "商品信息";
try
{
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],[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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<Product>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
string 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.Ext1, entity.Ext3, entity.Ext2, entity.CreateUser, entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}", 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(DownloadNotify notify)
{
bool result = false;
string tips = "商品单位信息";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_unit];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<ProductUnit>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, entity.TenantId, entity.No, entity.Name, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}", 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(DownloadNotify notify)
{
bool result = false;
string tips = "商品图片信息";
try
{
string template = "insert into [pos_product_image] ([id],[tenantId],[productId],[width],[height],[groupName],[storageFileName],[length],[mimeType],[orderNo],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_image];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<ProductImage>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, entity.TenantId, entity.ProductId, entity.Width, entity.Height, entity.GroupName, entity.StorageFileName, entity.Length, entity.MimeType, entity.OrderNo, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "付款类型";
try
{
string template = "insert into [pos_store_storage] ([id],[tenantId],[no],[name],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_store_storage];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<StoreStorage>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, entity.TenantId, entity.No, entity.Name, entity.CreateUser, entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}", 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(DownloadNotify notify)
{
bool result = false;
string tips = "商品库存系数信息";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_ratio];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<ProductRatio>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}", 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(DownloadNotify notify)
{
bool result = false;
string tips = "商品库存信息";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_stock];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<ProductStock>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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("<{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(DownloadNotify notify)
{
bool result = false;
string tips = "门店操作员";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_business_plandetail];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<BusinessPlanDetail>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}", 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(DownloadNotify notify)
{
bool result = false;
string tips = "商品规格信息";
try
{
string template = "insert into [pos_product_spec] ([id],[tenantId],[productId],[no],[name],[price],[memberPrice],[otherPrice],[costPrice],[purchasePrice],[dispatchPrice],[materialRate],[isDefault],[minPrice],[deleteFlag],[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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_spec];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<ProductSpec>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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.Ext1, entity.Ext3, entity.Ext2, entity.CreateUser, entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "付款类型";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_paytype];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<PayType>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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);
parameters.Add("method", "store.paymode");
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "收银方式";
try
{
string template = "insert into [pos_paymode] ([id],[tenantId],[name],[no],[typeId],[shortcut],[pointFlag],[frontFlag],[rechargeFlag],[discount],[fixeAmount],[pbody],[certText],[ext1],[ext2],[ext3],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_paymode];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<PayMode>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "餐桌区域";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_tablearea];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<TableArea>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, entity.TenantId, entity.Name, entity.No, entity.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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>
public static bool CacheTableType(DownloadNotify notify)
{
bool result = false;
string tips = "餐桌类型";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_tabletype];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<TableType>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "餐桌信息";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_table];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<Table>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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>
public static bool CacheBrand(DownloadNotify notify)
{
bool result = false;
string tips = "门店品牌";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_brand];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<Brand>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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>
public static bool CacheProductMakeType(DownloadNotify notify)
{
bool result = false;
string tips = "做法类型";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_maketype];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<ProductMakeType>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
}
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(DownloadNotify notify)
{
bool result = false;
string tips = "做法信息";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_makedetail];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<ProductMakeDetail>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
if (string.IsNullOrEmpty(o.Id))
{
o.Id = IdWorkerUtils.Instance.NextId();
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
if (string.IsNullOrEmpty(o.Id))
{
o.Id = IdWorkerUtils.Instance.NextId();
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}", 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(DownloadNotify notify)
{
bool result = false;
string tips = "商品私有做法信息";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_makedetail_private];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<ProductMakeDetailPrivate>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}", 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(DownloadNotify notify)
{
bool result = false;
string tips = "套菜资料";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_suit];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<ProductSuit>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}", 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(DownloadNotify notify)
{
bool result = false;
string tips = "套菜资料";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_product_suitdetail];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<ProductSuitDetail>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "厨打方案";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
//list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId() , Priority = 0 , Sql = "delete from [pos_kit_plan];" , CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
List<KitPlan> kits = null;
using (var db = Global.Instance.OpenDataBase)
{
kits = db.Query<KitPlan>().ToList();
}
if (kits == null)
{
kits = new List<KitPlan>();
}
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<KitPlan>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}", 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(DownloadNotify notify)
{
bool result = false;
string tips = "厨打商品信息";
try
{
string template = "insert into [pos_kit_product] ([id],[tenantId],[storeId],[productId],[chudaFlag],[chuda],[chupinFlag],[chupin],[ext1],[ext3],[ext2],[createUser],[createDate]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_kit_product];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<KitProduct>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, entity.TenantId, entity.StoreId, entity.ProductId, entity.ChudaFlag, entity.Chuda, entity.ChupinFlag, entity.Chupin, entity.Ext1, entity.Ext3, entity.Ext2, entity.CreateUser, entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "厨显方案";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
//list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId() , Priority = 0 , Sql = "delete from [pos_kit_plan];" , CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
List<KdsPlan> kits = null;
using (var db = Global.Instance.OpenDataBase)
{
kits = db.Query<KdsPlan>().ToList();
}
if (kits == null)
{
kits = new List<KdsPlan>();
}
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<KdsPlan>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}", 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(DownloadNotify notify)
{
bool result = false;
string tips = "厨显商品信息";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_kds_product];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<KdsProduct>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "打印机";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_printer] where [userDefined] = 0;", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<POSV.Entity.Printer>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
notify.Success = true;
notify.Message = string.Format("{0}下载成功......", tips);
logger.Info(result.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>
public static bool CacheCarder(DownloadNotify notify)
{
bool result = false;
string tips = "读卡器";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_carder] where [userDefined] = 0;", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<Carder>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
if (Global.Instance.Authc != null && result.Data.TenantId == null)
{
result.Data.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(result.Data);
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "门店信息";
try
{
string template = "insert into pos_store_info (id,tenantId,name,[no],manager,telphone,mobile,orderTel,printName,address,mail,stapleFlag,width,height,groupName,storageFileName,dfsAccessDomain,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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_store_info];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<StoreInfo>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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.Ext1, entity.Ext2, entity.Ext3, entity.CreateUser, entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "门店图片信息";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_store_print_image];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<StorePrintImage>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "门店双屏图片信息";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_advert_pictures];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<AdvertPictures>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "门店双屏字幕信息";
try
{
string template = "INSERT INTO [pos_advert_caption] ([id], [tenantId], [name], [content], [createUser], [createDate])values('{0}','{1}','{2}','{3}','{4}','{5}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_advert_caption];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<AdvertCaption>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.Name, entity.Content, entity.CreateUser, entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "饿了么映射信息";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_mapping_product_eleme];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<MappingDishEleMe>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.FoodId, entity.SpecId, entity.ErpProductId, entity.ErpSpecId, entity.CreateUser, entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "美团映射信息";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_mapping_product_meituan];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<MappingDishMeiTuan>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.DishId, entity.DishSkuId, entity.ErpProductId, entity.ErpSpecId, entity.CreateUser, entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "百度映射信息";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_mapping_product_baidu];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<MappingDishBaiDu>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.DishId, entity.DishSkuId, entity.ErpProductId, entity.ErpSpecId, entity.CreateUser, entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "费用项目";
try
{
string template = "INSERT INTO [pos_feeitem] ([id],[tenantId], [name], [type], [enabled], [orderNo], [createUser], [createDate])values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_feeitem];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<Feeitem>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.Name, entity.Type, entity.Enabled, entity.OrderNo, entity.CreateUser, entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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));
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<Visitor>>(response);
if (result.Status == 1)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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));
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<Visitor>>(response);
if (result.Status == 1)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}" , 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(DownloadNotify notify)
{
bool result = false;
string tips = "门店熟客信息";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId() , Priority = 0 , Sql = "delete from [pos_visitor] where [upload] = 1;" , CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<Visitor>("from " + notify.CacheName , null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId() , Priority = 1 , Sql = sql , CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
result = true;
}
catch (Exception ex)
{
logger.Error(ex , string.Format("处理{0}发生异常" , tips));
result = false;
}
return result;
}
#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)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}" , 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(DownloadNotify notify)
{
bool result = false;
string tips = "门店熟客标签信息";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId() , Priority = 0 , Sql = "delete from [pos_visitor_tag] where [upload] = 1;" , CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<VisitorTag>("from " + notify.CacheName , null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
string sql = string.Format(template , entity.Id , entity.TenantId , entity.VisitorId , entity.Name ,1, entity.Ext1 , entity.Ext2 , entity.Ext3 , entity.CreateUser , entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId() , Priority = 1 , Sql = sql , CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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);
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<VisitorAddress>>(response);
if (result.Status == 1)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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));
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<VisitorAddress>>(response);
if (result.Status == 1)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}" , 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(DownloadNotify notify)
{
bool result = false;
string tips = "门店熟客标签信息";
try
{
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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId() , Priority = 0 , Sql = "delete from [pos_visitor_address] where [upload] = 1;" , CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<VisitorAddress>("from " + notify.CacheName , null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
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);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId() , Priority = 1 , Sql = sql , CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
if(result.Data.Id != null)//排除没有设置卡友日的情况
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var data = result.Data;
CardPromotion pro = new CardPromotion();
pro.Id = data.Id;
pro.TenantId = data.TenantId;
pro.Type = PromotionType..ToString();
pro.Content = JsonUtils.Serialize(data);
box.Bind(notify.CacheName).Insert(pro);
box.Commit();
}
}
}
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}>-{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(DownloadNotify notify)
{
bool result = false;
string tips = "会员促销";
try
{
string template = "INSERT INTO [pos_card_promotion] ([id], [tenantId], [type], [content], [createUser], [createDate])values('{0}','{1}','{2}','{3}','{4}','{5}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_card_promotion];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<CardPromotion>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
foreach (var entity in lists)
{
string sql = string.Format(template, entity.Id, Global.Instance.Worker.TenantId, entity.Type, entity.Content, entity.CreateUser, entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
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)
{
//服务端返回的分页信息,用于下一页数据下载
notify.IsPager = result.PageCount > 1;
notify.PageNumber = result.PageNumber;
notify.PageCount = result.PageCount;
notify.PageSize = result.PageSize;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}>-{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(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)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in result.List)
{
if (Global.Instance.Authc != null && o.TenantId == null)
{
o.TenantId = Global.Instance.Authc.TenantId;
}
box.Bind(notify.CacheName).Insert(o);
}
box.Commit();
}
}
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}", 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>
public static bool CacheStoreTask(DownloadNotify notify)
{
bool result = false;
string tips = "门店促销信息";
try
{
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], [isRepeatDiscount], [isAll], [goodsBlackList], [discountType], [discountValue], [rule], [status], [setMan], [setTime], [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}');";
var list = new ConcurrentQueue<DownloadSqlCache>();
//清理数据
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 0, Sql = "delete from [pos_promotion_task];", CacheName = notify.CacheName });
//记录本次更新的条数
int counts = 0;
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
var lists = box.Select<PromotionTask>("from " + notify.CacheName, null);
if (lists.Count() > 0)
{
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.IsRepeatDiscount, entity.IsAll, entity.GoodsBlackList, entity.DiscountType, entity.DiscountValue, entity.Rule, entity.Status, entity.SetMan, entity.SetTime, entity.CreateUser, entity.CreateDate);
list.Enqueue(new DownloadSqlCache { Id = IdWorkerUtils.Instance.NextId(), Priority = 1, Sql = sql, CacheName = notify.CacheName });
Interlocked.Increment(ref counts);
}
}
}
}
DownloadCacheSql(list);
result = true;
}
catch (Exception ex)
{
logger.Error(ex, string.Format("处理{0}发生异常", tips));
result = false;
}
return result;
}
#endregion
#endregion
/// <summary>
/// 缓存SQL语句等待批量执行
/// </summary>
/// <param name="list"></param>
private static void DownloadCacheSql(ConcurrentQueue<DownloadSqlCache> list)
{
lock (Global.Instance.CacheLock)
{
using (var box = DownloadCache.Instance.AutoBoxTransaction)
{
foreach (var o in list)
{
box.Bind(DownloadCacheName.SqlCache.ToString()).Insert(o);
}
box.Commit();
}
}
}
}
}