Parcourir la source

Merge branch 'dev-meta' of xiongzhu/raex_back into master

sunkean il y a 3 ans
Parent
commit
cef6bc3370

+ 8 - 0
src/main/java/com/izouma/nineth/config/MetaConstants.java

@@ -8,4 +8,12 @@ public interface MetaConstants {
 
     String LIKE = "%";
 
+    String META_BAG_COLLECTION_NAME = "'META_BAG_COLLECTION_NAME'";
+
+    String META_CAN_USE_COLLECTION_ID = "META_CAN_USE_COLLECTION_ID";
+
+    String META_LUCKY_DRAW_ID = "META_LUCKY_DRAW_ID";
+
+    String SPLIT = ",";
+
 }

+ 0 - 4
src/main/java/com/izouma/nineth/domain/MetaLuckyDraw.java

@@ -64,10 +64,6 @@ public class MetaLuckyDraw extends BaseEntity {
     @ExcelProperty("奖励配置")
     private List<MetaLuckyDrawAwardModel> metaLuckDrawAwards;
 
-    @ApiModelProperty("是否发布")
-    @ExcelProperty("是否发布")
-    private boolean publish;
-
     @ApiModelProperty("道具id")
     @ExcelProperty("道具id")
     private Long metaPropId;

+ 26 - 0
src/main/java/com/izouma/nineth/domain/MetaUserTaskAwardReceivedRecord.java

@@ -0,0 +1,26 @@
+package com.izouma.nineth.domain;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Entity;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Entity
+@ApiModel("元宇宙玩家任务奖励领取记录")
+public class MetaUserTaskAwardReceivedRecord extends BaseEntity {
+
+    @ApiModelProperty("用户id")
+    @ExcelProperty("用户id")
+    private Long userId;
+
+    @ApiModelProperty("任务id")
+    @ExcelProperty("任务id")
+    private Long metaTaskId;
+}

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

@@ -22,5 +22,4 @@ public class MetaAwardReceiveDTO {
 
     @ApiModelProperty("备注")
     private String remark;
-
 }

+ 0 - 2
src/main/java/com/izouma/nineth/enums/MetaTaskStatus.java

@@ -2,8 +2,6 @@ package com.izouma.nineth.enums;
 
 public enum MetaTaskStatus {
 
-    GET("领取"),
-
     PROGRESS("进行中"),
 
     COMPLETION("已完成"),

+ 11 - 0
src/main/java/com/izouma/nineth/repo/MetaUserTaskAwardReceivedRecordRepo.java

@@ -0,0 +1,11 @@
+package com.izouma.nineth.repo;
+
+import com.izouma.nineth.domain.MetaUserTaskAwardReceivedRecord;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+public interface MetaUserTaskAwardReceivedRecordRepo extends JpaRepository<MetaUserTaskAwardReceivedRecord, Long>, JpaSpecificationExecutor<MetaUserTaskAwardReceivedRecord> {
+
+    MetaUserTaskAwardReceivedRecord findByUserIdAndMetaTaskIdAndDel(Long userId, Long metaTaskId, boolean del);
+
+}

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

@@ -6,12 +6,14 @@ import com.izouma.nineth.domain.MetaUserProp;
 import com.izouma.nineth.dto.MetaAwardReceiveDTO;
 import com.izouma.nineth.dto.MetaRestResult;
 import com.izouma.nineth.dto.MetaServiceResult;
+import com.izouma.nineth.enums.MetaAwardTypeEnum;
 import com.izouma.nineth.enums.MetaPropOperationType;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.transaction.Transactional;
+import java.util.Objects;
 
 @Service
 @AllArgsConstructor
@@ -62,4 +64,29 @@ public class MetaAwardReceiveService {
                 return MetaServiceResult.returnError("不存在的奖励类型");
         }
     }
+
+    public MetaServiceResult buildAwardConfig(MetaAwardReceiveDTO metaAwardReceiveDTO, Long metaPropId, int goldNum) {
+        if (Objects.isNull(metaAwardReceiveDTO)) {
+            return MetaServiceResult.returnError("构建奖励模型异常:奖励模型不能为空");
+        }
+        if (Objects.isNull(metaAwardReceiveDTO.getUserId())) {
+            return MetaServiceResult.returnError("构建奖励模型异常:用户id不能为空");
+        }
+        if (Objects.isNull(metaAwardReceiveDTO.getAwardType())) {
+            return MetaServiceResult.returnError("构建奖励模型异常:奖励类型不能为空");
+        }
+        if (MetaAwardTypeEnum.GOLD.equals(metaAwardReceiveDTO.getAwardType())) {
+            if (0 >= goldNum) {
+                return MetaServiceResult.returnError("构建奖励模型异常:奖励金币数量不能小于零");
+            }
+            metaAwardReceiveDTO.setConfig(String.valueOf(goldNum));
+        }
+        if (MetaAwardTypeEnum.META_PROP.equals(metaAwardReceiveDTO.getAwardType())) {
+            if (Objects.isNull(metaPropId)) {
+                return MetaServiceResult.returnError("构建奖励模型异常:奖励道具id不能为空");
+            }
+            metaAwardReceiveDTO.setConfig(String.valueOf(metaPropId));
+        }
+        return MetaServiceResult.returnSuccess("奖励模型构建成功");
+    }
 }

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

