Pārlūkot izejas kodu

Merge branch 'master' of http://git.izouma.com/xiongzhu/raex_back into dev-mata-ldz

lidongze 2 gadi atpakaļ
vecāks
revīzija
37bdd5dbbc

+ 15 - 0
src/main/java/com/izouma/nineth/domain/MetaObjectMove.java

@@ -1,6 +1,7 @@
 package com.izouma.nineth.domain;
 
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.izouma.nineth.annotations.Searchable;
 import com.izouma.nineth.converter.MetaObjectMoveCoordinateListConverter;
 import com.izouma.nineth.dto.MetaObjectMoveCoordinateDTO;
 import io.swagger.annotations.ApiModel;
@@ -39,4 +40,18 @@ public class MetaObjectMove extends BaseEntity {
     @ApiModelProperty("总移动时间")
     @ExcelProperty("总移动时间")
     private Long totalTime;
+
+    @ApiModelProperty("是否运行")
+    @ExcelProperty("是否运行")
+    private boolean run;
+
+    @ApiModelProperty("区域id")
+    @ExcelProperty("区域id")
+    @Searchable
+    private Long regionId;
+
+    @ApiModelProperty("城市id")
+    @ExcelProperty("城市id")
+    @Searchable
+    private Long cityId;
 }

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

@@ -12,5 +12,6 @@ public class CreateCollection {
     Long   id;
     int    num;
     int    delayHours;
+//    int    minutes;
     double delayTime;
 }

+ 2 - 1
src/main/java/com/izouma/nineth/enums/AssetStatus.java

@@ -12,7 +12,8 @@ public enum AssetStatus {
     AUCTIONED("已拍卖"),
     DESTROYED("已销毁"),
     DESTROYING("销毁中"),
-    PENDING("元域名审核")
+    PENDING("元域名审核"),
+    DESTRO("临时状态")
     ;
 
     private final String description;

+ 4 - 0
src/main/java/com/izouma/nineth/repo/MetaObjectMoveCoordinateRepo.java

@@ -4,7 +4,11 @@ import com.izouma.nineth.domain.MetaObjectMoveCoordinate;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 
+import java.util.List;
+
 public interface MetaObjectMoveCoordinateRepo extends JpaRepository<MetaObjectMoveCoordinate, Long>, JpaSpecificationExecutor<MetaObjectMoveCoordinate> {
 
     MetaObjectMoveCoordinate findByObjectIdAndCoordinateIndexAndDel(Long objectId, int coordinateIndex, boolean del);
+
+    List<MetaObjectMoveCoordinate> findAllByObjectIdAndDel(Long objectId, boolean del);
 }

+ 0 - 3
src/main/java/com/izouma/nineth/repo/MetaObjectMoveRepo.java

@@ -1,7 +1,6 @@
 package com.izouma.nineth.repo;
 
 import com.izouma.nineth.domain.MetaObjectMove;
-import com.izouma.nineth.domain.MetaResourceVersion;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
@@ -19,6 +18,4 @@ public interface MetaObjectMoveRepo extends JpaRepository<MetaObjectMove, Long>,
 
     MetaObjectMove findByObjectIdAndDel(Long objectId, boolean del);
 
-    @Query(value = "select * from meta_object_move a where a.object_id like ?1 and a.del = false", nativeQuery = true)
-    MetaObjectMove findByObjectId(Long objectId);
 }

+ 23 - 0
src/main/java/com/izouma/nineth/service/MetaObjectMoveService.java

@@ -92,6 +92,29 @@ public class MetaObjectMoveService {
         return save;
     }
 
