ソースを参照

Merge branch 'dev' of xiongzhu/raex_back into master

xubinhui 2 年 前
コミット
6fae0d54f1

+ 2 - 1
src/main/java/com/izouma/nineth/dto/nftdomain/CreateCollection.java

@@ -11,6 +11,7 @@ import lombok.Data;
 public class CreateCollection {
     Long   id;
     int    num;
-    int    delayHours;
+    double delayHours;
+    int    minutes;
     double delayTime;
 }

+ 17 - 1
src/main/java/com/izouma/nineth/service/OrderCancelService.java

@@ -61,7 +61,7 @@ public class OrderCancelService {
     @PostConstruct
     public void init() {
         orderCancelInterval = sysConfigRepo.findByName("order_cancel_time")
-                .map(SysConfig::getValue).map(Integer::parseInt).orElse(210);
+                                           .map(SysConfig::getValue).map(Integer::parseInt).orElse(210);
     }
 
     @Scheduled(fixedRate = 30000, initialDelay = 10000)
@@ -161,6 +161,22 @@ public class OrderCancelService {
         });
     }
 
+    @Scheduled(fixedRate = 30000, initialDelay = 30000)
+    @RedisLock(value = "domain_ask_payed_batch_cancel", expire = 3, unit = TimeUnit.MINUTES)
+    public void batchCancelPayedDomainAsk() {
+        List<DomainAsk> orders = domainAskRepo.findByStatusAndCreatedAtBeforeAndDelFalse(DomainAskStatus.ASKING,
+                LocalDateTime.now().minusDays(7));
+        orders.forEach(o -> {
+            try {
+                DomainAsk order = domainAskRepo.findById(o.getId()).orElseThrow(new BusinessException("订单不存在"));
+                if (order.getStatus() == DomainAskStatus.ASKING) {
+                    domainAskService.cancel(order);
+                }
+            } catch (Exception ignored) {
+            }
+        });
+    }
+
     private boolean canCancel(String id) {
         String channel = null;
         Object payTmp = redisTemplate.opsForValue().get(RedisKeys.PAY_TMP + id);

+ 1 - 4
src/main/java/com/izouma/nineth/service/RiceService.java

@@ -751,11 +751,8 @@ public class RiceService {
     /**
      * 定时任务
      */
-
-
-    //@Scheduled(cron = "0 * * * * ?")
     @Scheduled(cron = "0 0 0 * * ?")
-    public void resetRice() {
+    public void resetRiceInfo() {
         List<Rice> riceList = riceRepo.findAll();
         for (Rice rice : riceList) {
             rice.setExchangeCount(0);

+ 6 - 0
src/main/java/com/izouma/nineth/service/nftdomain/DomainAskService.java

@@ -31,6 +31,7 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.time.LocalDateTime;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -135,8 +136,13 @@ public class DomainAskService {
             domainAsk.setStatus(DomainAskStatus.CANCELLED);
         }
         if (domainAsk.getStatus() == DomainAskStatus.ASKING) {
+            if (domainAsk.getCreatedAt().isAfter(LocalDateTime.now().minusDays(1))) {
+                releaseOrderLock(domainAsk.getId());
+                throw new BusinessException("24 小时才可结束");
+            }
             if (!SecurityUtils.getAuthenticatedUser().getId().equals(domainAsk.getUserId()) & !SecurityUtils
                     .getAuthenticatedUser().getId().equals(domainAsk.getOwnerId())) {
+                releaseOrderLock(domainAsk.getId());
                 throw new BusinessException("该叫价用户id不匹配,不能取消");
             }
             domainAsk.setStatus(DomainAskStatus.REFUNDED);

+ 12 - 1
src/main/java/com/izouma/nineth/web/MintActivityController.java

@@ -4,6 +4,7 @@ import com.izouma.nineth.domain.Collection;
 import com.izouma.nineth.domain.MintActivity;
 import com.izouma.nineth.domain.Tag;
 import com.izouma.nineth.dto.MintActivityRule;
+import com.izouma.nineth.dto.nftdomain.CreateCollection;
 import com.izouma.nineth.dto.nftdomain.CreateCollectionDTO;
 import com.izouma.nineth.enums.CollectionType;
 import com.izouma.nineth.repo.CollectionRepo;
@@ -44,6 +45,14 @@ public class MintActivityController extends BaseController {
     @PostMapping("/save")
     public MintActivity save(@RequestBody MintActivity record) {
         if (record.getRule() != null) mintActivityService.checkRule(record.getRule());
+        List<CreateCollection> createCollections = new ArrayList<>();
+        record.getTargetCollectionIds().forEach(collection -> {
+            double hour = collection.getDelayHours();
+            int minutes = (int) (hour * 60);
+            collection.setMinutes(minutes);
+            createCollections.add(collection);
+        });
+        record.setTargetCollectionIds(createCollections);
         if (record.getId() != null) {
             MintActivity orig = mintActivityRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
             orig.setName(record.getName());
@@ -65,7 +74,9 @@ public class MintActivityController extends BaseController {
             orig.setStartTime(record.getStartTime());
             orig.setAutoDrop(record.isAutoDrop());
             orig.setAirDropCollectionId(record.getAirDropCollectionId());
-
+            orig.setScheduleEnd(record.isScheduleEnd());
+            orig.setEndTime(record.getEndTime());
+            orig.setTargetCollectionIds(record.getTargetCollectionIds());
             orig = mintActivityRepo.save(orig);
             mintActivityService.syncStock(record.getId());
             return orig;

+ 23 - 4
src/main/vue/src/views/MintActivityEdit.vue

@@ -177,7 +177,7 @@
                         <el-radio v-model="formData.scheduleEnd" :label="true">是</el-radio>
                         <el-radio v-model="formData.scheduleEnd" :label="false">否</el-radio>
                     </el-form-item>
-                    <el-form-item prop="startTime" label="结束时间" v-if="formData.scheduleEnd">
+                    <el-form-item prop="endTime" label="结束时间" v-if="formData.scheduleEnd">
                         <el-date-picker
                             v-model="formData.endTime"
                             type="datetime"
@@ -186,13 +186,13 @@
                         ></el-date-picker>
                     </el-form-item>
 
-                    <el-form-item class="form-submit">
+                    <!-- <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">
                             删除
                         </el-button>
                         <el-button @click="$router.go(-1)" :disabled="saving">取消</el-button>
-                    </el-form-item>
+                    </el-form-item> -->
                     <el-form-item prop="holdingTagsList" label="持有藏品">
                         <div v-for="(item, i) in formData.holdingTagsList" class="rule-item">
                             <el-select v-model="formData.holdingTagsList[i].id" value-key="id" size="mini">
@@ -263,6 +263,7 @@ export default {
             formData: {
                 onShelf: false,
                 scheduleSale: true,
+                scheduleEnd: true,
                 rule: {
                     and: []
                 },
@@ -343,6 +344,24 @@ export default {
                         trigger: 'blur'
                     }
                 ],
+                endTime: [
+                    {
+                        validator: (rule, value, callback) => {
+                            if (this.formData.scheduleEnd) {
+                                if (!value) {
+                                    callback(new Error('请填写结束时间'));
+                                } else if (isBefore(parse(value, 'yyyy-MM-dd HH:mm:ss', new Date()), new Date())) {
+                                    callback(new Error('结束时间不能小于当前时间'));
+                                } else {
+                                    callback();
+                                }
+                            } else {
+                                callback();
+                            }
+                        },
+                        trigger: 'blur'
+                    }
+                ],
                 // holdingTagsList: [{ required: true, message: '请选择持有藏品', trigger: 'blur' }],
                 // targetCollectionIds: [{ required: true, message: '请选择空投藏品', trigger: 'blur' }],
                 rule: [
@@ -420,7 +439,7 @@ export default {
         },
         submit() {
             let data = { ...this.formData };
-
+            console.log('dfgdfdfg', data);
             this.saving = true;
             this.$http
                 .post('/mintActivity/save', data, { body: 'json' })