Commit d9b7ec5a by 陈宁

# dev 门店信息

parent 69160f37
......@@ -4,6 +4,7 @@ using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Threading;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.Testing
......@@ -17,6 +18,9 @@ namespace Freemud.BE.Toolbox.Testing
Console.WriteLine(ChannelEnum.Delivery);
Console.WriteLine(ChannelEnum.Delivery.ToString());
Console.WriteLine((int)ChannelEnum.Delivery);
Console.WriteLine(ChannelEnum.Delivery.GetValueString());
Console.WriteLine(ChannelEnum.Kiosk.GetValueString());
Console.WriteLine(DateTime.Now);
Console.WriteLine(DateTime.Now.ToString());
......@@ -82,6 +86,100 @@ namespace Freemud.BE.Toolbox.Testing
c.Channel = 5;
Console.WriteLine(c?.Channel == (int)ChannelEnum.Delivery);
}
[TestMethod]
public void alskdjaslkdj()
{
int returnCode = 1;
Customer customer = null;
if (returnCode == customer?.Channel)
Console.WriteLine("相同");
else
Console.WriteLine("不同");
if (customer?.Channel.Equals(returnCode) ?? false)
Console.WriteLine("相同");
else
Console.WriteLine("不同");
customer = new Customer { Channel = 1 };
if (returnCode == customer?.Channel)
Console.WriteLine("相同");
else
Console.WriteLine("不同");
var deliveryHours = "06:30-23:00;06:30;06:30-23:00;06:30-23:00;06:30-23:00;06:30-23:00;06:30-23:00";
var dhs = deliveryHours.Split(';', ';');
foreach (var d in dhs)
{
var ts = d.Split('-');
if (ts.Length == 2)
{
var workingStartTime = d.Split('-')[0].Trim();
var workingEndTime = d.Split('-')[1].Trim();
Console.WriteLine($"workingStartTime: {workingStartTime}, workingEndTime: {workingEndTime}");
}
else
{
Console.WriteLine($"时间区间有误; ts: " + d);
}
}
Console.WriteLine($"{DateTime.Now.ToString("yyyyMMdd")}{Guid.NewGuid().ToString().Replace("-", "")}{DateTime.Now.ToString("HHmmss")}");
Console.WriteLine($"{DateTime.Now.ToString("yyyyMMddHHmmss")}{Guid.NewGuid().ToString().Replace("-", "")}");
Console.WriteLine($"{Guid.NewGuid().ToString().Replace("-", "")}{DateTime.Now.ToString("yyyyMMddHHmmss")}");
Console.WriteLine($"{DateTime.Now.ToString("MMdd")}{Guid.NewGuid().ToString().Replace("-", "")}{DateTime.Now.ToString("HHmm")}");
Console.WriteLine($"{DateTime.Now.ToString("MMddHHmm")}{Guid.NewGuid().ToString().Replace("-", "")}");
Console.WriteLine($"{DateTime.Now.ToString("yyMMddHHmm")}{Guid.NewGuid().ToString().Replace("-", "")}");
Console.WriteLine($"{Guid.NewGuid().ToString().Replace("-", "")}{DateTime.Now.ToString("MMddHHmm")}");
var datetime = new DateTime(2021, 1, 1);
Console.WriteLine(datetime.ToString("yyyyMMddHHmmss"));
Console.WriteLine(datetime.ToString("yyMMddHHmmss"));
Console.WriteLine(datetime.ToString("YMDHHmmss"));
string a = null;
Console.WriteLine("a".Equals(null));
Console.WriteLine("a".Equals(string.Empty));
Console.WriteLine(a?.Equals("a"));
Console.WriteLine(a?.Equals("a") ?? false);
}
[TestMethod]
public void askdasldas()
{
var names = new List<string> { "a", "b", "c" };
Parallel.ForEach(names, n =>
{
Console.WriteLine(n);
Thread.Sleep(1000);
});
Console.WriteLine("执行完毕");
}
[TestMethod]
public void asdkljaslkdjaslkj()
{
var terms = "113.9371337890625,22.575050354003906";
var longtitude = decimal.Parse(terms.Split(",")[0]);
var latitude = decimal.Parse(terms.Split(",")[1]);
Console.WriteLine(longtitude);
Console.WriteLine(latitude);
}
}
public class Customer
......@@ -100,4 +198,13 @@ namespace Freemud.BE.Toolbox.Testing
Kiosk = 3,
Mcoffee = 4
}
public static class ChannelEnumExtensions
{
public static string GetValueString(this ChannelEnum channel)
{
return ((int)channel).ToString();
}
}
}
......@@ -29,10 +29,10 @@ namespace Freemud.BE.Toolbox.WebApi.Controllers
return Ok(data: await requestResourceService.GetProductInfo(request));
}
[HttpPost("get-store-by-position")]
public async Task<IActionResult> GetStoreByPosition([FromBody]GetProductInfoRequest request)
[HttpPost("get-store")]
public async Task<IActionResult> GetStoreInfo([FromBody]GetStoreInfoRequest request)
{
return Ok(data: await requestResourceService.GetProductInfo(request));
return Ok(data: await requestResourceService.GetStoreInfo(request));
}
}
}
......@@ -5,10 +5,14 @@ using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Model.Request
{
public class GetStoreByPositionRequest : BaseRequestResourceRequest
public class GetStoreInfoRequest : BaseRequestResourceRequest
{
public long longitude { get; set; }
//public long Longitude { get; set; }
public long latitude { get; set; }
//public long Latitude { get; set; }
public string Terms { get; set; }
public long Timestamp { get; set; }
}
}
using Freemud.BE.Toolbox.WebApi.Model;
using Freemud.BE.Toolbox.WebApi.Infrastructure.Helpers;
using Freemud.BE.Toolbox.WebApi.Model;
using Freemud.BE.Toolbox.WebApi.Model.Response;
using System;
using System.Collections.Generic;
using System.Linq;
......@@ -8,8 +10,54 @@ namespace Freemud.BE.Toolbox.WebApi.Proxy
{
public class FmStoreProxy : BaseProxy
{
public FmStoreProxy(ToolboxConfiguration toolboxConfiguration) : base(toolboxConfiguration)
public FmStoreProxy(ToolboxConfiguration toolboxConfiguration) : base(toolboxConfiguration) { }
/// <summary>
/// 请求餐道根据经纬度获取门店编号
/// </summary>
/// <returns></returns>
public async Task<RequestResourceResponse> GetStoreCodeFromCandao(string env, decimal longitude, decimal latitude)
{
var url = GetUrl(env, "CanDao", "getByPosition");
var body = new { longitude, latitude };
var response = await HttpHeper.Post(url, jsonBody: body);
return new RequestResourceResponse
{
Name = "请求餐道根据经纬度获取门店编号",
Url = url,
RequestBody = body,
ResponseContent = response.Content,
ResponseError = response.ErrorMessage
};
}
/// <summary>
/// 请求门店服务获取门店详情
/// </summary>
/// <returns></returns>
public async Task<RequestResourceResponse> GetStoreInfo(string channel, string env, string storeCode, long timeStamp)
{
var url = GetUrl(env, "FreemudStore", "storeGet");
var body = new
{
partnerId = GetChannelUnifyId(channel, env),
storeCode,
activeFlag = 1, // 有效标识(1:有效 0:无效)
typeFlag = 3, // 1:总公司 2:公司 3:门店
delivery = "1", // 是否开通delivery{1.是;2.否} 不传查询全部
appointmentTime = timeStamp // 时间戳(期望配送时间)
};
var response = await HttpHeper.Post(url, jsonBody: body);
return new RequestResourceResponse
{
Name = "请求门店服务获取门店详情",
Url = url,
RequestBody = body,
ResponseContent = response.Content,
ResponseError = response.ErrorMessage
};
}
}
}
......@@ -13,6 +13,6 @@ namespace Freemud.BE.Toolbox.WebApi.Services
Task<List<RequestResourceResponse>> GetProductInfo(GetProductInfoRequest request);
Task<RequestResourceResponse> GetStoreByPosition(GetStoreByPositionRequest request);
Task<List<RequestResourceResponse>> GetStoreInfo(GetStoreInfoRequest request);
}
}
......@@ -85,7 +85,6 @@ namespace Freemud.BE.Toolbox.WebApi.Services
public async Task<List<RequestResourceResponse>> GetProductInfo(GetProductInfoRequest request)
{
var products = await fmProductProxy.GetProductBaseInfos(request);
var extendsions = await fmProductProxy.GetProductExtensionInfo(request.Env, request.ProductId);
......@@ -95,27 +94,58 @@ namespace Freemud.BE.Toolbox.WebApi.Services
#endregion
#region 门店
public async Task<RequestResourceResponse> GetStoreByPosition(GetStoreByPositionRequest request)
public async Task<List<RequestResourceResponse>> GetStoreInfo(GetStoreInfoRequest request)
{
throw new NotImplementedException();
//var candaoResponse = await GetCanDaoStoreByPosition(request);
//return Response("未统计", responseBody: candaoResponse);
}
logger.LogInformation("[GetStoreInfo] request: " + JsonConvert.SerializeObject(request));
var result = new List<RequestResourceResponse>();
var storeCodes = string.Empty;
var isPosition = request.Terms.Contains(".");
RequestResourceResponse candaoResponse = null;
if (isPosition)
{
// 经纬度查询
var longitude = decimal.Parse(request.Terms.Split(",")[0]);
var latitude = decimal.Parse(request.Terms.Split(",")[1]);
candaoResponse = await fmStoreProxy.GetStoreCodeFromCandao(request.Env, longitude, latitude);
private async Task<dynamic> GetCanDaoStoreByPosition(GetStoreByPositionRequest request)
var jo = JObject.Parse(candaoResponse.ResponseContent);
if (jo.ContainsKey("data"))
{
throw new NotImplementedException();
//var url = GetUrl(request.Env, "CanDao", "getByPosition");
//var body = new
//{
// request.longitude,
// request.latitude
//};
var jStores = JArray.Parse(jo["data"].ToString());
if (jStores?.Any() ?? false)
storeCodes = jStores.Select(d => d["extraId"].ToString()).ToList()?.Aggregate((p, n) => $"{p},{n}");
}
}
else
{
candaoResponse = new RequestResourceResponse
{
Name = "请求餐道根据经纬度获取门店编号",
ResponseError = "无需查询餐道"
};
storeCodes = request.Terms;
}
//var response = await HttpHeper.Post<dynamic>(url, jsonBody: body);
result.Add(candaoResponse);
//return response.Data;
if (!string.IsNullOrWhiteSpace(storeCodes))
{
var sotreInfoResponse = await fmStoreProxy.GetStoreInfo(request.Channel, request.Env, storeCodes, request.Timestamp);
result.Add(sotreInfoResponse);
}
else
{
result.Add(new RequestResourceResponse
{
Name = "请求门店服务获取门店详情",
ResponseError = "未查询门店服务"
});
}
return result;
}
#endregion
}
}
\ No newline at end of file
......@@ -89,6 +89,19 @@
]
},
{
"Name": "FreemudStore",
"DevBaseUrl": "http://10.54.2.115",
"ProdBaseUrl": "http://10.52.16.31",
"Description": "非码门店服务",
"Resources": [
{
"Name": "storeGet",
"Path": "/api/v2/organization/get",
"Description": "获取门店信息"
}
]
},
{
"Name": "CanDao",
"DevBaseUrl": "https://qc.can-dao.com:3900",
"ProdBaseUrl": "https://mcdmap.can-dao.com",
......
......@@ -31,12 +31,13 @@
v-model="storeId"
:data="[1450026, 1450217, 99998, 99995, 99992]"
placeholder="门店编号"
clearable
></AutoComplete>
</FormItem>
</Col>
<Col span="12">
<FormItem label="券号">
<Input type="text" v-model="couponCode" placeholder="券号"></Input>
<Input type="text" v-model="couponCode" placeholder="券号" clearable></Input>
</FormItem>
</Col>
<Col span="12">
......@@ -232,17 +233,14 @@ export default {
{ name: '对应商品编号', field: 'mcd_productCode', val: c.codeInfo.products[0].mcd_productCode },
{ name: 'mcd_tenderCode', field: 'mcd_tenderCode', val: c.codeInfo.products[0].mcd_tenderCode }
]
coupons.push({ ret: true, couponCode: c.code, couponName: c.codeInfo.act_name, productId: c.codeInfo.products[0].mcd_productCode, data: data })
} else {
coupons.push({ ret: false, couponCode: c.code, data: c.msg })
}
})
coupons.forEach(coup => {
if (coup.ret) {
coup.data.forEach(d => {
data.forEach(d => {
d.descriptor = this.buildCouponDescriptor(d.field, d.val)
})
coupons.push({ ret: true, couponCode: c.code, couponName: c.codeInfo.act_name, productId: c.codeInfo.products[0].mcd_productCode, data: data })
} else {
coupons.push({ ret: false, couponCode: c.code, data: c.msg })
}
})
......@@ -263,13 +261,12 @@ export default {
{ name: '状态', field: 'status', val: p.status },
{ name: '菜品类型', field: 'type', val: p.type }
]
products.push({ id: p.pid, name: p.name, data: data })
})
products.forEach(p => {
p.data.forEach(d => {
data.forEach(d => {
d.descriptor = this.buildProductDescriptor(d.field, d.val)
})
products.push({ id: p.pid, name: p.name, data: data })
})
this.retProducts = products
......@@ -301,10 +298,15 @@ export default {
let memo = ''
let desc = ''
if (field === 'couponType') {
if (val === 0) {
switch (parseInt(val)) {
case 0:
memo = '商品券'
} else if (val === 1) {
break
case 1:
memo = '代金券'
break
default:
break
}
desc = '0)商品券, 1)代金券;'
}
......@@ -323,7 +325,7 @@ export default {
}
desc = '1)饮品, 2)非饮品'
} else if (field === 'status') {
switch (val) {
switch (parseInt(val)) {
case 1:
memo = '下架'
break
......@@ -338,7 +340,7 @@ export default {
}
desc = '1)下架, 2)上架, 3)售罄'
} else if (field === 'type') {
switch (val) {
switch (parseInt(val)) {
case 1:
memo = '普通商品'
break
......
......@@ -31,12 +31,13 @@
v-model="storeId"
:data="[1450026, 1450217, 99998, 99995, 99992]"
placeholder="门店编号"
clearable
></AutoComplete>
</FormItem>
</Col>
<Col span="12">
<FormItem label="商品编号">
<Input type="text" v-model="productId" placeholder="商品编号"></Input>
<Input type="text" v-model="productId" placeholder="商品编号" clearable></Input>
</FormItem>
</Col>
<Col span="12">
......@@ -374,13 +375,12 @@ export default {
{ name: '多规格信息', field: 'productSpecification', val: p.productSpecification },
{ name: '扩展信息', field: 'productExendsions', val: pExendsions }
]
products.push({ id: p.pid, name: p.name, data: data })
})
products.forEach(p => {
p.data.forEach(d => {
data.forEach(d => {
d.descriptor = this.buildProductDescriptor(d.field, d.val)
})
products.push({ id: p.pid, name: p.name, data: data })
})
// const extendsions = []
......@@ -416,8 +416,6 @@ export default {
})
this.vData = vdata
console.info(this.vData)
},
buildGroupProductData (data) {
const products = []
......@@ -481,10 +479,15 @@ export default {
let memo = ''
let desc = ''
if (field === 'couponType') {
if (val === 0) {
switch (parseInt(val)) {
case 0:
memo = '商品券'
} else if (val === 1) {
break
case 1:
memo = '代金券'
break
default:
break
}
desc = '0)商品券, 1)代金券;'
}
......@@ -503,7 +506,7 @@ export default {
}
desc = '1)饮品, 2)非饮品'
} else if (field === 'status') {
switch (val) {
switch (parseInt(val)) {
case 1:
memo = '下架'
break
......@@ -518,7 +521,7 @@ export default {
}
desc = '1)下架, 2)上架, 3)售罄'
} else if (field === 'type') {
switch (val) {
switch (parseInt(val)) {
case 1:
memo = '普通商品'
break
......
......@@ -8,12 +8,12 @@
<MenuItem name="/coupon-product" to="/request-resource/coupon-product">
<Icon type="md-cube" />码券商品信息
</MenuItem>
<MenuItem name="/user-coupons" to="/request-resource/user-coupons">
<!-- <MenuItem name="/user-coupons" to="/request-resource/user-coupons">
<Icon type="md-cube" />用户券数据
</MenuItem>
<MenuItem name="/coupon-freeze" to="/request-resource/coupon-freeze">
<Icon type="md-cube" />激活&冻结
</MenuItem>
</MenuItem>-->
</MenuGroup>
<MenuGroup title="商品">
<MenuItem name="/product" to="/request-resource/product">
......@@ -27,7 +27,7 @@
</MenuGroup>
<MenuGroup title="门店">
<MenuItem name="/candao-store" to="/request-resource/candao-store">
<Icon type="md-cube" />餐道经纬度查询门店
<Icon type="md-cube" />门店信息
</MenuItem>
</MenuGroup>
</Menu>
......@@ -54,7 +54,7 @@ export default {
{ name: '/coupon-freeze', text: '激活&冻结' },
{ name: '/product', text: '商品信息查询' },
{ name: '/order', text: '根据订单编号查询订单' },
{ name: '/candao-store', text: '餐道经纬度查询门店' }
{ name: '/candao-store', text: '门店信息' }
],
currentPage: ''
}
......
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