Quellcode durchsuchen

后台盲盒页面修改预约流程

ouyang vor 3 Jahren
Ursprung
Commit
34911c080f

+ 7 - 1
src/main/java/com/izouma/nineth/service/CollectionService.java

@@ -91,7 +91,7 @@ public class CollectionService {
     @Cacheable(value = "collectionList", key = "#pageQuery.hashCode()")
     public PageWrapper<Collection> all(PageQuery pageQuery) {
         pageQuery.getQuery().put("del", false);
-        String type = MapUtils.getString(pageQuery.getQuery(), "type", "DEFAULT");
+        String type = MapUtils.getString(pageQuery.getQuery(), "type", "BLIND_BOX");
         pageQuery.getQuery().remove("type");
 
         Specification<Collection> specification = JpaUtils.toSpecification(pageQuery, Collection.class);
@@ -280,6 +280,12 @@ public class CollectionService {
         }
 
         User user = userRepo.findById(blindBox.getMinterId()).orElse(SecurityUtils.getAuthenticatedUser());
+        blindBox.setSubscribeStatus(SubscribeStatus.NOT_STARTED);
+        if (blindBox.isHasSubscribe()) {
+            if (blindBox.getStartTime() == null) {
+                throw new BusinessException("请填写预约发布时间");
+            }
+        }
         blindBox.setMinter(user.getNickname());
         blindBox.setMinterId(user.getId());
         blindBox.setMinterAvatar(user.getAvatar());

+ 111 - 11
src/main/vue/src/views/BlindBoxEdit.vue

@@ -159,23 +159,69 @@
                         <el-radio v-model="formData.onShelf" :label="true">是</el-radio>
                         <el-radio v-model="formData.onShelf" :label="false">否</el-radio>
                     </el-form-item>
-                    <el-form-item prop="startTime" label="定时发布">
-                        <el-radio v-model="formData.scheduleSale" :label="true">是</el-radio>
-                        <el-radio v-model="formData.scheduleSale" :label="false">否</el-radio>
-                        <div style="margin-top: 10px" v-if="formData.scheduleSale">
+                    <div class="inline-wrapper">
+                        <el-form-item prop="startTime" label="是否开启预约">
+                            <el-radio v-model="formData.hasSubscribe" :label="true">是</el-radio>
+                            <el-radio v-model="formData.hasSubscribe" :label="false">否</el-radio>
+                        </el-form-item>
+                        <el-form-item
+                            prop="startTime"
+                            label="预约开始时间"
+                            v-if="formData.hasSubscribe"
+                            style="margin-left: 22px"
+                        >
                             <el-date-picker
                                 v-model="formData.startTime"
                                 type="datetime"
                                 value-format="yyyy-MM-dd HH:mm:ss"
-                                placeholder="发布时间"
+                                placeholder="预约开始时间"
                             ></el-date-picker>
-                        </div>
-                    </el-form-item>
+                        </el-form-item>
+                        <el-form-item
+                            prop="endTime"
+                            label="预约结束时间"
+                            v-if="formData.hasSubscribe"
+                            style="margin-left: 22px"
+                        >
+                            <el-date-picker
+                                v-model="formData.endTime"
+                                type="datetime"
+                                value-format="yyyy-MM-dd HH:mm:ss"
+                                placeholder="预约结束时间"
+                            ></el-date-picker>
+                        </el-form-item>
+                        <el-form-item
+                            prop="publishTime"
+                            label="资格公布时间"
+                            v-if="formData.hasSubscribe"
+                            style="margin-left: 22px"
+                        >
+                            <el-date-picker
+                                v-model="formData.publishTime"
+                                type="datetime"
+                                value-format="yyyy-MM-dd HH:mm:ss"
+                                placeholder="资格公布时间"
+                            ></el-date-picker>
+                        </el-form-item>
+                        <el-form-item
+                            prop="purchaseTime"
+                            label="购买时间"
+                            v-if="formData.hasSubscribe"
+                            style="margin-left: 22px"
+                        >
+                            <el-date-picker
+                                v-model="formData.purchaseTime"
+                                type="datetime"
+                                value-format="yyyy-MM-dd HH:mm:ss"
+                                placeholder="购买时间"
+                            ></el-date-picker>
+                        </el-form-item>
+                    </div>
                     <el-form-item
                         prop="salable"
                         label="可售"
                         v-if="
-                            formData.onShelf === true || (formData.scanCode === true && formData.scheduleSale === false)
+                            formData.onShelf === true || (formData.scanCode === true && formData.hasSubscribe === false)
                         "
                     >
                         <el-radio v-model="formData.salable" :label="true">是</el-radio>
@@ -436,7 +482,7 @@ export default {
                 type: 'BLIND_BOX',
                 source: 'OFFICIAL',
                 pic: [{}],
-                scheduleSale: true,
+                hasSubscribe: true,
                 privileges: [],
                 sort: 0,
                 maxCount: 0,
@@ -568,7 +614,7 @@ export default {
                 startTime: [
                     {
                         validator: (rule, value, callback) => {
-                            if (this.formData.scheduleSale) {
+                            if (this.formData.hasSubscribe) {
                                 if (!value) {
                                     callback(new Error('请填写发布时间'));
                                 } else if (isBefore(parse(value, 'yyyy-MM-dd HH:mm:ss', new Date()), new Date())) {
@@ -583,6 +629,60 @@ export default {
                         trigger: 'blur'
                     }
                 ],
+                endTime: [
+                    {
+                        validator: (rule, value, callback) => {
+                            if (this.formData.hasSubscribe) {
+                                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'
+                    }
+                ],
+                publishTime: [
+                    {
+                        validator: (rule, value, callback) => {
+                            if (this.formData.hasSubscribe) {
+                                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'
+                    }
+                ],
+                purchaseTime: [
+                    {
+                        validator: (rule, value, callback) => {
+                            if (this.formData.hasSubscribe) {
+                                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'
+                    }
+                ],
                 items: [
                     {
                         validator: (rule, value, callback) => {
@@ -603,7 +703,7 @@ export default {
                                     callback(new Error('请填写销售时间'));
                                 } else if (isBefore(parse(value, 'yyyy-MM-dd HH:mm:ss', new Date()), new Date())) {
                                     callback(new Error('销售时间不能小于当前时间'));
-                                } else if (this.formData.scheduleSale) {
+                                } else if (this.formData.hasSubscribe) {
                                     if (
                                         isBefore(
                                             parse(value, 'yyyy-MM-dd HH:mm:ss', new Date()),