Commit de40a998 authored by 吴春's avatar 吴春
parents 6c699096 f6b795a6
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="CoreHtmlToImage" Version="1.0.6" />
<PackageReference Include="LumenWorks.Framework.IO.Core" Version="1.0.1" /> <PackageReference Include="LumenWorks.Framework.IO.Core" Version="1.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" /> <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" /> <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
......
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using CoreHtmlToImage;
namespace Mall.Common.Plugin
{
/// <summary>
/// htmlToimg工具类
/// </summary>
public class HtmlToImgHelper
{
//Bitmap m_Bitmap;
//string m_Url;
//int m_BrowserWidth, m_BrowserHeight, m_ThumbnailWidth, m_ThumbnailHeight;
//public HtmlToImgHelper(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)
//{
// m_Url = Url;
// m_BrowserHeight = BrowserHeight;
// m_BrowserWidth = BrowserWidth;
// m_ThumbnailWidth = ThumbnailWidth;
// m_ThumbnailHeight = ThumbnailHeight;
//}
//public static Bitmap GetWebSiteThumbnail(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)
//{
// HtmlToImgHelper thumbnailGenerator = new HtmlToImgHelper(Url, BrowserWidth, BrowserHeight, ThumbnailWidth, ThumbnailHeight);
// return thumbnailGenerator.GenerateWebSiteThumbnailImage();
//}
//public Bitmap GenerateWebSiteThumbnailImage()
//{
// Thread m_thread = new Thread(new ThreadStart(_GenerateWebSiteThumbnailImage));
// m_thread.SetApartmentState(ApartmentState.STA);
// m_thread.Start();
// m_thread.Join();
// return m_Bitmap;
//}
//private void _GenerateWebSiteThumbnailImage()
//{
// WebBrowser m_WebBrowser = new WebBrowser();
// m_WebBrowser.ScrollBarsEnabled = false;
// m_WebBrowser.Navigate(m_Url);
// m_WebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);
// while (m_WebBrowser.ReadyState != WebBrowserReadyState.Complete)
// Application.DoEvents();
// m_WebBrowser.Dispose();
//}
//private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
//{
// WebBrowser m_WebBrowser = (WebBrowser)sender;
// m_WebBrowser.ClientSize = new Size(this.m_BrowserWidth, this.m_BrowserHeight);
// m_WebBrowser.ScrollBarsEnabled = false;
// m_Bitmap = new Bitmap(m_WebBrowser.Bounds.Width, m_WebBrowser.Bounds.Height);
// m_WebBrowser.BringToFront();
// m_WebBrowser.DrawToBitmap(m_Bitmap, m_WebBrowser.Bounds);
// m_Bitmap = (Bitmap)m_Bitmap.GetThumbnailImage(m_ThumbnailWidth, m_ThumbnailHeight, null, IntPtr.Zero);
//}
//public string GetHtmlToImgString() {
// Bitmap m_Bitmap = GetWebSiteThumbnail("这里是html的连接地址", 990, 2798, 990, 2798);
// MemoryStream ms = new MemoryStream();
// m_Bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);//JPG、GIF、PNG等均可
// byte[] buff = ms.ToArray();
// Response.BinaryWrite(buff);
// System.Drawing.Image img = byteArrayToImage(buff);
// string url = "图片保存路径.png";
// img.Save(url);
//}
public string GetHtmlToImage() {
var converter = new HtmlConverter();
string html = "<div>hello world</div>";
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
html = StringHelper.GetFileContent("E:/LDWork/LiuDongWork/OnLineItem/MallNew/Mall.WebApi/upfile/temimg/新建文本文档.txt", Encoding.GetEncoding("gb2312"));
byte[] byte1 = converter.FromHtmlString(html, 385);
string str = System.Text.Encoding.Default.GetString(byte1);
//Bitmap bitmap = BytesToBitmap(byte1, 385, 675);
Bitmap bitmap = BytesToBitmap2(byte1);
string url = "E:/LDWork/LiuDongWork/OnLineItem/MallNew/Mall.WebApi/upfile/temimg/图片保存路径.jpg";
bitmap.Save(url, System.Drawing.Imaging.ImageFormat.Jpeg);
return url;
}
//public string GetHtmlToImg_V2(string fileName) {
// byte[] byte1 = StreamToBytes(FileToStream(fileName));
// Bitmap bitmap = BytesToBitmap(byte1, 385, 675);
// //MemoryStream ms = new MemoryStream();
// //bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);//JPG、GIF、PNG等均可
// string url = "图片保存路径.png";
// bitmap.Save(url, System.Drawing.Imaging.ImageFormat.Jpeg);
// return url;
//}
//byte[] 转图片
public static Bitmap BytesToBitmap(byte[] Bytes, int width, int heiht)
{
MemoryStream stream = null;
try
{
stream = new MemoryStream(Bytes);
return new Bitmap((Image)new Bitmap(stream), width, heiht);
}
catch (ArgumentNullException ex)
{
throw ex;
}
catch (ArgumentException ex)
{
throw ex;
}
finally
{
stream.Close();
}
}
public static Bitmap BytesToBitmap2(byte[] Bytes)
{
MemoryStream stream = null;
try
{
stream = new MemoryStream(Bytes);
return new Bitmap((Image)new Bitmap(stream));
}
catch (ArgumentNullException ex)
{
throw ex;
}
catch (ArgumentException ex)
{
throw ex;
}
finally
{
stream.Close();
}
}
//图片转byte[]
public static byte[] BitmapToBytes(Bitmap Bitmap)
{
MemoryStream ms = null;
try
{
ms = new MemoryStream();
Bitmap.Save(ms, Bitmap.RawFormat);
byte[] byteImage = new Byte[ms.Length];
byteImage = ms.ToArray();
return byteImage;
}
catch (ArgumentNullException ex)
{
throw ex;
}
finally
{
ms.Close();
}
}
/// <summary>
/// 将 Stream 转成 byte[]
/// </summary>
public byte[] StreamToBytes(Stream stream)
{
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
return bytes;
}
/// <summary>
/// 将 byte[] 转成 Stream
/// </summary>
public Stream BytesToStream(byte[] bytes)
{
Stream stream = new MemoryStream(bytes);
return stream;
}
/// <summary>
/// 将 Stream 写入文件
/// </summary>
public void StreamToFile(Stream stream, string fileName)
{
// 把 Stream 转换成 byte[]
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
// 把 byte[] 写入文件
FileStream fs = new FileStream(fileName, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(bytes);
bw.Close();
fs.Close();
}
/// <summary>
/// 从文件读取 Stream
/// </summary>
public Stream FileToStream(string fileName)
{
// 打开文件
FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);
// 读取文件的 byte[]
byte[] bytes = new byte[fileStream.Length];
fileStream.Read(bytes, 0, bytes.Length);
fileStream.Close();
// 把 byte[] 转换成 Stream
Stream stream = new MemoryStream(bytes);
return stream;
}
}
}
...@@ -1443,6 +1443,24 @@ namespace Mall.Common.Plugin ...@@ -1443,6 +1443,24 @@ namespace Mall.Common.Plugin
} }
} }
/// <summary>
/// 获取文件内容
/// </summary>
/// <param name="filePath">文件路径</param>
/// <returns></returns>
public static string GetFileContent(string filePath, Encoding encoding)
{
if (File.Exists(filePath))
{
string content = File.ReadAllText(filePath, encoding);
return content;
}
else
{
return "";
}
}
/// <summary> /// <summary>
/// 替换索引出为“*” /// 替换索引出为“*”
/// </summary> /// </summary>
......
...@@ -34,6 +34,10 @@ namespace Mall.Model.Extend.Product ...@@ -34,6 +34,10 @@ namespace Mall.Model.Extend.Product
/// </summary> /// </summary>
public string Mobile { get; set; } public string Mobile { get; set; }
/// <summary> /// <summary>
/// 等级描述
/// </summary>
public string GradeDescription { get; set; }
/// <summary>
/// 分销订单查询状态 0全部 1代付款 2已付款 3已完成 /// 分销订单查询状态 0全部 1代付款 2已付款 3已完成
/// </summary> /// </summary>
public int? DistrbutionOrderSelectStatus { get; set; } public int? DistrbutionOrderSelectStatus { get; set; }
......
using Mall.Common.AOP; using Mall.Common.AOP;
using Mall.Common.Enum.Goods;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
...@@ -12,5 +13,146 @@ namespace Mall.Model.Extend.Statistics ...@@ -12,5 +13,146 @@ namespace Mall.Model.Extend.Statistics
[DB(ConnectionName = "DefaultConnection")] [DB(ConnectionName = "DefaultConnection")]
public class MallIndexStatistics public class MallIndexStatistics
{ {
/// <summary>
/// 用户数量
/// </summary>
public int UserTotalNum { get; set; }
/// <summary>
/// 商品数量
/// </summary>
public int GoodsTotalNum { get; set; }
/// <summary>
/// 总订单数量
/// </summary>
public int TotalOrderNum { get; set; }
/// <summary>
/// 代发货数量
/// </summary>
public int NoSendOrderNum { get; set; }
/// <summary>
/// 维权订单数量
/// </summary>
public int ActivistOrderNum { get; set; }
}
/// <summary>
/// 订单数量统计
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class OrderNum
{
/// <summary>
/// 订单状态 枚举
/// </summary>
public OrderStatusEnum? OrderStatus
{
get;
set;
}
/// <summary>
/// 订单数量
/// </summary>
public int OrderCount { get; set; }
}
/// <summary>
/// 销售情况统计
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class MallSalesStatistics
{
/// <summary>
/// 时间类型
/// </summary>
public string TimeStr { get; set; }
/// <summary>
/// 支付订单数
/// </summary>
public int OrderCount { get; set; }
/// <summary>
/// 支付金额
/// </summary>
public decimal Income { get; set; }
/// <summary>
/// 用户数量
/// </summary>
public int UserCount { get; set; }
/// <summary>
/// 购买商品件数
/// </summary>
public int GoodCount { get; set; }
}
/// <summary>
/// 商品购买力TOP排行
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class MallSalesGoodsTop
{
/// <summary>
/// 排名
/// </summary>
public int Num { get; set; }
/// <summary>
/// 商品名称
/// </summary>
public string GoodsName { get; set; }
/// <summary>
/// 销售额
/// </summary>
public decimal Income { get; set; }
/// <summary>
/// 销量
/// </summary>
public int SaleCount { get; set; }
}
/// <summary>
/// 用户购买力TOP排行
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class MallSalesUserTop
{
/// <summary>
/// 排名
/// </summary>
public int Num { get; set; }
/// <summary>
/// 用户头像
/// </summary>
public string Photo { get; set; }
/// <summary>
/// 用户名称
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 支付金额
/// </summary>
public decimal Income { get; set; }
/// <summary>
/// 支付件数
/// </summary>
public int SaleCount { get; set; }
} }
} }
using System; using Mall.Common.Enum.User;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
...@@ -9,5 +10,49 @@ namespace Mall.Model.Query ...@@ -9,5 +10,49 @@ namespace Mall.Model.Query
/// </summary> /// </summary>
public class StatisticsQuery public class StatisticsQuery
{ {
/// <summary>
/// 商户号Id
/// </summary>
public int TenantId
{
get;
set;
}
/// <summary>
/// 小程序Id
/// </summary>
public int MallBaseId
{
get;
set;
}
/// <summary>
/// 来源 1微信 2支付宝【见枚举】
/// </summary>
public UserSourceEnum? Source
{
get;
set;
}
/// <summary>
/// 开始时间
/// </summary>
public string StartDate { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string EndDate { get; set; }
/// <summary>
/// 销售查询【1-昨日,7-七日】
/// </summary>
public int SalesTimeType { get; set; }
} }
} }
...@@ -181,6 +181,10 @@ namespace Mall.Module.Product ...@@ -181,6 +181,10 @@ namespace Mall.Module.Product
/// 和平返佣比例 /// 和平返佣比例
/// </summary> /// </summary>
private readonly RB_Distributor_HPGradeRatioRepository distributor_HPGradeRatioRepository = new RB_Distributor_HPGradeRatioRepository(); private readonly RB_Distributor_HPGradeRatioRepository distributor_HPGradeRatioRepository = new RB_Distributor_HPGradeRatioRepository();
/// <summary>
/// 和平等级
/// </summary>
private readonly RB_Distributor_HPGradeInfoRepository distributor_HPGradeInfoRepository = new RB_Distributor_HPGradeInfoRepository();
#region 购物车 #region 购物车
...@@ -212,9 +216,9 @@ namespace Mall.Module.Product ...@@ -212,9 +216,9 @@ namespace Mall.Module.Product
item.CoverImage = ""; item.CoverImage = "";
if (!string.IsNullOrEmpty(item.CarouselImage) && item.CarouselImage != "[]") if (!string.IsNullOrEmpty(item.CarouselImage) && item.CarouselImage != "[]")
{ {
List<int> CarouselIdList = JsonConvert.DeserializeObject<List<int>>(item.CarouselImage); List<string> CarouselIdList = JsonConvert.DeserializeObject<List<string>>(item.CarouselImage);
//封面图 //封面图
item.CoverImage = material_InfoRepository.GetEntity(CarouselIdList[0])?.Path ?? ""; item.CoverImage = CarouselIdList[0];
} }
//验证规格是否已失效 //验证规格是否已失效
if (item.IsCustomSpecification == 1) if (item.IsCustomSpecification == 1)
...@@ -2613,7 +2617,7 @@ namespace Mall.Module.Product ...@@ -2613,7 +2617,7 @@ namespace Mall.Module.Product
Commission = OneCommission, Commission = OneCommission,
CommissionState = 1, CommissionState = 1,
CreateDate = DateTime.Now, CreateDate = DateTime.Now,
Grade = disModel.GradeId, Grade = disModel.HPGradeId,
IsGoodsDistribution = 2, IsGoodsDistribution = 2,
MallBaseId = demodel.MallBaseId, MallBaseId = demodel.MallBaseId,
OrderDetailId = item.Id, OrderDetailId = item.Id,
...@@ -2665,7 +2669,7 @@ namespace Mall.Module.Product ...@@ -2665,7 +2669,7 @@ namespace Mall.Module.Product
Commission = OneCommission1, Commission = OneCommission1,
CommissionState = 1, CommissionState = 1,
CreateDate = DateTime.Now, CreateDate = DateTime.Now,
Grade = disModel1.GradeId, Grade = disModel1.HPGradeId,
IsGoodsDistribution = 2, IsGoodsDistribution = 2,
MallBaseId = demodel.MallBaseId, MallBaseId = demodel.MallBaseId,
OrderDetailId = item.Id, OrderDetailId = item.Id,
...@@ -3745,11 +3749,36 @@ namespace Mall.Module.Product ...@@ -3745,11 +3749,36 @@ namespace Mall.Module.Product
var ulist = member_UserRepository.GetList(new RB_Member_User_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, UserIds = string.Join(",", oclist.Select(x => x.UserId).Distinct()) }); var ulist = member_UserRepository.GetList(new RB_Member_User_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, UserIds = string.Join(",", oclist.Select(x => x.UserId).Distinct()) });
//获取分销商 //获取分销商
var dislist = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, UserIds = string.Join(",", oclist.Select(x => x.UserId).Distinct()) }); var dislist = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, UserIds = string.Join(",", oclist.Select(x => x.UserId).Distinct()) });
var HpgradeList = new List<RB_Distributor_HPGradeInfo_Extend>();
if (oclist.Where(x => x.Type == 2).Any()) {
string gradeIds = string.Join(",", oclist.Where(x => x.Type == 2).Select(x => x.Grade).Distinct());
HpgradeList = distributor_HPGradeInfoRepository.GetList(new RB_Distributor_HPGradeInfo_Extend() { GradeIds = gradeIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }, true);
}
foreach (var item in oclist) { foreach (var item in oclist) {
var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault(); var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault();
item.UserName = umodel?.Name ?? ""; item.UserName = umodel?.Name ?? "";
item.Mobile = umodel?.Moblie ?? ""; item.Mobile = umodel?.Moblie ?? "";
item.Name = dislist.Where(x => x.UserId == item.UserId).FirstOrDefault()?.Name ?? ""; item.Name = dislist.Where(x => x.UserId == item.UserId).FirstOrDefault()?.Name ?? "";
if (item.Type == 1) {
if (item.Grade == 0)
{
item.GradeDescription = "自购返利";
}
else if (item.Grade == 1) {
item.GradeDescription = "一级佣金";
}
else if (item.Grade == 2)
{
item.GradeDescription = "二级佣金";
}
else if (item.Grade == 3)
{
item.GradeDescription = "三级佣金";
}
} else if (item.Type == 2) {
var hpGModel = HpgradeList.Where(x => x.Id == item.Grade).FirstOrDefault();
item.GradeDescription = hpGModel?.GradeName ?? "暂无等级";
}
} }
} }
foreach (var item in list) foreach (var item in list)
......
...@@ -11,6 +11,8 @@ using Newtonsoft.Json; ...@@ -11,6 +11,8 @@ using Newtonsoft.Json;
using Mall.Common.Plugin; using Mall.Common.Plugin;
using NPOI.SS.Formula.Functions; using NPOI.SS.Formula.Functions;
using Mall.Repository.User; using Mall.Repository.User;
using Mall.Model.Extend.Statistics;
using Mall.Model.Query;
namespace Mall.Module.User namespace Mall.Module.User
{ {
...@@ -62,6 +64,11 @@ namespace Mall.Module.User ...@@ -62,6 +64,11 @@ namespace Mall.Module.User
/// </summary> /// </summary>
private readonly UserCommonModule userCommonModule = new UserCommonModule(); private readonly UserCommonModule userCommonModule = new UserCommonModule();
/// <summary>
/// 首页统计
/// </summary>
private readonly MallStatisticsRepository mallStatisticsRepository = new MallStatisticsRepository();
#region 轮播图管理 #region 轮播图管理
/// <summary> /// <summary>
...@@ -1890,5 +1897,93 @@ namespace Mall.Module.User ...@@ -1890,5 +1897,93 @@ namespace Mall.Module.User
} }
} }
#endregion #endregion
#region 首页统计
/// <summary>
/// 订单数量、商品、用户统计
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public MallIndexStatistics MallIndexStatisticsModule(StatisticsQuery query)
{
return mallStatisticsRepository.MallIndexStatisticsRepository(query);
}
/// <summary>
/// 销售情况统计
/// </summary>
/// <param name="query"></param>
public object MallIndexSalesStatisticsModule(StatisticsQuery query)
{
var list = mallStatisticsRepository.MallIndexSalesStatisticsRepository(query);
List<object> resultList = new List<object>();
List<MallSalesStatistics> subList = new List<MallSalesStatistics>();
if (query.SalesTimeType == 1)
{
for (var i = 0; i <= 23; i++)
{
var subModel = list?.Where(qitem => qitem.TimeStr == i.ToString())?.FirstOrDefault();
subList.Add(new MallSalesStatistics()
{
TimeStr = i.ToString(),
GoodCount = subModel?.GoodCount ?? 0,
Income = subModel?.Income ?? 0,
OrderCount = subModel?.OrderCount ?? 0,
UserCount = subModel?.UserCount ?? 0,
});
}
}
else
{
var startDate = DateTime.Now.AddDays(-7);
for (var i = 0; i <= 7; i++)
{
var subModel = list?.Where(qitem => qitem.TimeStr == startDate.AddDays(i).ToString("yyyy-MM-dd"))?.FirstOrDefault();
subList.Add(new MallSalesStatistics()
{
TimeStr = startDate.AddDays(i).ToString("yyyy-MM-dd"),
GoodCount = subModel?.GoodCount ?? 0,
Income = subModel?.Income ?? 0,
OrderCount = subModel?.OrderCount ?? 0,
UserCount = subModel?.UserCount ?? 0,
});
}
}
var obj = new
{
//支付订单数
OrderCount = list?.Sum(qitem=>qitem.OrderCount)??0,
//支付金额
Income = list?.Sum(qitem => qitem.Income) ?? 0,
//支付人数
UserCount = list?.Sum(qitem => qitem.UserCount) ?? 0,
//支付件数
GoodCount = list?.Sum(qitem => qitem.GoodCount) ?? 0,
subList,
};
return obj;
}
/// <summary>
/// 商品购买力TOP排行
/// </summary>
/// <param name="query"></param>
public List<MallSalesGoodsTop> MallIndesSalesIncomeStatisticsModule(StatisticsQuery query)
{
return mallStatisticsRepository.MallIndesSalesIncomeStatisticsRepository(query);
}
/// <summary>
/// 用户购买力TOP排行
/// </summary>
/// <param name="query"></param>
public List<MallSalesUserTop> MallIndesSalesUserStatisticsModule(StatisticsQuery query)
{
return mallStatisticsRepository.MallIndesSalesUserStatisticsRepository(query);
}
#endregion
} }
} }
...@@ -1518,7 +1518,7 @@ namespace Mall.Module.User ...@@ -1518,7 +1518,7 @@ namespace Mall.Module.User
{ {
return "用户分销等级与上级用户分销等级不是上下级关系 ID:" + item.UserId; return "用户分销等级与上级用户分销等级不是上下级关系 ID:" + item.UserId;
} }
else if ((hpgmodel.Grade ?? 0) - (gmodel?.Grade ?? 0) != 1) else if ((gmodel?.Grade ?? 0) - (hpgmodel.Grade ?? 0) != 1)
{ {
return "用户分销等级与上级用户分销等级不是上下级关系 ID:" + item.UserId; return "用户分销等级与上级用户分销等级不是上下级关系 ID:" + item.UserId;
} }
...@@ -3091,6 +3091,7 @@ namespace Mall.Module.User ...@@ -3091,6 +3091,7 @@ namespace Mall.Module.User
{ nameof(RB_Distributor_HPCommission.Enabled),demodel.Enabled}, { nameof(RB_Distributor_HPCommission.Enabled),demodel.Enabled},
{ nameof(RB_Distributor_HPCommission.Name),demodel.Name}, { nameof(RB_Distributor_HPCommission.Name),demodel.Name},
{ nameof(RB_Distributor_HPCommission.DecimalType),demodel.DecimalType}, { nameof(RB_Distributor_HPCommission.DecimalType),demodel.DecimalType},
{ nameof(RB_Distributor_HPCommission.IsCommon),demodel.IsCommon},
{ nameof(RB_Distributor_HPCommission.UpdateDate),demodel.UpdateDate} { nameof(RB_Distributor_HPCommission.UpdateDate),demodel.UpdateDate}
}; };
List<WhereHelper> wheres = new List<WhereHelper>() { List<WhereHelper> wheres = new List<WhereHelper>() {
...@@ -3396,16 +3397,20 @@ namespace Mall.Module.User ...@@ -3396,16 +3397,20 @@ namespace Mall.Module.User
return new return new
{ {
Status = 2, Status = 2,
MPrice = 0,
Msg = "未配置和平返佣" Msg = "未配置和平返佣"
}; };
} }
List<RB_Distributor_HPCommission_Extend> hpcList = new List<RB_Distributor_HPCommission_Extend>(); List<RB_Distributor_HPCommission_Extend> hpcList = new List<RB_Distributor_HPCommission_Extend>();
if (string.IsNullOrEmpty(categoryIds)) if (string.IsNullOrEmpty(categoryIds))
{ {
hpcList = distributor_HPCommissionRepository.GetList(new RB_Distributor_HPCommission_Extend() { IsCommon = 1, TenantId = tenantId, MallBaseId = mallBaseId }); hpcList = distributor_HPCommissionRepository.GetList(new RB_Distributor_HPCommission_Extend() { IsCommon = 1, TenantId = tenantId, MallBaseId = mallBaseId });
} }
else { else {
hpcList = distributor_HPCommissionRepository.GetList(new RB_Distributor_HPCommission_Extend() { CategoryIds = categoryIds, TenantId = tenantId, MallBaseId = mallBaseId }); hpcList = distributor_HPCommissionRepository.GetList(new RB_Distributor_HPCommission_Extend() { CategoryIds = categoryIds, TenantId = tenantId, MallBaseId = mallBaseId });
if (!hpcList.Any()) {
hpcList = distributor_HPCommissionRepository.GetList(new RB_Distributor_HPCommission_Extend() { IsCommon = 1, TenantId = tenantId, MallBaseId = mallBaseId });
}
} }
if (hpcList.Any()) { if (hpcList.Any()) {
var hpcModel = hpcList.FirstOrDefault(); var hpcModel = hpcList.FirstOrDefault();
...@@ -3428,6 +3433,7 @@ namespace Mall.Module.User ...@@ -3428,6 +3433,7 @@ namespace Mall.Module.User
return new return new
{ {
Status = 3, Status = 3,
MPrice = 0,
Msg = "未匹配到适用的返佣" Msg = "未匹配到适用的返佣"
}; };
} }
......
...@@ -77,7 +77,7 @@ namespace Mall.Repository.Product ...@@ -77,7 +77,7 @@ namespace Mall.Repository.Product
where += $@" and {nameof(RB_Goods_OrderCommission.OrderId)} in({dmodel.OrderIds})"; where += $@" and {nameof(RB_Goods_OrderCommission.OrderId)} in({dmodel.OrderIds})";
} }
string sql = $@"SELECT OrderId,UserId,Grade,SUM(Commission) as Commission FROM RB_Goods_OrderCommission where {where} group by OrderId,UserId,Grade order by Grade asc"; string sql = $@"SELECT OrderId,UserId,Grade,Type,SUM(Commission) as Commission FROM RB_Goods_OrderCommission where {where} group by OrderId,UserId,Grade,Type order by Grade asc";
return Get<RB_Goods_OrderCommission_Extend>(sql).ToList(); return Get<RB_Goods_OrderCommission_Extend>(sql).ToList();
} }
......
...@@ -79,7 +79,7 @@ where {where} group by h.Id order by h.Id desc"; ...@@ -79,7 +79,7 @@ where {where} group by h.Id order by h.Id desc";
} }
if (!string.IsNullOrEmpty(dmodel.CategoryIds)) if (!string.IsNullOrEmpty(dmodel.CategoryIds))
{ {
where += $@" and c.{nameof(RB_Distributor_HPCategory.CategoryId)} in({dmodel.CategoryId})"; where += $@" and c.{nameof(RB_Distributor_HPCategory.CategoryId)} in({dmodel.CategoryIds})";
} }
if (!string.IsNullOrEmpty(dmodel.CategoryIdsT)) if (!string.IsNullOrEmpty(dmodel.CategoryIdsT))
{ {
......
...@@ -49,9 +49,12 @@ namespace Mall.Repository.User ...@@ -49,9 +49,12 @@ namespace Mall.Repository.User
/// </summary> /// </summary>
/// <param name="dmodel"></param> /// <param name="dmodel"></param>
/// <returns></returns> /// <returns></returns>
public List<RB_Distributor_HPGradeInfo_Extend> GetList(RB_Distributor_HPGradeInfo_Extend dmodel) public List<RB_Distributor_HPGradeInfo_Extend> GetList(RB_Distributor_HPGradeInfo_Extend dmodel, bool IsSelectDelete = false)
{ {
string where = $@" 1=1 and {nameof(RB_Distributor_HPGradeInfo.Status)}=0"; string where = $@" 1=1 ";
if (IsSelectDelete == false) {
where = $@" 1=1 and {nameof(RB_Distributor_HPGradeInfo.Status)}=0";
}
if (dmodel.TenantId > 0) if (dmodel.TenantId > 0)
{ {
where += $@" and {nameof(RB_Distributor_HPGradeInfo.TenantId)}={dmodel.TenantId}"; where += $@" and {nameof(RB_Distributor_HPGradeInfo.TenantId)}={dmodel.TenantId}";
...@@ -64,7 +67,7 @@ namespace Mall.Repository.User ...@@ -64,7 +67,7 @@ namespace Mall.Repository.User
{ {
where += $@" and {nameof(RB_Distributor_HPGradeInfo.Id)}={dmodel.Id}"; where += $@" and {nameof(RB_Distributor_HPGradeInfo.Id)}={dmodel.Id}";
} }
if (!string.IsNullOrEmpty(dmodel.GradeIds)) if (!string.IsNullOrEmpty(dmodel.GradeIds))
{ {
where += $@" and {nameof(RB_Distributor_HPGradeInfo.Id)} in({dmodel.GradeIds})"; where += $@" and {nameof(RB_Distributor_HPGradeInfo.Id)} in({dmodel.GradeIds})";
} }
...@@ -76,6 +79,9 @@ namespace Mall.Repository.User ...@@ -76,6 +79,9 @@ namespace Mall.Repository.User
{ {
where += $@" and {nameof(RB_Distributor_HPGradeInfo.GradeName)} like '%{dmodel.GradeName}%'"; where += $@" and {nameof(RB_Distributor_HPGradeInfo.GradeName)} like '%{dmodel.GradeName}%'";
} }
if (dmodel.IsGuest == 2) {
where += $@" and {nameof(RB_Distributor_HPGradeInfo.IsGuest)}={dmodel.IsGuest}";
}
string sql = $@"select * from RB_Distributor_HPGradeInfo where {where} order by Grade asc"; string sql = $@"select * from RB_Distributor_HPGradeInfo where {where} order by Grade asc";
return Get<RB_Distributor_HPGradeInfo_Extend>(sql).ToList(); return Get<RB_Distributor_HPGradeInfo_Extend>(sql).ToList();
......
...@@ -1129,5 +1129,18 @@ namespace Mall.WebApi.Controllers.MallBase ...@@ -1129,5 +1129,18 @@ namespace Mall.WebApi.Controllers.MallBase
} }
#endregion #endregion
#region 生产海报
/// <summary>
/// 商品海报
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetGoodsPoster() {
string address = new HtmlToImgHelper().GetHtmlToImage();
return ApiResult.Success("", address);
}
#endregion
} }
} }
\ No newline at end of file
...@@ -46,7 +46,8 @@ namespace Mall.WebApi.Controllers.MallBase ...@@ -46,7 +46,8 @@ namespace Mall.WebApi.Controllers.MallBase
demodel.UserId = userInfo.UserId; demodel.UserId = userInfo.UserId;
var list = orderModule.GetGoodsShoppingCartPageList(pagelist.pageIndex, pagelist.pageSize, out long count, demodel); var list = orderModule.GetGoodsShoppingCartPageList(pagelist.pageIndex, pagelist.pageSize, out long count, demodel);
pagelist.count = Convert.ToInt32(count); pagelist.count = Convert.ToInt32(count);
pagelist.pageData = list.Select(x => new var MallModel = orderModule.GetMiniProgramExtend(userInfo.MallBaseId);
var listobj = list.Select(x => new
{ {
x.Id, x.Id,
x.GoodsId, x.GoodsId,
...@@ -61,6 +62,14 @@ namespace Mall.WebApi.Controllers.MallBase ...@@ -61,6 +62,14 @@ namespace Mall.WebApi.Controllers.MallBase
x.MallBaseId, x.MallBaseId,
CreateDate = x.CreateDate.HasValue ? x.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "" CreateDate = x.CreateDate.HasValue ? x.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
}); });
List<object> robj = new List<object>() {
new {
MallId =MallModel?.MallBaseId??0,
MallName =MallModel?.MallName??"",
GoodsList=listobj
}
};
pagelist.pageData = robj;
return ApiResult.Success("", pagelist); return ApiResult.Success("", pagelist);
} }
......
...@@ -911,6 +911,7 @@ namespace Mall.WebApi.Controllers.MallBase ...@@ -911,6 +911,7 @@ namespace Mall.WebApi.Controllers.MallBase
OrderCommissionList= x.OrderCommissionList.Select(z=>new { OrderCommissionList= x.OrderCommissionList.Select(z=>new {
z.Id, z.Id,
z.Grade, z.Grade,
z.GradeDescription,
z.UserId, z.UserId,
z.UserName, z.UserName,
z.Mobile, z.Mobile,
......
...@@ -19,6 +19,7 @@ using JWT.Algorithms; ...@@ -19,6 +19,7 @@ using JWT.Algorithms;
using JWT.Serializers; using JWT.Serializers;
using Mall.Common.Enum; using Mall.Common.Enum;
using Mall.CacheKey; using Mall.CacheKey;
using Mall.Common.Pay.WeChatPat;
namespace Mall.WebApi.Controllers.User namespace Mall.WebApi.Controllers.User
{ {
...@@ -193,6 +194,46 @@ namespace Mall.WebApi.Controllers.User ...@@ -193,6 +194,46 @@ namespace Mall.WebApi.Controllers.User
} }
} }
/// <summary>
/// 获取小程序token
/// </summary>
/// <param name="requestMsg"></param>
/// <returns></returns>
[HttpPost]
public ApiResult GetMallToken(object requestMsg) {
var requestParm = JsonConvert.DeserializeObject<RequestParm>(requestMsg.ToString());
if (requestParm.TenantId <= 0)
{
return ApiResult.ParamIsNull("请传递商户号");
}
if (requestParm.MallBaseId <= 0)
{
return ApiResult.ParamIsNull("请传递小程序id");
}
var appletWeChatModel = programModule.GetMiniProgramModule(new RB_MiniProgram_Extend() { MallBaseId = requestParm.MallBaseId });
if (appletWeChatModel == null) {
return ApiResult.ParamIsNull("小程序不存在");
}
if (appletWeChatModel.TenantId != requestParm.TenantId) {
return ApiResult.ParamIsNull("商户号错误");
}
string token = CacheManager.AppletWeChat.WeiXinReidsCache.Get(appletWeChatModel.MiniAppId);
if (string.IsNullOrEmpty(token))
{
token = TokenHelper.GetLXYToken(token, appletWeChatModel.MiniAppId, appletWeChatModel.MiniAppSecret);
Task.Run(() => CacheManager.AppletWeChat.WeiXinReidsCache.Set(appletWeChatModel.MiniAppId, token));
}
if (!string.IsNullOrEmpty(token))
{
return ApiResult.Success("", token);
}
else {
return ApiResult.Failed();
}
}
#endregion #endregion
} }
} }
\ No newline at end of file
...@@ -21,6 +21,7 @@ using Mall.Common.Enum.MallBase; ...@@ -21,6 +21,7 @@ using Mall.Common.Enum.MallBase;
using Mall.Model.Entity.User; using Mall.Model.Entity.User;
using Mall.Module.Product; using Mall.Module.Product;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Mall.Model.Query;
namespace Mall.WebApi.Controllers.User namespace Mall.WebApi.Controllers.User
{ {
...@@ -1357,5 +1358,61 @@ namespace Mall.WebApi.Controllers.User ...@@ -1357,5 +1358,61 @@ namespace Mall.WebApi.Controllers.User
return flag ? ApiResult.Success() : ApiResult.Failed(); return flag ? ApiResult.Success() : ApiResult.Failed();
} }
#endregion #endregion
#region 商城首页统计
/// <summary>
/// 首页基础数据统计
/// </summary>
/// <returns></returns>
public ApiResult MallIndexStatistics()
{
var query = JsonConvert.DeserializeObject<StatisticsQuery>(RequestParm.msg.ToString());
query.MallBaseId = RequestParm.MallBaseId;
query.TenantId = RequestParm.TenantId;
var list = programModule.MallIndexStatisticsModule(query);
return ApiResult.Success(data: list);
}
/// <summary>
/// 销售情况统计
/// </summary>
/// <returns></returns>
public ApiResult MallIndexSalesStatistics()
{
var query = JsonConvert.DeserializeObject<StatisticsQuery>(RequestParm.msg.ToString());
query.MallBaseId = RequestParm.MallBaseId;
query.TenantId = RequestParm.TenantId;
var list = programModule.MallIndexSalesStatisticsModule(query);
return ApiResult.Success(data: list);
}
/// <summary>
/// 商品购买力TOP排行
/// </summary>
/// <returns></returns>
public ApiResult MallIndesSalesIncomeStatistics()
{
var query = JsonConvert.DeserializeObject<StatisticsQuery>(RequestParm.msg.ToString());
query.MallBaseId = RequestParm.MallBaseId;
query.TenantId = RequestParm.TenantId;
var list = programModule.MallIndesSalesIncomeStatisticsModule(query);
return ApiResult.Success(data: list);
}
/// <summary>
/// 用户购买力TOP排行
/// </summary>
/// <returns></returns>
public ApiResult MallIndesSalesUserStatistics()
{
var query = JsonConvert.DeserializeObject<StatisticsQuery>(RequestParm.msg.ToString());
query.MallBaseId = RequestParm.MallBaseId;
query.TenantId = RequestParm.TenantId;
var list = programModule.MallIndesSalesUserStatisticsModule(query);
return ApiResult.Success(data: list);
}
#endregion
} }
} }
\ No newline at end of file
...@@ -98,20 +98,20 @@ namespace Mall.WebApi.Filter ...@@ -98,20 +98,20 @@ namespace Mall.WebApi.Filter
string cachedKey = SecurityHelper.MD5(string.Format("cmd={0}&token={1}", controllerName + "/" + actionName, token)); string cachedKey = SecurityHelper.MD5(string.Format("cmd={0}&token={1}", controllerName + "/" + actionName, token));
try try
{ {
if (UserReidsCache.Exists(cachedKey))//判断表单是否重复提交 //if (UserReidsCache.Exists(cachedKey))//判断表单是否重复提交
{ //{
actionContext.Result = new Microsoft.AspNetCore.Mvc.JsonResult(new ApiResult // actionContext.Result = new Microsoft.AspNetCore.Mvc.JsonResult(new ApiResult
{ // {
resultCode = (int)ResultCode.FormRepeatSubmit, // resultCode = (int)ResultCode.FormRepeatSubmit,
message = "表单重复提交,请稍后再试", // message = "表单重复提交,请稍后再试",
data = null // data = null
}); // });
} //}
else //else
{ //{
//默认2秒钟之内不能重复提交 // //默认2秒钟之内不能重复提交
UserReidsCache.Set(cachedKey, 1, 2); // UserReidsCache.Set(cachedKey, 1, 2);
} //}
} }
catch catch
{ {
......
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