@@ -61,14 +61,9 @@ public class MetaSignAwardDrawRecordService {
         metaAwardReceiveDTO.setAwardType(awardType);
         metaAwardReceiveDTO.setUserId(userId);
         metaAwardReceiveDTO.setRemark("累计签到" + metaSignAwardId);
-        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 buildAwardConfigResult = metaAwardReceiveService.buildAwardConfig(metaAwardReceiveDTO, metaSignAward.getMetaPropId(), metaSignAward.getGoldNum());
+        if (!buildAwardConfigResult.isSuccess()) {
+            return MetaRestResult.returnError(buildAwardConfigResult.getMessage());
         }
         MetaServiceResult receive = metaAwardReceiveService.receive(metaAwardReceiveDTO);
         if (!receive.isSuccess()) {

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

@@ -76,14 +76,9 @@ public class MetaSignRecordService {
         metaAwardReceiveDTO.setAwardType(awardType);
         metaAwardReceiveDTO.setUserId(userId);
         metaAwardReceiveDTO.setRemark("每日签到");
-        if (MetaAwardTypeEnum.GOLD.equals(awardType)) {
-            metaAwardReceiveDTO.setConfig(String.valueOf(metaSign.getGoldNum()));
-        }
-        if (MetaAwardTypeEnum.NFT.equals(awardType)) {
-            metaAwardReceiveDTO.setConfig(metaSign.getAwardPic());
-        }
-        if (MetaAwardTypeEnum.META_PROP.equals(awardType)) {
-            metaAwardReceiveDTO.setConfig(String.valueOf(metaSign.getMetaPropId()));
+        MetaServiceResult buildAwardConfigResult = metaAwardReceiveService.buildAwardConfig(metaAwardReceiveDTO, metaSign.getMetaPropId(), metaSign.getGoldNum());
+        if (!buildAwardConfigResult.isSuccess()) {
+            return buildAwardConfigResult;
         }
         return metaAwardReceiveService.receive(metaAwardReceiveDTO);
     }

+ 65 - 0
src/main/java/com/izouma/nineth/service/MetaUserTaskAwardReceivedRecordService.java

@@ -0,0 +1,65 @@
+package com.izouma.nineth.service;
+
+import com.izouma.nineth.domain.MetaTask;
+import com.izouma.nineth.domain.MetaTaskToUser;
+import com.izouma.nineth.domain.MetaUserTaskAwardReceivedRecord;
+import com.izouma.nineth.dto.MetaAwardReceiveDTO;
+import com.izouma.nineth.dto.MetaRestResult;
+import com.izouma.nineth.dto.MetaServiceResult;
+import com.izouma.nineth.enums.MetaTaskStatus;
+import com.izouma.nineth.repo.MetaTaskRepo;
+import com.izouma.nineth.repo.MetaTaskToUserRepo;
+import com.izouma.nineth.repo.MetaUserTaskAwardReceivedRecordRepo;
+import com.izouma.nineth.utils.SecurityUtils;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import javax.transaction.Transactional;
+import java.util.Objects;
+
+@Service
+@AllArgsConstructor
+public class MetaUserTaskAwardReceivedRecordService {
+
+    private MetaTaskToUserRepo metaTaskToUserRepo;
+
+    private MetaTaskRepo metaTaskRepo;
+
+    private MetaAwardReceiveService metaAwardReceiveService;
+
+    private MetaUserTaskAwardReceivedRecordRepo metaUserTaskAwardReceivedRecordRepo;
+
+    @Transactional
+    public MetaRestResult<Void> receiveAward(Long metaTaskId) {
+        Long userId = SecurityUtils.getAuthenticatedUser().getId();
+        MetaTask metaTask = metaTaskRepo.findByIdAndDel(metaTaskId, false);
+        if (Objects.isNull(metaTask)) {
+            return MetaRestResult.returnError("奖励领取失败:不存在该任务!");
+        }
+        MetaTaskToUser metaTaskToUser = metaTaskToUserRepo.findByUserIdAndTaskIdAndDel(userId, metaTaskId, false);
+        if (Objects.isNull(metaTaskToUser)) {
+            return MetaRestResult.returnError("奖励领取失败:用户未领取过该任务!");
+        }
+        if (MetaTaskStatus.PROGRESS.equals(metaTaskToUser.getStatus()) || MetaTaskStatus.FINISH.equals(metaTaskToUser.getStatus())) {
+            return MetaRestResult.returnError(String.format("奖励领取失败:当前任务状态为[%S]", metaTaskToUser.getStatus().getDescription()));
+        }
+        MetaUserTaskAwardReceivedRecord metaUserTaskAwardReceivedRecord = metaUserTaskAwardReceivedRecordRepo.findByUserIdAndMetaTaskIdAndDel(userId, metaTaskId, false);
+        if (Objects.nonNull(metaUserTaskAwardReceivedRecord)) {
+            return MetaRestResult.returnError("奖励领取失败:用户已经领取过该任务奖励,不可重复领取!");
+        }
+        MetaAwardReceiveDTO metaAwardReceiveDTO = new MetaAwardReceiveDTO();
+        metaAwardReceiveDTO.setUserId(userId);
+        metaAwardReceiveDTO.setAwardType(metaTask.getAwardType());
+        metaAwardReceiveDTO.setRemark("任务" + metaTaskId);
+        MetaServiceResult result = metaAwardReceiveService.buildAwardConfig(metaAwardReceiveDTO, metaTask.getMetaPropId(), metaTask.getGoldNum());
+        if (!result.isSuccess()) {
+            return MetaRestResult.returnError(result.getMessage());
+        }
+        MetaServiceResult receive = metaAwardReceiveService.receive(metaAwardReceiveDTO);
+        if (!receive.isSuccess()) {
+            return MetaRestResult.returnError(receive.getMessage());
+        }
+        metaUserTaskAwardReceivedRecordRepo.save(new MetaUserTaskAwardReceivedRecord(userId, metaTaskId));
+        return MetaRestResult.returnSuccess(receive.getMessage());
+    }
+}

+ 23 - 5
src/main/java/com/izouma/nineth/web/MetaLuckyDrawController.java

@@ -1,16 +1,20 @@
 package com.izouma.nineth.web;
 
+import com.izouma.nineth.config.MetaConstants;
 import com.izouma.nineth.domain.MetaLuckyDraw;
 import com.izouma.nineth.domain.MetaLuckyDrawAwardModel;
+import com.izouma.nineth.dto.MetaRestResult;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.enums.MetaAwardTypeEnum;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.MetaLuckyDrawRepo;
 import com.izouma.nineth.service.MetaLuckyDrawService;
+import com.izouma.nineth.service.MetaParamsConfigService;
 import com.izouma.nineth.utils.ObjUtils;
 import com.izouma.nineth.utils.excel.ExcelUtils;
 import lombok.AllArgsConstructor;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;
 
@@ -28,6 +32,8 @@ public class MetaLuckyDrawController extends BaseController {
     private MetaLuckyDrawService metaLuckyDrawService;
     private MetaLuckyDrawRepo metaLuckyDrawRepo;
 
+    private MetaParamsConfigService metaParamsConfigService;
+
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     public MetaLuckyDraw save(@RequestBody MetaLuckyDraw record) {
@@ -55,11 +61,9 @@ public class MetaLuckyDrawController extends BaseController {
             }
             record.setMetaLuckDrawAwards(metaLuckDrawAwards);
         }
-        if (record.isPublish()) {
-            MetaLuckyDraw metaLuckyDraw = metaLuckyDrawRepo.findByNameAndPublishAndDel(record.getName(), true, false);
-            if (Objects.nonNull(metaLuckyDraw) && !Objects.equals(metaLuckyDraw.getId(), record.getId())) {
-                throw new BusinessException("该活动名称已经存在!");
-            }
+        MetaLuckyDraw metaLuckyDraw = metaLuckyDrawRepo.findByNameAndPublishAndDel(record.getName(), true, false);
+        if (Objects.nonNull(metaLuckyDraw) && !Objects.equals(metaLuckyDraw.getId(), record.getId())) {
+            throw new BusinessException("该活动名称已经存在!");
         }
         if (record.getId() != null) {
             MetaLuckyDraw orig = metaLuckyDrawRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
@@ -92,5 +96,19 @@ public class MetaLuckyDrawController extends BaseController {
         List<MetaLuckyDraw> data = all(pageQuery).getContent();
         ExcelUtils.export(response, data);
     }
+
+    @GetMapping("/findMetaLuckyDraw")
+    public MetaRestResult<MetaLuckyDraw> findMetaLuckyDraw() {
+        String idConfig = metaParamsConfigService.getString(MetaConstants.META_LUCKY_DRAW_ID);
+        if (StringUtils.isBlank(idConfig)) {
+            return MetaRestResult.returnError("抽奖活动id配置不存在!");
+        }
+        MetaLuckyDraw metaLuckyDraw = metaLuckyDrawRepo.findById(Long.parseLong(idConfig)).orElse(null);
+        if (Objects.isNull(metaLuckyDraw)) {
+            return MetaRestResult.returnError("抽奖活动不存在!");
+        }
+        return MetaRestResult.returnSuccess(metaLuckyDraw);
+    }
+
 }
 

+ 0 - 13
src/main/java/com/izouma/nineth/web/MetaTaskToUserController.java

@@ -57,19 +57,6 @@ public class MetaTaskToUserController {
         return MetaRestResult.returnSuccess(metaTaskToUserRepo.save(metaTaskToUser));
     }
 
-    @PostMapping("/{id}/startTask")
-    public MetaRestResult<MetaTaskToUser> startTask(@PathVariable Long id) {
-        MetaTaskToUser metaTaskToUser = metaTaskToUserRepo.findByIdAndDel(id, false);
-        if (Objects.isNull(metaTaskToUser)) {
-            return MetaRestResult.returnError("暂无任务领取记录");
-        }
-        if (!MetaTaskStatus.GET.equals(metaTaskToUser.getStatus())) {
-            return MetaRestResult.returnError(String.format("无法开始任务:当前任务状态[%S]", metaTaskToUser.getStatus().getDescription()));
-        }
-        metaTaskToUser.setStatus(MetaTaskStatus.PROGRESS);
-        return MetaRestResult.returnSuccess(metaTaskToUserRepo.save(metaTaskToUser));
-    }
-
     @GetMapping("/{userId}/{status}/findByStatus")
     public MetaRestResult<List<MetaTaskToUser>> findByStatus(@PathVariable Long userId, @PathVariable MetaTaskStatus status) {
         return metaTaskToUserService.findByStatus(userId, status);

+ 4 - 4
src/main/java/com/izouma/nineth/web/MetaUserBagController.java

@@ -41,11 +41,11 @@ public class MetaUserBagController {
     public MetaRestResult<MetaUserBagDTO> queryMetaBag() {
         Long userId = SecurityUtils.getAuthenticatedUser().getId();
         List<MetaUserProp> metaUserProps = metaUserPropRepo.findByUserIdAndDel(userId, false);
-        String names = metaParamsConfigService.getString("META_BAG_COLLECTION_NAME");
+        String names = metaParamsConfigService.getString(MetaConstants.META_BAG_COLLECTION_NAME);
         List<MetaBagAssetDTO> metaBagAssetDTOS = queryAsset(names, userId);
-        String id = metaParamsConfigService.getString("META_CAN_USE_COLLECTION_ID");
+        String id = metaParamsConfigService.getString(MetaConstants.META_CAN_USE_COLLECTION_ID);
         if (StringUtils.isNotBlank(id)) {
-            List<String> ids = Arrays.asList(id.split(","));
+            List<String> ids = Arrays.asList(id.split(MetaConstants.SPLIT));
             metaBagAssetDTOS.forEach(metaBagAssetDTO -> {
                 metaBagAssetDTO.setCanUse(ids.contains(String.valueOf(metaBagAssetDTO.getCollectionId())));
             });
@@ -62,7 +62,7 @@ public class MetaUserBagController {
             });
             return metaBagAssetDTOS;
         }
-        List<String> nameList = Arrays.asList(names.split(","));
+        List<String> nameList = Arrays.asList(names.split(MetaConstants.SPLIT));
         nameList.forEach(
                 name -> {
                     List<Asset> assets = assetRepo.findAllByUserIdAndStatusInAndNameLike(userId, Constants.META_NORMAL_STATUS, MetaConstants.LIKE.concat(name).concat(MetaConstants.LIKE));

+ 21 - 0
src/main/java/com/izouma/nineth/web/MetaUserTaskAwardReceivedRecordController.java

@@ -0,0 +1,21 @@
+package com.izouma.nineth.web;
+
+import com.izouma.nineth.dto.MetaRestResult;
+import com.izouma.nineth.service.MetaUserTaskAwardReceivedRecordService;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/metaUserTaskAwardReceivedRecord")
+@AllArgsConstructor
+public class MetaUserTaskAwardReceivedRecordController {
+
+    private MetaUserTaskAwardReceivedRecordService metaUserTaskAwardReceivedRecordService;
+
+    @PostMapping("/receiveAward")
+    public MetaRestResult<Void> receiveAward(Long metaTaskId) {
+        return metaUserTaskAwardReceivedRecordService.receiveAward(metaTaskId);
+    }
+}

+ 0 - 3
src/main/vue/src/views/MetaLuckyDrawEdit.vue

@@ -244,9 +244,6 @@
 					<el-form-item>
 						<el-button size="mini" @click="addAward" :disabled="!canEdit"> 添加配置 </el-button>
 					</el-form-item>
-					<el-form-item prop="publish" label="是否发布">
-						<el-switch v-model="formData.publish"> </el-switch>
-					</el-form-item>
 					<el-form-item class="form-submit">
 						<el-button @click="onSave" :loading="saving" type="primary"> 保存 </el-button>
 						<el-button @click="onDelete" :disabled="saving" type="danger" v-if="formData.id">

+ 0 - 5
src/main/vue/src/views/MetaLuckyDrawList.vue

@@ -77,11 +77,6 @@
             <el-table-column prop="metaPropId" align="center" label="道具"> </el-table-column>
             <el-table-column prop="metaPropNum" align="center" label="道具数量"> </el-table-column>
             <el-table-column prop="detail" align="center" label="规则详情"> </el-table-column>
-            <el-table-column prop="publish" align="center" label="是否发布">
-                <template slot-scope="{ row }">
-                    <el-tag :type="row.publish ? '' : 'info'"> {{ row.publish }} </el-tag>
-                </template>
-            </el-table-column>
             <el-table-column label="操作" align="center" fixed="right" width="350">
                 <template slot-scope="{ row }">
                     <el-button @click="editRow(row)" type="primary" size="mini" plain> 编辑 </el-button>

+ 7 - 1
src/main/vue/src/views/MetaPropList.vue

@@ -60,7 +60,13 @@
 			<el-table-column prop="propType" align="center" label="道具类型" :formatter="propTypeFormatter"> </el-table-column>
 			<el-table-column prop="usedType" align="center" label="使用类型" :formatter="usedTypeFormatter"> </el-table-column>
             <el-table-column prop="triggerType" align="center" label="触发类型" :formatter="triggerTypeFormatter"> </el-table-column>
-			<el-table-column prop="times" align="center" label="时间(h)"> </el-table-column>
+			<el-table-column prop="times" align="center" label="限时道具时间(h)"> </el-table-column>
+			<el-table-column prop="goldNum" align="center" label="转化金币数量"> </el-table-column>
+			<el-table-column prop="canUse" align="center" label="直接使用">
+                <template slot-scope="{ row }">
+                    <el-tag :type="row.canUse ? '' : 'info'"> {{ row.canUse }} </el-tag>
+                </template>
+            </el-table-column>
 			<el-table-column label="操作" align="center" fixed="right" width="150">
 				<template slot-scope="{ row }">
 					<el-button @click="editRow(row)" type="primary" size="mini" plain> 编辑 </el-button>