| @@ -17,6 +17,8 @@ import DeviceInfo from "react-native-device-info"; | |||
| import * as Animatable from 'react-native-animatable'; | |||
| contentItemDefault = { | |||
| type:0, | |||
| subType:0, | |||
| qrcode:[], | |||
| target:{ | |||
| coverImg:'', | |||
| @@ -36,6 +38,14 @@ baseInfoDefault = { | |||
| curAdIndex = 0; | |||
| testMac = '11:AA:33:BB:44' | |||
| errorMsg = { | |||
| ERR_MAC_GET:'MAC地址获取错误', | |||
| ERR_DATA_GET:'数据获取错误' | |||
| } | |||
| export default class MyPage extends Component { | |||
| constructor(props) { | |||
| @@ -47,20 +57,18 @@ export default class MyPage extends Component { | |||
| contentItem1:null, | |||
| contentItem2:null, | |||
| contentDisplayStatus:true, | |||
| contentDisplayStatus:false, | |||
| syncMessage: "INIT" , | |||
| errorMessage: 'Loading...', | |||
| progress: { | |||
| receivedBytes:0, | |||
| totalBytes:0 | |||
| }, | |||
| macAddress: "NULL", | |||
| text:'', | |||
| macAddress: '', | |||
| versionInfo:'UNKNOWN' | |||
| }; | |||
| DeviceInfo.getMACAddress().then(mac=>{this.setState({macAddress:mac})}) | |||
| DeviceInfo.getIPAddress().then(mac=>{this.setState({macAddress:mac})}) | |||
| } | |||
| // 监听更新状态 | |||
| @@ -118,22 +126,58 @@ codePushStatusDidChange(syncStatus) { | |||
| curAdIndex+=3 | |||
| } | |||
| hbRequest() { | |||
| HttpUtils.post('https://mall.youlane.cn/api/wxDeviceScreenAd/heartbeat?deviceId=' | |||
| +encodeURIComponent(this.state.macAddress), | |||
| {version:this.state.versionInfo}) | |||
| .then(result => { | |||
| }) | |||
| .catch(error => { | |||
| }) | |||
| } | |||
| getAdDataList() { | |||
| HttpUtils.get('https://mall.youlane.cn/api/wxDeviceScreenAd/list?deviceId=11%3AAA%3A33%3ABB%3A44&pageNum=1&pageSize=30') | |||
| HttpUtils.get('https://mall.youlane.cn/api/wxDeviceScreenAd/list?deviceId='+encodeURIComponent(this.state.macAddress)+'&pageNum=1&pageSize=1000') | |||
| .then(result => { | |||
| this.setState({adDataList : result.data.list}); | |||
| this.updateContent(); | |||
| }) | |||
| .catch(error => console.error(error)) | |||
| if (result.code != 200) { | |||
| this.setState({errorMessage : result.message}); | |||
| this.setState({contentDisplayStatus: false}) | |||
| } | |||
| if (result.data.list) { | |||
| this.setState({adDataList : result.data.list}); | |||
| this.updateContent(); | |||
| } else { | |||
| this.setState({errorMessage : errorMsg.ERR_DATA_GET}); | |||
| this.setState({contentDisplayStatus: false}) | |||
| } | |||
| }) | |||
| .catch(error => { | |||
| console.error(error) | |||
| this.setState({errorMessage : error}); | |||
| this.setState({contentDisplayStatus: false}) | |||
| }) | |||
| } | |||
| getBaseInfo() { | |||
| HttpUtils.get('https://mall.youlane.cn/api/wxDeviceScreenAd/info?deviceId=11%3AAA%3A33%3ABB%3A44') | |||
| HttpUtils.get('https://mall.youlane.cn/api/wxDeviceScreenAd/info?deviceId='+encodeURIComponent(this.state.macAddress)) | |||
| .then(result => { | |||
| this.setState({ | |||
| baseInfo:result.data}); | |||
| if (result.code != 200) { | |||
| this.setState({errorMessage : result.message}); | |||
| this.setState({contentDisplayStatus: false}) | |||
| } | |||
| if (result.data) { | |||
| this.setState({baseInfo:result.data}); | |||
| } | |||
| else { | |||
| this.setState({errorMessage : errorMsg.ERR_DATA_GET}); | |||
| this.setState({contentDisplayStatus: false}) | |||
| } | |||
| }) | |||
| .catch(error => { | |||
| console.error(error) | |||
| this.setState({errorMessage : error}); | |||
| this.setState({contentDisplayStatus: false}) | |||
| }) | |||
| .catch(error => console.error(error)) | |||
| } | |||
| @@ -152,32 +196,56 @@ componentDidMount() { | |||
| this.setState({ versionInfo: "Unknown"}); | |||
| }); | |||
| DeviceInfo.getMACAddress().then(mac=>{ | |||
| if (mac=='') { | |||
| this.startAd(testMac) | |||
| } else { | |||
| this.startAd(mac) | |||
| } | |||
| this.setState({ contentDisplayStatus: true}) | |||
| }).catch(e => { | |||
| this.setState({errorMessage : errorMsg.ERR_MAC_GET}); | |||
| }) | |||
| } | |||
| startAd(mac) { | |||
| this.getBaseInfo() | |||
| this.getAdDataList() | |||
| setInterval( | |||
| ()=>{ | |||
| this.setState({ contentDisplayStatus: false}) | |||
| this.updateContent(); | |||
| this.setState({ contentDisplayStatus: true}) | |||
| }, | |||
| 1000 * 10, //10秒更新一下页面 | |||
| 1000*10, //10秒更新一下页面 | |||
| ); | |||
| setInterval( | |||
| ()=>{ | |||
| this.setState({ contentDisplayStatus: false}) | |||
| this.updateContent(); | |||
| this.getAdDataList() | |||
| this.setState({ contentDisplayStatus: true}) | |||
| }, | |||
| 1000*60*60, //1小时一次 | |||
| ); | |||
| setInterval( | |||
| ()=>{ | |||
| this.hbRequest() | |||
| }, | |||
| 1000*60*5, //5分钟一次 | |||
| ); | |||
| } | |||
| getContentViewItemUplayer(contentItem) { | |||
| if (contentItem.target.type == 8) | |||
| return (<Image source={require('./image/discount.png')} resizeMode='center' style={styles.contentItemUpLayer} /> ) | |||
| else if (contentItem.target.type == 9) | |||
| return (<Image source={require('./image/groupbuy.png')} resizeMode='center' style={styles.contentItemUpLayer} /> ) | |||
| if (contentItem.type == 0) { | |||
| if (contentItem.subType == 2) | |||
| return (<Image source={require('./image/groupbuy.png')} resizeMode='center' style={styles.contentItemUpLayer} /> ) | |||
| if (contentItem.subType == 6) | |||
| return (<Image source={require('./image/discount.png')} resizeMode='center' style={styles.contentItemUpLayer} /> ) | |||
| if (contentItem.subType == 7) | |||
| return (<Image source={require('./image/groupbuy.png')} resizeMode='center' style={styles.contentItemUpLayer} /> ) | |||
| } | |||
| } | |||
| getContentViewItem(contentItem, annomation) { | |||
| @@ -186,6 +254,7 @@ getContentViewItem(contentItem, annomation) { | |||
| <View style={styles.contentItem}> | |||
| </View> | |||
| ) | |||
| actionText = '扫码领取'; | |||
| if (contentItem.target.type == 8) | |||
| @@ -244,7 +313,9 @@ getContentView() { | |||
| {this.getContentViewItem(this.state.contentItem2,"slideInRight")} | |||
| </View>) | |||
| }else{ | |||
| return (<View style={styles.content}> | |||
| return ( | |||
| <View style={styles.content}> | |||
| <Text style={styles.updatePage}>{this.state.errorMessage}</Text> | |||
| </View>) | |||
| } | |||
| } | |||
| @@ -255,13 +326,11 @@ render() { | |||
| if (this.state.progress.totalBytes > 0) | |||
| return ( | |||
| <Text style={styles.updatePage}>{this.state.syncMessage}{'\n'} | |||
| {this.state.progress.receivedBytes} of {this.state.progress.totalBytes} bytes received{'\n'} | |||
| {this.state.text} | |||
| {this.state.progress.receivedBytes} of {this.state.progress.totalBytes} bytes received{'\n'} | |||
| </Text> | |||
| ); | |||
| return ( | |||
| <Text style={styles.updatePage}>{this.state.syncMessage}{'\n'} | |||
| {this.state.text} | |||
| <Text style={styles.updatePage}>{this.state.syncMessage} | |||
| </Text> | |||
| ); | |||
| } | |||
| @@ -309,15 +378,13 @@ render() { | |||
| flex: 2, | |||
| width:'100%', | |||
| height:'100%', | |||
| backgroundColor:'yellow', | |||
| backgroundColor:'transparent', | |||
| textAlign :'center', | |||
| textAlignVertical:'center', | |||
| fontSize: 24, | |||
| color: 'green' | |||
| color: 'darkblue' | |||
| }, | |||
| //layer background | |||
| background:{ | |||
| flex: 1, | |||
| @@ -390,7 +457,7 @@ render() { | |||
| //layer bottom | |||
| bottomLogoBackground: { | |||
| flex: 3, | |||
| borderRadius:10, | |||
| borderRadius:6, | |||
| marginTop: 10, | |||
| marginBottom: 10, | |||
| backgroundColor:'white' | |||
| @@ -486,7 +553,7 @@ render() { | |||
| contentItemUpLayer:{ | |||
| width:80, | |||
| height:60, | |||
| height:58, | |||
| position:'absolute', | |||
| backgroundColor:'transparent' | |||
| }, | |||
| @@ -553,6 +620,7 @@ render() { | |||
| fontSize: 10, | |||
| fontWeight : 'bold' | |||
| }, | |||
| contentItemBottomPlacehold:{ | |||
| flex: 6, | |||
| paddingLeft: 10, | |||
| @@ -561,6 +629,7 @@ render() { | |||
| height:'100%', | |||
| backgroundColor:'transparent', | |||
| }, | |||
| contentItemBottomAction:{ | |||
| flex: 5, | |||
| width:'100%', | |||
| @@ -593,6 +662,7 @@ render() { | |||
| fontSize: 10, | |||
| color : 'gray' | |||
| }, | |||
| contentItemTopDetailPrice:{ | |||
| flex: 2, | |||
| width:'100%', | |||
| @@ -608,6 +678,7 @@ render() { | |||
| flexDirection: 'row', | |||
| backgroundColor:'transparent', | |||
| }, | |||
| contentItemTopDetailCurPriceStr:{ | |||
| backgroundColor:'transparent', | |||
| textAlign :'left', | |||