1.后台选择商品

 

 

商城项目之团购--发布团购任务篇

 2.设置页

商城项目之团购--发布团购任务篇

 

3.后台代码

3.1 前台链接

http://localhost/terrace/groupbuy/ladderGroup/initialize

3.2 后台接口

@RequestMapping(value = "/initialize")
  public ModelAndView initialize() {
  return new ModelAndView("/terrace/groupbuy/ladder/ladderGroup-initialize");
}

3.3 异步接口

按照惯例,会异步请求到list

@RequestMapping(value = "/list")
public ModelAndView list(

SellerGoodsGroupBuyLadderVo sellerGoodsGroupBuyLadderVo, 

Page<SellerGoodsGroupBuyLadderVo> page, HttpServletRequest request) {
		sellerGoodsGroupBuyLadderVo.setSellerId(ShiroUserUtil.getBossId());
		sellerGoodsGroupBuyLadderVo.setProductSerialNumber(ShiroUserUtil.getProductSerialNumber());
		sellerGoodsGroupBuyLadderService.list(sellerGoodsGroupBuyLadderVo, page);
		OwnerUserDomain ownerUserDomain = ownerUserDomainService.getSubDomainName(ShiroUserUtil.getProductSerialNumber());
		String urlLink = "";
		if (!EmptyUtil.isNullOrEmpty(ownerUserDomain)) {
			if (request.getServerPort() == 80) {
				urlLink = request.getScheme() + "://" + ownerUserDomain.getId() + request.getContextPath();
			} else {
				urlLink = request.getScheme() + "://" + ownerUserDomain.getId() + ":" + request.getServerPort() + request.getContextPath();
			}
		}
		ModelMap modelMap = new ModelMap();
		modelMap.put("urlLink", urlLink);
		modelMap.put("page", page);
		modelMap.put("sellerGoodsGroupBuyLadderVo", sellerGoodsGroupBuyLadderVo);
		return new ModelAndView("/terrace/groupbuy/ladder/ladderGroup-list", modelMap);
	}

3.4 前台页面显示

商城项目之团购--发布团购任务篇

 

 3.5 添加拼团

商城项目之团购--发布团购任务篇

 

 3.6 添加拼团页的链接

<a href="javascript:;" class="btn btn_gray show_inline_block js_add_goods"><span class="iconfont icon-tianjia mr6"></span>添加拼团商品</a>

3.6.1 js触发点击事件

$(".js_add_goods").click(function(){ //添加商品
	$.ajax({
	url:ctx+'/terrace/groupbuy/ladderGroup/findGoodsList',
	type:'post',
	success:function(d){
	//清空开始时间结束时间
	$("#addStartTime").val('');
	$("#addEndTime").val('');
	$("#add-ladder-goods").html(d);
        jsOpenPop('pop_add_new_pro');
	}
});
});

3.6.2 后台接口

@RequestMapping(value = "/findGoodsList")
   public ModelAndView findGoodsList(SellerGoodsGroupBuyLadderVo sellerGoodsGroupBuyLadderVo, Page<SellerGoodsGroupBuyLadderVo> page) {
	sellerGoodsGroupBuyLadderVo.setSellerId(ShiroUserUtil.getBossId());
	sellerGoodsGroupBuyLadderVo.setProductSerialNumber(ShiroUserUtil.getProductSerialNumber());
	page = sellerGoodsGroupBuyLadderService.findGoodsList(sellerGoodsGroupBuyLadderVo, page);
	ModelMap modelMap = new ModelMap();
	modelMap.put("findGoodsPage", page);// 数据表格数据传递
	modelMap.put("sellerGoodsGroupBuyLadderVo", sellerGoodsGroupBuyLadderVo);
	return new ModelAndView("/terrace/groupbuy/ladder/findGoodsList", modelMap);
  }

3.6.3 设置定时任务的时间值

<div>
<
input type="text" id="${startTimeVar}" class="form_control h18 lh18 w148 plr5 js_list_start_time" value="" placeholder="请设置活动开始时间" onclick="WdatePicker({skin:'whyGreen',maxDate:'#F{$dp.$D(\'${endTimeVar}\')}',dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true})"/> </div> <div class="re_r w148 su_set_time_div time_group3"> <input type="text" id="${endTimeVar}" class="form_control h18 lh18 w148 plr5 js_list_end_time" value="" placeholder="请设置活动结束时间" onclick="WdatePicker({skin:'whyGreen',minDate:'#F{$dp.$D(\'${startTimeVar}\')}',dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true})"/> </div>

3.6.4 设置按钮

<td><a href="javascript:;" class="btn_xs btn_blue br3 set_good"  data->设置</a></td> 

3.6..5 设置界面

商城项目之团购--发布团购任务篇

 

 4.设置定时任务

<div class="popup_wrap pop_big" >
    <div class="popup_bd"></div>
    <div class="popup_inner">
        <div class="popup_tit">
            <span class="text_bold">添加拼团</span><span class="close_btn">×</span>
        </div>
        <div class="popup_con">  
            <div class="">
               <div class="clearfix mb15 pt15">  
                  <div class="form_control fl ml20">
                      <input class="w320" type="text" name="serachGoodsName" placeholder="输入您要搜索的内容" value="" />
                  </div>
                  <input type="button" class="btn btn_blue fl ml15" value="开始搜索" onclick="findGoodsPage()" />
               </div>
                <div class="table_control add_tab_div" >
                    <div class="table_tit bgblue ptb5 bd_b_t">
                        <label class="label pl10 "><input type="checkbox" class="all_checked_btn mr10 isSelect" onClick="selectData('add_tab_div')">全选</label>
                        <span class="btn btn_gray ml15 js_add_goods_time_set">批量设置</span>
                        <label class="pl15">开始时间:</label>
                        <input class="w120 form_control time_group4" type="text" >
                        <label class="pl15" >结束时间:</label>
                        <input class="w120 form_control time_group4" type="text" >
                     </div>   
                    <div class="table_overflow" >
                       
                    </div>
                </div>
            </div>
            <div class="popup_ft">
                <input type="button" value="确认" class="btn btn_blue js_confirm_pop" />
                <input type="button" value="取消" class="btn btn_gray js_canle_pop" />
            </div>
        </div>
    </div>
</div>

4.1 页面

    //这个是添加商品页面的确认按钮
    $("body").on("click","#pop_add_new_pro .js_confirm_pop",function(){//添加阶梯团购确定按钮
        if(jsonArrayObject.length<=0){
            tsTips("请设置价格之后再确认!");
            return ;
        }
        //获取了一个数组
        var selectVal = new Array();
        //初始化变量,初步判断为需要传输的数据
        var tabDataArrayStr ="";
        var jsonArrayObjectStr="" ;
        var isClose = false;
        var serialNumber ;
        var startPersons ;
        var endPersons ;
        var price ;
        var sellerGoodsId ;
        $("#pop_add_new_pro input[name$='chk_list']:checked").each(function() { //获取每行sellerGoodsId
            var count = 0;//计数器 是否有该选中商品值
            var sellerGoodsIdTab = $(this).attr("data-id");
            var sellerGoodsName = $(this).attr("data-name");
            for ( var i = 0; i < jsonArrayObject.length; i++) {
                sellerGoodsId = jsonArrayObject[i].sellerGoodsId;
                if(sellerGoodsId==sellerGoodsIdTab){
                        count++;
                            serialNumber = jsonArrayObject[i].serialNumber ;
                            startPersons = jsonArrayObject[i].startPersons ;
                            endPersons = jsonArrayObject[i].endPersons ;
                            price = jsonArrayObject[i].price;
                            if(jsonArrayObjectStr==""){
                                jsonArrayObjectStr = serialNumber+","+startPersons+","+endPersons+","+price+","+sellerGoodsId;
                            }else{
                                jsonArrayObjectStr = jsonArrayObjectStr+"◎"+serialNumber+","+startPersons+","+endPersons+","+price+","+sellerGoodsId;
                            }
                } 
            }
            if(count==0){
                tsTips("选择的\""+sellerGoodsName+"\"商品没有设置值!");
                return;
            }
            
            var startTime = $(this).parent().parent().find(".js_list_start_time").val();
            if(startTime==""){
                tsTips("选择的\""+sellerGoodsName+"\"商品没有开始时间!");
                return;
            }
            var endTime = $(this).parent().parent().find(".js_list_end_time").val();
            if(endTime==""){
                tsTips("选择的\""+sellerGoodsName+"\"商品没有结束时间!");
                return;
            }
            isClose = true;
            if(tabDataArrayStr==""){
                tabDataArrayStr = sellerGoodsIdTab+","+startTime+","+endTime;
            }else{
                tabDataArrayStr=tabDataArrayStr+"◎"+sellerGoodsIdTab+","+startTime+","+endTime;
            }
        });
        
        if(isClose){
            //传输的有连个参数:
            //1.tabDataArray,2.jsonArrayObjectStr
                var param = {"tabDataArray":tabDataArrayStr,"jsonArrayObject":jsonArrayObjectStr};
                $.ajax({
                    url:ctx+'/terrace/groupbuy/ladderGroup/save',
                    data:param,
                    type:'post',
                    dataType:'json',
                    async:false,
                    success:function(d){
                        tsTips(d.msg);      
                        if(d.type>0){
                            $('.pop_mask,#pop_add_new_pro').hide();
                            jsonArrayObject = new Array();
                            tools.showList();
                        }
                    }
                })
        }
    });

4.2 相关数据保存

@RequestMapping(value = "/save")
    @ResponseBodypublic AjaxMessage save(SellerGoodsGroupBuyLadderVo sellerGoodsGroupBuyLadderVo) {
        try {
            String productSerialNumber = ShiroUserUtil.getProductSerialNumber();
            String ownerId = ShiroUserUtil.getBossId();
            sellerGoodsGroupBuyLadderVo.setProductSerialNumber(productSerialNumber);
            sellerGoodsGroupBuyLadderVo.setSellerId(ownerId);
            List<SellerGoods> sellerGoodsList = sellerGoodsGroupBuyLadderService.save(sellerGoodsGroupBuyLadderVo);
            SellerGoodsGroupBuyLadder sellerGoodsGroupBuyLadder = null;
            BigDecimal zero = new BigDecimal(0);
            for (SellerGoods sellerGoods : sellerGoodsList) {
                sellerGoodsGroupBuyLadderVo.setSellerGoodsId(sellerGoods.getId());
                // 查询当前商品的所有阶梯团购价格 sellerProductsService > deductionProductsStore 方法有相似代码 需要同步修改
                List<SellerGoodsGroupBuyLadder> listLadder = sellerGoodsGroupBuyLadderService.getGroupBuyLadderMsgBySellerGoodsId(sellerGoodsGroupBuyLadderVo);
                String sellerGoodsId = sellerGoodsGroupBuyLadderVo.getSellerGoodsId();
                sellerGoods = sellerGoodsService.getSellerGoodsById(productSerialNumber, sellerGoodsId);

                for (int i = 0; i < listLadder.size(); i++) {
                    sellerGoodsGroupBuyLadder = listLadder.get(i);
                    if (EmptyUtil.isNullOrEmpty(sellerGoods.getGroupBuyPersonsNum()) || sellerGoods.getGroupBuyPersonsNum().longValue() <= 0) {
                        sellerGoods.setGroupBuyPrice(sellerGoodsGroupBuyLadder.getPrice());
                        sellerGoodsService.save(sellerGoods);// 保存sellerGoods
                        break;
                    }
                    // 判断当前参与人数在哪个团购区间
                    if (sellerGoods.getGroupBuyPersonsNum().longValue() >= sellerGoodsGroupBuyLadder.getStartNum() && sellerGoods.getGroupBuyPersonsNum().longValue() < sellerGoodsGroupBuyLadder.getEndNum()) {

                        sellerGoods.setGroupBuyPrice(sellerGoodsGroupBuyLadder.getPrice());
                        // 设置下一团购阶段的值
                        if (i < listLadder.size() - 1) {
                            sellerGoods.setGroupBuyNextPersonsNum(listLadder.get(i + 1).getStartNum());
                            sellerGoods.setGroupBuyNextPrice(listLadder.get(i + 1).getPrice());
                        } else {
                            sellerGoods.setGroupBuyNextPersonsNum(sellerGoodsGroupBuyLadder.getStartNum());
                            sellerGoods.setGroupBuyNextPrice(sellerGoodsGroupBuyLadder.getPrice());
                        }
                        sellerGoodsService.save(sellerGoods);// 保存sellerGoods
                        break;
                    }
                    // 更新索引商品价格索引
                    GoodsPhotoBuildHelper.updateGoodsSellCount(sellerGoods.getGoodsId(), sellerGoods.getSellCount(), EmptyUtil.isNullOrEmpty(sellerGoods.getGroupBuyPrice()) ? zero : sellerGoods.getGroupBuyPrice(), sellerGoods
                            .getGroupBuyPersonsNum(), sellerGoods.getGroupBuyNextPersonsNum(), EmptyUtil.isNullOrEmpty(sellerGoods.getGroupBuyNextPrice()) ? zero : sellerGoods.getGroupBuyNextPrice());
                    sellerGoodsList.add(sellerGoods);
                }
            }
            // 更新商品索引
            GoodsBuildHelper.threadCallbackGoodsUpAwayForGroup(sellerGoodsList, productSerialNumber, ownerId);
            return AjaxMessage.getInstance(AjaxMessage.INFO, "操作成功!");
        } catch (Exception e) {
            e.printStackTrace();
            return AjaxMessage.getInstance(AjaxMessage.ERROR, "操作失败!");

        }
    }

实体1:

@Entity
@Table(name = "PT_SELLER_GOODS_LADDER")
public class SellerGoodsGroupBuyLadder extends IdEntity {

	/** serialVersionUID */

	private static final long serialVersionUID = -7518498283030780202L;

	/** 产品序列号 */
	private String productSerialNumber;

	/** 卖家id */
	private String sellerId;

	/** 卖家商品id */
	private String sellerGoodsId;

	/** 商品id */
	private String goodsId;

	/** 购买人数 */
	private Long startNum;

	/** 购买人数 */
	private Long endNum;

	/** 团购价格 */
	private BigDecimal price;

	/**排序号**/
	private Long sortNo;

	/** 创建时间 */
	private Date createTime;

	private String createUserId;

	private Date updateTime;

	private String updateUserId;
}}

SellerGoodsGroupBuyLadderVo:

private String productSerialNumber;

	/** 卖家 */
	private String sellerId;

	/** 阶梯团购id */
	private String id;

	/** 卖家商品id*/
	private String sellerGoodsId;

	/** 商品名称 */
	private String goodsName;

	/** 商品编号 */
	private String goodsNo;

	/** 库存 */
	private Long storeNum;

	/** 销量:默认0 */
	private Long sellCount = new Long(0);

	/** 商品列表显示图片路径 */
	private String showImg;

	/** 商品规格 */
	private String specArrays;

	/**
	 * 团购状态  VALID 有效  过期INVALID
	 */
	private String groupBuyStatus;

	/**
	 * 限时抢购开始时间
	 */
	private Date robStartTime;

	/**
	 * 限时抢购结束时间
	 */
	private Date robEndTime;

	/**
	 * 限时抢购 每个ID限购个数
	 */
	private Long robNumber;

	/**
	 * 是否是限时抢购商品 YES:是,NO不是
	 */
	private String isRob;

	/** 打折卡id */
	private String discountCardId;

	/** 打折卡名称 */
	private String discountCardName = "";

	/** 优惠券id */
	private String discountCouponId;

	/** 优惠券名称 */
	private String discountCouponName = "";

	/**供应商*/
	private String supplier;

	/**排序号**/
	private Long sortNo;

	/** sellerGoods创建时间 */
	private Date createDate;

	/** 阶梯团购创建时间 */
	private Date createTime;

	/**
	 * 是否被搜索;YES:可以;NO 不可以
	 */
	private String isSearch;

	/*********** 查询字段  ***********/
	private String serachGoodsName;

	/** 限时抢购开始时间 */
	private String serachRobStartTime;

	/** 限时抢购结束时间 */
	private String serachRobEndTime;

	/**   团购状态  VALID 有效  过期INVALID*/
	private String serachGroupBuyStatus;

	/**   是否搜索*/
	private String serachIsSearch;

	/** 优惠方式  YES只有优惠券 NO只有打折卡 AND同时存在 */
	private String couponModel;

	private Long startStoreNum; // 开始库存量

	private Long endStoreNum;// 结束库存量

	private Long startSellCount;// 开始销量

	private Long endSellCount;// 结束销量

	private Boolean isEdit = false;//

	private Date robCreateTime;

	/** 添加数据传递字符串 */
	private String tabDataArray;

	private String jsonArrayObject;

 save方法:

	@Override
	@Transactional
	public List<SellerGoods> save(SellerGoodsGroupBuyLadderVo sellerGoodsGroupBuyLadderVo) {
		List<SellerGoods> sellerGoodList = new ArrayList<SellerGoods>();
		SellerGoodsService sellerGoodsService = SpringContextUtils.getBean("sellerGoodsServiceImp");
		SellerGoodsGroupBuyLadder sellerGoodsGroupBuyLadder = null;
		List<SellerGoodsGroupBuyLadder> goodsGroupBuyLadders = null;
		SellerGoods sellerGoods = null;
		if (sellerGoodsGroupBuyLadderVo.getIsEdit()) { // 编辑
			String sellerGoodsId = sellerGoodsGroupBuyLadderVo.getTabDataArray().split(",")[0];
			List<SellerGoodsGroupBuyLadder> sellerGoodsGroupBuyLadderList = this.findLadderListBySellerGoodsId(sellerGoodsId);
			for (SellerGoodsGroupBuyLadder sellerGoodsGroupBuyLadderEdit : sellerGoodsGroupBuyLadderList) {
				sellerGoodsGroupBuyLadderEdit.setEnableFlag(EnableFlag.NO);
			}
			sellerGoods = sellerGoodsDao.findOne(sellerGoodsId);

			sellerGoods.setRobStartTime(null);
			sellerGoods.setRobEndTime(null);
			sellerGoods.setGroupBuyStatus(null);
			sellerGoodsService.save(sellerGoods); // 修改sellerGoods数据

			sellerGoodsGroupBuyLadderDao.save(sellerGoodsGroupBuyLadderList);// 删除价格设置表数据
		}
		String productSerialNumber = sellerGoodsGroupBuyLadderVo.getProductSerialNumber();
		String sellerId = sellerGoodsGroupBuyLadderVo.getSellerId();
		String tabDataArrayStr = sellerGoodsGroupBuyLadderVo.getTabDataArray();
		String jsonArrayObjectArrayStr = sellerGoodsGroupBuyLadderVo.getJsonArrayObject();
		List<String> jsonArrayObjectArray = Arrays.asList(jsonArrayObjectArrayStr.split("◎"));
		List<String> tabDataArray = Arrays.asList(tabDataArrayStr.split("◎"));
		Date dateCurr = new Date();
		for (String tabDataStr : tabDataArray) {
			String tabSellerGoodsId = tabDataStr.split(",")[0];
			String startTime = tabDataStr.split(",")[1];
			String endTime = tabDataStr.split(",")[2];
			sellerGoods = sellerGoodsDao.findOne(tabSellerGoodsId);
			goodsGroupBuyLadders = new ArrayList<SellerGoodsGroupBuyLadder>();
			for (String jsonArrayObjectStr : jsonArrayObjectArray) {
				String jsonSellerGoodsId = jsonArrayObjectStr.split(",")[4];
				if (tabSellerGoodsId.equals(jsonSellerGoodsId)) {
					sellerGoodsGroupBuyLadder = new SellerGoodsGroupBuyLadder();
					sellerGoodsGroupBuyLadder.setSortNo(Long.valueOf(jsonArrayObjectStr.split(",")[0]));
					sellerGoodsGroupBuyLadder.setProductSerialNumber(productSerialNumber);
					sellerGoodsGroupBuyLadder.setSellerId(sellerId);
					sellerGoodsGroupBuyLadder.setSellerGoodsId(jsonSellerGoodsId);
					sellerGoodsGroupBuyLadder.setStartNum(Long.valueOf(jsonArrayObjectStr.split(",")[1]));
					sellerGoodsGroupBuyLadder.setEndNum(Long.valueOf(jsonArrayObjectStr.split(",")[2]));
					sellerGoodsGroupBuyLadder.setPrice(new BigDecimal(jsonArrayObjectStr.split(",")[3]));
					sellerGoodsGroupBuyLadder.setGoodsId(sellerGoods.getGoodsId());
					goodsGroupBuyLadders.add(sellerGoodsGroupBuyLadder);
				}
			}
			if (goodsGroupBuyLadders.size() > 0) {
				if (DateUtil.getDate(endTime).after(dateCurr)) { // 结束时间在今天之后的
					sellerGoods.setGroupBuyStatus(OAOConstants.GROUP_BUY_VALID);// 有效
				} else {
					sellerGoods.setGroupBuyStatus(OAOConstants.GROUP_BUY_INVALID);// 无效
				}
				sellerGoods.setGroupBuyType(OAOConstants.LADDER);// 阶梯团购
				sellerGoods.setRobStartTime(DateUtil.getDate(startTime));
				sellerGoods.setRobEndTime(DateUtil.getDate(endTime));
				sellerGoods.setIsRob(OAOConstants.NO);
				// 如果创建时间为空 那么就是第一次新增 否则就是修改
				if (EmptyUtil.isNullOrEmpty(sellerGoods.getRobCreateTime())) {
					sellerGoods.setRobCreateTime(dateCurr);
				} else {
					sellerGoods.setRobUpdateTime(dateCurr);
				}

				sellerGoodsService.save(sellerGoods);
				sellerGoodsGroupBuyLadderDao.save(goodsGroupBuyLadders);
				// 创建定时任务
				if (sellerGoodsGroupBuyLadderVo.getIsEdit()) {
					GroupBuyJobTimer.GroupBuyJobManage.update(tabSellerGoodsId, sellerGoodsGroupBuyLadderVo.getProductSerialNumber(), DateUtil.getDate(startTime), DateUtil.getDate(endTime), OAOConstants.LADDER);
				} else {
					GroupBuyJobTimer.GroupBuyJobManage.create(tabSellerGoodsId, productSerialNumber, DateUtil.getDate(startTime), DateUtil.getDate(endTime), OAOConstants.LADDER);
				}
				sellerGoodList.add(sellerGoods);
			}
		}
		return sellerGoodList;
	}

  方法:

