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 getCouponPersonState(TdCCouponPersonRequest request) { return tdCCouponPersonSMapper.getCouponPersonState(request); } @Override public List 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 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 getCouponsPage(CouponPageRequest request) { PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize()); logger.info("getCouponsPage查询条件:{}", JSONObject.toJSONString(request)); List list = tdCCouponPersonSMapper.getCouponsPage(request); return new PageInfo<>(list); } @Override public List getCouponsList(CouponPageRequest request) { logger.info("getCouponsPage查询条件:{}", JSONObject.toJSONString(request)); List list = tdCCouponPersonSMapper.getCouponsPage(request); return list; } /** * 查询优惠券统计数据 * @param request * @return */ @Override public CouponStatisticsVO getCouponsStatistics(CouponPageRequest request) { return tdCCouponPersonSMapper.getCouponsStatistics(request); } }