1;ai营销订单查询优化

2;表格模版计算,导出修改
3;店铺页营销账分显示
This commit is contained in:
wangshuai 2024-07-26 15:28:47 +08:00
parent 291cab7bdf
commit de74bdbd79
5 changed files with 37 additions and 75 deletions

View File

@ -96,7 +96,7 @@ public class BusStoreDayHistoryInfoController extends BaseController
d = storeInfo.getPrice(); d = storeInfo.getPrice();
} }
excelInfo.setPrice(d.toString()); excelInfo.setPrice(d.toString());
BigDecimal money = d.multiply(new BigDecimal(visitCount)); BigDecimal money = d.multiply(new BigDecimal(data.getLastPositiveReviewsNum()));
excelInfo.setMoney(money.toString()); excelInfo.setMoney(money.toString());
totamMoney = totamMoney.add(money); totamMoney = totamMoney.add(money);

View File

@ -49,12 +49,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="selectBusOrderInfoListToAi" resultMap="BusOrderInfoResult"> <select id="selectBusOrderInfoListToAi" resultMap="BusOrderInfoResult">
select a.* from bus_order_info a SELECT t1.*
FROM bus_order_info AS t1
JOIN (
select a.order_no,min(a.id) AS min_id
from bus_order_info a
LEFT JOIN bus_return_visit_info b on b.phone_number=a.privcy_phone LEFT JOIN bus_return_visit_info b on b.phone_number=a.privcy_phone
where b.return_visit_time is null where b.return_visit_time is null
<if test="storeCode != null and storeCode != ''"> and a.store_code = #{storeCode}</if> <if test="storeCode != null and storeCode != ''"> and a.store_code = #{storeCode}</if>
<if test="t1 != null and t1 != ''"> and a.complete_time &gt; #{t1}</if> <if test="t1 != null and t1 != ''"> and a.complete_time &gt; #{t1}</if>
<if test="t2 != null and t2 != ''"> and a.complete_time &lt;= #{t2}</if> <if test="t2 != null and t2 != ''"> and a.complete_time &lt;= #{t2}</if>
GROUP BY a.order_no
) AS t2 ON t1.order_no = t2.order_no AND t1.id = t2.min_id;
</select> </select>
<select id="selectBusZpsOrderInfoListToAi" resultMap="BusOrderInfoResult"> <select id="selectBusZpsOrderInfoListToAi" resultMap="BusOrderInfoResult">

View File

@ -30,7 +30,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
ifnull(a.last_return_visit_num,0) as visitNumber, ifnull(a.last_return_visit_num,0) as visitNumber,
ifnull(a.last_positive_reviews_num,0) as commentsNumber, ifnull(a.last_positive_reviews_num,0) as commentsNumber,
ifnull(b.price,0) as price, ifnull(b.price,0) as price,
(ifnull(b.price,0) * ifnull(a.last_return_visit_num,0)) as money (ifnull(b.price,0) * ifnull(a.last_positive_reviews_num,0)) as money
from bus_store_day_info a INNER JOIN bus_store_info b on b.id = a.store_id from bus_store_day_info a INNER JOIN bus_store_info b on b.id = a.store_id
</sql> </sql>
<select id="selectBusStoreDayHistoryInfoList" parameterType="com.ruoyi.business.domain.BusStoreExcelInfo" resultType="com.ruoyi.business.domain.BusStoreExcelInfo"> <select id="selectBusStoreDayHistoryInfoList" parameterType="com.ruoyi.business.domain.BusStoreExcelInfo" resultType="com.ruoyi.business.domain.BusStoreExcelInfo">

View File

