package com.zteits.pay.biz; import com.alibaba.fastjson.JSONObject; import com.zteits.clouds.api.apibase.bean.BizResult; import com.zteits.clouds.api.apibase.constants.ErrorType; import com.zteits.clouds.api.apibase.exception.BizException; import com.zteits.clouds.api.dto.pay.TdCCustSignDTO; import com.zteits.clouds.api.dto.pay.param.TdCCustSignRequest; import com.zteits.clouds.api.service.pay.TdCCustSignService; import com.zteits.clouds.api.service.sys.SysCommonService; import com.zteits.pay.dao.TdCCustScoreDetailDao; import com.zteits.pay.dao.TdCCustSignDao; import com.zteits.pay.domain.TdCCustSign; import com.zteits.pay.domain.TdCCustSignDO; import com.zteits.pay.service.presentrule.oper.TdCPresentRuleOperInnerService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; @Service("com.zteits.pay.biz.TdCCustSignServiceImpl") public class TdCCustSignServiceImpl implements TdCCustSignService{ private static final Logger logger = LoggerFactory.getLogger(TdCCustScoreDetailServiceImpl.class); @Autowired private TdCCustSignDao tdCCustSignDAO; @Autowired private SysCommonService sysCommonService; @Autowired private TdCCustScoreDetailDao tdCCustScoreDetailDao; @Autowired private TdCPresentRuleOperInnerService tdCPresentRuleOperInnerService; @Override public BizResult getCustSignState(TdCCustSignRequest request) { TdCCustSign tdCCustSign = new TdCCustSign(); BeanUtils.copyProperties(request, tdCCustSign); int flg =tdCCustSignDAO.getCustSignState(tdCCustSign); return new BizResult(flg); } @Transactional @Override public BizResult saveCustSign(TdCCustSignRequest request) { logger.info("签到入参信息:request={}"+ JSONObject.toJSONString(request)); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); String dateString = formatter.format(new Date()); //当前时间 TdCCustSignDTO tdCCustSignDTO = new TdCCustSignDTO(); tdCCustSignDTO.setSignScore(0); tdCCustSignDTO.setSignDate(new Date()); tdCCustSignDTO.setContinueSignNum(0); TdCCustSign tdCCustSign = new TdCCustSign(); BeanUtils.copyProperties(request, tdCCustSign); TdCCustSignDO tdCCustSignDO = new TdCCustSignDO(); //判断今天是否已经签到 tdCCustSignDO = tdCCustSignDAO.queryCustSignOld(tdCCustSign); if(tdCCustSignDO.getSignDate() != null ){ BeanUtils.copyProperties(tdCCustSignDO, tdCCustSignDTO); return new BizResult(tdCCustSignDTO); } Long score = tdCPresentRuleOperInnerService.presentForSign(tdCCustSign.getCustId()); if(score==null || score.intValue()==0){ BeanUtils.copyProperties(tdCCustSignDO, tdCCustSignDTO); return new BizResult(tdCCustSignDTO); } tdCCustSign.setSignScore(score.intValue()); /**首先查询前一天的签到信息*/ TdCCustSign tdCCustSignQ = new TdCCustSign(); BeanUtils.copyProperties(tdCCustSign, tdCCustSignQ); tdCCustSignQ.setSignDate(this.getBeforeTime(tdCCustSign.getSignDate())); tdCCustSignDO = tdCCustSignDAO.queryCustSignOld(tdCCustSignQ); if(tdCCustSignDO.getSignDate() == null){ //前一天没有签到 tdCCustSign.setContinueSignNum(1); }else{ //前一天签到 if(tdCCustSignDO.getContinueSignNum() == 7){ //签到7天,今天按第一天开始签到 tdCCustSign.setContinueSignNum(1); }else{ tdCCustSign.setContinueSignNum(tdCCustSignDO.getContinueSignNum()+1); } } int flg =tdCCustSignDAO.saveCustSign(tdCCustSign); if(flg == 0){ throw new BizException(ErrorType.CUST_SIGN_ERROR,"签到失败!"); } //查询 tdCCustSignDO = tdCCustSignDAO.queryCustSignOld(tdCCustSign); BeanUtils.copyProperties(tdCCustSignDO, tdCCustSignDTO); return new BizResult(tdCCustSignDTO); } //获取明年的最后一天 private Date getEndTime(Date endTime){ Date beginTime = null; //获取当前时间 Calendar cal = Calendar.getInstance(); cal.setTime(endTime); //按你的要求设置时间 cal.set(cal.get(Calendar.YEAR)+1, 11, 31, 00, 00, 00); beginTime = cal.getTime(); return beginTime; } //获取前一天 private Date getBeforeTime(Date beginTime){ Date date = null; Calendar calendar = Calendar.getInstance(); calendar.setTime(beginTime); calendar.add(Calendar.DAY_OF_MONTH, -1);//-1今天的时间减一天 date = calendar.getTime(); return date; } @Override public BizResult queryCustSign(TdCCustSignRequest request) { TdCCustSign tdCCustSign = new TdCCustSign(); TdCCustSignDO tdCCustSignDO = new TdCCustSignDO(); TdCCustSignDTO tdCCustSignDTO = new TdCCustSignDTO(); BeanUtils.copyProperties(request, tdCCustSign); //查询是否签到 int flg =tdCCustSignDAO.getCustSignState(tdCCustSign); if(flg>0){ tdCCustSignDO = tdCCustSignDAO.queryCustSignOld(tdCCustSign); }else{ tdCCustSign.setSignDate(this.getBeforeTime(tdCCustSign.getSignDate())); tdCCustSignDO = tdCCustSignDAO.queryCustSignOld(tdCCustSign); tdCCustSignDO.setSignDate(tdCCustSign.getSignDate()); if(tdCCustSignDO.getContinueSignNum() == 7){ //签到7天,今天按第一天开始签到 tdCCustSignDO.setContinueSignNum(0); } } BeanUtils.copyProperties(tdCCustSignDO, tdCCustSignDTO); return new BizResult(tdCCustSignDTO); } }