修正
This commit is contained in:
parent
db6d973592
commit
805dcebb81
@ -45,8 +45,7 @@ public class AppActivityController extends BaseController {
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('winery:activity:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(AppActivity appActivity)
|
||||
{
|
||||
public TableDataInfo list(AppActivity appActivity) {
|
||||
startPage();
|
||||
LambdaQueryWrapper<AppActivity> lqw = Wrappers.lambdaQuery(appActivity);
|
||||
if (StringUtils.isNotBlank(appActivity.getUrl())) {
|
||||
@ -119,12 +118,25 @@ public class AppActivityController extends BaseController {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询活动列表(开放)
|
||||
*/
|
||||
@GetMapping("/open/notice")
|
||||
public AjaxResult openNotice() {
|
||||
|
||||
|
||||
String notice =
|
||||
"手机尾号4707的用户购买了「山之语·赤霞珠干红葡萄酒」, " +
|
||||
"手机尾号5266的用户购买了「2021辛丑牛年纪念酒」" +
|
||||
"手机尾号3062的用户购买了「留世传奇红葡萄酒」";
|
||||
return AjaxResult.success(notice);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询活动列表(开放)
|
||||
*/
|
||||
@GetMapping("/open/list")
|
||||
public TableDataInfo openList(AppActivity appActivity)
|
||||
{
|
||||
public TableDataInfo openList(AppActivity appActivity) {
|
||||
startPage();
|
||||
LambdaQueryWrapper<AppActivity> lqw = Wrappers.lambdaQuery(appActivity);
|
||||
if (StringUtils.isNotBlank(appActivity.getUrl())) {
|
||||
|
@ -128,4 +128,12 @@ public class NewsContentController extends BaseController {
|
||||
public AjaxResult remove(@PathVariable String[] ids) {
|
||||
return toAjax(iNewsContentService.removeByIds(Arrays.asList(ids)) ? 1 : 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取新闻资讯详细信息
|
||||
*/
|
||||
@GetMapping(value = "/open/{id}")
|
||||
public AjaxResult getOpenInfo(@PathVariable("id") String id) {
|
||||
return AjaxResult.success(iNewsContentService.getById(id));
|
||||
}
|
||||
}
|
||||
|
366
mini-app/docs/用户协议.txt
Normal file
366
mini-app/docs/用户协议.txt
Normal file
File diff suppressed because one or more lines are too long
1610
mini-app/docs/隐私政策.txt
Normal file
1610
mini-app/docs/隐私政策.txt
Normal file
File diff suppressed because it is too large
Load Diff
@ -29,6 +29,18 @@ class MallApis {
|
||||
url: baseUrl + 'winery/activity/open/list'
|
||||
})
|
||||
}
|
||||
|
||||
getNotice() {
|
||||
return request.get({
|
||||
url: baseUrl + 'winery/activity/open/notice'
|
||||
})
|
||||
}
|
||||
|
||||
getNewsContent(id) {
|
||||
return request.get({
|
||||
url: baseUrl + 'news/news_content/open/' + id
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export default new MallApis()
|
||||
|
@ -109,6 +109,7 @@ pages: [
|
||||
'pages/mall/order/order-detail-list',
|
||||
'pages/mall/order/order-check',
|
||||
'pages/mall/shopping-car/shopping-car-list',
|
||||
'pages/news/news-detail',
|
||||
'pages/winery/winery-detail',
|
||||
'pages/winery/winery-list',
|
||||
'pages/webView/web'
|
||||
|
@ -88,6 +88,8 @@ class AppManager {
|
||||
|
||||
navigateTo(path) {
|
||||
console.log('path:', path)
|
||||
|
||||
|
||||
if (!store.state.user.token) {
|
||||
eventHub.$emit('onShowDialogUserInfo')
|
||||
return
|
||||
|
@ -5,9 +5,8 @@
|
||||
*/
|
||||
|
||||
// export const baseUrl = 'http://36.1.50.18:18989/'
|
||||
// export const baseUrl = 'http://127.0.0.1:18989/'
|
||||
export const baseUrl = 'https://mall.xiao4r.com/api/'
|
||||
|
||||
export const baseUrl = 'http://127.0.0.1:18989/'
|
||||
// export const baseUrl = 'https://mall.xiao4r.com/api/'
|
||||
|
||||
export const imgbaseUrl = 'https://www.xiao4r.com/xiao4rstatic/img/winery/'
|
||||
export const sysImgBaseUrl = 'https://winery-1257413599.cos.ap-beijing.myqcloud.com/'
|
||||
|
@ -109,7 +109,7 @@ module.exports.parseImage = parseImage;
|
||||
</van-row>
|
||||
|
||||
<van-notice-bar
|
||||
text="在代码阅读过程中人们说脏话的频率是衡量代码质量的唯一标准。"
|
||||
:text="notice"
|
||||
mode="link"
|
||||
background="#ddd"
|
||||
color="#333"
|
||||
@ -230,7 +230,8 @@ wepy.component({
|
||||
image: 'https://www.xiao4r.com/xiao4rstatic/img/doctor.png'
|
||||
}
|
||||
],
|
||||
records: []
|
||||
records: [],
|
||||
notice: ''
|
||||
|
||||
},
|
||||
|
||||
@ -253,7 +254,6 @@ wepy.component({
|
||||
appManager.navigateTo(navDefine.SHOPPING_CAR_LIST)
|
||||
},
|
||||
onWebItem(item) {
|
||||
|
||||
appManager.navWeb(item.url)
|
||||
}
|
||||
|
||||
@ -263,6 +263,10 @@ wepy.component({
|
||||
mallApis.getActivityList().then(r => {
|
||||
this.records = r.rows
|
||||
})
|
||||
|
||||
mallApis.getNotice().then(r => {
|
||||
this.notice = r.msg
|
||||
})
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
@ -35,7 +35,7 @@
|
||||
border="{{ false }}"
|
||||
use-button-slot
|
||||
>
|
||||
<van-button slot="button" size="small" plain type="info" open-type="getPhoneNumber"
|
||||
<van-button slot="button" size="small" plain type="info" color="#AC1630" open-type="getPhoneNumber"
|
||||
bind:getphonenumber="onGetMobile">授权
|
||||
</van-button>
|
||||
</van-field>
|
||||
@ -58,11 +58,14 @@
|
||||
<!-- </van-button>-->
|
||||
<!-- </van-field>-->
|
||||
|
||||
<view style="margin:10px;">
|
||||
<view style="margin:10px;display: flex;">
|
||||
<van-checkbox :value="isChecked" shape="square" bind:change="onChangeCheak" checked-color="#AC1630"
|
||||
style="font-size: 14px;color: #AC1630;">
|
||||
我同意<span style="color: cornflowerblue;">xxxxx </span>用户协议
|
||||
</van-checkbox>
|
||||
/>
|
||||
|
||||
<span style="font-size: 13px;color: #AC1630;margin-left: 5px;">我同意并遵守紫色名片
|
||||
<span style="color: cornflowerblue;" @tap="onTapPrivacy">《隐私政策》 </span>及
|
||||
<span style="color: cornflowerblue;" @tap="onTapAgreement">《用户条款》 </span>
|
||||
的全部内容</span>
|
||||
</view>
|
||||
|
||||
</van-dialog>
|
||||
@ -77,18 +80,18 @@ import { mapActions, mapState } from '@wepy/x'
|
||||
import eventHub from '../../common/eventHub'
|
||||
import appManager from '../../appManager'
|
||||
import userApis from '../../apis/userApis'
|
||||
import { newsDetailPage } from '../../store/constant/nav/pages'
|
||||
|
||||
wepy.component({
|
||||
store,
|
||||
props: {},
|
||||
hooks: {},
|
||||
|
||||
|
||||
data: {
|
||||
that: this,
|
||||
isShow: false,
|
||||
model: {},
|
||||
isChecked: false,
|
||||
isChecked: false
|
||||
},
|
||||
|
||||
computed: mapState(['user']),
|
||||
@ -107,7 +110,6 @@ wepy.component({
|
||||
this.setUserInfoAction(event.$wx.detail.userInfo)
|
||||
console.log('userInfo:', store.state.user.userInfo)
|
||||
|
||||
|
||||
if (!this.isChecked) {
|
||||
appManager.showToast('请确认xxxx协议.')
|
||||
return false
|
||||
@ -160,6 +162,16 @@ wepy.component({
|
||||
},
|
||||
onClose() {
|
||||
this.isShow = false
|
||||
},
|
||||
onTapAgreement() {
|
||||
wx.navigateTo({
|
||||
url: newsDetailPage + '?id=' + 'fb4109a4020b2a2a9d1172f66d043897'
|
||||
})
|
||||
},
|
||||
onTapPrivacy() {
|
||||
wx.navigateTo({
|
||||
url: newsDetailPage + '?id=' + 'a1e5ec18ae13036d14c94bf0e5d11756'
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
|
@ -21,7 +21,7 @@ module.exports.parseImage = parseImage;
|
||||
|
||||
<van-loading v-if="!goodsItem" style="margin-top: 20px;" />
|
||||
|
||||
<div v-else style="margin-bottom: 80px;">
|
||||
<div v-else style="margin-bottom: 80px; width: 100%;">
|
||||
|
||||
<swiper indicator-dots="true" autoplay="true" interval="3000" style="height: 750rpx;">
|
||||
<block v-for="(item,index) in goodsImages" wx:key="index">
|
||||
@ -33,7 +33,7 @@ module.exports.parseImage = parseImage;
|
||||
</block>
|
||||
</swiper>
|
||||
|
||||
<div style="padding: 10px;display:flex;flex-direction: column;">
|
||||
<div style="padding: 10px;display:flex;flex-direction: column;width: 100%;">
|
||||
<span style="color: #333; font-size: 16px;font-weight: bold;">{{goodsItem.goodsName}}</span>
|
||||
<span style="color: #999; font-size: 14px;margin-top: 3px;">{{goodsItem.goodsAlias}}</span>
|
||||
</div>
|
||||
|
137
mini-app/src/pages/news/news-detail.wpy
Normal file
137
mini-app/src/pages/news/news-detail.wpy
Normal file
@ -0,0 +1,137 @@
|
||||
<style lang="less">
|
||||
|
||||
.bg {
|
||||
z-index: -1;
|
||||
height: 100%;
|
||||
position: fixed;
|
||||
width: 200rpx;
|
||||
background-color: #AC1630;
|
||||
}
|
||||
|
||||
.winery-item {
|
||||
|
||||
width: 400rpx;
|
||||
height: 60px;
|
||||
margin-bottom: 20px;
|
||||
box-shadow: 4px 4px 10px #cccccc;
|
||||
border: #ffffff 1px solid;
|
||||
border-radius: 20px;
|
||||
background-color: white;
|
||||
padding: 15px 70rpx;
|
||||
|
||||
}
|
||||
|
||||
.winery-item-icon {
|
||||
position: absolute;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
background-color: white;
|
||||
box-shadow: 4px 4px 10px #cccccc;
|
||||
margin-top: 10px;
|
||||
margin-left: -40rpx;
|
||||
border: #ffffff 1px solid;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.winery-item-arrow {
|
||||
|
||||
position: absolute;
|
||||
width: 45px;
|
||||
height: 45px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-items: center;
|
||||
justify-content: center;
|
||||
background-color: white;
|
||||
box-shadow: 4px 4px 10px #cccccc;
|
||||
margin-top: 18.5px;
|
||||
margin-left: 500rpx;
|
||||
border: #ffffff 1px solid;
|
||||
border-radius: 50%;
|
||||
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
<wxs module="filters" lang="babel">
|
||||
const parseImage = (imageKey) => {
|
||||
return 'https://winery-1257413599.cos.ap-beijing.myqcloud.com/' + imageKey
|
||||
}
|
||||
module.exports.parseImage = parseImage;
|
||||
</wxs>
|
||||
<template>
|
||||
|
||||
|
||||
<nav-bar :title="newItem.newsTitle" />
|
||||
<div class="container">
|
||||
<van-loading v-if="!newItem" style="margin-top: 20px;" />
|
||||
|
||||
<div v-else style="margin-bottom: 80px;">
|
||||
<div style="margin: 10px 15px;display: flex;flex-direction: column;">
|
||||
|
||||
<div style="margin-top: 10px;width:100%;">
|
||||
<rich-text :nodes="newItem.newsBody" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import wepy from '@wepy/core'
|
||||
import store from '@/store'
|
||||
import { mapActions, mapState } from '@wepy/x'
|
||||
import defaultMix from '../../mixins/defaultMix'
|
||||
import merchanApis from '../../apis/merchanApis'
|
||||
import mallApis from '../../apis/mallApis'
|
||||
|
||||
wepy.page({
|
||||
store,
|
||||
hooks: {},
|
||||
|
||||
mixins: [defaultMix],
|
||||
data: {
|
||||
newItem: null,
|
||||
title: ''
|
||||
},
|
||||
|
||||
computed: {
|
||||
...mapState({
|
||||
'imageDefine': state => state.imageDefine
|
||||
})
|
||||
},
|
||||
|
||||
methods: {
|
||||
...mapActions([]),
|
||||
async init(id) {
|
||||
mallApis.getNewsContent(id).then(r => {
|
||||
this.newItem = r.data
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
onLoad(options) {
|
||||
console.log(options)
|
||||
if (options.id) {
|
||||
this.init(options.id)
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
</script>
|
||||
<config>
|
||||
{
|
||||
navigationBarTitleText: '',
|
||||
usingComponents: {
|
||||
|
||||
}
|
||||
}
|
||||
</config>
|
@ -69,9 +69,10 @@ module.exports.parseImage = parseImage;
|
||||
|
||||
|
||||
<nav-bar title="酒庄信息" />
|
||||
<div class="container">
|
||||
<van-loading v-if="!wineryItem" style="margin-top: 20px;" />
|
||||
<div v-else style="margin-bottom: 80px;">
|
||||
<image :src="filters.parseImage(wineryItem.avatar)" style="width: 100%;height: 750rpx;" mode="aspectFit" />
|
||||
<image :src="filters.parseImage(wineryItem.topImage)" style="width: 100%;height: 750rpx;" mode="aspectFit" />
|
||||
<div style="margin: 10px 15px;display: flex;flex-direction: column;">
|
||||
<div style="font-size: 20px;font-weight: bold;">{{wineryItem.mchName}}</div>
|
||||
<div style="font-size: 14px;color: #999999;">{{wineryItem.subtitle}}</div>
|
||||
@ -83,6 +84,7 @@ module.exports.parseImage = parseImage;
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
|
@ -130,7 +130,7 @@ module.exports.parseAwards = parseAwards;
|
||||
</div>
|
||||
|
||||
<div class="winery-item">
|
||||
<van-image :src="filters.parseImage(item.avatar)" width="100%" height="128px" />
|
||||
<van-image :src="filters.parseImage(item.faceImage)" width="100%" height="128px" />
|
||||
<div style="margin-left: 20px;margin-top:35px;display: flex;align-items: center;">
|
||||
<span style="font-size: 20px;font-weight: bold;width: 120px;">{{item.mchName}}</span>
|
||||
<span style="color: #999;font-size: 12px;width: 200px;margin-left: 8px;">{{item.subtitle}}</span>
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { imgbaseUrl } from '../../../baseDefine'
|
||||
import { orderDetailListPage, orderListPage, userAddressListPage } from './pages'
|
||||
import { newsDetailPage, orderDetailListPage, orderListPage, userAddressListPage } from './pages'
|
||||
|
||||
|
||||
export const myMenuList1 = [
|
||||
@ -29,9 +29,9 @@ export const myMenuList2 = [
|
||||
icon: imgbaseUrl + '/my/tool_2.png',
|
||||
path: orderDetailListPage
|
||||
}, {
|
||||
name: '条款政策',
|
||||
name: '隐私政策',
|
||||
icon: imgbaseUrl + '/my/tool_3.png',
|
||||
path: ''
|
||||
path: newsDetailPage + '?id=' + 'a1e5ec18ae13036d14c94bf0e5d11756'
|
||||
}
|
||||
]
|
||||
|
||||
|
@ -4,6 +4,7 @@ export const orderDetailListPage = '/pages/mall/order/order-detail-list'
|
||||
export const orderCheck = '/pages/mall/order/order-check'
|
||||
export const userAddressListPage = '/pages/mall/user/user-address-list'
|
||||
export const goodsDetailPage = '/pages/mall/goods/goods-detail'
|
||||
export const newsDetailPage = '/pages/news/news-detail'
|
||||
export const wineryListPage = '/pages/winery/winery-list'
|
||||
export const wineryDetailPage = '/pages/winery/winery-detail'
|
||||
export const webViewPage = '/pages/webView/web'
|
||||
|
@ -117,6 +117,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
|
||||
.antMatchers("/winery/mini/user/**").permitAll()
|
||||
.antMatchers("/winery/order/pay/**").permitAll()
|
||||
.antMatchers("/winery/activity/open/**").permitAll()
|
||||
.antMatchers("/news/news_content/open/**").permitAll()
|
||||
// 除上面外的所有请求全部需要鉴权认证
|
||||
.anyRequest().authenticated()
|
||||
.and()
|
||||
|
Loading…
x
Reference in New Issue
Block a user