| | |
| | | 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 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.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.fanli.tag.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(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(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(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(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(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(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(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();
|
| | | if (source.equals(BoutiqueAutoRule.TB_OPTIONAL)) {
|
| | | // 类目id
|
| | | 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()); |
| | | } |
| | | }
|
| | | |
| | | } 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); |
| | | } else {
|
| | | data.put("sourceCalss", 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;
|
| | | }
|
| | | |
| | | |
| | | public static void main(String[] args) {
|
| | | String s = "abacada";
|
| | | if (s.contains("a")) {
|
| | | System.out.println(1);
|
| | | } else {
|
| | | System.out.println(0);
|
| | | }
|
| | | }
|
| | | |
| | | }
|
| | | 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; |
| | | } |
| | | |
| | | } |