Commit 3c007497 by guanzhenshan

增加获取平台sku销量和映射百伦sku的销量金额接口

parent c24423c2
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models.Api
{
public class mPlatformSkuSales
{
public string platform { get; set; }
public string website { get; set; }
public string seller_account { get; set; }
public int accountid { get; set; }
public List<PlatformSku> platform_skus { get; set; }
}
public class PlatformSku {
public string platformsku { get; set; }
public decimal price { get; set; }
public string itemid { get; set; }
public List<BLSkuInfo> listSku { get; set; }
}
public class BLSkuInfo
{
/// <summary>
/// 组合sku
/// </summary>
public string groupsku { get; set; }
/// <summary>
/// 百伦sku
/// </summary>
public string sku { get; set; }
/// <summary>
/// 平摊后的平台费
/// </summary>
public decimal cost_platform { get; set; }
/// <summary>
/// 平摊后的产品金额
/// </summary>
public decimal amount_product { get; set; }
/// <summary>
/// 平摊后的利润
/// </summary>
public decimal profit { get; set; }
/// <summary>
/// 平摊后的利润率
/// </summary>
public decimal profit_rate { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models.Api
{
/// <summary>
/// 平台sku和百伦sku的映射关系
/// </summary>
public class mSkuMapInfo
{
/// <summary>
/// 平台
/// </summary>
public string plat { get; set; }
/// <summary>
/// 账号ID
/// </summary>
public int accountId { get; set; }
/// <summary>
/// 平台编码
/// </summary>
public string itemId { get; set; }
/// <summary>
/// 销售
/// </summary>
public string sellerName { get; set; }
/// <summary>
/// 平台SKU
/// </summary>
public string platSku { get; set; }
/// <summary>
/// 产品库SKU
/// </summary>
public string sku { get; set; }
/// <summary>
/// 中文名称
/// </summary>
public string title { get; set; }
public int count { get; set; }
public DateTime createTime { get; set; }
public string groupSku { get; set; }
/*public ResultSkuMapInfo ConvertToOldVersion()
{
var dto = new ResultSkuMapInfo()
{
itemId = this.itemId,
sellerName = this.sellerName,
sku = this.sku,
title = this.title,
platSku = this.platSku,
count = this.count,
createTime = this.createTime,
groupSku = this.groupSku
};
if (dto.count <= 0)
{
throw new Exception($"映射不可为0。。。。{platSku}");
}
return dto;
}*/
}
public class response_SkuMapInfo
{
public int statusCode { get; set; }
public string message { get; set; }
public List<mSkuMapInfo> result { get; set; }
}
}
...@@ -7918,6 +7918,55 @@ namespace Bailun.DC.Services ...@@ -7918,6 +7918,55 @@ namespace Bailun.DC.Services
} }
/// <summary>
/// 获取平台sku信息
/// </summary>
/// <param name="start">开始时间</param>
/// <param name="end">结束时间</param>
/// <param name="page">页码</param>
/// <param name="pagesize">每页记录数</param>
/// <param name="platform">平台类型</param>
/// <param name="total">符合条件的记录数</param>
/// <returns></returns>
public List<dc_base_oms_platform_sku> ListOrderPlatformSku(DateTime start, DateTime end, int page, int pagesize, string platform,ref int total)
{
var sql = $@"select t1.origin_order_id,t1.bailun_order_id,t1.website,t1.platform_type,t1.seller_name,t1.platform_sku_quantity_ordered,t1.platform_sku_unit_price,t1.platform_sku,t1.order_currency,t1.item_id from dc_base_oms_platform_sku t1 where t1.bailun_order_status != 'Canceled' and t1.has_delete = 0 and t1.has_cancle = 0 and t1.create_time_site >= '{start.ToString("yyyy-MM-dd")}' and t1.create_time_site < '{end.AddDays(1).ToString("yyyy-MM-dd")}'";
if(!string.IsNullOrEmpty(platform))
{
sql += " and t1.platform_type='"+platform+"'";
}
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString_read))
{
if(cn.State== System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.Page<dc_base_oms_platform_sku>(page, pagesize, sql, ref total);
return obj.ToList();
}
}
public List<dc_base_oms_sku> ListOmsOrderByBailunOrderId(List<string> listblorderid)
{
var sql = $"select * from dc_base_oms_sku where has_delete=0 and bailun_order_id in ('{string.Join("','",listblorderid)}')";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString_read))
{
if(cn.State== System.Data.ConnectionState.Closed)
{
cn.Open();
}
return cn.Query<dc_base_oms_sku>(sql).ToList();
}
}
#endregion #endregion
......
...@@ -1179,6 +1179,79 @@ namespace Bailun.DC.Web.Controllers ...@@ -1179,6 +1179,79 @@ namespace Bailun.DC.Web.Controllers
} }
[HttpPost]
public JsonResult ListPlatformSkuSalesInfo(DateTime start, DateTime end, int page, string platform= "Shopify", int pagesize = 1000)
{
int total = 0;
var obj = new Services.OrdersServices().ListOrderPlatformSku(start, end, page, pagesize, platform, ref total);
var listMapInfo = new List<mSkuMapInfo>();
foreach (var item in obj)
{
var j = new {
plat = item.platform_type,
site = item.website,
platSku = item.platform_sku,
accountId = item.bailun_account_id,
itemId = item.item_id
};
var result = Common.HttpHelper.NetHelper.HttpPostJson("http://api.skums.bailuntec.com/api/sku/skumapping/omsgetskumapinfobysearch", Newtonsoft.Json.JsonConvert.SerializeObject(j));
if (!string.IsNullOrEmpty(result))
{
var json = Newtonsoft.Json.JsonConvert.DeserializeObject<response_SkuMapInfo>(result);
listMapInfo.AddRange(json.result);
}
}
var listOrders = new Services.OrdersServices().ListOmsOrderByBailunOrderId(obj.Select(a => a.bailun_order_id).ToList());
var list = new List<mPlatformSkuSales>();
foreach (var item in obj.GroupBy(a=>a.bailun_order_id))
{
var m = new mPlatformSkuSales {
platform = item.FirstOrDefault().platform_type,
seller_account = item.FirstOrDefault().seller_account,
website = item.FirstOrDefault().website,
accountid = item.FirstOrDefault().bailun_account_id,
platform_skus = item.Select(p => new PlatformSku {
platformsku = p.platform_sku,
price = p.platform_sku_unit_price,
itemid = p.item_id,
listSku = new List<BLSkuInfo>(),
}).ToList(),
};
foreach (var s in m.platform_skus)
{
var mapskus = listMapInfo.Where(a => a.plat == m.platform && a.itemId == s.itemid && a.platSku == s.platformsku && a.accountId == m.accountid).ToList();
var orders = listOrders.Where(a => a.bailun_order_id == item.Key).ToList();
foreach(var map in mapskus)
{
var sumOrder = orders.Where(a => a.bailun_sku == map.sku).ToList();
s.listSku.Add(new BLSkuInfo {
sku = map.sku,
amount_product = sumOrder.Sum(a=>a.amount_product * a.bailun_sku_quantity_ordered),
cost_platform = sumOrder.Sum(a=>a.cost_platform_fee * a.bailun_sku_quantity_ordered),
profit = sumOrder.Sum(a=>a.profit_total*a.bailun_sku_quantity_ordered),
profit_rate = sumOrder.Sum(a=>a.profit_rate/sumOrder.Count()),
groupsku = map.groupSku,
});
}
}
list.Add(m);
}
return Json(new {
success = true,
msg = "",
data = list
});
}
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment