门店号管理

dev_0531
LegnaYet 6 years ago
parent acb83e61a7
commit e572fa006c

@ -5,6 +5,8 @@ import com.kiisoo.ic.employee.mapper.PrivilageCpUserDOMapper;
import com.kiisoo.ic.generalize.mapper.PoiCustomerContactDataStatMapper; import com.kiisoo.ic.generalize.mapper.PoiCustomerContactDataStatMapper;
import com.kiisoo.ic.store.mapper.PrivilageCpUserStoreDOMapper; import com.kiisoo.ic.store.mapper.PrivilageCpUserStoreDOMapper;
import com.kiisoo.ic.store.mapper.StorePromotionDataDOMapper; import com.kiisoo.ic.store.mapper.StorePromotionDataDOMapper;
import com.kiisoo.ic.system.entity.SysTaskDO;
import com.kiisoo.ic.system.mapper.SysTaskDOMapper;
import com.kiisoo.ic.utils.DateUtils; import com.kiisoo.ic.utils.DateUtils;
import com.lmax.disruptor.BlockingWaitStrategy; import com.lmax.disruptor.BlockingWaitStrategy;
import com.lmax.disruptor.RingBuffer; import com.lmax.disruptor.RingBuffer;
@ -21,6 +23,8 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.kiisoo.ic.system.constant.SysTaskConstant.TASK_STATUS_FINISHED;
/** /**
* Disruptor * Disruptor
*/ */
@ -43,9 +47,11 @@ public class CustomerBehaviorJob {
private PoiCustomerContactDataStatMapper poiCustomerContactDataStatMapper; private PoiCustomerContactDataStatMapper poiCustomerContactDataStatMapper;
@Autowired @Autowired
private StorePromotionDataDOMapper storePromotionDataDOMapper; private StorePromotionDataDOMapper storePromotionDataDOMapper;
@Autowired
private SysTaskDOMapper sysTaskDOMapper;
public void handle(Date startDate, Date endDate) throws WxErrorException { public void handle(Date startDate, Date endDate, SysTaskDO sysTaskDO) throws WxErrorException {
//创建线程池 //创建线程池
ExecutorService executors = Executors.newFixedThreadPool(THREAD_NUMBERS); ExecutorService executors = Executors.newFixedThreadPool(THREAD_NUMBERS);
@ -81,5 +87,8 @@ public class CustomerBehaviorJob {
disruptor.shutdown(); disruptor.shutdown();
sysTaskDO.setStatus(TASK_STATUS_FINISHED);
sysTaskDOMapper.updateById(sysTaskDO);
} }
} }

