2 Commits

4 changed files with 140 additions and 103 deletions
Split View
  1. +118
    -90
      CatmDogd-Mall-Front-test/src/views/model/AppletConfig/priceConfig.vue
  2. +5
    -5
      ruoyi-admin/src/main/resources/application-druid-root.yml
  3. +11
    -7
      ruoyi-catdog/src/main/java/com/ruoyi/applet/tencent/TaskConsumer.java
  4. +6
    -1
      ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java

+ 118
- 90
CatmDogd-Mall-Front-test/src/views/model/AppletConfig/priceConfig.vue View File

@ -210,59 +210,86 @@
</el-col>
</el-row>
<!-- 套餐免费额度配置 -->
<el-divider content-position="left">套餐免费额度配置</el-divider>
<!-- 免费宠物数量配置 -->
<el-divider content-position="left">免费宠物数量配置</el-divider>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="免费阈值金额" prop="freeQuota.threshold">
<el-input-number
v-model="priceConfig.freeQuota.threshold"
:min="0"
:precision="2"
placeholder="免费阈值金额">
</el-input-number>
</el-form-item>
<el-col :span="24">
<el-alert
title="免费宠物数量配置说明"
type="info"
:closable="false"
show-icon>
<div slot="description">
配置每种宠物类型的免费数量超出免费数量的宠物将按照对应的额外费用收费
<br>例如配置猫免费3只用户有5只猫时前3只免费后2只按猫的额外费用收费
</div>
</el-alert>
</el-col>
</el-row>
<!-- 免费规则配置 -->
<!-- 免费宠物数量配置表格 -->
<el-card class="box-card" style="margin-bottom: 20px;">
<div slot="header">
<span>免费规则配置</span>
<el-button style="float: right; padding: 3px 0" type="text" @click="addFreeRule">添加规则</el-button>
<span>免费宠物数量配置</span>
</div>
<el-table :data="priceConfig.freeQuota.rules" style="width: 100%">
<el-table-column label="类型" width="160">
<template slot-scope="scope">
<el-select v-model="scope.row.type" placeholder="选择类型">
<el-option label="猫" value="cat"></el-option>
<el-option label="小型犬" value="smallDog"></el-option>
<el-option label="中型犬" value="mediumDog"></el-option>
<el-option label="混合类型" value="mixed"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="数量" width="160">
<template slot-scope="scope">
<el-input-number v-model="scope.row.count" :min="0" size="mini"></el-input-number>
</template>
</el-table-column>
<el-table-column label="免费金额" width="160">
<template slot-scope="scope">
<el-input-number v-model="scope.row.freeAmount" :min="0" :precision="2" size="mini"></el-input-number>
</template>
</el-table-column>
<el-table-column label="描述">
<template slot-scope="scope">
<el-input v-model="scope.row.description" size="mini"></el-input>
</template>
</el-table-column>
<el-table-column label="操作" width="100">
<template slot-scope="scope">
<el-button type="danger" size="mini" @click="removeFreeRule(scope.$index)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-row :gutter="20">
<el-col :span="6">
<el-card class="box-card" style="margin-bottom: 20px;">
<div slot="header">
<span></span>
</div>
<el-form-item label="免费数量" prop="freePetConfig.cat.freeCount" label-width="80px">
<el-input-number
v-model="priceConfig.freePetConfig.cat.freeCount"
:min="0"
placeholder="免费数量">
</el-input-number>
</el-form-item>
</el-card>
</el-col>
<el-col :span="6">
<el-card class="box-card" style="margin-bottom: 20px;">
<div slot="header">
<span>小型犬</span>
</div>
<el-form-item label="免费数量" prop="freePetConfig.smallDog.freeCount" label-width="80px">
<el-input-number
v-model="priceConfig.freePetConfig.smallDog.freeCount"
:min="0"
placeholder="免费数量">
</el-input-number>
</el-form-item>
</el-card>
</el-col>
<el-col :span="6">
<el-card class="box-card" style="margin-bottom: 20px;">
<div slot="header">
<span>中型犬</span>
</div>
<el-form-item label="免费数量" prop="freePetConfig.mediumDog.freeCount" label-width="80px">
<el-input-number
v-model="priceConfig.freePetConfig.mediumDog.freeCount"
:min="0"
placeholder="免费数量">
</el-input-number>
</el-form-item>
</el-card>
</el-col>
<el-col :span="6">
<el-card class="box-card" style="margin-bottom: 20px;">
<div slot="header">
<span>大型犬</span>
</div>
<el-form-item label="免费数量" prop="freePetConfig.largeDog.freeCount" label-width="80px">
<el-input-number
v-model="priceConfig.freePetConfig.largeDog.freeCount"
:min="0"
placeholder="免费数量">
</el-input-number>
</el-form-item>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 节假日配置 -->
@ -438,35 +465,20 @@
price: 10 //
}
},
//
freeQuota: {
threshold: 30, //
rules: [
{
type: 'cat',
count: 3,
freeAmount: 30,
description: '3只及以上猫免费30元'
},
{
type: 'smallDog',
count: 2,
freeAmount: 30,
description: '2只及以上小型犬免费30元'
},
{
type: 'mediumDog',
count: 1,
freeAmount: 30,
description: '1只及以上中型犬免费30元'
},
{
type: 'mixed',
count: 0,
freeAmount: 25,
description: '混合类型免费25元(1猫1小型犬)'
}
]
//
freePetConfig: {
cat: {
freeCount: 3 //
},
smallDog: {
freeCount: 2 //
},
mediumDog: {
freeCount: 1 //
},
largeDog: {
freeCount: 0 //
}
},
// -
holidays: [
@ -495,6 +507,22 @@
],
'basePrice.perKm': [
{ required: true, message: '请输入每公里费用', trigger: 'blur' }
],
'freePetConfig.cat.freeCount': [
{ required: true, message: '请输入猫咪免费数量', trigger: 'blur' },
{ type: 'number', min: 0, message: '免费数量不能小于0', trigger: 'blur' }
],
'freePetConfig.smallDog.freeCount': [
{ required: true, message: '请输入小型犬免费数量', trigger: 'blur' },
{ type: 'number', min: 0, message: '免费数量不能小于0', trigger: 'blur' }
],
'freePetConfig.mediumDog.freeCount': [
{ required: true, message: '请输入中型犬免费数量', trigger: 'blur' },
{ type: 'number', min: 0, message: '免费数量不能小于0', trigger: 'blur' }
],
'freePetConfig.largeDog.freeCount': [
{ required: true, message: '请输入大型犬免费数量', trigger: 'blur' },
{ type: 'number', min: 0, message: '免费数量不能小于0', trigger: 'blur' }
]
}
};
@ -528,7 +556,21 @@
if (response.rows && response.rows.length > 0) {
const config = response.rows[0];
if (config.paramValueText) {
this.priceConfig = JSON.parse(config.paramValueText);
const savedConfig = JSON.parse(config.paramValueText);
//
this.priceConfig = {
...this.priceConfig,
...savedConfig
};
// freePetConfig
if (!this.priceConfig.freePetConfig) {
this.priceConfig.freePetConfig = {
cat: { freeCount: 3 },
smallDog: { freeCount: 2 },
mediumDog: { freeCount: 1 },
largeDog: { freeCount: 0 }
};
}
//
this.holidayDates = this.priceConfig.holidays || [];
}
@ -591,20 +633,6 @@
});
},
//
addFreeRule() {
this.priceConfig.freeQuota.rules.push({
type: 'cat',
count: 0,
freeAmount: 0,
description: ''
});
},
//
removeFreeRule(index) {
this.priceConfig.freeQuota.rules.splice(index, 1);
},
//
getCityName(city) {


+ 5
- 5
ruoyi-admin/src/main/resources/application-druid-root.yml View File

@ -67,10 +67,10 @@ wechat:
apiV2key: 19961022196901121965060120230731
# notifyUrl: https://api.catmdogd.com/prod-api/no-auth/wechat/notify
# notifyUrlForBCHSH: https://api.catmdogd.com/prod-api/no-auth/wechat/notifyForBCHSH
notifyUrl: https://pet-admin.hhlm1688.com/api/no-auth/wechat/notify
notifyUrlForBCHSH: https://pet-admin.hhlm1688.com/api/no-auth/wechat/notifyForBCHSH
# notifyUrl: http://h5.xzaiyp.top/no-auth/wechat/notify
# notifyUrlForBCHSH: http://h5.xzaiyp.top/no-auth/wechat/notifyForBCHSH
# notifyUrl: https://pet-admin.hhlm1688.com/api/no-auth/wechat/notify
# notifyUrlForBCHSH: https://pet-admin.hhlm1688.com/api/no-auth/wechat/notifyForBCHSH
notifyUrl: http://h5.xzaiyp.top/no-auth/wechat/notify
notifyUrlForBCHSH: http://h5.xzaiyp.top/no-auth/wechat/notifyForBCHSH
miniProgramAppId: wxd1a6ba7b5e17a5b6
miniProgramSecret: 06e946a2c9010f8eb9e306018a779a7f
staffAppId: wx01f0f43759922fda
@ -167,4 +167,4 @@ tencent:
secretKey: cz96D9rPluvjKitrc9VfWSEqHWbUAh2D
payMangeDev: false
payMangeDev: true

+ 11
- 7
ruoyi-catdog/src/main/java/com/ruoyi/applet/tencent/TaskConsumer.java View File

@ -309,7 +309,9 @@ public class TaskConsumer implements QueueConsumer {
//按照原订单进行接单
H5OrderVO oldOrder = h5OrderService.orderDetail(h5OrderVO.getOldOrderId());
AliyunSmsUtils.sendNotifyOrderUpdate(oldOrder.getReceiverPhone());
if (oldOrder != null){
AliyunSmsUtils.sendNotifyOrderUpdate(oldOrder.getReceiverPhone());
}
if(oldOrder != null && oldOrder.getAcceptAppUserId() != null
&& oldOrder.getAcceptAppUserId() != 0){
@ -382,13 +384,15 @@ public class TaskConsumer implements QueueConsumer {
//TODO 短信通知 系统和接单的伴宠师 通知内容需要修改一下
AliyunSmsUtils.sendOrderUpdate(appUsers.getUserTelephone(), AliyunSmsUtils.UPDATE, omsOrder.getId() + "");
AppletConfig appletConfig = appletConfigService.getByCode("admin_phone_list");
String adminPhoneList = appletConfig.getParamValueText();
if(StringUtils.isNotEmpty(adminPhoneList)){
for (String phone : adminPhoneList.split(",")) {
AliyunSmsUtils.sendOrderUpdate(phone, AliyunSmsUtils.UPDATE, omsOrder.getId() + "");
}
}
AppletConfig appletConfig = appletConfigService.getByCode("admin_phone_list");
String adminPhoneList = appletConfig.getParamValueText();
if(StringUtils.isNotEmpty(adminPhoneList)){
for (String phone : adminPhoneList.split(",")) {
AliyunSmsUtils.sendOrderUpdate(phone, AliyunSmsUtils.UPDATE, omsOrder.getId() + "");
}
}
}


+ 6
- 1
ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java View File

@ -38,6 +38,7 @@ import com.cyl.manager.ums.domain.*;
import com.cyl.manager.ums.mapper.MemberAddressMapper;
import com.cyl.manager.ums.mapper.MemberCartMapper;
import com.cyl.manager.ums.mapper.MemberWechatMapper;
import com.cyl.manager.ums.pojo.vo.MemberAddressVO;
import com.cyl.manager.ums.pojo.vo.PetVO;
import com.cyl.manager.ums.service.PetService;
import com.cyl.tencent.OrderMessageModel;
@ -90,6 +91,9 @@ public class H5OrderService {
@Autowired
private MemberAddressMapper memberAddressMapper;
@Autowired
private H5MemberAddressService h5MemberAddressService;
@Autowired
private SkuMapper skuMapper;
@ -189,6 +193,7 @@ public class H5OrderService {
if (addressId == null){
throw new RuntimeException("地址不能为空");
}
MemberAddressVO addressVO = h5MemberAddressService.selectById(addressId);
MemberAddress memberAddress = memberAddressMapper.selectById(addressId);
if (memberAddress == null){
throw new RuntimeException("地址不能为空");
@ -238,7 +243,7 @@ public class H5OrderService {
order.setStatus(Constants.OrderStatus.NOTPAID);
order.setAftersaleStatus(1);
order.setReceiverName(memberAddress.getName());
order.setReceiverPhone(memberAddress.getPhoneHidden());
order.setReceiverPhone(addressVO.getPhone());
order.setReceiverPostCode(memberAddress.getPostCode());
order.setReceiverProvince(memberAddress.getProvince());
order.setReceiverCity(memberAddress.getCity());


Loading…
Cancel
Save