完成分享

This commit is contained in:
czm 2022-06-06 14:36:39 +08:00
parent 5ae2eb3541
commit c00ab572fb
14 changed files with 61 additions and 82 deletions

View File

@ -2,11 +2,9 @@ import { FC } from 'react'
import ContextBlueTooth from "@/use/contextBlueTooth" import ContextBlueTooth from "@/use/contextBlueTooth"
import { Provider } from 'react-redux' import { Provider } from 'react-redux'
import configStore from './store' import configStore from './store'
import {BASE_URL, WX_APPID} from '@/common/constant'
import './app.scss' import './app.scss'
import Taro, { useDidShow, useRouter, useShareAppMessage } from '@tarojs/taro' import Taro, { useDidShow, useRouter, useShareAppMessage } from '@tarojs/taro'
import { useSelector } from './reducers/hooks' import { analysisShortCodeApi } from './common/shortCode'
import { AnalysisShortCodeApi } from './api/share'
const store = configStore() const store = configStore()
const App:FC = (params) => { const App:FC = (params) => {
@ -16,40 +14,36 @@ const App:FC = (params) => {
}) })
useDidShow(() => { useDidShow(() => {
console.log('paramsparamsparamsparams:',params) console.log('params:',params)
}) })
const res = useRouter()
const page = Taro.getCurrentInstance().page const page = Taro.getCurrentInstance().page
// console.log('page::::',page)
//解析短码参数该请求不能校验token
// const {fetchData: fetchDataAnalysisShortCode} = AnalysisShortCodeApi()
// const analysisShortCode = async () => {
// let res = await fetchDataAnalysisShortCode({md5_key: page?.options?.share})
// // setParams({id: res.data.id, share: res.data})
// console.log('res::::&&', res.data)
// }
const sortCode = JSON.parse(Taro.getStorageSync('sort_code'))
console.log('res:::', page) console.log('res:::', page)
if(page && page.onShareAppMessage) { if(page && page.onShareAppMessage) {
//当有分享参数时,绑定上下级
if(page.options?.share) { if(page.options?.share) {
analysisShortCodeApi(page.options.share)
} }
page.onShareAppMessage = (res) => {
page.onShareAppMessage = () => { let path = ''
let title = ''
let imageUrl = ''
let sortCode = Taro.getStorageSync('sort_code')?JSON.parse(Taro.getStorageSync('sort_code')):''
if(res.from === 'button') {
path = `/pages/details/index?share=${sortCode.shareShortDetail.code}`
title = sortCode.shareShortDetail.title
} else {
path = `/pages/index/index?share=${sortCode.shareShortPage.code}`
title = sortCode.shareShortPage.title
}
return { return {
title: '电子商城', title,
path: `/pages/index/index?share=${sortCode.shareShortPage}`, path,
imageUrl:'', imageUrl,
} }
} }
} }
return ( return (
<ContextBlueTooth> <ContextBlueTooth>
<Provider store={store}> <Provider store={store}>

View File

@ -1,11 +1,13 @@
import Taro from "@tarojs/taro"
import { BASE_URL } from "../constant"
//解析短码 //解析短码(主要用于右上角按钮分享)
export const analysisShortCodeApi = () => { export const analysisShortCodeApi = (val) => {
//解析短码 //解析短码
Taro.request({ Taro.request({
url:BASE_URL+'/v1/mall/shortCode', url:BASE_URL+'/v1/mall/shortCode',
method:"GET", method:"GET",
data:{md5_key: page.options?.share}, data:{md5_key: val},
success:(res) => { success:(res) => {
if(res.data.code == 0) { if(res.data.code == 0) {
//绑定上下级 //绑定上下级

View File

@ -11,21 +11,21 @@ import { useEffect, useMemo, useRef, useState } from 'react';
import {formatHashTag, formatImgUrl} from '@/common/fotmat' import {formatHashTag, formatImgUrl} from '@/common/fotmat'
import {GetProductDetailApi} from '@/api/material' import {GetProductDetailApi} from '@/api/material'
import useLogin from '@/use/useLogin'; import useLogin from '@/use/useLogin';
import { useSelector } from '@/reducers/hooks'; import { AnalysisShortCodeApi, BindShortCodeApi, GetShortCodeApi } from '@/api/share';
import { AnalysisShortCodeApi, GetShortCodeApi } from '@/api/share';
import { SHARE_SCENE } from '@/common/enum'; import { SHARE_SCENE } from '@/common/enum';
import useUserInfo from '@/use/useUserInfo';
type item = {title:string, img:string, url:string, id:number} type item = {title:string, img:string, url:string, id:number}
type params = { type Params = {
list?: item[] list?: item[]
swiperOnClick?: (val: item) => void, swiperOnClick?: (val: item) => void,
style?: Object style?: Object
} }
export default (props:params) => { export default (props:Params) => {
const {checkLogin, getPhoneNumber, userInfo} = useLogin() const {checkLogin, getPhoneNumber, userInfo} = useLogin()
//获取参数 //获取参数(有两种参数1.商品id, 2.页面分享)
const router = useRouter() const router = useRouter()
const [params, setParams] = useState({id: '', share: null}) const [params, setParams] = useState({id: '', share: null})
@ -38,29 +38,24 @@ export default (props:params) => {
} }
} }
//解析短码参数该请求不能校验token //解析短码参数
const {fetchData: fetchDataAnalysisShortCode} = AnalysisShortCodeApi() const {fetchData: fetchDataAnalysisShortCode} = AnalysisShortCodeApi()
const analysisShortCode = async () => { const analysisShortCode = async () => {
let res = await fetchDataAnalysisShortCode({md5_key: router.params.share}) let res = await fetchDataAnalysisShortCode({md5_key: router.params.share})
setParams({id: res.data.id, share: res.data}) setParams({id: res.data.product_id, share: res.data})
console.log('res::::&&', res.data)
} }
useDidShow(() => { useDidShow(() => {
checkLogin()
judgeParam() judgeParam()
}) })
useEffect(() => { useEffect(() => {
//先确保能拿到订单id才做其他请求
if(params.id) { if(params.id) {
checkLogin()
getShortCode()
getProductDetail() getProductDetail()
} }
}, [params]) }, [params])
//获取数据 //获取数据
const [productInfo, setProductInfo] = useState<any>({}) const [productInfo, setProductInfo] = useState<any>({})
const {fetchData} = GetProductDetailApi() const {fetchData} = GetProductDetailApi()
@ -70,6 +65,11 @@ export default (props:params) => {
Taro.stopPullDownRefresh() Taro.stopPullDownRefresh()
} }
useEffect(() => {
if(productInfo.code) getShortCode()
}, [productInfo])
//面料名称 //面料名称
const productName = useMemo(() => { const productName = useMemo(() => {
return formatHashTag(productInfo.code, productInfo.name) return formatHashTag(productInfo.code, productInfo.name)
@ -103,37 +103,14 @@ export default (props:params) => {
}) })
} }
const {setSortCode, userInfo : userObj } = useUserInfo()
const userObj = useSelector(state => state.userInfo) //详情页获取分享短码
//获取分享转码
const {ShareDetail} = SHARE_SCENE const {ShareDetail} = SHARE_SCENE
const {fetchData: fetchDataShortCode} = GetShortCodeApi() const {fetchData: fetchDataShortCode} = GetShortCodeApi()
const sortCode = useRef('')
const getShortCode = async () => { const getShortCode = async () => {
const {data: resDetail} = await fetchDataShortCode({"share_user_id": userObj.adminUserInfo.user_id, type:ShareDetail.value, id: params.id}) const {data: resDetail} = await fetchDataShortCode({"share_user_id": userObj.adminUserInfo.user_id, type:ShareDetail.value, product_id: parseInt(params.id)})
sortCode.current = resDetail.md5_key setSortCode({... userObj.sort_code, shareShortDetail: {title: productName as string, code: resDetail.md5_key, img:''}})
} }
//转发分享
useShareAppMessage(res => {
let path = ''
let title = ''
let imageUrl = ''
if (res.from === 'button') {
path = `/pages/details/index?share=${sortCode.current}`
title = productName as string
// imageUrl =
} else {
path = `/pages/index/index?share=${sortCode.current}`
title = '陆盈电子商城'
}
return {
title,
path,
imageUrl,
}
})
//开始下单 //开始下单
const placeOrder = async (e:any) => { const placeOrder = async (e:any) => {

View File

@ -1,5 +1,6 @@
export default { export default {
navigationBarTitleText: '修改地址', navigationBarTitleText: '修改地址',
enablePullDownRefresh: true, enablePullDownRefresh: true,
backgroundTextStyle: 'dark' backgroundTextStyle: 'dark',
enableShareAppMessage: true,
} }

View File

@ -8,10 +8,9 @@ import ShopCart from '@/components/shopCart'
import { goLink } from '@/common/common' import { goLink } from '@/common/common'
import styles from './index.module.scss' import styles from './index.module.scss'
import React, { useEffect, useMemo, useRef, useState } from 'react' import React, { useEffect, useMemo, useRef, useState } from 'react'
import Taro, { Events, useDidShow, usePullDownRefresh, useRouter, useShareAppMessage } from '@tarojs/taro' import Taro, { Events, useDidShow, usePullDownRefresh} from '@tarojs/taro'
import {GetProductKindListApi, GetProductListApi} from '@/api/material' import {GetProductKindListApi, GetProductListApi} from '@/api/material'
import useLogin from '@/use/useLogin' import useLogin from '@/use/useLogin'
import LoadingCard from '@/components/loadingCard'
import { dataLoadingStatus } from '@/common/util' import { dataLoadingStatus } from '@/common/util'
export default () => { export default () => {

View File

@ -1,3 +1,4 @@
export default { export default {
navigationBarTitleText: '确认订单' navigationBarTitleText: '确认订单',
enableShareAppMessage: true,
} }

View File

@ -1,5 +1,6 @@
export default { export default {
navigationBarTitleText: '订单详情', navigationBarTitleText: '订单详情',
enablePullDownRefresh: true, enablePullDownRefresh: true,
backgroundTextStyle: 'dark' backgroundTextStyle: 'dark',
enableShareAppMessage: true,
} }

View File

@ -1,3 +1,4 @@
export default { export default {
navigationBarTitleText: '订单列表', navigationBarTitleText: '订单列表',
enableShareAppMessage: true,
} }

View File

@ -1,3 +1,4 @@
export default { export default {
navigationBarTitleText: '搜索' navigationBarTitleText: '搜索',
enableShareAppMessage: true,
} }

View File

@ -1,3 +1,4 @@
export default { export default {
navigationBarTitleText: '搜索', navigationBarTitleText: '搜索',
enableShareAppMessage: true,
} }

View File

@ -8,7 +8,7 @@ import { useEffect, useRef, useState } from 'react';
import {GetHotSearchApi, GetSearchHistoryApi, AddSearchHistoryApi} from "@/api/search" import {GetHotSearchApi, GetSearchHistoryApi, AddSearchHistoryApi} from "@/api/search"
import { SCENE } from '@/common/constant'; import { SCENE } from '@/common/constant';
import useLogin from '@/use/useLogin'; import useLogin from '@/use/useLogin';
import Taro, { useDidShow } from '@tarojs/taro'; import Taro, { useDidShow, useShareAppMessage } from '@tarojs/taro';
type searchDataParam = {'search_key':''} type searchDataParam = {'search_key':''}
export default () => { export default () => {

View File

@ -1,4 +1,5 @@
export default { export default {
navigationBarTitleText: '我的', navigationBarTitleText: '我的',
navigationStyle: 'custom' navigationStyle: 'custom',
enableShareAppMessage: true,
} }

View File

@ -42,8 +42,8 @@ export type UserAdminParam = {
} }
export type SortCodeParam = { export type SortCodeParam = {
shareShortDetail?: string, //详情分享页面短码 shareShortDetail?: {title:string, code: string, img: string}, //详情分享页面短码
shareShortPage?: string, //右上角分享页面短码 shareShortPage?: {title:string, code: string, img: string}, //右上角分享页面短码
} }
export type DataParam = { export type DataParam = {

View File

@ -8,6 +8,8 @@ import { GetShortCodeApi } from "@/api/share"
export default () => { export default () => {
const {setUserInfo, setAdminUserInfo, setSortCode, userInfo} = useUserInfo() const {setUserInfo, setAdminUserInfo, setSortCode, userInfo} = useUserInfo()
console.log('userInfo:::', userInfo)
//登录请求 (调用这个就不能再useHttp中使用当前这个hook, 否则会死循环内存溢出) //登录请求 (调用这个就不能再useHttp中使用当前这个hook, 否则会死循环内存溢出)
// const {fetchData} = LoginApi() // const {fetchData} = LoginApi()
@ -109,16 +111,14 @@ export default () => {
}) })
} }
//获取分享转码 //获取分享码(右上角分享码)
const {SharePage} = SHARE_SCENE const {SharePage} = SHARE_SCENE
const {fetchData: fetchDataShortCode} = GetShortCodeApi() const {fetchData: fetchDataShortCode} = GetShortCodeApi()
const getShortCode = async (user_id) => { const getShortCode = async (user_id) => {
const {data: resPage} = await fetchDataShortCode({"share_user_id": user_id, type:SharePage.value}) const {data: resPage} = await fetchDataShortCode({"share_user_id": user_id, type:SharePage.value})
setSortCode({shareShortDetail: '', shareShortPage: resPage.md5_key}) setSortCode({...userInfo.sort_code, shareShortPage: {title: '陆盈电子商城', code: resPage.md5_key, img:''}})
} }
//
return { return {
checkLogin, checkLogin,
wxLogin, wxLogin,