@ -120,9 +120,12 @@
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="2">
<el-form-item label="开启数量" ><span>{{map.openCount}}</span></el-form-item> <el-form-item label="开启数量" ><span>{{map.openCount}}</span></el-form-item>
</el-col> </el-col>
<el-col :span="2">
<el-form-item label="当前账分:"><span>{{nowIntegral}}</span></el-form-item>
</el-col>
</el-row> </el-row>
</el-form> </el-form>
@ -324,14 +327,6 @@
<el-input-number v-model="form.maxOrderNum" placeholder="请输入营销下单次数" :min="1"/> <el-input-number v-model="form.maxOrderNum" placeholder="请输入营销下单次数" :min="1"/>
</el-form-item> </el-form-item>
<el-form-item label="营销时段" prop="start_time"> <el-form-item label="营销时段" prop="start_time">
<!-- <el-date-picker
v-model="value2"
type="datetimerange"
range-separator="至"
:picker-options="pickerOptions"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker> -->
<el-time-picker <el-time-picker
is-range is-range
v-model="timeRange" v-model="timeRange"
@ -401,7 +396,7 @@
</template> </template>
<script> <script>
import { listStore, changeReturnVisitStatus, getMtUrl, changeSelfDeliveryStatus, getStoreConfig, updateStoreConfig, getStoreStatistics } from "@/api/business/store"; import { listStore, changeReturnVisitStatus, getMtUrl, changeSelfDeliveryStatus, getStoreConfig, updateStoreConfig, nowIntegral, getStoreStatistics } from "@/api/business/store";
import { listSaleA} from "@/api/business/sale"; import { listSaleA} from "@/api/business/sale";
export default { export default {
@ -412,6 +407,7 @@ export default {
meituanUrl: "https://e.waimai.meituan.com?ABC="+this.$store.state.user.name+":1", meituanUrl: "https://e.waimai.meituan.com?ABC="+this.$store.state.user.name+":1",
// //
loading: true, loading: true,
nowIntegral: 0,
// //
ids: [], ids: [],
// //
@ -463,19 +459,6 @@ export default {
}, },
// //
rules: { rules: {
// storeCode: undefined,
// content1: undefined,
// content2: undefined,
// content3: undefined,
// content4: undefined,
// minOrderNum: 1,
// maxOrderNum: 1,
// timeRange: '',
// isSpliceOrder: 2,
// selfDeliveryDuration: 1,
// saleBindId: undefined,
// quota: 1,
// remark: undefined
minOrderNum: [ minOrderNum: [
{ required: true, message: "下单次数min不能为空", trigger: "blur" } { required: true, message: "下单次数min不能为空", trigger: "blur" }
], ],
@ -499,6 +482,7 @@ export default {
this.getListSale(); this.getListSale();
this.getList(); this.getList();
this.storeStatistics(); this.storeStatistics();
this.getNowIntegral();
}, },
methods: { methods: {
renderPrice(h, { column, $index }) { renderPrice(h, { column, $index }) {
@ -516,6 +500,12 @@ export default {
column.label column.label
] ]
}, },
getNowIntegral() {
nowIntegral().then(response => {
this.nowIntegral = response.data;
}
);
},
changeQuotaStatus(){ changeQuotaStatus(){
if(this.form.quotaStatus == '2'){ if(this.form.quotaStatus == '2'){
this.isDisabledQuotaStatus = true this.isDisabledQuotaStatus = true

View File

@ -97,8 +97,6 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="10"> <el-col :span="10">
<el-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker <el-date-picker
@ -110,21 +108,17 @@
end-placeholder="结束日期"> end-placeholder="结束日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<!-- </el-col>-->
<!-- <el-col>-->
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="2">
<el-col :span="4">
<el-form-item label="开启数量" ><span>{{map.openCount}}</span></el-form-item> <el-form-item label="开启数量" ><span>{{map.openCount}}</span></el-form-item>
</el-col> </el-col>
<el-col :span="2">
<el-form-item label="当前账分:"><span>{{nowIntegral}}</span></el-form-item>
</el-col>
</el-row> </el-row>
</el-form> </el-form>
@ -191,17 +185,6 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="营销用户下单" prop="returnVisitUserRange" align="center" width="110" /> <el-table-column label="营销用户下单" prop="returnVisitUserRange" align="center" width="110" />
<!-- <el-table-column label="是否开启" prop="returnVisitStatus" align="center" width="85" >-->
<!-- <template slot-scope="scope">-->
<!-- <el-switch-->
<!-- v-model="scope.row.returnVisitStatus"-->
<!-- active-value="1"-->
<!-- inactive-value="2"-->
<!-- @change="handleStatusChange(scope.row)"-->
<!-- ></el-switch>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width =120> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width =120>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
@ -297,14 +280,6 @@
<el-input-number v-model="form.maxOrderNum" placeholder="请输入营销下单次数" :min="1"/> <el-input-number v-model="form.maxOrderNum" placeholder="请输入营销下单次数" :min="1"/>
</el-form-item> </el-form-item>
<el-form-item label="营销时段" prop="start_time"> <el-form-item label="营销时段" prop="start_time">
<!-- <el-date-picker
v-model="value2"
type="datetimerange"
range-separator="至"
:picker-options="pickerOptions"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker> -->
<el-time-picker <el-time-picker
is-range is-range
v-model="timeRange" v-model="timeRange"
@ -331,7 +306,6 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="店铺归属" prop="saleBindId"> <el-form-item label="店铺归属" prop="saleBindId">
<!-- <el-input v-model="form.roleSort" controls-position="right"/> -->
<el-select <el-select
v-model="form.saleBindId" v-model="form.saleBindId"
placeholder="店铺归属" placeholder="店铺归属"
@ -392,14 +366,11 @@
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
<!-- <el-upload src="{{ imageUrl }}"></el-upload> -->
<!-- <img src="imageUrl" title="点击上传头像" class="img-circle img-lg"></img> -->
<!-- <el-image src="{{imageUrl}}" /> -->
</template> </template>
<script> <script>
import { listStore, changeReturnVisitStatus, getMtUrl, changeSelfDeliveryStatus, getStoreConfig, updateStoreConfig, getStoreStatistics,generateWord,setUpPrize } from "@/api/business/store"; import { listStore, changeReturnVisitStatus, getMtUrl, changeSelfDeliveryStatus, getStoreConfig, updateStoreConfig, getStoreStatistics, generateWord, nowIntegral, setUpPrize } from "@/api/business/store";
import { listSaleA} from "@/api/business/sale"; import { listSaleA} from "@/api/business/sale";
export default { export default {
@ -413,6 +384,7 @@ export default {
// //
ids: [], ids: [],
dateRange: [], dateRange: [],
nowIntegral: 0,
// //
single: true, single: true,
// //
@ -468,19 +440,6 @@ export default {
}, },
// //
rules: { rules: {
// storeCode: undefined,
// content1: undefined,
// content2: undefined,
// content3: undefined,
// content4: undefined,
// minOrderNum: 1,
// maxOrderNum: 1,
// timeRange: '',
// isSpliceOrder: 2,
// selfDeliveryDuration: 1,
// saleBindId: undefined,
// quota: 1,
// remark: undefined
minOrderNum: [ minOrderNum: [
{ required: true, message: "下单次数min不能为空", trigger: "blur" } { required: true, message: "下单次数min不能为空", trigger: "blur" }
], ],
@ -503,6 +462,7 @@ export default {
this.getListSale(); this.getListSale();
this.getList(); this.getList();
this.storeStatistics(); this.storeStatistics();
this.getNowIntegral();
}, },
methods: { methods: {
renderPrice(h, { column, $index }) { renderPrice(h, { column, $index }) {
@ -530,6 +490,12 @@ export default {
} }
); );
}, },
getNowIntegral() {
nowIntegral().then(response => {
this.nowIntegral = response.data;
}
);
},
storeStatistics() { storeStatistics() {
getStoreStatistics().then(response => { getStoreStatistics().then(response => {
this.map.storeCount = response.data.storeCount; this.map.storeCount = response.data.storeCount;