Commit 153869cf by 陈宁

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

parent bddc637c
...@@ -11,6 +11,6 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Request ...@@ -11,6 +11,6 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Request
public string StoreId { get; set; } 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 ...@@ -11,6 +11,9 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Request
public string StoreId { get; set; } 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 ...@@ -21,7 +21,7 @@ namespace Freemud.BE.Toolbox.WebApi.Proxy
public async Task<RequestResourceResponse> GetProductBaseInfos(GetProductInfoRequest request) public async Task<RequestResourceResponse> GetProductBaseInfos(GetProductInfoRequest request)
{ {
var url = GetUrl(request.Env, "FreemudProduct", "listBaseInfosByTimeV2"); 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); var response = await HttpHeper.Get(url);
......
...@@ -7968,6 +7968,11 @@ ...@@ -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": { "move-concurrently": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz", "resolved": "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz",
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
"axios": "^0.19.2", "axios": "^0.19.2",
"core-js": "^3.6.4", "core-js": "^3.6.4",
"lodash": "^4.17.15", "lodash": "^4.17.15",
"moment": "^2.27.0",
"view-design": "^4.1.2", "view-design": "^4.1.2",
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-codemirror": "^4.0.6", "vue-codemirror": "^4.0.6",
......
...@@ -15,4 +15,8 @@ html, body, #app { ...@@ -15,4 +15,8 @@ html, body, #app {
.ivu-tabs-bar { .ivu-tabs-bar {
margin-bottom: 5px; margin-bottom: 5px;
}
.ivu-table-small td {
height: 35px;
} }
\ No newline at end of file
...@@ -16,6 +16,8 @@ var _axios = _interopRequireDefault(require("axios")); ...@@ -16,6 +16,8 @@ var _axios = _interopRequireDefault(require("axios"));
var _lodash = _interopRequireDefault(require("lodash")); var _lodash = _interopRequireDefault(require("lodash"));
var _moment = _interopRequireDefault(require("moment"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
// dev // dev
...@@ -34,6 +36,7 @@ _axios["default"].interceptors.request.use(function (config) { ...@@ -34,6 +36,7 @@ _axios["default"].interceptors.request.use(function (config) {
_vue["default"].prototype.$http = _axios["default"]; _vue["default"].prototype.$http = _axios["default"];
_vue["default"].prototype._ = _lodash["default"]; _vue["default"].prototype._ = _lodash["default"];
_vue["default"].prototype._moment = _moment["default"];
_vue["default"].use(_viewDesign["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"); "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 \ No newline at end of file
...@@ -6,6 +6,7 @@ import 'view-design/dist/styles/iview.css' ...@@ -6,6 +6,7 @@ import 'view-design/dist/styles/iview.css'
import './assets/css/global.css' import './assets/css/global.css'
import axios from 'axios' import axios from 'axios'
import _ from 'lodash' import _ from 'lodash'
import moment from 'moment'
// dev // dev
axios.defaults.baseURL = 'http://129.211.139.23:8018/api' axios.defaults.baseURL = 'http://129.211.139.23:8018/api'
...@@ -22,6 +23,7 @@ axios.interceptors.request.use(config => { ...@@ -22,6 +23,7 @@ axios.interceptors.request.use(config => {
Vue.prototype.$http = axios Vue.prototype.$http = axios
Vue.prototype._ = _ Vue.prototype._ = _
Vue.prototype._moment = moment
Vue.use(ViewUI) Vue.use(ViewUI)
......
...@@ -40,6 +40,11 @@ ...@@ -40,6 +40,11 @@
</FormItem> </FormItem>
</Col> </Col>
<Col span="12"> <Col span="12">
<FormItem label="时间">
<TimePicker :value="time" format="HH:mm:ss" placeholder="时间" style="width: 168px"></TimePicker>
</FormItem>
</Col>
<Col span="12">
<FormItem> <FormItem>
<Button type="primary" icon="ios-search" :loading="loadingSearch" @click="search()"> <Button type="primary" icon="ios-search" :loading="loadingSearch" @click="search()">
<span v-if="!loadingSearch">查 询</span> <span v-if="!loadingSearch">查 询</span>
...@@ -77,6 +82,16 @@ ...@@ -77,6 +82,16 @@
<Tag color="geekblue">{{row.field}}</Tag> <Tag color="geekblue">{{row.field}}</Tag>
</div> </div>
</template> </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> </Table>
<strong v-else>{{ item.coupon.data }}</strong> <strong v-else>{{ item.coupon.data }}</strong>
</Card> </Card>
...@@ -104,6 +119,16 @@ ...@@ -104,6 +119,16 @@
<Tag color="geekblue">{{row.field}}</Tag> <Tag color="geekblue">{{row.field}}</Tag>
</div> </div>
</template> </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> </Table>
</Card> </Card>
</div> </div>
...@@ -115,7 +140,7 @@ ...@@ -115,7 +140,7 @@
<div class="resource-result-metadata-panel"> <div class="resource-result-metadata-panel">
<div v-for="item in metaData" :key="item.name" class="resource-result-metadata-item"> <div v-for="item in metaData" :key="item.name" class="resource-result-metadata-item">
<span class="resource-result-metadata-item-title">{{item.name}}</span> <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>
</div> </div>
</TabPane> </TabPane>
...@@ -139,9 +164,10 @@ export default { ...@@ -139,9 +164,10 @@ export default {
return { return {
loadingSearch: false, loadingSearch: false,
channel: 'delivery', channel: 'delivery',
env: 'dev', env: 'prod',
couponCode: '385438604009450,QQQ', time: '12:34:56',
storeId: '', couponCode: '385438604009450,527577357365398,QQQ',
storeId: '99998',
metaData: [], metaData: [],
vData: [], vData: [],
retCoupons: [], retCoupons: [],
...@@ -157,12 +183,12 @@ export default { ...@@ -157,12 +183,12 @@ export default {
slot: 'name' slot: 'name'
}, },
{ {
key: 'val' slot: 'val'
}] }]
} }
}, },
created () { created () {
this.time = this._moment().format('HH:mm:ss')
}, },
methods: { methods: {
async search () { async search () {
...@@ -177,22 +203,11 @@ export default { ...@@ -177,22 +203,11 @@ export default {
} }
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, time: this.time }
const { data: response } = await this.$http.post('/requestresource/get-coupon', 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 {
// 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.metaData = response.data
this.bindData(response.data) this.bindData(response.data)
} }
...@@ -212,14 +227,23 @@ export default { ...@@ -212,14 +227,23 @@ export default {
{ name: '活动描述', field: 'act_desc', val: c.codeInfo.act_desc }, { name: '活动描述', field: 'act_desc', val: c.codeInfo.act_desc },
{ name: '代金券优惠(非代金券不返回)', field: 'amount ', val: c.codeInfo.amount }, { name: '代金券优惠(非代金券不返回)', field: 'amount ', val: c.codeInfo.amount },
{ name: '代金券门槛(非代金券不返回)', field: 'minamount', val: c.codeInfo.minamount }, { name: '代金券门槛(非代金券不返回)', field: 'minamount', val: c.codeInfo.minamount },
{ name: '绑定商品编号', field: 'mcd_productCode', val: c.codeInfo.products[0].mcd_productCode }, { name: '对应商品编号', field: 'mcd_productCode', val: c.codeInfo.products[0].mcd_productCode },
{ name: '绑定商品金额', field: 'mcd_tenderCode', val: c.codeInfo.products[0].mcd_tenderCode } { 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 }) coupons.push({ ret: true, couponCode: c.code, couponName: c.codeInfo.act_name, productId: c.codeInfo.products[0].mcd_productCode, data: data })
} else { } else {
coupons.push({ ret: false, couponCode: c.code, data: c.msg }) 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 this.retCoupons = coupons
const products = [] const products = []
...@@ -235,17 +259,24 @@ export default { ...@@ -235,17 +259,24 @@ export default {
{ name: '原价', field: 'originalPrice', val: p.originalPrice }, { name: '原价', field: 'originalPrice', val: p.originalPrice },
{ name: '外带原价', field: 'originalPriceTakeout', val: p.originalPriceTakeout }, { name: '外带原价', field: 'originalPriceTakeout', val: p.originalPriceTakeout },
{ name: '状态', field: 'status', val: p.status }, { 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.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 this.retProducts = products
// 组装数据 // 组装数据
const vdata = [] const vdata = []
coupons.forEach(coup => { coupons.forEach(coup => {
if (coup.ret) { 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 }) vdata.push({ coupon: coup, product: p })
} else { } else {
vdata.push({ coupon: coup, product: null }) vdata.push({ coupon: coup, product: null })
...@@ -254,7 +285,7 @@ export default { ...@@ -254,7 +285,7 @@ export default {
this.vData = vdata this.vData = vdata
}, },
mergeMetaData (data) { buildMetaData (data) {
return '================ URL ================\r\n' + return '================ URL ================\r\n' +
data.url + '\n\n' + data.url + '\n\n' +
'================ HEADERS ============\r\n' + '================ HEADERS ============\r\n' +
...@@ -263,6 +294,77 @@ export default { ...@@ -263,6 +294,77 @@ export default {
JSON.stringify(data.requestBody, null, '\t') + '\r\n' + JSON.stringify(data.requestBody, null, '\t') + '\r\n' +
'================ RESPONSE ===============\r\n' + '================ RESPONSE ===============\r\n' +
JSON.stringify(JSON.parse(data.responseContent), null, '\t') 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