Browse Source

!63 【新增】订阅消息:订单发货、充值退款消息订阅
Merge pull request !63 from puhui999/master

芋道源码 1 year ago
parent
commit
59c6613102

+ 6 - 0
pages/order/confirm.vue

@@ -166,6 +166,7 @@
   import OrderApi from '@/sheep/api/trade/order';
   import OrderApi from '@/sheep/api/trade/order';
   import CouponApi from '@/sheep/api/promotion/coupon';
   import CouponApi from '@/sheep/api/promotion/coupon';
   import { fen2yuan } from '@/sheep/hooks/useGoods';
   import { fen2yuan } from '@/sheep/hooks/useGoods';
+  import { SubscribeTemplate } from '@/sheep/util/const';
 
 
   const state = reactive({
   const state = reactive({
     orderPayload: {},
     orderPayload: {},
@@ -231,6 +232,11 @@
     if (state.orderPayload.items[0].cartId > 0) {
     if (state.orderPayload.items[0].cartId > 0) {
       sheep.$store('cart').getList();
       sheep.$store('cart').getList();
     }
     }
+
+    // #ifdef MP
+    sheep.$platform.useProvider('wechat').subscribeMessage(SubscribeTemplate.DELIVERY_ORDER);
+    // #endif
+
     // 跳转到支付页面
     // 跳转到支付页面
     sheep.$router.redirect('/pages/pay/index', {
     sheep.$router.redirect('/pages/pay/index', {
       id: data.payOrderId,
       id: data.payOrderId,

+ 202 - 202
pages/pay/recharge.vue

@@ -1,260 +1,260 @@
 <!-- 充值界面 -->
 <!-- 充值界面 -->
 <template>
 <template>
-	<s-layout title="充值" class="withdraw-wrap" navbar="inner">
-		<view class="wallet-num-box ss-flex ss-col-center ss-row-between" :style="[
+  <s-layout title="充值" class="withdraw-wrap" navbar="inner">
+    <view class="wallet-num-box ss-flex ss-col-center ss-row-between" :style="[
       {
       {
         marginTop: '-' + Number(statusBarHeight + 88) + 'rpx',
         marginTop: '-' + Number(statusBarHeight + 88) + 'rpx',
         paddingTop: Number(statusBarHeight + 108) + 'rpx',
         paddingTop: Number(statusBarHeight + 108) + 'rpx',
       },
       },
     ]">
     ]">
-			<view class="">
-				<view class="num-title">当前余额(元)</view>
-				<view class="wallet-num">{{ fen2yuan(userWallet.balance) }}</view>
-			</view>
-			<button class="ss-reset-button log-btn" @tap="sheep.$router.go('/pages/pay/recharge-log')">
+      <view class="">
+        <view class="num-title">当前余额(元)</view>
+        <view class="wallet-num">{{ fen2yuan(userWallet.balance) }}</view>
+      </view>
+      <button class="ss-reset-button log-btn" @tap="sheep.$router.go('/pages/pay/recharge-log')">
         充值记录
         充值记录
       </button>
       </button>
-		</view>
-		<view class="recharge-box">
-			<view class="recharge-card-box">
-				<view class="input-label ss-m-b-50">充值金额</view>
-				<view class="input-box ss-flex border-bottom ss-p-b-20">
-					<view class="unit">¥</view>
-					<uni-easyinput v-model="state.recharge_money" type="digit" placeholder="请输入充值金额"
+    </view>
+    <view class="recharge-box">
+      <view class="recharge-card-box">
+        <view class="input-label ss-m-b-50">充值金额</view>
+        <view class="input-box ss-flex border-bottom ss-p-b-20">
+          <view class="unit">¥</view>
+          <uni-easyinput v-model="state.recharge_money" type="digit" placeholder="请输入充值金额"
                          :inputBorder="false" />
                          :inputBorder="false" />
-				</view>
-				<view class="face-value-box ss-flex ss-flex-wrap ss-m-y-40">
-					<button class="ss-reset-button face-value-btn" v-for="item in state.packageList" :key="item.money"
-						:class="[{ 'btn-active': state.recharge_money === fen2yuan(item.payPrice) }]"
-						@tap="onCard(item.payPrice)">
-						<text class="face-value-title">{{ fen2yuan(item.payPrice) }}</text>
-						<view v-if="item.bonusPrice" class="face-value-tag">
-							送 {{ fen2yuan(item.bonusPrice) }} 元
+        </view>
+        <view class="face-value-box ss-flex ss-flex-wrap ss-m-y-40">
+          <button class="ss-reset-button face-value-btn" v-for="item in state.packageList" :key="item.money"
+                  :class="[{ 'btn-active': state.recharge_money === fen2yuan(item.payPrice) }]"
+                  @tap="onCard(item.payPrice)">
+            <text class="face-value-title">{{ fen2yuan(item.payPrice) }}</text>
+            <view v-if="item.bonusPrice" class="face-value-tag">
+              送 {{ fen2yuan(item.bonusPrice) }} 元
             </view>
             </view>
-					</button>
-				</view>
-				<button class="ss-reset-button save-btn ui-BG-Main-Gradient ss-m-t-60 ui-Shadow-Main" @tap="onConfirm">
-					确认充值
-				</button>
-			</view>
-		</view>
-	</s-layout>
+          </button>
+        </view>
+        <button class="ss-reset-button save-btn ui-BG-Main-Gradient ss-m-t-60 ui-Shadow-Main" @tap="onConfirm">
+          确认充值
+        </button>
+      </view>
+    </view>
+  </s-layout>
 </template>
 </template>
 
 
 <script setup>
 <script setup>
-	import { computed, reactive } from 'vue';
-	import sheep from '@/sheep';
-	import { onLoad } from '@dcloudio/uni-app';
+  import { computed, reactive } from 'vue';
+  import sheep from '@/sheep';
+  import { onLoad } from '@dcloudio/uni-app';
   import { fen2yuan } from '@/sheep/hooks/useGoods';
   import { fen2yuan } from '@/sheep/hooks/useGoods';
   import PayWalletApi from '@/sheep/api/pay/wallet';
   import PayWalletApi from '@/sheep/api/pay/wallet';
   import { SubscribeTemplate } from '@/sheep/util/const';
   import { SubscribeTemplate } from '@/sheep/util/const';
 
 
-	const userWallet = computed(() => sheep.$store('user').userWallet);
-	const statusBarHeight = sheep.$platform.device.statusBarHeight * 2;
-	const headerBg = sheep.$url.css('/static/img/shop/user/withdraw_bg.png');
+  const userWallet = computed(() => sheep.$store('user').userWallet);
+  const statusBarHeight = sheep.$platform.device.statusBarHeight * 2;
+  const headerBg = sheep.$url.css('/static/img/shop/user/withdraw_bg.png');
 
 
-	const state = reactive({
-		recharge_money: '', // 输入的充值金额
+  const state = reactive({
+    recharge_money: '', // 输入的充值金额
     packageList: [],
     packageList: [],
-	});
+  });
 
 
-	// 点击卡片,选择充值金额
-	function onCard(e) {
-		state.recharge_money = fen2yuan(e);
-	}
+  // 点击卡片,选择充值金额
+  function onCard(e) {
+    state.recharge_money = fen2yuan(e);
+  }
 
 
   // 获得钱包充值套餐列表
   // 获得钱包充值套餐列表
-	async function getRechargeTabs() {
+  async function getRechargeTabs() {
     const { code, data } = await PayWalletApi.getWalletRechargePackageList();
     const { code, data } = await PayWalletApi.getWalletRechargePackageList();
     if (code !== 0) {
     if (code !== 0) {
       return;
       return;
     }
     }
     state.packageList = data;
     state.packageList = data;
-	}
+  }
 
 
   // 发起支付
   // 发起支付
-	async function onConfirm() {
-		// const { code, data } = await PayWalletApi.createWalletRecharge({
-		// 	packageId: state.packageList.find((item) => fen2yuan(item.payPrice) === state.recharge_money)?.id,
-		// 	payPrice: state.recharge_money * 100
-		// });
-		// if (code !== 0) {
-		// 	return;
-		// }
+  async function onConfirm() {
+    const { code, data } = await PayWalletApi.createWalletRecharge({
+      packageId: state.packageList.find((item) => fen2yuan(item.payPrice) === state.recharge_money)?.id,
+      payPrice: state.recharge_money * 100,
+    });
+    if (code !== 0) {
+      return;
+    }
     // #ifdef MP
     // #ifdef MP
-    sheep.$platform.useProvider('wechat').subscribeMessage(SubscribeTemplate.MONEY_CHANGE);
+    sheep.$platform.useProvider('wechat').subscribeMessage([SubscribeTemplate.WALLET_RECHARGER_PAID, SubscribeTemplate.WALLET_RECHARGE_REFUNDED]);
     // #endif
     // #endif
-    // sheep.$router.go('/pages/pay/index', {
-    //   id: data.payOrderId,
-    //   orderType: 'recharge'
-    // });
-	}
+    sheep.$router.go('/pages/pay/index', {
+      id: data.payOrderId,
+      orderType: 'recharge',
+    });
+  }
 
 
-	onLoad(() => {
-		getRechargeTabs();
-	});
+  onLoad(() => {
+    getRechargeTabs();
+  });
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
-	:deep() {
-		.uni-input-input {
-			font-family: OPPOSANS !important;
-		}
-	}
+  :deep() {
+    .uni-input-input {
+      font-family: OPPOSANS !important;
+    }
+  }
 
 
-	.wallet-num-box {
-		padding: 0 40rpx 80rpx;
-		background: var(--ui-BG-Main) v-bind(headerBg) center/750rpx 100% no-repeat;
-		border-radius: 0 0 5% 5%;
+  .wallet-num-box {
+    padding: 0 40rpx 80rpx;
+    background: var(--ui-BG-Main) v-bind(headerBg) center/750rpx 100% no-repeat;
+    border-radius: 0 0 5% 5%;
 
 
-		.num-title {
-			font-size: 26rpx;
-			font-weight: 500;
-			color: $white;
-			margin-bottom: 20rpx;
-		}
+    .num-title {
+      font-size: 26rpx;
+      font-weight: 500;
+      color: $white;
+      margin-bottom: 20rpx;
+    }
 
 
-		.wallet-num {
-			font-size: 60rpx;
-			font-weight: 500;
-			color: $white;
-			font-family: OPPOSANS;
-		}
+    .wallet-num {
+      font-size: 60rpx;
+      font-weight: 500;
+      color: $white;
+      font-family: OPPOSANS;
+    }
 
 
-		.log-btn {
-			width: 170rpx;
-			height: 60rpx;
-			line-height: 60rpx;
-			border: 1rpx solid $white;
-			border-radius: 30rpx;
-			padding: 0;
-			font-size: 26rpx;
-			font-weight: 500;
-			color: $white;
-		}
-	}
+    .log-btn {
+      width: 170rpx;
+      height: 60rpx;
+      line-height: 60rpx;
+      border: 1rpx solid $white;
+      border-radius: 30rpx;
+      padding: 0;
+      font-size: 26rpx;
+      font-weight: 500;
+      color: $white;
+    }
+  }
 
 
-	.recharge-box {
-		position: relative;
-		padding: 0 30rpx;
-		margin-top: -60rpx;
-	}
+  .recharge-box {
+    position: relative;
+    padding: 0 30rpx;
+    margin-top: -60rpx;
+  }
 
 
-	.save-btn {
-		width: 620rpx;
-		height: 86rpx;
-		border-radius: 44rpx;
-		font-size: 30rpx;
-	}
+  .save-btn {
+    width: 620rpx;
+    height: 86rpx;
+    border-radius: 44rpx;
+    font-size: 30rpx;
+  }
 
 
-	.recharge-card-box {
-		width: 690rpx;
-		background: var(--ui-BG);
-		border-radius: 20rpx;
-		padding: 30rpx;
-		box-sizing: border-box;
+  .recharge-card-box {
+    width: 690rpx;
+    background: var(--ui-BG);
+    border-radius: 20rpx;
+    padding: 30rpx;
+    box-sizing: border-box;
 
 
-		.input-label {
-			font-size: 30rpx;
-			font-weight: 500;
-			color: #333;
-		}
+    .input-label {
+      font-size: 30rpx;
+      font-weight: 500;
+      color: #333;
+    }
 
 
-		.unit {
-			display: flex;
-			align-items: center;
-			font-size: 48rpx;
-			font-weight: 500;
-		}
+    .unit {
+      display: flex;
+      align-items: center;
+      font-size: 48rpx;
+      font-weight: 500;
+    }
 
 
-		.uni-easyinput__placeholder-class {
-			font-size: 30rpx;
-			height: 60rpx;
-			display: flex;
-			align-items: center;
-		}
+    .uni-easyinput__placeholder-class {
+      font-size: 30rpx;
+      height: 60rpx;
+      display: flex;
+      align-items: center;
+    }
 
 
-		:deep(.uni-easyinput__content-input) {
-			font-size: 48rpx;
-		}
+    :deep(.uni-easyinput__content-input) {
+      font-size: 48rpx;
+    }
 
 
-		.face-value-btn {
-			width: 200rpx;
-			height: 144rpx;
-			border: 1px solid var(--ui-BG-Main);
-			border-radius: 10rpx;
-			position: relative;
-			z-index: 1;
-			margin-bottom: 15rpx;
-			margin-right: 15rpx;
+    .face-value-btn {
+      width: 200rpx;
+      height: 144rpx;
+      border: 1px solid var(--ui-BG-Main);
+      border-radius: 10rpx;
+      position: relative;
+      z-index: 1;
+      margin-bottom: 15rpx;
+      margin-right: 15rpx;
 
 
-			&:nth-of-type(3n) {
-				margin-right: 0;
-			}
+      &:nth-of-type(3n) {
+        margin-right: 0;
+      }
 
 
-			.face-value-title {
-				font-size: 36rpx;
-				font-weight: 500;
-				color: var(--ui-BG-Main);
-				font-family: OPPOSANS;
+      .face-value-title {
+        font-size: 36rpx;
+        font-weight: 500;
+        color: var(--ui-BG-Main);
+        font-family: OPPOSANS;
 
 
-				&::after {
-					content: '元';
-					font-size: 24rpx;
-					margin-left: 6rpx;
-				}
-			}
+        &::after {
+          content: '元';
+          font-size: 24rpx;
+          margin-left: 6rpx;
+        }
+      }
 
 
-			.face-value-tag {
-				position: absolute;
-				z-index: 2;
-				height: 40rpx;
-				line-height: 40rpx;
-				background: var(--ui-BG-Main);
-				opacity: 0.8;
-				border-radius: 10rpx 0 20rpx 0;
-				top: 0;
-				left: -2rpx;
-				padding: 0 16rpx;
-				font-size: 22rpx;
-				color: $white;
-				font-family: OPPOSANS;
-			}
+      .face-value-tag {
+        position: absolute;
+        z-index: 2;
+        height: 40rpx;
+        line-height: 40rpx;
+        background: var(--ui-BG-Main);
+        opacity: 0.8;
+        border-radius: 10rpx 0 20rpx 0;
+        top: 0;
+        left: -2rpx;
+        padding: 0 16rpx;
+        font-size: 22rpx;
+        color: $white;
+        font-family: OPPOSANS;
+      }
 
 
-			&::before {
-				position: absolute;
-				content: ' ';
-				width: 100%;
-				height: 100%;
-				background: var(--ui-BG-Main);
-				opacity: 0.1;
-				z-index: 0;
-				left: 0;
-				top: 0;
-			}
-		}
+      &::before {
+        position: absolute;
+        content: ' ';
+        width: 100%;
+        height: 100%;
+        background: var(--ui-BG-Main);
+        opacity: 0.1;
+        z-index: 0;
+        left: 0;
+        top: 0;
+      }
+    }
 
 
-		.btn-active {
-			z-index: 1;
+    .btn-active {
+      z-index: 1;
 
 
-			&::before {
-				content: '';
-				background: var(--ui-BG-Main);
-				opacity: 1;
-			}
+      &::before {
+        content: '';
+        background: var(--ui-BG-Main);
+        opacity: 1;
+      }
 
 
-			.face-value-title {
-				color: $white;
-				position: relative;
-				z-index: 1;
-				font-family: OPPOSANS;
-			}
+      .face-value-title {
+        color: $white;
+        position: relative;
+        z-index: 1;
+        font-family: OPPOSANS;
+      }
 
 
-			.face-value-tag {
-				background: $white;
-				color: var(--ui-BG-Main);
-				font-family: OPPOSANS;
-			}
-		}
-	}
+      .face-value-tag {
+        background: $white;
+        color: var(--ui-BG-Main);
+        font-family: OPPOSANS;
+      }
+    }
+  }
 </style>
 </style>

+ 2 - 2
sheep/api/migration/third.js

@@ -4,9 +4,9 @@ export default {
   // 微信相关
   // 微信相关
   wechat: {
   wechat: {
     // 小程序订阅消息
     // 小程序订阅消息
-    subscribeTemplate: () =>
+    getSubscribeTemplateList: () =>
       request({
       request({
-        url: '/member/social-user/get-subscribe-template',
+        url: '/member/social-user/get-subscribe-template-list',
         method: 'GET',
         method: 'GET',
         custom: {
         custom: {
           showError: false,
           showError: false,

+ 3 - 3
sheep/platform/provider/wechat/miniProgram.js

@@ -164,7 +164,7 @@ const checkUpdate = async (silence = true) => {
 
 
 // 获取订阅消息模板
 // 获取订阅消息模板
 async function getSubscribeTemplate() {
 async function getSubscribeTemplate() {
-  const { code, data } = await third.wechat.subscribeTemplate();
+  const { code, data } = await third.wechat.getSubscribeTemplateList();
   if (code === 0) {
   if (code === 0) {
     subscribeEventList = data;
     subscribeEventList = data;
   }
   }
@@ -176,14 +176,14 @@ function subscribeMessage(event) {
   if (typeof event === 'string') {
   if (typeof event === 'string') {
     const temp = subscribeEventList.find(item => item.title.includes(event));
     const temp = subscribeEventList.find(item => item.title.includes(event));
     if (temp) {
     if (temp) {
-      tmplIds.push(temp.priTmplId);
+      tmplIds.push(temp.id);
     }
     }
   }
   }
   if (typeof event === 'object') {
   if (typeof event === 'object') {
     event.forEach((e) => {
     event.forEach((e) => {
       const temp = subscribeEventList.find(item => item.title.includes(e));
       const temp = subscribeEventList.find(item => item.title.includes(e));
       if (temp) {
       if (temp) {
-        tmplIds.push(temp.priTmplId);
+        tmplIds.push(temp.id);
       }
       }
     });
     });
   }
   }

+ 3 - 1
sheep/util/const.js

@@ -59,7 +59,9 @@ export const TimeStatusEnum = {
 // TODO 订阅模版枚举
 // TODO 订阅模版枚举
 export const SubscribeTemplate = {
 export const SubscribeTemplate = {
   ORDER_AFTERSALE_CHANGE: "售后进度通知",
   ORDER_AFTERSALE_CHANGE: "售后进度通知",
-  MONEY_CHANGE: "充值成功通知"
+  WALLET_RECHARGER_PAID: "充值成功通知",
+  WALLET_RECHARGE_REFUNDED: "退款申请通知",
+  DELIVERY_ORDER: "订单发货通知",
 }
 }