licailing před 4 roky
rodič
revize
a2ce5dd8e0

+ 1 - 0
src/main/java/com/izouma/jiashanxia/domain/Banner.java

@@ -16,4 +16,5 @@ public class Banner extends BaseEntity {
     private String name;
     private String img;
     private String extra;
+    private int sort;
 }

+ 5 - 6
src/main/java/com/izouma/jiashanxia/domain/Package.java

@@ -43,6 +43,9 @@ public class Package extends BaseEntity {
     @ApiModelProperty(value = "原价")
     private BigDecimal originalPrice;
 
+    @ApiModelProperty(value = "结算价")
+    private BigDecimal settlementPrice;
+
     @Column(columnDefinition = "TEXT")
     @ApiModelProperty(value = "详情")
     private String detail;
@@ -115,12 +118,6 @@ public class Package extends BaseEntity {
     @ApiModelProperty(value = "分享数")
     private int shareNum;
 
-
-//    private String eventDate;
-//    private String eventTime;
-//    private String eventAddress;
-//    private String eventObject;
-
     @ApiModelProperty(value = "活动信息")
     @Convert(converter = EventConverter.class)
     private Event event;
@@ -139,4 +136,6 @@ public class Package extends BaseEntity {
     @ApiModelProperty(value = "分享得")
     private BigDecimal shareAmount;
 
+    private int sort;
+
 }

+ 2 - 0
src/main/java/com/izouma/jiashanxia/domain/Stock.java

@@ -32,4 +32,6 @@ public class Stock extends BaseEntity {
     private BigDecimal price;
     @ApiModelProperty(value = "原价")
     private BigDecimal originalPrice;
+    @ApiModelProperty(value = "结算价")
+    private BigDecimal settlementPrice;
 }

+ 3 - 0
src/main/java/com/izouma/jiashanxia/repo/BannerRepo.java

@@ -13,4 +13,7 @@ public interface BannerRepo extends JpaRepository<Banner, Long>, JpaSpecificatio
     @Modifying
     @Transactional
     void softDelete(Long id);
+
+    @Query(nativeQuery = true, value = "SELECT ifnull(max(sort + 1),1) FROM banner")
+    int nextSort();
 }

+ 3 - 0
src/main/java/com/izouma/jiashanxia/repo/PackageRepo.java

@@ -32,4 +32,7 @@ public interface PackageRepo extends JpaRepository<Package, Long>, JpaSpecificat
 
     @Query("update Package t set t.shareNum = t.shareNum + 1 where t.id = ?1")
     Package addShareNum(Long id);
+
+    @Query(nativeQuery = true, value = "SELECT ifnull(max(sort + 1),1) FROM package")
+    int nextSort();
 }

+ 4 - 0
src/main/java/com/izouma/jiashanxia/web/BannerController.java

