Commit 4de0ff95 authored by liudong1993's avatar liudong1993
parents f3fb9ebe d5c3a3cd
......@@ -138,5 +138,7 @@ namespace Mall.Common.Data
/// 状态
/// </summary>
public int S { get; set; }
public List<Node> Children { get; set; }
}
}
......@@ -13,6 +13,38 @@ namespace Mall.Common
public class ConvertHelper
{
/// <summary>
/// json字符串将属性值中的英文双引号变成中文双引号
/// </summary>
/// <param name="strJson">json字符串</param>
/// <returns></returns>
public static string JsonReplaceSign(string strJson)
{
char[] temp = strJson.ToCharArray();
int n = temp.Length;
for (int i = 0; i < n; i++)
{
if (temp[i] == ':' && temp[i + 1] == '"')
{
for (int j = i + 2; j < n; j++)
{
if (temp[j] == '"')
{
if (temp[j + 1] != ',' && temp[j + 1] != '}')
{
temp[j] = '”';
}
else if (temp[j + 1] == ',' || temp[j + 1] == '}')
{
break;
}
}
}
}
}
return new String(temp);
}
/// <summary>
/// 转换字符流成字符串
/// </summary>
......@@ -45,7 +77,7 @@ namespace Mall.Common
return data;
}
/// <summary>
/// 类型转换
/// </summary>
......@@ -103,7 +135,7 @@ namespace Mall.Common
/// <param name="obj"></param>
/// <param name="defaultValue">默认值</param>
/// <returns></returns>
public static int ToInt(object obj,int defaultValue=0)
public static int ToInt(object obj, int defaultValue = 0)
{
int result = defaultValue;
if (obj != null)
......
......@@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
namespace Mall.Common.Plugin
......@@ -11,6 +12,50 @@ namespace Mall.Common.Plugin
/// </summary>
public class FileHelper
{
/// <summary>
/// 生成图片
/// </summary>
/// <param name="url"></param>
public static void CreateImage(string url)
{
string tempPath = GetFileUrl(url);
string path = Environment.CurrentDirectory + tempPath;//下载到的地址+文件名
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
//发送请求并获取相应回应数据
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
//直到request.GetResponse()程序才开始向目标网页发送Post请求
Stream responseStream = response.GetResponseStream();
string newFilePath = path.Substring(0, path.LastIndexOf("/"));
if (!System.IO.Directory.Exists(newFilePath))//如果不存在就创建file文件夹
{
System.IO.Directory.CreateDirectory(newFilePath);
}
//创建本地文件写入流
Stream stream = new FileStream(path, FileMode.Create);
byte[] bArr = new byte[1024];
int size = responseStream.Read(bArr, 0, (int)bArr.Length);
while (size > 0)
{
stream.Write(bArr, 0, size);
size = responseStream.Read(bArr, 0, (int)bArr.Length);
}
stream.Close();
responseStream.Close();
}
/// <summary>
/// 获取Oss文件全路径
/// </summary>
/// <param name="path">文件相对路径</param>
/// <returns></returns>
public static string GetFileUrl(string path)
{
return path.Replace("http://auth-zjhejiang-com.oss-cn-hangzhou.aliyuncs.com", "")
.Replace("https://cdnimg.iotweixin.com", "").Replace("http://img.weibaoge.cn","").Replace("http://v4test.zjhejiang.com","")
.Replace("http://v4test1.oss-cn-hangzhou.aliyuncs.com","").Replace("https://viitto-1301420277.cos.ap-chengdu.myqcloud.com","");
}
/// <summary>
/// 网站文件夹虚拟目录
/// </summary>
......@@ -22,7 +67,7 @@ namespace Mall.Common.Plugin
/// <param name="filePath">文件夹路径</param>
public static void DeleteFile(string filePath)
{
string newPath = AppContext.BaseDirectory+ "\\" + filePath;
string newPath = AppContext.BaseDirectory + "\\" + filePath;
DirectoryInfo theFolder = new DirectoryInfo(newPath);
if (theFolder.Exists)
{
......@@ -100,7 +145,7 @@ namespace Mall.Common.Plugin
{
string newTempFilePath = filePath.Substring(filePath.IndexOf("/")); ;
var strPath = AppContext.BaseDirectory + "\\" + VirtualDirectory + newTempFilePath; //System.Web.HttpContext.Current.Server.MapPath("~/" + VirtualDirectory + newTempFilePath);
string newfilePath = AppContext.BaseDirectory + "\\" + VirtualDirectory +newFilePath.Substring(0, strPath.LastIndexOf('\\') - 1); //System.Web.HttpContext.Current.Server.MapPath("~/" + VirtualDirectory) + newFilePath.Substring(0, strPath.LastIndexOf('\\') - 1);
string newfilePath = AppContext.BaseDirectory + "\\" + VirtualDirectory + newFilePath.Substring(0, strPath.LastIndexOf('\\') - 1); //System.Web.HttpContext.Current.Server.MapPath("~/" + VirtualDirectory) + newFilePath.Substring(0, strPath.LastIndexOf('\\') - 1);
if (!Directory.Exists(newfilePath))
{
Directory.CreateDirectory(newfilePath);
......
using Mall.Common.AOP;
using System;
using System.Collections.Generic;
using System.Text;
namespace Mall.Model.Entity.MarketingCenter
{
/// <summary>
/// 充值自定义设置
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Recharge_Custom
{
public int ID { get; set; }
/// <summary>
/// 商户id
/// </summary>
public int TenantId { get; set; }
/// <summary>
/// 小程序id
/// </summary>
public int MallBaseId { get; set; }
public int Status { get; set; }
public DateTime CreateDate { get; set; }
public DateTime UpdateDate { get; set; }
/// <summary>
/// 余额名称
/// </summary>
public string BalanceName { get; set; }
/// <summary>
/// 充值金额
/// </summary>
public string RechareName { get; set; }
/// <summary>
/// 充值说明
/// </summary>
public string RechareExplain { get; set; }
/// <summary>
/// 按钮圆角
/// </summary>
public int BtnFillet { get; set; }
/// <summary>
/// 按钮文本
/// </summary>
public string BtnName { get; set; }
/// <summary>
/// 背景颜色
/// </summary>
public string BackgroundColor { get; set; }
/// <summary>
/// 文本颜色
/// </summary>
public string TextColor { get; set; }
}
}
......@@ -80,5 +80,7 @@ namespace Mall.Model.Extend.BaseSetUp
/// 批量name查询
/// </summary>
public string NameStr { get; set; }
public List<RB_Destination_Extend> Children { get; set; }
}
}
......@@ -33,5 +33,10 @@ namespace Mall.Model.Entity.MarketingCenter
/// 创建人
/// </summary>
public string CreateByName { get; set; }
/// <summary>
/// 编号【逗号分割查询使用】
/// </summary>
public string QIds { get; set; }
}
}
\ No newline at end of file
......@@ -162,9 +162,9 @@ namespace Mall.Module.BaseSetUp
/// 获取列表
/// </summary>
/// <returns></returns>
public List<Mall.Common.Data.Node> GetAllList()
public List<RB_Destination_Extend> GetAllList()
{
return rb_DestinationRepository.GetAllList();
return rb_DestinationRepository.GetAllDestinationList();
}
/// <summary>
......
......@@ -5,6 +5,7 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Mall.Common\Mall.Common.csproj" />
<ProjectReference Include="..\Mall.Model\Mall.Model.csproj" />
<ProjectReference Include="..\Mall.Repository\Mall.Repository.csproj" />
</ItemGroup>
......
......@@ -7,6 +7,7 @@ using Mall.Model.Query;
using Mall.Repository;
using Mall.Repository.MarketingCenter;
using MySqlX.XDevAPI.Relational;
using Newtonsoft.Json.Linq;
using Org.BouncyCastle.Crypto.Tls;
using System;
using System.Collections.Generic;
......@@ -45,16 +46,16 @@ namespace Mall.Module.MarketingCenter
/// <param name="query">查询条件</param>
/// <param name="IsAnalyzePlus">是否解析插件</param>
/// <returns></returns>
public List<RB_Miniprogram_Template_Extend> GetMiniprogramTemplateListModule(RB_Miniprogram_Template_Extend query,bool IsAnalyzePlus=false)
public List<RB_Miniprogram_Template_Extend> GetMiniprogramTemplateListModule(RB_Miniprogram_Template_Extend query, bool IsAnalyzePlus = false)
{
var list= miniprogram_TemplateRepository.GetMiniprogramTemplateListRepository(query);
var list = miniprogram_TemplateRepository.GetMiniprogramTemplateListRepository(query);
if (IsAnalyzePlus)
{
foreach (var item in list)
{
if (item.TemplateData != null && !string.IsNullOrEmpty(item.TemplateData))
{
item.ComponentDataList = JsonHelper.DeserializeObject<List<ComponentItem>>(item.TemplateData);
item.ComponentDataList = JsonHelper.DeserializeObject<List<ComponentItem>>(Mall.Common.ConvertHelper.JsonReplaceSign(item.TemplateData));
if (item.ComponentDataList != null && item.ComponentDataList.Count > 0)
{
foreach (var subItem in item.ComponentDataList)
......@@ -130,7 +131,7 @@ namespace Mall.Module.MarketingCenter
switch (item.Id)
{
//背景组件
case "background":item.data = JsonHelper.DeserializeObject<backgroundItem>(item.data.ToString()); break;
case "background": item.data = JsonHelper.DeserializeObject<backgroundItem>(item.data.ToString()); break;
//查找组件
case "search": item.data = JsonHelper.DeserializeObject<searchItem>(item.data.ToString()); break;
//导航组件
......@@ -145,18 +146,106 @@ namespace Mall.Module.MarketingCenter
case "link": item.data = JsonHelper.DeserializeObject<linkItem>(item.data.ToString()); break;
//图片广告插件
case "rubik":
try
JObject jObj = JObject.Parse(item.data.ToString());
Int32.TryParse(jObj["style"].ToString(), out int style);
Int32.TryParse(jObj["space"].ToString(), out int space);
Int32.TryParse(jObj["h"].ToString(), out int h_root);
Int32.TryParse(jObj["w"].ToString(), out int w_root);
var subData = new rubikItem()
{
item.data = JsonHelper.DeserializeObject<rubikItem>(item.data.ToString());
style = style,
space = space,
height = jObj["height"].ToString(),
w = w_root.ToString(),
h = h_root,
hotspot = new List<hotspotItem>(),
list = new List<rubikDetailItem>(),
};
if (!string.IsNullOrWhiteSpace(jObj["hotspot"].ToString()))
{
subData.hotspot = Common.Plugin.JsonHelper.DeserializeObject<List<hotspotItem>>(jObj["hotspot"].ToString());
}
catch
if (!string.IsNullOrWhiteSpace(jObj["list"].ToString()))
{
item.data = new rubikItem()
JArray jArray = JArray.Parse(jObj["list"].ToString());
if (jArray != null && jArray.Count > 0)
{
hotspot = new List<hotspotItem>(),
list = new List<rubikDetailItem>() { new rubikDetailItem() { link = new List<rubikLinkItem>() { new rubikLinkItem ()} } },
};
foreach (var subItem in jArray)
{
Int32.TryParse(subItem["w"].ToString(), out int w);
Int32.TryParse(subItem["h"].ToString(), out int h2);
Int32.TryParse(subItem["x"].ToString(), out int x);
Int32.TryParse(subItem["y"].ToString(), out int y);
int zIndex = 0;
if (subItem["zIndex"] != null && !string.IsNullOrWhiteSpace(subItem["zIndex"].ToString()))
{
Int32.TryParse(subItem["zIndex"].ToString(), out zIndex);
}
var links = new List<rubikLinkItem>();
if (subItem["link"] != null && !string.IsNullOrWhiteSpace(subItem["link"].ToString()))
{
try
{
var linkObj = JObject.Parse(subItem["link"].ToString());
links.Add(new rubikLinkItem()
{
PageName = linkObj["name"].ToString(),
PageUrl = linkObj["value"].ToString(),
new_link_url = linkObj["new_link_url"].ToString(),
IsParameter = 0,
ParameterValue = linkObj["name"].ToString(),
});
}
catch
{
}
try
{
var linkArray = JArray.Parse(subItem["link"].ToString());
if (linkArray != null && linkArray.Count > 0)
{
foreach (var linkItem in linkArray)
{
links.Add(new rubikLinkItem()
{
PageName = linkItem["name"].ToString(),
PageUrl = linkItem["value"].ToString(),
new_link_url = linkItem["new_link_url"].ToString(),
IsParameter = 0,
ParameterValue = linkItem["name"].ToString(),
});
}
}
}
catch
{
}
}
subData.list.Add(new rubikDetailItem()
{
w = w,
h = h2,
x = x,
y = y,
link = links,
width = subItem["width"].ToString(),
height = subItem["height"].ToString(),
left = subItem["left"].ToString(),
top = subItem["top"].ToString(),
pic_url = subItem["pic_url"].ToString(),
backgroundImage = subItem["backgroundImage"].ToString(),
backgroundRepeat = subItem["backgroundRepeat"].ToString(),
backgroundSize = subItem["backgroundSize"].ToString(),
backgroundPosition = subItem["backgroundPosition"].ToString(),
zIndex = zIndex
}); ;
}
}
}
item.data = subData;
break;
//视频插件
case "video": item.data = JsonHelper.DeserializeObject<videoItem>(item.data.ToString()); break;
......
......@@ -18,6 +18,8 @@ namespace Mall.Module.MarketingCenter
private RB_Member_BalanceRepository balanceRepository = new RB_Member_BalanceRepository();
private RB_Recharge_SettingsRepository settingsRepository = new RB_Recharge_SettingsRepository();
private RB_Recharge_CustomRepository customRepository = new RB_Recharge_CustomRepository();
#region 充值规则信息
/// <summary>
/// 充值信息列表
......@@ -156,5 +158,51 @@ namespace Mall.Module.MarketingCenter
}
#endregion
#region 自定义充值
/// <summary>
/// 自定义充值信息列表
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_Recharge_Custom> GetRechargeCustomList(RB_Recharge_Custom query)
{
return customRepository.GetRechargeCustomList(query);
}
/// <summary>
/// 新增/修改自定义充值
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool AddOrUpdateRechargeCustom(RB_Recharge_Custom model)
{
if (model.ID == 0)
{
return customRepository.Insert(model) > 0;
}
else
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Recharge_Custom.BalanceName), model.BalanceName},
{nameof(RB_Recharge_Custom.RechareName), model.RechareName},
{nameof(RB_Recharge_Custom.RechareExplain), model.RechareExplain},
{nameof(RB_Recharge_Custom.BtnFillet), model.BtnFillet},
{nameof(RB_Recharge_Custom.BtnName), model.BtnName},
{nameof(RB_Recharge_Custom.BackgroundColor), model.BackgroundColor},
{nameof(RB_Recharge_Custom.TextColor), model.TextColor},
{nameof(RB_Recharge_Custom.UpdateDate), model.UpdateDate},
};
List<WhereHelper> whereHelpers = new List<WhereHelper>()
{
new WhereHelper(){ FiledName=nameof(RB_Recharge_Custom.ID),FiledValue=model.ID ,OperatorEnum=OperatorEnum.Equal}
};
return customRepository.Update(fileds, whereHelpers);
}
}
#endregion
}
}
......@@ -234,6 +234,22 @@ SELECT * FROM {0} WHERE 1=1 AND ParentID<>2 {1}
return queryList;
}
/// <summary>
/// 获取地区列表
/// </summary>
/// <returns></returns>
public List<RB_Destination_Extend> GetAllDestinationList()
{
List<Common.Data.Node> queryList = new List<Common.Data.Node>();
StringBuilder sb = new StringBuilder();
sb.AppendFormat("SELECT * FROM {0} WHERE 1=1 ", TableName);
sb.AppendFormat(" AND {0}={1} ", nameof(RB_Destination_Extend.Status), (int)Common.Enum.DateStateEnum.Normal);
List<RB_Destination_Extend> list = Get<RB_Destination_Extend>(sb.ToString()).ToList();
return list;
}
/// <summary>
/// 根据Ids获取地区名称
/// </summary>
......
using Mall.Model.Entity.MarketingCenter;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Mall.Repository.MarketingCenter
{
/// <summary>
/// 自定义充值仓储层
/// </summary>
public class RB_Recharge_CustomRepository : RepositoryBase<RB_Recharge_Custom>
{
/// <summary>
/// 表名称
/// </summary>
public string TableName { get { return nameof(RB_Recharge_Custom); } }
/// <summary>
/// 自定义充值信息列表
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_Recharge_Custom> GetRechargeCustomList(RB_Recharge_Custom query)
{
StringBuilder builder = new StringBuilder();
builder.Append($" SELECT * FROM {TableName} WHERE {nameof(RB_Recharge_Custom.Status)}=0 ");
if (query != null)
{
if (query.ID > 0)
{
builder.Append($" AND {nameof(RB_Recharge_Custom.ID)}={query.ID}");
}
if (query.TenantId > 0)
{
builder.Append($" AND {nameof(RB_Recharge_Custom.TenantId)}={query.TenantId}");
}
if (query.TenantId > 0)
{
builder.Append($" AND {nameof(RB_Recharge_Custom.MallBaseId)}={query.MallBaseId}");
}
}
return Get<RB_Recharge_Custom>(builder.ToString()).ToList();
}
}
}
......@@ -38,6 +38,10 @@ namespace Mall.Repository.MarketingCenter
{
builder.AppendFormat(" AND {0}={1}", nameof(RB_Template_Market_Extend.IsUse), query.IsUse);
}
if (!string.IsNullOrWhiteSpace(query.Name))
{
builder.AppendFormat(" AND {0} LIKE '%{1}%'", nameof(RB_Template_Market_Extend.Name), query.Name.Trim());
}
}
return GetPage<RB_Template_Market_Extend>(pageIndex, pageSize, out rowCount, builder.ToString()).ToList();
}
......@@ -58,6 +62,14 @@ namespace Mall.Repository.MarketingCenter
{
builder.Append($" AND {nameof(RB_Template_Market_Extend.Name)} like '%{query.Name.Trim()}%'");
}
if (query.Id > 0)
{
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Template_Market_Extend.Id), query.Id);
}
if (!string.IsNullOrWhiteSpace(query.QIds))
{
builder.AppendFormat(" AND {0} IN({1}) ", nameof(RB_Template_Market_Extend.Id), query.QIds);
}
}
return Get<RB_Template_Market_Extend>(builder.ToString()).ToList();
}
......
......@@ -637,6 +637,7 @@ LEFT JOIN rb_member_user as c on b.UserId=c.Id
string where = $" where 1=1 ";
string payMemerNumWhere = "";
string orderTypeWhere = "";
string sql = "";
if (dmodel.TenantId > 0)
{
where += $@" and a.{nameof(RB_Goods_Order.TenantId)}={dmodel.TenantId}";
......@@ -666,8 +667,8 @@ LEFT JOIN rb_member_user as c on b.UserId=c.Id
{
if (dmodel.OrderStatus == 1)
{
where += $@" and a.{nameof(RB_Goods_Order.OrderStatus)} in (1,2,4,3)";
payMemerNumWhere += $@" and {nameof(RB_Goods_Order.OrderStatus)} in (1,2,4,3)";
where += $@" and a.{nameof(RB_Goods_Order.OrderStatus)} in (1,2,4,3,6)";
payMemerNumWhere += $@" and {nameof(RB_Goods_Order.OrderStatus)} in (1,2,4,3,6)";
}
else if (dmodel.OrderStatus == 2)
{
......@@ -681,7 +682,7 @@ LEFT JOIN rb_member_user as c on b.UserId=c.Id
}
else if (dmodel.OrderStatus == 4)//后面做因为现在还没有售后表
{
where += $@" and a.{nameof(RB_Goods_OrderAfterSale.ReOrderStatus)} in (1,2,4,3)";
}
else if (dmodel.OrderStatus == 5)//后面做因为现在还没有售后表
{
......@@ -699,11 +700,46 @@ LEFT JOIN rb_member_user as c on b.UserId=c.Id
payMemerNumWhere += $" AND DATE_FORMAT({nameof(RB_Goods_Order.CreateDate)},'%Y-%m-%d' )<= DATE_FORMAT('{dmodel.EndDate}','%Y-%m-%d' )";
}
string sql = $@"SELECT t.CreateDate,SUM(t.GoodsNum)as GoodsNum ,COUNT(t.OrderId)as OrderNum ,SUM(t.Income)as PayMoney,
(SELECT COUNT(UserId) from rb_goods_order where DATE_FORMAT(CreateDate,'%Y-%m-%d' )=t.CreateDate {payMemerNumWhere} GROUP BY UserId) as PayMemerNum
from (SELECT DATE_FORMAT(a.CreateDate,'%Y-%m-%d' )as CreateDate,b.GoodsNum,a.UserId,a.Income,a.OrderId from rb_goods_order as a
LEFT JOIN (SELECT OrderId,SUM(Number)as GoodsNum from rb_goods_orderdetail where 1=1 {orderTypeWhere} GROUP BY OrderId)as b on a.OrderId=b.OrderId {where})
// string sql = $@"SELECT t.CreateDate,SUM(t.GoodsNum)as GoodsNum ,COUNT(t.OrderId)as OrderNum ,SUM(t.Income)as PayMoney,
//(SELECT COUNT(distinct UserId) from rb_goods_order where DATE_FORMAT(CreateDate,'%Y-%m-%d' )=t.CreateDate {payMemerNumWhere} ) as PayMemerNum
//from (SELECT DATE_FORMAT(a.CreateDate,'%Y-%m-%d' )as CreateDate,b.GoodsNum,a.UserId,a.Income,a.OrderId from rb_goods_order as a
// LEFT JOIN (SELECT OrderId,SUM(Number)as GoodsNum from rb_goods_orderdetail where 1=1 {orderTypeWhere} GROUP BY OrderId)as b on a.OrderId=b.OrderId {where})
//as t GROUP BY t.CreateDate desc";
if (dmodel.OrderStatus == 0 || dmodel.OrderStatus == 1 || dmodel.OrderStatus == 2 || dmodel.OrderStatus == 3)
{
sql = $@"SELECT t.CreateDate,SUM(t.GoodsNum)as GoodsNum ,COUNT(t.OrderId)as OrderNum ,SUM(t.Income)as PayMoney,MAX(t.PayMemerNum) as PayMemerNum
from (SELECT DATE_FORMAT(a.CreateDate,'%Y-%m-%d' )as CreateDate,b.GoodsNum,a.UserId,a.Income,a.OrderId,c.PayMemerNum from rb_goods_order as a
LEFT JOIN (SELECT OrderId,SUM(Number)as GoodsNum from rb_goods_orderdetail where 1=1 {orderTypeWhere} GROUP BY OrderId)as b on a.OrderId=b.OrderId
LEFT JOIN (SELECT COUNT(DISTINCT UserId) as PayMemerNum, DATE_FORMAT(CreateDate,'%Y-%m-%d' ) as CreateDate from rb_goods_order where 1=1 {payMemerNumWhere} GROUP BY DATE_FORMAT(CreateDate,'%Y-%m-%d' ))
as c on c.CreateDate=DATE_FORMAT(a.CreateDate,'%Y-%m-%d' ) {where} )
as t GROUP BY t.CreateDate desc";
}
else if (dmodel.OrderStatus == 4)
{
sql = $@"SELECT t.CreateDate,SUM(t.ReNumber)as GoodsNum ,COUNT(t.ReOrderId)as OrderNum ,SUM(t.Income)as PayMoney,MAX(t.PayMemerNum) as PayMemerNum
from (SELECT DATE_FORMAT(a.CreateDate,'%Y-%m-%d' )as CreateDate,a.ReNumber,a.Refund as Income,c.PayMemerNum,a.ReOrderId from RB_Goods_OrderAfterSale as a
LEFT JOIN (SELECT COUNT(DISTINCT UserId) as PayMemerNum, DATE_FORMAT(CreateDate,'%Y-%m-%d' ) as CreateDate from RB_Goods_OrderAfterSale where {payMemerNumWhere} GROUP BY DATE_FORMAT(CreateDate,'%Y-%m-%d' ))
as c on c.CreateDate=DATE_FORMAT(a.CreateDate,'%Y-%m-%d' ) {where} )
as t GROUP BY t.CreateDate desc";
}
else if (dmodel.OrderStatus == 4)
{
sql = $@"SELECT t.CreateDate,SUM(t.ReNumber)as GoodsNum ,COUNT(t.ReOrderId)as OrderNum ,SUM(t.Income)as PayMoney,MAX(t.PayMemerNum) as PayMemerNum
from (SELECT DATE_FORMAT(a.CreateDate,'%Y-%m-%d' )as CreateDate,a.ReNumber,a.Refund as Income,c.PayMemerNum,a.ReOrderId from RB_Goods_OrderAfterSale as a
LEFT JOIN (SELECT COUNT(DISTINCT UserId) as PayMemerNum, DATE_FORMAT(CreateDate,'%Y-%m-%d' ) as CreateDate from RB_Goods_OrderAfterSale where {payMemerNumWhere} GROUP BY DATE_FORMAT(CreateDate,'%Y-%m-%d' ))
as c on c.CreateDate=DATE_FORMAT(a.CreateDate,'%Y-%m-%d' ) {where} )
as t GROUP BY t.CreateDate desc";
}
else if (dmodel.OrderStatus == 5)
{
sql = $@"SELECT t.CreateDate,SUM(t.ReNumber)as GoodsNum ,COUNT(t.ReOrderId)as OrderNum ,SUM(t.Income)as PayMoney,MAX(t.PayMemerNum) as PayMemerNum
from (SELECT DATE_FORMAT(a.CreateDate,'%Y-%m-%d' )as CreateDate,a.ReNumber,a.RefundActual as Income,c.PayMemerNum,a.ReOrderId from RB_Goods_OrderAfterSale as a
LEFT JOIN (SELECT COUNT(DISTINCT UserId) as PayMemerNum, DATE_FORMAT(CreateDate,'%Y-%m-%d' ) as CreateDate from RB_Goods_OrderAfterSale where {payMemerNumWhere} GROUP BY DATE_FORMAT(CreateDate,'%Y-%m-%d' ))
as c on c.CreateDate=DATE_FORMAT(a.CreateDate,'%Y-%m-%d' ) {where} )
as t GROUP BY t.CreateDate desc";
}
return GetPage<DataStatistics_Query>(pageIndex, pageSize, out count, sql).ToList();
}
......
......@@ -224,7 +224,7 @@ namespace Mall.Repository.User
string sql = @$" SELECT CreateDate,SUM(Income) as Income, SUM(Expend) as Expend from (
select DATE_FORMAT(a.CreateDate, '%Y-%m-%d') as CreateDate, a.Integral as Income, 0 as Expend from {TableName} as a LEFT JOIN {MemberTableName} as b on a.UserId=b.Id where a.Type = 1 {builder.ToString()}
union all
select DATE_FORMAT(a.CreateDate, '%Y-%m-%d') as CreateDate, a.Integral as Income, 0 as Expend from {TableName} as a LEFT JOIN {MemberTableName} as b on a.UserId=b.Id where a.Type = 2 {builder.ToString()}
select DATE_FORMAT(a.CreateDate, '%Y-%m-%d') as CreateDate, 0 as Income, a.Integral as Expend from {TableName} as a LEFT JOIN {MemberTableName} as b on a.UserId=b.Id where a.Type = 2 {builder.ToString()}
) as t GROUP BY CreateDate ";
return GetPage<Integral_Query>(pageIndex, pageSize, out rowCount, sql).ToList();
}
......
......@@ -9,6 +9,7 @@
<PackageReference Include="Aliyun.OSS.SDK.NetCore" Version="2.10.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="RabbitMQ.Client" Version="6.0.0" />
<PackageReference Include="Tencent.QCloud.Cos.Sdk" Version="5.4.10" />
</ItemGroup>
<ItemGroup>
......
......@@ -10,14 +10,7 @@ namespace Mall.ThirdCore.Oss
/// <returns></returns>
public static IOssService Get()
{
if (Config.FileService == "1")
{
return AliOssService.Instance();
}
else
{
return OytourOssService.Instance();
}
return TencentOss.Instance();
}
}
}
using COSXML;
using COSXML.Auth;
using COSXML.Model.Object;
using COSXML.Model.Bucket;
using COSXML.CosException;
using Newtonsoft.Json.Linq;
using System.IO;
using COSXML.Utils;
using System.Collections.Generic;
using System;
namespace Mall.ThirdCore.Oss
{
/// <summary>
/// 腾讯OSS服务
/// </summary>
public class TencentOss: IOssService
{
private string endpoint = "";
private string accessKeyId = "";
private string accessKeySecret = "";
private string bucketName = "";
/// <summary>
/// 构造函数
/// </summary>
/// <param name="endpoint"></param>
/// <param name="accessKeyId"></param>
/// <param name="accessKeySecret"></param>
/// <param name="bucketName"></param>
public TencentOss(string endpoint, string accessKeyId, string accessKeySecret, string bucketName)
{
this.endpoint = endpoint;
this.accessKeyId = accessKeyId;
this.accessKeySecret = accessKeySecret;
this.bucketName = bucketName;
}
/// <summary>
/// 创建实例
/// </summary>
/// <returns></returns>
public static TencentOss Instance()
{
string endpoint = "ap-chengdu";
string accessKeyId = "AKIDDPnbIzi8C1eqEOPP8dw6MNAg9H9ldDKd";
string accessKeySecret = "PdcLtOjslUzNFYdU4OSI1fKtdHpFT2Ob";
string bucketName = "viitto-1301420277";
return new TencentOss(endpoint, accessKeyId, accessKeySecret, bucketName);
}
/// <summary>
/// 上传文件
/// </summary>
/// <param name="fileName">文件名</param>
/// <param name="stream">文件流</param>
/// <returns></returns>
public OssResult UploadFile(string filePath, System.IO.Stream stream)
{
OssResult ossResult = new OssResult();
CosXmlConfig config = new CosXmlConfig.Builder()
.SetConnectionTimeoutMs(60000) //设置连接超时时间,单位毫秒,默认45000ms
.SetReadWriteTimeoutMs(40000) //设置读写超时时间,单位毫秒,默认45000ms
.IsHttps(true) //设置默认 HTTPS 请求
.SetAppid("1301420277") //设置腾讯云账户的账户标识 APPID
.SetRegion(this.endpoint) //设置一个默认的存储桶地域
.Build();
string secretId = this.accessKeyId; //云 API 密钥 SecretId
string secretKey =this.accessKeySecret; //云 API 密钥 SecretKey
long durationSecond = 600; //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId,
secretKey, durationSecond);
CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);
try
{
string fileExtention = System.IO.Path.GetExtension(filePath);
string bucket = this.bucketName; //存储桶,格式:BucketName-APPID
string key = @"/SaleBefore/Goods/"+DateTime.Now.Ticks.ToString()+fileExtention; //对象在存储桶中的位置,即称对象键
PutObjectRequest request = new PutObjectRequest(bucket, key, filePath);
//设置签名有效时长
request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
//设置进度回调
request.SetCosProgressCallback(delegate (long completed, long total)
{
//Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
});
//执行请求
PutObjectResult result = cosXml.PutObject(request);
//对象的 eTag
ossResult.data = key;
ossResult.resultCode = 1;
ossResult.message = "上传成功";
}
catch (COSXML.CosException.CosClientException clientEx)
{
ossResult.resultCode = 0;
ossResult.message = clientEx.Message;
}
catch (COSXML.CosException.CosServerException serverEx)
{
ossResult.resultCode = 0;
ossResult.message = serverEx.Message;
}
return ossResult;
}
/// <summary>
/// 删除文件
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public OssResult DeleteFile(string fileName)
{
OssResult result = new OssResult();
return result;
}
/// <summary>
/// 批量删除文件
/// </summary>
/// <param name="fileNameList"></param>
/// <returns></returns>
public OssResult DeleteFile(List<string> fileNameList)
{
OssResult result=new OssResult ();
return result;
}
/// <summary>
/// 拷贝文件
/// </summary>
/// <param name="sourceFileName">源文件</param>
/// <param name="targetFileName">目标文件</param>
/// <returns></returns>
public OssResult FileCopy(string sourceFileName, string targetFileName)
{
OssResult result = new OssResult();
return result;
}
/// <summary>
/// 判断文件是否存在
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public bool FileIsExist(string fileName)
{
return false;
}
}
}
\ No newline at end of file
......@@ -8,6 +8,7 @@ using System.Linq;
using Mall.WebApi.Filter;
using Mall.Common.API;
using Mall.Common.Plugin;
using Mall.ThirdCore.Oss;
namespace Mall.WebApi.Controllers.File
{
......@@ -64,9 +65,6 @@ namespace Mall.WebApi.Controllers.File
}
}
/// <summary>
/// 上传文件到本地临时文件
/// </summary>
......@@ -112,5 +110,50 @@ namespace Mall.WebApi.Controllers.File
}
}
/// <summary>
/// 文件上传
/// </summary>
/// <param name="request"></param>
/// <param name="files"></param>
/// <returns></returns>
public virtual ApiResult UploadTencent()
{
try
{
var files = Request.Form.Files;
if (files.Count == 0)
{
return new ApiResult { resultCode = (int)ResultCode.Fail, message = "未选择文件", data = "" };
}
string filename = files[0].FileName;
string fileExtention = System.IO.Path.GetExtension(files[0].FileName);
string path = Guid.NewGuid().ToString() + fileExtention;
string basepath = AppContext.BaseDirectory;
string path_server = basepath + "\\SaleBefore\\Goods\\" + path;
if (!Directory.Exists(basepath + "\\SaleBefore\\Goods\\"))
{
Directory.CreateDirectory(basepath + "\\SaleBefore\\Goods\\");
}
using (FileStream fstream = new FileStream(path_server, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
files[0].CopyTo(fstream);
}
IOssService ossService = OssService.Get();
OssResult result = ossService.UploadFile(path_server,null);
try
{
System.IO.File.Delete(path_server);
}
catch {
}
return ApiResult.Success("", Common.Config.GetFileUrl(result.data.ToString()));
}
catch (Exception ex)
{
LogHelper.Write(ex, "FileUpload");
return ApiResult.Failed();
}
}
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
......@@ -3,7 +3,9 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Mall.Common.API;
using Mall.Common.Data;
using Mall.Common.Plugin;
using Mall.Model.Extend.BaseSetUp;
using Mall.Module.BaseSetUp;
using Mall.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
......@@ -29,7 +31,7 @@ namespace Mall.WebApi.Controllers.MallBase
/// </summary>
/// <param name="ParentID">父节点编号</param>
/// <returns></returns>
public ApiResult GetChildList()
public ApiResult GetChildList()
{
JObject parm = JObject.Parse(RequestParm.msg.ToString());
int ID = parm.GetInt("Id");
......@@ -48,5 +50,42 @@ namespace Mall.WebApi.Controllers.MallBase
return ApiResult.Failed("未找到相关数据!");
}
}
[HttpPost]
public ApiResult GetAllList()
{
JObject parm = JObject.Parse(RequestParm.msg.ToString());
var list = destinationModule.GetAllList();
var result = GetData(list);
return ApiResult.Success("", result);
}
public static List<RB_Destination_Extend> GetData(List<RB_Destination_Extend> nodeList)
{
List<RB_Destination_Extend> nodes = nodeList.Where(x => x.ParentID == 2).ToList();
foreach (RB_Destination_Extend item in nodes)
{
item.Children = GetChildrens(nodeList, item);
}
return nodes;
}
//递归获取子节点
public static List<RB_Destination_Extend> GetChildrens(List<RB_Destination_Extend> nodeList, RB_Destination_Extend node)
{
List<RB_Destination_Extend> childrens = nodeList.Where(x => x.ParentID == node.ID).ToList();
foreach (RB_Destination_Extend item in childrens)
{
item.Children = GetChildrens(nodeList, item);
}
return childrens;
}
}
}
\ No newline at end of file
......@@ -274,6 +274,14 @@ namespace Mall.WebApi.Controllers.MarketingCenter
}
}
if (query.CouponType == CouponTypeEnum.Discount)
{
if (query.DiscountsPrice > 10)
{
return ApiResult.Failed("折扣率的值必须不大于10");
}
}
if (query.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Category || query.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Product)
{
......
......@@ -333,5 +333,69 @@ namespace Mall.WebApi.Controllers.MarketingCenter
}
#endregion
#region 余额自定义设置
/// <summary>
/// 获取详情
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetRechargeCustomList()
{
var parms = RequestParm;
var query = JsonConvert.DeserializeObject<RB_Recharge_Custom>(RequestParm.msg.ToString());
query.TenantId = UserInfo.TenantId;
query.MallBaseId = parms.MallBaseId;
var oldLogisticsModel = rechargeModule.GetRechargeCustomList(query).FirstOrDefault();
if (oldLogisticsModel == null)
{
oldLogisticsModel = new RB_Recharge_Custom();
oldLogisticsModel.BalanceName = "余额";
oldLogisticsModel.RechareName = "充值金额";
oldLogisticsModel.RechareExplain = "充值说明";
oldLogisticsModel.BtnFillet = 40;
oldLogisticsModel.BtnName = "立即充值";
oldLogisticsModel.BackgroundColor = "#FF4544";
oldLogisticsModel.TextColor = "#FFFFFF";
}
return ApiResult.Success("", oldLogisticsModel);
}
/// <summary>
/// 保存充值方案
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult AddOrUpdateRechargeCustom()
{
var parms = RequestParm;
var query = JsonConvert.DeserializeObject<RB_Recharge_Custom>(RequestParm.msg.ToString());
query.TenantId = UserInfo.TenantId;
query.MallBaseId = parms.MallBaseId;
if (query == null)
{
return ApiResult.Failed("请传入自定义设置");
}
else
{
if (query.ID == 0)
{
query.CreateDate = System.DateTime.Now;
}
query.UpdateDate = System.DateTime.Now;
bool result = rechargeModule.AddOrUpdateRechargeCustom(query);
if (result)
{
return ApiResult.Success("自定义设置保存成功");
}
else
{
return ApiResult.Failed("自定义设置保存失败");
}
}
}
#endregion
}
}
\ No newline at end of file
......@@ -216,7 +216,7 @@ namespace Mall.WebApi.Controllers.MarketingCenter
#region 销售统计
/// <summary>
/// 充值方案列表
///销售统计列表
/// </summary>
/// <returns></returns>
[HttpPost]
......
......@@ -844,6 +844,7 @@ namespace Mall.WebApi.Controllers.User
public ApiResult GetMenuList()
{
List<object> resultList = new List<object>();
var menuList = menuModule.GetMenuListModule(new RB_Menu_Extend() { });
var list = new List<RB_Menu_Extend>();
if (RequestParm.EmpId > 0)
{
......@@ -851,11 +852,46 @@ namespace Mall.WebApi.Controllers.User
if (roleList != null && roleList.Count > 0)
{
list = menuModule.GetMenuListModule(new RB_Menu_Extend() { QMenuIds = roleList?.FirstOrDefault()?.RoleAuth });
var superList = new List<RB_Menu_Extend>();
foreach (var item in list)
{
if (item.MenuLevel == 3)
{
var secondMenuList = menuList.Where(qitem => qitem.MenuId == item.ParentId).ToList();
foreach (var secondItem in secondMenuList)
{
if (!(superList.Where(qitem => qitem.MenuId == secondItem.MenuId).Count() > 0))
{
superList.Add(secondItem);
}
var firstMenuList= menuList.Where(qitem => qitem.MenuId == secondItem.ParentId).ToList();
foreach (var firstItem in firstMenuList)
{
if (!(superList.Where(qitem => qitem.MenuId == firstItem.MenuId).Count() > 0))
{
superList.Add(firstItem);
}
}
}
}
if (item.MenuLevel == 2)
{
var firstMenuList = menuList.Where(qitem => qitem.MenuId == item.ParentId).ToList();
foreach (var firstItem in firstMenuList)
{
if (!(superList.Where(qitem => qitem.MenuId == firstItem.MenuId).Count() > 0))
{
superList.Add(firstItem);
}
}
}
}
list.AddRange(superList);
}
}
else
{
list = menuModule.GetMenuListModule(new RB_Menu_Extend() { });
list = menuList;
}
var rootList = list.Where(qitem => qitem.MenuLevel == 1).OrderBy(qitem => qitem.SortNum).ToList();
......
......@@ -25,5 +25,7 @@
<ProjectReference Include="..\Mall.ThirdCore\Mall.ThirdCore.csproj" />
</ItemGroup>
<ProjectExtensions><VisualStudio><UserProperties appsettings_1json__JsonSchema="" /></VisualStudio></ProjectExtensions>
</Project>
......@@ -49,6 +49,7 @@ namespace Mall.WebApi
"http://localhost:8082",
"http://127.0.0.1:50512",
"http://127.0.0.1:20224",
"http://127.0.0.1:28221",
"http://www.test.com:8080",
"http://www.test.com:8081",
"http://yx.oytour.com",
......
This diff is collapsed.
......@@ -6,6 +6,95 @@ using System.Threading.Tasks;
namespace Test.Model
{
/// <summary>
/// 页面实体类
/// </summary>
public class PageData
{
/// <summary>
/// 页面编号
/// </summary>
public int id { get; set; }
/// <summary>
/// 页面标题
/// </summary>
public string title { get; set;}
/// <summary>
/// 是否显示导航
/// </summary>
public int show_navs { get; set; }
/// <summary>
/// 是否启用
/// </summary>
public int is_disable { get; set; }
/// <summary>
/// 是否首页
/// </summary>
public int is_home_page { get; set; }
/// <summary>
/// 导航模板
/// </summary>
public List<navsData> navs { get; set; }
}
/// <summary>
/// 导航数据
/// </summary>
public class navsData
{
/// <summary>
/// 导航编号
/// </summary>
// public int navs { get; set; }
/// <summary>
/// 导航编号
/// </summary>
public int navs_id { get; set; }
/// <summary>
/// 模板名称
/// </summary>
public string template { get; set; }
/// <summary>
/// 模板编号
/// </summary>
public int template_id { get; set; }
}
/// <summary>
/// 模板实体类
/// </summary>
public class TemplateData
{
/// <summary>
/// 模板编号
/// </summary>
public int id { get; set; }
/// <summary>
/// 商城编号
/// </summary>
public int mall_id { get; set; }
/// <summary>
/// 模板名称
/// </summary>
public string name { get; set; }
/// <summary>
/// 模板数据
/// </summary>
public string data { get; set; }
}
/// <summary>
/// 分类实体
/// </summary>
......
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