admin
2020-05-19 744594ef1a2f530fc3e86ea9dc48b62247f79420
fanli/src/main/java/com/yeshi/fanli/service/impl/lable/BoutiqueAutoRuleServiceImpl.java
@@ -1,9 +1,7 @@
package com.yeshi.fanli.service.impl.lable;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
@@ -13,12 +11,14 @@
import com.yeshi.fanli.dao.mybatis.lable.BoutiqueAutoRuleMapper;
import com.yeshi.fanli.entity.bus.lable.BoutiqueAutoRule;
import com.yeshi.fanli.exception.BoutiqueAutoRuleException;
import com.yeshi.fanli.exception.goods.quality.BoutiqueAutoRuleException;
import com.yeshi.fanli.job.QualityFactoryJob;
import com.yeshi.fanli.job.QuartzManager;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.lable.BoutiqueAutoRuleService;
import com.yeshi.fanli.util.StringUtil;
import net.sf.json.JSONObject;
@Service
public class BoutiqueAutoRuleServiceImpl implements BoutiqueAutoRuleService {
@@ -47,16 +47,15 @@
   }
   @Override
   @Transactional
   @Transactional(rollbackFor=Exception.class)
   public void deleteByPrimaryKey(Long id) throws BoutiqueAutoRuleException {
      boutiqueAutoRuleMapper.deleteByPrimaryKey(id);
   }
   @Override
   @Transactional
   @Transactional(rollbackFor=Exception.class)
   public void deleteBatchByPrimaryKey(List<Long> ids) throws BoutiqueAutoRuleException {
      for (Long id : ids) {
         // 删除
         boutiqueAutoRuleMapper.deleteByPrimaryKey(id);
      }
   }
@@ -100,61 +99,41 @@
      Integer source = boutiqueAutoRule.getSource();
      String cronTime = boutiqueAutoRule.getCronTime();
      // 不能为空: 触发时间、请求源、类目
      if (source == null || StringUtil.isNullOrEmpty(cronTime)) {
      if (source == null || StringUtil.isNullOrEmpty(cronTime))
         return;
      }
      Map<String, String> params = new HashMap<String, String>();
      params.put("source", source+"");
      params.put("searchContent", boutiqueAutoRule.getSearchContent());
      params.put("ruleId", boutiqueAutoRule.getId()+"");
      jsonTransformString(boutiqueAutoRule);
      
      // 任务名
      String JobName = "JOB_" + source + "_" + id;
      try {
         /* 新建任务 */
         if ("add".equalsIgnoreCase(type)) {
            QuartzManager.addJob(scheduler,QualityFactoryJob.class, JobName, cronTime, params);
            QuartzManager.addJob(scheduler,QualityFactoryJob.class, JobName, cronTime, boutiqueAutoRule);
         }
         /* 修改任务 */
         if ("modify".equalsIgnoreCase(type)) {
            QuartzManager.modifyJob(scheduler, QualityFactoryJob.class, JobName, cronTime, params);
            QuartzManager.modifyJob(scheduler, QualityFactoryJob.class, JobName, cronTime, boutiqueAutoRule);
         }
         /* 删除任务 */
         if ("delete".equalsIgnoreCase(type)) {
            QuartzManager.removeJob(scheduler, JobName);
         }
      } catch (Exception e) {
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
            e1.printStackTrace();
         }
         e.printStackTrace();
         LogHelper.errorDetailInfo(e);
      }
   }
   @Override
   public String setCronTime(String day, String time) {
      if (StringUtil.isNullOrEmpty(day) || StringUtil.isNullOrEmpty(time)) {
         return null;
      }
      String cronTime = null;
      if (day.contains("小时")) {
         
         String[] sts = time.split(":");
@@ -174,44 +153,31 @@
         if ("0".equals(minNumOne)) {
            minute = minute.substring(1, 2);
         }
         // 0 11 2/12 * * ?
         cronTime = 0 + " " + minute + " " + hour + "/" + day.replace("小时", "") + " * * ? ";
      }
      
      if (day.contains("天")) {
         String[] sts = time.split(":");
         // 小时
         String hour = sts[0];
         // 分
         String minute = sts[1];
         // 清除前面的0
         String hourNumOne = hour.substring(0, 1);
         if ("0".equals(hourNumOne)) {
            hour = hour.substring(1, 2);
         }
         // 清除前面的0
         String minNumOne = minute.substring(0, 1);
         if ("0".equals(minNumOne)) {
            minute = minute.substring(1, 2);
         }
            String[] sts = time.split(":");
            // 小时
            String hour = sts[0];
            // 分
            String minute = sts[1];
            // 清除前面的0
            String hourNumOne = hour.substring(0, 1);
            if ("0".equals(hourNumOne)) {
               hour = hour.substring(1, 2);
            }
            // 清除前面的0
            String minNumOne = minute.substring(0, 1);
            if ("0".equals(minNumOne)) {
               minute = minute.substring(1, 2);
            }
            // 0 34 3 1/5 * ?
            // 秒 小时 分 相隔天数
            cronTime = 0 + " " + minute + " " + hour + " " + "1/" + day.replace("天", "") + " * ?";
         // 0 34 3 1/5 * ?
         // 秒 小时 分 相隔天数
         cronTime = 0 + " " + minute + " " + hour + " " + "1/" + day.replace("天", "") + " * ?";
      }
      return cronTime;
   }
