|  |  | 
 |  |  |         signBasicInfoVo.setActivitySignAwardSetVos(activitySignAwardSetVos); | 
 |  |  |  | 
 |  |  |         //今日是否已经参与 | 
 |  |  |         ActivitySignRecord activitySignRecord = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,DateUtil.today()); | 
 |  |  |         ActivitySignRecord activitySignRecord = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,new Date()); | 
 |  |  |         if(ObjectUtil.isNotEmpty(activitySignRecord)) { | 
 |  |  |             signBasicInfoVo.setJoinState(SignBasicInfoVo.JOINSTATE_SIGN); | 
 |  |  |         }else { | 
 |  |  | 
 |  |  |          * 今日是否已经参与 | 
 |  |  |          * 新增签到记录表 | 
 |  |  |          * 判断累计连续签到天数是否+1 | 
 |  |  |          * 是否已领取 | 
 |  |  |          * 查询是否有签到奖品 | 
 |  |  |          *         日常奖励和自定义奖品 | 
 |  |  |          */ | 
 |  |  | 
 |  |  |             return AjaxResult.buildFailInstance("活动未开始"); | 
 |  |  |         } | 
 |  |  |         //今日是否已经参与 | 
 |  |  |         ActivitySignRecord activitySignRecord = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,DateUtil.today()); | 
 |  |  |         ActivitySignRecord activitySignRecord = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,new Date()); | 
 |  |  |         if (ObjectUtil.isNotEmpty(activitySignRecord)) { | 
 |  |  |             return AjaxResult.buildFailInstance("今日用户已经签到成功"); | 
 |  |  |         } | 
 |  |  |         //前一天是否签到 | 
 |  |  |         Date date = new Date(); | 
 |  |  |         DateTime offsetDay = DateUtil.offsetDay(date, -1); | 
 |  |  |         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | 
 |  |  |         ActivitySignRecord activitySignRecordOld = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,sdf.format(offsetDay.getTime())); | 
 |  |  |         ActivitySignRecord activitySignRecordOld = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,offsetDay); | 
 |  |  |         ActivitySignRecord activitySignRecordAdd = new ActivitySignRecord(); | 
 |  |  |         activitySignRecordAdd.setCompanyId(companyId); | 
 |  |  |         activitySignRecordAdd.setCreateBy(user.getName()); | 
 |  |  |         activitySignRecordAdd.setCreateTime(new Date()); | 
 |  |  |         activitySignRecordAdd.setUpdateBy(user.getName()); | 
 |  |  |         activitySignRecordAdd.setUpdateTime(new Date()); | 
 |  |  |         activitySignRecordAdd.setActivityId(actId); | 
 |  |  |         activitySignRecordAdd.setSignTime(date); | 
 |  |  |         activitySignRecordAdd.setUserId(userId); | 
 |  |  |         Integer cumulativeDay = activitySignRecordOld.getCumulativeDay(); | 
 |  |  |         if(ObjectUtil.isEmpty(activitySignRecordOld)) { | 
 |  |  |             //新增签到记录表,累计连续签到天数是1 | 
 |  |  |             activitySignRecordAdd.setCumulativeDay(1); | 
 |  |  |         }else { | 
 |  |  |             Integer cumulativeDay = activitySignRecordOld.getCumulativeDay(); | 
 |  |  |             //新增签到记录表,累计连续签到天数是否+1 | 
 |  |  |             activitySignRecordAdd.setCumulativeDay(cumulativeDay+1); | 
 |  |  |         } | 
 |  |  | 
 |  |  |             activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); | 
 |  |  |             activitySignReceiveRecord.setActivityId(actId); | 
 |  |  |             activitySignReceiveRecord.setCompanyId(companyId); | 
 |  |  |             activitySignReceiveRecord.setCreateBy(user.getName()); | 
 |  |  |             activitySignReceiveRecord.setCreateTime(new Date()); | 
 |  |  |             activitySignReceiveRecord.setUpdateBy(user.getName()); | 
 |  |  |             activitySignReceiveRecord.setUpdateTime(new Date()); | 
 |  |  |             activitySignReceiveRecordDao.insert(activitySignReceiveRecord); | 
 |  |  |              | 
 |  |  |             signSuccessVo.setNormalAwardName(activitySignAwardSetNormal.getAwardName()); | 
 |  |  |             signSuccessVo.setNormalAwardImg(activitySignAwardSetNormal.getIntroduceImg()); | 
 |  |  |         } | 
 |  |  |          | 
 |  |  |         //获取当前累计天数 | 
 |  |  |         int cumulativeDay = getCumulativeDay(actId, userId, date, 1); | 
 |  |  |         //自定义奖励 | 
 |  |  |         QueryWrapper<ActivitySignAwardSet> queryWrapperCumulativeDay = new QueryWrapper<>(); | 
 |  |  |         queryWrapperCumulativeDay.eq("award_rule",ActivitySignAwardSet.AWARDRULE_CUMULATIVEDAY); | 
 |  |  |         queryWrapperCumulativeDay.eq("cumulative_day",activitySignRecordAdd.getCumulativeDay()); | 
 |  |  |         queryWrapperCumulativeDay.eq("cumulative_day",cumulativeDay); | 
 |  |  |         queryWrapperCumulativeDay.eq("company_id",companyId); | 
 |  |  |         queryWrapperCumulativeDay.eq("activity_id",actId); | 
 |  |  |         ActivitySignAwardSet activitySignAwardSetCumulativeDay = activitySignAwardSetDao.selectOne(queryWrapperCumulativeDay); | 
 |  |  |         if(ObjectUtil.isNotEmpty(activitySignAwardSetCumulativeDay)) { | 
 |  |  |             //是否已领取 | 
 |  |  |             Long id = activitySignAwardSetCumulativeDay.getId(); | 
 |  |  |             QueryWrapper<ActivitySignReceiveRecord> queryWrapperActivitySignReceiveRecord = new QueryWrapper<>(); | 
 |  |  |             queryWrapperActivitySignReceiveRecord.eq("award_id", id); | 
 |  |  |             queryWrapperActivitySignReceiveRecord.eq("company_id", companyId); | 
 |  |  |             queryWrapperActivitySignReceiveRecord.eq("activity_id", actId); | 
 |  |  |             queryWrapperActivitySignReceiveRecord.eq("user_id", userId); | 
 |  |  |             ActivitySignReceiveRecord activitySignReceiveRecordDone = activitySignReceiveRecordDao.selectOne(queryWrapperActivitySignReceiveRecord); | 
 |  |  |             if (ObjectUtil.isNotEmpty(activitySignReceiveRecordDone)) { | 
 |  |  |                 String awardNameCumulativeDay = activitySignAwardSetCumulativeDay.getAwardName(); | 
 |  |  |                 AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(awardNameCumulativeDay+"已经领取过了"); | 
 |  |  |                 ajaxResult.setData(signSuccessVo); | 
 |  |  |                 return ajaxResult; | 
 |  |  |             } | 
 |  |  |             //新增奖品领取记录 | 
 |  |  |             ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); | 
 |  |  |             activitySignReceiveRecord.setUserId(userId); | 
 |  |  | 
 |  |  |             activitySignReceiveRecord.setActivityId(actId); | 
 |  |  |             activitySignReceiveRecord.setCompanyId(companyId); | 
 |  |  |             activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); | 
 |  |  |             activitySignReceiveRecord.setCreateBy(user.getName()); | 
 |  |  |             activitySignReceiveRecord.setCreateTime(new Date()); | 
 |  |  |             activitySignReceiveRecord.setUpdateBy(user.getName()); | 
 |  |  |             activitySignReceiveRecord.setUpdateTime(new Date()); | 
 |  |  |             /** | 
 |  |  |              * 奖项类型(1:自定义产品2:积分3:优惠券4:店铺商品) | 
 |  |  |              *  | 
 |  |  | 
 |  |  |                 signSuccessVo.setScoreCnt(activitySignAwardSetCumulativeDay.getScoreCnt()); | 
 |  |  |             } | 
 |  |  |             //3:优惠券 | 
 |  |  |             if(ActivitySignAwardSet.AWARDTYPE_SCORE == activitySignAwardSetCumulativeDay.getAwardType()) { | 
 |  |  |             if(ActivitySignAwardSet.AWARDTYPE_COUPON == activitySignAwardSetCumulativeDay.getAwardType()) { | 
 |  |  |                 signSuccessVo.setCouponName(activitySignAwardSetCumulativeDay.getCouponName()); | 
 |  |  |             } | 
 |  |  |             activitySignReceiveRecordDao.insert(activitySignReceiveRecord); | 
 |  |  | 
 |  |  |         ajaxResult.setData(signSuccessVo); | 
 |  |  |         return ajaxResult; | 
 |  |  |     } | 
 |  |  |     /** | 
 |  |  |      * 获取累计签到天数 | 
 |  |  |      * @param actId | 
 |  |  |      * @param userId | 
 |  |  |      * @param date | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     public int getCumulativeDay(long actId, long userId,Date date, int i) { | 
 |  |  |         ActivitySignRecord activitySignRecordOld = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,date); | 
 |  |  |         if(ObjectUtil.isEmpty(activitySignRecordOld)) { | 
 |  |  |             return i; | 
 |  |  |         } | 
 |  |  |         i++; | 
 |  |  |         DateTime offsetDay = DateUtil.offsetDay(date, -i); | 
 |  |  |         return getCumulativeDay(actId,userId,offsetDay,i); | 
 |  |  |     } | 
 |  |  |      | 
 |  |  |      | 
 |  |  |      | 
 |  |  |      | 
 |  |  | } |