|
@@ -1,6 +1,9 @@
|
|
package com.txz.mall.service.impl;
|
|
package com.txz.mall.service.impl;
|
|
|
|
|
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
+import com.github.pagehelper.PageHelper;
|
|
import com.txz.cif.enums.BizTypeEnum;
|
|
import com.txz.cif.enums.BizTypeEnum;
|
|
import com.txz.cif.param.SignRedEnvelopeParam;
|
|
import com.txz.cif.param.SignRedEnvelopeParam;
|
|
import com.txz.mall.core.AbstractService;
|
|
import com.txz.mall.core.AbstractService;
|
|
@@ -15,6 +18,7 @@ import com.txz.operating.dto.ConfigDTO;
|
|
import org.apache.commons.lang.time.DateUtils;
|
|
import org.apache.commons.lang.time.DateUtils;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
+import org.springframework.util.ObjectUtils;
|
|
import tk.mybatis.mapper.entity.Condition;
|
|
import tk.mybatis.mapper.entity.Condition;
|
|
import tk.mybatis.mapper.entity.Example;
|
|
import tk.mybatis.mapper.entity.Example;
|
|
import vo.UserSignDetailVO;
|
|
import vo.UserSignDetailVO;
|
|
@@ -50,13 +54,13 @@ public class UserSignServiceImpl extends AbstractService<UserSign> implements Us
|
|
UserSignDetailVO detailVO = new UserSignDetailVO();
|
|
UserSignDetailVO detailVO = new UserSignDetailVO();
|
|
boolean hasSignedToday = hasSignedToday(uid);
|
|
boolean hasSignedToday = hasSignedToday(uid);
|
|
detailVO.setToday(hasSignedToday);
|
|
detailVO.setToday(hasSignedToday);
|
|
- int continuousDays = getContinuousDays(uid);
|
|
|
|
|
|
+ int continuousDays = getContinuousDays(uid,hasSignedToday);
|
|
detailVO.setContinueSign(continuousDays);
|
|
detailVO.setContinueSign(continuousDays);
|
|
|
|
|
|
ConfigDTO configByCode = configDubboServiceClient.getConfigByCode(USER_SIGN_INFO);
|
|
ConfigDTO configByCode = configDubboServiceClient.getConfigByCode(USER_SIGN_INFO);
|
|
List<UserSignDetailVO.SignVO> list = JSONObject.parseArray(configByCode.getValueInfo(), UserSignDetailVO.SignVO.class);
|
|
List<UserSignDetailVO.SignVO> list = JSONObject.parseArray(configByCode.getValueInfo(), UserSignDetailVO.SignVO.class);
|
|
for (int i = 0; i < list.size(); i++) {
|
|
for (int i = 0; i < list.size(); i++) {
|
|
- list.get(i).setStatus(continuousDays > 0 && i < continuousDays ? 1 : 0);
|
|
|
|
|
|
+ list.get(i).setStatus(i < continuousDays ? 1 : 0);
|
|
}
|
|
}
|
|
detailVO.setSignList(list);
|
|
detailVO.setSignList(list);
|
|
return detailVO;
|
|
return detailVO;
|
|
@@ -81,11 +85,10 @@ public class UserSignServiceImpl extends AbstractService<UserSign> implements Us
|
|
continuousDays = 1;
|
|
continuousDays = 1;
|
|
}
|
|
}
|
|
|
|
|
|
- // 满7天重置为0
|
|
|
|
|
|
+ // 满7天重置为1
|
|
if (continuousDays == 8) {
|
|
if (continuousDays == 8) {
|
|
//注意 是满7天才发放奖励 每日签到不送
|
|
//注意 是满7天才发放奖励 每日签到不送
|
|
- giveReward(uid);
|
|
|
|
- continuousDays = 0;
|
|
|
|
|
|
+ continuousDays = 1;
|
|
}
|
|
}
|
|
|
|
|
|
// 5. 插入新的签到记录
|
|
// 5. 插入新的签到记录
|
|
@@ -95,7 +98,12 @@ public class UserSignServiceImpl extends AbstractService<UserSign> implements Us
|
|
userSign.setContinuousDays(continuousDays);
|
|
userSign.setContinuousDays(continuousDays);
|
|
save(userSign);
|
|
save(userSign);
|
|
|
|
|
|
- // 考虑是否换成redis的bitmap
|
|
|
|
|
|
+ if (continuousDays == 7) {
|
|
|
|
+ //注意 是满7天才发放奖励 每日签到不送
|
|
|
|
+ giveReward(uid);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
// 判断今天是否已经签到
|
|
// 判断今天是否已经签到
|
|
@@ -114,6 +122,7 @@ public class UserSignServiceImpl extends AbstractService<UserSign> implements Us
|
|
Example.Criteria criteria = condition.createCriteria();
|
|
Example.Criteria criteria = condition.createCriteria();
|
|
criteria.andEqualTo("uid", uid);
|
|
criteria.andEqualTo("uid", uid);
|
|
criteria.andLike("createDay", new SimpleDateFormat("yyyy-MM-dd").format(yesterday) + "%");
|
|
criteria.andLike("createDay", new SimpleDateFormat("yyyy-MM-dd").format(yesterday) + "%");
|
|
|
|
+ condition.setOrderByClause("id desc");
|
|
List<UserSign> list = userSignMapper.selectByCondition(condition);
|
|
List<UserSign> list = userSignMapper.selectByCondition(condition);
|
|
return list.isEmpty() ? null : list.get(0);
|
|
return list.isEmpty() ? null : list.get(0);
|
|
}
|
|
}
|
|
@@ -130,20 +139,33 @@ public class UserSignServiceImpl extends AbstractService<UserSign> implements Us
|
|
}
|
|
}
|
|
|
|
|
|
// 获取用户的连续签到天数
|
|
// 获取用户的连续签到天数
|
|
- private int getContinuousDays(Long userId) {
|
|
|
|
|
|
+ private int getContinuousDays(Long userId,boolean hasSignedToday) {
|
|
|
|
+
|
|
|
|
+ PageHelper.startPage(1, 1);
|
|
// 获取最新的签到记录
|
|
// 获取最新的签到记录
|
|
Condition condition = new Condition(UserSign.class);
|
|
Condition condition = new Condition(UserSign.class);
|
|
Example.Criteria criteria = condition.createCriteria();
|
|
Example.Criteria criteria = condition.createCriteria();
|
|
criteria.andEqualTo("uid", userId);
|
|
criteria.andEqualTo("uid", userId);
|
|
|
|
+ Date date = new Date();
|
|
|
|
+ if(hasSignedToday) {
|
|
|
|
+ criteria.andLike("createDay", new SimpleDateFormat("yyyy-MM-dd").format(date) + "%");
|
|
|
|
+ }else{
|
|
|
|
+ DateTime dateTime = DateUtil.offsetDay(date, -1);
|
|
|
|
+ criteria.andLike("createDay", new SimpleDateFormat("yyyy-MM-dd").format(dateTime) + "%");
|
|
|
|
+ }
|
|
condition.orderBy("id").desc();
|
|
condition.orderBy("id").desc();
|
|
- condition.setCountProperty("id");
|
|
|
|
|
|
+
|
|
List<UserSign> list = userSignMapper.selectByCondition(condition);
|
|
List<UserSign> list = userSignMapper.selectByCondition(condition);
|
|
|
|
|
|
if (list.isEmpty()) {
|
|
if (list.isEmpty()) {
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
-
|
|
|
|
UserSign latestSign = list.get(0);
|
|
UserSign latestSign = list.get(0);
|
|
|
|
+ if(!ObjectUtils.isEmpty(latestSign) && latestSign.getContinuousDays().equals(new Integer(7)) && (!hasSignedToday)){
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
return latestSign.getContinuousDays();
|
|
return latestSign.getContinuousDays();
|
|
}
|
|
}
|
|
|
|
|