Bläddra i källkod

独立运行商店

gujiheimao 1 år sedan
förälder
incheckning
2169f3d5d9

+ 1 - 1
configs/config.yaml

@@ -5,7 +5,7 @@ server:
     password: "123456"
   file:
     ark-file: "resources/demo.json"
-    #ark-file: "resources/config.json"
+#    ark-file: "resources/config.json"
 mysql:
   host: localhost
   port: "3306"

+ 8 - 0
router/Router.go

@@ -26,10 +26,18 @@ func init() {
 
 func LoadRouter(router *gin.Engine) {
 	router.POST("/login", Login)
+	router.GET("/replay", Replay)
 	router.Use(Calibration())
 	ARKConfigRouter(router.Group("/ark"))
 }
 
+func Replay(c *gin.Context) {
+	configs.LoadServerConfiguration()
+	//加载配置文件
+	ARKConfig, ARKShopItems, ARKShopDines, ARKShopBeacons, ARKShopExperiences, ARKShopUnlockengram, ARKShopCommands =
+		util.LoadArkShopConfig(configs.ARKJsonFilePath)
+}
+
 // Calibration 登录校验
 func Calibration() gin.HandlerFunc {
 	return func(c *gin.Context) {

+ 6 - 2
ui/src/api/Login.ts

@@ -1,4 +1,4 @@
-import {PostDataByPath} from "./api.ts";
+import {GetDataByPath, PostDataByPath} from "./api.ts";
 
 export class LoginInfo {
     username: string = "";
@@ -16,4 +16,8 @@ export class LoginInfo {
 
 export function arkLogin(info: LoginInfo) {
     return PostDataByPath("/login", info);
-}
+}
+
+export function ReplayConfig() {
+    return GetDataByPath("/replay");
+}

+ 53 - 0
ui/src/components/ShopBeaconComponent.vue

@@ -0,0 +1,53 @@
+<template>
+  <el-table :data="shopItems" border stripe>
+    <el-table-column prop="Name" label="商品名称"></el-table-column>
+    <el-table-column prop="data.Description" label="商品描述"></el-table-column>
+    <el-table-column prop="data.Price" label="商品价格"></el-table-column>
+    <el-table-column prop="data.ClassName" label="类名"/>
+  </el-table>
+</template>
+
+<script setup lang="ts">
+
+import {ref} from "vue";
+import {BaseData} from "../api/ConfigFile";
+import {GetShopItems, ShopBeacon, ShopDino} from "../api/ARKShopItemAPI";
+
+let shopItems = ref<BaseData<ShopBeacon>[]>([])
+
+function replay() {
+  GetShopItems("beacon").then(res => {
+    if (res.code == 200) {
+      console.log(res.data)
+      for (let item in res.data) {
+        shopItems.value.push(new BaseData(item, res.data[item] as ShopBeacon))
+      }
+    }
+  })
+}
+replay()
+function getTypeNameByType(type: string): string {
+  switch (type) {
+    case "item":
+      return "物品"
+    case "dino":
+      return "恐龙"
+    case "beacon":
+      return "信标"
+    case "experience":
+      return "经验"
+    case "unlockengram":
+      return "技能点"
+    case "command":
+      return "命令"
+    default:
+      return ""
+  }
+
+}
+
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 72 - 0
ui/src/components/ShopCommandsComponent.vue

@@ -0,0 +1,72 @@
+<template>
+  <el-table :data="shopItems" border stripe>
+    <el-table-column prop="Name" label="商品名称"></el-table-column>
+    <el-table-column prop="data.Description" label="商品描述"></el-table-column>
+    <el-table-column prop="data.Price" label="商品价格"></el-table-column>
+    <el-table-column prop="data.Items" label="命令">
+      <template #default="scope">
+        <el-button type="primary" @click="OpenShow(scope.row.data.Items)">查看命令</el-button>
+      </template>
+    </el-table-column>
+  </el-table>
+  <el-dialog title="查看命令列表" v-model="open" width="1000px">
+    <el-table :data="shopCommandItem" border stripe>
+      <el-table-column prop="Command" label="命令"></el-table-column>
+      <el-table-column prop="DisplayAs" label="显示为"></el-table-column>
+    </el-table>
+  </el-dialog>
+</template>
+
+<script setup lang="ts">
+
+import {ref} from "vue";
+import {BaseData} from "../api/ConfigFile";
+import {GetShopItems, ShopCommand, ShopCommandItem} from "../api/ARKShopItemAPI";
+
+let shopItems = ref<BaseData<ShopCommand>[]>([])
+let open = ref<boolean>(false)
+let shopCommandItem = ref<ShopCommandItem[]>(null)
+
+function OpenShow(item: ShopCommandItem[]) {
+  open.value = true
+  shopCommandItem.value = item
+  console.log(open.value, item)
+}
+
+function replay() {
+  GetShopItems("command").then(res => {
+    if (res.code == 200) {
+      for (let item in res.data) {
+        shopItems.value.push(new BaseData(item, res.data[item] as ShopCommand))
+      }
+    }
+  })
+}
+
+replay()
+
+function getTypeNameByType(type: string): string {
+  switch (type) {
+    case "item":
+      return "物品"
+    case "dino":
+      return "恐龙"
+    case "beacon":
+      return "信标"
+    case "experience":
+      return "经验"
+    case "unlockengram":
+      return "技能点"
+    case "command":
+      return "命令"
+    default:
+      return ""
+  }
+
+}
+
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 59 - 0
ui/src/components/ShopDinoComponent.vue

@@ -0,0 +1,59 @@
+<template>
+  <el-table :data="shopItems" border stripe>
+    <el-table-column prop="Name" label="商品名称"></el-table-column>
+    <el-table-column prop="data.Description" label="商品描述"></el-table-column>
+    <el-table-column prop="data.Price" label="商品价格"></el-table-column>
+    <el-table-column prop="data.Level" label="等级"/>
+    <el-table-column prop="data.MinLevel" label="最低等级"/>
+    <el-table-column prop="data.MaxLevel" label="最高等级"/>
+    <el-table-column prop="data.Neutered" label="是否被绝育"/>
+    <el-table-column prop="data.Gender" label="性别"/>
+    <el-table-column prop="data.SaddleBlueprint" label=" 鞍蓝图"/>
+    <el-table-column prop="data.Blueprint" label="蓝图"/>
+  </el-table>
+</template>
+
+<script setup lang="ts">
+
+import {ref} from "vue";
+import {BaseData} from "../api/ConfigFile";
+import {GetShopItems, ShopDino} from "../api/ARKShopItemAPI";
+
+let shopItems = ref<BaseData<ShopDino>[]>([])
+
+function replay() {
+  GetShopItems("dino").then(res => {
+    if (res.code == 200) {
+      console.log(res.data)
+      for (let item in res.data) {
+        shopItems.value.push(new BaseData(item, res.data[item] as ShopDino))
+      }
+    }
+  })
+}
+replay()
+function getTypeNameByType(type: string): string {
+  switch (type) {
+    case "item":
+      return "物品"
+    case "dino":
+      return "恐龙"
+    case "beacon":
+      return "信标"
+    case "experience":
+      return "经验"
+    case "unlockengram":
+      return "技能点"
+    case "command":
+      return "命令"
+    default:
+      return ""
+  }
+
+}
+
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 54 - 0
ui/src/components/ShopExperienceComponent.vue

@@ -0,0 +1,54 @@
+<template>
+  <el-table :data="shopItems" border stripe>
+    <el-table-column prop="Name" label="商品名称"></el-table-column>
+    <el-table-column prop="data.Description" label="商品描述"></el-table-column>
+    <el-table-column prop="data.Price" label="商品价格"></el-table-column>
+    <el-table-column prop="data.Amount" label="数量"/>
+    <el-table-column prop="data.GiveToDino" label="是否给到龙"/>
+  </el-table>
+</template>
+
+<script setup lang="ts">
+
+import {ref} from "vue";
+import {BaseData} from "../api/ConfigFile";
+import {GetShopItems, ShopExperience} from "../api/ARKShopItemAPI";
+
+let shopItems = ref<BaseData<ShopExperience>[]>([])
+
+function replay() {
+  GetShopItems("experience").then(res => {
+    if (res.code == 200) {
+      console.log(res.data)
+      for (let item in res.data) {
+        shopItems.value.push(new BaseData(item, res.data[item] as ShopExperience))
+      }
+    }
+  })
+}
+replay()
+function getTypeNameByType(type: string): string {
+  switch (type) {
+    case "item":
+      return "物品"
+    case "dino":
+      return "恐龙"
+    case "beacon":
+      return "信标"
+    case "experience":
+      return "经验"
+    case "unlockengram":
+      return "技能点"
+    case "command":
+      return "命令"
+    default:
+      return ""
+  }
+
+}
+
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 34 - 9
ui/src/components/ShopItemsComponent.vue

@@ -1,6 +1,16 @@
 <template>
-  <el-dialog title="查看物品列表" v-model="show" width="1000px">
-    <el-table :data="props.shopItem" border stripe>
+  <el-table :data="shopItems" border stripe>
+    <el-table-column prop="Name" label="商品名称"></el-table-column>
+    <el-table-column prop="data.Description" label="商品描述"></el-table-column>
+    <el-table-column prop="data.Price" label="商品价格"></el-table-column>
+    <el-table-column label="操作">
+      <template #default="scope">
+        <el-button type="primary" @click="OpenShow(scope.row.data.Items)">查看物品列表</el-button>
+      </template>
+    </el-table-column>
+  </el-table>
+  <el-dialog title="查看物品列表" v-model="open" width="1000px">
+    <el-table :data="showItem" border stripe>
       <el-table-column prop="Amount" label="数量"></el-table-column>
       <el-table-column prop="Blueprint" label="蓝图"></el-table-column>
       <el-table-column prop="Fixed" label="固定"></el-table-column>
@@ -11,14 +21,29 @@
 </template>
 
 <script setup lang="ts">
-const props = defineProps({
-  shopItem: {
-    type: Array,
-    default: () => []
-  },
-})
-let show = defineModel<string>("show")
+import {BaseData} from "../api/ConfigFile";
+import {GetShopItems, ShopItem} from "../api/ARKShopItemAPI";
+import {ref} from "vue";
 
+let shopItems = ref<BaseData<ShopItem>[]>([])
+let open = ref<boolean>(false)
+let showItem = ref<BaseData<ShopItem>>(null)
+
+function OpenShow(item: BaseData<ShopItem>) {
+  open.value = true
+  showItem.value = item
+}
+
+function replay() {
+  GetShopItems("item").then(res => {
+    if (res.code == 200) {
+      for (let item in res.data) {
+        shopItems.value.push(new BaseData(item, res.data[item] as ShopItem))
+      }
+    }
+  })
+}
+replay()
 function getTypeNameByType(type: string): string {
   switch (type) {
     case "item":

+ 59 - 0
ui/src/components/ShopUnlockengramComponent.vue

@@ -0,0 +1,59 @@
+<template>
+  <el-table :data="shopItems" border stripe>
+    <el-table-column prop="Name" label="商品名称"></el-table-column>
+    <el-table-column prop="data.Description" label="商品描述"></el-table-column>
+    <el-table-column prop="data.Price" label="商品价格"></el-table-column>
+    <el-table-column prop="data.Items" label="解锁技能条目">
+      <template #default="scope" >
+        <template  v-for="item in scope.row.data.Items">
+          <el-text>{{ item.Blueprint }}</el-text><br>
+        </template>
+      </template>
+    </el-table-column>
+  </el-table>
+</template>
+
+<script setup lang="ts">
+
+import {ref} from "vue";
+import {BaseData} from "../api/ConfigFile";
+import {GetShopItems, ShopExperience, ShopUnlockengram} from "../api/ARKShopItemAPI";
+
+let shopItems = ref<BaseData<ShopUnlockengram>[]>([])
+
+function replay() {
+  GetShopItems("unlockengram").then(res => {
+    if (res.code == 200) {
+      console.log(res.data)
+      for (let item in res.data) {
+        shopItems.value.push(new BaseData(item, res.data[item] as ShopUnlockengram))
+      }
+    }
+  })
+}
+replay()
+function getTypeNameByType(type: string): string {
+  switch (type) {
+    case "item":
+      return "物品"
+    case "dino":
+      return "恐龙"
+    case "beacon":
+      return "信标"
+    case "experience":
+      return "经验"
+    case "unlockengram":
+      return "技能点"
+    case "command":
+      return "命令"
+    default:
+      return ""
+  }
+
+}
+
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 49 - 25
ui/src/page/back/ShopItemView2.vue

@@ -1,7 +1,6 @@
 <template>
   <div style="margin: 10px;border: #dddddd solid 1px;padding: 10px">
     <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
-
       <el-tab-pane label="全部" name="all">
         <el-table :data="shopItems" border stripe>
           <el-table-column prop="Name" label="商品名称"></el-table-column>
@@ -15,31 +14,25 @@
 
         </el-table>
       </el-tab-pane>
-
       <el-tab-pane label="物品" name="item">
-        <el-table :data="shopItems" border stripe>
-          <el-table-column prop="Name" label="商品名称"></el-table-column>
-          <el-table-column prop="data.Description" label="商品描述"></el-table-column>
-          <el-table-column prop="data.Price" label="商品价格"></el-table-column>
-          <el-table-column prop="data.Type" label="商品类型">
-            <template #default="scope">
-              <el-text>{{ getTypeNameByType(scope.row.data.Type) }}</el-text>
-            </template>
-          </el-table-column>
+        <ShopItemsComponent v-if="activeName=='item'"/>
+      </el-tab-pane>
+      <el-tab-pane label="恐龙" name="dino">
+        <ShopDinoComponent v-if="activeName=='dino'"/>
+      </el-tab-pane>
+      <el-tab-pane label="信标" name="beacon">
+        <ShopBeaconComponent v-if="activeName=='beacon'"/>
+      </el-tab-pane>
+      <el-tab-pane label="经验" name="experience">
+        <ShopExperienceComponent v-if="activeName=='experience'"/>
+      </el-tab-pane>
+      <el-tab-pane label="技能点?" name="unlockengram">
+        <ShopUnlockengramComponent v-if="activeName=='unlockengram'"/>
+      </el-tab-pane>
+      <el-tab-pane label="命令" name="command">
 
-          <el-table-column label="操作">
-            <template #default="scope">
-              <el-button type="primary" @click="OpenShow(scope.row.data.Items)">查看物品列表</el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-        <ShopItemsComponent v-if="activeName=='item'" v-model:show="open" :shop-item="showItem"/>
+        <ShopCommandsComponent v-if="activeName=='command'"/>
       </el-tab-pane>
-      <el-tab-pane label="恐龙" name="dino">Config</el-tab-pane>
-      <el-tab-pane label="信标" name="beacon">Role</el-tab-pane>
-      <el-tab-pane label="经验" name="experience">Task</el-tab-pane>
-      <el-tab-pane label="技能点?" name="unlockengram">Task</el-tab-pane>
-      <el-tab-pane label="命令" name="command">Task</el-tab-pane>
     </el-tabs>
   </div>
 </template>
@@ -49,6 +42,11 @@ import {TabsPaneContext} from "element-plus";
 import {GetShopItems, ShopData, ShopItem} from "../../api/ARKShopItemAPI.ts";
 import {BaseData} from "../../api/ConfigFile.ts";
 import ShopItemsComponent from "../../components/ShopItemsComponent.vue";
+import ShopCommandsComponent from "../../components/ShopCommandsComponent.vue";
+import ShopDinoComponent from "../../components/ShopDinoComponent.vue";
+import ShopBeaconComponent from "../../components/ShopBeaconComponent.vue";
+import ShopExperienceComponent from "../../components/ShopExperienceComponent.vue";
+import ShopUnlockengramComponent from "../../components/ShopUnlockengramComponent.vue";
 
 let activeName = ref('all')
 
@@ -56,11 +54,12 @@ let open = ref(false)
 let showItem = ref<BaseData<ShopData>>()
 
 let shopItems = ref<BaseData<ShopData>[]>([])
-function OpenShow(item:BaseData<ShopData>){
+
+function OpenShow(item: BaseData<ShopData>) {
   open.value = true
   showItem.value = item
-  console.log(item)
 }
+
 function replay() {
   let type = activeName.value
   if (activeName.value == "all") {
@@ -79,6 +78,31 @@ function replay() {
           shopItems.value.push(new BaseData(item, res.data[item] as ShopItem))
         }
       }
+      if (type == "dino") {
+        for (let item in res.data) {
+          shopItems.value.push(new BaseData(item, res.data[item] as ShopData))
+        }
+      }
+      if (type == "beacon") {
+        for (let item in res.data) {
+          shopItems.value.push(new BaseData(item, res.data[item] as ShopData))
+        }
+      }
+      if (type == "experience") {
+        for (let item in res.data) {
+          shopItems.value.push(new BaseData(item, res.data[item] as ShopData))
+        }
+      }
+      if (type == "unlockengram") {
+        for (let item in res.data) {
+          shopItems.value.push(new BaseData(item, res.data[item] as ShopData))
+        }
+      }
+      if (type == "command") {
+        for (let item in res.data) {
+          shopItems.value.push(new BaseData(item, res.data[item] as ShopData))
+        }
+      }
     }
   })
 }

+ 3 - 0
ui/src/page/back/index.vue

@@ -23,6 +23,8 @@
         </el-menu-item>
       </template>
     </template>
+    <el-menu-item @click="ReplayConfig()">刷新
+    </el-menu-item>
     <!--    -->
     <!--    <el-menu-item index="1" @click="JumpRouter('/back/base')">基本功能</el-menu-item>-->
     <!--    <el-menu-item index="2" @click="JumpRouter('/back/general')">概述</el-menu-item>-->
@@ -42,6 +44,7 @@
 <script lang="ts" setup>
 import {ref} from 'vue'
 import router from "../../router";
+import {ReplayConfig} from "../../api/Login";
 
 const activeIndex = ref<string>('1')