|
|
@@ -1,10 +1,8 @@
|
|
|
package com.izouma.awesomeadmin.service.impl;
|
|
|
|
|
|
+import com.izouma.awesomeadmin.constant.AppConstant;
|
|
|
import com.izouma.awesomeadmin.dao.DrawSessionMapper;
|
|
|
-import com.izouma.awesomeadmin.model.AwardInfo;
|
|
|
-import com.izouma.awesomeadmin.model.DrawRecord;
|
|
|
-import com.izouma.awesomeadmin.model.DrawSession;
|
|
|
-import com.izouma.awesomeadmin.model.UserInfo;
|
|
|
+import com.izouma.awesomeadmin.model.*;
|
|
|
import com.izouma.awesomeadmin.service.*;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.apache.commons.lang.time.DateUtils;
|
|
|
@@ -20,15 +18,19 @@ public class DrawServiceImpl implements DrawService {
|
|
|
private static Logger logger = Logger.getLogger(DrawServiceImpl.class);
|
|
|
|
|
|
@Autowired
|
|
|
- private DrawSessionService drawSessionService;
|
|
|
+ private DrawSessionService drawSessionService;
|
|
|
@Autowired
|
|
|
- private DrawSessionMapper drawSessionMapper;
|
|
|
+ private DrawSessionMapper drawSessionMapper;
|
|
|
@Autowired
|
|
|
- private AwardInfoService awardInfoService;
|
|
|
+ private AwardInfoService awardInfoService;
|
|
|
@Autowired
|
|
|
- private DrawRecordService drawRecordService;
|
|
|
+ private DrawRecordService drawRecordService;
|
|
|
@Autowired
|
|
|
- private SystemConfigService systemConfigService;
|
|
|
+ private SystemConfigService systemConfigService;
|
|
|
+ @Autowired
|
|
|
+ private UserInfoService userInfoService;
|
|
|
+ @Autowired
|
|
|
+ private IntegralRecordService integralRecordService;
|
|
|
|
|
|
@Override
|
|
|
public Map<String, Object> getDrawSession(Boolean refresh) {
|
|
|
@@ -97,9 +99,12 @@ public class DrawServiceImpl implements DrawService {
|
|
|
double winProbability = systemConfigService.getDouble("win_probability", 0.000001);
|
|
|
|
|
|
UserInfo userInfo = (UserInfo) SecurityUtils.getSubject().getPrincipal();
|
|
|
+ userInfo = userInfoService.getUserInfoById(userInfo.getId().toString());
|
|
|
List<DrawRecord> records = drawRecordService.getTodayDrawRecord(userInfo.getId());
|
|
|
if (records == null || records.size() >= maxDrawTimes) {
|
|
|
msg = "已达今日抽奖上限";
|
|
|
+ } else if (userInfo.getIntegral() < drawIntegral) {
|
|
|
+ msg = "积分不足";
|
|
|
} else {
|
|
|
Random random = new Random();
|
|
|
win = random.nextInt((int) (1 / winProbability)) == 0;
|
|
|
@@ -124,7 +129,23 @@ public class DrawServiceImpl implements DrawService {
|
|
|
drawRecord.setIntegral(drawIntegral);
|
|
|
drawRecordService.createDrawRecord(drawRecord);
|
|
|
|
|
|
+ UserInfo u = new UserInfo();
|
|
|
+ u.setId(userInfo.getId());
|
|
|
+ u.setIntegral(userInfo.getIntegral() - drawIntegral);
|
|
|
+ userInfoService.updateUserInfo(u);
|
|
|
+
|
|
|
+ IntegralRecord integralRecord = new IntegralRecord();
|
|
|
+ integralRecord.setUserId(userInfo.getId());
|
|
|
+ integralRecord.setType(AppConstant.IntegralTpye.DRAW);
|
|
|
+ integralRecord.setModify(0 - drawIntegral);
|
|
|
+ integralRecord.setDetail("积分抽奖");
|
|
|
+ integralRecord.setRemark(win ? "抽中" : "未抽中");
|
|
|
+ integralRecord.setBalance(u.getIntegral());
|
|
|
+ integralRecord.setLinkId(drawRecord.getId());
|
|
|
+ integralRecordService.createIntegralRecord(integralRecord);
|
|
|
+
|
|
|
if (win) {
|
|
|
+ msg = "恭喜你,中奖啦!";
|
|
|
int i = random.nextInt(awards.size());
|
|
|
AwardInfo awardInfo = awards.get(i);
|
|
|
awardInfo.setCollected(true);
|
|
|
@@ -132,6 +153,8 @@ public class DrawServiceImpl implements DrawService {
|
|
|
awardInfo.setCollectTime(new Date());
|
|
|
awardInfoService.updateAwardInfo(awardInfo);
|
|
|
map.put("winAward", awardInfo);
|
|
|
+ } else {
|
|
|
+ msg = "很遗憾,未中奖~";
|
|
|
}
|
|
|
}
|
|
|
|