Browse Source

hotfix:新增领取画意值签到、看广告

feature-1.1-dev
Penny 3 years ago
parent
commit
4471e80edd
  1. 28
      api/paint.js
  2. 15
      api/userInfo.js
  3. 14
      pages.json
  4. 21
      pages/creator/imgDetail.vue
  5. 297
      pages/userInfo/goldNum/goldNum.vue
  6. 142
      pages/userInfo/goldNum/goldNumLog.vue
  7. 13
      pages/userInfo/userInfo.vue
  8. 14
      pages/userInfo/vip/vip.vue

28
api/paint.js

@ -97,4 +97,32 @@ export function queryGoldLogPage(data) {
})
}
//会员/用户签到获取画意值
export function signGetGold(data) {
return request({
url: `${serviceTitle}${prefix}/signGetGold`,
method: 'post',
data
})
}
//会员/用户看广告获取画意值
export function watchAdGetGold(data) {
return request({
url: `${serviceTitle}${prefix}/watchAdGetGold`,
method: 'post',
data
})
}
// 检查某平台用户当日看广告获取绘画次数是否超标
export function checkUserCanGetGold(data, headers) {
return request({
url: `${serviceTitle}${prefix}/checkUserCanGetGold`,
method: 'post',
data,
//headers: headers
})
}

15
api/userInfo.js