@@ -220,13 +186,12 @@
    */
   @Override
   public void startScheduler() {
      List<BoutiqueAutoRule> listStart = boutiqueAutoRuleMapper.queryStart();
      if (listStart != null && listStart.size() > 0) {
         for (BoutiqueAutoRule boutiqueAutoRule : listStart) {
            boolean validateDate = boutiqueAutoRuleService.validateDate(boutiqueAutoRule);
            if (validateDate) {
               jsonTransformString(boutiqueAutoRule);
               boutiqueAutoRuleService.setScheduler(boutiqueAutoRule, "add");
            }
         }
@@ -238,7 +203,6 @@
    */
   @Override
   public void shutdownJobs() throws Exception {
      /* 停止任务 */
      QuartzManager.shutdownJobs(scheduler);
@@ -246,25 +210,127 @@
   @Override
   public boolean validateDate(BoutiqueAutoRule boutiqueAutoRule) {
      long nowTime = new Date().getTime();
      Date endTime = boutiqueAutoRule.getEndTime();
      if (endTime != null) {
         long end = endTime.getTime();
         if (end - nowTime <= 0) {
            return false; // 结束时间已过
         } 
      }
      return true;
   }
   /**
    * json 转换未String
    * @param boutiqueAutoRule
    */
   public void jsonTransformString(BoutiqueAutoRule boutiqueAutoRule){
      String searchContent = boutiqueAutoRule.getSearchContent();
      if (StringUtil.isNullOrEmpty(searchContent)) {
         return;
      }
      JSONObject jsonData = JSONObject.fromObject(searchContent);
      if (jsonData.get("key") != null){
         // 搜索关键词
         boutiqueAutoRule.setKey(jsonData.get("key").toString());
      }
      if (jsonData.get("cateIds") != null){
         // 官方推荐商品库投放ID;淘宝类目id集合
         boutiqueAutoRule.setCateIds(jsonData.get("cateIds").toString());
      }
      if (jsonData.get("startTkRate") != null){
         // 佣金范围小值Double.valueOf(itoString());
         boutiqueAutoRule.setStartTkRate(Double.valueOf(jsonData.get("startTkRate").toString()));
      }
      if (jsonData.get("endTkRate") != null){
         // 佣金范围大值
          boutiqueAutoRule.setEndTkRate(Double.valueOf(jsonData.get("endTkRate").toString()));
      }
      if (jsonData.get("startSales") != null){
         // 销量小值
          boutiqueAutoRule.setStartSales((int)jsonData.get("startSales"));
      }
      if (jsonData.get("endSales") != null){
         // 销量大值
         boutiqueAutoRule.setEndSales((int)jsonData.get("endSales"));
      }
      if (jsonData.get("startZkPrice") != null){
         // 在售价范围小值
         boutiqueAutoRule.setStartZkPrice(Double.valueOf(jsonData.get("startZkPrice").toString()));
      }
      if (jsonData.get("endZkPrice") != null){
         // 在售价范围大值
         boutiqueAutoRule.setEndZkPrice(Double.valueOf(jsonData.get("endZkPrice").toString()));
      }
      if (jsonData.get("startPrice") != null){
         // 券后价范围小值
         boutiqueAutoRule.setStartPrice(Double.valueOf(jsonData.get("startPrice").toString()));
      }
      if (jsonData.get("endPrice") != null){
         // 券后价范围大值
         boutiqueAutoRule.setEndPrice(Double.valueOf(jsonData.get("endPrice").toString()));
      }
      if (jsonData.get("isTmall") != null){
         // 是否天猫
         boutiqueAutoRule.setIsTmall((int)jsonData.get("isTmall"));
      }
      if (jsonData.get("hasCoupon") != null){
         // 是否有券:1 有 0 无
         boutiqueAutoRule.setHasCoupon((int)jsonData.get("hasCoupon"));
      }
      if (jsonData.get("freeShipment") != null){
         // 是否包邮:1 有 0 无
         boutiqueAutoRule.setFreeShipment((int)jsonData.get("freeShipment"));
      }
      if (jsonData.get("needPrepay") != null){
         // 是否消费保障:1有 0 无
         boutiqueAutoRule.setNeedPrepay((int)jsonData.get("needPrepay"));
      }
      if (jsonData.get("npxLevel") != null){
         // 牛皮癣程度,取值:1:不限,2:无,3:轻微
         boutiqueAutoRule.setNpxLevel((int)jsonData.get("npxLevel"));
      }
      if (jsonData.get("includePayRate30") != null){
         // 成交转化是否高于行业均值        1 有 0 无
         boutiqueAutoRule.setIncludePayRate30((int)jsonData.get("includePayRate30"));
      }
      if (jsonData.get("includeGoodRate") != null){
         // 好评率是否高于行业均值            1 有 0 无
         boutiqueAutoRule.setIncludeGoodRate((int)jsonData.get("includeGoodRate"));
      }
      if (jsonData.get("includeRfdRate") != null){
         // 退款率是否低于行业均值             1 有 0 无
         boutiqueAutoRule.setIncludeRfdRate((int)jsonData.get("includeRfdRate"));
      }
      if (jsonData.get("lableNames") != null){
         boutiqueAutoRule.setLableNames(jsonData.get("lableNames").toString());
      }
      if (jsonData.get("maxPage") != null){
         // 是否包邮:1 有 0 无
         boutiqueAutoRule.setMaxPage((int)jsonData.get("maxPage"));
      }
   }
   public static void main(String[] args) {
      String t = "3小时";
      System.out.println(t.replace("小时", ""));
   }
}