Commit 8c4f2475 authored by 黄奎's avatar 黄奎

页面修改

parent b717c3a4
...@@ -60,7 +60,7 @@ namespace Mall.Common.Pay.WeChatPat ...@@ -60,7 +60,7 @@ namespace Mall.Common.Pay.WeChatPat
s.Flush(); s.Flush();
s.Close(); s.Close();
s.Dispose(); s.Dispose();
Plugin.LogHelper.Write($"GetNotifyData Receive data from WeChat :{builder.ToString()}"); Plugin.LogHelper.WriteInfo($"GetNotifyData Receive data from WeChat :{builder.ToString()}");
//转换数据格式并验证签名 //转换数据格式并验证签名
// WxPayData data = new WxPayData(); // WxPayData data = new WxPayData();
...@@ -81,8 +81,7 @@ namespace Mall.Common.Pay.WeChatPat ...@@ -81,8 +81,7 @@ namespace Mall.Common.Pay.WeChatPat
//若签名错误,则立即返回结果给微信支付后台 //若签名错误,则立即返回结果给微信支付后台
Plugin.LogHelper.Error($"ResponseHandler xml错误",ex); Plugin.LogHelper.Error($"ResponseHandler xml错误",ex);
} }
Plugin.LogHelper.Write($"GetNotifyData Check sign success"); Plugin.LogHelper.WriteInfo($"GetNotifyData Check sign success");
} }
/// <summary> /// <summary>
......
...@@ -175,28 +175,12 @@ namespace Mall.Module.User ...@@ -175,28 +175,12 @@ namespace Mall.Module.User
}; };
wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), ""); wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), "");
LogHelper.Write("下单成功发送订阅消息:" + wenXinResult); LogHelper.WriteInfo("下单成功发送订阅消息:" + wenXinResult);
JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult); JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult);
int errcode = Convert.ToInt32(jo["errcode"].ToString()); int errcode = Convert.ToInt32(jo["errcode"].ToString());
if (errcode == 0) if (errcode == 0)
{ //成功 {
//var list = subscriptionRepository.GetList(new RB_Member_Subscription_Extend() { OpenId = OpenId, Type = 1, TempleteId = appletWeChatModel.OrderSuccessTpl, MallBaseId = MallBaseId, TenantId = TenantId }); //成功
//if (list.Any())
//{
// // 减少订阅次数
// var model = list.FirstOrDefault();
// Dictionary<string, object> files = new Dictionary<string, object>() {
// { nameof(RB_Member_Subscription.Count),model.Count>0?( model.Count--):0 }
// };
// List<WhereHelper> wheres = new List<WhereHelper>() {
// new WhereHelper(){
// FiledName=nameof(RB_Member_Subscription.Id),
// FiledValue=model.Id,
// OperatorEnum=OperatorEnum.Equal
// }
// };
// subscriptionRepository.Update(files, wheres);
//}
return true; return true;
} }
else else
...@@ -264,28 +248,12 @@ namespace Mall.Module.User ...@@ -264,28 +248,12 @@ namespace Mall.Module.User
}; };
wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), ""); wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), "");
LogHelper.Write("下单取消发送订阅消息:" + wenXinResult); LogHelper.WriteInfo("下单取消发送订阅消息:" + wenXinResult);
JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult); JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult);
int errcode = Convert.ToInt32(jo["errcode"].ToString()); int errcode = Convert.ToInt32(jo["errcode"].ToString());
if (errcode == 0) if (errcode == 0)
{//成功 {
//var list = subscriptionRepository.GetList(new RB_Member_Subscription_Extend() { OpenId = OpenId, Type = 1, TempleteId = appletWeChatModel.OrderCancelTpl, MallBaseId = MallBaseId, TenantId = TenantId }); //成功
//if (list.Any())
//{
// // 减少订阅次数
// var model = list.FirstOrDefault();
// Dictionary<string, object> files = new Dictionary<string, object>() {
// { nameof(RB_Member_Subscription.Count),model.Count>0?( model.Count--):0 }
// };
// List<WhereHelper> wheres = new List<WhereHelper>() {
// new WhereHelper(){
// FiledName=nameof(RB_Member_Subscription.Id),
// FiledValue=model.Id,
// OperatorEnum=OperatorEnum.Equal
// }
// };
// subscriptionRepository.Update(files, wheres);
//}
return true; return true;
} }
else else
...@@ -296,8 +264,6 @@ namespace Mall.Module.User ...@@ -296,8 +264,6 @@ namespace Mall.Module.User
return false; return false;
} }
/// <summary> /// <summary>
/// 发货通知发送订阅消息 /// 发货通知发送订阅消息
/// </summary> /// </summary>
...@@ -311,9 +277,7 @@ namespace Mall.Module.User ...@@ -311,9 +277,7 @@ namespace Mall.Module.User
/// <returns></returns> /// <returns></returns>
public bool SendOrderDeliverMsg(int TenantId, int MallBaseId, string OpenId, string Remark, string TrackingNumber, string Company, string GoodsName) public bool SendOrderDeliverMsg(int TenantId, int MallBaseId, string OpenId, string Remark, string TrackingNumber, string Company, string GoodsName)
{ {
var appletWeChatModel = programRepository.GetListRepository(new RB_MiniProgram_Extend { TenantId = TenantId, MallBaseId = MallBaseId }).FirstOrDefault(); var appletWeChatModel = programRepository.GetListRepository(new RB_MiniProgram_Extend { TenantId = TenantId, MallBaseId = MallBaseId }).FirstOrDefault();
string token = WeiXinReidsCache.Get(appletWeChatModel.MiniAppId); string token = WeiXinReidsCache.Get(appletWeChatModel.MiniAppId);
if (string.IsNullOrEmpty(token)) if (string.IsNullOrEmpty(token))
{ {
...@@ -355,28 +319,12 @@ namespace Mall.Module.User ...@@ -355,28 +319,12 @@ namespace Mall.Module.User
}; };
wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), ""); wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), "");
LogHelper.Write("发货通知发送订阅消息:" + wenXinResult); LogHelper.WriteInfo("发货通知发送订阅消息:" + wenXinResult);
JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult); JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult);
int errcode = Convert.ToInt32(jo["errcode"].ToString()); int errcode = Convert.ToInt32(jo["errcode"].ToString());
if (errcode == 0) if (errcode == 0)
{//成功 {
//var list = subscriptionRepository.GetList(new RB_Member_Subscription_Extend() { OpenId = OpenId, Type = 1, TempleteId = appletWeChatModel.OrderDeliverGoodsTpl, MallBaseId = MallBaseId, TenantId = TenantId }); //成功
//if (list.Any())
//{
// // 减少订阅次数
// var model = list.FirstOrDefault();
// Dictionary<string, object> files = new Dictionary<string, object>() {
// { nameof(RB_Member_Subscription.Count),model.Count>0?( model.Count--):0 }
// };
// List<WhereHelper> wheres = new List<WhereHelper>() {
// new WhereHelper(){
// FiledName=nameof(RB_Member_Subscription.Id),
// FiledValue=model.Id,
// OperatorEnum=OperatorEnum.Equal
// }
// };
// subscriptionRepository.Update(files, wheres);
//}
return true; return true;
} }
else else
...@@ -444,28 +392,12 @@ namespace Mall.Module.User ...@@ -444,28 +392,12 @@ namespace Mall.Module.User
}; };
wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), ""); wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), "");
LogHelper.Write("退款通知发送订阅消息:" + wenXinResult); LogHelper.WriteInfo("退款通知发送订阅消息:" + wenXinResult);
JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult); JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult);
int errcode = Convert.ToInt32(jo["errcode"].ToString()); int errcode = Convert.ToInt32(jo["errcode"].ToString());
if (errcode == 0) if (errcode == 0)
{//成功 {
//var list = subscriptionRepository.GetList(new RB_Member_Subscription_Extend() { OpenId = OpenId, Type = 1, TempleteId = appletWeChatModel.RefundTpl, MallBaseId = MallBaseId, TenantId = TenantId }); //成功
//if (list.Any())
//{
// // 减少订阅次数
// var model = list.FirstOrDefault();
// Dictionary<string, object> files = new Dictionary<string, object>() {
// { nameof(RB_Member_Subscription.Count),model.Count>0?( model.Count--):0 }
// };
// List<WhereHelper> wheres = new List<WhereHelper>() {
// new WhereHelper(){
// FiledName=nameof(RB_Member_Subscription.Id),
// FiledValue=model.Id,
// OperatorEnum=OperatorEnum.Equal
// }
// };
// subscriptionRepository.Update(files, wheres);
//}
return true; return true;
} }
else else
...@@ -528,28 +460,12 @@ namespace Mall.Module.User ...@@ -528,28 +460,12 @@ namespace Mall.Module.User
}; };
wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), ""); wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), "");
LogHelper.Write("活动状态发送订阅消息:" + wenXinResult); LogHelper.WriteInfo("活动状态发送订阅消息:" + wenXinResult);
JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult); JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult);
int errcode = Convert.ToInt32(jo["errcode"].ToString()); int errcode = Convert.ToInt32(jo["errcode"].ToString());
if (errcode == 0) if (errcode == 0)
{//成功 {
//var list = subscriptionRepository.GetList(new RB_Member_Subscription_Extend() { OpenId = OpenId, Type = 1, TempleteId = appletWeChatModel.ActiveStateTpl, MallBaseId = MallBaseId, TenantId = TenantId }); //成功
//if (list.Any())
//{
// // 减少订阅次数
// var model = list.FirstOrDefault();
// Dictionary<string, object> files = new Dictionary<string, object>() {
// { nameof(RB_Member_Subscription.Count),model.Count>0?( model.Count--):0 }
// };
// List<WhereHelper> wheres = new List<WhereHelper>() {
// new WhereHelper(){
// FiledName=nameof(RB_Member_Subscription.Id),
// FiledValue=model.Id,
// OperatorEnum=OperatorEnum.Equal
// }
// };
// subscriptionRepository.Update(files, wheres);
//}
return true; return true;
} }
else else
...@@ -615,28 +531,12 @@ namespace Mall.Module.User ...@@ -615,28 +531,12 @@ namespace Mall.Module.User
} }
}; };
wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), ""); wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), "");
LogHelper.Write("审核结果通知发送订阅消息:" + wenXinResult); LogHelper.WriteInfo("审核结果通知发送订阅消息:" + wenXinResult);
JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult); JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult);
int errcode = Convert.ToInt32(jo["errcode"].ToString()); int errcode = Convert.ToInt32(jo["errcode"].ToString());
if (errcode == 0) if (errcode == 0)
{//成功 {
//var list = subscriptionRepository.GetList(new RB_Member_Subscription_Extend() { OpenId = OpenId, Type = 1, TempleteId = appletWeChatModel.AuditResultTpl, MallBaseId = MallBaseId, TenantId = TenantId }); //成功
//if (list.Any())
//{
// // 减少订阅次数
// var model = list.FirstOrDefault();
// Dictionary<string, object> files = new Dictionary<string, object>() {
// { nameof(RB_Member_Subscription.Count),model.Count>0?( model.Count--):0 }
// };
// List<WhereHelper> wheres = new List<WhereHelper>() {
// new WhereHelper(){
// FiledName=nameof(RB_Member_Subscription.Id),
// FiledValue=model.Id,
// OperatorEnum=OperatorEnum.Equal
// }
// };
// subscriptionRepository.Update(files, wheres);
//}
return true; return true;
} }
else else
...@@ -703,28 +603,12 @@ namespace Mall.Module.User ...@@ -703,28 +603,12 @@ namespace Mall.Module.User
} }
}; };
wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), ""); wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), "");
LogHelper.Write("提现成功通知发送订阅消息:" + wenXinResult); LogHelper.WriteInfo("提现成功通知发送订阅消息:" + wenXinResult);
JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult); JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult);
int errcode = Convert.ToInt32(jo["errcode"].ToString()); int errcode = Convert.ToInt32(jo["errcode"].ToString());
if (errcode == 0) if (errcode == 0)
{//成功 {
//var list = subscriptionRepository.GetList(new RB_Member_Subscription_Extend() { OpenId = OpenId, Type = 1, TempleteId = appletWeChatModel.ReflectSuccessTpl, MallBaseId = MallBaseId, TenantId = TenantId }); //成功
//if (list.Any())
//{
// // 减少订阅次数
// var model = list.FirstOrDefault();
// Dictionary<string, object> files = new Dictionary<string, object>() {
// { nameof(RB_Member_Subscription.Count),model.Count>0?( model.Count--):0 }
// };
// List<WhereHelper> wheres = new List<WhereHelper>() {
// new WhereHelper(){
// FiledName=nameof(RB_Member_Subscription.Id),
// FiledValue=model.Id,
// OperatorEnum=OperatorEnum.Equal
// }
// };
// subscriptionRepository.Update(files, wheres);
//}
return true; return true;
} }
else else
...@@ -781,28 +665,12 @@ namespace Mall.Module.User ...@@ -781,28 +665,12 @@ namespace Mall.Module.User
} }
}; };
wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), ""); wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), "");
LogHelper.Write("提现失败通知发送订阅消息:" + wenXinResult); LogHelper.WriteInfo("提现失败通知发送订阅消息:" + wenXinResult);
JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult); JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult);
int errcode = Convert.ToInt32(jo["errcode"].ToString()); int errcode = Convert.ToInt32(jo["errcode"].ToString());
if (errcode == 0) if (errcode == 0)
{//成功 {
//var list = subscriptionRepository.GetList(new RB_Member_Subscription_Extend() { OpenId = OpenId, Type = 1, MallBaseId = MallBaseId, TempleteId = appletWeChatModel.ReflectFailTpl, TenantId = TenantId }); //成功
//if (list.Any())
//{
// // 减少订阅次数
// var model = list.FirstOrDefault();
// Dictionary<string, object> files = new Dictionary<string, object>() {
// { nameof(RB_Member_Subscription.Count),model.Count>0?( model.Count--):0 }
// };
// List<WhereHelper> wheres = new List<WhereHelper>() {
// new WhereHelper(){
// FiledName=nameof(RB_Member_Subscription.Id),
// FiledValue=model.Id,
// OperatorEnum=OperatorEnum.Equal
// }
// };
// subscriptionRepository.Update(files, wheres);
//}
return true; return true;
} }
else else
...@@ -859,28 +727,12 @@ namespace Mall.Module.User ...@@ -859,28 +727,12 @@ namespace Mall.Module.User
} }
}; };
wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), ""); wenXinResult = HttpHelper.HttpPost(Url, JsonHelper.Serialize(postdata), "");
LogHelper.Write("会员等级通知发送订阅消息:" + wenXinResult); LogHelper.WriteInfo("会员等级通知发送订阅消息:" + wenXinResult);
JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult); JObject jo = (JObject)JsonConvert.DeserializeObject(wenXinResult);
int errcode = Convert.ToInt32(jo["errcode"].ToString()); int errcode = Convert.ToInt32(jo["errcode"].ToString());
if (errcode == 0) if (errcode == 0)
{//成功 {
//var list = subscriptionRepository.GetList(new RB_Member_Subscription_Extend() { OpenId = OpenId, Type = 1, TempleteId = appletWeChatModel.MembersLevelChangeTpl, MallBaseId = MallBaseId, TenantId = TenantId }); //成功
//if (list.Any())
//{
// // 减少订阅次数
// var model = list.FirstOrDefault();
// Dictionary<string, object> files = new Dictionary<string, object>() {
// { nameof(RB_Member_Subscription.Count),model.Count>0?( model.Count--):0 }
// };
// List<WhereHelper> wheres = new List<WhereHelper>() {
// new WhereHelper(){
// FiledName=nameof(RB_Member_Subscription.Id),
// FiledValue=model.Id,
// OperatorEnum=OperatorEnum.Equal
// }
// };
// subscriptionRepository.Update(files, wheres);
//}
return true; return true;
} }
else else
......
...@@ -77,7 +77,7 @@ namespace Mall.WebApi.App_Code ...@@ -77,7 +77,7 @@ namespace Mall.WebApi.App_Code
}); });
var xe = XElement.Parse(result, LoadOptions.SetLineInfo); var xe = XElement.Parse(result, LoadOptions.SetLineInfo);
LogHelper.Write(null, "订单号【" + sOrderNo + "】成功回调:" + xe); LogHelper.WriteInfo("订单号【" + sOrderNo + "】成功回调:" + xe);
try try
{ {
//存入缓存,方便自动取消的时候不被清理 //存入缓存,方便自动取消的时候不被清理
...@@ -122,7 +122,7 @@ namespace Mall.WebApi.App_Code ...@@ -122,7 +122,7 @@ namespace Mall.WebApi.App_Code
var res = new ResponseHandler(accessor); var res = new ResponseHandler(accessor);
var tradeType = res.GetParameter("trade_type"); var tradeType = res.GetParameter("trade_type");
LogHelper.Write(null, "Notify支付回调:res-" + res.ToString()); LogHelper.WriteInfo("Notify支付回调:res-" + res.ToString());
RB_MiniProgram_Extend model = new RB_MiniProgram_Extend(); RB_MiniProgram_Extend model = new RB_MiniProgram_Extend();
model = programModule.GetMiniProgramModule(new RB_MiniProgram_Extend { MallBaseId = 0, TenantId = 0 }); model = programModule.GetMiniProgramModule(new RB_MiniProgram_Extend { MallBaseId = 0, TenantId = 0 });
res.SetKey(model.WeChatApiSecret); res.SetKey(model.WeChatApiSecret);
...@@ -181,7 +181,7 @@ namespace Mall.WebApi.App_Code ...@@ -181,7 +181,7 @@ namespace Mall.WebApi.App_Code
} }
else else
{ {
LogHelper.Write(null, "Notify支付回调:returnMsg-" + returnMsg); LogHelper.WriteInfo("Notify支付回调:returnMsg-" + returnMsg);
} }
} }
else else
...@@ -197,109 +197,7 @@ namespace Mall.WebApi.App_Code ...@@ -197,109 +197,7 @@ namespace Mall.WebApi.App_Code
} }
/// <summary>
//public ProcessNotify(HttpContext context)
//{
// WxPayData notifyData = GetNotifyData(context);
// //检查支付结果中transaction_id是否存在
// if (!notifyData.IsSet("transaction_id"))
// {
// //若transaction_id不存在,则立即返回结果给微信支付后台
// WxPayData res = new WxPayData();
// res.SetValue("return_code", "FAIL");
// res.SetValue("return_msg", "支付结果中微信订单号不存在");
// context.Response.WriteAsync(res.ToXml());
// return (false, null);
// }
// string transaction_id = notifyData.GetValue("transaction_id").ToString();
// string out_trade_no = notifyData.GetValue("out_trade_no").ToString();
// //查询订单,判断订单真实性
// if (!QueryOrder(transaction_id))
// {
// //若订单查询失败,则立即返回结果给微信支付后台
// WxPayData res = new WxPayData();
// res.SetValue("return_code", "FAIL");
// res.SetValue("return_msg", "订单查询失败");
// context.Response.WriteAsync(res.ToXml());
// return (false, null);
// }
// //查询订单成功
// else
// {
// WxPayData res = new WxPayData();
// res.SetValue("return_code", "SUCCESS");
// res.SetValue("return_msg", "OK");
// context.Response.WriteAsync(res.ToXml());
// ProcessNotifyReturn notifyReturn = new ProcessNotifyReturn
// {
// out_trade_no = out_trade_no,
// transaction_id = transaction_id
// };
// return (true, notifyReturn);
// }
//}
///// <summary>
///// 接收从微信支付后台发送过来的数据并验证签名
///// </summary>
///// <returns>微信支付后台返回的数据</returns>
//public WxPayData GetNotifyData(HttpContext context)
//{
// #region
// //注意:如果用以下读取流的方法,.net core 3.0 以后一定要加下边那段
// //.net core 3.0以后需加下边这段,否则Stream会报错
// var syncIOFeature = context.Features.Get<IHttpBodyControlFeature>();
// if (syncIOFeature != null)
// {
// syncIOFeature.AllowSynchronousIO = true;
// }
// #endregion
// //接收从微信后台POST过来的数据
// System.IO.Stream s = context.Request.Body;
// int count = 0;
// byte[] buffer = new byte[1024];
// StringBuilder builder = new StringBuilder();
// while ((count = s.Read(buffer, 0, 1024)) > 0)
// {
// builder.Append(Encoding.UTF8.GetString(buffer, 0, count));
// }
// s.Flush();
// s.Close();
// s.Dispose();
// LogHelper.Write($"GetNotifyData Receive data from WeChat :{builder.ToString()}");
// //转换数据格式并验证签名
// WxPayData data = new WxPayData();
// try
// {
// data.FromXml(builder.ToString());
// }
// catch (Exception ex)
// {
// //若签名错误,则立即返回结果给微信支付后台
// WxPayData res = new WxPayData();
// res.SetValue("return_code", "FAIL");
// res.SetValue("return_msg", ex.Message);
// context.Response.WriteAsync(res.ToXml());
// }
// LogHelper.Write($"GetNotifyData Check sign success");
// return data;
//}
// <summary>
/// 退款 传入订单号OrderNumber,RefundNumber,总金额total_fee(分),RefundFee退款金额(分), /// 退款 传入订单号OrderNumber,RefundNumber,总金额total_fee(分),RefundFee退款金额(分),
/// </summary> /// </summary>
/// <param name="param"></param> /// <param name="param"></param>
......
...@@ -72,7 +72,7 @@ namespace Mall.WebApi.Controllers.User ...@@ -72,7 +72,7 @@ namespace Mall.WebApi.Controllers.User
//验证是否新用户 //验证是否新用户
if (!userModule.ValidateUserOpenId(demodel.OpenId, demodel.Source, requestParm.TenantId, requestParm.MallBaseId)) if (!userModule.ValidateUserOpenId(demodel.OpenId, demodel.Source, requestParm.TenantId, requestParm.MallBaseId))
{ {
LogHelper.Write(demodel.OpenId + ",SuperiorId:" + (demodel.SuperiorId ?? 0)); LogHelper.WriteInfo(demodel.OpenId + ",SuperiorId:" + (demodel.SuperiorId ?? 0));
//注册新用户 //注册新用户
if (string.IsNullOrEmpty(demodel.Name)) if (string.IsNullOrEmpty(demodel.Name))
{ {
......
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