@ -41,10 +41,19 @@ export function unifiedOrder(data) {
})
}
//获取当日下载/绘画奖励剩余次数
export function getRestNum(data) {
//获取当日下载剩余次数
export function getRestDownloadNum(data) {
return request({
url: `${serviceTitle}${prefix}/getRestNum`,
url: `${serviceTitle}${prefix}/getRestDownloadNum`,
method: 'post',
data
})
}
//获取当日绘画奖励剩余次数
export function getRestRewardNum(data) {
return request({
url: `${serviceTitle}${prefix}/getRestRewardNum`,
method: 'post',
data
})

14
pages.json

@ -143,6 +143,20 @@
}
}, {
"path": "pages/userInfo/goldNum/goldNumLog",
"style": {
"navigationBarTitleText": "画意值记录",
"enablePullDownRefresh": false
}
},
{
"path": "pages/userInfo/goldNum/goldNum",
"style": {
"navigationBarTitleText": "领取画意值",
"enablePullDownRefresh": false
}
},
{
"path": "pages/creator/banner",
"style": {
"navigationBarTitleText": "",

21
pages/creator/imgDetail.vue

@ -57,7 +57,7 @@ var videoAd = null;
} from '@/api/creator.js'
import {loginTiktok} from '@/api/auth.js'
import {checkVip} from "@/api/paint";
import {getRestNum} from "@/api/userInfo.js";
import {getRestDownloadNum} from "@/api/userInfo.js";
export default {
data() {
return {
@ -142,7 +142,7 @@ var videoAd = null;
//广
that.vipSaveImg(url);
} else {
//获取可下载图片次数 await this.getRestNum("0");
//获取可下载图片次数 await this.getRestDownloadNum();
//广广
that.isShowDownLoadBox();
}
@ -170,29 +170,22 @@ var videoAd = null;
}
},
///
async getRestNum(adType) {
//
async getRestDownloadNum() {
const params = {
userId: this.userInfo.id,
appType: '0',
platform: '0' ,//0
adType: adType
}
const res = await getRestNum(params);
const res = await getRestDownloadNum(params);
if (res.data.code === 200) {
console.log("当日非会员用户可下载/奖励结果为", res.data.data)
if(adType === '0'){
console.log("当日非会员用户可下载结果为", res.data.data)
//
this.canDownloadNum = res.data.data
console.log('this.canDownloadNum',this.canDownloadNum)
}else{
//
this.canRewardNum = res.data.data
console.log('this.canRewardNum',this.canRewardNum)
}
} else {
uni.showToast({
title: '获取下载/绘画奖励剩余次数失败!',
title: '获取下载剩余次数失败!',
icon: 'none'
})
}

297
pages/userInfo/goldNum/goldNum.vue

@ -0,0 +1,297 @@
<template>
<view class="container">
<view class="list-menu">
<view class="list-menu-item" @click="$noMultipleClicks(signGetGold)">
<uni-icons class="list-menu-icon" custom-prefix="iconfont" :type="clearIcon" size="20" :color="primaryColor"></uni-icons>
<view class="text">签到</view>
<uni-icons class="list-menu-genduo" custom-prefix="iconfont" type="icon-gengduo"></uni-icons>
</view>
<view class="list-menu-item" @click="clickWatchAd">
<uni-icons class="list-menu-icon" custom-prefix="iconfont" :type="logOutIcon" size="20" :color="primaryColor"></uni-icons>
<view class="text">观看广告</view>
<uni-icons class="list-menu-genduo" custom-prefix="iconfont" type="icon-gengduo"></uni-icons>
</view>
</view>
</view>
</template>
<script>
var videoAd = null;
import { signGetGold,watchAdGetGold,checkUserCanGetGold} from "@/api/paint.js";
import {getRestRewardNum} from "@/api/userInfo.js";
export default {
data() {
return {
userInfo: {},
noClick:true, //
isplayOver: false,
isWatch: false,
canWatch: false, //false
canRewardNum: 0,
adList:['0qfnoa4053uwkefbas','2v63zq5hvfclpxmurl','d4ltbnxa23zp2hhqwe'] //广
};
},
onShow() {
this.userInfo = uni.getStorageSync('userInfo')
this.getRestRewardNum();
},
onHide() {
console.log('进入onHide')
//广
this.isplayOver = false;
},
onLoad() {
this.isplayOver = false;
//广
let num = Math.floor(Math.random() * this.adList.length + 1)-1;
console.log('随机激励视频id为:',this.adList[num])
this.loadAdvertise(this.adList[num]);
},
methods: {
//广
async checkUserCanGetGold() {
const params = {
userId: this.userInfo.id,
appType: '0',
platform: '1' ,//1
}
const res = await checkUserCanGetGold(params);
if (res.data.code === 200) {
console.log("当日非会员用户是否可获取奖励结果为", res.data.data)
this.canWatch = res.data.data;
} else {
uni.showToast({
title: '检查获取状态失败!',
icon: 'none'
})
}
},
async clickWatchAd() {
// 1广
await this.checkUserCanGetGold();
this.watchAd();
},
//广
watchAd() {
let that = this;
// false
if (that.canWatch !== true) {
uni.showModal({
title: '观看一段广告获取画意值',
content: '今日还可观看'+ that.canRewardNum + '次',
success(res) {
if (res.confirm) {
uni.showLoading({
title: '加载中',
success() {
//
that.isWatch = true
//console.log('res123',123)
//广
that.showAdvertise();
}
});
}
}
});
} else {
uni.showModal({
content: '今日观看任务已完成,请明日再来!',
showCancel: false
});
}
},
//广
loadAdvertise(adId){
// 广
var that = this
// onLoad广
if (tt.createRewardedVideoAd) {
videoAd = tt.createRewardedVideoAd({
adUnitId: adId
});
//BUG
try{
if (videoAd.closeHandler) {
videoAd.offClose(videoAd.closeHandler);
console.log("videoAd.offClose卸载成功");
}
}catch(e){
console.log("videoAd.offClose 卸载失败");
console.error(e);
}
videoAd.onLoad(() => {
console.log('激励视频广告'+adId+'加载成功')
})
videoAd.onError((err) => {
that.err()
})
videoAd.closeHandler = (res) =>{
if (res && res.isEnded || res === undefined) {
//
that.isplayOver = true;
//console.log('广',that.isplayOver)
that.watchAdGetGold();
}else{
that.isplayOver = false;
uni.showToast({
title: '您还没有看完视频,无法下载图片',
icon: 'none'
})
}
}
videoAd.onClose(videoAd.closeHandler);
}
},
//广
showAdvertise(url){
uni.hideLoading();
//let videoAd = this.videoAd
this.downloadUrl = url;
//console.log('广url',url);
//console.log('this.downloadUrl广',this.downloadUrl);
videoAd.show().catch(() => {
//
videoAd.load()
.then(() => videoAd.show())
.catch(err => {
uni.showModal({
title: '画意值领取失败',
content: '请稍后重试',
showCancel: false,
complete: function() {
this.isplayOver = false;
}
})
})
})
},
//
async signGetGold() {
let that = this;
const data = {
userId: that.userInfo.id,
source: 1, //1
appType: 0
}
const res = await signGetGold(data);
console.log('签到结果===', res);
if (res.data.code === 200) {
return uni.showToast({
title: "签到成功!",
icon: 'none'
});
}else {
uni.showModal({
content: res.data.msg,
showCancel: false
});
}
},
//广
async watchAdGetGold() {
let that = this;
const data = {
userId: that.userInfo.id,
source: 1, //1
appType: 0
}
const res = await watchAdGetGold(data);
console.log('观看广告结果===', res);
if (res.data.code === 200) {
return uni.showToast({
title: "画意值领取成功!",
icon: 'none'
});
}else {
uni.showModal({
content: res.data.msg,
showCancel: false
});
}
},
//
async getRestRewardNum() {
const params = {
userId: this.userInfo.id,
appType: '0',
platform: '1' ,//1
}
const res = await getRestRewardNum(params);
if (res.data.code === 200) {
console.log("当日非会员用户可获得奖励结果为", res.data.data)
//
this.canRewardNum = res.data.data
console.log('this.canRewardNum',this.canRewardNum)
} else {
uni.showToast({
title: '获取奖励剩余次数失败!',
icon: 'none'
})
}
},
},
};
</script>
<style lang="scss">
page {
height: 100vh;
background-color: $uni-bg-color;
}
</style>
<style lang="scss" scoped>
.container {
padding: 20rpx;
.list-menu {
margin-top: 20rpx;
padding: 0 20rpx;
background-color: $uni-white;
border-radius: 10rpx;
box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.2);
}
.list-menu-item {
display: flex;
align-items: center;
justify-content: space-between;
height: 80rpx;
line-height: 80rpx;
border-bottom: 2rpx solid $uni-border-2;
.list-menu-icon{
color: $uni-primary;
}
.text {
font-size: 26rpx;
line-height: 80rpx;
width: calc(100% - 100rpx);
}
.list-menu-genduo{
}
}
.list-menu-item:first-child {
}
.list-menu-item:last-child {
border-bottom: 0 !important;
}
}
</style>

142
pages/userInfo/goldNum/goldNumLog.vue

@ -0,0 +1,142 @@
<template>
<view>
<view class="content">
<view>
<uni-list border-full v-for="(item, index) in goldNumLog" :key="index">
<uni-list-item :title="item.reason" :note="item.createTime" :rightText="item.goldNum">
</uni-list-item>
</uni-list>
<!-- 显示加载中或者全部加载完成 -->
<view>
<uni-load-more :status="loadStatus"></uni-load-more>
</view>
</view>
</view>
</view>
</template>
<script>
import { queryGoldLogPage } from "@/api/paint.js";
export default {
data() {
return {
goldNumLog: [],
userInfo: {},
pageSize: 10,
pageNum: 1,
loadStatus:'noMore', //more - loading - noMore -
isLoadMore:false, //
};
},
created() {
if (!this.userInfo) {
uni.navigateBack()
uni.showToast({
title: '请先登录',
icon: 'none'
})
}
this.userInfo = uni.getStorageSync('userInfo')
this.queryGoldLogPage();
},
//
// onPullDownRefresh() {
// this.pageNum = 1;
// this.goldNumLog = [];
// this.queryGoldLogPage();
// uni.stopPullDownRefresh();
// },
//
onReachBottom() {//
if(!this.isLoadMore) { //
this.isLoadMore=true
if (this.loadStatus === "more") {
this.pageNum += 1 //
this.queryGoldLogPage();
}
}
},
methods: {
//
async queryGoldLogPage() {
let that = this;
const data = {
userId: that.userInfo.id,
source: 1, //1
pageNum: that.pageNum,
pageSize: that.pageSize
}
const res = await queryGoldLogPage(data);
console.log('画意值记录===', res);
if (res.data.code === 200) {
that.goldNumLog.push(...res.data.rows)
if(res.data.rows.length < that.pageSize){ //
that.isLoadMore = true
that.loadStatus = 'noMore'
}else{
this.loadStatus = 'more';
that.isLoadMore = false
}
}else {
uni.showModal({
content: '网络错误,请稍后再试~',
showCancel: false
});
that.isLoadMore = false
if(that.page > 1){
that.page -= 1
}
}
},
},
};
</script>
<style lang="scss">
page {
height: 100vh;
background-color: $uni-bg-color;
}
</style>
<style lang="scss" scoped>
.content {
padding-top: 88rpx;
width: 670rpx;
margin: 0 auto;
::v-deep .uni-list {
background: $uni-primary !important;
margin-bottom: 20rpx;
border-radius: 24rpx;
overflow: hidden;
}
::v-deep .uni-list-item {
background: $uni-primary !important;
}
::v-deep .uni-list--border-top {
display: none !important;
}
::v-deep .uni-list--border-bottom {
display: none !important;
}
::v-deep .uni-list-item__container {
padding: 20rpx !important;
}
::v-deep .uni-list-item__content-title {
color: $uni-white !important;
}
::v-deep .uni-list-item__content-note {
color: $uni-white !important;
}
::v-deep .uni-list-item__extra-text {
color: $uni-white !important;
}
}
</style>

13
pages/userInfo/userInfo.vue

@ -41,14 +41,19 @@
<view class="text">会员中心</view>
<uni-icons class="list-menu-genduo" custom-prefix="iconfont" type="icon-gengduo"></uni-icons>
</view>
<view class="list-menu-item" @click="toLink()">
<uni-icons class="list-menu-icon" custom-prefix="iconfont" type="icon-huabi1" size="20" :color="primaryColor" />
<view class="text">画意值记录</view>
<view class="list-menu-item" @click="toLink('/pages/userInfo/goldNum/goldNum')">
<uni-icons class="list-menu-icon" custom-prefix="iconfont" type="icon-biaoqing" size="20" :color="primaryColor" />
<view class="text">领取画意值</view>
<uni-icons class="list-menu-genduo" custom-prefix="iconfont" type="icon-gengduo"></uni-icons>
</view>
<view class="list-menu-item" @click="$noMultipleClicks(useCdk)">
<uni-icons class="list-menu-icon" custom-prefix="iconfont" type="icon-xunhuanjiagongcishu" size="20" :color="primaryColor" />
<view class="text">兑换绘画点数</view>
<view class="text">兑换画意值</view>
<uni-icons class="list-menu-genduo" custom-prefix="iconfont" type="icon-gengduo"></uni-icons>
</view>
<view class="list-menu-item" @click="toLink('/pages/userInfo/goldNum/goldNumLog')">
<uni-icons class="list-menu-icon" custom-prefix="iconfont" type="icon-huabi1" size="20" :color="primaryColor" />
<view class="text">画意值记录</view>
<uni-icons class="list-menu-genduo" custom-prefix="iconfont" type="icon-gengduo"></uni-icons>
</view>
</view>

14
pages/userInfo/vip/vip.vue

@ -7,7 +7,7 @@
<view>
<view class="vip-info__name">{{userInfo.username}}</view>
<view class="vip-info__tips" v-if="vipInfo.isVip == '0'">你还不是会员,开通立享 9 项特权</view>
<view class="vip-info__tips" v-if="vipInfo.isVip == '1'">您的会员为{{vipInfo.vipName}}</view>
<view class="vip-info__tips" v-if="vipInfo.isVip == '1'">您的会员为{{vipInfo.vipTypeName}}</view>
<view class="vip-info__tips" v-if="vipInfo.isVip == '1'">到期时间为{{vipInfo.endTime}}</view>
</view>
</view>
@ -37,7 +37,7 @@
<view class="" v-if="systemInfo === 'ios'">
<view class="iosStyle">由于相关政策,ios端暂不支持开通会员,请谅解.您可通过联系"次元意境"官方客服了解详情</view>
<button class="linkToUs" size="mini" open-type="im" data-im-id="DimenMusicHub">联系客服</button>
<button class="linkToUs" type="default" plain="true" size="mini" open-type="im" data-im-id="DimenMusicHub">联系客服</button>
</view>
<button class="sumbit-btn" @click="openVip" :disabled="disabled" v-if="systemInfo != 'ios'">
@ -85,11 +85,7 @@
</template>
<script>
import {
queryUserVipList,
addVipOrder,
unifiedOrder
} from '@/api/userInfo.js'
import {queryUserVipList,addVipOrder,unifiedOrder} from '@/api/userInfo.js'
import {checkVip} from '@/api/paint.js'
import MemberScroll from "./MemberScroll";
@ -278,6 +274,7 @@
width: 400rpx;
height: 80rpx;
margin-top: 30rpx;
border: none;
//bottom: 50rpx;
background-color: $uni-primary;
border-radius: 50rpx;
@ -289,6 +286,9 @@
color: #fff;
font-size: 16px;
color: $uni-white;
&::after{
border:none;
}
}
.vip-box {

Loading…
Cancel
Save