Parcourir la source

领取奖励调整

sunkean il y a 3 ans
Parent
commit
3282205df9

+ 6 - 6
src/main/java/com/izouma/nineth/dto/MetaAwardReceiveDTO.java

@@ -1,7 +1,6 @@
 package com.izouma.nineth.dto;
 
 import com.izouma.nineth.enums.MetaAwardTypeEnum;
-import com.izouma.nineth.utils.ObjUtils;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -18,9 +17,10 @@ public class MetaAwardReceiveDTO {
     @ApiModelProperty("奖励配置(金币奖励为金币数量,NFT奖励为NFT奖励图片地址)")
     private String config;
 
-    public static MetaAwardReceiveDTO create(Object obj) {
-        MetaAwardReceiveDTO metaAwardReceiveDTO = new MetaAwardReceiveDTO();
-        ObjUtils.merge(metaAwardReceiveDTO, obj);
-        return metaAwardReceiveDTO;
-    }
+    @ApiModelProperty("用户id")
+    private Long userId;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
 }

+ 3 - 3
src/main/java/com/izouma/nineth/service/MetaAwardReceiveService.java

@@ -22,7 +22,7 @@ public class MetaAwardReceiveService {
     private MetaUserPropService metaUserPropService;
 
     @Transactional
-    public MetaServiceResult receive(Long userId, MetaAwardReceiveDTO metaAwardReceiveDTO, String type) {
+    public MetaServiceResult receive(MetaAwardReceiveDTO metaAwardReceiveDTO) {
         switch (metaAwardReceiveDTO.getAwardType()) {
             case NULL:
                 return MetaServiceResult.returnSuccess("奖励类型为空");
@@ -33,7 +33,7 @@ public class MetaAwardReceiveService {
                 MetaRestResult<MetaUserGold> restResult;
                 try {
                     int num = Integer.parseInt(metaAwardReceiveDTO.getConfig());
-                    restResult = metaUserGoldService.changeNum(userId, num, String.format("玩家[%S]通过[%S]获得[%S]个金币", userId, type, num));
+                    restResult = metaUserGoldService.changeNum(metaAwardReceiveDTO.getUserId(), num, String.format("玩家[%S]通过[%S]获得[%S]个金币", metaAwardReceiveDTO.getUserId(), metaAwardReceiveDTO.getRemark(), num));
                 } catch (Exception e) {
                     return MetaServiceResult.returnError(String.format("金币奖励领取发生异常[%S]", e.getMessage()));
                 }
@@ -48,7 +48,7 @@ public class MetaAwardReceiveService {
                 MetaRestResult<MetaUserProp> operate;
                 try {
                     Long metaPropId = Long.parseLong(metaAwardReceiveDTO.getConfig());
-                    operate = metaUserPropService.operate(userId, metaPropId, MetaPropOperationType.RECEIVE);
+                    operate = metaUserPropService.operate(metaAwardReceiveDTO.getUserId(), metaPropId, MetaPropOperationType.RECEIVE);
                 } catch (Exception e) {
                     return MetaServiceResult.returnError(String.format("道具奖励领取发生异常[%S]", e.getMessage()));
                 }

+ 10 - 3
src/main/java/com/izouma/nineth/service/MetaGameCopyService.java

@@ -3,9 +3,7 @@ package com.izouma.nineth.service;
 import com.izouma.nineth.domain.MetaGameCopy;
 import com.izouma.nineth.domain.MetaGameProcess;
 import com.izouma.nineth.domain.MetaZombie;
-import com.izouma.nineth.dto.MetaRestResult;
-import com.izouma.nineth.dto.MetaZombieDTO;
-import com.izouma.nineth.dto.PageQuery;
+import com.izouma.nineth.dto.*;
 import com.izouma.nineth.repo.MetaGameCopyRepo;
 import com.izouma.nineth.repo.MetaGameProcessRepo;
 import com.izouma.nineth.repo.MetaZombieRepo;
@@ -34,6 +32,8 @@ public class MetaGameCopyService {
 
     private UserRepo userRepo;
 
+    private MetaAwardReceiveService metaAwardReceiveService;
+
     public Page<MetaGameCopy> all(PageQuery pageQuery) {
         return metaGameCopyRepo.findAll(JpaUtils.toSpecification(pageQuery, MetaGameCopy.class), JpaUtils.toPageRequest(pageQuery));
     }
@@ -109,6 +109,13 @@ public class MetaGameCopyService {
         metaGameProcess.setPoint(point);
         if (metaGameProcess.isCompleted()) {
             metaGameProcess.setMetaGameAward(LotteryUtils.lotteryForMetaGameAward(metaGameCopy.getMetaGameAwards()));
+            // TODO 自动领奖
+            MetaServiceResult result = metaAwardReceiveService.receive(new MetaAwardReceiveDTO(metaGameProcess.getMetaGameAward().getAwardType(), metaGameProcess.getMetaGameAward().getConfig(), metaGameProcess.getUserId(), "游戏"));
+            if (!result.isSuccess()) {
+                // 自动领取奖励失败,保存进度,返回错误
+                metaGameProcessRepo.save(metaGameProcess);
+                return MetaRestResult.returnError(result.getMessage());
+            }
         }
         return MetaRestResult.returnSuccess(metaGameProcessRepo.save(metaGameProcess));
     }

+ 2 - 2
src/main/java/com/izouma/nineth/service/MetaLuckyDrawAwardReceiveRecordService.java

@@ -73,12 +73,12 @@ public class MetaLuckyDrawAwardReceiveRecordService {
         metaLuckyDrawAwardReceiveRecord.setMetaLuckDrawAward(metaLuckyDrawAwardModel);
         metaLuckyDrawAwardReceiveRecord.setMetaLuckDrawAwardName(metaLuckyDrawAwardModel.getName());
         // TODO 考虑自动领取奖励做成开关
-        MetaServiceResult receive = metaAwardReceiveService.receive(userId, MetaAwardReceiveDTO.create(metaLuckyDrawAwardModel), "抽奖活动");
+        MetaServiceResult receive = metaAwardReceiveService.receive(new MetaAwardReceiveDTO(metaLuckyDrawAwardModel.getAwardType(), metaLuckyDrawAwardModel.getConfig(), userId, "抽奖活动"));
         if (!receive.isSuccess()) {
             // 抽奖记录正常保存,返回自动领奖错误信息!
             metaLuckyDrawAwardReceiveRecordRepo.save(metaLuckyDrawAwardReceiveRecord);
             return MetaRestResult.returnError(receive.getMessage());
         }
-        return MetaRestResult.returnSuccess(metaLuckyDrawAwardReceiveRecordRepo.save(metaLuckyDrawAwardReceiveRecord));
+        return MetaRestResult.returnSuccess(receive.getMessage(), metaLuckyDrawAwardReceiveRecordRepo.save(metaLuckyDrawAwardReceiveRecord));
     }
 }

+ 18 - 3
src/main/java/com/izouma/nineth/service/MetaSignAwardDrawRecordService.java

@@ -6,6 +6,7 @@ import com.izouma.nineth.dto.MetaAwardReceiveDTO;
 import com.izouma.nineth.dto.MetaRestResult;
 import com.izouma.nineth.dto.MetaServiceResult;
 import com.izouma.nineth.dto.PageQuery;
+import com.izouma.nineth.enums.MetaAwardTypeEnum;
 import com.izouma.nineth.repo.MetaSignAwardDrawRecordRepo;
 import com.izouma.nineth.repo.MetaSignAwardRepo;
 import com.izouma.nineth.repo.MetaSignRecordRepo;
@@ -56,13 +57,27 @@ public class MetaSignAwardDrawRecordService {
             return MetaRestResult.returnError(result.getMessage());
         }
         // TODO 考虑自动领取奖励做成开关
-        MetaServiceResult receive = metaAwardReceiveService.receive(userId, MetaAwardReceiveDTO.create(metaSignAward), "累计签到");
+        MetaAwardTypeEnum awardType = metaSignAward.getAwardType();
+        MetaAwardReceiveDTO metaAwardReceiveDTO = new MetaAwardReceiveDTO();
+        metaAwardReceiveDTO.setAwardType(awardType);
+        metaAwardReceiveDTO.setUserId(userId);
+        metaAwardReceiveDTO.setRemark("累计签到");
+        if (MetaAwardTypeEnum.GOLD.equals(awardType)) {
+            metaAwardReceiveDTO.setConfig(String.valueOf(metaSignAward.getGoldNum()));
+        }
+        if (MetaAwardTypeEnum.NFT.equals(awardType)) {
+            metaAwardReceiveDTO.setConfig(metaSignAward.getAwardPic());
+        }
+        if (MetaAwardTypeEnum.META_PROP.equals(awardType)) {
+            metaAwardReceiveDTO.setConfig(String.valueOf(metaSignAward.getMetaPropId()));
+        }
+        MetaServiceResult receive = metaAwardReceiveService.receive(metaAwardReceiveDTO);
         if (!receive.isSuccess()) {
-            return MetaRestResult.returnError(result.getMessage());
+            return MetaRestResult.returnError(receive.getMessage());
         }
         metaSignAward.setDraw(true);
         metaSignAwardDrawRecordRepo.save(new MetaSignAwardDrawRecord(userId, metaSignAwardId, metaSignAward.getDate()));
-        return MetaRestResult.returnSuccess(result.getMessage());
+        return MetaRestResult.returnSuccess(receive.getMessage(), metaSignAward);
     }
 
     private MetaServiceResult check(Long userId, MetaSignAward metaSignAward) {

+ 3 - 1
src/main/java/com/izouma/nineth/service/MetaSignRecordService.java

@@ -74,6 +74,8 @@ public class MetaSignRecordService {
         MetaAwardTypeEnum awardType = metaSign.getAwardType();
         MetaAwardReceiveDTO metaAwardReceiveDTO = new MetaAwardReceiveDTO();
         metaAwardReceiveDTO.setAwardType(awardType);
+        metaAwardReceiveDTO.setUserId(userId);
+        metaAwardReceiveDTO.setRemark("每日签到");
         if (MetaAwardTypeEnum.GOLD.equals(awardType)) {
             metaAwardReceiveDTO.setConfig(String.valueOf(metaSign.getGoldNum()));
         }
@@ -83,7 +85,7 @@ public class MetaSignRecordService {
         if (MetaAwardTypeEnum.META_PROP.equals(awardType)) {
             metaAwardReceiveDTO.setConfig(String.valueOf(metaSign.getMetaPropId()));
         }
-        return metaAwardReceiveService.receive(userId, metaAwardReceiveDTO, "每日签到");
+        return metaAwardReceiveService.receive(metaAwardReceiveDTO);
     }
 
     public MetaRestResult<MetaSignProgressDTO> signProgress() {

+ 27 - 0
src/main/java/com/izouma/nineth/web/MetaAwardReceiveController.java

@@ -0,0 +1,27 @@
+package com.izouma.nineth.web;
+
+import com.izouma.nineth.dto.MetaAwardReceiveDTO;
+import com.izouma.nineth.dto.MetaServiceResult;
+import com.izouma.nineth.service.MetaAwardReceiveService;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/metaAwardReceive")
+@AllArgsConstructor
+public class MetaAwardReceiveController {
+
+    private MetaAwardReceiveService metaAwardReceiveService;
+
+    @PostMapping("/receive")
+    public MetaServiceResult receive(@RequestBody MetaAwardReceiveDTO metaAwardReceiveDTO) {
+        MetaServiceResult receive = metaAwardReceiveService.receive(metaAwardReceiveDTO);
+        if (!receive.isSuccess()) {
+            return MetaServiceResult.returnError(receive.getMessage());
+        }
+        return MetaServiceResult.returnSuccess(receive.getMessage());
+    }
+}