TdCCouponPersonDaoImpl.java 6.98 KB
package com.zteits.pay.dao.impl;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zteits.clouds.api.dto.order.coupon.CouponPageRequest;
import com.zteits.clouds.api.dto.order.coupon.CouponPageVO;
import com.zteits.clouds.api.dto.order.coupon.CouponStatisticsVO;
import com.zteits.clouds.api.dto.pay.TdCCustPersonDTO;
import com.zteits.clouds.api.dto.pay.param.DeleteCouponInfoReq;
import com.zteits.pay.domain.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.zteits.clouds.api.apibase.constants.DataStatusEnum;
import com.zteits.clouds.api.dto.owner.dto.OwnerBaseDTO;
import com.zteits.clouds.api.dto.owner.param.OwnerRequest;
import com.zteits.clouds.api.dto.pay.param.TdCCouponPersonRequest;
import com.zteits.pay.dao.TdCCouponPersonDao;
import com.zteits.pay.dao.TdCCouponRuleDao;
import com.zteits.pay.domain.TdCCouponPerson;
import com.zteits.pay.domain.TdCCouponPersonDO;
import com.zteits.pay.domain.TdCCouponPersonExample;
import com.zteits.pay.domain.TdCCouponPersonExample.Criteria;
import com.zteits.pay.domain.TdCPresentRule;
import com.zteits.pay.mapper.TdCCouponPersonMapper;
import com.zteits.pay.mapper.smapper.TdCCouponPersonSMapper;
@Component
public class TdCCouponPersonDaoImpl implements TdCCouponPersonDao{
	private static final Logger logger = LoggerFactory.getLogger(TdCCouponPersonDaoImpl.class);

	@Autowired
	private TdCCouponPersonSMapper tdCCouponPersonSMapper;

	@Autowired
	private TdCCouponPersonMapper tdCCouponPersonMapper;

	@Autowired
	private TdCCouponRuleDao tdCCouponRuleDao;

	@Override
	public List<TdCCouponPersonDO> getCouponPersonState(TdCCouponPersonRequest request) {
		return tdCCouponPersonSMapper.getCouponPersonState(request);
	}

	@Override
	public List<TdCCouponPersonDO> getCouponPersonStateForShare(TdCCouponPersonRequest request) {
		return tdCCouponPersonSMapper.getCouponPersonStateForShare(request);
	}

	@Override
	public Integer getCouponPersonNum(TdCCouponPersonRequest request) {
		return tdCCouponPersonSMapper.getCouponPersonNum(request);
	}

	@Override
	public Integer insertCouponPerson(TdCCouponPerson tdCCouponPerson) {
		return tdCCouponPersonMapper.insertSelective(tdCCouponPerson);
	}

