x1ongzhu 6 ani în urmă
părinte
comite
decd0cd10e

+ 32 - 9
src/main/java/com/izouma/awesomeadmin/service/impl/DrawServiceImpl.java

@@ -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 = "很遗憾,未中奖~";
                 }
             }