Authored by 邱骏

Merge branch 'develop' of http://git.yoho.cn/fe/xianyu-ufo-app-web into develop

<template>
<div id="app">
<transition
:name="`route-view-${yoho.direction}`">
<keep-alive :max="20">
<router-view :key="routerViewKey"></router-view>
</keep-alive>
</transition>
<keep-alive :max="20">
<router-view :key="routerViewKey"></router-view>
</keep-alive>
</div>
</template>
<script>
import {mapState} from 'vuex';
import {mapState, mapMutations} from 'vuex';
export default {
name: 'App',
... ... @@ -32,10 +29,18 @@ export default {
// this.$xianyu.setXianyuWebview();
this.$xianyu.setXianyuNav();
// queryString中携带bind_code,则弹出绑定弹框
if (this.$route.query.bind_code) {
this.$root.$createThirdBind().open();
}
this.$sdk.getUser().then(user => {
if (user && user.uid) {
this.SET_LOGIN_INFO(user);
} else {
// queryString中携带bind_code,则弹出绑定弹框
if (this.$route.query.bind_code) {
this.$root.$createThirdBind().open();
}
}
});
},
watch: {
'yoho.context.needLogin': function(newVal) {
... ... @@ -43,6 +48,9 @@ export default {
this.$yoho.auth({ needLogin: newVal });
}
},
},
methods: {
...mapMutations(['SET_LOGIN_INFO'])
}
};
</script>
... ...
<template>
<div v-if="dialogEnable" class="third-bind-wrapper">
<CubeScroll v-if="dialogEnable" class="third-bind-wrapper">
<div class="bind-dialog">
<p class="bind-title">关联有货UFO账户</p>
<div class="under-row">
... ... @@ -20,12 +20,12 @@
<CubeButton class="bind-btn" :disabled="submitDisable" @click="bindSubmit">登录</CubeButton>
</div>
</div>
</div>
</CubeScroll>
</template>
<script>
import { Button, Input } from 'cube-ui';
import { Button, Scroll, Input } from 'cube-ui';
import { mapActions, mapState } from 'vuex';
export default {
... ... @@ -48,6 +48,18 @@ export default {
return !(this.phone && this.smsCode);
}
},
watch: {
smsCode(newVal, oldVal) {
// 解决ios自动填充验证码输入两遍的问题
if (this.$yoho.isiOS && newVal.length > 4 && newVal.length - oldVal.length > 1 && newVal.length % 2 === 0) {
let half = newVal.length / 2;
if (newVal.substring(0, half) === newVal.substring(half)) {
this.smsCode = newVal.substring(0, half);
}
}
}
},
methods: {
...mapActions(['sendBindSms', 'submitThirdBind']),
open() {
... ... @@ -93,6 +105,11 @@ export default {
this.sendBindSms({
mobile: this.phone,
bindCode: this.bindCode
}).then(res => {
if (res.code !== 200) {
this.clearSendTimer();
this.toast(res.message || '发送失败');
}
});
},
clearSendTimer() {
... ... @@ -119,6 +136,7 @@ export default {
}
},
components: {
CubeScroll: Scroll,
CubeInput: Input,
CubeButton: Button
}
... ... @@ -137,6 +155,7 @@ export default {
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
}
.bind-dialog {
... ...
... ... @@ -106,7 +106,8 @@ export default {
await this.delay(1500);
this.payAction({
orderCode: this.orderCode
orderCode: this.orderCode,
payment: this.$xianyu.isAliApp ? 2 : 9
}).then((result) => {
toast.hide();
this.onSuccess(result);
... ...
... ... @@ -92,7 +92,12 @@ yoho.auth = async (args) => {
if (user && user.uid) {
return user;
} else {
cookie.set('third_backurl', refer || location.href, {
let ck = {
s: refer || location.href,
b: location.href
};
cookie.set('ali_backurl', JSON.stringify(ck), {
domain: '.yohobuy.com',
path: '/',
});
... ...
... ... @@ -17,7 +17,7 @@
<input class="search-input" type="search" disabled="true" placeholder="搜索商品名称或货号"/>
</div>
<template v-for="(item, index) in channelList.list">
<Swiper @click="getParams" :list="item.data" :key="index" v-if="item.template_name == 'threePicture'"/>
<Swiper @click="getParams" :list="item.data" :key="index" v-if="item.template_name == 'threePicture'"/>
<Hot :list="item.data" :key="index" v-if="item.template_name == 'image_list'"/>
<Banner :list="item.data" :key="index" v-if="item.template_name == 'single_image'"/>
<TwoBanner :list="item.data" :key="index" v-if="item.template_name == 'twoPicture'"/>
... ...
... ... @@ -107,7 +107,7 @@ export default {
}
.grey {
background-color: #F2F2F2;
margin: 0 -40px;
// margin: 0 -40px;
padding: 0 40px;
}
... ...
<template>
<LayoutApp :show-back="true" title="我的" :hideHeader="hideHeader">
<div class="body" ref="body">
<Scroll>
<div v-for="(value, key) in getMineList" :key="key">
<tab-item v-if="key === 'board'" :data="value" noLine icon="cubeic-notification" small grey>
<scroll></scroll>
<niticelScroll></niticelScroll>
</tab-item>
<template v-else-if="key === 'resource1' || key === 'resource2'">
<div v-if="value.data.template_name ==='single_image'">
<div v-if="value.data.template_name ==='single_image'" class="marg">
<singleImage :data="value.data.data[0]"></singleImage>
</div>
</template>
<div v-else-if="key === 'order'" class="bg-bottom">
<div v-else-if="key === 'order'" class="bg-bottom marg">
<order></order>
</div>
<div v-else-if="key === 'sale'" class="bg-top">
<div v-else-if="key === 'sale'" class="bg-top marg">
<tab-item :data="value" noLine titleBold titleSmall></tab-item>
</div>
<bind v-else-if="key === 'bindAccount'" :data="value"></bind>
<tab-item v-else :data="value"></tab-item>
<bind class="marg" v-else-if="key === 'bindAccount'" :data="value"></bind>
<tab-item class="marg" v-else :data="value"></tab-item>
</div>
</Scroll>
</div>
</LayoutApp>
</template>
... ... @@ -30,6 +31,7 @@ import order from './components/order';
import scroll from './components/scroll';
import singleImage from './components/singleImage';
import bind from './components/bind';
import {Style, Scroll} from 'cube-ui';
import { createNamespacedHelpers } from 'vuex';
const { mapGetters, mapActions } = createNamespacedHelpers('home/mine');
... ... @@ -68,9 +70,12 @@ export default {
components: {
tabItem,
order,
scroll,
niticelScroll: scroll,
singleImage,
bind
bind,
Style,
Scroll
}
};
</script>
... ... @@ -78,9 +83,12 @@ export default {
<style lang="scss" scoped>
.body {
height: 100%;
overflow-y: auto;
// overflow-y: auto;
background-color: white;
padding: 0 40px;
// padding: 0 40px;
}
.marg {
margin: 0 40px;
}
.bg-top,
... ...
... ... @@ -61,7 +61,7 @@ export default {
this.fetchTabList();
},
mounted() {
},
computed: {
options: function() {
... ... @@ -71,14 +71,14 @@ export default {
}
},
created() {
},
methods: {
...mapActions(['fetchNewsList', 'fetchNewsTabList']),
async fetchList() {
let result = await this.fetchNewsList({ ...this.params });
if (result.code && result.code == 200) {
if (result && result.code && result.code == 200) {
if (!this.newsList.isMoreData) return;
this.newsList.list = this.newsList.list.concat(result.data.list);
this.params.page = this.params.page + 1;
... ... @@ -94,13 +94,13 @@ export default {
async fetchTabList() {
let result = await this.fetchNewsTabList();
if (result.code && result.code == 200) {
if (result && result.code && result.code == 200) {
this.newsList.tabList = result.data;
}
},
async onPullingUp() {
if (!this.newsList.isMoreData) {
this.$refs.scroll.forceUpdate()
this.$refs.scroll.forceUpdate();
return;
}
this.fetchList(this.params);
... ...
<!--买家求购确认页-->
<template>
<LayoutApp :show-back="true" title="">
<LayoutApp :show-back="true" title="出价求购">
<div class="body" ref="body">
<div class="topContainer">
<div class="topView">
<div class="title">出价求购</div>
</div>
<!--<div class="topView">-->
<!--<div class="title"></div>-->
<!--</div>-->
<!--商品信息-->
<div class="productDetail">
<div class="productImageWrapper">
... ... @@ -440,10 +440,12 @@ export default {
width: calc(100% - 120*2px - 10*2px);
height: 120*2px;
margin-left: 10*2px;
justify-content: center;
display: flex;
flex-direction: column;
}
.size {
margin-top: 37*2px;
font-family: "PingFang SC";
font-size: 12*2px;
color: #999;
... ...
... ... @@ -96,6 +96,13 @@ export default {
}
},
deep: true
},
watch: {
'yoho.context.isLogin': function(newVal) {
if (newVal) {
this.init();
}
},
}
},
methods: {
... ... @@ -309,6 +316,7 @@ export default {
.product-info {
height: 260px;
display: flex;
}
.tip {
... ...
... ... @@ -39,7 +39,7 @@ export default {
.desc {
font-size: 24px;
color: #3f3f3f;
color: #999;
margin-left: 10px;
}
... ...
... ... @@ -2,7 +2,7 @@
<div class="input-comp">
<div class="input-wrapper">
<div class="price-symbol">¥</div>
<input ref="input" :value="value" class="cube-input-field" type="text" placeholder="定价需以9结尾,例如¥1299" @blur="onBlur"
<input ref="input" :value="value" class="tip" type="text" placeholder="定价需以9结尾,例如¥1299" @blur="onBlur"
@change="onChange"></input>
</div>
<div class="num-wrapper" v-if="superSell">
... ... @@ -91,7 +91,7 @@ export default {
flex: 1;
font-size: 56px;
font-weight: 500;
line-height: 120px;
line-height: 80px;
background: #f5f5f5;
}
... ... @@ -119,7 +119,6 @@ export default {
.count {
color: black;
}
}
</style>
... ...
... ... @@ -28,16 +28,16 @@ export default {
<style lang="scss" scoped>
.product-wrapper {
display: flex;
height: 240px;
overflow: hidden;
}
.product-price {
display: inline-block;
vertical-align: top;
display: flex;
height: 100%;
margin-left: 20px;
padding-top: 3%;
align-items: center;
}
.price {
... ...
... ... @@ -24,7 +24,7 @@ export default {
...mapMutations(['filterOrderList', 'resetData']),
async onAction({ action, order, isDetail = false } = {}) {
const { owner = ownType.SELL } = this.$route.params;
const { owner = ownType.SELL, status } = this.$route.params;
const {
orderCode,
realPrice = '',
... ... @@ -43,6 +43,7 @@ export default {
const isOk = await this.deleteOrder({
orderCode,
owner,
status
});
if (isOk) {
... ... @@ -52,7 +53,7 @@ export default {
this.filterOrderList({
orderCode,
owner,
status: this.status,
status
});
}
}
... ...
... ... @@ -348,7 +348,7 @@ export default {
.judge-count-down {
color: #d0021b;
font-size: 12px;
font-size: 12*2px;
display: inline-block;
}
... ...
<!--卖家求购变现-->
<template>
<LayoutApp :show-back="true">
<LayoutApp :show-back="true" title="变现">
<div class="body">
<TitleComp txt="变现"></TitleComp>
<!--<TitleComp txt="变现"></TitleComp>-->
<ProductInfo :data="originProductData" class="product-info" :priceType="'现货最高求购价:'"></ProductInfo>
<div class="inputView">
<span class="inputViewIcon">
... ... @@ -88,7 +88,6 @@ export default {
this.isEntry = false;
this.fetchSellerEntryStatus({})
.then((res)=> {
console.log(res);
if (res) {
this.isEntry = get(res, 'entrySellerType', 0) !== 0;
}
... ...
... ... @@ -2,7 +2,7 @@
<LayoutApp :show-back="true" title="出售" :back-action="backAction">
<div class="body">
<ProductInfo :data="productDetail" class="product-info"></ProductInfo>
<InputPrice @input="changePrice" class="input-price"
<InputPrice @input="changePrice"
:num="num" :value="price"
@on-blur="compute" :super-sell="superSell"
@on-num-change="onNumChange"
... ... @@ -110,9 +110,11 @@ export default {
return {
goodImg: get(state.product.selectedProductInfo, 'product.goods_list[0].image_list[0].image_url', ''),
productName: get(state.product.selectedProductInfo, 'product.product_name', ''),
productId: get(state.product.selectedProductInfo, 'product.product_id', ''),
colorName: get(state.product.selectedProductInfo, 'product.goods_list[0].color_name', ''),
sizeName: get(state.product.selectedProductInfo, 'size.size_name', ''),
skup: get(state.product.selectedProductInfo, 'size.skup', ''),
bidSkup: get(state.product.selectedProductInfo, 'size.bid_skup', ''),
goodPrice,
priceType,
goodBidPrice,
... ... @@ -149,11 +151,21 @@ export default {
disabled: false
},
onCancel: () => {
this.$router.replace({
this.$store.commit('order/sellerAskOrder/SELLER_ASK_SET_PRODUCTINFO', {
goodImg: this.productDetail.goodImg,
colorName: this.productDetail.colorName,
sizeName: this.productDetail.sizeName,
goodPrice: this.productDetail.bidPrice,
productId: this.productDetail.productId,
bid_moster_price: this.productDetail.bidPrice,
});
// 跳转变现
this.$router.push({
name: 'sellAskOrder',
query: {
skup: this.productDetail.skup,
price: this.productDetail.bidPrice
skup: this.productDetail.bidSkup,
price: this.productDetail.bidPrice,
}
});
}
... ... @@ -375,6 +387,11 @@ export default {
padding: 0 50px;
}
.product-info {
height: 240px;
margin-bottom: 20px;
}
.submit-btn {
height: 80px;
line-height: 80px;
... ...
... ... @@ -211,6 +211,7 @@ export default {
.size-info,
.size-price {
font-family: "Alte DIN 1451 Mittelschrift";
color: #fff;
}
}
... ... @@ -218,6 +219,7 @@ export default {
&.disabled {
.size-info,
.size-price {
font-family: "Alte DIN 1451 Mittelschrift";
color: #ccc;
}
}
... ...
... ... @@ -221,6 +221,7 @@ export default {
.title {
font-size: 40px;
line-height: 96px;
font-weight: bold;
i {
float: right;
... ... @@ -253,6 +254,7 @@ export default {
padding-top: 30px;
font-size: 32px;
color: #000;
font-family: "Alte DIN 1451 Mittelschrift";
}
}
}
... ... @@ -344,6 +346,7 @@ export default {
font-size: 28px;
i {
font-family: "Alte DIN 1451 Mittelschrift";
font-size: 20px;
font-style: normal;
}
... ...
... ... @@ -178,9 +178,9 @@ export default {
},
},
mounted() {
if (this.isQiugouEnabled === null) {
this.$store.dispatch('getSysConfigQiugou');
}
// if (this.isQiugouEnabled === null) {
this.$store.dispatch('getSysConfigQiugou');
// }
},
activated() {
this.loadData(this.productId);
... ...
... ... @@ -51,10 +51,8 @@ export default function() {
},
async fetchChannelList({ commit }) {
const result = await this.$api.get('/api/ufo/channel/channelList', {
content_code: 'f788335b57b67c1711f255648c744dab',
content_code: 'cfcd8de156d3edc26c84091804c43e23',
});
console.log(result);
console.log("resultresultresult");
if (result.code === 200) {
commit(Types.FETCH_CHANNEL, { list: result.data });
return result.data;
... ...
... ... @@ -89,7 +89,7 @@ const DEFUALT_CONFIG_TIP = {
};
const TEST_PRODUCT_INFO = {
least_price: 1119.00,
least_price: 0,
max_price: 20000.00,
max_sort_id: 10,
min_price: 0.01,
... ... @@ -98,7 +98,9 @@ const TEST_PRODUCT_INFO = {
product_id: 10000068,
product_name: 'Timberland 红色女靴',
sale_time: '2016.01.01',
image: 'http://img11.static.yhbimg.com/goodsimg/2018/10/18/17/0124eed582cab20be7047c796c314cbc76.jpg?imageMogr2/thumbnail/{width}x{height}/background/d2hpdGU=/position/center/quality/80'
image: 'http://img11.static.yhbimg.com/goodsimg/2018/10/18/17/0124eed582cab20be7047c796c314cbc76.jpg?imageMogr2/thumbnail/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
sizeName: '',
colorName: '',
};
export default function() {
... ...
... ... @@ -264,10 +264,10 @@ export default function() {
return order;
},
async payAction(ctx, { orderCode }) {
async payAction(ctx, { orderCode, payment = 2 }) {
const payResult = await this.$api.post('/api/order/pay', {
orderCode,
payment: 2
payment
});
if (payResult.code !== 200) {
... ...
... ... @@ -55,15 +55,40 @@ export default function() {
orderState.pullUpLoad = false;
}
},
filterOrderList(state, { orderCode, owner, status }) {
const orderState = state.orderListByType[orderStatusKey(owner, status)];
filterOrderList(state, {
orderCode,
owner = ownType.SELL,
status = 1
}) {
let orderState = state.orderListByType[orderStatusKey(owner, status)];
orderState.orderList = orderState.orderList.filter(
order => order.orderCode !== orderCode,
);
orderState.isShowEmpty = orderState.orderList.length === 0;
},
resetData(state, { owner, status } = {}) {
setOrderStatus(state, currentStatus) {
state.currentStatus = +currentStatus;
},
setRouteParamStatus(state, status = 1) {
state.routeParamStatus = +status;
},
resetPartialData(state, {
owner = ownType.SELL,
status = 1
}) {
Object.assign(state.orderListByType[orderStatusKey(owner, status)], {
page: 1,
orderList: [],
pagetotal: 0,
pullUpLoad: true,
});
},
resetData(state, {
owner = ownType.SELL,
status = 1
}) {
const orderListState = initialOrderState();
state.orderListByType[orderStatusKey(owner, status)] = orderListState;
... ... @@ -79,10 +104,16 @@ export default function() {
* }
* r
*/
async fetchOrderList({ commit, state }, { owner, status }) {
async fetchOrderList({
commit,
state
}, {
owner = ownType.SELL,
status = 1
}) {
const { page } = state.orderListByType[orderStatusKey(owner, status)];
const res = await this.$api.get('/api/order/list', {
const res = await this.$api.post('/api/order/list', {
tabType: owner,
type: status,
page,
... ... @@ -180,7 +211,7 @@ export default function() {
});
if (res.code === 200) {
return { errMsg: '', isOk: true, bidData: res.data };
return { errMsg: '', isOk: true, bidData: res.data};
} else {
return { errMsg: res.message, isOk: false };
}
... ...
... ... @@ -30,7 +30,7 @@ const {
} = Types;
const TEST_PRODUCT_INFO = {
least_price: 1119.00,
least_price: 0,
max_price: 20000.00,
max_sort_id: 10,
min_price: 0.01,
... ... @@ -40,9 +40,9 @@ const TEST_PRODUCT_INFO = {
product_name: 'Timberland 红色女靴',
sale_time: '2016.01.01',
goodImg: 'http://img11.static.yhbimg.com/goodsimg/2018/10/18/17/0124eed582cab20be7047c796c314cbc76.jpg?imageMogr2/thumbnail/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
colorName: '黑色',
sizeName: '42码',
goodPrice: 1119.00,
colorName: '',
sizeName: '',
goodPrice: 0,
priceType: '现货最高求购价:',
};
... ...
... ... @@ -15,7 +15,7 @@ export default {
content_code: '05e4f5782dfc3a5e10d39b8f04a7dcb9',
};
}
return this.$api.get(`/api/ufo/product${path}`, params).then(result => {
return this.$api.post(`/api/ufo/product${path}`, params).then(result => {
if (result.code === 200) {
return result.data;
} else {
... ... @@ -35,7 +35,7 @@ export default {
}));
},
async fetchRecommendProduct({ commit }, { productId }) {
const result = await this.$api.get('/api/ufo/product/recommend', { product_id: productId })
const result = await this.$api.post('/api/ufo/product/recommend', { product_id: productId })
return result?.data?.product_list ?? []
},
... ... @@ -52,7 +52,7 @@ export default {
return false;
}
const isFav = await this.$api.get('/api/ufo/product/fav', { productId }).then(result => {
const isFav = await this.$api.post('/api/ufo/product/fav', { productId }).then(result => {
if (result.code === 200) {
return result.data;
} else {
... ... @@ -63,7 +63,7 @@ export default {
commit(Types.UPDATE_PRODUCT_FAV, { productId, isFav });
},
async fetchTop3({ commit }, { productId }) {
const result = await this.$api.get('/api/ufo/product/top', { product_id: productId });
const result = await this.$api.post('/api/ufo/product/top', { product_id: productId });
if (result.code === 200) {
const productList = result.data.product_list || [];
... ... @@ -72,7 +72,7 @@ export default {
}
},
async toggleFav({ commit }, { productId, isFav }) {
const result = await this.$api.get(`/api/ufo/product/favorite/${isFav ? 'add' : 'cancel'}`, { productId });
const result = await this.$api.post(`/api/ufo/product/favorite/${isFav ? 'add' : 'cancel'}`, { productId });
if (result && result.code === 200) {
commit(Types.UPDATE_PRODUCT_FAV, { productId, isFav });
... ... @@ -106,7 +106,7 @@ export default {
async requestSize({ state }, { product_id, goods_id, size_ids }) {
const selectedProduct = state.selectedProductInfo;
await this.$api.get('/api/ufo/product/addsize', {
await this.$api.post('/api/ufo/product/addsize', {
product_id,
goods_id,
size_ids,
... ...
... ... @@ -24,6 +24,7 @@ export default function(mergeState = {}) {
isLogin: false,
userHeadIco: '',
userName: '',
enableQiugou: null, // 是否启用求购,默认不启用, null: 初始状态标识,需要请求api, false: 不启用, true: 启用
},
window: {
statusBarStatus: false,
... ... @@ -39,11 +40,6 @@ export default function(mergeState = {}) {
direction: 'forword',
homePage: true,
user: {},
// 系统配置
sysConfig: {
enableQiugou: null, // 是否启用求购,默认不启用, null: 初始状态标识,需要请求api, false: 不启用, true: 启用
}
},
mergeState,
),
... ... @@ -139,7 +135,7 @@ export default function(mergeState = {}) {
state.user.sellerInfo = sellerInfo || {};
},
[Types.UPDATE_SYSTEM_CONFIG_QIUGOU](state, { enabled }) {
state.sysConfig.enableQiugou = enabled;
state.context.enableQiugou = enabled;
},
},
getters: {
... ... @@ -147,7 +143,7 @@ export default function(mergeState = {}) {
return state.context.isLogin;
},
isQiugouEnabled(state) {
return state.sysConfig.enableQiugou;
return state.context.enableQiugou;
},
},
actions: {
... ... @@ -229,10 +225,10 @@ export default function(mergeState = {}) {
// /ufo-gateway/?method=ufo.resource.getConfigTypeContent&code=bid_switch_h5
// {"alg":"SALT_MD5","code":200,"data":"1","md5":"c13a1ace2c5883be18643551bd17ebcd","message":"操作成功"}
// H5是否打开求购 1代表打开
let isEnabled = !!state.sysConfig.enableQiugou;
let isEnabled = !!state.context.enableQiugou;
if (state.sysConfig.enableQiugou === null) {
const resp = await this.$api.get('/api/sys/config', {
if (state.context.enableQiugou === null) {
const resp = await this.$api.post('/api/sys/config', {
code: 'bid_switch_h5',
});
... ...
... ... @@ -34,12 +34,6 @@ const initClient = (store) => {
}
};
img.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA';
Vue.$sdk.getUser().then(user => {
if (user && user.uid) {
store.commit('SET_LOGIN_INFO', user);
}
});
};
export {
... ...
... ... @@ -58,14 +58,14 @@ module.exports = {
'/api/ufo/mine/order/summary': {
ufo: true,
auth: true,
path: '/ufo-gateway/shopping',
path: 'shopping',
api: 'ufo.order.summary',
params: {},
},
'/api/ufo/mine/coupon': {
ufo: true,
auth: true,
path: '/ufo-gateway/coupon',
path: 'coupon',
api: 'ufo.coupons.cnt',
params: {},
},
... ...
... ... @@ -13,7 +13,7 @@ const sign = global.yoho.sign;
const config = global.yoho.config;
const loginPage = '//m.yohobuy.com/signin.html';
const homePage = `${config.siteUrl}/xianyu/channel`;
const homePage = `${config.siteUrl}/xianyu/index/channel`;
const URL_BIND_KEY = 'bind_code';
const MAX_MSG_SEND_TIMES = 20;
... ... @@ -179,14 +179,21 @@ const login = {
sourceTypeSecond: req.yoho.isAliApp ? 'xianyu' : ''
}).then(result => {
let redirectUrl = loginPage;
let referUrl = {};
if (req.cookies.third_backurl) {
redirectUrl += '?refer=' + encodeURIComponent(handleReferUrl(req.cookies.third_backurl));
if (req.cookies.ali_backurl) {
try {
referUrl = JSON.parse(req.cookies.ali_backurl);
} catch(e) {
log.debug(JSON.stringify(e));
}
redirectUrl += '?refer=' + encodeURIComponent(handleReferUrl(referUrl.b || ''));
}
if (result.code === 200) {
if (_.get(result, 'data.is_bind') === 'N') {
redirectUrl = req.cookies.third_backurl ? req.cookies.third_backurl : homePage;
redirectUrl = referUrl.b ? referUrl.b : homePage;
redirectUrl += redirectUrl.indexOf('?') > 0 ? '&' : '?';
redirectUrl += URL_BIND_KEY + '=' + encodeURIComponent(aes.dynamicEncryption(`taobao::${user.open_uid}`));
} else if (+_.get(result, 'data.uid') > 0) {
... ... @@ -199,7 +206,7 @@ const login = {
res.cookie('third_backurl', '', {
domain: 'yohobuy.com'
});
return res.redirect(handleReferUrl(req.cookies.third_backurl ? req.cookies.third_backurl : homePage));
return res.redirect(handleReferUrl(referUrl.s ? referUrl.s : homePage));
});
}
} else {
... ... @@ -252,7 +259,7 @@ const bind = {
} else {
res.json({
code: 200,
message: `${info.type || ''} not found`
message: '绑定信息异常'
});
}
},
... ...
{
"name": "xianyu-ufo-app-web",
"version": "0.0.2-beta-31",
"version": "0.0.2-beta-33",
"private": true,
"description": "Xianyu Project With Express",
"repository": {
... ...