Commit 0a08e624 by huluobin

卡券修改

parent 1d608601
......@@ -81,4 +81,20 @@ public interface CareerMapper extends BaseMapper<Career> {
* @return
*/
Integer queryTotalAgainOrderNum(@Param("technicianId") Integer id, @Param("month") String month);
/**
* 客户总好评
*
* @param id
*/
Double queryTotalPraisePercent(Integer id);
/**
* 客户当月好评
*
* @param id
* @param month
* @return
*/
Double queryMonthPraisePercent(@Param("id") Integer id, @Param("month") String month);
}
......@@ -14,6 +14,8 @@ import com.gogirl.domain.order.serve.ScheduleServe;
import com.gogirl.domain.product.serve.BaseFeatures;
import com.gogirl.domain.product.serve.FeaturesMapping;
import com.gogirl.domain.product.serve.ProduceSales;
import com.gogirl.domain.store.career.Career;
import com.gogirl.domain.store.store.StoreData;
import com.gogirl.domain.store.store.StoreManage;
import com.gogirl.domain.store.store.StoreTechnician;
import com.gogirl.domain.user.customer.Customer;
......@@ -22,12 +24,17 @@ import com.gogirl.domain.xcx.WeekConfig;
import com.gogirl.infrastructure.common.util.ListUtil;
import com.gogirl.infrastructure.mapper.market.coupon.CouponCustomerRelevanceMapper;
import com.gogirl.infrastructure.mapper.order.mall.MallOrderMapper;
import com.gogirl.infrastructure.mapper.order.serve.OrderManageMapper;
import com.gogirl.infrastructure.mapper.order.serve.OrderServeMapper;
import com.gogirl.infrastructure.mapper.order.serve.ScheduleManageMapper;
import com.gogirl.infrastructure.mapper.order.serve.ScheduleServeMapper;
import com.gogirl.infrastructure.mapper.product.serve.BaseFeaturesMapper;
import com.gogirl.infrastructure.mapper.product.serve.FeaturesMappingMapper;
import com.gogirl.infrastructure.mapper.product.serve.ProduceSalesMapper;
import com.gogirl.infrastructure.mapper.store.career.CareerMapper;
import com.gogirl.infrastructure.mapper.store.store.StoreDataMapper;
import com.gogirl.infrastructure.mapper.store.store.StoreManageMapper;
import com.gogirl.infrastructure.mapper.store.store.StoreTechnicianMapper;
import com.gogirl.infrastructure.mapper.user.customer.CustomerBalanceRecordMapper;
import com.gogirl.infrastructure.mapper.xcx.WeekConfigMapper;
import com.gogirl.infrastructure.subscribe.SubscribeService;
......@@ -79,6 +86,8 @@ public class Schedule {
private final FeaturesMappingService featuresMappingService;
private final OrderServeMapper orderServeMapper;
private final WeekConfigMapper weekConfigMapper;
/**
* 每天定时任务,判断优惠券是否过期
......@@ -284,9 +293,6 @@ public class Schedule {
orderServeMapper.syncOrderServeTimes();
}
private final WeekConfigMapper weekConfigMapper;
@Scheduled(cron = "0 0/15 * * * *")
public void weekTest() throws ParseException {
......@@ -302,4 +308,219 @@ public class Schedule {
localDate = localDate.plusDays(1);
}
}
private final StoreTechnicianMapper storeTechnicianMapper;
private final CareerMapper careerMapper;
private final OrderManageMapper orderManageMapper;
private final StoreManageMapper storeManageMapper;
private final StoreDataMapper storeDataMapper;
/**
* 定时同步美甲师成长历程
*/
@Scheduled(cron = "0 0/2 * * * *")
public void syncTechnicianCareer() {
log.info("定时同步美甲师成长历程** 任务开始");
List<StoreTechnician> storeTechnicianList = storeTechnicianMapper.selectList(new LambdaQueryWrapper<StoreTechnician>()
.eq(StoreTechnician::getStatus, 1));
storeTechnicianList.forEach(storeTechnician -> {
Career career = careerMapper.selectOne(new LambdaQueryWrapper<Career>().eq(Career::getTechnicianId, storeTechnician.getId()));
if (career == null) {
career = new Career();
career.setTechnicianId(storeTechnician.getTechnicianId());
}
career.setJoinDate(storeTechnician.getCreateTime());
if (storeTechnician.getCreateTime() != null) {
long pastMills = System.currentTimeMillis() - storeTechnician.getCreateTime().getTime();
int day = (int) (pastMills / 1000 / 60 / 60 / 24);
career.setOnJobTime(day);
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
String month = simpleDateFormat.format(new Date());
//当月开卡数量
Integer MonthBalanceCardNum = careerMapper.queryMonthBalanceCardNum(storeTechnician.getId(), month);
career.setMonthBalanceCardNum(MonthBalanceCardNum);
//考勤准时
career.setMonthAttendancePercent(null);
//信息录入完整度
career.setMonthInfoPercent(null);
//当月订单总数
Integer monthOrderNum = careerMapper.queryMonthOrderNum(storeTechnician.getId(), month);
career.setMonthOrderNum(monthOrderNum);
//客户好评率
career.setMonthPraisePercent(null);
//当月复购率
//复购率
Integer monthRepurchaseNum = careerMapper.queryMonthAgainOrderNum(storeTechnician.getId(), month);
if (monthOrderNum != null && monthOrderNum != 0) {
career.setMonthRepurchasePercent((double) monthRepurchaseNum / monthOrderNum);
}
//当月服务客户总数
Integer monthServeCustomerNum = careerMapper.queryMonthServeCustomerNum(storeTechnician.getId(), month);
career.setMonthServeCustomerNum(monthServeCustomerNum);
//当月服务总次数
career.setMonthServeNum(monthServeCustomerNum);
//总考勤准时率
career.setTotalAttendancePercent(null);
career.setTechnicianName(storeTechnician.getName());
//开卡总数
Integer totalBalanceCardNum = careerMapper.queryTotalBalanceCardNum(storeTechnician.getId(), month);
career.setTotalBalanceCardNum(totalBalanceCardNum);
//信息录入完整度
career.setTotalInfoPercent(null);
//订单总数
Integer totalOrderNum = careerMapper.queryTotalOrderNum(storeTechnician.getId(), month);
career.setTotalOrderNum(totalOrderNum);
//客户好评率
Double totalPraisePercent = careerMapper.queryTotalPraisePercent(storeTechnician.getId());
career.setTotalPraisePercent(totalPraisePercent);
Double monthPraisePercent = careerMapper.queryMonthPraisePercent(storeTechnician.getId(), month);
career.setMonthPraisePercent(monthPraisePercent);
//信息录入完整度
career.setMonthInfoPercent(storeTechnician.getInformationIntegrity());
career.setTotalAttendancePercent(storeTechnician.getInformationIntegrity());
//复购率
Integer totalRepurchaseNum = careerMapper.queryTotalAgainOrderNum(storeTechnician.getId(), month);
if (totalOrderNum != null && totalOrderNum != 0) {
career.setTotalRepurchasePercent((double) totalRepurchaseNum / totalOrderNum);
}
//服务客户总数
Integer totalServeCustomerNum = careerMapper.queryTotalServeCustomerNum(storeTechnician.getId(), month);
career.setTotalServeCustomerNum(totalServeCustomerNum);
//服务总次数
career.setTotalServeNum(totalServeCustomerNum);
career.setTechnicianId(storeTechnician.getId());
if (career.getId() != null) {
careerMapper.updateById(career);
} else {
careerMapper.insert(career);
}
});
log.info("定时同步美甲师成长历程** 任务结束");
}
/**
* 定时同步门店数据
*/
@Scheduled(cron = "0 0/2 * * * *")
public void syncStoreData() {
log.info("定时同步门店数据** 任务开始");
List<StoreManage> storeManageList = storeManageMapper.selectList(new LambdaQueryWrapper<StoreManage>()
.eq(StoreManage::getOperatingStatus, 1));
storeManageList.forEach(store -> {
StoreData storeData = storeDataMapper.selectOne(new LambdaQueryWrapper<StoreData>().eq(StoreData::getDepartmentId, store.getId()));
if (storeData == null) {
storeData = new StoreData();
storeData.setDepartmentId(store.getId());
storeData.setDepartmentName(store.getName());
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
String month = simpleDateFormat.format(new Date());
//当月开卡数量
Integer MonthBalanceCardNum = storeDataMapper.queryMonthBalanceCardNum(store.getId(), month);
storeData.setMonthBalanceCardNum(MonthBalanceCardNum);
//考勤准时
storeData.setMonthAttendancePercent(null);
//信息录入完整度
storeData.setMonthInfoPercent(null);
//当月订单总数
Integer monthOrderNum = storeDataMapper.queryMonthOrderNum(store.getId(), month);
storeData.setMonthOrderNum(monthOrderNum);
//客户好评率
storeData.setMonthPraisePercent(null);
//当月复购率
//复购率
Integer monthRepurchaseNum = storeDataMapper.queryMonthAgainOrderNum(store.getId(), month);
if (monthOrderNum != null && monthOrderNum != 0) {
storeData.setMonthRepurchasePercent((double) monthRepurchaseNum / monthOrderNum);
}
//当月服务客户总数
Integer monthServeCustomerNum = storeDataMapper.queryMonthServeCustomerNum(store.getId(), month);
storeData.setMonthServeCustomerNum(monthServeCustomerNum);
//当月服务总次数
storeData.setMonthServeNum(monthServeCustomerNum);
//总考勤准时率
storeData.setTotalAttendancePercent(null);
//开卡总数
Integer totalBalanceCardNum = storeDataMapper.queryTotalBalanceCardNum(store.getId(), month);
storeData.setTotalBalanceCardNum(totalBalanceCardNum);
//信息录入完整度
storeData.setTotalInfoPercent(null);
//订单总数
Integer totalOrderNum = storeDataMapper.queryTotalOrderNum(store.getId(), month);
storeData.setTotalOrderNum(totalOrderNum);
//客户好评率
storeData.setTotalPraisePercent(null);
//复购率
Integer totalRepurchaseNum = storeDataMapper.queryTotalAgainOrderNum(store.getId(), month);
if (totalOrderNum != null && totalOrderNum != 0) {
storeData.setTotalRepurchasePercent((double) totalRepurchaseNum / totalOrderNum);
}
//服务客户总数
Integer totalServeCustomerNum = storeDataMapper.queryTotalServeCustomerNum(store.getId(), month);
storeData.setTotalServeCustomerNum(totalServeCustomerNum);
//服务总次数
storeData.setTotalServeNum(totalServeCustomerNum);
// storeData.setTechnicianId(storeTechnician.getId());
if (storeData.getId() != null) {
storeDataMapper.updateById(storeData);
} else {
storeDataMapper.insert(storeData);
}
});
log.info("定时同步门店数据** 任务结束");
}
}
package com.gogirl.shared.store.query.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -14,6 +15,7 @@ public class CareerDTO {
private String technicianName;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("加入gogirl时间")
private Date joinDate;
......
......@@ -38,6 +38,13 @@ spring:
host: 127.0.0.1
port: 6379
database: 0
lettuce:
pool:
max-active: 200
max-wait: -1ms
max-idle: 20
min-idle: 0
timeout: 2000ms
#项目属性
gogirl:
......
......@@ -37,10 +37,11 @@ spring:
database: 0
lettuce:
pool:
max-active: 100
max-wait: 10000
max-idle: 100
min-idle: 10
max-active: 200
max-wait: -1ms
max-idle: 20
min-idle: 0
timeout: 2000ms
#项目属性
......
......@@ -36,6 +36,14 @@ spring:
host: 127.0.0.1
port: 6379
database: 0
lettuce:
pool:
max-active: 200
max-wait: -1ms
max-idle: 20
min-idle: 0
timeout: 2000ms
#项目属性
......
......@@ -62,7 +62,9 @@
and (t1.`status` = 3 or t1.`status` = 4)
and t1.launch_time > #{month}
GROUP BY t1.id) tt
LEFT JOIN order_manage oo on tt.order_user = oo.order_user and oo.launch_time &gt; DATE_SUB(tt.launch_time, INTERVAL 45 day) and oo.launch_time &lt; tt.launch_time
LEFT JOIN order_manage oo on tt.order_user = oo.order_user and
oo.launch_time &gt; DATE_SUB(tt.launch_time, INTERVAL 45 day) and
oo.launch_time &lt; tt.launch_time
where oo.id is not null
</select>
......@@ -74,8 +76,33 @@
where t2.technician_id like concat('%', #{technicianId}, '%')
and (t1.`status` = 3 or t1.`status` = 4)
GROUP BY t1.id) tt
LEFT JOIN order_manage oo on tt.order_user = oo.order_user and oo.launch_time &gt; DATE_SUB(tt.launch_time, INTERVAL 45 day) and oo.launch_time &lt; tt.launch_time
LEFT JOIN order_manage oo on tt.order_user = oo.order_user and
oo.launch_time &gt; DATE_SUB(tt.launch_time, INTERVAL 45 day) and
oo.launch_time &lt; tt.launch_time
where oo.id is not null
</select>
<select id="queryTotalPraisePercent" resultType="java.lang.Double">
SELECT (SELECT count(id)
from order_comment
where technician_id = #{id}
and level &gt;= 3)
/
(SELECT count(id)
from order_comment
where technician_id = #{id}
)
</select>
<select id="queryMonthPraisePercent" resultType="java.lang.Double">
SELECT (SELECT count(id)
from order_comment
where technician_id = 127
and level &gt;= 3
and finish_time &gt; #{month})
/
(SELECT count(id)
from order_comment
where technician_id = 127
)
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment