TdCPresentRuleDaoImpl.java 8.37 KB
package com.zteits.pay.dao.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

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

import org.apache.commons.collections4.CollectionUtils;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.xiaoleilu.hutool.date.DateUtil;
import com.zteits.clouds.api.apibase.constants.DataStatusEnum;
import com.zteits.clouds.api.dto.pay.param.TdCPresentRuleRequest;
import com.zteits.pay.dao.TdCPresentRuleDao;
import com.zteits.pay.domain.TdCPresentRule;
import com.zteits.pay.domain.TdCPresentRuleExample;
import com.zteits.pay.domain.TdCPresentRuleExample.Criteria;
import com.zteits.pay.mapper.TdCPresentRuleMapper;

@Component
public class TdCPresentRuleDaoImpl implements  TdCPresentRuleDao {
    @Autowired
    private TdCPresentRuleMapper tdCPresentRuleMapper;
    @Override
    public int deleteTdCPresentRuleByPrimaryKey(Long id, String opId, String opName) {
        TdCPresentRule record = new TdCPresentRule();
        record.setId(id);
        record.setModfiyEmpid(opId);
        record.setModfiyDate(new Date());
        record.setDataState(DataStatusEnum.DATA_STATUS_NO_VALID.value());
        return tdCPresentRuleMapper.updateByPrimaryKeySelective(record);
    }

    @Override
    public int saveTdCPresentRule(TdCPresentRule tdCPresentRule) {
        if(tdCPresentRule.getCreateDate()==null){
            tdCPresentRule.setCreateDate(new Date());
        }
//        if(tdCPresentRule.getModfiyDate()==null){
//            tdCPresentRule.setModfiyDate(new Date());
//        }
        return tdCPresentRuleMapper.insertSelective(tdCPresentRule);
    }

    @Override
    public int updateByExampleSelective(TdCPresentRule record, TdCPresentRuleExample example) {
        return tdCPresentRuleMapper.updateByExampleSelective(record,example);
    }

    @Override
    public int updateByPrimaryKeySelective(TdCPresentRule record) {
        return tdCPresentRuleMapper.updateByPrimaryKeySelective(record);
    }

    @Override
    public List<TdCPresentRule> selectByExample(TdCPresentRuleExample example) {
        return tdCPresentRuleMapper.selectByExample(example);
    }

    @Override
    public TdCPresentRule queryByPrimaryKey(Long id) {
        return tdCPresentRuleMapper.selectByPrimaryKey(id);
    }

    @Override
    public List<TdCPresentRule> queryTdCPresentRule(TdCPresentRuleRequest request) {
        TdCPresentRuleExample example = new TdCPresentRuleExample();
        Criteria sql = example.createCriteria();
        Criteria sql2 = example.createCriteria();
        if(request.getOrgId() != null){
            sql.andOrgIdEqualTo(request.getOrgId());
            sql2.andOrgIdEqualTo(request.getOrgId());
        }
        if(request.getRuleName() != null){
            sql.andRuleNameLike("%"+request.getRuleName()+"%");
            sql2.andRuleNameLike("%"+request.getRuleName()+"%");
        }
        if(CollectionUtils.isNotEmpty(request.getPresentSourceDetailTypes())){
            sql.andPresentSourceDetailTypeIn(request.getPresentSourceDetailTypes());
            sql2.andPresentSourceDetailTypeIn(request.getPresentSourceDetailTypes());
        }
        if(CollectionUtils.isNotEmpty(request.getPresentTypes())){
            sql.andPresentTypeIn(request.getPresentTypes());
            sql2.andPresentTypeIn(request.getPresentTypes());
        }
        if(request.getState() != null){
            if(request.getState() == 1){//生效中
                sql.andBeginTimeLessThanOrEqualTo(new Date()).andEndTimeGreaterThanOrEqualTo(new Date());
                sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
                sql2.andBeginTimeLessThanOrEqualTo(new Date()).andEndTimeGreaterThanOrEqualTo(new Date());
                sql2.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
            }
            if(request.getState() == 0){//已失效
                sql.andEndTimeLessThan(new Date());
                sql2.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_NO_VALID.value());
            }
            if(request.getState() == 2){//未生效
                sql.andBeginTimeGreaterThan(new Date());
                sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
                sql2.andBeginTimeGreaterThan(new Date());
                sql2.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
            }
        }
//        sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
        
