Commit b1b2a201 by 陈宁

# dev

parent 7f585515
......@@ -331,6 +331,18 @@ namespace Freemud.BE.Toolbox.Testing
DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
return (long)(input - startTime).TotalMilliseconds;
}
[TestMethod]
public void aslkdjalskjdoiqwjd()
{
var names = new List<string> { "A", "B", "C" };
for (int i = names.Count - 1; i >= 0; i--)
{
Console.WriteLine($"i:{i} names:{names[i]}");
names.Add("D");
}
}
}
public class Customer : Person
......
......@@ -16,6 +16,12 @@ namespace Freemud.BE.Toolbox.WebApi.Infrastructure.Helpers
public static async Task<IRestResponse> Post(string url, Dictionary<string, object> headers = null, Dictionary<string, object> queries = null, object jsonBody = null)
=> await ExecuteAsync(url, Method.POST, headers, queries, jsonBody);
public static async Task<IRestResponse<T>> Get<T>(string url, Dictionary<string, object> headers = null, Dictionary<string, object> queries = null)
=> await ExecuteAsync<T>(url, Method.GET, headers, queries, null);
public static async Task<IRestResponse<T>> Post<T>(string url, Dictionary<string, object> headers = null, Dictionary<string, object> queries = null, object jsonBody = null)
=> await ExecuteAsync<T>(url, Method.POST, headers, queries, jsonBody);
private static async Task<IRestResponse> ExecuteAsync(string url, Method method, Dictionary<string, object> headers = null, Dictionary<string, object> queries = null, object jsonBody = null)
{
var client = new RestClient();
......@@ -41,5 +47,31 @@ namespace Freemud.BE.Toolbox.WebApi.Infrastructure.Helpers
return response;
}
private static async Task<IRestResponse<T>> ExecuteAsync<T>(string url, Method method, Dictionary<string, object> headers = null, Dictionary<string, object> queries = null, object jsonBody = null)
{
var client = new RestClient();
var request = new RestRequest(url, method);
foreach (var h in headers ?? new Dictionary<string, object>())
request.AddHeader(h.Key, h.Value.ToString().Trim());
foreach (var p in queries ?? new Dictionary<string, object>())
request.AddQueryParameter(p.Key, p.Value.ToString().Trim());
if (jsonBody != null)
request.AddJsonBody(jsonBody);
Log.Information($"url: {url}");
Log.Information($"header: {JsonConvert.SerializeObject(headers)}");
Log.Information($"query: {JsonConvert.SerializeObject(queries)}");
Log.Information($"data: {JsonConvert.SerializeObject(jsonBody)}");
var response = await client.ExecuteAsync<T>(request);
Log.Information($"response: {response.Content}");
return response;
}
}
}
......@@ -7,13 +7,21 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Request
{
public class GetProductInfoRequest : BaseRequestResourceRequest
{
/// <summary>
/// 商品编号
/// </summary>
public List<string> ProductId { get; set; }
/// <summary>
/// 门店号
/// </summary>
public string StoreId { get; set; }
/// <summary>
/// 时间; eg: 12:34:56
/// </summary>
public string Time { get; set; }
/// <summary>
/// 是否包含套餐子商品
/// </summary>
public bool IncludeGroupDetails { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Model.Request
{
public class GetSubEquityCardListRequest : BaseRequestResourceRequest
{
/// <summary>
/// cardId
/// </summary>
public string CardId { get; set; }
/// <summary>
/// couponCode
/// </summary>
public string CouponCode { get; set; }
/// <summary>
/// ⽤户unionId
/// </summary>
public string UnionId { get; set; }
/// <summary>
/// 回调渠道编号
/// </summary>
public int PartnerId { get; set; }
/// <summary>
/// 商户编号
/// </summary>
public int MerchantId { get; set; }
/// <summary>
/// 券⽣效开始时间
/// </summary>
public string validStart { get; set; }
/// <summary>
/// 券⽣效结束时间
/// </summary>
public string validEnds { get; set; }
/// <summary>
/// 商品名称
/// </summary>
public string Title { get; set; }
/// <summary>
/// 版本号
/// </summary>
public long Version { get; set; }
/// <summary>
/// 活动信息
/// </summary>
public List<Activity> Activities { get; set; }
/// <summary>
/// 活动信息
/// </summary>
public class Activity
{
/// <summary>
/// 活动号
/// </summary>
public string no { get; set; }
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Model.Response
{
public class FreemudACTResponse<T>
{
/// <summary>
/// 消息响应Code,100=成功,其它-失败
/// </summary>
public int code { get; set; }
/// <summary>
/// 返回消息
/// </summary>
public string message { get; set; }
/// <summary>
/// 响应数据
/// </summary>
public T data { get; set; }
/// <summary>
/// 是否成功,True=是,False=否
/// </summary>
public bool IsSuccess() => code == 2000;
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Model.Response
{
public class GetSubEquityCardListResponse : FreemudACTResponse<List<GetSubEquityCardListResponse.GetEquityCardActivityBodyDto>>
{
public class GetEquityCardActivityBodyDto
{
/// <summary>
/// 活动号
/// </summary>
public string no { get; set; }
/// <summary>
/// 券号
/// </summary>
public string code { get; set; }
/// <summary>
/// 序号
/// </summary>
public int? sequence { get; set; }
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Model.Response
{
public class FreemudPUSResponse<T>
{
/// <summary>
/// 消息响应Code,100=成功,其它-失败
/// </summary>
public int errcode { get; set; }
/// <summary>
/// 返回消息
/// </summary>
public string errmsg { get; set; }
/// <summary>
/// 响应数据
/// </summary>
public T data { get; set; }
/// <summary>
/// 是否成功,True=是,False=否
/// </summary>
public bool IsSuccess() => errcode == 100;
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Model.Response
{
public class GetEquityCardCouponPackageListResponse : FreemudPUSResponse<List<string>> { }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Model.Response
{
public class GetEquityCardCouponPackageResponse : FreemudPUSResponse<GetEquityCardCouponPackageResponse.GetEquityCardCouponPackageBodyDto>
{
public class GetEquityCardCouponPackageBodyDto
{
/// <summary>
/// 回调渠道编号
/// </summary>
public int partner_id { get; set; }
/// <summary>
/// 商户编号
/// </summary>
public int merchant_id { get; set; }
/// <summary>
/// 标题
/// </summary>
public string title { get; set; }
/// <summary>
/// 券生效开始时间
/// </summary>
public string valid_start { get; set; }
/// <summary>
/// 券生效结束时间
/// </summary>
public string valid_ends { get; set; }
/// <summary>
/// 版本号
/// </summary>
public long version { get; set; }
/// <summary>
/// 子权益列表
/// </summary>
public List<Coupon> coupon { get; set; }
}
/// <summary>
/// 子权益信息
/// </summary>
public class Coupon
{
/// <summary>
/// 活动号
/// </summary>
public string no { get; set; }
/// <summary>
/// 序号
/// </summary>
public int sequence { get; set; }
}
}
}
......@@ -21,4 +21,15 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Response
public string ResponseError { get; set; }
}
public class RequestResourceResponse<T> : RequestResourceResponse
{
public T Data { get; set; }
protected RequestResourceResponse ToRequestResourceResponse()
{
return (RequestResourceResponse)base.MemberwiseClone();
}
}
}
......@@ -22,12 +22,14 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Response
/// 结束时间
/// </summary>
public string EndDate { get; set; }
/// <summary>
/// 卡券Id
/// </summary>
public string CardId { get; set; }
/// <summary>
/// 活动号
/// </summary>
public string ActiveId { get; set; }
/// <summary>
/// 卡券类型
/// 10:微信卡券
......@@ -35,17 +37,18 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Response
/// 30:Vendor卡券
/// </summary>
public EnumCardType CardType { get; set; }
/// <summary>
/// 是否权益卡(1 是权益卡)
/// </summary>
public int? IsEquityCard { get; set; }
/// <summary>
/// ArchCard优惠券可用时段
/// </summary>
public string AvailableTimeDesc { get; set; }
/// <summary>
/// 浅表克隆
/// </summary>
/// <returns></returns>
public UserCardAdapter Clone()
{
return (UserCardAdapter)MemberwiseClone();
......
......@@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Serilog;
namespace Freemud.BE.Toolbox.WebApi
{
......@@ -21,6 +22,7 @@ namespace Freemud.BE.Toolbox.WebApi
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseSerilog();
});
}
}
using Freemud.BE.Toolbox.WebApi.Model;
using Freemud.BE.Toolbox.WebApi.Model.Constants;
using Freemud.BE.Toolbox.WebApi.Model.Response;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
......@@ -10,10 +11,12 @@ namespace Freemud.BE.Toolbox.WebApi.Proxy
{
public abstract class BaseProxy
{
protected readonly ILogger<BaseProxy> logger;
private readonly List<RequestResourceConfiguration> requestResources;
protected BaseProxy(ToolboxConfiguration toolboxConfiguration)
protected BaseProxy(ILogger<BaseProxy> logger, ToolboxConfiguration toolboxConfiguration)
{
this.logger = logger;
requestResources = toolboxConfiguration.RequestResources;
}
......@@ -24,7 +27,7 @@ namespace Freemud.BE.Toolbox.WebApi.Proxy
/// <param name="group"></param>
/// <param name="name"></param>
/// <returns></returns>
public string GetUrl(string env, string group, string name)
protected string GetUrl(string env, string group, string name)
{
var config = requestResources?.FirstOrDefault(d => d.Name.Equals(group, StringComparison.OrdinalIgnoreCase));
if (config == null)
......
using Freemud.BE.Toolbox.WebApi.Infrastructure.Helpers;
using Freemud.BE.Toolbox.WebApi.Model;
using Freemud.BE.Toolbox.WebApi.Model.Constants;
using Freemud.BE.Toolbox.WebApi.Model.Request;
using Freemud.BE.Toolbox.WebApi.Model.Response;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Proxy
{
public class FmActProxy : BaseProxy
{
public FmActProxy(ILogger<FmActProxy> logger, ToolboxConfiguration toolboxConfiguration) : base(logger, toolboxConfiguration) { }
/// <summary>
/// 查询麦霸卡cardiId列表
/// </summary>
/// <returns></returns>
public async Task<RequestResourceResponse<List<GetSubEquityCardListResponse.GetEquityCardActivityBodyDto>>> GetSubEquityCardList(GetSubEquityCardListRequest request)
{
var url = string.Format(GetUrl(request.Env, "FreemudACT", "getEquityCardActivity"));
var body = new
{
cardId = request.CardId,
couponCode = request.CouponCode,
merchantId = request.MerchantId,
partnerId = request.PartnerId,
unionId = request.UnionId,
validStart = $"{request.validStart:yyyy-MM-dd HH:mm:ss}",
validEnds = $"{request.validEnds:yyyy-MM-dd HH:mm:ss}",
title = request.Title,
ver = request.Version,
activity = request.Activities
};
var response = await HttpHeper.Post<GetSubEquityCardListResponse>(url, jsonBody: body);
return new RequestResourceResponse<List<GetSubEquityCardListResponse.GetEquityCardActivityBodyDto>>
{
Name = "查询麦霸卡cardiId列表",
Url = url,
ResponseContent = response.Content,
ResponseError = response.ErrorMessage,
Data = response.Data.data
};
}
}
}
......@@ -3,6 +3,7 @@ using Freemud.BE.Toolbox.WebApi.Model;
using Freemud.BE.Toolbox.WebApi.Model.Constants;
using Freemud.BE.Toolbox.WebApi.Model.Request;
using Freemud.BE.Toolbox.WebApi.Model.Response;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
......@@ -15,7 +16,7 @@ namespace Freemud.BE.Toolbox.WebApi.Proxy
{
public class FmCouponProxy : BaseProxy
{
public FmCouponProxy(ToolboxConfiguration toolboxConfiguration) : base(toolboxConfiguration) { }
public FmCouponProxy(ILogger<FmActProxy> logger, ToolboxConfiguration toolboxConfiguration) : base(logger, toolboxConfiguration) { }
/// <summary>
/// 获取券码核销渠道
......
......@@ -2,6 +2,7 @@
using Freemud.BE.Toolbox.WebApi.Model;
using Freemud.BE.Toolbox.WebApi.Model.Request;
using Freemud.BE.Toolbox.WebApi.Model.Response;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
......@@ -11,7 +12,7 @@ namespace Freemud.BE.Toolbox.WebApi.Proxy
{
public class FmProductProxy : BaseProxy
{
public FmProductProxy(ToolboxConfiguration toolboxConfiguration) : base(toolboxConfiguration) { }
public FmProductProxy(ILogger<FmActProxy> logger, ToolboxConfiguration toolboxConfiguration) : base(logger, toolboxConfiguration) { }
/// <summary>
/// 获取商品基本信息
......@@ -21,7 +22,7 @@ namespace Freemud.BE.Toolbox.WebApi.Proxy
public async Task<RequestResourceResponse> GetProductBaseInfos(GetProductInfoRequest request)
{
var url = GetUrl(request.Env, "FreemudProduct", "listBaseInfosByTimeV2");
url = string.Format(url, string.Join(',', request.ProductId), $"{GetChannelUnifyId(request.Channel, request.Env)}_{request.StoreId}", request.Time, true);
url = string.Format(url, string.Join(',', request.ProductId), $"{GetChannelUnifyId(request.Channel, request.Env)}_{request.StoreId}", request.Time, request.IncludeGroupDetails);
var response = await HttpHeper.Get(url);
......
using Freemud.BE.Toolbox.WebApi.Infrastructure.Helpers;
using Freemud.BE.Toolbox.WebApi.Model;
using Freemud.BE.Toolbox.WebApi.Model.Constants;
using Freemud.BE.Toolbox.WebApi.Model.Request;
using Freemud.BE.Toolbox.WebApi.Model.Response;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Proxy
{
public class FmPusProxy : BaseProxy
{
public FmPusProxy(ILogger<FmPusProxy> logger, ToolboxConfiguration toolboxConfiguration) : base(logger, toolboxConfiguration) { }
/// <summary>
/// 获取所有麦霸卡卡号列表
/// </summary>
/// <returns></returns>
public async Task<RequestResourceResponse<List<string>>> GetEquityCardIds(string env)
{
var url = string.Format(GetUrl(env, "FreemudPUS", "getEquityCardIds"));
var response = await HttpHeper.Get<GetEquityCardCouponPackageListResponse>(url);
return new RequestResourceResponse<List<string>>
{
Name = "获取所有麦霸卡卡号列表",
Url = url,
ResponseContent = response.Content,
ResponseError = response.ErrorMessage,
Data = response.Data.data
};
}
/// <summary>
/// 查询麦霸卡包含子权益信息
/// </summary>
/// <returns></returns>
public async Task<RequestResourceResponse<GetEquityCardCouponPackageResponse.GetEquityCardCouponPackageBodyDto>> GetEquityCardInfo(string env, string cardId)
{
var url = string.Format(GetUrl(env, "FreemudPUS", "GetEquityCardInfo"), cardId);
var response = await HttpHeper.Get<GetEquityCardCouponPackageResponse>(url);
return new RequestResourceResponse<GetEquityCardCouponPackageResponse.GetEquityCardCouponPackageBodyDto>
{
Name = "查询麦霸卡包含子权益信息",
Url = url,
ResponseContent = response.Content,
ResponseError = response.ErrorMessage,
Data = response.Data.data
};
}
}
}
using Freemud.BE.Toolbox.WebApi.Infrastructure.Helpers;
using Freemud.BE.Toolbox.WebApi.Model;
using Freemud.BE.Toolbox.WebApi.Model.Response;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
......@@ -10,7 +11,7 @@ namespace Freemud.BE.Toolbox.WebApi.Proxy
{
public class FmStoreProxy : BaseProxy
{
public FmStoreProxy(ToolboxConfiguration toolboxConfiguration) : base(toolboxConfiguration) { }
public FmStoreProxy(ILogger<FmActProxy> logger, ToolboxConfiguration toolboxConfiguration) : base(logger, toolboxConfiguration) { }
/// <summary>
/// 请求餐道根据经纬度获取门店编号
......
......@@ -49,6 +49,8 @@ namespace Freemud.BE.Toolbox.WebApi
services.AddSingleton<FmCouponProxy>();
services.AddSingleton<FmProductProxy>();
services.AddSingleton<FmStoreProxy>();
services.AddSingleton<FmPusProxy>();
services.AddSingleton<FmActProxy>();
// Repositories
services.AddScoped<IUserRepository, UserRepository>();
......@@ -95,16 +97,12 @@ namespace Freemud.BE.Toolbox.WebApi
// 配置 Serilog
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning)
.WriteTo.Console()
//.MinimumLevel.Debug()
//.MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning)
.WriteTo.File(path: "logs\\log.log", rollingInterval: RollingInterval.Day)
.CreateLogger();
app.UseGlobalExceptionHandler();
Log.Logger.Information("=== Configure ===");
Log.Logger.Information(JsonConvert.SerializeObject(toolboxConfiguration));
if (toolboxConfiguration.RequiredCertification)
{
app.UseRequestClientInfoReceiver();
......
......@@ -195,6 +195,37 @@
"Description": "卡券通过access_token解码多个加密code"
}
]
},
{
"Name": "FreemudPUS",
"DevBaseUrl": "https://129.211.102.44:8095",
"ProdBaseUrl": "https://10.52.16.119",
"Description": "PUS",
"Resources": [
{
"Name": "getEquityCardIds",
"Path": "/api/coupon/package/list",
"Description": "查询麦霸卡cardiId列表"
},
{
"Name": "GetEquityCardInfo",
"Path": "/api/coupon/package?cardId={0}",
"Description": "查询麦霸卡信息"
}
]
},
{
"Name": "FreemudACT",
"DevBaseUrl": "https://129.211.102.44:8098",
"ProdBaseUrl": "https://10.52.17.108",
"Description": "非码活动服务",
"Resources": [
{
"Name": "getEquityCardActivity",
"Path": "/api/coupon-package",
"Description": "查询⽤户权益包信息"
}
]
}
]
},
......
......@@ -122,7 +122,7 @@ export default {
env: "test",
time: moment(),
storeCode: "1450026",
userTerms: "15618147550",
userTerms: "18217660771",
storeSuggestions: [
{ value: "1450026" },
{ value: "1450217" },
......
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