@@ -25,6 +25,9 @@ public class BannerController extends BaseController {
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     public Banner save(@RequestBody Banner record) {
+        if (record.getSort() == 0) {
+            record.setSort(bannerRepo.nextSort());
+        }
         if (record.getId() != null) {
             Banner orig = bannerRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
             ObjUtils.merge(orig, record);
@@ -37,6 +40,7 @@ public class BannerController extends BaseController {
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/all")
     public Page<Banner> all(@RequestBody PageQuery pageQuery) {
+        pageQuery.setSort("sort,desc");
         return bannerService.all(pageQuery);
     }
 

+ 4 - 0
src/main/java/com/izouma/jiashanxia/web/PackageController.java

@@ -41,6 +41,9 @@ public class PackageController extends BaseController {
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     public Package save(@RequestBody Package record) {
+        if (record.getSort() == 0) {
+            record.setSort(packageRepo.nextSort());
+        }
         if (record.getId() != null) {
             Package orig = packageRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
             ObjUtils.merge(orig, record);
@@ -70,6 +73,7 @@ public class PackageController extends BaseController {
     @PostMapping("/all")
     public Page<Package> all(@RequestBody PageQuery pageQuery) {
         BigDecimal personalRatio = sysConfigService.getBigDecimal("PERSONAL_RATIO_0");
+        pageQuery.setSort("sort,desc");
         return packageService.all(pageQuery).map(aPackage -> {
             if (aPackage.isSeparateDistribution() && ObjectUtil.isNotNull(aPackage.getPersonalRatio0())) {
                 aPackage.setShareAmount(aPackage.getPersonalRatio0().multiply(aPackage.getAmount()));

+ 32 - 2
src/main/vue/src/components/PackageEdit.vue

@@ -64,15 +64,25 @@
                     <el-radio :label="true">多次使用</el-radio>
                 </el-radio-group>
             </el-form-item> -->
+            <el-form-item prop="amount" label="金额" v-if="stockList.length <= 0">
+                <el-input-number type="number" v-model="formData.amount" class="select-width"></el-input-number>
+            </el-form-item>
             <el-form-item prop="originalPrice" label="原价" v-if="stockList.length <= 0">
                 <el-input-number type="number" v-model="formData.originalPrice" class="select-width"></el-input-number>
             </el-form-item>
-            <el-form-item prop="amount" label="金额" v-if="stockList.length <= 0">
-                <el-input-number type="number" v-model="formData.amount" class="select-width"></el-input-number>
+            <el-form-item prop="settlementPrice" label="结算价" v-if="stockList.length <= 0">
+                <el-input-number
+                    type="number"
+                    v-model="formData.settlementPrice"
+                    class="select-width"
+                ></el-input-number>
             </el-form-item>
             <el-form-item prop="inventory" label="库存" v-if="stockList.length <= 0">
                 <el-input-number type="number" v-model="formData.inventory" class="select-width"></el-input-number>
             </el-form-item>
+            <el-form-item prop="sale" label="销量" v-if="stockList.length <= 0">
+                <el-input-number type="number" v-model="formData.sale" class="select-width"></el-input-number>
+            </el-form-item>
             <el-form-item label="规格">
                 <el-button @click="addStockForm">添加规格</el-button>
                 <div v-for="(item, index) in stockList" :key="index">
@@ -103,6 +113,26 @@
                                 ></el-input-number>
                             </el-col>
                         </el-row>
+                        <el-row>
+                            <el-col :span="8">
+                                <span>销量</span>
+                                <el-input-number
+                                    type="number"
+                                    :min="0"
+                                    class="input"
+                                    v-model="item.sale"
+                                ></el-input-number>
+                            </el-col>
+                            <el-col :span="8">
+                                <span>结算价</span>
+                                <el-input-number
+                                    type="number"
+                                    :min="0"
+                                    class="input"
+                                    v-model="item.settlementPrice"
+                                ></el-input-number>
+                            </el-col>
+                        </el-row>
                         <el-row>
                             <el-col :span="8">
                                 <span>价格</span>

+ 53 - 4
src/main/vue/src/views/BannerList.vue

@@ -37,8 +37,19 @@
                 </template>
             </el-table-column>
             <el-table-column prop="extra" label="其他"> </el-table-column>
-            <el-table-column label="操作" align="center" fixed="right" min-width="150">
-                <template slot-scope="{ row }">
+            <el-table-column label="操作" align="center" fixed="right" min-width="250">
+                <template slot-scope="{ row, $index }">
+                    <el-button @click="move($index, -1)" :disabled="$index == 0" type="success" size="mini" plain
+                        >上移</el-button
+                    >
+                    <el-button
+                        @click="move($index, 1)"
+                        :disabled="(page - 1) * pageSize + $index == totalElements - 1"
+                        type="warning"
+                        size="mini"
+                        plain
+                        >下移</el-button
+                    >
                     <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>
@@ -79,7 +90,8 @@ export default {
             multipleMode: false,
             search: '',
             url: '/banner/all',
-            downloading: false
+            downloading: false,
+            topNum: 0
         };
     },
     computed: {
@@ -89,7 +101,10 @@ export default {
     },
     methods: {
         beforeGetData() {
-            return { search: this.search };
+            return {
+                search: this.search,
+                sort: 'sort,desc'
+            };
         },
         toggleMultipleMode(multipleMode) {
             this.multipleMode = multipleMode;
@@ -160,6 +175,40 @@ export default {
                         this.$message.error(e.error);
                     }
                 });
+        },
+        move(index, direction) {
+            const start = index;
+            const end = direction + index;
+            const startInfo = { ...this.tableData[start] };
+            const endInfo = { ...this.tableData[end] };
+            Promise.all([
+                this.$http.post(
+                    '/banner/save',
+                    {
+                        ...startInfo,
+                        sort: endInfo.sort
+                    },
+                    { body: 'json' }
+                ),
+                this.$http.post(
+                    '/banner/save',
+                    {
+                        ...endInfo,
+                        sort: startInfo.sort
+                    },
+                    { body: 'json' }
+                )
+            ])
+                .then(_ => {
+                    this.loading = false;
+                    this.getData();
+                    this.$message.success('成功');
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.loading = false;
+                    this.$message.error(e.error);
+                });
         }
     }
 };

+ 48 - 3
src/main/vue/src/views/PackageList.vue

@@ -56,9 +56,20 @@
             <!-- <el-table-column prop="type" label="套餐类型" :formatter="typeFormatter"> </el-table-column> -->
             <el-table-column prop="categoryName" label="套餐类型"> </el-table-column>
             <el-table-column label="操作" align="center" fixed="right" min-width="150">
-                <template slot-scope="{ row }">
+                <template slot-scope="{ row, $index }">
+                    <el-button @click="move($index, -1)" :disabled="$index == 0" type="success" size="mini" plain
+                        >上移</el-button
+                    >
+                    <el-button
+                        @click="move($index, 1)"
+                        :disabled="(page - 1) * pageSize + $index == totalElements - 1"
+                        type="warning"
+                        size="mini"
+                        plain
+                        >下移</el-button
+                    >
                     <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
-                    <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button>
+                    <!-- <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
                 </template>
             </el-table-column>
         </el-table>
@@ -151,7 +162,7 @@ export default {
             //         attractionsId: this.attractionsId
             //     }
             // };
-            let data = { query: {} };
+            let data = { sort: 'sort,desc', query: {} };
             if (this.search) {
                 data.search = this.search;
             }
@@ -240,6 +251,40 @@ export default {
                     break;
                 }
             }
+        },
+        move(index, direction) {
+            const start = index;
+            const end = direction + index;
+            const startInfo = { ...this.tableData[start] };
+            const endInfo = { ...this.tableData[end] };
+            Promise.all([
+                this.$http.post(
+                    '/package/save',
+                    {
+                        ...startInfo,
+                        sort: endInfo.sort
+                    },
+                    { body: 'json' }
+                ),
+                this.$http.post(
+                    '/package/save',
+                    {
+                        ...endInfo,
+                        sort: startInfo.sort
+                    },
+                    { body: 'json' }
+                )
+            ])
+                .then(_ => {
+                    this.loading = false;
+                    this.getData();
+                    this.$message.success('成功');
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.loading = false;
+                    this.$message.error(e.error);
+                });
         }
     }
 };