+    @Transactional
+    public void del(Long id) {
+        MetaObjectMove metaObjectMove = metaObjectMoveRepo.findById(id).orElseThrow(new BusinessException("无记录"));
+        Long objectId = metaObjectMove.getObjectId();
+        String objectMoveKey = MetaConstants.META_OBJECT_MOVE_REDIS_KEY.concat(String.valueOf(objectId));
+        List<MetaObjectMoveCoordinate> metaObjectMoveCoordinates = metaObjectMoveCoordinateRepo.findAllByObjectIdAndDel(objectId, false);
+        // 删除物体信息
+        if (Objects.isNull(metaObjectMoveCoordinates)) {
+            redisTemplate.delete(objectMoveKey);
+            metaObjectMoveRepo.softDelete(id);
+            return;
+        }
+        // 删除坐标信息
+        metaObjectMoveCoordinates.forEach(metaObjectMoveCoordinate -> {
+            String coordinateKey = MetaConstants.META_OBJECT_INDEX_REDIS_KEY.concat(String.valueOf(objectId)).concat("_").concat(String.valueOf(metaObjectMoveCoordinate.getCoordinateIndex()));
+            redisTemplate.delete(coordinateKey);
+            metaObjectMoveCoordinateRepo.delete(metaObjectMoveCoordinate);
+        });
+        // 删除物体信息
+        redisTemplate.delete(objectMoveKey);
+        metaObjectMoveRepo.softDelete(id);
+    }
+
     @Transactional
     public void handleCoordinate(Long id) {
         MetaObjectMove metaObjectMove = metaObjectMoveRepo.findByIdAndDel(id, false);

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

@@ -734,7 +734,7 @@ public class MintOrderService {
                                                          .build());
 //                            mintOrder.setStatus(MintOrderStatus.FINISH);
                         } else {
-                            LocalDateTime dropTime = LocalDateTime.now().plusMinutes(collection.getDelayHours());
+                            LocalDateTime dropTime = LocalDateTime.now().plusHours(collection.getDelayHours());
                             if (mintOrder.getAirDropTime() == null) {
                                 mintOrder.setAirDropTime(dropTime);
                             } else {
@@ -934,7 +934,7 @@ public class MintOrderService {
 //                                mintOrder.setStatus(MintOrderStatus.FINISH);
 //                                mintOrderRepo.save(mintOrder);
                             } else {
-                                LocalDateTime dropTime = LocalDateTime.now().plusMinutes(collection.getDelayHours());
+                                LocalDateTime dropTime = LocalDateTime.now().plusHours(collection.getDelayHours());
                                 if (mintOrder.getAirDropTime() == null) {
                                     mintOrder.setAirDropTime(dropTime);
                                 } else {

+ 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);

+ 28 - 1
src/main/java/com/izouma/nineth/web/MetaObjectMoveController.java

@@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.List;
+import java.util.Objects;
 
 @RestController
 @RequestMapping("/metaObjectMove")
@@ -47,7 +48,7 @@ public class MetaObjectMoveController extends BaseController {
 
     @PostMapping("/del/{id}")
     public void del(@PathVariable Long id) {
-        metaObjectMoveRepo.softDelete(id);
+        metaObjectMoveService.del(id);
     }
 
     @GetMapping("/excel")
@@ -61,5 +62,31 @@ public class MetaObjectMoveController extends BaseController {
     public MetaObjectMoveCoordinate queryCoordinate(@PathVariable Long objectId) {
         return metaObjectMoveService.queryCoordinate(objectId);
     }
+
+    @PostMapping("/{id}/run")
+    public void run(@PathVariable Long id) {
+        MetaObjectMove metaObjectMove = metaObjectMoveRepo.findByIdAndDel(id, false);
+        if (Objects.isNull(metaObjectMove)) {
+            throw new BusinessException("无记录");
+        }
+        if (metaObjectMove.isRun()) {
+            throw new BusinessException("该物体正在运行中");
+        }
+        metaObjectMove.setRun(true);
+        metaObjectMoveRepo.save(metaObjectMove);
+    }
+
+    @PostMapping("/{id}/cancelRun")
+    public void cancelRun(@PathVariable Long id) {
+        MetaObjectMove metaObjectMove = metaObjectMoveRepo.findByIdAndDel(id, false);
+        if (Objects.isNull(metaObjectMove)) {
+            throw new BusinessException("无记录");
+        }
+        if (!metaObjectMove.isRun()) {
+            throw new BusinessException("该物体已经停止运行");
+        }
+        metaObjectMove.setRun(false);
+        metaObjectMoveRepo.save(metaObjectMove);
+    }
 }
 

+ 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;

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
src/main/resources/static/web-mobile/assets/main/import/0e/0eb5cd0fc.json


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
src/main/resources/static/web-mobile/assets/main/index.js


+ 14 - 0
src/main/vue/src/plugins/requestWithCertificate.js

@@ -0,0 +1,14 @@
+import https from 'https';
+import axios from 'axios';
+
+const requestWithCertificate = () => {
+  const agent = new https.Agent({
+    rejectUnauthorized: false // 允许访问无效或过期的 SSL 证书
+  });
+  const instance = axios.create({
+    httpsAgent: agent // 指定自定义的 SSL 证书验证方式
+  });
+  return instance;
+};
+
+export default requestWithCertificate;

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

@@ -202,13 +202,7 @@ export default {
                 });
         },
         initWebSocket() {
-            let wsuri = 'ws://127.0.0.1:8088/websocket/' + this.$store.state.userInfo.id;
-            if (location.host === 'raex.vip') {
-                wsuri = 'wss://mmo.raex.vip/websocket/' + this.$store.state.userInfo.id;
-            }
-            if (location.host === 'test.raex.vip') {
-                wsuri = 'wss://test.mmo.raex.vip/websocket/' + this.$store.state.userInfo.id;
-            }
+            let wsuri = 'wss://mmo.raex.vip/websocket/' + this.$store.state.userInfo.id;
             console.log('初始化websocket:' + wsuri);
             this.websock = new WebSocket(wsuri);
             this.websock.onmessage = this.websocketonmessage;

+ 20 - 0
src/main/vue/src/views/MetaObjectMoveEdit.vue

@@ -12,6 +12,12 @@
                     style="max-width: 500px;">
                     <el-form-item prop="objectId" label="物体id">
                         <el-input v-model="formData.objectId" :disabled="!canEdit"></el-input>
+                    </el-form-item>
+					<el-form-item prop="regionId" label="区域id">
+                        <el-input v-model="formData.regionId" :disabled="!canEdit"></el-input>
+                    </el-form-item>
+					<el-form-item prop="cityId" label="城市id">
+                        <el-input v-model="formData.cityId" :disabled="!canEdit"></el-input>
                     </el-form-item>
                     <el-form-item prop="startTime" label="开始时间">
                         <el-date-picker v-model="formData.startTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
@@ -134,6 +140,20 @@ export default {
 						trigger: 'blur'
 					}
 				],
+				regionId: [
+					{
+						required: true,
+						message: '请输入区域id',
+						trigger: 'blur'
+					}
+				],
+				cityId: [
+					{
+						required: true,
+						message: '请输入城市id',
+						trigger: 'blur'
+					}
+				],
 				startTime: [
 					{
 						required: true,

+ 129 - 59
src/main/vue/src/views/MetaObjectMoveList.vue

@@ -1,51 +1,56 @@
 <template>
-    <div class="list-view">
-        <page-title>
-            <el-button @click="addRow" type="primary" icon="el-icon-plus" :disabled="fetchingData || downloading"
-                class="filter-item">
-                新增
-            </el-button>
-            <el-button @click="download" icon="el-icon-upload2" :loading="downloading" :disabled="fetchingData"
-                class="filter-item">
-                导出
-            </el-button>
-        </page-title>
-        <div class="filters-container">
-            <el-input placeholder="搜索..." v-model="search" clearable class="filter-item search"
-                @keyup.enter.native="getData">
-                <el-button @click="getData" slot="append" icon="el-icon-search"> </el-button>
-            </el-input>
-        </div>
-        <el-table :data="tableData" row-key="id" ref="table" header-row-class-name="table-header-row"
-            header-cell-class-name="table-header-cell" row-class-name="table-row" cell-class-name="table-cell"
-            :height="tableHeight" v-loading="fetchingData">
-            <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
-            <el-table-column prop="objectId" label="物体id" align="center" > </el-table-column>
-            <el-table-column prop="startTime" label="物体开始移动时间" align="center" > </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>
-                    <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button>
-                </template>
-            </el-table-column>
-        </el-table>
-        <div class="pagination-wrapper">
-            <el-pagination background @size-change="onSizeChange" @current-change="onCurrentChange" :current-page="page"
-                :page-sizes="[10, 20, 30, 40, 50]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper"
-                :total="totalElements">
-            </el-pagination>
-        </div>
-    </div>
+	<div class="list-view">
+		<page-title>
+			<el-button @click="addRow" type="primary" icon="el-icon-plus" :disabled="fetchingData || downloading"
+				class="filter-item">
+				新增
+			</el-button>
+			<el-button @click="download" icon="el-icon-upload2" :loading="downloading" :disabled="fetchingData"
+				class="filter-item">
+				导出
+			</el-button>
+		</page-title>
+		<div class="filters-container">
+			<el-input placeholder="搜索..." v-model="search" clearable class="filter-item search"
+				@keyup.enter.native="getData">
+				<el-button @click="getData" slot="append" icon="el-icon-search"> </el-button>
+			</el-input>
+		</div>
+		<el-table :data="tableData" row-key="id" ref="table" header-row-class-name="table-header-row"
+			header-cell-class-name="table-header-cell" row-class-name="table-row" cell-class-name="table-cell"
+			:height="tableHeight" v-loading="fetchingData">
+			<el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
+			<el-table-column prop="objectId" label="物体id" align="center"> </el-table-column>
+			<el-table-column prop="regionId" label="区域id" align="center"> </el-table-column>
+			<el-table-column prop="cityId" label="城市id" align="center"> </el-table-column>
+			<el-table-column prop="startTime" label="物体开始移动时间" align="center"> </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>
+					<el-button @click="start(row)" type="primary" size="mini" plain v-if="!row.run">运行</el-button>
+					<el-button @click="stop(row)" type="primary" size="mini" plain v-if="row.run">停运</el-button>
+					<el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button>
+				</template>
+			</el-table-column>
+		</el-table>
+		<div class="pagination-wrapper">
+			<el-pagination background @size-change="onSizeChange" @current-change="onCurrentChange" :current-page="page"
+				:page-sizes="[10, 20, 30, 40, 50]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper"
+				:total="totalElements">
+			</el-pagination>
+		</div>
+	</div>
 </template>
 <script>
-import { mapState } from 'vuex';
 import pageableTable from '@/mixins/pageableTable';
+import requestWithCertificate from '@/plugins/requestWithCertificate';
 
 export default {
 	name: 'MetaObjectMoveList',
 	mixins: [pageableTable],
 	data() {
 		return {
+			baseUrl: 'https://mmo.raex.vip',
 			multipleMode: false,
 			search: '',
 			url: '/metaObjectMove/all',
@@ -57,6 +62,17 @@ export default {
 			return this.$refs.table.selection.map(i => i.id);
 		}
 	},
+	mounted() {
+		requestWithCertificate().get(`${this.baseUrl}/mmo/websocket/check`)
+			.then(res => {
+				if (res.data !== 'success') {
+					this.$message.error(res.data);
+				}
+			})
+			.catch(e => {
+				this.$message.error(e.message);
+			});
+	},
 	methods: {
 		beforeGetData() {
 			return { search: this.search, query: { del: false } };
@@ -107,29 +123,83 @@ export default {
 					this.$message.error(e.error);
 				});
 		},
-		operation1() {
-			this.$notify({
-				title: '提示',
-				message: this.selection
-			});
+		deleteRow(row) {
+			if (row.run) {
+				this.$message.error('这在运行中的物体不能删除');
+			} else {
+				this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
+					.then(() => {
+						return this.$http.post(`/metaObjectMove/del/${row.id}`);
+					})
+					.then(() => {
+						this.$message.success('删除成功');
+						this.getData();
+					})
+					.catch(e => {
+						if (e !== 'cancel') {
+							this.$message.error(e.error);
+						}
+					});
+			}
+
 		},
-		operation2() {
-			this.$message('操作2');
+		start(row) {
+			if (row.run) {
+				this.$message.error('该物体正在运行中');
+			} else {
+				this.$alert('确定要运行该物体吗', '警告', { type: 'info' })
+					.then(() => {
+						return this.$http.post(`/metaObjectMove/${row.id}/run`);
+					})
+					.then(() => {
+						requestWithCertificate().get(`${this.baseUrl}/mmo/websocket/${row.objectId}/start`)
+							.then(() => {
+								this.$message.success('运行成功,正在广播坐标信息');
+								this.getData();
+							})
+							.catch(e => {
+								if (e !== 'cancel') {
+									this.$message.error(e.error);
+								}
+							});
+					})
+					.catch(e => {
+						if (e !== 'cancel') {
+							this.$message.error(e.error);
+							this.$http.post(`/metaObjectMove/${row.id}/cancelRun`)
+						}
+					});
+			}
+
 		},
-		deleteRow(row) {
-			this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
-				.then(() => {
-					return this.$http.post(`/metaObjectMove/del/${row.id}`);
-				})
-				.then(() => {
-					this.$message.success('删除成功');
-					this.getData();
-				})
-				.catch(e => {
-					if (e !== 'cancel') {
-						this.$message.error(e.error);
-					}
-				});
+		stop(row) {
+			if (!row.run) {
+				this.$message.error('该物体已经停运');
+			} else {
+				this.$alert('确定要停运该物体吗', '警告', { type: 'info' })
+					.then(() => {
+						return this.$http.post(`/metaObjectMove/${row.id}/cancelRun`);
+					})
+					.then(() => {
+						requestWithCertificate().get(`${this.baseUrl}/mmo/websocket/${row.objectId}/stop`)
+							.then(() => {
+								this.$message.success('停运成功');
+								this.getData();
+							})
+							.catch(e => {
+								if (e !== 'cancel') {
+									this.$message.error(e.error);
+								}
+							});
+					})
+					.catch(e => {
+						if (e !== 'cancel') {
+							this.$message.error(e.error);
+							this.$http.post(`/metaObjectMove/${row.id}/run`)
+						}
+					});
+			}
+
 		}
 	}
 };

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

@@ -219,13 +219,7 @@ export default {
 				});
 		},
 		initWebSocket() {
-			let wsuri = 'ws://127.0.0.1:8088/websocket/' + this.$store.state.userInfo.id;
-			if (location.host === 'raex.vip') {
-				wsuri = 'wss://mmo.raex.vip/websocket/' + this.$store.state.userInfo.id;
-			}
-			if (location.host === 'test.raex.vip') {
-				wsuri = 'wss://test.mmo.raex.vip/websocket/' + this.$store.state.userInfo.id;
-			}
+			let wsuri = 'wss://mmo.raex.vip/websocket/' + this.$store.state.userInfo.id;
 			console.log('初始化websocket:' + wsuri);
 			this.websock = new WebSocket(wsuri);
 			this.websock.onmessage = this.websocketonmessage;

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

@@ -198,13 +198,7 @@ export default {
                 });
         },
         initWebSocket() {
-            let wsuri = 'ws://127.0.0.1:8088/websocket/' + this.$store.state.userInfo.id;
-            if (location.host === 'raex.vip') {
-                wsuri = 'wss://mmo.raex.vip/websocket/' + this.$store.state.userInfo.id;
-            }
-            if (location.host === 'test.raex.vip') {
-                wsuri = 'wss://test.mmo.raex.vip/websocket/' + this.$store.state.userInfo.id;
-            }
+            let wsuri = 'wss://mmo.raex.vip/websocket/' + this.$store.state.userInfo.id;
             console.log('初始化websocket:' + wsuri);
             this.websock = new WebSocket(wsuri);
             this.websock.onmessage = this.websocketonmessage;

+ 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' })

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels