TdCCouponRuleDaoImpl.java 10.5 KB
package com.zteits.pay.dao.impl;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.xiaoleilu.hutool.date.DateUtil;
import com.xiaoleilu.hutool.util.CollectionUtil;
import com.zteits.clouds.api.apibase.constants.DataStatusEnum;
import com.zteits.clouds.api.dto.pay.TdCCouponRuleDTO;
import com.zteits.clouds.api.dto.pay.param.*;
import com.zteits.pay.dao.TdCCouponRuleDao;
import com.zteits.pay.domain.TdCCouponRule;
import com.zteits.pay.domain.TdCCouponRuleExample;
import com.zteits.pay.domain.TdCCouponRuleParkExample;
import com.zteits.pay.mapper.TdCCouponRuleMapper;
import com.zteits.pay.mapper.TdCCouponRuleParkMapper;
import com.zteits.pay.mapper.smapper.TdCCouponRuleSMapper;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;

/**
 * Copyright: Copyright (c) 2017  zteits
 *
 * @Description:
 * @version: v1.0.0
 * @author: langlw
 * @date: 2017/12/27 15
 * Modification History:
 * Date             Author          Version            Description
 * ---------------------------------------------------------*
 * 2017/12/27      langlw         v1.0.0               创建
 */
@Component
public class TdCCouponRuleDaoImpl implements TdCCouponRuleDao {

    @Autowired
    private TdCCouponRuleSMapper tdCCouponRuleSMapper;
    @Autowired
    private TdCCouponRuleMapper tdCCouponRuleMapper;
	@Autowired
	private TdCCouponRuleParkMapper tdCCouponRuleParkMapper;

    @Override
    public List<TdCCouponRuleDTO> queryCouponRuleList(TdCCouponRuleRequest request) {
        return tdCCouponRuleSMapper.queryCouponRuleList(request);
    }

	/**
	 * 查询所有有效的优惠规则
	 * @param request
	 * @return
	 */
	@Override
	public List<TdCCouponRule> getCouponRuleList(TdCCouponRuleRequest request) {
		TdCCouponRuleExample example = new TdCCouponRuleExample();
		example.createCriteria().andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
		return tdCCouponRuleMapper.selectByExample(example);
	}

    @Override
    public List<TdCCouponRuleDTO> queryAllSellingCoupons(TdCCouponPersonRequest request) {
        return tdCCouponRuleSMapper.queryAllSellingCoupons(request);
    }

