Commit 2d276183 by 陈宁

# dev 券码服务

parent e9408e1f
...@@ -2,7 +2,9 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; ...@@ -2,7 +2,9 @@ using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using System; using System;
using System.Collections.Generic;
using System.Dynamic; using System.Dynamic;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.Testing namespace Freemud.BE.Toolbox.Testing
{ {
...@@ -32,6 +34,12 @@ namespace Freemud.BE.Toolbox.Testing ...@@ -32,6 +34,12 @@ namespace Freemud.BE.Toolbox.Testing
Console.WriteLine(obj.ToString()); Console.WriteLine(obj.ToString());
Console.WriteLine(JsonConvert.SerializeObject(obj)); Console.WriteLine(JsonConvert.SerializeObject(obj));
Console.WriteLine("obj is: " + JsonConvert.SerializeObject(obj)); Console.WriteLine("obj is: " + JsonConvert.SerializeObject(obj));
Console.WriteLine(obj.name);
Console.WriteLine(obj.Name);
Console.WriteLine(obj.Sex);
Console.WriteLine(obj.Sex.toString());
} }
private dynamic getDynamic() private dynamic getDynamic()
...@@ -43,6 +51,35 @@ namespace Freemud.BE.Toolbox.Testing ...@@ -43,6 +51,35 @@ namespace Freemud.BE.Toolbox.Testing
return obj; return obj;
} }
[TestMethod]
public void asdasdasdasd()
{
long a = 0;
int b = 990;
decimal c = (decimal)b / 100;
Console.WriteLine(c);
}
[TestMethod]
public void asdlkjasdlkjaslkdjaskldj()
{
Customer c = null;
Console.WriteLine(c?.Channel == (int)ChannelEnum.Delivery);
c = new Customer { Channel = 2 };
Console.WriteLine(c?.Channel == (int)ChannelEnum.Delivery);
c.Channel = 5;
Console.WriteLine(c?.Channel == (int)ChannelEnum.Delivery);
}
}
public class Customer
{
public int Channel { get; set; }
} }
public enum ChannelEnum public enum ChannelEnum
......
...@@ -17,16 +17,22 @@ namespace Freemud.BE.Toolbox.WebApi.Controllers ...@@ -17,16 +17,22 @@ namespace Freemud.BE.Toolbox.WebApi.Controllers
this.requestResourceService = requestResourceService; this.requestResourceService = requestResourceService;
} }
[HttpPost("get-coupon-info")] [HttpPost("get-coupon")]
public async Task<IActionResult> GetCouponInfo([FromBody]GetCouponInfoRequest request) public async Task<IActionResult> GetCouponInfo([FromBody]GetCouponInfoRequest request)
{ {
return Ok(data: await requestResourceService.GetCouponInfo(request)); return Ok(data: await requestResourceService.GetCouponInfo(request));
} }
[HttpPost("get-product-info")] [HttpPost("get-product")]
public async Task<IActionResult> GetProductInfo([FromBody]GetProductInfoRequest request) public async Task<IActionResult> GetProductInfo([FromBody]GetProductInfoRequest request)
{ {
return Ok(data: await requestResourceService.GetProductInfo(request)); return Ok(data: await requestResourceService.GetProductInfo(request));
} }
[HttpPost("get-store-by-position")]
public async Task<IActionResult> GetStoreByPosition([FromBody]GetProductInfoRequest request)
{
return Ok(data: await requestResourceService.GetProductInfo(request));
}
} }
} }
...@@ -13,4 +13,8 @@ ...@@ -13,4 +13,8 @@
<PackageReference Include="UAParser" Version="3.1.44" /> <PackageReference Include="UAParser" Version="3.1.44" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="Infrastructure\Http\" />
</ItemGroup>
</Project> </Project>
using RestSharp; using Newtonsoft.Json;
using RestSharp;
using Serilog;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
...@@ -29,8 +31,15 @@ namespace Freemud.BE.Toolbox.WebApi.Infrastructure.Helpers ...@@ -29,8 +31,15 @@ namespace Freemud.BE.Toolbox.WebApi.Infrastructure.Helpers
} }
} }
Log.Information($"url: {url}");
Log.Information($"header: {JsonConvert.SerializeObject(headers)}");
Log.Information($"query: {JsonConvert.SerializeObject(queries)}");
var response = await client.ExecuteAsync<TResult>(request); var response = await client.ExecuteAsync<TResult>(request);
return response;
Log.Information($"response: {response.Content}");
return null;
} }
public static async Task<IRestResponse<TResult>> Post<TResult>(string url, Dictionary<string, object> headers = null, Dictionary<string, object> queries = null, object jsonBody = null) public static async Task<IRestResponse<TResult>> Post<TResult>(string url, Dictionary<string, object> headers = null, Dictionary<string, object> queries = null, object jsonBody = null)
...@@ -59,7 +68,15 @@ namespace Freemud.BE.Toolbox.WebApi.Infrastructure.Helpers ...@@ -59,7 +68,15 @@ namespace Freemud.BE.Toolbox.WebApi.Infrastructure.Helpers
request.AddJsonBody(jsonBody); 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<TResult>(request); var response = await client.ExecuteAsync<TResult>(request);
Log.Information($"response: {response.Content}");
return response; return response;
} }
} }
......
...@@ -10,5 +10,7 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Request ...@@ -10,5 +10,7 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Request
public string CouponCode { get; set; } public string CouponCode { get; set; }
public string StoreId { get; set; } public string StoreId { get; set; }
public DateTime Time { get; set; }
} }
} }
...@@ -7,7 +7,7 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Request ...@@ -7,7 +7,7 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Request
{ {
public class GetProductInfoRequest : BaseRequestResourceRequest public class GetProductInfoRequest : BaseRequestResourceRequest
{ {
public string ProductId { get; set; } public List<string> ProductId { get; set; }
public string StoreId { get; set; } public string StoreId { get; set; }
......
...@@ -7,16 +7,18 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Response ...@@ -7,16 +7,18 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Response
{ {
public class RequestResourceResponse public class RequestResourceResponse
{ {
public string Name { get; set; }
public string Url { get; set; } public string Url { get; set; }
public object RequestHeaders { get; set; } public dynamic RequestHeaders { get; set; }
public object RequestBody { get; set; } public dynamic RequestBody { get; set; }
public object ResponseHeaders { get; set; } public dynamic ResponseHeaders { get; set; }
public object ResponseBody { get; set; } public dynamic ResponseBody { get; set; }
public string ResponseError { get; set; } public dynamic ResponseError { get; set; }
} }
} }
using Freemud.BE.Toolbox.WebApi.Model;
using Freemud.BE.Toolbox.WebApi.Model.Constants;
using Freemud.BE.Toolbox.WebApi.Model.Response;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Proxy
{
public abstract class BaseProxy
{
private readonly List<RequestResourceConfiguration> requestResources;
protected BaseProxy(List<RequestResourceConfiguration> requestResources)
{
this.requestResources = requestResources;
}
/// <summary>
/// 获取服务地址
/// </summary>
/// <param name="env"></param>
/// <param name="group"></param>
/// <param name="name"></param>
/// <returns></returns>
public string GetUrl(string env, string group, string name)
{
var config = requestResources?.FirstOrDefault(d => d.Name.Equals(group, StringComparison.OrdinalIgnoreCase));
if (config == null)
return string.Empty;
var baseUrl = string.Empty;
switch (env)
{
case ToolboxConstants.ENV_DEV:
baseUrl = config.DevBaseUrl;
break;
case ToolboxConstants.ENV_PROD:
baseUrl = config.ProdBaseUrl;
break;
default:
return string.Empty;
}
var path = config.Resources?.FirstOrDefault(d => d.Name.Equals(name, StringComparison.OrdinalIgnoreCase))?.Path;
if (string.IsNullOrWhiteSpace(path))
return string.Empty;
return $"{baseUrl}{path}";
}
/// <summary>
/// 标准化请求资源输出
/// </summary>
/// <param name="name"></param>
/// <param name="url"></param>
/// <param name="requestHeaders"></param>
/// <param name="requestBody"></param>
/// <param name="responseHeaders"></param>
/// <param name="responseBody"></param>
/// <param name="responseError"></param>
/// <returns></returns>
protected RequestResourceResponse Response(string name, string url, object requestHeaders = null, object requestBody = null, object responseHeaders = null, object responseBody = null, string responseError = "")
{
return new RequestResourceResponse
{
Name = name,
Url = url,
RequestHeaders = requestHeaders,
RequestBody = requestBody,
ResponseHeaders = responseHeaders,
ResponseBody = responseBody,
ResponseError = responseError
};
}
protected string GetChannelPartnerId(string channel)
{
if (string.IsNullOrWhiteSpace(channel))
return string.Empty;
switch (channel)
{
case ToolboxConstants.CHANNEL_DELIVERY:
return "F8538588-C692-4958-A591-A4C71D976209";
case ToolboxConstants.CHANNEL_MCOFFEE:
return "C57FE34D-7C14-4FB7-ACF7-398C9F8875ED";
case ToolboxConstants.CHANNEL_KIOSK:
return "83F6C6F9-8535-4CB9-BE18-5DB050999FA3";
default:
return string.Empty;
}
}
protected string GetChannelUnifyId(string channel, string env)
{
if (string.IsNullOrWhiteSpace(channel))
return string.Empty;
switch (channel)
{
case ToolboxConstants.CHANNEL_DELIVERY:
return "30b5f0ca-399a-4be3-9063-12a3d2622a38";
case ToolboxConstants.CHANNEL_MCOFFEE:
return "c2e95f53-e21b-4445-a6b1-dd4d2d8a7b96";
case ToolboxConstants.CHANNEL_KIOSK:
if (ToolboxConstants.ENV_DEV.Equals(env, StringComparison.OrdinalIgnoreCase))
return "1618";
else if (ToolboxConstants.ENV_PROD.Equals(env, StringComparison.OrdinalIgnoreCase))
return "5578b01b-9904-46ca-a9aa-33f8f80b0b67";
else
return string.Empty;
default:
return string.Empty;
}
}
}
}
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 System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Proxy
{
public class FmCouponProxy : BaseProxy
{
public FmCouponProxy(List<RequestResourceConfiguration> requestResources) : base(requestResources) { }
/// <summary>
/// 获取券码核销渠道
/// 0(Unknown), 1(POS), 2(Online), 3(Pickup), 4(Delivery), 5(McCofe), 6(Kiosk)
/// </summary>
/// <param name="channel"></param>
/// <returns></returns>
private string GetFreemudCouponChannel(string channel)
{
switch (channel)
{
case ToolboxConstants.CHANNEL_DELIVERY:
return "4";
case ToolboxConstants.CHANNEL_MCOFFEE:
return "5";
case ToolboxConstants.CHANNEL_KIOSK:
return "6";
default:
return "0";
}
}
/// <summary>
/// 查询券码信息
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public async Task<RequestResourceResponse> GetCouponInfos(GetCouponInfoRequest request)
{
var url = GetUrl(request.Env, "FreemudCoupon", "coupon_product");
var headers = new Dictionary<string, object> {
{ "pi", GetChannelPartnerId(request.Channel) }
};
var body = new
{
reqtype = 88, // 操作类型; 0(卡券查询), 2(卡券交易查询), 3(卡券冲正), 71(卡券核销), 88(批量查询)
station_id = "999", // POS机编号
operator_id = "999", // 营业员编号
store_id = request.StoreId, // 门店编号
couponlist = request.CouponCode.Split(",").ToList(), // 优惠券编号
channel = GetFreemudCouponChannel(request.Channel) // 核销渠道; 0(Unknown), 1(POS), 2(Online), 3(Pickup), 4(Delivery), 5(McCofe), 6(Kiosk)
};
var response = await HttpHeper.Post<dynamic>(url, headers, jsonBody: body);
return new RequestResourceResponse
{
Name = "获取券码信息",
Url = url,
RequestHeaders = headers,
RequestBody = body,
ResponseBody = response.Data,
ResponseError = response.ErrorMessage
};
}
}
}
using Freemud.BE.Toolbox.WebApi.Infrastructure.Helpers;
using Freemud.BE.Toolbox.WebApi.Model;
using Freemud.BE.Toolbox.WebApi.Model.Request;
using Freemud.BE.Toolbox.WebApi.Model.Response;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Proxy
{
public class FmProductProxy : BaseProxy
{
public FmProductProxy(List<RequestResourceConfiguration> requestResources) : base(requestResources) { }
/// <summary>
/// 获取商品基本信息
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
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.ToString("HH:mm:ss"), true);
var response = await HttpHeper.Get<dynamic>(url);
return new RequestResourceResponse
{
Name = "获取商品信息",
Url = url,
ResponseBody = response.Data,
ResponseError = response.ErrorMessage
};
}
/// <summary>
/// 获取商品扩展信息
/// </summary>
/// <param name="env"></param>
/// <param name="productId"></param>
/// <returns></returns>
public async Task<RequestResourceResponse> GetProductExtensionInfo(string env, int productId)
{
var url = GetUrl(env, "FreemudProduct", "getProductExtensionInfo");
url = string.Format(url, productId);
var response = await HttpHeper.Get<dynamic>(url);
return new RequestResourceResponse
{
Name = "获取商品扩展信息",
Url = url,
ResponseBody = response.Data,
ResponseError = response.ErrorMessage
};
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Proxy
{
public class FmStoreProxy
{
}
}
...@@ -9,8 +9,10 @@ namespace Freemud.BE.Toolbox.WebApi.Services ...@@ -9,8 +9,10 @@ namespace Freemud.BE.Toolbox.WebApi.Services
{ {
public interface IRequestResourceService public interface IRequestResourceService
{ {
Task<RequestResourceResponse> GetCouponInfo(GetCouponInfoRequest request); Task<List<RequestResourceResponse>> GetCouponInfo(GetCouponInfoRequest request);
Task<RequestResourceResponse> GetProductInfo(GetProductInfoRequest request); Task<RequestResourceResponse> GetProductInfo(GetProductInfoRequest request);
Task<RequestResourceResponse> GetStoreByPosition(GetStoreByPositionRequest request);
} }
} }
...@@ -84,7 +84,7 @@ namespace Freemud.BE.Toolbox.WebApi ...@@ -84,7 +84,7 @@ namespace Freemud.BE.Toolbox.WebApi
app.UseGlobalExceptionHandler(); app.UseGlobalExceptionHandler();
app.UseRequestClientInfoReceiver(); app.UseRequestClientInfoReceiver();
//app.UseRequestWebWorkContext(); app.UseRequestWebWorkContext();
app.UseEndpoints(endpoints => app.UseEndpoints(endpoints =>
{ {
......
...@@ -13,6 +13,6 @@ module.exports = { ...@@ -13,6 +13,6 @@ module.exports = {
rules: { rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'vue/no-parsing-error': [2, { "x-invalid-end-tag": false }] 'vue/no-parsing-error': [2, { 'x-invalid-end-tag': false }]
} }
} }
...@@ -12,3 +12,7 @@ html, body, #app { ...@@ -12,3 +12,7 @@ html, body, #app {
border-color: #57a3f3; border-color: #57a3f3;
box-shadow: 0 0 0px 4px rgba(45, 140, 240, 0.2); box-shadow: 0 0 0px 4px rgba(45, 140, 240, 0.2);
} }
.ivu-tabs-bar {
margin-bottom: 5px;
}
\ No newline at end of file
...@@ -19,7 +19,7 @@ var _lodash = _interopRequireDefault(require("lodash")); ...@@ -19,7 +19,7 @@ var _lodash = _interopRequireDefault(require("lodash"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
// dev // dev
_axios["default"].defaults.baseURL = 'http://localhost:51138/api'; // prod _axios["default"].defaults.baseURL = 'http://129.211.139.23:8018/api'; // prod
// axios.defaults.baseURL = '/api' // axios.defaults.baseURL = '/api'
_axios["default"].interceptors.request.use(function (config) { _axios["default"].interceptors.request.use(function (config) {
......
"use strict";var _vue=_interopRequireDefault(require("vue")),_App=_interopRequireDefault(require("./App.vue")),_router=_interopRequireDefault(require("./router")),_viewDesign=_interopRequireDefault(require("view-design"));require("view-design/dist/styles/iview.css"),require("./assets/css/global.css");var _axios=_interopRequireDefault(require("axios")),_lodash=_interopRequireDefault(require("lodash"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}_axios.default.defaults.baseURL="http://localhost:51138/api",_axios.default.interceptors.request.use(function(e){var u=window.sessionStorage.getItem("au");return u&&(e.headers.au=u),e}),_vue.default.prototype.$http=_axios.default,_vue.default.prototype._=_lodash.default,_vue.default.use(_viewDesign.default),_vue.default.config.productionTip=!1,new _vue.default({router:_router.default,render:function(e){return e(_App.default)}}).$mount("#app"); "use strict";var _vue=_interopRequireDefault(require("vue")),_App=_interopRequireDefault(require("./App.vue")),_router=_interopRequireDefault(require("./router")),_viewDesign=_interopRequireDefault(require("view-design"));require("view-design/dist/styles/iview.css"),require("./assets/css/global.css");var _axios=_interopRequireDefault(require("axios")),_lodash=_interopRequireDefault(require("lodash"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}_axios.default.defaults.baseURL="http://129.211.139.23:8018/api",_axios.default.interceptors.request.use(function(e){var u=window.sessionStorage.getItem("au");return u&&(e.headers.au=u),e}),_vue.default.prototype.$http=_axios.default,_vue.default.prototype._=_lodash.default,_vue.default.use(_viewDesign.default),_vue.default.config.productionTip=!1,new _vue.default({router:_router.default,render:function(e){return e(_App.default)}}).$mount("#app");
\ No newline at end of file \ No newline at end of file
...@@ -8,7 +8,7 @@ import axios from 'axios' ...@@ -8,7 +8,7 @@ import axios from 'axios'
import _ from 'lodash' import _ from 'lodash'
// dev // dev
axios.defaults.baseURL = 'http://localhost:51138/api' axios.defaults.baseURL = 'http://129.211.139.23:8018/api'
// prod // prod
// axios.defaults.baseURL = '/api' // axios.defaults.baseURL = '/api'
axios.interceptors.request.use(config => { axios.interceptors.request.use(config => {
......
...@@ -13,10 +13,10 @@ ...@@ -13,10 +13,10 @@
<Layout> <Layout>
<Sider hide-trigger class="layout-sider"> <Sider hide-trigger class="layout-sider">
<p class="menu-parting"></p> <p class="menu-parting"></p>
<Menu theme="dark" width="auto" :active-name="this.$route.path"> <Menu theme="dark" width="auto" :active-name="'/' + this.$route.path.split('/')[1]">
<!-- <MenuItem name="/dashboard" to="/dashboard"> <!-- <MenuItem name="/dashboard" to="/dashboard">
<Icon type="logo-xbox" />首页 <Icon type="logo-xbox" />首页
</MenuItem> --> </MenuItem>-->
<MenuItem name="/environment-configure" to="/environment-configure"> <MenuItem name="/environment-configure" to="/environment-configure">
<Icon type="md-construct" />环境切换 <Icon type="md-construct" />环境切换
</MenuItem> </MenuItem>
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
</MenuItem> </MenuItem>
<!-- <MenuItem name="/be-logging" to="/be-logging"> <!-- <MenuItem name="/be-logging" to="/be-logging">
<Icon type="md-list-box" />日志查询 <Icon type="md-list-box" />日志查询
</MenuItem> --> </MenuItem>-->
</Menu> </Menu>
</Sider> </Sider>
<Layout> <Layout>
......
<template> <template>
<div> <div>
<h2 class="resource-title">码券对应商品信息</h2>
<Form :label-width="80"> <Form :label-width="80">
<Row> <Row>
<Col span="12"> <Col span="12">
...@@ -27,13 +26,13 @@ ...@@ -27,13 +26,13 @@
</FormItem> </FormItem>
</Col> </Col>
<Col span="12"> <Col span="12">
<FormItem label="号"> <FormItem label="门店号">
<Input type="text" v-model="couponCode" placeholder="券号"></Input> <AutoComplete v-model="storeId" :data="[1450026, 99998, 99995]" placeholder="门店编号"></AutoComplete>
</FormItem> </FormItem>
</Col> </Col>
<Col span="12"> <Col span="12">
<FormItem label="门店号"> <FormItem label="号">
<Input type="text" v-model="storeId" placeholder="门店编号"></Input> <Input type="text" v-model="couponCode" placeholder="券号"></Input>
</FormItem> </FormItem>
</Col> </Col>
<Col span="12"> <Col span="12">
...@@ -51,33 +50,17 @@ ...@@ -51,33 +50,17 @@
<Tabs :animated="false"> <Tabs :animated="false">
<TabPane label="结果" icon="md-list-box"> <TabPane label="结果" icon="md-list-box">
<List border> <List border>
<ListItem>描述说明 - 暂无</ListItem> <ListItem>暂无</ListItem>
</List> </List>
</TabPane> </TabPane>
<TabPane label="元信息" icon="md-bug"> <TabPane label="元信息" icon="md-bug">
<div class="resource-result-metadata-panel"> <div class="resource-result-metadata-panel">
<div class="resource-result-metadata-item"> <div class="resource-result-metadata-item">
<span class="resource-result-metadata-item-title">URL</span> <span class="resource-result-metadata-item-title">Request</span>
<codemirror v-model="metaDataRequestUrl" :options="cmOptions"></codemirror> <codemirror v-model="metaDataRequestUrl" :options="cmOptions"></codemirror>
</div> </div>
<div class="resource-result-metadata-item"> <div class="resource-result-metadata-item">
<span class="resource-result-metadata-item-title">Request Header</span> <span class="resource-result-metadata-item-title">Response</span>
<codemirror v-model="metaDataRequestHeader" :options="cmOptions"></codemirror>
</div>
<div class="resource-result-metadata-item">
<span class="resource-result-metadata-item-title">Request Body</span>
<codemirror v-model="metaDataRequestBody" :options="cmOptions"></codemirror>
</div>
<div class="resource-result-metadata-item">
<span class="resource-result-metadata-item-title">Response Error</span>
<Alert type="error">{{this.metaDataResponseError}}</Alert>
</div>
<div class="resource-result-metadata-item">
<span class="resource-result-metadata-item-title">Response Header</span>
<codemirror v-model="metaDataResponseHeader" :options="cmOptions"></codemirror>
</div>
<div class="resource-result-metadata-item">
<span class="resource-result-metadata-item-title">Response Body</span>
<codemirror v-model="metaDataResponseBody" :options="cmOptions"></codemirror> <codemirror v-model="metaDataResponseBody" :options="cmOptions"></codemirror>
</div> </div>
</div> </div>
...@@ -103,15 +86,11 @@ export default { ...@@ -103,15 +86,11 @@ export default {
loadingSearch: false, loadingSearch: false,
channel: 'delivery', channel: 'delivery',
env: 'dev', env: 'dev',
couponCode: '573185005512078', couponCode: '',
storeId: '1450026', storeId: '',
viewData: '', viewData: '',
metaDataRequestUrl: '', metaDataRequestUrl: '',
metaDataRequestHeader: '',
metaDataRequestBody: '',
metaDataResponseHeader: '',
metaDataResponseBody: '', metaDataResponseBody: '',
metaDataResponseError: '',
cmOptions: { cmOptions: {
lineNumbers: true, lineNumbers: true,
readOnly: true, readOnly: true,
...@@ -126,22 +105,31 @@ export default { ...@@ -126,22 +105,31 @@ export default {
}, },
methods: { methods: {
async search () { async search () {
if (!this.storeId) {
this.$Message.warning('请输入门店号')
return
}
if (!this.couponCode) {
this.$Message.warning('请输入券号')
return
}
this.loadingSearch = true this.loadingSearch = true
const params = { env: this.env, channel: this.channel, couponCode: this.couponCode, storeId: this.storeId } const params = { env: this.env, channel: this.channel, couponCode: this.couponCode, storeId: this.storeId }
const { data: response } = await this.$http.post('/requestresource/get-coupon-product', params) const { data: response } = await this.$http.post('/requestresource/get-coupon', params)
if (response.code !== 200) { if (response.code !== 200) {
this.$Message.error(response.message) this.$Message.error(response.message)
} else { } else {
// const codeStr = '{"title":"json在线解析(简版) -JSON在线解析","json.url":"https://www.sojson.com/simple_json.html","keywords":"json在线解析","功能":["JSON美化","JSON数据类型显示","JSON数组显示角标","高亮显示","错误提示",{"备注":["www.sojson.com","json.la"]}],"加入我们":{"qq群":"259217951","年龄":18,"IsChange":false}}' this.metaDataRequestUrl =
// const json = JSON.parse(codeStr) '================ URL ================\r\n' +
// this.viewData = JSON.stringify(json, null, '\t') response.data.url + '\n\n' +
// this.$Message.success('请求成功') '================ HEADERS ============\r\n' +
this.metaDataRequestUrl = response.data.url JSON.stringify(response.data.requestHeaders, null, '\t') + '\r\n' +
this.metaDataRequestHeader = JSON.stringify(response.data.requestHeaders, null, '\t') '================ DATA ===============\r\n' +
this.metaDataRequestBody = JSON.stringify(response.data.requestBody, null, '\t') JSON.stringify(response.data.requestBody, null, '\t')
this.metaDataResponseHeader = JSON.stringify(response.data.responseHeaders, null, '\t')
this.metaDataResponseBody = JSON.stringify(response.data.responseBody, null, '\t') this.metaDataResponseBody = JSON.stringify(response.data.responseBody, null, '\t')
this.metaDataResponseError = response.data.responseError
this.$Message.success('查询成功') this.$Message.success('查询成功')
} }
...@@ -150,43 +138,3 @@ export default { ...@@ -150,43 +138,3 @@ export default {
} }
} }
</script> </script>
<style lang="less" scoped>
// .resource-title {
// display: inline-block;
// border-left: 5px solid #be1f19f5;
// text-indent: 10px;
// margin-left: 2px;
// font-weight: bold;
// font-size: 20px;
// margin-bottom: 20px;
// }
// .result-panel {
// .item {
// margin-bottom: 20px;
// span {
// display: inline-block;
// border-left: 5px solid #19be6b80;
// text-indent: 10px;
// margin-bottom: 10px;
// margin-left: 2px;
// font-weight: bold;
// font-size: 25px;
// font-family: fantasy;
// }
// }
// }
</style>
<style lang="less">
.CodeMirror {
border: 1px solid #eee;
height: 100% !important;
}
.CodeMirror-scroll {
height: auto;
overflow-y: hidden;
overflow-x: auto;
}
</style>
...@@ -3,39 +3,41 @@ ...@@ -3,39 +3,41 @@
<h1>请求资源</h1> <h1>请求资源</h1>
<div class="request-resource"> <div class="request-resource">
<div class="request-resource-menu"> <div class="request-resource-menu">
<Menu> <Menu :active-name="'/' + this.$route.path.split('/')[2]" @on-select="menuSelect">
<MenuGroup title="券码"> <MenuGroup title="券码">
<MenuItem name="1-1" to="/request-resource/coupon-product"> <MenuItem name="/coupon-product" to="/request-resource/coupon-product">
<Icon type="md-cube" />码券对应商品信息 <Icon type="md-cube" />码券商品信息
</MenuItem> </MenuItem>
<MenuItem name="1-2" to="/request-resource/user-coupons"> <MenuItem name="/user-coupons" to="/request-resource/user-coupons">
<Icon type="md-cube" />用户券数据 <Icon type="md-cube" />用户券数据
</MenuItem> </MenuItem>
<MenuItem name="1-3" to="/request-resource/coupon-freeze"> <MenuItem name="/coupon-freeze" to="/request-resource/coupon-freeze">
<Icon type="md-cube" />激活&冻结 <Icon type="md-cube" />激活&冻结
</MenuItem> </MenuItem>
</MenuGroup> </MenuGroup>
<MenuGroup title="商品"> <MenuGroup title="商品">
<MenuItem name="3-5" to="/request-resource/product"> <MenuItem name="/product" to="/request-resource/product">
<Icon type="md-cube" />商品信息查询 <Icon type="md-cube" />商品信息查询
</MenuItem> </MenuItem>
<MenuItem name="3-6" to="/request-resource/product-exentsion">
<Icon type="md-cube" />商品扩展信息
</MenuItem>
</MenuGroup> </MenuGroup>
<MenuGroup title="订单"> <MenuGroup title="订单">
<MenuItem name="4-1" to="/request-resource/order"> <MenuItem name="/order" to="/request-resource/order">
<Icon type="md-cube" />根据订单编号查询订单 <Icon type="md-cube" />根据订单编号查询订单
</MenuItem> </MenuItem>
</MenuGroup> </MenuGroup>
<MenuGroup title="门店"> <MenuGroup title="门店">
<MenuItem name="2-1" to="/request-resource/candao-store"> <MenuItem name="/candao-store" to="/request-resource/candao-store">
<Icon type="md-cube" />餐道经纬度查询门店 <Icon type="md-cube" />餐道经纬度查询门店
</MenuItem> </MenuItem>
</MenuGroup> </MenuGroup>
</Menu> </Menu>
</div> </div>
<div class="request-resource-content"> <div class="request-resource-content">
<Breadcrumb>
<BreadcrumbItem>请求资源</BreadcrumbItem>
<BreadcrumbItem>{{currentPage}}</BreadcrumbItem>
</Breadcrumb>
<br />
<router-view></router-view> <router-view></router-view>
</div> </div>
</div> </div>
...@@ -44,6 +46,31 @@ ...@@ -44,6 +46,31 @@
<script> <script>
export default { export default {
data () {
return {
resources: [
{ name: '/coupon-product', text: '码券商品信息' },
{ name: '/user-coupons', text: '用户券数据' },
{ name: '/coupon-freeze', text: '激活&冻结' },
{ name: '/product', text: '商品信息查询' },
{ name: '/order', text: '根据订单编号查询订单' },
{ name: '/candao-store', text: '餐道经纬度查询门店' }
],
currentPage: ''
}
},
created () {
this.setCurrentPageOnLoad()
},
methods: {
setCurrentPageOnLoad () {
const name = '/' + this.$route.path.split('/')[2]
this.currentPage = this._.find(this.resources, s => s.name === name).text
},
menuSelect (name) {
this.currentPage = this._.find(this.resources, s => s.name === name).text
}
}
} }
</script> </script>
...@@ -51,26 +78,26 @@ export default { ...@@ -51,26 +78,26 @@ export default {
.request-resource { .request-resource {
display: flex; display: flex;
.request-resource-menu { .request-resource-menu {
flex: 0 0 240px; flex: 0 0 140px;
.ivu-menu {
width: 180px !important;
.ivu-menu-item {
padding: 8px 8px;
}
.ivu-menu-item-group-title {
height: 35px;
line-height: 35px;
}
}
} }
.request-resource-content { .request-resource-content {
flex: 1; flex: 1;
padding: 0 5px; padding: 0 10px;
height: 50px; height: 50px;
.ivu-form-item { .ivu-form-item {
margin-bottom: 10px; margin-bottom: 10px;
} }
.resource-title {
display: inline-block;
border-left: 5px solid #be1f19f5;
text-indent: 10px;
margin-left: 2px;
font-weight: bold;
font-size: 20px;
margin-bottom: 20px;
}
.resource-result-metadata-item { .resource-result-metadata-item {
margin-bottom: 20px; margin-bottom: 20px;
.resource-result-metadata-item-title { .resource-result-metadata-item-title {
...@@ -80,10 +107,23 @@ export default { ...@@ -80,10 +107,23 @@ export default {
margin-bottom: 10px; margin-bottom: 10px;
margin-left: 2px; margin-left: 2px;
font-weight: bold; font-weight: bold;
font-size: 25px; font-size: 12px;
font-family: fantasy; font-family: monospace;
} }
} }
} }
} }
</style> </style>
<style lang="less">
.CodeMirror {
border: 1px solid #eee;
height: 100% !important;
}
.CodeMirror-scroll {
height: auto;
overflow-y: hidden;
overflow-x: auto;
}
</style>
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