        example.or(sql2);
        return tdCPresentRuleMapper.selectByExample(example);
    }

    @Override
    public int batchDeleteTdCPresentRuleByPrimaryKey(List<Long> ids, String opId, String opName) {
        TdCPresentRule record = new TdCPresentRule();
        record.setModfiyEmpid(opId);
        record.setModfiyDate(new Date());
        record.setDataState(DataStatusEnum.DATA_STATUS_NO_VALID.value());
        //where条件
        TdCPresentRuleExample example = new TdCPresentRuleExample();
        example.createCriteria().andIdIn(ids);
        return tdCPresentRuleMapper.updateByExampleSelective(record,example);
    }

    @Override
    public PageInfo<TdCPresentRule> queryTdCPresentRuleForPage(TdCPresentRuleRequest request) {
        PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize());
        TdCPresentRuleExample example = new TdCPresentRuleExample();
        Criteria sql = example.createCriteria();
        Criteria sql2 = example.createCriteria();
        if(request.getOrgId() != null){
            sql.andOrgIdEqualTo(request.getOrgId());
            sql2.andOrgIdEqualTo(request.getOrgId());
        }
        if(request.getRuleName() != null){
            sql.andRuleNameLike("%"+request.getRuleName()+"%");
            sql2.andRuleNameLike("%"+request.getRuleName()+"%");
        }
        if(CollectionUtils.isNotEmpty(request.getPresentSourceDetailTypes())){
            sql.andPresentSourceDetailTypeIn(request.getPresentSourceDetailTypes());
            sql2.andPresentSourceDetailTypeIn(request.getPresentSourceDetailTypes());
        }
        if(CollectionUtils.isNotEmpty(request.getPresentTypes())){
            sql.andPresentTypeIn(request.getPresentTypes());
            sql2.andPresentTypeIn(request.getPresentTypes());
        }
        if(request.getState() != null){
            if(request.getState() == 1){//生效中
                sql.andBeginTimeLessThanOrEqualTo(new Date()).andEndTimeGreaterThanOrEqualTo(new Date());
                sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
                sql2.andBeginTimeLessThanOrEqualTo(new Date()).andEndTimeGreaterThanOrEqualTo(new Date());
                sql2.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
            }
            if(request.getState() == 0){//已失效
                sql.andEndTimeLessThan(new Date());
                sql2.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_NO_VALID.value());
            }
            if(request.getState() == 2){//未生效
                sql.andBeginTimeGreaterThan(new Date());
                sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
                sql2.andBeginTimeGreaterThan(new Date());
                sql2.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
            }
        }
//        sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
        if(request.getEndDate() != null){
			sql.andEndTimeBetween(DateUtil.beginOfDay(request.getEndDate()), DateUtil.endOfDay(request.getEndDate()));
			sql2.andEndTimeBetween(DateUtil.beginOfDay(request.getEndDate()), DateUtil.endOfDay(request.getEndDate()));
		}
        example.or(sql2);
        example.setOrderByClause("id desc");
        List<TdCPresentRule> list = tdCPresentRuleMapper.selectByExample(example);
        if (CollectionUtils.isNotEmpty(list)) {
            return new PageInfo<TdCPresentRule>(list);
        }
        return new PageInfo<TdCPresentRule>(new ArrayList<TdCPresentRule>());
    }

    /**
     * 获取同等充值金额的补充数据ID
     * @param fullCutValue
     * @param presentSourceDetailType
     * @return
     */
    @Override
    public TdCPresentRule queryTdCPresentRuleInfoAsInfo(Integer fullCutValue, Integer presentSourceDetailType,Date d,Long id) {
        return tdCPresentRuleMapper.queryTdCPresentRuleInfoAsInfo(fullCutValue,presentSourceDetailType,d,id);
    }

}