admin
2024-01-23 81da61b828e29b7745e1382dfbbaeb685dc083ef
fanli/src/main/java/com/yeshi/fanli/controller/admin/BoutiqueAutoRuleAdminController.java
@@ -1,772 +1,772 @@
package com.yeshi.fanli.controller.admin;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import com.yeshi.fanli.entity.accept.AdminAcceptData;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
import com.yeshi.fanli.entity.bus.clazz.TaoBaoClass;
import com.yeshi.fanli.entity.bus.lable.BoutiqueAutoRule;
import com.yeshi.fanli.entity.taobao.TaobaoMeterial;
import com.yeshi.fanli.exception.goods.quality.BoutiqueAutoRuleException;
import com.yeshi.fanli.service.inter.goods.GoodsClassService;
import com.yeshi.fanli.service.inter.goods.TaoBaoClassService;
import com.yeshi.fanli.service.inter.lable.BoutiqueAutoRuleService;
import com.yeshi.fanli.service.inter.taobao.TaobaoMeterialService;
import com.yeshi.common.entity.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import org.yeshi.utils.JsonUtil;
@Controller
@RequestMapping("admin/new/api/v1/autoRule")
public class BoutiqueAutoRuleAdminController {
   @Resource
   private BoutiqueAutoRuleService boutiqueAutoRuleService;
   @Resource
   private TaobaoMeterialService taobaoMeterialService;
   @Resource
   private GoodsClassService goodsClassService;
   @Resource
   private TaoBaoClassService taoBaoClassService;
   /**
    * 新增入库规则
    *
    * @param callback
    * @param boutiqueAutoRule
    * @param out
    */
   @RequestMapping(value = "saveAdd")
   public void saveAdd(AdminAcceptData acceptData, String callback, BoutiqueAutoRule boutiqueAutoRule, PrintWriter out) {
      try {
         // 验证传递数据是否正确
         boolean validationData = validationData(callback, boutiqueAutoRule, out);
         // 验证未通过
         if (!validationData) {
            return;
         }
         // 转换json
         transformJsonString(boutiqueAutoRule);
         // cron时间
         String cronTime = boutiqueAutoRuleService.setCronTime(boutiqueAutoRule.getExecuteDay(),boutiqueAutoRule.getExecuteTime());
         boutiqueAutoRule.setCronTime(cronTime);
         // 默认状态为启用
         boutiqueAutoRule.setState(1);
         boutiqueAutoRule.setCreatetime(new Date());
         boutiqueAutoRule.setUpdatetime(new Date());
         boutiqueAutoRuleService.insertSelective(boutiqueAutoRule);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("保存成功"));
         // 验证当前任务是否立即启动
         boolean validateDate = boutiqueAutoRuleService.validateDate(boutiqueAutoRule);
         if (validateDate) {
            // 任务启动
            boutiqueAutoRuleService.setScheduler(boutiqueAutoRule, "add");
         }
      } catch (BoutiqueAutoRuleException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("保存失败"));
         e.printStackTrace();
      }
   }
   /**
    * 获取入库规则-修改
    *
    * @param callback
    * @param id
    * @param out
    */
   @RequestMapping(value = "enterModify")
   public void enterModify(AdminAcceptData acceptData,String callback, Long id, PrintWriter out) {
      try {
         if (id == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确参数"));
            return;
         }
         BoutiqueAutoRule boutiqueAutoRule = boutiqueAutoRuleService.selectByPrimaryKey(id);
         if (boutiqueAutoRule == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该规则已不存在"));
            return;
         }
         jsonTransformString(boutiqueAutoRule);
         Integer source = boutiqueAutoRule.getSource();
         if (source.equals(BoutiqueAutoRule.TB_OPTIONAL) || source == BoutiqueAutoRule.TB_OPTIONAL) {
            String className = boutiqueAutoRule.getClassName();
            GoodsClass rb = goodsClassService.getGoodsClass(Long.parseLong(className));
            if (rb != null) {
               boutiqueAutoRule.setClassNameChinese(rb.getName());
            }
         }
         GsonBuilder gsonBuilder = new GsonBuilder();
         gsonBuilder.serializeNulls();
         Gson gson = gsonBuilder.setDateFormat("yyyy-MM-dd").create();
         JSONObject data = new JSONObject();
         data.put("autoRule", gson.toJson(boutiqueAutoRule));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (BoutiqueAutoRuleException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("获取失败"));
         e.printStackTrace();
      }
   }
   /**
    * 修改入库规则
    *
    * @param callback
    * @param boutiqueAutoRule
    * @param out
    */
   @RequestMapping(value = "saveModify")
   public void saveModify(AdminAcceptData acceptData,String callback, BoutiqueAutoRule boutiqueAutoRule, PrintWriter out) {
      try {
         Long id = boutiqueAutoRule.getId();
         if (id == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确参数"));
            return;
         }
         BoutiqueAutoRule crrent = boutiqueAutoRuleService.selectByPrimaryKey(id);
         if (crrent == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该条规则已不存在"));
            return;
         }
         // 验证传递数据是否正确
         boolean validationData = validationData(callback, boutiqueAutoRule, out);
         // 验证未通过
         if (!validationData) {
            return;
         }
         transformJsonString(boutiqueAutoRule);
         String cronTime = boutiqueAutoRuleService.setCronTime(boutiqueAutoRule.getExecuteDay(),boutiqueAutoRule.getExecuteTime());
         // cron时间
         boutiqueAutoRule.setCronTime(cronTime);
         boutiqueAutoRule.setState(crrent.getState());
         boutiqueAutoRule.setCreatetime(crrent.getCreatetime());
         // 更新时间
         boutiqueAutoRule.setUpdatetime(new Date());
         boutiqueAutoRuleService.updateByPrimaryKey(boutiqueAutoRule);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("修改成功"));
         // 验证当前任务是否需要修改 、立即执行
         Integer crrentState = crrent.getState();
         if (crrentState != null) {
            if (crrentState.equals(1)){
               boolean validateDate = boutiqueAutoRuleService.validateDate(boutiqueAutoRule);
               if (validateDate) {
                  // 任务修改
                  boutiqueAutoRuleService.setScheduler(boutiqueAutoRule, "modify");
               } else {
                  boutiqueAutoRuleService.setScheduler(boutiqueAutoRule, "delete");
               }
            }
         }
      } catch (BoutiqueAutoRuleException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("修改失败"));
         e.printStackTrace();
      }
   }
   /**
    * 修改规则状态
    *
    * @param callback
    * @param id
    * @param state
    *            状态:1启用 0停用
    * @param out
    */
   @RequestMapping(value = "saveState")
   public void saveState(AdminAcceptData acceptData,String callback, Long id, Integer state, PrintWriter out) {
      try {
         if (id == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确参数"));
            return;
         }
         BoutiqueAutoRule crrent = boutiqueAutoRuleService.selectByPrimaryKey(id);
         if (crrent == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该条规则已不存在"));
            return;
         }
         if (state == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("修改状态为空"));
            return;
         }
         crrent.setState(state);
         crrent.setUpdatetime(new Date());
         boutiqueAutoRuleService.updateByPrimaryKeySelective(crrent);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("修改成功"));
         boolean validateDate = boutiqueAutoRuleService.validateDate(crrent);
         if (state.equals(1)) {
            if (validateDate) {
               boutiqueAutoRuleService.setScheduler(crrent, "add");    // 任务启动
            }
         } else {
            boutiqueAutoRuleService.setScheduler(crrent, "delete");    // 任务删除
         }
      } catch (BoutiqueAutoRuleException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("修改失败"));
         e.printStackTrace();
      }
   }
   /**
    * 查询入库规则
    *
    * @param callback
    * @param pageIndex
    * @param pageSize
    * @param source
    *            来源
    * @param out
    */
   @RequestMapping(value = "query")
   public void query(AdminAcceptData acceptData,String callback, Integer pageIndex, Integer pageSize, Integer source,
         String key, Integer state, Integer sort,  PrintWriter out) {
      try {
         if (pageIndex == null)
            pageIndex = 1;
         if (pageSize == null)
            pageSize = Constant.PAGE_SIZE;
         List<BoutiqueAutoRule> list = boutiqueAutoRuleService.query((pageIndex - 1) * pageSize,
               pageSize, source, key, state, sort);
         if (list == null || list.size() == 0) {
            out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("暂无数据")));
            return;
         }
         for (BoutiqueAutoRule boutiqueAutoRule: list) {
            jsonTransformString(boutiqueAutoRule);
            if (source.equals(BoutiqueAutoRule.TB_OPTIONAL) || source == BoutiqueAutoRule.TB_OPTIONAL) {
               String className = boutiqueAutoRule.getClassName();
               GoodsClass rb = goodsClassService.getGoodsClass(Long.parseLong(className));
               if (rb != null) {
                  boutiqueAutoRule.setClassNameChinese(rb.getName());
               }
            }
         }
         long count = boutiqueAutoRuleService.queryCount(source, key, state);
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
         PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
         GsonBuilder gsonBuilder = new GsonBuilder();
         gsonBuilder.serializeNulls();
         Gson gson = gsonBuilder.setDateFormat("yyyy/MM/dd HH:mm:ss").create();
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         data.put("resultList", gson.toJson(list));
         out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data)));
      } catch (Exception e) {
         e.printStackTrace();
         out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("查询失败")));
      }
   }
   /**
    * 修改入库规则
    *
    * @param callback
    * @param boutiqueAutoRule
    * @param out
    */
   @RequestMapping(value = "delete")
   public void delete(AdminAcceptData acceptData,String callback, Long id, PrintWriter out) {
      try {
         if (id == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确参数"));
            return;
         }
         BoutiqueAutoRule boutiqueAutoRule = boutiqueAutoRuleService.selectByPrimaryKey(id);
         if (boutiqueAutoRule == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该规则已被删除"));
            return;
         }
         // 任务删除
         boutiqueAutoRuleService.setScheduler(boutiqueAutoRule, "delete");
         boutiqueAutoRuleService.deleteByPrimaryKey(id);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("删除成功"));
      } catch (BoutiqueAutoRuleException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("删除失败"));
         e.printStackTrace();
      }
   }
   /**
    * 修改入库规则
    *
    * @param callback
    * @param boutiqueAutoRule
    * @param out
    */
   @RequestMapping(value = "shutdownJobs")
   public void shutdownJobs(AdminAcceptData acceptData,String callback, PrintWriter out) {
      try {
         boutiqueAutoRuleService.shutdownJobs();
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
   /**
    * 将查询筛选条件转换为json
    * @param boutiqueAutoRule
    */
   public void transformJsonString(BoutiqueAutoRule boutiqueAutoRule){
      JSONObject data = new JSONObject();
      Integer source = boutiqueAutoRule.getSource();
      // 类目id
      if (source.equals(BoutiqueAutoRule.TB_OPTIONAL)) {
         data.put("systemCid", boutiqueAutoRule.getClassName());
      }
      if (boutiqueAutoRule.getKey() != null){
         // 搜索关键词
         data.put("key", boutiqueAutoRule.getKey());
      }
      if (boutiqueAutoRule.getTitle() != null){
         // 搜索关键词
         data.put("title", boutiqueAutoRule.getTitle());
      }
      if ( boutiqueAutoRule.getCateIds() != null){
         // 官方推荐商品库投放ID;淘宝类目id集合
         data.put("cateIds", boutiqueAutoRule.getCateIds());
      }
      if ( boutiqueAutoRule.getStartTkRate() != null){
         // 佣金范围小值
         data.put("startTkRate", boutiqueAutoRule.getStartTkRate());
      }
      if ( boutiqueAutoRule.getEndTkRate() != null){
         // 佣金范围大值
         data.put("endTkRate", boutiqueAutoRule.getEndTkRate());
      }
      if ( boutiqueAutoRule.getStartSales() != null){
         // 销量小值
         data.put("startSales", boutiqueAutoRule.getStartSales());
      }
      if ( boutiqueAutoRule.getEndSales() != null){
         // 销量大值
         data.put("endSales", boutiqueAutoRule.getEndSales());
      }
      if ( boutiqueAutoRule.getStartZkPrice() != null){
         // 在售价范围小值
         data.put("startZkPrice", boutiqueAutoRule.getStartZkPrice());
      }
      if ( boutiqueAutoRule.getEndZkPrice() != null){
         // 在售价范围大值
         data.put("endZkPrice", boutiqueAutoRule.getEndZkPrice());
      }
      if ( boutiqueAutoRule.getStartPrice() != null){
         // 券后价范围小值
         data.put("startPrice", boutiqueAutoRule.getStartPrice());
      }
      if ( boutiqueAutoRule.getEndPrice() != null){
         // 券后价范围大值
         data.put("endPrice", boutiqueAutoRule.getEndPrice());
      }
      if ( boutiqueAutoRule.getIsTmall() != null){
         // 是否天猫
         data.put("isTmall", boutiqueAutoRule.getIsTmall());
      }
      if ( boutiqueAutoRule.getHasCoupon() != null){
         // 是否有券:1 有 0 无
         data.put("hasCoupon", boutiqueAutoRule.getHasCoupon());
      }
      if ( boutiqueAutoRule.getFreeShipment() != null){
         // 是否包邮:1 有 0 无
         data.put("freeShipment", boutiqueAutoRule.getFreeShipment());
      }
      if ( boutiqueAutoRule.getNeedPrepay() != null){
         // 是否消费保障:1有 0 无
         data.put("needPrepay", boutiqueAutoRule.getNeedPrepay());
      }
      if (boutiqueAutoRule.getNpxLevel() != null){
         // 牛皮癣程度,取值:1:不限,2:无,3:轻微
         data.put("npxLevel", boutiqueAutoRule.getNpxLevel());
      }
      if ( boutiqueAutoRule.getIncludePayRate30() != null){
         // 成交转化是否高于行业均值        1 有 0 无
         data.put("includePayRate30", boutiqueAutoRule.getIncludePayRate30());
      }
      if ( boutiqueAutoRule.getIncludeGoodRate() != null){
         // 好评率是否高于行业均值            1 有 0 无
         data.put("includeGoodRate", boutiqueAutoRule.getIncludeGoodRate());
      }
      if ( boutiqueAutoRule.getIncludeRfdRate() != null){
         // 退款率是否低于行业均值             1 有 0 无
         data.put("includeRfdRate", boutiqueAutoRule.getIncludeRfdRate());
      }
      if ( boutiqueAutoRule.getLableNames() != null){
         data.put("lableNames", boutiqueAutoRule.getLableNames());
      }
      // 请求最大页码
      if (boutiqueAutoRule.getMaxPage() != null){
         data.put("maxPage", boutiqueAutoRule.getMaxPage());
      }
      // 请求最大页码
      if (boutiqueAutoRule.getClassName() != null){
         if (source.equals(BoutiqueAutoRule.TB_OPTIONAL) || source== BoutiqueAutoRule.TB_OPTIONAL) {
            String classId = boutiqueAutoRule.getClassName();
            if (!StringUtil.isNullOrEmpty(classId)){
               GoodsClass rb = goodsClassService.getGoodsClass(Long.parseLong(classId));
               if (rb != null) {
                  data.put("sourceCalss", rb.getName());
                  boutiqueAutoRule.setSourceCalss(rb.getName());
               }
            }
         }  else if (source.equals(BoutiqueAutoRule.TB_MATERIAL) || source == BoutiqueAutoRule.TB_MATERIAL) {
            String subName = boutiqueAutoRule.getSubclassName();
            String superName = boutiqueAutoRule.getClassName();
            if (StringUtil.isNullOrEmpty(subName)) {
               data.put("sourceCalss", superName);
               boutiqueAutoRule.setSourceCalss(superName);
            } else {
               data.put("sourceCalss", superName +" "+ subName);
               boutiqueAutoRule.setSourceCalss(superName +" "+ subName);
            }
         }
      }
      boutiqueAutoRule.setSearchContent(data.toString());
   }
   /**
    * 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"));
      }
   }
   /**
    * 验证前端展示数据是否符合规范
    * @param callback
    * @param boutiqueAutoRule
    * @param out
    * @return
    */
   public boolean validationData(String callback, BoutiqueAutoRule boutiqueAutoRule, PrintWriter out){
      Integer source = boutiqueAutoRule.getSource();
      if (source == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("来源不能为空"));
         return false;
      }
      Integer maxPage = boutiqueAutoRule.getMaxPage();
      if (maxPage == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请求最大页数不能空"));
         return false;
      }
      if (source.equals(BoutiqueAutoRule.TB_OPTIONAL) || source== BoutiqueAutoRule.TB_OPTIONAL) {
         /* 淘宝导购物料API 数据验证 */
         String key = boutiqueAutoRule.getKey();
         String classId = boutiqueAutoRule.getClassName();
         if (StringUtil.isNullOrEmpty(key) && StringUtil.isNullOrEmpty(classId)) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("类型与关键词不能同时为空"));
            return false;
         }
         if (!StringUtil.isNullOrEmpty(classId)){
            GoodsClass rb = goodsClassService.getGoodsClass(Long.parseLong(classId));
            if (rb == null) {
               JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该类型已不存在,请刷新重试"));
               return false;
            }
            List<TaoBaoClass> listCatIds = taoBaoClassService.listBySystemCid(0, 10, Long.parseLong(classId));
            if (listCatIds == null || listCatIds.size() == 0) {
               JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(rb.getName() + "对应淘宝id为空,请通知相关人员进行维护"));
               return false;
            }
            String taobaoCatIds = "";
            for (TaoBaoClass taoBaoClass: listCatIds) {
                  Integer categoryId = taoBaoClass.getCategoryId();
                 if (categoryId == null ) {
                    continue;
                 }
                 taobaoCatIds += categoryId + ",";
            }
            if (StringUtil.isNullOrEmpty(taobaoCatIds)){
               JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(rb.getName() + "对应淘宝id为空,请通知相关人员进行维护"));
               return false;
            }
            boutiqueAutoRule.setCateIds(taobaoCatIds.substring(0, taobaoCatIds.length()-1));
         }
      }  else if (source.equals(BoutiqueAutoRule.TB_MATERIAL) || source == BoutiqueAutoRule.TB_MATERIAL) {
         /* 淘宝官方推荐   数据验证  */
         String subName = boutiqueAutoRule.getSubclassName();
         String superName = boutiqueAutoRule.getClassName();
         if (StringUtil.isNullOrEmpty(subName) && StringUtil.isNullOrEmpty(superName) ) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择正确的类目"));
            return false;
         }
         List<TaobaoMeterial> taobaoMeterials = taobaoMeterialService.selectByClassNameAndSuperName(subName, superName);
         if (taobaoMeterials == null || taobaoMeterials.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该类目信息不存在"));
            return false;
         } else if (taobaoMeterials.size() > 1) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择相应的子类"));
            return false;
         }
         TaobaoMeterial taobaoMeterial = taobaoMeterials.get(0);
         Integer materialId = taobaoMeterial.getMaterialId();
         if (materialId == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该类目物料ID不存在"));
            return false;
         }
         boutiqueAutoRule.setCateIds(materialId + "");
      } else {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确来源"));
         return false;
      }
      // 生效时间
      Date startTime = boutiqueAutoRule.getStartTime();
      // 失效时间
      Date endTime = boutiqueAutoRule.getEndTime();
      if (endTime != null) {
         if (startTime != null && startTime.getTime() > endTime.getTime()){
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("生效时间不能大于失效时间"));
            return false;
         }
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(endTime);
         calendar.set(Calendar.HOUR, 23);
         calendar.set(Calendar.MINUTE, 59);
         calendar.set(Calendar.SECOND, 59);
         boutiqueAutoRule.setEndTime(calendar.getTime());
      }
      if (startTime == null) {
          boutiqueAutoRule.setStartTime(new Date());
      }
      return true;
   }
}
package com.yeshi.fanli.controller.admin;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import com.yeshi.fanli.entity.accept.AdminAcceptData;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
import com.yeshi.fanli.entity.bus.clazz.TaoBaoClass;
import com.yeshi.fanli.entity.bus.lable.BoutiqueAutoRule;
import com.yeshi.fanli.entity.taobao.TaobaoMeterial;
import com.yeshi.fanli.exception.goods.quality.BoutiqueAutoRuleException;
import com.yeshi.fanli.service.inter.goods.GoodsClassService;
import com.yeshi.fanli.service.inter.goods.TaoBaoClassService;
import com.yeshi.fanli.service.inter.lable.BoutiqueAutoRuleService;
import com.yeshi.fanli.service.inter.taobao.TaobaoMeterialService;
import com.yeshi.common.entity.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import org.yeshi.utils.JsonUtil;
@Controller
@RequestMapping("admin/new/api/v1/autoRule")
public class BoutiqueAutoRuleAdminController {
   @Resource
   private BoutiqueAutoRuleService boutiqueAutoRuleService;
   @Resource
   private TaobaoMeterialService taobaoMeterialService;
   @Resource
   private GoodsClassService goodsClassService;
   @Resource
   private TaoBaoClassService taoBaoClassService;
   /**
    * 新增入库规则
    *
    * @param callback
    * @param boutiqueAutoRule
    * @param out
    */
   @RequestMapping(value = "saveAdd")
   public void saveAdd(AdminAcceptData acceptData, String callback, BoutiqueAutoRule boutiqueAutoRule, PrintWriter out) {
      try {
         // 验证传递数据是否正确
         boolean validationData = validationData(callback, boutiqueAutoRule, out);
         // 验证未通过
         if (!validationData) {
            return;
         }
         // 转换json
         transformJsonString(boutiqueAutoRule);
         // cron时间
         String cronTime = boutiqueAutoRuleService.setCronTime(boutiqueAutoRule.getExecuteDay(),boutiqueAutoRule.getExecuteTime());
         boutiqueAutoRule.setCronTime(cronTime);
         // 默认状态为启用
         boutiqueAutoRule.setState(1);
         boutiqueAutoRule.setCreatetime(new Date());
         boutiqueAutoRule.setUpdatetime(new Date());
         boutiqueAutoRuleService.insertSelective(boutiqueAutoRule);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("保存成功"));
         // 验证当前任务是否立即启动
         boolean validateDate = boutiqueAutoRuleService.validateDate(boutiqueAutoRule);
         if (validateDate) {
            // 任务启动
            boutiqueAutoRuleService.setScheduler(boutiqueAutoRule, "add");
         }
      } catch (BoutiqueAutoRuleException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("保存失败"));
         e.printStackTrace();
      }
   }
   /**
    * 获取入库规则-修改
    *
    * @param callback
    * @param id
    * @param out
    */
   @RequestMapping(value = "enterModify")
   public void enterModify(AdminAcceptData acceptData,String callback, Long id, PrintWriter out) {
      try {
         if (id == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确参数"));
            return;
         }
         BoutiqueAutoRule boutiqueAutoRule = boutiqueAutoRuleService.selectByPrimaryKey(id);
         if (boutiqueAutoRule == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该规则已不存在"));
            return;
         }
         jsonTransformString(boutiqueAutoRule);
         Integer source = boutiqueAutoRule.getSource();
         if (source.equals(BoutiqueAutoRule.TB_OPTIONAL) || source == BoutiqueAutoRule.TB_OPTIONAL) {
            String className = boutiqueAutoRule.getClassName();
            GoodsClass rb = goodsClassService.getGoodsClass(Long.parseLong(className));
            if (rb != null) {
               boutiqueAutoRule.setClassNameChinese(rb.getName());
            }
         }
         GsonBuilder gsonBuilder = new GsonBuilder();
         gsonBuilder.serializeNulls();
         Gson gson = gsonBuilder.setDateFormat("yyyy-MM-dd").create();
         JSONObject data = new JSONObject();
         data.put("autoRule", gson.toJson(boutiqueAutoRule));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (BoutiqueAutoRuleException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("获取失败"));
         e.printStackTrace();
      }
   }
   /**
    * 修改入库规则
    *
    * @param callback
    * @param boutiqueAutoRule
    * @param out
    */
   @RequestMapping(value = "saveModify")
   public void saveModify(AdminAcceptData acceptData,String callback, BoutiqueAutoRule boutiqueAutoRule, PrintWriter out) {
      try {
         Long id = boutiqueAutoRule.getId();
         if (id == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确参数"));
            return;
         }
         BoutiqueAutoRule crrent = boutiqueAutoRuleService.selectByPrimaryKey(id);
         if (crrent == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该条规则已不存在"));
            return;
         }
         // 验证传递数据是否正确
         boolean validationData = validationData(callback, boutiqueAutoRule, out);
         // 验证未通过
         if (!validationData) {
            return;
         }
         transformJsonString(boutiqueAutoRule);
         String cronTime = boutiqueAutoRuleService.setCronTime(boutiqueAutoRule.getExecuteDay(),boutiqueAutoRule.getExecuteTime());
         // cron时间
         boutiqueAutoRule.setCronTime(cronTime);
         boutiqueAutoRule.setState(crrent.getState());
         boutiqueAutoRule.setCreatetime(crrent.getCreatetime());
         // 更新时间
         boutiqueAutoRule.setUpdatetime(new Date());
         boutiqueAutoRuleService.updateByPrimaryKey(boutiqueAutoRule);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("修改成功"));
         // 验证当前任务是否需要修改 、立即执行
         Integer crrentState = crrent.getState();
         if (crrentState != null) {
            if (crrentState.equals(1)){
               boolean validateDate = boutiqueAutoRuleService.validateDate(boutiqueAutoRule);
               if (validateDate) {
                  // 任务修改
                  boutiqueAutoRuleService.setScheduler(boutiqueAutoRule, "modify");
               } else {
                  boutiqueAutoRuleService.setScheduler(boutiqueAutoRule, "delete");
               }
            }
         }
      } catch (BoutiqueAutoRuleException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("修改失败"));
         e.printStackTrace();
      }
   }
   /**
    * 修改规则状态
    *
    * @param callback
    * @param id
    * @param state
    *            状态:1启用 0停用
    * @param out
    */
   @RequestMapping(value = "saveState")
   public void saveState(AdminAcceptData acceptData,String callback, Long id, Integer state, PrintWriter out) {
      try {
         if (id == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确参数"));
            return;
         }
         BoutiqueAutoRule crrent = boutiqueAutoRuleService.selectByPrimaryKey(id);
         if (crrent == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该条规则已不存在"));
            return;
         }
         if (state == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("修改状态为空"));
            return;
         }
         crrent.setState(state);
         crrent.setUpdatetime(new Date());
         boutiqueAutoRuleService.updateByPrimaryKeySelective(crrent);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("修改成功"));
         boolean validateDate = boutiqueAutoRuleService.validateDate(crrent);
         if (state.equals(1)) {
            if (validateDate) {
               boutiqueAutoRuleService.setScheduler(crrent, "add");    // 任务启动
            }
         } else {
            boutiqueAutoRuleService.setScheduler(crrent, "delete");    // 任务删除
         }
      } catch (BoutiqueAutoRuleException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("修改失败"));
         e.printStackTrace();
      }
   }
   /**
    * 查询入库规则
    *
    * @param callback
    * @param pageIndex
    * @param pageSize
    * @param source
    *            来源
    * @param out
    */
   @RequestMapping(value = "query")
   public void query(AdminAcceptData acceptData,String callback, Integer pageIndex, Integer pageSize, Integer source,
         String key, Integer state, Integer sort,  PrintWriter out) {
      try {
         if (pageIndex == null)
            pageIndex = 1;
         if (pageSize == null)
            pageSize = Constant.PAGE_SIZE;
         List<BoutiqueAutoRule> list = boutiqueAutoRuleService.query((pageIndex - 1) * pageSize,
               pageSize, source, key, state, sort);
         if (list == null || list.size() == 0) {
            out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("暂无数据")));
            return;
         }
         for (BoutiqueAutoRule boutiqueAutoRule: list) {
            jsonTransformString(boutiqueAutoRule);
            if (source.equals(BoutiqueAutoRule.TB_OPTIONAL) || source == BoutiqueAutoRule.TB_OPTIONAL) {
               String className = boutiqueAutoRule.getClassName();
               GoodsClass rb = goodsClassService.getGoodsClass(Long.parseLong(className));
               if (rb != null) {
                  boutiqueAutoRule.setClassNameChinese(rb.getName());
               }
            }
         }
         long count = boutiqueAutoRuleService.queryCount(source, key, state);
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
         PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
         GsonBuilder gsonBuilder = new GsonBuilder();
         gsonBuilder.serializeNulls();
         Gson gson = gsonBuilder.setDateFormat("yyyy/MM/dd HH:mm:ss").create();
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         data.put("resultList", gson.toJson(list));
         out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data)));
      } catch (Exception e) {
         e.printStackTrace();
         out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("查询失败")));
      }
   }
   /**
    * 修改入库规则
    *
    * @param callback
    * @param boutiqueAutoRule
    * @param out
    */
   @RequestMapping(value = "delete")
   public void delete(AdminAcceptData acceptData,String callback, Long id, PrintWriter out) {
      try {
         if (id == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确参数"));
            return;
         }
         BoutiqueAutoRule boutiqueAutoRule = boutiqueAutoRuleService.selectByPrimaryKey(id);
         if (boutiqueAutoRule == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该规则已被删除"));
            return;
         }
         // 任务删除
         boutiqueAutoRuleService.setScheduler(boutiqueAutoRule, "delete");
         boutiqueAutoRuleService.deleteByPrimaryKey(id);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("删除成功"));
      } catch (BoutiqueAutoRuleException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("删除失败"));
         e.printStackTrace();
      }
   }
   /**
    * 修改入库规则
    *
    * @param callback
    * @param boutiqueAutoRule
    * @param out
    */
   @RequestMapping(value = "shutdownJobs")
   public void shutdownJobs(AdminAcceptData acceptData,String callback, PrintWriter out) {
      try {
         boutiqueAutoRuleService.shutdownJobs();
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
   /**
    * 将查询筛选条件转换为json
    * @param boutiqueAutoRule
    */
   public void transformJsonString(BoutiqueAutoRule boutiqueAutoRule){
      JSONObject data = new JSONObject();
      Integer source = boutiqueAutoRule.getSource();
      // 类目id
      if (source.equals(BoutiqueAutoRule.TB_OPTIONAL)) {
         data.put("systemCid", boutiqueAutoRule.getClassName());
      }
      if (boutiqueAutoRule.getKey() != null){
         // 搜索关键词
         data.put("key", boutiqueAutoRule.getKey());
      }
      if (boutiqueAutoRule.getTitle() != null){
         // 搜索关键词
         data.put("title", boutiqueAutoRule.getTitle());
      }
      if ( boutiqueAutoRule.getCateIds() != null){
         // 官方推荐商品库投放ID;淘宝类目id集合
         data.put("cateIds", boutiqueAutoRule.getCateIds());
      }
      if ( boutiqueAutoRule.getStartTkRate() != null){
         // 佣金范围小值
         data.put("startTkRate", boutiqueAutoRule.getStartTkRate());
      }
      if ( boutiqueAutoRule.getEndTkRate() != null){
         // 佣金范围大值
         data.put("endTkRate", boutiqueAutoRule.getEndTkRate());
      }
      if ( boutiqueAutoRule.getStartSales() != null){
         // 销量小值
         data.put("startSales", boutiqueAutoRule.getStartSales());
      }
      if ( boutiqueAutoRule.getEndSales() != null){
         // 销量大值
         data.put("endSales", boutiqueAutoRule.getEndSales());
      }
      if ( boutiqueAutoRule.getStartZkPrice() != null){
         // 在售价范围小值
         data.put("startZkPrice", boutiqueAutoRule.getStartZkPrice());
      }
      if ( boutiqueAutoRule.getEndZkPrice() != null){
         // 在售价范围大值
         data.put("endZkPrice", boutiqueAutoRule.getEndZkPrice());
      }
      if ( boutiqueAutoRule.getStartPrice() != null){
         // 券后价范围小值
         data.put("startPrice", boutiqueAutoRule.getStartPrice());
      }
      if ( boutiqueAutoRule.getEndPrice() != null){
         // 券后价范围大值
         data.put("endPrice", boutiqueAutoRule.getEndPrice());
      }
      if ( boutiqueAutoRule.getIsTmall() != null){
         // 是否天猫
         data.put("isTmall", boutiqueAutoRule.getIsTmall());
      }
      if ( boutiqueAutoRule.getHasCoupon() != null){
         // 是否有券:1 有 0 无
         data.put("hasCoupon", boutiqueAutoRule.getHasCoupon());
      }
      if ( boutiqueAutoRule.getFreeShipment() != null){
         // 是否包邮:1 有 0 无
         data.put("freeShipment", boutiqueAutoRule.getFreeShipment());
      }
      if ( boutiqueAutoRule.getNeedPrepay() != null){
         // 是否消费保障:1有 0 无
         data.put("needPrepay", boutiqueAutoRule.getNeedPrepay());
      }
      if (boutiqueAutoRule.getNpxLevel() != null){
         // 牛皮癣程度,取值:1:不限,2:无,3:轻微
         data.put("npxLevel", boutiqueAutoRule.getNpxLevel());
      }
      if ( boutiqueAutoRule.getIncludePayRate30() != null){
         // 成交转化是否高于行业均值        1 有 0 无
         data.put("includePayRate30", boutiqueAutoRule.getIncludePayRate30());
      }
      if ( boutiqueAutoRule.getIncludeGoodRate() != null){
         // 好评率是否高于行业均值            1 有 0 无
         data.put("includeGoodRate", boutiqueAutoRule.getIncludeGoodRate());
      }
      if ( boutiqueAutoRule.getIncludeRfdRate() != null){
         // 退款率是否低于行业均值             1 有 0 无
         data.put("includeRfdRate", boutiqueAutoRule.getIncludeRfdRate());
      }
      if ( boutiqueAutoRule.getLableNames() != null){
         data.put("lableNames", boutiqueAutoRule.getLableNames());
      }
      // 请求最大页码
      if (boutiqueAutoRule.getMaxPage() != null){
         data.put("maxPage", boutiqueAutoRule.getMaxPage());
      }
      // 请求最大页码
      if (boutiqueAutoRule.getClassName() != null){
         if (source.equals(BoutiqueAutoRule.TB_OPTIONAL) || source== BoutiqueAutoRule.TB_OPTIONAL) {
            String classId = boutiqueAutoRule.getClassName();
            if (!StringUtil.isNullOrEmpty(classId)){
               GoodsClass rb = goodsClassService.getGoodsClass(Long.parseLong(classId));
               if (rb != null) {
                  data.put("sourceCalss", rb.getName());
                  boutiqueAutoRule.setSourceCalss(rb.getName());
               }
            }
         }  else if (source.equals(BoutiqueAutoRule.TB_MATERIAL) || source == BoutiqueAutoRule.TB_MATERIAL) {
            String subName = boutiqueAutoRule.getSubclassName();
            String superName = boutiqueAutoRule.getClassName();
            if (StringUtil.isNullOrEmpty(subName)) {
               data.put("sourceCalss", superName);
               boutiqueAutoRule.setSourceCalss(superName);
            } else {
               data.put("sourceCalss", superName +" "+ subName);
               boutiqueAutoRule.setSourceCalss(superName +" "+ subName);
            }
         }
      }
      boutiqueAutoRule.setSearchContent(data.toString());
   }
   /**
    * 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"));
      }
   }
   /**
    * 验证前端展示数据是否符合规范
    * @param callback
    * @param boutiqueAutoRule
    * @param out
    * @return
    */
   public boolean validationData(String callback, BoutiqueAutoRule boutiqueAutoRule, PrintWriter out){
      Integer source = boutiqueAutoRule.getSource();
      if (source == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("来源不能为空"));
         return false;
      }
      Integer maxPage = boutiqueAutoRule.getMaxPage();
      if (maxPage == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请求最大页数不能空"));
         return false;
      }
      if (source.equals(BoutiqueAutoRule.TB_OPTIONAL) || source== BoutiqueAutoRule.TB_OPTIONAL) {
         /* 淘宝导购物料API 数据验证 */
         String key = boutiqueAutoRule.getKey();
         String classId = boutiqueAutoRule.getClassName();
         if (StringUtil.isNullOrEmpty(key) && StringUtil.isNullOrEmpty(classId)) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("类型与关键词不能同时为空"));
            return false;
         }
         if (!StringUtil.isNullOrEmpty(classId)){
            GoodsClass rb = goodsClassService.getGoodsClass(Long.parseLong(classId));
            if (rb == null) {
               JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该类型已不存在,请刷新重试"));
               return false;
            }
            List<TaoBaoClass> listCatIds = taoBaoClassService.listBySystemCid(0, 10, Long.parseLong(classId));
            if (listCatIds == null || listCatIds.size() == 0) {
               JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(rb.getName() + "对应淘宝id为空,请通知相关人员进行维护"));
               return false;
            }
            String taobaoCatIds = "";
            for (TaoBaoClass taoBaoClass: listCatIds) {
                  Integer categoryId = taoBaoClass.getCategoryId();
                 if (categoryId == null ) {
                    continue;
                 }
                 taobaoCatIds += categoryId + ",";
            }
            if (StringUtil.isNullOrEmpty(taobaoCatIds)){
               JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(rb.getName() + "对应淘宝id为空,请通知相关人员进行维护"));
               return false;
            }
            boutiqueAutoRule.setCateIds(taobaoCatIds.substring(0, taobaoCatIds.length()-1));
         }
      }  else if (source.equals(BoutiqueAutoRule.TB_MATERIAL) || source == BoutiqueAutoRule.TB_MATERIAL) {
         /* 淘宝官方推荐   数据验证  */
         String subName = boutiqueAutoRule.getSubclassName();
         String superName = boutiqueAutoRule.getClassName();
         if (StringUtil.isNullOrEmpty(subName) && StringUtil.isNullOrEmpty(superName) ) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择正确的类目"));
            return false;
         }
         List<TaobaoMeterial> taobaoMeterials = taobaoMeterialService.selectByClassNameAndSuperName(subName, superName);
         if (taobaoMeterials == null || taobaoMeterials.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该类目信息不存在"));
            return false;
         } else if (taobaoMeterials.size() > 1) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择相应的子类"));
            return false;
         }
         TaobaoMeterial taobaoMeterial = taobaoMeterials.get(0);
         Integer materialId = taobaoMeterial.getMaterialId();
         if (materialId == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该类目物料ID不存在"));
            return false;
         }
         boutiqueAutoRule.setCateIds(materialId + "");
      } else {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确来源"));
         return false;
      }
      // 生效时间
      Date startTime = boutiqueAutoRule.getStartTime();
      // 失效时间
      Date endTime = boutiqueAutoRule.getEndTime();
      if (endTime != null) {
         if (startTime != null && startTime.getTime() > endTime.getTime()){
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("生效时间不能大于失效时间"));
            return false;
         }
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(endTime);
         calendar.set(Calendar.HOUR, 23);
         calendar.set(Calendar.MINUTE, 59);
         calendar.set(Calendar.SECOND, 59);
         boutiqueAutoRule.setEndTime(calendar.getTime());
      }
      if (startTime == null) {
          boutiqueAutoRule.setStartTime(new Date());
      }
      return true;
   }
}