Commit de40a998 authored by 吴春's avatar 吴春
parents 6c699096 f6b795a6
......@@ -15,6 +15,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="CoreHtmlToImage" Version="1.0.6" />
<PackageReference Include="LumenWorks.Framework.IO.Core" Version="1.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
<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
}
}
/// <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>
......
......@@ -34,6 +34,10 @@ namespace Mall.Model.Extend.Product
/// </summary>
public string Mobile { get; set; }
/// <summary>
/// 等级描述
/// </summary>
public string GradeDescription { get; set; }
/// <summary>
/// 分销订单查询状态 0全部 1代付款 2已付款 3已完成
/// </summary>
public int? DistrbutionOrderSelectStatus { get; set; }
......
using Mall.Common.AOP;
using Mall.Common.Enum.Goods;
using System;
using System.Collections.Generic;
using System.Text;
......@@ -12,5 +13,146 @@ namespace Mall.Model.Extend.Statistics
[DB(ConnectionName = "DefaultConnection")]
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.Text;
......@@ -9,5 +10,49 @@ namespace Mall.Model.Query
/// </summary>
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
/// 和平返佣比例
/// </summary>
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 购物车
......@@ -212,9 +216,9 @@ namespace Mall.Module.Product
item.CoverImage = "";
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)
......@@ -2613,7 +2617,7 @@ namespace Mall.Module.Product
Commission = OneCommission,
CommissionState = 1,
CreateDate = DateTime.Now,
Grade = disModel.GradeId,
Grade = disModel.HPGradeId,
IsGoodsDistribution = 2,
MallBaseId = demodel.MallBaseId,
OrderDetailId = item.Id,
......@@ -2665,7 +2669,7 @@ namespace Mall.Module.Product
Commission = OneCommission1,
CommissionState = 1,
CreateDate = DateTime.Now,
Grade = disModel1.GradeId,
Grade = disModel1.HPGradeId,
IsGoodsDistribution = 2,
MallBaseId = demodel.MallBaseId,
OrderDetailId = item.Id,
......@@ -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 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) {
var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault();
item.UserName = umodel?.Name ?? "";
item.Mobile = umodel?.Moblie ?? "";
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)
......
......@@ -11,6 +11,8 @@ using Newtonsoft.Json;
using Mall.Common.Plugin;
using NPOI.SS.Formula.Functions;
using Mall.Repository.User;
using Mall.Model.Extend.Statistics;
using Mall.Model.Query;
namespace Mall.Module.User
{
......@@ -62,6 +64,11 @@ namespace Mall.Module.User
/// </summary>
private readonly UserCommonModule userCommonModule = new UserCommonModule();
/// <summary>
/// 首页统计
/// </summary>
private readonly MallStatisticsRepository mallStatisticsRepository = new MallStatisticsRepository();
#region 轮播图管理
/// <summary>
......@@ -1890,5 +1897,93 @@ namespace Mall.Module.User
}
}
#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
{
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;
}
......@@ -3091,6 +3091,7 @@ namespace Mall.Module.User
{ nameof(RB_Distributor_HPCommission.Enabled),demodel.Enabled},
{ nameof(RB_Distributor_HPCommission.Name),demodel.Name},
{ nameof(RB_Distributor_HPCommission.DecimalType),demodel.DecimalType},
{ nameof(RB_Distributor_HPCommission.IsCommon),demodel.IsCommon},
{ nameof(RB_Distributor_HPCommission.UpdateDate),demodel.UpdateDate}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
......@@ -3396,16 +3397,20 @@ namespace Mall.Module.User
return new
{
Status = 2,
MPrice = 0,
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))
{
hpcList = distributor_HPCommissionRepository.GetList(new RB_Distributor_HPCommission_Extend() { IsCommon = 1, TenantId = tenantId, MallBaseId = mallBaseId });
}
else {
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()) {
var hpcModel = hpcList.FirstOrDefault();
......@@ -3428,6 +3433,7 @@ namespace Mall.Module.User
return new
{
Status = 3,
MPrice = 0,
Msg = "未匹配到适用的返佣"
};
}
......
......@@ -77,7 +77,7 @@ namespace Mall.Repository.Product
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();
}
......
......@@ -79,7 +79,7 @@ where {where} group by h.Id order by h.Id desc";
}
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))
{
......
......@@ -49,9 +49,12 @@ namespace Mall.Repository.User
/// </summary>
/// <param name="dmodel"></param>
/// <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)
{
where += $@" and {nameof(RB_Distributor_HPGradeInfo.TenantId)}={dmodel.TenantId}";
......@@ -64,7 +67,7 @@ namespace Mall.Repository.User
{
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})";
}
......@@ -76,6 +79,9 @@ namespace Mall.Repository.User
{
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";
return Get<RB_Distributor_HPGradeInfo_Extend>(sql).ToList();
......
......@@ -1129,5 +1129,18 @@ namespace Mall.WebApi.Controllers.MallBase
}
#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
demodel.UserId = userInfo.UserId;
var list = orderModule.GetGoodsShoppingCartPageList(pagelist.pageIndex, pagelist.pageSize, out long count, demodel);
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.GoodsId,
......@@ -61,6 +62,14 @@ namespace Mall.WebApi.Controllers.MallBase
x.MallBaseId,
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);
}
......
......@@ -911,6 +911,7 @@ namespace Mall.WebApi.Controllers.MallBase
OrderCommissionList= x.OrderCommissionList.Select(z=>new {
z.Id,
z.Grade,
z.GradeDescription,
z.UserId,
z.UserName,
z.Mobile,
......
......@@ -19,6 +19,7 @@ using JWT.Algorithms;
using JWT.Serializers;
using Mall.Common.Enum;
using Mall.CacheKey;
using Mall.Common.Pay.WeChatPat;
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
}
}
\ No newline at end of file
......@@ -21,6 +21,7 @@ using Mall.Common.Enum.MallBase;
using Mall.Model.Entity.User;
using Mall.Module.Product;
using Microsoft.AspNetCore.Authorization;
using Mall.Model.Query;
namespace Mall.WebApi.Controllers.User
{
......@@ -1357,5 +1358,61 @@ namespace Mall.WebApi.Controllers.User
return flag ? ApiResult.Success() : ApiResult.Failed();
}
#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
string cachedKey = SecurityHelper.MD5(string.Format("cmd={0}&token={1}", controllerName + "/" + actionName, token));
try
{
if (UserReidsCache.Exists(cachedKey))//判断表单是否重复提交
{
actionContext.Result = new Microsoft.AspNetCore.Mvc.JsonResult(new ApiResult
{
resultCode = (int)ResultCode.FormRepeatSubmit,
message = "表单重复提交,请稍后再试",
data = null
});
}
else
{
//默认2秒钟之内不能重复提交
UserReidsCache.Set(cachedKey, 1, 2);
}
//if (UserReidsCache.Exists(cachedKey))//判断表单是否重复提交
//{
// actionContext.Result = new Microsoft.AspNetCore.Mvc.JsonResult(new ApiResult
// {
// resultCode = (int)ResultCode.FormRepeatSubmit,
// message = "表单重复提交,请稍后再试",
// data = null
// });
//}
//else
//{
// //默认2秒钟之内不能重复提交
// UserReidsCache.Set(cachedKey, 1, 2);
//}
}
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