	@Override
	public Boolean deleteCouponPerson(TdCCouponPersonRequest request) {
		TdCCouponPersonExample example = new TdCCouponPersonExample();
		example.createCriteria().andCardNoEqualTo(request.getCardNo())
			.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value())
			.andIdEqualTo(Long.valueOf(request.getId()));
		TdCCouponPerson tdCCouponPerson = new TdCCouponPerson();
		tdCCouponPerson.setDataState(DataStatusEnum.DATA_STATUS_NO_VALID.value());
		tdCCouponPerson.setModfiyDate(new Date());
		tdCCouponPerson.setModfiyEmpid(request.getCustId());
		return tdCCouponPersonMapper.updateByExampleSelective(tdCCouponPerson, example) > 0;

	}

	@Override
	public Integer UpdateCouponPerson(TdCCouponPerson tdCCouponPerson) {
		return tdCCouponPersonMapper.updateByPrimaryKeySelective(tdCCouponPerson);
	}

	@Override
	public List<TdCCouponPerson> getTodayReceiveCoupon(TdCCouponPersonRequest request) {
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String s = sdf.format(new Date());
		try {
			date =  sdf.parse(s);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		TdCCouponPersonExample example = new TdCCouponPersonExample();
		Criteria sql = example.createCriteria().andCardNoIn(request.getCardNos())
				.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value())
				.andCustIdEqualTo(request.getCustId());
		if(request.getFriendFlag()!=null&&(!request.getFriendFlag())){
			sql.andCreateDateBetween(date, new Date());
		}
		return tdCCouponPersonMapper.selectByExample(example);
	}

	@Override
	public void presentCouponForCust(TdCPresentRule presentRule,Date endTime, String custId,String acquireNo) {
        //给个人赠送优惠券
        String cardNo = presentRule.getCardNo();
        Long orgId = presentRule.getOrgId();
		TdCCouponPerson couponPerson = new TdCCouponPerson();
		couponPerson.setCardNo(cardNo);
		/**设置获取类型:10-领取,20-赠送*/
		couponPerson.setAcquireType(20);
		/**20+赠送来源详细编号,例如注册赠送为901,则20901*/
		couponPerson.setAcquireDetailType(Integer.valueOf(20+""+presentRule.getPresentSourceDetailType()));
		couponPerson.setAcquireNo(acquireNo);
		couponPerson.setDataState(DataStatusEnum.DATA_STATUS_VALID.value());
		couponPerson.setCreateDate(new Date());
		//设置是否已使用 1:已使用 0:未使用
		couponPerson.setIsUesed(0);
		couponPerson.setCreateEmpid(custId);
		couponPerson.setCustId(custId);
		couponPerson.setOrgId(orgId);
		couponPerson.setBeginTime(new Date());
		couponPerson.setEndTime(endTime);
		this.insertCouponPerson(couponPerson);
	}

    @Override
    public long countByExample(TdCCouponPersonExample example) {
        return tdCCouponPersonMapper.countByExample(example);
    }

    @Override
	public OwnerBaseDTO getPersonCouponNum(OwnerRequest request) {
		return tdCCouponPersonSMapper.getPersonCouponNum(request);
	}

	/**
	 * 作废个人卡券
	 * @param request
	 */
	@Override
	public Boolean deleteCouponPersonById(DeleteCouponInfoReq request) {
		TdCCouponPersonExample example = new TdCCouponPersonExample();
		example.createCriteria().andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value())
				.andIdEqualTo(Long.valueOf(request.getCouponNo()));
		TdCCouponPerson tdCCouponPerson = new TdCCouponPerson();
		tdCCouponPerson.setDataState(DataStatusEnum.DATA_STATUS_NO_VALID.value());
		tdCCouponPerson.setModfiyDate(new Date());
		return tdCCouponPersonMapper.updateByExampleSelective(tdCCouponPerson, example) > 0;
	}

	/**
	 * 根据主键查询优惠券
	 * @param id
	 * @return
	 */
	@Override
	public TdCCouponPerson getCouponById(Long id) {
		return tdCCouponPersonMapper.selectByPrimaryKey(id);
	}

	/**
	 * 分页查询优惠券详情
	 *
	 * @param request
	 * @return
	 */
	@Override
	public PageInfo<CouponPageVO> getCouponsPage(CouponPageRequest request) {
		PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize());
		logger.info("getCouponsPage查询条件:{}", JSONObject.toJSONString(request));
		List<CouponPageVO> list = tdCCouponPersonSMapper.getCouponsPage(request);
		return new PageInfo<>(list);
	}

	@Override
	public List<CouponPageVO> getCouponsList(CouponPageRequest request) {
		logger.info("getCouponsPage查询条件:{}", JSONObject.toJSONString(request));
		List<CouponPageVO> list = tdCCouponPersonSMapper.getCouponsPage(request);
		return list;
	}

	/**
	 * 查询优惠券统计数据
	 * @param request
	 * @return
	 */
	@Override
	public CouponStatisticsVO getCouponsStatistics(CouponPageRequest request) {
		return tdCCouponPersonSMapper.getCouponsStatistics(request);
	}

}