	@Override
	public TdCCouponRule queryCouponRuleByCardNo(String cardNo) {
		TdCCouponRuleExample example = new TdCCouponRuleExample();
		example.createCriteria().andCardNoEqualTo(cardNo).andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value())
		 .andCardStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()).andEndTimeGreaterThan(new Date());
		List<TdCCouponRule> tdCCouponRules = tdCCouponRuleMapper.selectByExample(example);
		if(CollectionUtil.isEmpty(tdCCouponRules)){
			return null;
		}
		return tdCCouponRules.get(0);
	}

	@Override
	public List<String> queryCouponRuleByCardNoList(List<String> cardNos) {
		return tdCCouponRuleSMapper.queryCouponRuleByCardNoList(cardNos);
	}

	@Override
	public Boolean updateCouponRuleByCardNo(TdCCouponRule tdCCouponRule) {
		TdCCouponRuleExample example = new TdCCouponRuleExample();
		example.createCriteria().andCardNoEqualTo(tdCCouponRule.getCardNo())
			.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value())
			.andCardStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()).andEndTimeGreaterThan(new Date());
		return tdCCouponRuleMapper.updateByExampleSelective(tdCCouponRule, example) > 0;
	}

	@Override
	public List<TdCCouponRuleDTO> queryHotCouponRuleForList(QueryHotCouponRequest request) {
		return tdCCouponRuleSMapper.queryHotCouponRuleForList(request);
	}

	@Override
	public List<TdCCouponRuleDTO> queryColdCouponRuleForList(QueryHotCouponRequest request) {
		return tdCCouponRuleSMapper.queryColdCouponRuleForList(request);
	}

	@Override
	public List<TdCCouponRuleDTO> queryCouponRuleParkMsg(TdCCouponRuleRequest request) {
		return tdCCouponRuleSMapper.queryCouponRuleParkMsg(request);
	}



	@Override
	public TdCCouponRuleDTO selectByCardNo(TdCCouponRuleRequest request) {
		TdCCouponRuleDTO tdCCouponRuleDTO  = new TdCCouponRuleDTO();
		TdCCouponRule tCCouponRule  = tdCCouponRuleSMapper.selectByCardNo(request.getCardNo());
		if(tCCouponRule!=null) {
			BeanUtils.copyProperties(tCCouponRule, tdCCouponRuleDTO);
		}
		 return tdCCouponRuleDTO;
	}

	/**
	 * 保存优惠券.<br/>
	 * @param request
	 * @return
	 */
	@Override
	public Integer saveCouponRule(TdCCouponRuleSaveReq request) {
		TdCCouponRule record = new TdCCouponRule();
		BeanUtils.copyProperties(request,record);
		return tdCCouponRuleMapper.insertSelective(record);
	}

	@Override
	public Integer saveCouponRuleList(List<TdCCouponRule> tdCCouponRuleList) {
		return tdCCouponRuleSMapper.saveCouponRuleList(tdCCouponRuleList);
	}

	/**
	 * 修改优惠券.<br/>
	 * @param request
	 * @return
	 */
	@Override
	public Integer updateCouponRule(TdCCouponRuleSaveReq request) {
		TdCCouponRule record = new TdCCouponRule();
		BeanUtils.copyProperties(request,record);
		return tdCCouponRuleMapper.updateByPrimaryKeySelective(record);
	}

	/**
	 * 删除优惠券.<br/>
	 * @param request
	 * @return
	 */
	@Override
	public Integer deleteCouponRule(TdCCouponRuleSaveReq request) {
		int deleteFlg = 0;

		if(null != request && request.getId() != null){
			TdCCouponRule tdCCouponRule = tdCCouponRuleMapper.selectByPrimaryKey(request.getId());
			/**1.删除优惠券规则.*/
			TdCCouponRule couponRuleouponRule = new TdCCouponRule();
			couponRuleouponRule.setId(request.getId());
			couponRuleouponRule.setDataState(request.getDataState());
			deleteFlg = tdCCouponRuleMapper.updateByPrimaryKeySelective(couponRuleouponRule);
			if(deleteFlg >0 ){
				TdCCouponRuleParkExample example = new TdCCouponRuleParkExample();
				example.createCriteria().andCardNoEqualTo(tdCCouponRule.getCardNo());
              //2.删除停车场优惠券关系表
				tdCCouponRuleParkMapper.deleteByExample(example);
			}
		}

		return deleteFlg;

	}

	/**
	 * 分页查询优惠券规则
	 * @Auther: wangfs
	 * @param
	 * @return
	 */
	@Override
	public PageInfo<TdCCouponRule> queryCouponRuleForPage(QueryCouponRuleReq request) {

		//1.设置分页
		PageHelper.startPage(request.getBaseRequest().getPageNum(),request.getBaseRequest().getPageSize());
		//2.查询数据
		TdCCouponRuleExample example = new TdCCouponRuleExample();
		TdCCouponRuleExample.Criteria criteria = example.createCriteria();
		TdCCouponRuleExample.Criteria criteria2 = example.createCriteria();
		if(StringUtils.isNotEmpty(request.getCardNo())){
			criteria.andCardNoEqualTo(request.getCardNo());
			criteria2.andCardNoEqualTo(request.getCardNo());
		}
		if(StringUtils.isNotEmpty(request.getCardName())){
			criteria.andCardNameLike("%"+request.getCardName()+"%");
			criteria2.andCardNameLike("%"+request.getCardName()+"%");
		}
		if(StringUtils.isNotEmpty(request.getBatchNo())){
			criteria.andBatchNoLike("%"+request.getBatchNo()+"%");
			criteria2.andBatchNoLike("%"+request.getBatchNo()+"%");
		}
		if(request.getCouponsType() != null ){
			criteria.andCouponsTypeEqualTo(request.getCouponsType());
			criteria2.andCouponsTypeEqualTo(request.getCouponsType());
		}
		if(request.getIsUesed() != null ){
			criteria.andIsUesedEqualTo(request.getIsUesed());
			criteria2.andIsUesedEqualTo(request.getIsUesed());
		}
		if(CollectionUtils.isNotEmpty(request.getCardTypes())){
		    criteria.andCardTypeIn(request.getCardTypes());
		    criteria2.andCardTypeIn(request.getCardTypes());
		}
		if(CollectionUtils.isNotEmpty(request.getReceiveChannels())){
		    criteria.andReceiveChannelsIn(request.getReceiveChannels());
		    criteria2.andReceiveChannelsIn(request.getReceiveChannels());
		}
		if(null != request.getOrgId()){
			criteria.andOrgIdEqualTo(request.getOrgId());
			criteria2.andOrgIdEqualTo(request.getOrgId());
		}

		if(null != request.getOwener()){
			criteria.andOwenerEqualTo(request.getOwener());
			criteria2.andOwenerEqualTo(request.getOwener());
		}

		if(request.getDataState() != null){//生效
			if((DataStatusEnum.DATA_STATUS_VALID.value()).equals(request.getDataState())){
				criteria.andDataStateEqualTo(request.getDataState());
				criteria.andBeginTimeLessThanOrEqualTo(new Date());
				criteria.andEndTimeGreaterThanOrEqualTo(new Date());
				criteria2.andDataStateEqualTo(request.getDataState());
				criteria2.andBeginTimeLessThanOrEqualTo(new Date());
				criteria2.andEndTimeGreaterThanOrEqualTo(new Date());
			}
			if((DataStatusEnum.DATA_STATUS_NO_VALID.value()).equals(request.getDataState())){//失效
				criteria.andDataStateEqualTo(request.getDataState());
				criteria2.andEndTimeLessThan(new Date());
			}
			if(2 == request.getDataState()){//未生效
				criteria.andBeginTimeGreaterThan(new Date());
				criteria.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
				criteria2.andBeginTimeGreaterThan(new Date());
				criteria2.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
			}
		}
		if(request.getEndDate() != null){
			criteria.andEndTimeBetween(DateUtil.beginOfDay(request.getEndDate()), DateUtil.endOfDay(request.getEndDate()));
			criteria2.andEndTimeBetween(DateUtil.beginOfDay(request.getEndDate()), DateUtil.endOfDay(request.getEndDate()));
		}
		example.or(criteria2);
		example.setOrderByClause("id desc");
		List<TdCCouponRule> tdCCouponRules = tdCCouponRuleMapper.selectByExample(example);
		return new PageInfo<TdCCouponRule>(tdCCouponRules);
	}

	@Override
	public Integer deleteBatchCouponRule(TdCCouponRuleDeleteReq request) {
		TdCCouponRuleExample example = new TdCCouponRuleExample();
		TdCCouponRuleExample.Criteria criteria = example.createCriteria();
		criteria.andIdIn(request.getIds());
		TdCCouponRule tdCCouponRule = new TdCCouponRule();
		tdCCouponRule.setDataState(DataStatusEnum.DATA_STATUS_NO_VALID.value());
		return tdCCouponRuleMapper.updateByExampleSelective(tdCCouponRule,example);
	}

	/**
	 * 根据优惠券规则CardNo修改优惠券规则为无效
	 * @param request
	 * @return
	 */
	@Override
	public Integer updateCouponRuleNoValidByCardNo(TdCCouponRuleSaveReq request) {
		TdCCouponRuleExample example = new TdCCouponRuleExample();
		TdCCouponRuleExample.Criteria criteria = example.createCriteria();
		criteria.andCardNoEqualTo(request.getCardNo());
		TdCCouponRule tdCCouponRule = new TdCCouponRule();
		tdCCouponRule.setDataState(DataStatusEnum.DATA_STATUS_NO_VALID.value());
		tdCCouponRule.setCardState(DataStatusEnum.DATA_STATUS_NO_VALID.value());
		tdCCouponRule.setModfiyDate(new Date());
		return tdCCouponRuleMapper.updateByExampleSelective(tdCCouponRule,example);
	}

}