@Component("groupBuyJobTimer")
public class GroupBuyJobTimer extends ATimerJobber {

	protected final static Logger logger = LoggerFactory.getLogger(GroupBuyJobTimer.class);

	@Override
	public void execute(JobMethodParam jobMethodParam) {
		if (!EmptyUtil.isNullOrEmpty(jobMethodParam)) {
			String sellerGoodsId = jobMethodParam.getValue("sellerGoodsId");
			String productSerialNumber = jobMethodParam.getValue("productSerialNumber");
			String groupBuyType = jobMethodParam.getValue("groupBuyType");
			String startTime = jobMethodParam.getValue("startTime"); 
			String endTime = jobMethodParam.getValue("endTime");
			System.out.println(startTime+"----"+endTime);
			logger.info("执行阶梯团购的定时任务------"+startTime+"----"+endTime);
			
			GroupBuyTimerCallBackService groupBuyTimerCallBackService = SpringContextUtils.getBean("groupBuyTimerCallBackServiceImp");
			
			groupBuyTimerCallBackService.groupBuyTimerCallBack(sellerGoodsId,productSerialNumber, startTime, endTime,groupBuyType);
			
			GroupBuyJobManage.delete(sellerGoodsId);
		}
	}

	public static class GroupBuyJobManage {
		/**
		 * 
		 */
		public static final String GROUP_BUY_JOB_NAME_HEAD = "GROUPBUY#";

