Commit 153869cf by 陈宁

# dev 请求资源 / 码券商品信息

parent bddc637c
......@@ -11,6 +11,6 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Request
public string StoreId { get; set; }
public DateTime Time { get; set; }
public string Time { get; set; }
}
}
......@@ -11,6 +11,9 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Request
public string StoreId { get; set; }
public DateTime Time { get; set; }
/// <summary>
/// 时间; eg: 12:34:56
/// </summary>
public string Time { get; set; }
}
}
......@@ -21,7 +21,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.ToString("HH:mm:ss"), true);
url = string.Format(url, string.Join(',', request.ProductId), $"{GetChannelUnifyId(request.Channel, request.Env)}_{request.StoreId}", request.Time, true);
var response = await HttpHeper.Get(url);
......
......@@ -7968,6 +7968,11 @@
}
}
},
"moment": {
"version": "2.27.0",
"resolved": "https://registry.npm.taobao.org/moment/download/moment-2.27.0.tgz",
"integrity": "sha1-i/9OPiaiNiIN/j423nVrbrqgEF0="
},
"move-concurrently": {
"version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz",
......
......@@ -11,6 +11,7 @@
"axios": "^0.19.2",
"core-js": "^3.6.4",
"lodash": "^4.17.15",
"moment": "^2.27.0",
"view-design": "^4.1.2",
"vue": "^2.6.11",
"vue-codemirror": "^4.0.6",
......
......@@ -16,3 +16,7 @@ html, body, #app {
.ivu-tabs-bar {
margin-bottom: 5px;
}
.ivu-table-small td {
height: 35px;
}
\ No newline at end of file
......@@ -16,6 +16,8 @@ var _axios = _interopRequireDefault(require("axios"));
var _lodash = _interopRequireDefault(require("lodash"));
var _moment = _interopRequireDefault(require("moment"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
// dev
......@@ -34,6 +36,7 @@ _axios["default"].interceptors.request.use(function (config) {
_vue["default"].prototype.$http = _axios["default"];
_vue["default"].prototype._ = _lodash["default"];
_vue["default"].prototype._moment = _moment["default"];
_vue["default"].use(_viewDesign["default"]);
......
"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
"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")),_moment=_interopRequireDefault(require("moment"));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 t=window.sessionStorage.getItem("au");return t&&(e.headers.au=t),e}),_vue.default.prototype.$http=_axios.default,_vue.default.prototype._=_lodash.default,_vue.default.prototype._moment=_moment.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
......@@ -6,6 +6,7 @@ import 'view-design/dist/styles/iview.css'
import './assets/css/global.css'
import axios from 'axios'
import _ from 'lodash'
import moment from 'moment'
// dev
axios.defaults.baseURL = 'http://129.211.139.23:8018/api'
......@@ -22,6 +23,7 @@ axios.interceptors.request.use(config => {
Vue.prototype.$http = axios
Vue.prototype._ = _
Vue.prototype._moment = moment
Vue.use(ViewUI)
......
......@@ -40,6 +40,11 @@
</FormItem>
</Col>
<Col span="12">
<FormItem label="时间">
<TimePicker :value="time" format="HH:mm:ss" placeholder="时间" style="width: 168px"></TimePicker>
</FormItem>
</Col>
<Col span="12">
<FormItem>
<Button type="primary" icon="ios-search" :loading="loadingSearch" @click="search()">
<span v-if="!loadingSearch">查 询</span>
......@@ -77,6 +82,16 @@
<Tag color="geekblue">{{row.field}}</Tag>
</div>
</template>
<template slot-scope="{ row }" slot="val">
<div>
{{ row.val }}
<Tooltip v-if="row.descriptor" max-width="200" placement="right" transfer>
<span style="color:#ed4014">({{row.descriptor.memo}})</span>
<Icon type="md-information-circle" />
<div slot="content">{{row.descriptor.desc}}</div>
</Tooltip>
</div>
</template>
</Table>
<strong v-else>{{ item.coupon.data }}</strong>
</Card>
......@@ -104,6 +119,16 @@
<Tag color="geekblue">{{row.field}}</Tag>
</div>
</template>
<template slot-scope="{ row }" slot="val">
<div>
{{ row.val }}
<Tooltip v-if="row.descriptor" max-width="200" placement="right" transfer>
<span style="color:#ed4014">({{row.descriptor.memo}})</span>
<Icon type="md-information-circle" />
<div slot="content">{{row.descriptor.desc}}</div>
</Tooltip>
</div>
</template>
</Table>
</Card>
</div>
......@@ -115,7 +140,7 @@
<div class="resource-result-metadata-panel">
<div v-for="item in metaData" :key="item.name" class="resource-result-metadata-item">
<span class="resource-result-metadata-item-title">{{item.name}}</span>
<codemirror :value="mergeMetaData(item)" :options="cmOptions"></codemirror>
<codemirror :value="buildMetaData(item)" :options="cmOptions"></codemirror>
</div>
</div>
</TabPane>
......@@ -139,9 +164,10 @@ export default {
return {
loadingSearch: false,
channel: 'delivery',
env: 'dev',
couponCode: '385438604009450,QQQ',
storeId: '',
env: 'prod',
time: '12:34:56',
couponCode: '385438604009450,527577357365398,QQQ',
storeId: '99998',
metaData: [],
vData: [],
retCoupons: [],
......@@ -157,12 +183,12 @@ export default {
slot: 'name'
},
{
key: 'val'
slot: 'val'
}]
}
},
created () {
this.time = this._moment().format('HH:mm:ss')
},
methods: {
async search () {
......@@ -177,22 +203,11 @@ export default {
}
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, time: this.time }
const { data: response } = await this.$http.post('/requestresource/get-coupon', params)
if (response.code !== 200) {
this.$Message.error(response.message)
} else {
// this.metaDataRequestUrl =
// '================ URL ================\r\n' +
// response.data.url + '\n\n' +
// '================ HEADERS ============\r\n' +
// JSON.stringify(response.data.requestHeaders, null, '\t') + '\r\n' +
// '================ DATA ===============\r\n' +
// JSON.stringify(response.data.requestBody, null, '\t')
// this.metaDataResponseBody = JSON.stringify(response.data.responseBody, null, '\t')
// this.$Message.success('查询成功')
this.metaData = response.data
this.bindData(response.data)
}
......@@ -212,14 +227,23 @@ export default {
{ name: '活动描述', field: 'act_desc', val: c.codeInfo.act_desc },
{ name: '代金券优惠(非代金券不返回)', field: 'amount ', val: c.codeInfo.amount },
{ name: '代金券门槛(非代金券不返回)', field: 'minamount', val: c.codeInfo.minamount },
{ name: '绑定商品编号', field: 'mcd_productCode', val: c.codeInfo.products[0].mcd_productCode },
{ name: '绑定商品金额', field: 'mcd_tenderCode', val: c.codeInfo.products[0].mcd_tenderCode }
{ 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 => {
d.descriptor = this.buildCouponDescriptor(d.field, d.val)
})
}
})
this.retCoupons = coupons
const products = []
......@@ -235,17 +259,24 @@ export default {
{ name: '原价', field: 'originalPrice', val: p.originalPrice },
{ name: '外带原价', field: 'originalPriceTakeout', val: p.originalPriceTakeout },
{ name: '状态', field: 'status', val: p.status },
{ name: '类型', field: 'type', val: p.type }
{ name: '菜品类型', field: 'type', val: p.type }
]
products.push({ id: p.pid, name: p.name, data: data })
})
products.forEach(p => {
p.data.forEach(d => {
d.descriptor = this.buildProductDescriptor(d.field, d.val)
})
})
this.retProducts = products
// 组装数据
const vdata = []
coupons.forEach(coup => {
if (coup.ret) {
const p = this._.find(products, { id: 123470777 })
const p = this._.find(products, { id: parseInt(coup.productId) })
vdata.push({ coupon: coup, product: p })
} else {
vdata.push({ coupon: coup, product: null })
......@@ -254,7 +285,7 @@ export default {
this.vData = vdata
},
mergeMetaData (data) {
buildMetaData (data) {
return '================ URL ================\r\n' +
data.url + '\n\n' +
'================ HEADERS ============\r\n' +
......@@ -263,6 +294,77 @@ export default {
JSON.stringify(data.requestBody, null, '\t') + '\r\n' +
'================ RESPONSE ===============\r\n' +
JSON.stringify(JSON.parse(data.responseContent), null, '\t')
},
buildCouponDescriptor (field, val) {
let memo = ''
let desc = ''
if (field === 'couponType') {
if (val === 0) {
memo = '商品券'
} else if (val === 1) {
memo = '代金券'
}
desc = '0)商品券, 1)代金券;'
}
if (memo || desc) {
return { memo, desc }
}
return null
},
buildProductDescriptor (field, val) {
let memo = ''
let desc = ''
if (field === 'businessType') {
if (val === '1') {
memo = '饮品'
}
desc = '1)饮品, 2)非饮品'
} else if (field === 'status') {
switch (val) {
case 1:
memo = '下架'
break
case 2:
memo = '上架'
break
case 3:
memo = '售罄'
break
default:
break
}
desc = '1)下架, 2)上架, 3)售罄'
} else if (field === 'type') {
switch (val) {
case 1:
memo = '普通商品'
break
case 2:
memo = '附加商品'
break
case 3:
memo = '组合商品'
break
case 4:
memo = '固定套餐'
break
case 5:
memo = '组合套餐'
break
case 6:
memo = '多规格套餐'
break
default:
break
}
desc = '1)普通商品, 2)附加商品, 3)组合商品, 4)固定套餐, 5)组合套餐, 6)多规格套餐'
}
if (memo || desc) {
return { memo, desc }
}
return null
}
}
}
......
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