@ -1,19 +1,19 @@
package com.kiisoo.ic.job.behavior; package com.kiisoo.ic.job.behavior;
import com.kiisoo.ic.store.service.StorePromotionDataService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.kiisoo.ic.system.entity.SysTaskDO;
import com.kiisoo.ic.system.mapper.SysTaskDOMapper;
import com.kiisoo.ic.utils.DateUtils; import com.kiisoo.ic.utils.DateUtils;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.Random;
import static com.kiisoo.ic.system.constant.SysTaskConstant.*;
/** /**
* @author jinchaofan * @author jinchaofan
@ -30,13 +30,25 @@ public class StorePromotionDataJob {
*/ */
@Autowired @Autowired
private CustomerBehaviorJob customerBehaviorJob; private CustomerBehaviorJob customerBehaviorJob;
@Autowired
private SysTaskDOMapper sysTaskDOMapper;
@Scheduled(cron = "0 0 1 * * ?") @Scheduled(cron = "0 0 1 * * ?")
public void syncData(){ public void syncData(){
try { try {
log.info("<--获取联系客户统计数据定时任务执行-->"); int random = new Random(100).nextInt();
customerBehaviorJob.handle(DateUtils.addDay(new Date(),-3),DateUtils.addDay(new Date(),-1)); Thread.sleep(random*1000);
log.info("<--获取联系客户统计数据定时任务结束-->"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
QueryWrapper<SysTaskDO> qw = new QueryWrapper<>();
qw.eq("type",TASK_TYPE_USER_BEHAVIOR).eq("create_time",sdf.format(new Date())).last("limit 1");
SysTaskDO sysTaskDO = sysTaskDOMapper.selectOne(qw);
if (sysTaskDO == null){
sysTaskDO = new SysTaskDO(TASK_NAME_USER_BEHAVIOR,TASK_STATUS_RUNNING,TASK_TYPE_USER_BEHAVIOR,new Date());
sysTaskDOMapper.insert(sysTaskDO);
log.info("<--获取联系客户统计数据定时任务执行-->");
customerBehaviorJob.handle(DateUtils.addDay(new Date(),-3),DateUtils.addDay(new Date(),-1),sysTaskDO);
log.info("<--获取联系客户统计数据定时任务结束-->");
}
} catch (Exception e) { } catch (Exception e) {
log.error("获取联系客户统计数据任务出错", e); log.error("获取联系客户统计数据任务出错", e);
} }

@ -6,6 +6,8 @@ import com.kiisoo.ic.employee.entity.PrivilageCpUserDO;
import com.kiisoo.ic.employee.mapper.PrivilageCpUserDOMapper; import com.kiisoo.ic.employee.mapper.PrivilageCpUserDOMapper;
import com.kiisoo.ic.store.entity.PrivilageCpUserStoreDO; import com.kiisoo.ic.store.entity.PrivilageCpUserStoreDO;
import com.kiisoo.ic.store.mapper.PrivilageCpUserStoreDOMapper; import com.kiisoo.ic.store.mapper.PrivilageCpUserStoreDOMapper;
import com.kiisoo.ic.system.entity.SysTaskDO;
import com.kiisoo.ic.system.mapper.SysTaskDOMapper;
import com.lmax.disruptor.BlockingWaitStrategy; import com.lmax.disruptor.BlockingWaitStrategy;
import com.lmax.disruptor.RingBuffer; import com.lmax.disruptor.RingBuffer;
import com.lmax.disruptor.dsl.Disruptor; import com.lmax.disruptor.dsl.Disruptor;
@ -23,6 +25,7 @@ import java.util.concurrent.Executors;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.kiisoo.ic.config.WxCpConfiguration.APPLICATIONID; import static com.kiisoo.ic.config.WxCpConfiguration.APPLICATIONID;
import static com.kiisoo.ic.system.constant.SysTaskConstant.TASK_STATUS_FINISHED;
/** /**
* Disruptor * Disruptor
@ -42,9 +45,11 @@ public class CustomerCountJob {
private PrivilageCpUserDOMapper privilageCpUserDOMapper; private PrivilageCpUserDOMapper privilageCpUserDOMapper;
@Autowired @Autowired
private PrivilageCpUserStoreDOMapper privilageCpUserStoreDOMapper; private PrivilageCpUserStoreDOMapper privilageCpUserStoreDOMapper;
@Autowired
private SysTaskDOMapper sysTaskDOMapper;
public void handle(Boolean isAll) throws WxErrorException { public void handle(Boolean isAll,SysTaskDO sysTaskDO) throws WxErrorException {
//创建线程池 //创建线程池
ExecutorService executors = Executors.newFixedThreadPool(THREAD_NUMBERS); ExecutorService executors = Executors.newFixedThreadPool(THREAD_NUMBERS);
@ -88,5 +93,9 @@ public class CustomerCountJob {
} }
disruptor.shutdown(); disruptor.shutdown();
sysTaskDO.setStatus(TASK_STATUS_FINISHED);
sysTaskDOMapper.updateById(sysTaskDO);
} }
} }

@ -1,10 +1,18 @@
package com.kiisoo.ic.job.count; package com.kiisoo.ic.job.count;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.kiisoo.ic.system.entity.SysTaskDO;
import com.kiisoo.ic.system.mapper.SysTaskDOMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import static com.kiisoo.ic.system.constant.SysTaskConstant.*;
@Service @Service
@Slf4j @Slf4j
@ -12,10 +20,42 @@ public class SyncCountJobService {
@Autowired @Autowired
private CustomerCountJob customerDataJob; private CustomerCountJob customerDataJob;
@Autowired
private SysTaskDOMapper sysTaskDOMapper;
@Scheduled(cron = "0 0/15 9 * * ?") @Scheduled(cron = "0 0/15 9 * * ?")
public void getCustomerInfo(){ public void syncStoreCount(){
try {
int random = new Random(100).nextInt();
Thread.sleep(random*1000);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:00");
QueryWrapper<SysTaskDO> qw = new QueryWrapper<>();
qw.eq("type",TASK_TYPE_STORE_COUNT).eq("create_time",sdf.format(new Date())).last("limit 1");
SysTaskDO sysTaskDO = sysTaskDOMapper.selectOne(qw);
if (sysTaskDO == null){
sysTaskDO = new SysTaskDO(TASK_NAME_STORE_COUNT,TASK_STATUS_RUNNING,TASK_TYPE_STORE_COUNT,new Date());
sysTaskDOMapper.insert(sysTaskDO);
customerDataJob.handle(false,sysTaskDO);
}
}catch (Exception e){
log.error("",e);
}
}
@Scheduled(cron = "0 0 1 * * ?")
public void syncAllCount(){
try { try {
customerDataJob.handle(false); int random = new Random(100).nextInt();
Thread.sleep(random*1000);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
QueryWrapper<SysTaskDO> qw = new QueryWrapper<>();
qw.eq("type",TASK_TYPE_ALL_COUNT).eq("create_time",sdf.format(new Date())).last("limit 1");
SysTaskDO sysTaskDO = sysTaskDOMapper.selectOne(qw);
if (sysTaskDO == null){
sysTaskDO = new SysTaskDO(TASK_NAME_ALL_COUNT,TASK_STATUS_RUNNING,TASK_TYPE_ALL_COUNT,new Date());
sysTaskDOMapper.insert(sysTaskDO);
customerDataJob.handle(true,sysTaskDO);
}
}catch (Exception e){ }catch (Exception e){
log.error("",e); log.error("",e);
} }

@ -0,0 +1,38 @@
package com.kiisoo.ic.system.constant;
public class SysTaskConstant {
/**
*
*/
public static final Integer TASK_TYPE_ALL_COUNT = 1;
/**
*
*/
public static final Integer TASK_TYPE_STORE_COUNT = 2;
/**
*
*/
public static final Integer TASK_TYPE_USER_BEHAVIOR = 3;
/**
*
*/
public static final String TASK_NAME_ALL_COUNT = "全量拓客总数";
/**
*
*/
public static final String TASK_NAME_STORE_COUNT = "店铺拓客总数";
/**
*
*/
public static final String TASK_NAME_USER_BEHAVIOR = "全量客户统计";
/**
*
*/
public static final Integer TASK_STATUS_RUNNING = 1;
/**
*
*/
public static final Integer TASK_STATUS_FINISHED = 2;
}

@ -0,0 +1,62 @@
package com.kiisoo.ic.system.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* sys_task
* @author
*/
@Data
@TableName("sys_task")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SysTaskDO implements Serializable {
/**
* id
*/
@TableId(value = "id",type = IdType.AUTO)
private Integer id;
/**
*
*/
private String taskName;
/**
*
*/
private Integer status;
/**
* 1 2 3
*/
private Integer type;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime;
private static final long serialVersionUID = 1L;
public SysTaskDO() {}
public SysTaskDO(String taskName, Integer status, Integer type, Date createTime) {
this.taskName = taskName;
this.status = status;
this.type = type;
this.createTime = createTime;
}
}

@ -0,0 +1,8 @@
package com.kiisoo.ic.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kiisoo.ic.system.entity.SysTaskDO;
public interface SysTaskDOMapper extends BaseMapper<SysTaskDO> {
}

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kiisoo.ic.system.mapper.SysTaskDOMapper">
</mapper>
Loading…
Cancel
Save