		/**
		 * @Title: create
		 * @Description: 创建一个自动收货定时任务
		 * @param order  传人参数
		 * @author 
		 */
		public static void create(final String sellerGoodsId,final String productSerialNumber,final Date startTime,final Date endTime,final String groupBuyType) {
		
			ExecutorsUtil.getThreadPool().execute(new Runnable() {
				@Override
				public void run() {
					try {
						ScheduleJobManager scheduleJobManager = SpringContextUtils.getBean("scheduleJobManagerImp");
						ScheduleJobVo job = new ScheduleJobVo();
						job.setTargetClass("groupBuyJobTimer");
						job.setJobName(GROUP_BUY_JOB_NAME_HEAD + sellerGoodsId);
						job.setJobGroup(job.getJobName() + "Group");
						// 设置计划任务开始时间为当前时间
						job.setStartTime(startTime);
						Date endTimecur = endTime;
						//定时任务截止时间不能小于当前时间
						if(endTime.getTime()<new Date().getTime()){
							Calendar calendar = Calendar.getInstance();
							calendar.add(Calendar.SECOND, 3);
							endTimecur = calendar.getTime();
							
						}
						job.setCronExpression(CronUtils.getCron(endTimecur));
						job.setDescription("商品阶梯团购定时任务 sellerGoodsId = " + sellerGoodsId);
						job.setMisfireInstruction(1);
						job.setPersist(true);
						job.setJobData("groupBuyType="+groupBuyType+"&productSerialNumber="+productSerialNumber+"&sellerGoodsId=" +sellerGoodsId+"&startTime="+DateUtil.formatDateTime(startTime)+"&endTime="+DateUtil.formatDateTime(endTimecur));
						try {
							
							JobDetail jobd = getJob(sellerGoodsId);
							//先查询是否已经存在定时任务
							if(!EmptyUtil.isNullOrEmpty(jobd)){
								//存在定时任务先删除
								delete(sellerGoodsId);
							}
							scheduleJobManager.addJob(job);
							
							logger.info("商品阶梯团购定时任务任务成功  sellerGoodsId="+sellerGoodsId);
						} catch (Exception e) {
							e.printStackTrace();
							logger.error("创建定时任务失败!",e);
							logger.error("startTime="+startTime+",endTime="+endTimecur+",groupBuyType="+groupBuyType+",sellerGoodsId="+sellerGoodsId+",productSerialNumber="+productSerialNumber);
						}
						
						
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			});
			
			
		}

		
		public static void delete(String sellerGoodsId) {
			ScheduleJobManager scheduleJobManager = SpringContextUtils.getBean("scheduleJobManagerImp");
			ScheduleJobVo job = new ScheduleJobVo();
			job.setPersist(true);
			job.setJobName(GROUP_BUY_JOB_NAME_HEAD +sellerGoodsId);
			job.setJobGroup(job.getJobName() + "Group");
			try {
				scheduleJobManager.deleteJob(job);
				logger.info("取消团购定时任务成功,sellerGoodsId==="+sellerGoodsId);
			} catch (SchedulerException e) {
				e.printStackTrace();
				logger.error("取消团购定时任务异常,sellerGoodsId = " + sellerGoodsId);
			}
			
		}

		/**
		 * 
		 * <b>方法名:</b>:update<br>
		 * <b>功能说明:</b>:重新更新定时任务<br>
		 * @author <font color='blue'>陈鹏-pm</font> 
		 * @date  2016-4-21 下午03:05:42
		 * @param order
		 */
		public static void update(String sellerGoodsId,String productSerialNumber,Date startTime,Date endTime,String groupBuyType) {
			delete(sellerGoodsId);
			// 再新建一个
			create(sellerGoodsId,productSerialNumber,startTime,endTime,groupBuyType);
		}
		
		/**
		 * 
		 * <b>方法名:</b>:getJob<br>
		 * <b>功能说明:</b>:根据会员id查询是否存在返点定时任务<br>
		 * @author <font color='blue'>陈鹏-pm</font> 
		 * @date  2016-4-27 下午04:37:01
		 * @param userId
		 * @return
		 */
		public static JobDetail getJob(String sellerGoodsId){
			ScheduleJobManager scheduleJobManager = SpringContextUtils.getBean("scheduleJobManagerImp");
			ScheduleJobVo job = new ScheduleJobVo();
			job.setPersist(true);
			job.setJobName(GROUP_BUY_JOB_NAME_HEAD +sellerGoodsId);
			try {
				return scheduleJobManager.getJob(job);
			} catch (SchedulerException e) {
				e.printStackTrace();
				logger.error("查询定时任务出错,sellerGoodsId="+sellerGoodsId,e);
			} catch (Exception e) {
				e.printStackTrace();
				logger.error("查询定时任务出错,sellerGoodsId="+sellerGoodsId, e);
			}
			return null;
		}
	}

}

  

 

 

 

 

 

相关文章: